{ "version": 3, "sources": [ "../../../../../node_modules/browser-pack/_prelude.js", "../../../../../node_modules/base64-js/index.js", "../../../../../node_modules/bgtm-engine-es6/node_modules/buffer/index.js", "../../../../../node_modules/choices.js/public/assets/scripts/choices.js", "../../../../../node_modules/deep-extend/lib/deep-extend.js", "../../../../../node_modules/dom7/dom7.cjs.js", "../../../../../node_modules/element-closest-polyfill/index.js", "../../../../../node_modules/flatpickr/dist/flatpickr.js", "../../../../../node_modules/hoverintent/index.js", "../../../../../node_modules/ieee754/index.js", "../../../../../node_modules/intersection-observer/intersection-observer.js", "../../../../../node_modules/js-cookie/src/js.cookie.js", "../../../../../node_modules/micromodal/dist/micromodal.js", "../../../../../node_modules/nodelist-foreach-polyfill/index.js", "../../../../../node_modules/picturefill/dist/picturefill.js", "../../../../../node_modules/process/browser.js", "../../../../../node_modules/promise-polyfill/src/allSettled.js", "../../../../../node_modules/promise-polyfill/src/finally.js", "../../../../../node_modules/promise-polyfill/src/index.js", "../../../../../node_modules/promise-polyfill/src/polyfill.js", "../../../../../node_modules/simplestatemanager/src/ssm.js", "../../../../../node_modules/simplestatemanager/src/state.js", "../../../../../node_modules/simplestatemanager/src/utils.js", "../../../../../node_modules/ssr-window/ssr-window.umd.js", "../../../../../node_modules/svg4everybody/dist/svg4everybody.js", "../../../../../node_modules/swiper/cjs/components/a11y/a11y.js", "../../../../../node_modules/swiper/cjs/components/autoplay/autoplay.js", "../../../../../node_modules/swiper/cjs/components/controller/controller.js", "../../../../../node_modules/swiper/cjs/components/core/breakpoints/getBreakpoint.js", "../../../../../node_modules/swiper/cjs/components/core/breakpoints/index.js", "../../../../../node_modules/swiper/cjs/components/core/breakpoints/setBreakpoint.js", "../../../../../node_modules/swiper/cjs/components/core/check-overflow/index.js", "../../../../../node_modules/swiper/cjs/components/core/classes/addClasses.js", "../../../../../node_modules/swiper/cjs/components/core/classes/index.js", "../../../../../node_modules/swiper/cjs/components/core/classes/removeClasses.js", "../../../../../node_modules/swiper/cjs/components/core/core-class.js", "../../../../../node_modules/swiper/cjs/components/core/defaults.js", "../../../../../node_modules/swiper/cjs/components/core/events-emitter.js", "../../../../../node_modules/swiper/cjs/components/core/events/index.js", "../../../../../node_modules/swiper/cjs/components/core/events/onClick.js", "../../../../../node_modules/swiper/cjs/components/core/events/onResize.js", "../../../../../node_modules/swiper/cjs/components/core/events/onScroll.js", "../../../../../node_modules/swiper/cjs/components/core/events/onTouchEnd.js", "../../../../../node_modules/swiper/cjs/components/core/events/onTouchMove.js", "../../../../../node_modules/swiper/cjs/components/core/events/onTouchStart.js", "../../../../../node_modules/swiper/cjs/components/core/grab-cursor/index.js", "../../../../../node_modules/swiper/cjs/components/core/grab-cursor/setGrabCursor.js", "../../../../../node_modules/swiper/cjs/components/core/grab-cursor/unsetGrabCursor.js", "../../../../../node_modules/swiper/cjs/components/core/images/index.js", "../../../../../node_modules/swiper/cjs/components/core/images/loadImage.js", "../../../../../node_modules/swiper/cjs/components/core/images/preloadImages.js", "../../../../../node_modules/swiper/cjs/components/core/loop/index.js", "../../../../../node_modules/swiper/cjs/components/core/loop/loopCreate.js", "../../../../../node_modules/swiper/cjs/components/core/loop/loopDestroy.js", "../../../../../node_modules/swiper/cjs/components/core/loop/loopFix.js", "../../../../../node_modules/swiper/cjs/components/core/manipulation/addSlide.js", "../../../../../node_modules/swiper/cjs/components/core/manipulation/appendSlide.js", "../../../../../node_modules/swiper/cjs/components/core/manipulation/index.js", "../../../../../node_modules/swiper/cjs/components/core/manipulation/prependSlide.js", "../../../../../node_modules/swiper/cjs/components/core/manipulation/removeAllSlides.js", "../../../../../node_modules/swiper/cjs/components/core/manipulation/removeSlide.js", "../../../../../node_modules/swiper/cjs/components/core/modular.js", "../../../../../node_modules/swiper/cjs/components/core/slide/index.js", "../../../../../node_modules/swiper/cjs/components/core/slide/slideNext.js", "../../../../../node_modules/swiper/cjs/components/core/slide/slidePrev.js", "../../../../../node_modules/swiper/cjs/components/core/slide/slideReset.js", "../../../../../node_modules/swiper/cjs/components/core/slide/slideTo.js", "../../../../../node_modules/swiper/cjs/components/core/slide/slideToClickedSlide.js", "../../../../../node_modules/swiper/cjs/components/core/slide/slideToClosest.js", "../../../../../node_modules/swiper/cjs/components/core/slide/slideToLoop.js", "../../../../../node_modules/swiper/cjs/components/core/transition/index.js", "../../../../../node_modules/swiper/cjs/components/core/transition/setTransition.js", "../../../../../node_modules/swiper/cjs/components/core/transition/transitionEnd.js", "../../../../../node_modules/swiper/cjs/components/core/transition/transitionStart.js", "../../../../../node_modules/swiper/cjs/components/core/translate/getTranslate.js", "../../../../../node_modules/swiper/cjs/components/core/translate/index.js", "../../../../../node_modules/swiper/cjs/components/core/translate/maxTranslate.js", "../../../../../node_modules/swiper/cjs/components/core/translate/minTranslate.js", "../../../../../node_modules/swiper/cjs/components/core/translate/setTranslate.js", "../../../../../node_modules/swiper/cjs/components/core/translate/translateTo.js", "../../../../../node_modules/swiper/cjs/components/core/update/index.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateActiveIndex.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateAutoHeight.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateClickedSlide.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateProgress.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateSize.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateSlides.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateSlidesClasses.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateSlidesOffset.js", "../../../../../node_modules/swiper/cjs/components/core/update/updateSlidesProgress.js", "../../../../../node_modules/swiper/cjs/components/effect-coverflow/effect-coverflow.js", "../../../../../node_modules/swiper/cjs/components/effect-cube/effect-cube.js", "../../../../../node_modules/swiper/cjs/components/effect-fade/effect-fade.js", "../../../../../node_modules/swiper/cjs/components/effect-flip/effect-flip.js", "../../../../../node_modules/swiper/cjs/components/hash-navigation/hash-navigation.js", "../../../../../node_modules/swiper/cjs/components/history/history.js", "../../../../../node_modules/swiper/cjs/components/keyboard/keyboard.js", "../../../../../node_modules/swiper/cjs/components/lazy/lazy.js", "../../../../../node_modules/swiper/cjs/components/mousewheel/mousewheel.js", "../../../../../node_modules/swiper/cjs/components/navigation/navigation.js", "../../../../../node_modules/swiper/cjs/components/pagination/pagination.js", "../../../../../node_modules/swiper/cjs/components/parallax/parallax.js", "../../../../../node_modules/swiper/cjs/components/scrollbar/scrollbar.js", "../../../../../node_modules/swiper/cjs/components/thumbs/thumbs.js", "../../../../../node_modules/swiper/cjs/components/virtual/virtual.js", "../../../../../node_modules/swiper/cjs/components/zoom/zoom.js", "../../../../../node_modules/swiper/cjs/modules/observer/observer.js", "../../../../../node_modules/swiper/cjs/modules/resize/resize.js", "../../../../../node_modules/swiper/cjs/utils/dom.js", "../../../../../node_modules/swiper/cjs/utils/get-browser.js", "../../../../../node_modules/swiper/cjs/utils/get-device.js", "../../../../../node_modules/swiper/cjs/utils/get-support.js", "../../../../../node_modules/swiper/cjs/utils/utils.js", "../../../../../node_modules/swiper/swiper.cjs.js", "../../../../../node_modules/timers-browserify/main.js", "../../../../../node_modules/url-polyfill/url-polyfill.js", "../../../../../node_modules/whatwg-fetch/dist/fetch.umd.js", "../_core/components/global-header.es6", "../_core/components/global-nav.es6", "../_core/components/notification-bar.es6", "../_core/components/popup-modal.es6", "../_core/components/search-bar.es6", "../_core/performance/helpers/get-latest-unit-price-data.es6", "../_core/performance/helpers/parse-performance-chart-data.es6", "../_core/performance/legacy/asset-allocation-piechart.es6", "../_core/performance/legacy/performance-line-chart.es6", "../_core/performance/legacy/unit-price-history-table.es6", "../_core/performance/legacy/unit-price-latest-table.es6", "../_core/polyfills/is-nan.es6", "../_core/utils/localstoragemanager.es6", "../_core/utils/statemanager.es6", "../_core/widgets/accordion.es6", "../_core/widgets/animated-widget.es6", "../_core/widgets/video-player.es6", "../_core/widgets/wayfinding-semantic-search.es6", "pageComponents.es6" ], "names": [], "mappings": "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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ "(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n", "/*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n(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 if(typeof exports === 'object')\n\t\texports[\"Choices\"] = factory();\n\telse\n\t\troot[\"Choices\"] = factory();\n})(window, 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, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/public/assets/scripts/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 4);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\ttry {\n\t\treturn (key in target) // Properties are safe to merge if they don't exist in the target yet,\n\t\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n\t} catch (unused) {\n\t\t// Counterintuitively, it's safe to merge any property on a target that causes the `in` operator to throw.\n\t\t// This happens when trying to copy an object in the source over a plain string in the target.\n\t\treturn false\n\t}\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);\n/* global window */\n\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (true) {\n root = module;\n} else {}\n\nvar result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"])(root);\n/* harmony default export */ __webpack_exports__[\"a\"] = (result);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5), __webpack_require__(6)(module)))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*!\n * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)\n * \n * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n * \n * http://www.apache.org/licenses/LICENSE-2.0\n */\n!function(e,t){ true?module.exports=t():undefined}(this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}},function(e,t,n){function r(e){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\\nSearch pattern: \"'.concat(e,'\"'));var n=this._prepareSearchers(e),r=n.tokenSearchers,o=n.fullSearcher,i=this._search(r,o),a=i.weights,s=i.results;return this._computeScore(a,s),this.options.shouldSort&&this._sort(s),t.limit&&\"number\"==typeof t.limit&&(s=s.slice(0,t.limit)),this._format(s)}},{key:\"_prepareSearchers\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),r=0,o=n.length;r0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n=this.list,r={},o=[];if(\"string\"==typeof n[0]){for(var i=0,a=n.length;i1)throw new Error(\"Key weight has to be > 0 and <= 1\");d=d.name}else s[d]={weight:1};this._analyze({key:d,value:this.options.getFn(l,d),record:l,index:c},{resultMap:r,results:o,tokenSearchers:e,fullSearcher:t})}return{weights:s,results:o}}},{key:\"_analyze\",value:function(e,t){var n=e.key,r=e.arrayIndex,o=void 0===r?-1:r,i=e.value,a=e.record,c=e.index,h=t.tokenSearchers,l=void 0===h?[]:h,u=t.fullSearcher,f=void 0===u?[]:u,d=t.resultMap,v=void 0===d?{}:d,p=t.results,g=void 0===p?[]:p;if(null!=i){var y=!1,m=-1,k=0;if(\"string\"==typeof i){this._log(\"\\nKey: \".concat(\"\"===n?\"-\":n));var S=f.search(i);if(this._log('Full text: \"'.concat(i,'\", score: ').concat(S.score)),this.options.tokenize){for(var x=i.split(this.options.tokenSeparator),b=[],M=0;M-1&&(P=(P+m)/2),this._log(\"Score average:\",P);var F=!this.options.tokenize||!this.options.matchAllTokens||k>=l.length;if(this._log(\"\\nCheck Matches: \".concat(F)),(y||S.isMatch)&&F){var T=v[c];T?T.output.push({key:n,arrayIndex:o,value:i,score:P,matchedIndices:S.matchedIndices}):(v[c]={item:a,output:[{key:n,arrayIndex:o,value:i,score:P,matchedIndices:S.matchedIndices}]},g.push(v[c]))}}else if(s(i))for(var z=0,E=i.length;z-1&&(a.arrayIndex=i.arrayIndex),t.matches.push(a)}}}),this.options.includeScore&&o.push(function(e,t){t.score=e.score});for(var i=0,a=e.length;in)return o(e,this.pattern,r);var a=this.options,s=a.location,c=a.distance,h=a.threshold,l=a.findAllMatches,u=a.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:s,distance:c,threshold:h,findAllMatches:l,minMatchCharLength:u})}}])&&r(t.prototype,n),s&&r(t,s),e}();e.exports=s},function(e,t){var n=/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;e.exports=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(n,\"\\\\$&\").replace(r,\"|\")),i=e.match(o),a=!!i,s=[];if(a)for(var c=0,h=i.length;c=P;z-=1){var E=z-1,K=n[e.charAt(E)];if(K&&(x[E]=1),T[z]=(T[z+1]<<1|1)&K,0!==I&&(T[z]|=(L[z+1]|L[z])<<1|1|L[z+1]),T[z]&C&&(w=r(t,{errors:I,currentLocation:E,expectedLocation:g,distance:h}))<=m){if(m=w,(k=E)<=g)break;P=Math.max(1,2*g-k)}}if(r(t,{errors:I+1,currentLocation:g,expectedLocation:g,distance:h})>m)break;L=T}return{isMatch:k>=0,score:0===w?.001:w,matchedIndices:o(x,p)}}},function(e,t){e.exports=function(e,t){var n=t.errors,r=void 0===n?0:n,o=t.currentLocation,i=void 0===o?0:o,a=t.expectedLocation,s=void 0===a?0:a,c=t.distance,h=void 0===c?100:c,l=r/e.length,u=Math.abs(s-i);return h?l+u/h:u?1:l}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[],r=-1,o=-1,i=0,a=e.length;i=t&&n.push([r,o]),r=-1)}return e[i-1]&&i-r>=t&&n.push([r,i-1]),n}},function(e,t){e.exports=function(e){for(var t={},n=e.length,r=0;r 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (false) {}\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (false) {}\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (false) { var warningMessage; }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (false) {}\n\n\n\n// CONCATENATED MODULE: ./src/scripts/reducers/items.js\nvar defaultState = [];\nfunction items_items(state, action) {\n if (state === void 0) {\n state = defaultState;\n }\n\n switch (action.type) {\n case 'ADD_ITEM':\n {\n // Add object to items array\n var newState = [].concat(state, [{\n id: action.id,\n choiceId: action.choiceId,\n groupId: action.groupId,\n value: action.value,\n label: action.label,\n active: true,\n highlighted: false,\n customProperties: action.customProperties,\n placeholder: action.placeholder || false,\n keyCode: null\n }]);\n return newState.map(function (obj) {\n var item = obj;\n item.highlighted = false;\n return item;\n });\n }\n\n case 'REMOVE_ITEM':\n {\n // Set item to inactive\n return state.map(function (obj) {\n var item = obj;\n\n if (item.id === action.id) {\n item.active = false;\n }\n\n return item;\n });\n }\n\n case 'HIGHLIGHT_ITEM':\n {\n return state.map(function (obj) {\n var item = obj;\n\n if (item.id === action.id) {\n item.highlighted = action.highlighted;\n }\n\n return item;\n });\n }\n\n default:\n {\n return state;\n }\n }\n}\n// CONCATENATED MODULE: ./src/scripts/reducers/groups.js\nvar groups_defaultState = [];\nfunction groups(state, action) {\n if (state === void 0) {\n state = groups_defaultState;\n }\n\n switch (action.type) {\n case 'ADD_GROUP':\n {\n return [].concat(state, [{\n id: action.id,\n value: action.value,\n active: action.active,\n disabled: action.disabled\n }]);\n }\n\n case 'CLEAR_CHOICES':\n {\n return [];\n }\n\n default:\n {\n return state;\n }\n }\n}\n// CONCATENATED MODULE: ./src/scripts/reducers/choices.js\nvar choices_defaultState = [];\nfunction choices_choices(state, action) {\n if (state === void 0) {\n state = choices_defaultState;\n }\n\n switch (action.type) {\n case 'ADD_CHOICE':\n {\n /*\n A disabled choice appears in the choice dropdown but cannot be selected\n A selected choice has been added to the passed input's value (added as an item)\n An active choice appears within the choice dropdown\n */\n return [].concat(state, [{\n id: action.id,\n elementId: action.elementId,\n groupId: action.groupId,\n value: action.value,\n label: action.label || action.value,\n disabled: action.disabled || false,\n selected: false,\n active: true,\n score: 9999,\n customProperties: action.customProperties,\n placeholder: action.placeholder || false,\n keyCode: null\n }]);\n }\n\n case 'ADD_ITEM':\n {\n // If all choices need to be activated\n if (action.activateOptions) {\n return state.map(function (obj) {\n var choice = obj;\n choice.active = action.active;\n return choice;\n });\n } // When an item is added and it has an associated choice,\n // we want to disable it so it can't be chosen again\n\n\n if (action.choiceId > -1) {\n return state.map(function (obj) {\n var choice = obj;\n\n if (choice.id === parseInt(action.choiceId, 10)) {\n choice.selected = true;\n }\n\n return choice;\n });\n }\n\n return state;\n }\n\n case 'REMOVE_ITEM':\n {\n // When an item is removed and it has an associated choice,\n // we want to re-enable it so it can be chosen again\n if (action.choiceId > -1) {\n return state.map(function (obj) {\n var choice = obj;\n\n if (choice.id === parseInt(action.choiceId, 10)) {\n choice.selected = false;\n }\n\n return choice;\n });\n }\n\n return state;\n }\n\n case 'FILTER_CHOICES':\n {\n return state.map(function (obj) {\n var choice = obj; // Set active state based on whether choice is\n // within filtered results\n\n choice.active = action.results.some(function (_ref) {\n var item = _ref.item,\n score = _ref.score;\n\n if (item.id === choice.id) {\n choice.score = score;\n return true;\n }\n\n return false;\n });\n return choice;\n });\n }\n\n case 'ACTIVATE_CHOICES':\n {\n return state.map(function (obj) {\n var choice = obj;\n choice.active = action.active;\n return choice;\n });\n }\n\n case 'CLEAR_CHOICES':\n {\n return choices_defaultState;\n }\n\n default:\n {\n return state;\n }\n }\n}\n// CONCATENATED MODULE: ./src/scripts/reducers/general.js\nvar general_defaultState = {\n loading: false\n};\n\nvar general = function general(state, action) {\n if (state === void 0) {\n state = general_defaultState;\n }\n\n switch (action.type) {\n case 'SET_IS_LOADING':\n {\n return {\n loading: action.isLoading\n };\n }\n\n default:\n {\n return state;\n }\n }\n};\n\n/* harmony default export */ var reducers_general = (general);\n// CONCATENATED MODULE: ./src/scripts/lib/utils.js\n/**\n * @param {number} min\n * @param {number} max\n * @returns {number}\n */\nvar getRandomNumber = function getRandomNumber(min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n};\n/**\n * @param {number} length\n * @returns {string}\n */\n\nvar generateChars = function generateChars(length) {\n return Array.from({\n length: length\n }, function () {\n return getRandomNumber(0, 36).toString(36);\n }).join('');\n};\n/**\n * @param {HTMLInputElement | HTMLSelectElement} element\n * @param {string} prefix\n * @returns {string}\n */\n\nvar generateId = function generateId(element, prefix) {\n var id = element.id || element.name && element.name + \"-\" + generateChars(2) || generateChars(4);\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = prefix + \"-\" + id;\n return id;\n};\n/**\n * @param {any} obj\n * @returns {string}\n */\n\nvar getType = function getType(obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n};\n/**\n * @param {string} type\n * @param {any} obj\n * @returns {boolean}\n */\n\nvar isType = function isType(type, obj) {\n return obj !== undefined && obj !== null && getType(obj) === type;\n};\n/**\n * @param {HTMLElement} element\n * @param {HTMLElement} [wrapper={HTMLDivElement}]\n * @returns {HTMLElement}\n */\n\nvar utils_wrap = function wrap(element, wrapper) {\n if (wrapper === void 0) {\n wrapper = document.createElement('div');\n }\n\n if (element.nextSibling) {\n element.parentNode.insertBefore(wrapper, element.nextSibling);\n } else {\n element.parentNode.appendChild(wrapper);\n }\n\n return wrapper.appendChild(element);\n};\n/**\n * @param {Element} startEl\n * @param {string} selector\n * @param {1 | -1} direction\n * @returns {Element | undefined}\n */\n\nvar getAdjacentEl = function getAdjacentEl(startEl, selector, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n\n if (!(startEl instanceof Element) || typeof selector !== 'string') {\n return undefined;\n }\n\n var prop = (direction > 0 ? 'next' : 'previous') + \"ElementSibling\";\n var sibling = startEl[prop];\n\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n\n sibling = sibling[prop];\n }\n\n return sibling;\n};\n/**\n * @param {Element} element\n * @param {Element} parent\n * @param {-1 | 1} direction\n * @returns {boolean}\n */\n\nvar isScrolledIntoView = function isScrolledIntoView(element, parent, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n\n if (!element) {\n return false;\n }\n\n var isVisible;\n\n if (direction > 0) {\n // In view from bottom\n isVisible = parent.scrollTop + parent.offsetHeight >= element.offsetTop + element.offsetHeight;\n } else {\n // In view from top\n isVisible = element.offsetTop >= parent.scrollTop;\n }\n\n return isVisible;\n};\n/**\n * @param {any} value\n * @returns {any}\n */\n\nvar sanitise = function sanitise(value) {\n if (typeof value !== 'string') {\n return value;\n }\n\n return value.replace(/&/g, '&').replace(/>/g, '&rt;').replace(/ (str: string) => Element}\n */\n\nvar strToEl = function () {\n var tmpEl = document.createElement('div');\n return function (str) {\n var cleanedInput = str.trim();\n tmpEl.innerHTML = cleanedInput;\n var firldChild = tmpEl.children[0];\n\n while (tmpEl.firstChild) {\n tmpEl.removeChild(tmpEl.firstChild);\n }\n\n return firldChild;\n };\n}();\n/**\n * @param {{ label?: string, value: string }} a\n * @param {{ label?: string, value: string }} b\n * @returns {number}\n */\n\nvar sortByAlpha = function sortByAlpha(_ref, _ref2) {\n var value = _ref.value,\n _ref$label = _ref.label,\n label = _ref$label === void 0 ? value : _ref$label;\n var value2 = _ref2.value,\n _ref2$label = _ref2.label,\n label2 = _ref2$label === void 0 ? value2 : _ref2$label;\n return label.localeCompare(label2, [], {\n sensitivity: 'base',\n ignorePunctuation: true,\n numeric: true\n });\n};\n/**\n * @param {{ score: number }} a\n * @param {{ score: number }} b\n */\n\nvar sortByScore = function sortByScore(a, b) {\n return a.score - b.score;\n};\n/**\n * @param {HTMLElement} element\n * @param {string} type\n * @param {object} customArgs\n */\n\nvar dispatchEvent = function dispatchEvent(element, type, customArgs) {\n if (customArgs === void 0) {\n customArgs = null;\n }\n\n var event = new CustomEvent(type, {\n detail: customArgs,\n bubbles: true,\n cancelable: true\n });\n return element.dispatchEvent(event);\n};\n/**\n * @param {array} array\n * @param {any} value\n * @param {string} [key=\"value\"]\n * @returns {boolean}\n */\n\nvar existsInArray = function existsInArray(array, value, key) {\n if (key === void 0) {\n key = 'value';\n }\n\n return array.some(function (item) {\n if (typeof value === 'string') {\n return item[key] === value.trim();\n }\n\n return item[key] === value;\n });\n};\n/**\n * @param {any} obj\n * @returns {any}\n */\n\nvar cloneObject = function cloneObject(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n/**\n * Returns an array of keys present on the first but missing on the second object\n * @param {object} a\n * @param {object} b\n * @returns {string[]}\n */\n\nvar diff = function diff(a, b) {\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n return aKeys.filter(function (i) {\n return bKeys.indexOf(i) < 0;\n });\n};\n// CONCATENATED MODULE: ./src/scripts/reducers/index.js\n\n\n\n\n\n\nvar appReducer = combineReducers({\n items: items_items,\n groups: groups,\n choices: choices_choices,\n general: reducers_general\n});\n\nvar reducers_rootReducer = function rootReducer(passedState, action) {\n var state = passedState; // If we are clearing all items, groups and options we reassign\n // state and then pass that state to our proper reducer. This isn't\n // mutating our actual state\n // See: http://stackoverflow.com/a/35641992\n\n if (action.type === 'CLEAR_ALL') {\n state = undefined;\n } else if (action.type === 'RESET_TO') {\n return cloneObject(action.state);\n }\n\n return appReducer(state, action);\n};\n\n/* harmony default export */ var reducers = (reducers_rootReducer);\n// CONCATENATED MODULE: ./src/scripts/store/store.js\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n/**\n * @typedef {import('../../../types/index').Choices.Choice} Choice\n * @typedef {import('../../../types/index').Choices.Group} Group\n * @typedef {import('../../../types/index').Choices.Item} Item\n */\n\nvar store_Store =\n/*#__PURE__*/\nfunction () {\n function Store() {\n this._store = createStore(reducers, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n }\n /**\n * Subscribe store to function call (wrapped Redux method)\n * @param {Function} onChange Function to trigger when state changes\n * @return\n */\n\n\n var _proto = Store.prototype;\n\n _proto.subscribe = function subscribe(onChange) {\n this._store.subscribe(onChange);\n }\n /**\n * Dispatch event to store (wrapped Redux method)\n * @param {{ type: string, [x: string]: any }} action Action to trigger\n * @return\n */\n ;\n\n _proto.dispatch = function dispatch(action) {\n this._store.dispatch(action);\n }\n /**\n * Get store object (wrapping Redux method)\n * @returns {object} State\n */\n ;\n\n /**\n * Get loading state from store\n * @returns {boolean} Loading State\n */\n _proto.isLoading = function isLoading() {\n return this.state.general.loading;\n }\n /**\n * Get single choice by it's ID\n * @param {string} id\n * @returns {Choice | undefined} Found choice\n */\n ;\n\n _proto.getChoiceById = function getChoiceById(id) {\n return this.activeChoices.find(function (choice) {\n return choice.id === parseInt(id, 10);\n });\n }\n /**\n * Get group by group id\n * @param {number} id Group ID\n * @returns {Group | undefined} Group data\n */\n ;\n\n _proto.getGroupById = function getGroupById(id) {\n return this.groups.find(function (group) {\n return group.id === id;\n });\n };\n\n _createClass(Store, [{\n key: \"state\",\n get: function get() {\n return this._store.getState();\n }\n /**\n * Get items from store\n * @returns {Item[]} Item objects\n */\n\n }, {\n key: \"items\",\n get: function get() {\n return this.state.items;\n }\n /**\n * Get active items from store\n * @returns {Item[]} Item objects\n */\n\n }, {\n key: \"activeItems\",\n get: function get() {\n return this.items.filter(function (item) {\n return item.active === true;\n });\n }\n /**\n * Get highlighted items from store\n * @returns {Item[]} Item objects\n */\n\n }, {\n key: \"highlightedActiveItems\",\n get: function get() {\n return this.items.filter(function (item) {\n return item.active && item.highlighted;\n });\n }\n /**\n * Get choices from store\n * @returns {Choice[]} Option objects\n */\n\n }, {\n key: \"choices\",\n get: function get() {\n return this.state.choices;\n }\n /**\n * Get active choices from store\n * @returns {Choice[]} Option objects\n */\n\n }, {\n key: \"activeChoices\",\n get: function get() {\n return this.choices.filter(function (choice) {\n return choice.active === true;\n });\n }\n /**\n * Get selectable choices from store\n * @returns {Choice[]} Option objects\n */\n\n }, {\n key: \"selectableChoices\",\n get: function get() {\n return this.choices.filter(function (choice) {\n return choice.disabled !== true;\n });\n }\n /**\n * Get choices that can be searched (excluding placeholders)\n * @returns {Choice[]} Option objects\n */\n\n }, {\n key: \"searchableChoices\",\n get: function get() {\n return this.selectableChoices.filter(function (choice) {\n return choice.placeholder !== true;\n });\n }\n /**\n * Get placeholder choice from store\n * @returns {Choice | undefined} Found placeholder\n */\n\n }, {\n key: \"placeholderChoice\",\n get: function get() {\n return [].concat(this.choices).reverse().find(function (choice) {\n return choice.placeholder === true;\n });\n }\n /**\n * Get groups from store\n * @returns {Group[]} Group objects\n */\n\n }, {\n key: \"groups\",\n get: function get() {\n return this.state.groups;\n }\n /**\n * Get active groups from store\n * @returns {Group[]} Group objects\n */\n\n }, {\n key: \"activeGroups\",\n get: function get() {\n var groups = this.groups,\n choices = this.choices;\n return groups.filter(function (group) {\n var isActive = group.active === true && group.disabled === false;\n var hasActiveOptions = choices.some(function (choice) {\n return choice.active === true && choice.disabled === false;\n });\n return isActive && hasActiveOptions;\n }, []);\n }\n }]);\n\n return Store;\n}();\n\n\n// CONCATENATED MODULE: ./src/scripts/components/dropdown.js\nfunction dropdown_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction dropdown_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropdown_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropdown_defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * @typedef {import('../../../types/index').Choices.passedElement} passedElement\n * @typedef {import('../../../types/index').Choices.ClassNames} ClassNames\n */\nvar Dropdown =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {{\n * element: HTMLElement,\n * type: passedElement['type'],\n * classNames: ClassNames,\n * }} args\n */\n function Dropdown(_ref) {\n var element = _ref.element,\n type = _ref.type,\n classNames = _ref.classNames;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.isActive = false;\n }\n /**\n * Bottom position of dropdown in viewport coordinates\n * @returns {number} Vertical position\n */\n\n\n var _proto = Dropdown.prototype;\n\n /**\n * Find element that matches passed selector\n * @param {string} selector\n * @returns {HTMLElement | null}\n */\n _proto.getChild = function getChild(selector) {\n return this.element.querySelector(selector);\n }\n /**\n * Show dropdown to user by adding active state class\n * @returns {this}\n */\n ;\n\n _proto.show = function show() {\n this.element.classList.add(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isActive = true;\n return this;\n }\n /**\n * Hide dropdown from user\n * @returns {this}\n */\n ;\n\n _proto.hide = function hide() {\n this.element.classList.remove(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'false');\n this.isActive = false;\n return this;\n };\n\n dropdown_createClass(Dropdown, [{\n key: \"distanceFromTopWindow\",\n get: function get() {\n return this.element.getBoundingClientRect().bottom;\n }\n }]);\n\n return Dropdown;\n}();\n\n\n// CONCATENATED MODULE: ./src/scripts/constants.js\n\n/**\n * @typedef {import('../../types/index').Choices.ClassNames} ClassNames\n * @typedef {import('../../types/index').Choices.Options} Options\n */\n\n/** @type {ClassNames} */\n\nvar DEFAULT_CLASSNAMES = {\n containerOuter: 'choices',\n containerInner: 'choices__inner',\n input: 'choices__input',\n inputCloned: 'choices__input--cloned',\n list: 'choices__list',\n listItems: 'choices__list--multiple',\n listSingle: 'choices__list--single',\n listDropdown: 'choices__list--dropdown',\n item: 'choices__item',\n itemSelectable: 'choices__item--selectable',\n itemDisabled: 'choices__item--disabled',\n itemChoice: 'choices__item--choice',\n placeholder: 'choices__placeholder',\n group: 'choices__group',\n groupHeading: 'choices__heading',\n button: 'choices__button',\n activeState: 'is-active',\n focusState: 'is-focused',\n openState: 'is-open',\n disabledState: 'is-disabled',\n highlightedState: 'is-highlighted',\n selectedState: 'is-selected',\n flippedState: 'is-flipped',\n loadingState: 'is-loading',\n noResults: 'has-no-results',\n noChoices: 'has-no-choices'\n};\n/** @type {Options} */\n\nvar DEFAULT_CONFIG = {\n items: [],\n choices: [],\n silent: false,\n renderChoiceLimit: -1,\n maxItemCount: -1,\n addItems: true,\n addItemFilter: null,\n removeItems: true,\n removeItemButton: false,\n editItems: false,\n duplicateItemsAllowed: true,\n delimiter: ',',\n paste: true,\n searchEnabled: true,\n searchChoices: true,\n searchFloor: 1,\n searchResultLimit: 4,\n searchFields: ['label', 'value'],\n position: 'auto',\n resetScrollPosition: true,\n shouldSort: true,\n shouldSortItems: false,\n sorter: sortByAlpha,\n placeholder: true,\n placeholderValue: null,\n searchPlaceholderValue: null,\n prependValue: null,\n appendValue: null,\n renderSelectedChoices: 'auto',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n uniqueItemText: 'Only unique values can be added',\n customAddItemText: 'Only values matching specific conditions can be added',\n addItemText: function addItemText(value) {\n return \"Press Enter to add \\\"\" + sanitise(value) + \"\\\"\";\n },\n maxItemText: function maxItemText(maxItemCount) {\n return \"Only \" + maxItemCount + \" values can be added\";\n },\n valueComparer: function valueComparer(value1, value2) {\n return value1 === value2;\n },\n fuseOptions: {\n includeScore: true\n },\n callbackOnInit: null,\n callbackOnCreateTemplates: null,\n classNames: DEFAULT_CLASSNAMES\n};\nvar EVENTS = {\n showDropdown: 'showDropdown',\n hideDropdown: 'hideDropdown',\n change: 'change',\n choice: 'choice',\n search: 'search',\n addItem: 'addItem',\n removeItem: 'removeItem',\n highlightItem: 'highlightItem',\n highlightChoice: 'highlightChoice'\n};\nvar ACTION_TYPES = {\n ADD_CHOICE: 'ADD_CHOICE',\n FILTER_CHOICES: 'FILTER_CHOICES',\n ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n CLEAR_CHOICES: 'CLEAR_CHOICES',\n ADD_GROUP: 'ADD_GROUP',\n ADD_ITEM: 'ADD_ITEM',\n REMOVE_ITEM: 'REMOVE_ITEM',\n HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n CLEAR_ALL: 'CLEAR_ALL'\n};\nvar KEY_CODES = {\n BACK_KEY: 46,\n DELETE_KEY: 8,\n ENTER_KEY: 13,\n A_KEY: 65,\n ESC_KEY: 27,\n UP_KEY: 38,\n DOWN_KEY: 40,\n PAGE_UP_KEY: 33,\n PAGE_DOWN_KEY: 34\n};\nvar TEXT_TYPE = 'text';\nvar SELECT_ONE_TYPE = 'select-one';\nvar SELECT_MULTIPLE_TYPE = 'select-multiple';\nvar SCROLLING_SPEED = 4;\n// CONCATENATED MODULE: ./src/scripts/components/container.js\n\n\n/**\n * @typedef {import('../../../types/index').Choices.passedElement} passedElement\n * @typedef {import('../../../types/index').Choices.ClassNames} ClassNames\n */\n\nvar container_Container =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {{\n * element: HTMLElement,\n * type: passedElement['type'],\n * classNames: ClassNames,\n * position\n * }} args\n */\n function Container(_ref) {\n var element = _ref.element,\n type = _ref.type,\n classNames = _ref.classNames,\n position = _ref.position;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.position = position;\n this.isOpen = false;\n this.isFlipped = false;\n this.isFocussed = false;\n this.isDisabled = false;\n this.isLoading = false;\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n\n var _proto = Container.prototype;\n\n _proto.addEventListeners = function addEventListeners() {\n this.element.addEventListener('focus', this._onFocus);\n this.element.addEventListener('blur', this._onBlur);\n };\n\n _proto.removeEventListeners = function removeEventListeners() {\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n }\n /**\n * Determine whether container should be flipped based on passed\n * dropdown position\n * @param {number} dropdownPos\n * @returns {boolean}\n */\n ;\n\n _proto.shouldFlip = function shouldFlip(dropdownPos) {\n if (typeof dropdownPos !== 'number') {\n return false;\n } // If flip is enabled and the dropdown bottom position is\n // greater than the window height flip the dropdown.\n\n\n var shouldFlip = false;\n\n if (this.position === 'auto') {\n shouldFlip = !window.matchMedia(\"(min-height: \" + (dropdownPos + 1) + \"px)\").matches;\n } else if (this.position === 'top') {\n shouldFlip = true;\n }\n\n return shouldFlip;\n }\n /**\n * @param {string} activeDescendantID\n */\n ;\n\n _proto.setActiveDescendant = function setActiveDescendant(activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n\n _proto.removeActiveDescendant = function removeActiveDescendant() {\n this.element.removeAttribute('aria-activedescendant');\n }\n /**\n * @param {number} dropdownPos\n */\n ;\n\n _proto.open = function open(dropdownPos) {\n this.element.classList.add(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isOpen = true;\n\n if (this.shouldFlip(dropdownPos)) {\n this.element.classList.add(this.classNames.flippedState);\n this.isFlipped = true;\n }\n };\n\n _proto.close = function close() {\n this.element.classList.remove(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'false');\n this.removeActiveDescendant();\n this.isOpen = false; // A dropdown flips if it does not have space within the page\n\n if (this.isFlipped) {\n this.element.classList.remove(this.classNames.flippedState);\n this.isFlipped = false;\n }\n };\n\n _proto.focus = function focus() {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n\n _proto.addFocusState = function addFocusState() {\n this.element.classList.add(this.classNames.focusState);\n };\n\n _proto.removeFocusState = function removeFocusState() {\n this.element.classList.remove(this.classNames.focusState);\n };\n\n _proto.enable = function enable() {\n this.element.classList.remove(this.classNames.disabledState);\n this.element.removeAttribute('aria-disabled');\n\n if (this.type === SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '0');\n }\n\n this.isDisabled = false;\n };\n\n _proto.disable = function disable() {\n this.element.classList.add(this.classNames.disabledState);\n this.element.setAttribute('aria-disabled', 'true');\n\n if (this.type === SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '-1');\n }\n\n this.isDisabled = true;\n }\n /**\n * @param {HTMLElement} element\n */\n ;\n\n _proto.wrap = function wrap(element) {\n utils_wrap(element, this.element);\n }\n /**\n * @param {Element} element\n */\n ;\n\n _proto.unwrap = function unwrap(element) {\n // Move passed element outside this element\n this.element.parentNode.insertBefore(element, this.element); // Remove this element\n\n this.element.parentNode.removeChild(this.element);\n };\n\n _proto.addLoadingState = function addLoadingState() {\n this.element.classList.add(this.classNames.loadingState);\n this.element.setAttribute('aria-busy', 'true');\n this.isLoading = true;\n };\n\n _proto.removeLoadingState = function removeLoadingState() {\n this.element.classList.remove(this.classNames.loadingState);\n this.element.removeAttribute('aria-busy');\n this.isLoading = false;\n };\n\n _proto._onFocus = function _onFocus() {\n this.isFocussed = true;\n };\n\n _proto._onBlur = function _onBlur() {\n this.isFocussed = false;\n };\n\n return Container;\n}();\n\n\n// CONCATENATED MODULE: ./src/scripts/components/input.js\nfunction input_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction input_createClass(Constructor, protoProps, staticProps) { if (protoProps) input_defineProperties(Constructor.prototype, protoProps); if (staticProps) input_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n/**\n * @typedef {import('../../../types/index').Choices.passedElement} passedElement\n * @typedef {import('../../../types/index').Choices.ClassNames} ClassNames\n */\n\nvar input_Input =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {{\n * element: HTMLInputElement,\n * type: passedElement['type'],\n * classNames: ClassNames,\n * preventPaste: boolean\n * }} args\n */\n function Input(_ref) {\n var element = _ref.element,\n type = _ref.type,\n classNames = _ref.classNames,\n preventPaste = _ref.preventPaste;\n this.element = element;\n this.type = type;\n this.classNames = classNames;\n this.preventPaste = preventPaste;\n this.isFocussed = this.element === document.activeElement;\n this.isDisabled = element.disabled;\n this._onPaste = this._onPaste.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n /**\n * @param {string} placeholder\n */\n\n\n var _proto = Input.prototype;\n\n _proto.addEventListeners = function addEventListeners() {\n this.element.addEventListener('paste', this._onPaste);\n this.element.addEventListener('input', this._onInput, {\n passive: true\n });\n this.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n };\n\n _proto.removeEventListeners = function removeEventListeners() {\n this.element.removeEventListener('input', this._onInput, {\n passive: true\n });\n this.element.removeEventListener('paste', this._onPaste);\n this.element.removeEventListener('focus', this._onFocus, {\n passive: true\n });\n this.element.removeEventListener('blur', this._onBlur, {\n passive: true\n });\n };\n\n _proto.enable = function enable() {\n this.element.removeAttribute('disabled');\n this.isDisabled = false;\n };\n\n _proto.disable = function disable() {\n this.element.setAttribute('disabled', '');\n this.isDisabled = true;\n };\n\n _proto.focus = function focus() {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n\n _proto.blur = function blur() {\n if (this.isFocussed) {\n this.element.blur();\n }\n }\n /**\n * Set value of input to blank\n * @param {boolean} setWidth\n * @returns {this}\n */\n ;\n\n _proto.clear = function clear(setWidth) {\n if (setWidth === void 0) {\n setWidth = true;\n }\n\n if (this.element.value) {\n this.element.value = '';\n }\n\n if (setWidth) {\n this.setWidth();\n }\n\n return this;\n }\n /**\n * Set the correct input width based on placeholder\n * value or input value\n */\n ;\n\n _proto.setWidth = function setWidth() {\n // Resize input to contents or placeholder\n var _this$element = this.element,\n style = _this$element.style,\n value = _this$element.value,\n placeholder = _this$element.placeholder;\n style.minWidth = placeholder.length + 1 + \"ch\";\n style.width = value.length + 1 + \"ch\";\n }\n /**\n * @param {string} activeDescendantID\n */\n ;\n\n _proto.setActiveDescendant = function setActiveDescendant(activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n\n _proto.removeActiveDescendant = function removeActiveDescendant() {\n this.element.removeAttribute('aria-activedescendant');\n };\n\n _proto._onInput = function _onInput() {\n if (this.type !== SELECT_ONE_TYPE) {\n this.setWidth();\n }\n }\n /**\n * @param {Event} event\n */\n ;\n\n _proto._onPaste = function _onPaste(event) {\n if (this.preventPaste) {\n event.preventDefault();\n }\n };\n\n _proto._onFocus = function _onFocus() {\n this.isFocussed = true;\n };\n\n _proto._onBlur = function _onBlur() {\n this.isFocussed = false;\n };\n\n input_createClass(Input, [{\n key: \"placeholder\",\n set: function set(placeholder) {\n this.element.placeholder = placeholder;\n }\n /**\n * @returns {string}\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return sanitise(this.element.value);\n }\n /**\n * @param {string} value\n */\n ,\n set: function set(value) {\n this.element.value = value;\n }\n }]);\n\n return Input;\n}();\n\n\n// CONCATENATED MODULE: ./src/scripts/components/list.js\n\n/**\n * @typedef {import('../../../types/index').Choices.Choice} Choice\n */\n\nvar list_List =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {{ element: HTMLElement }} args\n */\n function List(_ref) {\n var element = _ref.element;\n this.element = element;\n this.scrollPos = this.element.scrollTop;\n this.height = this.element.offsetHeight;\n }\n\n var _proto = List.prototype;\n\n _proto.clear = function clear() {\n this.element.innerHTML = '';\n }\n /**\n * @param {Element | DocumentFragment} node\n */\n ;\n\n _proto.append = function append(node) {\n this.element.appendChild(node);\n }\n /**\n * @param {string} selector\n * @returns {Element | null}\n */\n ;\n\n _proto.getChild = function getChild(selector) {\n return this.element.querySelector(selector);\n }\n /**\n * @returns {boolean}\n */\n ;\n\n _proto.hasChildren = function hasChildren() {\n return this.element.hasChildNodes();\n };\n\n _proto.scrollToTop = function scrollToTop() {\n this.element.scrollTop = 0;\n }\n /**\n * @param {Element} element\n * @param {1 | -1} direction\n */\n ;\n\n _proto.scrollToChildElement = function scrollToChildElement(element, direction) {\n var _this = this;\n\n if (!element) {\n return;\n }\n\n var listHeight = this.element.offsetHeight; // Scroll position of dropdown\n\n var listScrollPosition = this.element.scrollTop + listHeight;\n var elementHeight = element.offsetHeight; // Distance from bottom of element to top of parent\n\n var elementPos = element.offsetTop + elementHeight; // Difference between the element and scroll position\n\n var destination = direction > 0 ? this.element.scrollTop + elementPos - listScrollPosition : element.offsetTop;\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n }\n /**\n * @param {number} scrollPos\n * @param {number} strength\n * @param {number} destination\n */\n ;\n\n _proto._scrollDown = function _scrollDown(scrollPos, strength, destination) {\n var easing = (destination - scrollPos) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos + distance;\n }\n /**\n * @param {number} scrollPos\n * @param {number} strength\n * @param {number} destination\n */\n ;\n\n _proto._scrollUp = function _scrollUp(scrollPos, strength, destination) {\n var easing = (scrollPos - destination) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos - distance;\n }\n /**\n * @param {*} destination\n * @param {*} direction\n */\n ;\n\n _proto._animateScroll = function _animateScroll(destination, direction) {\n var _this2 = this;\n\n var strength = SCROLLING_SPEED;\n var choiceListScrollTop = this.element.scrollTop;\n var continueAnimation = false;\n\n if (direction > 0) {\n this._scrollDown(choiceListScrollTop, strength, destination);\n\n if (choiceListScrollTop < destination) {\n continueAnimation = true;\n }\n } else {\n this._scrollUp(choiceListScrollTop, strength, destination);\n\n if (choiceListScrollTop > destination) {\n continueAnimation = true;\n }\n }\n\n if (continueAnimation) {\n requestAnimationFrame(function () {\n _this2._animateScroll(destination, direction);\n });\n }\n };\n\n return List;\n}();\n\n\n// CONCATENATED MODULE: ./src/scripts/components/wrapped-element.js\nfunction wrapped_element_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction wrapped_element_createClass(Constructor, protoProps, staticProps) { if (protoProps) wrapped_element_defineProperties(Constructor.prototype, protoProps); if (staticProps) wrapped_element_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * @typedef {import('../../../types/index').Choices.passedElement} passedElement\n * @typedef {import('../../../types/index').Choices.ClassNames} ClassNames\n */\n\nvar wrapped_element_WrappedElement =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {{\n * element: HTMLInputElement | HTMLSelectElement,\n * classNames: ClassNames,\n * }} args\n */\n function WrappedElement(_ref) {\n var element = _ref.element,\n classNames = _ref.classNames;\n this.element = element;\n this.classNames = classNames;\n\n if (!(element instanceof HTMLInputElement) && !(element instanceof HTMLSelectElement)) {\n throw new TypeError('Invalid element passed');\n }\n\n this.isDisabled = false;\n }\n\n var _proto = WrappedElement.prototype;\n\n _proto.conceal = function conceal() {\n // Hide passed input\n this.element.classList.add(this.classNames.input);\n this.element.hidden = true; // Remove element from tab index\n\n this.element.tabIndex = -1; // Backup original styles if any\n\n var origStyle = this.element.getAttribute('style');\n\n if (origStyle) {\n this.element.setAttribute('data-choice-orig-style', origStyle);\n }\n\n this.element.setAttribute('data-choice', 'active');\n };\n\n _proto.reveal = function reveal() {\n // Reinstate passed element\n this.element.classList.remove(this.classNames.input);\n this.element.hidden = false;\n this.element.removeAttribute('tabindex'); // Recover original styles if any\n\n var origStyle = this.element.getAttribute('data-choice-orig-style');\n\n if (origStyle) {\n this.element.removeAttribute('data-choice-orig-style');\n this.element.setAttribute('style', origStyle);\n } else {\n this.element.removeAttribute('style');\n }\n\n this.element.removeAttribute('data-choice'); // Re-assign values - this is weird, I know\n // @todo Figure out why we need to do this\n\n this.element.value = this.element.value; // eslint-disable-line no-self-assign\n };\n\n _proto.enable = function enable() {\n this.element.removeAttribute('disabled');\n this.element.disabled = false;\n this.isDisabled = false;\n };\n\n _proto.disable = function disable() {\n this.element.setAttribute('disabled', '');\n this.element.disabled = true;\n this.isDisabled = true;\n };\n\n _proto.triggerEvent = function triggerEvent(eventType, data) {\n dispatchEvent(this.element, eventType, data);\n };\n\n wrapped_element_createClass(WrappedElement, [{\n key: \"isActive\",\n get: function get() {\n return this.element.dataset.choice === 'active';\n }\n }, {\n key: \"dir\",\n get: function get() {\n return this.element.dir;\n }\n }, {\n key: \"value\",\n get: function get() {\n return this.element.value;\n },\n set: function set(value) {\n // you must define setter here otherwise it will be readonly property\n this.element.value = value;\n }\n }]);\n\n return WrappedElement;\n}();\n\n\n// CONCATENATED MODULE: ./src/scripts/components/wrapped-input.js\nfunction wrapped_input_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction wrapped_input_createClass(Constructor, protoProps, staticProps) { if (protoProps) wrapped_input_defineProperties(Constructor.prototype, protoProps); if (staticProps) wrapped_input_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n\n/**\n * @typedef {import('../../../types/index').Choices.ClassNames} ClassNames\n * @typedef {import('../../../types/index').Choices.Item} Item\n */\n\nvar WrappedInput =\n/*#__PURE__*/\nfunction (_WrappedElement) {\n _inheritsLoose(WrappedInput, _WrappedElement);\n\n /**\n * @param {{\n * element: HTMLInputElement,\n * classNames: ClassNames,\n * delimiter: string\n * }} args\n */\n function WrappedInput(_ref) {\n var _this;\n\n var element = _ref.element,\n classNames = _ref.classNames,\n delimiter = _ref.delimiter;\n _this = _WrappedElement.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.delimiter = delimiter;\n return _this;\n }\n /**\n * @returns {string}\n */\n\n\n wrapped_input_createClass(WrappedInput, [{\n key: \"value\",\n get: function get() {\n return this.element.value;\n }\n /**\n * @param {Item[]} items\n */\n ,\n set: function set(items) {\n var itemValues = items.map(function (_ref2) {\n var value = _ref2.value;\n return value;\n });\n var joinedValues = itemValues.join(this.delimiter);\n this.element.setAttribute('value', joinedValues);\n this.element.value = joinedValues;\n }\n }]);\n\n return WrappedInput;\n}(wrapped_element_WrappedElement);\n\n\n// CONCATENATED MODULE: ./src/scripts/components/wrapped-select.js\nfunction wrapped_select_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction wrapped_select_createClass(Constructor, protoProps, staticProps) { if (protoProps) wrapped_select_defineProperties(Constructor.prototype, protoProps); if (staticProps) wrapped_select_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction wrapped_select_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n\n/**\n * @typedef {import('../../../types/index').Choices.ClassNames} ClassNames\n * @typedef {import('../../../types/index').Choices.Item} Item\n * @typedef {import('../../../types/index').Choices.Choice} Choice\n */\n\nvar WrappedSelect =\n/*#__PURE__*/\nfunction (_WrappedElement) {\n wrapped_select_inheritsLoose(WrappedSelect, _WrappedElement);\n\n /**\n * @param {{\n * element: HTMLSelectElement,\n * classNames: ClassNames,\n * delimiter: string\n * template: function\n * }} args\n */\n function WrappedSelect(_ref) {\n var _this;\n\n var element = _ref.element,\n classNames = _ref.classNames,\n template = _ref.template;\n _this = _WrappedElement.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.template = template;\n return _this;\n }\n\n var _proto = WrappedSelect.prototype;\n\n /**\n * @param {DocumentFragment} fragment\n */\n _proto.appendDocFragment = function appendDocFragment(fragment) {\n this.element.innerHTML = '';\n this.element.appendChild(fragment);\n };\n\n wrapped_select_createClass(WrappedSelect, [{\n key: \"placeholderOption\",\n get: function get() {\n return this.element.querySelector('option[value=\"\"]') || // Backward compatibility layer for the non-standard placeholder attribute supported in older versions.\n this.element.querySelector('option[placeholder]');\n }\n /**\n * @returns {Element[]}\n */\n\n }, {\n key: \"optionGroups\",\n get: function get() {\n return Array.from(this.element.getElementsByTagName('OPTGROUP'));\n }\n /**\n * @returns {Item[] | Choice[]}\n */\n\n }, {\n key: \"options\",\n get: function get() {\n return Array.from(this.element.options);\n }\n /**\n * @param {Item[] | Choice[]} options\n */\n ,\n set: function set(options) {\n var _this2 = this;\n\n var fragment = document.createDocumentFragment();\n\n var addOptionToFragment = function addOptionToFragment(data) {\n // Create a standard select option\n var option = _this2.template(data); // Append it to fragment\n\n\n fragment.appendChild(option);\n }; // Add each list item to list\n\n\n options.forEach(function (optionData) {\n return addOptionToFragment(optionData);\n });\n this.appendDocFragment(fragment);\n }\n }]);\n\n return WrappedSelect;\n}(wrapped_element_WrappedElement);\n\n\n// CONCATENATED MODULE: ./src/scripts/components/index.js\n\n\n\n\n\n\n\n// CONCATENATED MODULE: ./src/scripts/templates.js\n/**\n * Helpers to create HTML elements used by Choices\n * Can be overridden by providing `callbackOnCreateTemplates` option\n * @typedef {import('../../types/index').Choices.Templates} Templates\n * @typedef {import('../../types/index').Choices.ClassNames} ClassNames\n * @typedef {import('../../types/index').Choices.Options} Options\n * @typedef {import('../../types/index').Choices.Item} Item\n * @typedef {import('../../types/index').Choices.Choice} Choice\n * @typedef {import('../../types/index').Choices.Group} Group\n */\nvar TEMPLATES =\n/** @type {Templates} */\n{\n /**\n * @param {Partial} classNames\n * @param {\"ltr\" | \"rtl\" | \"auto\"} dir\n * @param {boolean} isSelectElement\n * @param {boolean} isSelectOneElement\n * @param {boolean} searchEnabled\n * @param {\"select-one\" | \"select-multiple\" | \"text\"} passedElementType\n */\n containerOuter: function containerOuter(_ref, dir, isSelectElement, isSelectOneElement, searchEnabled, passedElementType) {\n var _containerOuter = _ref.containerOuter;\n var div = Object.assign(document.createElement('div'), {\n className: _containerOuter\n });\n div.dataset.type = passedElementType;\n\n if (dir) {\n div.dir = dir;\n }\n\n if (isSelectOneElement) {\n div.tabIndex = 0;\n }\n\n if (isSelectElement) {\n div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n\n if (searchEnabled) {\n div.setAttribute('aria-autocomplete', 'list');\n }\n }\n\n div.setAttribute('aria-haspopup', 'true');\n div.setAttribute('aria-expanded', 'false');\n return div;\n },\n\n /**\n * @param {Partial} classNames\n */\n containerInner: function containerInner(_ref2) {\n var _containerInner = _ref2.containerInner;\n return Object.assign(document.createElement('div'), {\n className: _containerInner\n });\n },\n\n /**\n * @param {Partial} classNames\n * @param {boolean} isSelectOneElement\n */\n itemList: function itemList(_ref3, isSelectOneElement) {\n var list = _ref3.list,\n listSingle = _ref3.listSingle,\n listItems = _ref3.listItems;\n return Object.assign(document.createElement('div'), {\n className: list + \" \" + (isSelectOneElement ? listSingle : listItems)\n });\n },\n\n /**\n * @param {Partial} classNames\n * @param {string} value\n */\n placeholder: function placeholder(_ref4, value) {\n var _placeholder = _ref4.placeholder;\n return Object.assign(document.createElement('div'), {\n className: _placeholder,\n innerHTML: value\n });\n },\n\n /**\n * @param {Partial} classNames\n * @param {Item} item\n * @param {boolean} removeItemButton\n */\n item: function item(_ref5, _ref6, removeItemButton) {\n var _item = _ref5.item,\n button = _ref5.button,\n highlightedState = _ref5.highlightedState,\n itemSelectable = _ref5.itemSelectable,\n placeholder = _ref5.placeholder;\n var id = _ref6.id,\n value = _ref6.value,\n label = _ref6.label,\n customProperties = _ref6.customProperties,\n active = _ref6.active,\n disabled = _ref6.disabled,\n highlighted = _ref6.highlighted,\n isPlaceholder = _ref6.placeholder;\n var div = Object.assign(document.createElement('div'), {\n className: _item,\n innerHTML: label\n });\n Object.assign(div.dataset, {\n item: '',\n id: id,\n value: value,\n customProperties: customProperties\n });\n\n if (active) {\n div.setAttribute('aria-selected', 'true');\n }\n\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n\n div.classList.add(highlighted ? highlightedState : itemSelectable);\n\n if (removeItemButton) {\n if (disabled) {\n div.classList.remove(itemSelectable);\n }\n\n div.dataset.deletable = '';\n /** @todo This MUST be localizable, not hardcoded! */\n\n var REMOVE_ITEM_TEXT = 'Remove item';\n var removeButton = Object.assign(document.createElement('button'), {\n type: 'button',\n className: button,\n innerHTML: REMOVE_ITEM_TEXT\n });\n removeButton.setAttribute('aria-label', REMOVE_ITEM_TEXT + \": '\" + value + \"'\");\n removeButton.dataset.button = '';\n div.appendChild(removeButton);\n }\n\n return div;\n },\n\n /**\n * @param {Partial} classNames\n * @param {boolean} isSelectOneElement\n */\n choiceList: function choiceList(_ref7, isSelectOneElement) {\n var list = _ref7.list;\n var div = Object.assign(document.createElement('div'), {\n className: list\n });\n\n if (!isSelectOneElement) {\n div.setAttribute('aria-multiselectable', 'true');\n }\n\n div.setAttribute('role', 'listbox');\n return div;\n },\n\n /**\n * @param {Partial} classNames\n * @param {Group} group\n */\n choiceGroup: function choiceGroup(_ref8, _ref9) {\n var group = _ref8.group,\n groupHeading = _ref8.groupHeading,\n itemDisabled = _ref8.itemDisabled;\n var id = _ref9.id,\n value = _ref9.value,\n disabled = _ref9.disabled;\n var div = Object.assign(document.createElement('div'), {\n className: group + \" \" + (disabled ? itemDisabled : '')\n });\n div.setAttribute('role', 'group');\n Object.assign(div.dataset, {\n group: '',\n id: id,\n value: value\n });\n\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n\n div.appendChild(Object.assign(document.createElement('div'), {\n className: groupHeading,\n innerHTML: value\n }));\n return div;\n },\n\n /**\n * @param {Partial} classNames\n * @param {Choice} choice\n * @param {Options['itemSelectText']} selectText\n */\n choice: function choice(_ref10, _ref11, selectText) {\n var item = _ref10.item,\n itemChoice = _ref10.itemChoice,\n itemSelectable = _ref10.itemSelectable,\n selectedState = _ref10.selectedState,\n itemDisabled = _ref10.itemDisabled,\n placeholder = _ref10.placeholder;\n var id = _ref11.id,\n value = _ref11.value,\n label = _ref11.label,\n groupId = _ref11.groupId,\n elementId = _ref11.elementId,\n isDisabled = _ref11.disabled,\n isSelected = _ref11.selected,\n isPlaceholder = _ref11.placeholder;\n var div = Object.assign(document.createElement('div'), {\n id: elementId,\n innerHTML: label,\n className: item + \" \" + itemChoice\n });\n\n if (isSelected) {\n div.classList.add(selectedState);\n }\n\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n\n div.setAttribute('role', groupId > 0 ? 'treeitem' : 'option');\n Object.assign(div.dataset, {\n choice: '',\n id: id,\n value: value,\n selectText: selectText\n });\n\n if (isDisabled) {\n div.classList.add(itemDisabled);\n div.dataset.choiceDisabled = '';\n div.setAttribute('aria-disabled', 'true');\n } else {\n div.classList.add(itemSelectable);\n div.dataset.choiceSelectable = '';\n }\n\n return div;\n },\n\n /**\n * @param {Partial} classNames\n * @param {string} placeholderValue\n */\n input: function input(_ref12, placeholderValue) {\n var _input = _ref12.input,\n inputCloned = _ref12.inputCloned;\n var inp = Object.assign(document.createElement('input'), {\n type: 'text',\n className: _input + \" \" + inputCloned,\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: false\n });\n inp.setAttribute('role', 'textbox');\n inp.setAttribute('aria-autocomplete', 'list');\n inp.setAttribute('aria-label', placeholderValue);\n return inp;\n },\n\n /**\n * @param {Partial} classNames\n */\n dropdown: function dropdown(_ref13) {\n var list = _ref13.list,\n listDropdown = _ref13.listDropdown;\n var div = document.createElement('div');\n div.classList.add(list, listDropdown);\n div.setAttribute('aria-expanded', 'false');\n return div;\n },\n\n /**\n *\n * @param {Partial} classNames\n * @param {string} innerHTML\n * @param {\"no-choices\" | \"no-results\" | \"\"} type\n */\n notice: function notice(_ref14, innerHTML, type) {\n var item = _ref14.item,\n itemChoice = _ref14.itemChoice,\n noResults = _ref14.noResults,\n noChoices = _ref14.noChoices;\n\n if (type === void 0) {\n type = '';\n }\n\n var classes = [item, itemChoice];\n\n if (type === 'no-choices') {\n classes.push(noChoices);\n } else if (type === 'no-results') {\n classes.push(noResults);\n }\n\n return Object.assign(document.createElement('div'), {\n innerHTML: innerHTML,\n className: classes.join(' ')\n });\n },\n\n /**\n * @param {Item} option\n */\n option: function option(_ref15) {\n var label = _ref15.label,\n value = _ref15.value,\n customProperties = _ref15.customProperties,\n active = _ref15.active,\n disabled = _ref15.disabled;\n var opt = new Option(label, value, false, active);\n\n if (customProperties) {\n opt.dataset.customProperties = customProperties;\n }\n\n opt.disabled = disabled;\n return opt;\n }\n};\n/* harmony default export */ var templates = (TEMPLATES);\n// CONCATENATED MODULE: ./src/scripts/actions/choices.js\n/**\n * @typedef {import('redux').Action} Action\n * @typedef {import('../../../types/index').Choices.Choice} Choice\n */\n\n/**\n * @argument {Choice} choice\n * @returns {Action & Choice}\n */\n\nvar choices_addChoice = function addChoice(_ref) {\n var value = _ref.value,\n label = _ref.label,\n id = _ref.id,\n groupId = _ref.groupId,\n disabled = _ref.disabled,\n elementId = _ref.elementId,\n customProperties = _ref.customProperties,\n placeholder = _ref.placeholder,\n keyCode = _ref.keyCode;\n return {\n type: ACTION_TYPES.ADD_CHOICE,\n value: value,\n label: label,\n id: id,\n groupId: groupId,\n disabled: disabled,\n elementId: elementId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\n/**\n * @argument {Choice[]} results\n * @returns {Action & { results: Choice[] }}\n */\n\nvar choices_filterChoices = function filterChoices(results) {\n return {\n type: ACTION_TYPES.FILTER_CHOICES,\n results: results\n };\n};\n/**\n * @argument {boolean} active\n * @returns {Action & { active: boolean }}\n */\n\nvar choices_activateChoices = function activateChoices(active) {\n if (active === void 0) {\n active = true;\n }\n\n return {\n type: ACTION_TYPES.ACTIVATE_CHOICES,\n active: active\n };\n};\n/**\n * @returns {Action}\n */\n\nvar choices_clearChoices = function clearChoices() {\n return {\n type: ACTION_TYPES.CLEAR_CHOICES\n };\n};\n// CONCATENATED MODULE: ./src/scripts/actions/items.js\n\n/**\n * @typedef {import('redux').Action} Action\n * @typedef {import('../../../types/index').Choices.Item} Item\n */\n\n/**\n * @param {Item} item\n * @returns {Action & Item}\n */\n\nvar items_addItem = function addItem(_ref) {\n var value = _ref.value,\n label = _ref.label,\n id = _ref.id,\n choiceId = _ref.choiceId,\n groupId = _ref.groupId,\n customProperties = _ref.customProperties,\n placeholder = _ref.placeholder,\n keyCode = _ref.keyCode;\n return {\n type: ACTION_TYPES.ADD_ITEM,\n value: value,\n label: label,\n id: id,\n choiceId: choiceId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\n/**\n * @param {string} id\n * @param {string} choiceId\n * @returns {Action & { id: string, choiceId: string }}\n */\n\nvar items_removeItem = function removeItem(id, choiceId) {\n return {\n type: ACTION_TYPES.REMOVE_ITEM,\n id: id,\n choiceId: choiceId\n };\n};\n/**\n * @param {string} id\n * @param {boolean} highlighted\n * @returns {Action & { id: string, highlighted: boolean }}\n */\n\nvar items_highlightItem = function highlightItem(id, highlighted) {\n return {\n type: ACTION_TYPES.HIGHLIGHT_ITEM,\n id: id,\n highlighted: highlighted\n };\n};\n// CONCATENATED MODULE: ./src/scripts/actions/groups.js\n\n/**\n * @typedef {import('redux').Action} Action\n * @typedef {import('../../../types/index').Choices.Group} Group\n */\n\n/**\n * @param {Group} group\n * @returns {Action & Group}\n */\n\nvar groups_addGroup = function addGroup(_ref) {\n var value = _ref.value,\n id = _ref.id,\n active = _ref.active,\n disabled = _ref.disabled;\n return {\n type: ACTION_TYPES.ADD_GROUP,\n value: value,\n id: id,\n active: active,\n disabled: disabled\n };\n};\n// CONCATENATED MODULE: ./src/scripts/actions/misc.js\n/**\n * @typedef {import('redux').Action} Action\n */\n\n/**\n * @returns {Action}\n */\nvar clearAll = function clearAll() {\n return {\n type: 'CLEAR_ALL'\n };\n};\n/**\n * @param {any} state\n * @returns {Action & { state: object }}\n */\n\nvar resetTo = function resetTo(state) {\n return {\n type: 'RESET_TO',\n state: state\n };\n};\n/**\n * @param {boolean} isLoading\n * @returns {Action & { isLoading: boolean }}\n */\n\nvar setIsLoading = function setIsLoading(isLoading) {\n return {\n type: 'SET_IS_LOADING',\n isLoading: isLoading\n };\n};\n// CONCATENATED MODULE: ./src/scripts/choices.js\nfunction choices_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction choices_createClass(Constructor, protoProps, staticProps) { if (protoProps) choices_defineProperties(Constructor.prototype, protoProps); if (staticProps) choices_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\n/** @see {@link http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c} */\n\nvar IS_IE11 = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;\n/**\n * @typedef {import('../../types/index').Choices.Choice} Choice\n * @typedef {import('../../types/index').Choices.Item} Item\n * @typedef {import('../../types/index').Choices.Group} Group\n * @typedef {import('../../types/index').Choices.Options} Options\n */\n\n/** @type {Partial} */\n\nvar USER_DEFAULTS = {};\n/**\n * Choices\n * @author Josh Johnson\n */\n\nvar choices_Choices =\n/*#__PURE__*/\nfunction () {\n choices_createClass(Choices, null, [{\n key: \"defaults\",\n get: function get() {\n return Object.preventExtensions({\n get options() {\n return USER_DEFAULTS;\n },\n\n get templates() {\n return TEMPLATES;\n }\n\n });\n }\n /**\n * @param {string | HTMLInputElement | HTMLSelectElement} element\n * @param {Partial} userConfig\n */\n\n }]);\n\n function Choices(element, userConfig) {\n var _this = this;\n\n if (element === void 0) {\n element = '[data-choice]';\n }\n\n if (userConfig === void 0) {\n userConfig = {};\n }\n\n /** @type {Partial} */\n this.config = cjs_default.a.all([DEFAULT_CONFIG, Choices.defaults.options, userConfig], // When merging array configs, replace with a copy of the userConfig array,\n // instead of concatenating with the default array\n {\n arrayMerge: function arrayMerge(_, sourceArray) {\n return [].concat(sourceArray);\n }\n });\n var invalidConfigOptions = diff(this.config, DEFAULT_CONFIG);\n\n if (invalidConfigOptions.length) {\n console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));\n }\n\n var passedElement = typeof element === 'string' ? document.querySelector(element) : element;\n\n if (!(passedElement instanceof HTMLInputElement || passedElement instanceof HTMLSelectElement)) {\n throw TypeError('Expected one of the following types text|select-one|select-multiple');\n }\n\n this._isTextElement = passedElement.type === TEXT_TYPE;\n this._isSelectOneElement = passedElement.type === SELECT_ONE_TYPE;\n this._isSelectMultipleElement = passedElement.type === SELECT_MULTIPLE_TYPE;\n this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;\n this.config.searchEnabled = this._isSelectMultipleElement || this.config.searchEnabled;\n\n if (!['auto', 'always'].includes(this.config.renderSelectedChoices)) {\n this.config.renderSelectedChoices = 'auto';\n }\n\n if (userConfig.addItemFilter && typeof userConfig.addItemFilter !== 'function') {\n var re = userConfig.addItemFilter instanceof RegExp ? userConfig.addItemFilter : new RegExp(userConfig.addItemFilter);\n this.config.addItemFilter = re.test.bind(re);\n }\n\n if (this._isTextElement) {\n this.passedElement = new WrappedInput({\n element: passedElement,\n classNames: this.config.classNames,\n delimiter: this.config.delimiter\n });\n } else {\n this.passedElement = new WrappedSelect({\n element: passedElement,\n classNames: this.config.classNames,\n template: function template(data) {\n return _this._templates.option(data);\n }\n });\n }\n\n this.initialised = false;\n this._store = new store_Store();\n this._initialState = {};\n this._currentState = {};\n this._prevState = {};\n this._currentValue = '';\n this._canSearch = this.config.searchEnabled;\n this._isScrollingOnIe = false;\n this._highlightPosition = 0;\n this._wasTap = true;\n this._placeholderValue = this._generatePlaceholderValue();\n this._baseId = generateId(this.passedElement.element, 'choices-');\n /**\n * setting direction in cases where it's explicitly set on passedElement\n * or when calculated direction is different from the document\n * @type {HTMLElement['dir']}\n */\n\n this._direction = this.passedElement.dir;\n\n if (!this._direction) {\n var _window$getComputedSt = window.getComputedStyle(this.passedElement.element),\n elementDirection = _window$getComputedSt.direction;\n\n var _window$getComputedSt2 = window.getComputedStyle(document.documentElement),\n documentDirection = _window$getComputedSt2.direction;\n\n if (elementDirection !== documentDirection) {\n this._direction = elementDirection;\n }\n }\n\n this._idNames = {\n itemChoice: 'item-choice'\n }; // Assign preset groups from passed element\n\n this._presetGroups = this.passedElement.optionGroups; // Assign preset options from passed element\n\n this._presetOptions = this.passedElement.options; // Assign preset choices from passed object\n\n this._presetChoices = this.config.choices; // Assign preset items from passed object first\n\n this._presetItems = this.config.items; // Add any values passed from attribute\n\n if (this.passedElement.value) {\n this._presetItems = this._presetItems.concat(this.passedElement.value.split(this.config.delimiter));\n } // Create array of choices from option elements\n\n\n if (this.passedElement.options) {\n this.passedElement.options.forEach(function (o) {\n _this._presetChoices.push({\n value: o.value,\n label: o.innerHTML,\n selected: o.selected,\n disabled: o.disabled || o.parentNode.disabled,\n placeholder: o.value === '' || o.hasAttribute('placeholder'),\n customProperties: o.getAttribute('data-custom-properties')\n });\n });\n }\n\n this._render = this._render.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._onKeyUp = this._onKeyUp.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onTouchMove = this._onTouchMove.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseOver = this._onMouseOver.bind(this);\n this._onFormReset = this._onFormReset.bind(this);\n this._onAKey = this._onAKey.bind(this);\n this._onEnterKey = this._onEnterKey.bind(this);\n this._onEscapeKey = this._onEscapeKey.bind(this);\n this._onDirectionKey = this._onDirectionKey.bind(this);\n this._onDeleteKey = this._onDeleteKey.bind(this); // If element has already been initialised with Choices, fail silently\n\n if (this.passedElement.isActive) {\n if (!this.config.silent) {\n console.warn('Trying to initialise Choices on element already initialised');\n }\n\n this.initialised = true;\n return;\n } // Let's go\n\n\n this.init();\n }\n\n var _proto = Choices.prototype;\n\n _proto.init = function init() {\n if (this.initialised) {\n return;\n }\n\n this._createTemplates();\n\n this._createElements();\n\n this._createStructure(); // Set initial state (We need to clone the state because some reducers\n // modify the inner objects properties in the state) 🤢\n\n\n this._initialState = cloneObject(this._store.state);\n\n this._store.subscribe(this._render);\n\n this._render();\n\n this._addEventListeners();\n\n var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');\n\n if (shouldDisable) {\n this.disable();\n }\n\n this.initialised = true;\n var callbackOnInit = this.config.callbackOnInit; // Run callback if it is a function\n\n if (callbackOnInit && typeof callbackOnInit === 'function') {\n callbackOnInit.call(this);\n }\n };\n\n _proto.destroy = function destroy() {\n if (!this.initialised) {\n return;\n }\n\n this._removeEventListeners();\n\n this.passedElement.reveal();\n this.containerOuter.unwrap(this.passedElement.element);\n this.clearStore();\n\n if (this._isSelectElement) {\n this.passedElement.options = this._presetOptions;\n }\n\n this._templates = null;\n this.initialised = false;\n };\n\n _proto.enable = function enable() {\n if (this.passedElement.isDisabled) {\n this.passedElement.enable();\n }\n\n if (this.containerOuter.isDisabled) {\n this._addEventListeners();\n\n this.input.enable();\n this.containerOuter.enable();\n }\n\n return this;\n };\n\n _proto.disable = function disable() {\n if (!this.passedElement.isDisabled) {\n this.passedElement.disable();\n }\n\n if (!this.containerOuter.isDisabled) {\n this._removeEventListeners();\n\n this.input.disable();\n this.containerOuter.disable();\n }\n\n return this;\n };\n\n _proto.highlightItem = function highlightItem(item, runEvent) {\n if (runEvent === void 0) {\n runEvent = true;\n }\n\n if (!item) {\n return this;\n }\n\n var id = item.id,\n _item$groupId = item.groupId,\n groupId = _item$groupId === void 0 ? -1 : _item$groupId,\n _item$value = item.value,\n value = _item$value === void 0 ? '' : _item$value,\n _item$label = item.label,\n label = _item$label === void 0 ? '' : _item$label;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n this._store.dispatch(items_highlightItem(id, true));\n\n if (runEvent) {\n this.passedElement.triggerEvent(EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n }\n\n return this;\n };\n\n _proto.unhighlightItem = function unhighlightItem(item) {\n if (!item) {\n return this;\n }\n\n var id = item.id,\n _item$groupId2 = item.groupId,\n groupId = _item$groupId2 === void 0 ? -1 : _item$groupId2,\n _item$value2 = item.value,\n value = _item$value2 === void 0 ? '' : _item$value2,\n _item$label2 = item.label,\n label = _item$label2 === void 0 ? '' : _item$label2;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n this._store.dispatch(items_highlightItem(id, false));\n\n this.passedElement.triggerEvent(EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n return this;\n };\n\n _proto.highlightAll = function highlightAll() {\n var _this2 = this;\n\n this._store.items.forEach(function (item) {\n return _this2.highlightItem(item);\n });\n\n return this;\n };\n\n _proto.unhighlightAll = function unhighlightAll() {\n var _this3 = this;\n\n this._store.items.forEach(function (item) {\n return _this3.unhighlightItem(item);\n });\n\n return this;\n };\n\n _proto.removeActiveItemsByValue = function removeActiveItemsByValue(value) {\n var _this4 = this;\n\n this._store.activeItems.filter(function (item) {\n return item.value === value;\n }).forEach(function (item) {\n return _this4._removeItem(item);\n });\n\n return this;\n };\n\n _proto.removeActiveItems = function removeActiveItems(excludedId) {\n var _this5 = this;\n\n this._store.activeItems.filter(function (_ref) {\n var id = _ref.id;\n return id !== excludedId;\n }).forEach(function (item) {\n return _this5._removeItem(item);\n });\n\n return this;\n };\n\n _proto.removeHighlightedItems = function removeHighlightedItems(runEvent) {\n var _this6 = this;\n\n if (runEvent === void 0) {\n runEvent = false;\n }\n\n this._store.highlightedActiveItems.forEach(function (item) {\n _this6._removeItem(item); // If this action was performed by the user\n // trigger the event\n\n\n if (runEvent) {\n _this6._triggerChange(item.value);\n }\n });\n\n return this;\n };\n\n _proto.showDropdown = function showDropdown(preventInputFocus) {\n var _this7 = this;\n\n if (this.dropdown.isActive) {\n return this;\n }\n\n requestAnimationFrame(function () {\n _this7.dropdown.show();\n\n _this7.containerOuter.open(_this7.dropdown.distanceFromTopWindow);\n\n if (!preventInputFocus && _this7._canSearch) {\n _this7.input.focus();\n }\n\n _this7.passedElement.triggerEvent(EVENTS.showDropdown, {});\n });\n return this;\n };\n\n _proto.hideDropdown = function hideDropdown(preventInputBlur) {\n var _this8 = this;\n\n if (!this.dropdown.isActive) {\n return this;\n }\n\n requestAnimationFrame(function () {\n _this8.dropdown.hide();\n\n _this8.containerOuter.close();\n\n if (!preventInputBlur && _this8._canSearch) {\n _this8.input.removeActiveDescendant();\n\n _this8.input.blur();\n }\n\n _this8.passedElement.triggerEvent(EVENTS.hideDropdown, {});\n });\n return this;\n };\n\n _proto.getValue = function getValue(valueOnly) {\n if (valueOnly === void 0) {\n valueOnly = false;\n }\n\n var values = this._store.activeItems.reduce(function (selectedItems, item) {\n var itemValue = valueOnly ? item.value : item;\n selectedItems.push(itemValue);\n return selectedItems;\n }, []);\n\n return this._isSelectOneElement ? values[0] : values;\n }\n /**\n * @param {string[] | import('../../types/index').Choices.Item[]} items\n */\n ;\n\n _proto.setValue = function setValue(items) {\n var _this9 = this;\n\n if (!this.initialised) {\n return this;\n }\n\n items.forEach(function (value) {\n return _this9._setChoiceOrItem(value);\n });\n return this;\n };\n\n _proto.setChoiceByValue = function setChoiceByValue(value) {\n var _this10 = this;\n\n if (!this.initialised || this._isTextElement) {\n return this;\n } // If only one value has been passed, convert to array\n\n\n var choiceValue = Array.isArray(value) ? value : [value]; // Loop through each value and\n\n choiceValue.forEach(function (val) {\n return _this10._findAndSelectChoiceByValue(val);\n });\n return this;\n }\n /**\n * Set choices of select input via an array of objects (or function that returns array of object or promise of it),\n * a value field name and a label field name.\n * This behaves the same as passing items via the choices option but can be called after initialising Choices.\n * This can also be used to add groups of choices (see example 2); Optionally pass a true `replaceChoices` value to remove any existing choices.\n * Optionally pass a `customProperties` object to add additional data to your choices (useful when searching/filtering etc).\n *\n * **Input types affected:** select-one, select-multiple\n *\n * @template {Choice[] | ((instance: Choices) => object[] | Promise)} T\n * @param {T} [choicesArrayOrFetcher]\n * @param {string} [value = 'value'] - name of `value` field\n * @param {string} [label = 'label'] - name of 'label' field\n * @param {boolean} [replaceChoices = false] - whether to replace of add choices\n * @returns {this | Promise}\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([\n * {value: 'One', label: 'Label One', disabled: true},\n * {value: 'Two', label: 'Label Two', selected: true},\n * {value: 'Three', label: 'Label Three'},\n * ], 'value', 'label', false);\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices(async () => {\n * try {\n * const items = await fetch('/items');\n * return items.json()\n * } catch(err) {\n * console.error(err)\n * }\n * });\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([{\n * label: 'Group one',\n * id: 1,\n * disabled: false,\n * choices: [\n * {value: 'Child One', label: 'Child One', selected: true},\n * {value: 'Child Two', label: 'Child Two', disabled: true},\n * {value: 'Child Three', label: 'Child Three'},\n * ]\n * },\n * {\n * label: 'Group two',\n * id: 2,\n * disabled: false,\n * choices: [\n * {value: 'Child Four', label: 'Child Four', disabled: true},\n * {value: 'Child Five', label: 'Child Five'},\n * {value: 'Child Six', label: 'Child Six', customProperties: {\n * description: 'Custom description about child six',\n * random: 'Another random custom property'\n * }},\n * ]\n * }], 'value', 'label', false);\n * ```\n */\n ;\n\n _proto.setChoices = function setChoices(choicesArrayOrFetcher, value, label, replaceChoices) {\n var _this11 = this;\n\n if (choicesArrayOrFetcher === void 0) {\n choicesArrayOrFetcher = [];\n }\n\n if (value === void 0) {\n value = 'value';\n }\n\n if (label === void 0) {\n label = 'label';\n }\n\n if (replaceChoices === void 0) {\n replaceChoices = false;\n }\n\n if (!this.initialised) {\n throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");\n }\n\n if (!this._isSelectElement) {\n throw new TypeError(\"setChoices can't be used with INPUT based Choices\");\n }\n\n if (typeof value !== 'string' || !value) {\n throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");\n } // Clear choices if needed\n\n\n if (replaceChoices) {\n this.clearChoices();\n }\n\n if (typeof choicesArrayOrFetcher === 'function') {\n // it's a choices fetcher function\n var fetcher = choicesArrayOrFetcher(this);\n\n if (typeof Promise === 'function' && fetcher instanceof Promise) {\n // that's a promise\n // eslint-disable-next-line compat/compat\n return new Promise(function (resolve) {\n return requestAnimationFrame(resolve);\n }).then(function () {\n return _this11._handleLoadingState(true);\n }).then(function () {\n return fetcher;\n }).then(function (data) {\n return _this11.setChoices(data, value, label, replaceChoices);\n }).catch(function (err) {\n if (!_this11.config.silent) {\n console.error(err);\n }\n }).then(function () {\n return _this11._handleLoadingState(false);\n }).then(function () {\n return _this11;\n });\n } // function returned something else than promise, let's check if it's an array of choices\n\n\n if (!Array.isArray(fetcher)) {\n throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \" + typeof fetcher);\n } // recursion with results, it's sync and choices were cleared already\n\n\n return this.setChoices(fetcher, value, label, false);\n }\n\n if (!Array.isArray(choicesArrayOrFetcher)) {\n throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");\n }\n\n this.containerOuter.removeLoadingState();\n\n this._startLoading();\n\n choicesArrayOrFetcher.forEach(function (groupOrChoice) {\n if (groupOrChoice.choices) {\n _this11._addGroup({\n id: parseInt(groupOrChoice.id, 10) || null,\n group: groupOrChoice,\n valueKey: value,\n labelKey: label\n });\n } else {\n _this11._addChoice({\n value: groupOrChoice[value],\n label: groupOrChoice[label],\n isSelected: groupOrChoice.selected,\n isDisabled: groupOrChoice.disabled,\n customProperties: groupOrChoice.customProperties,\n placeholder: groupOrChoice.placeholder\n });\n }\n });\n\n this._stopLoading();\n\n return this;\n };\n\n _proto.clearChoices = function clearChoices() {\n this._store.dispatch(choices_clearChoices());\n\n return this;\n };\n\n _proto.clearStore = function clearStore() {\n this._store.dispatch(clearAll());\n\n return this;\n };\n\n _proto.clearInput = function clearInput() {\n var shouldSetInputWidth = !this._isSelectOneElement;\n this.input.clear(shouldSetInputWidth);\n\n if (!this._isTextElement && this._canSearch) {\n this._isSearching = false;\n\n this._store.dispatch(choices_activateChoices(true));\n }\n\n return this;\n };\n\n _proto._render = function _render() {\n if (this._store.isLoading()) {\n return;\n }\n\n this._currentState = this._store.state;\n var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;\n var shouldRenderChoices = this._isSelectElement;\n var shouldRenderItems = this._currentState.items !== this._prevState.items;\n\n if (!stateChanged) {\n return;\n }\n\n if (shouldRenderChoices) {\n this._renderChoices();\n }\n\n if (shouldRenderItems) {\n this._renderItems();\n }\n\n this._prevState = this._currentState;\n };\n\n _proto._renderChoices = function _renderChoices() {\n var _this12 = this;\n\n var _this$_store = this._store,\n activeGroups = _this$_store.activeGroups,\n activeChoices = _this$_store.activeChoices;\n var choiceListFragment = document.createDocumentFragment();\n this.choiceList.clear();\n\n if (this.config.resetScrollPosition) {\n requestAnimationFrame(function () {\n return _this12.choiceList.scrollToTop();\n });\n } // If we have grouped options\n\n\n if (activeGroups.length >= 1 && !this._isSearching) {\n // If we have a placeholder choice along with groups\n var activePlaceholders = activeChoices.filter(function (activeChoice) {\n return activeChoice.placeholder === true && activeChoice.groupId === -1;\n });\n\n if (activePlaceholders.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);\n }\n\n choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);\n } else if (activeChoices.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);\n } // If we have choices to show\n\n\n if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {\n var activeItems = this._store.activeItems;\n\n var canAddItem = this._canAddItem(activeItems, this.input.value); // ...and we can select them\n\n\n if (canAddItem.response) {\n // ...append them and highlight the first choice\n this.choiceList.append(choiceListFragment);\n\n this._highlightChoice();\n } else {\n // ...otherwise show a notice\n this.choiceList.append(this._getTemplate('notice', canAddItem.notice));\n }\n } else {\n // Otherwise show a notice\n var dropdownItem;\n var notice;\n\n if (this._isSearching) {\n notice = typeof this.config.noResultsText === 'function' ? this.config.noResultsText() : this.config.noResultsText;\n dropdownItem = this._getTemplate('notice', notice, 'no-results');\n } else {\n notice = typeof this.config.noChoicesText === 'function' ? this.config.noChoicesText() : this.config.noChoicesText;\n dropdownItem = this._getTemplate('notice', notice, 'no-choices');\n }\n\n this.choiceList.append(dropdownItem);\n }\n };\n\n _proto._renderItems = function _renderItems() {\n var activeItems = this._store.activeItems || [];\n this.itemList.clear(); // Create a fragment to store our list items\n // (so we don't have to update the DOM for each item)\n\n var itemListFragment = this._createItemsFragment(activeItems); // If we have items to add, append them\n\n\n if (itemListFragment.childNodes) {\n this.itemList.append(itemListFragment);\n }\n };\n\n _proto._createGroupsFragment = function _createGroupsFragment(groups, choices, fragment) {\n var _this13 = this;\n\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n\n var getGroupChoices = function getGroupChoices(group) {\n return choices.filter(function (choice) {\n if (_this13._isSelectOneElement) {\n return choice.groupId === group.id;\n }\n\n return choice.groupId === group.id && (_this13.config.renderSelectedChoices === 'always' || !choice.selected);\n });\n }; // If sorting is enabled, filter groups\n\n\n if (this.config.shouldSort) {\n groups.sort(this.config.sorter);\n }\n\n groups.forEach(function (group) {\n var groupChoices = getGroupChoices(group);\n\n if (groupChoices.length >= 1) {\n var dropdownGroup = _this13._getTemplate('choiceGroup', group);\n\n fragment.appendChild(dropdownGroup);\n\n _this13._createChoicesFragment(groupChoices, fragment, true);\n }\n });\n return fragment;\n };\n\n _proto._createChoicesFragment = function _createChoicesFragment(choices, fragment, withinGroup) {\n var _this14 = this;\n\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n\n if (withinGroup === void 0) {\n withinGroup = false;\n }\n\n // Create a fragment to store our list items (so we don't have to update the DOM for each item)\n var _this$config = this.config,\n renderSelectedChoices = _this$config.renderSelectedChoices,\n searchResultLimit = _this$config.searchResultLimit,\n renderChoiceLimit = _this$config.renderChoiceLimit;\n var filter = this._isSearching ? sortByScore : this.config.sorter;\n\n var appendChoice = function appendChoice(choice) {\n var shouldRender = renderSelectedChoices === 'auto' ? _this14._isSelectOneElement || !choice.selected : true;\n\n if (shouldRender) {\n var dropdownItem = _this14._getTemplate('choice', choice, _this14.config.itemSelectText);\n\n fragment.appendChild(dropdownItem);\n }\n };\n\n var rendererableChoices = choices;\n\n if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {\n rendererableChoices = choices.filter(function (choice) {\n return !choice.selected;\n });\n } // Split array into placeholders and \"normal\" choices\n\n\n var _rendererableChoices$ = rendererableChoices.reduce(function (acc, choice) {\n if (choice.placeholder) {\n acc.placeholderChoices.push(choice);\n } else {\n acc.normalChoices.push(choice);\n }\n\n return acc;\n }, {\n placeholderChoices: [],\n normalChoices: []\n }),\n placeholderChoices = _rendererableChoices$.placeholderChoices,\n normalChoices = _rendererableChoices$.normalChoices; // If sorting is enabled or the user is searching, filter choices\n\n\n if (this.config.shouldSort || this._isSearching) {\n normalChoices.sort(filter);\n }\n\n var choiceLimit = rendererableChoices.length; // Prepend placeholeder\n\n var sortedChoices = this._isSelectOneElement ? [].concat(placeholderChoices, normalChoices) : normalChoices;\n\n if (this._isSearching) {\n choiceLimit = searchResultLimit;\n } else if (renderChoiceLimit && renderChoiceLimit > 0 && !withinGroup) {\n choiceLimit = renderChoiceLimit;\n } // Add each choice to dropdown within range\n\n\n for (var i = 0; i < choiceLimit; i += 1) {\n if (sortedChoices[i]) {\n appendChoice(sortedChoices[i]);\n }\n }\n\n return fragment;\n };\n\n _proto._createItemsFragment = function _createItemsFragment(items, fragment) {\n var _this15 = this;\n\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n\n // Create fragment to add elements to\n var _this$config2 = this.config,\n shouldSortItems = _this$config2.shouldSortItems,\n sorter = _this$config2.sorter,\n removeItemButton = _this$config2.removeItemButton; // If sorting is enabled, filter items\n\n if (shouldSortItems && !this._isSelectOneElement) {\n items.sort(sorter);\n }\n\n if (this._isTextElement) {\n // Update the value of the hidden input\n this.passedElement.value = items;\n } else {\n // Update the options of the hidden input\n this.passedElement.options = items;\n }\n\n var addItemToFragment = function addItemToFragment(item) {\n // Create new list element\n var listItem = _this15._getTemplate('item', item, removeItemButton); // Append it to list\n\n\n fragment.appendChild(listItem);\n }; // Add each list item to list\n\n\n items.forEach(addItemToFragment);\n return fragment;\n };\n\n _proto._triggerChange = function _triggerChange(value) {\n if (value === undefined || value === null) {\n return;\n }\n\n this.passedElement.triggerEvent(EVENTS.change, {\n value: value\n });\n };\n\n _proto._selectPlaceholderChoice = function _selectPlaceholderChoice() {\n var placeholderChoice = this._store.placeholderChoice;\n\n if (placeholderChoice) {\n this._addItem({\n value: placeholderChoice.value,\n label: placeholderChoice.label,\n choiceId: placeholderChoice.id,\n groupId: placeholderChoice.groupId,\n placeholder: placeholderChoice.placeholder\n });\n\n this._triggerChange(placeholderChoice.value);\n }\n };\n\n _proto._handleButtonAction = function _handleButtonAction(activeItems, element) {\n if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {\n return;\n }\n\n var itemId = element.parentNode.getAttribute('data-id');\n var itemToRemove = activeItems.find(function (item) {\n return item.id === parseInt(itemId, 10);\n }); // Remove item associated with button\n\n this._removeItem(itemToRemove);\n\n this._triggerChange(itemToRemove.value);\n\n if (this._isSelectOneElement) {\n this._selectPlaceholderChoice();\n }\n };\n\n _proto._handleItemAction = function _handleItemAction(activeItems, element, hasShiftKey) {\n var _this16 = this;\n\n if (hasShiftKey === void 0) {\n hasShiftKey = false;\n }\n\n if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {\n return;\n }\n\n var passedId = element.getAttribute('data-id'); // We only want to select one item with a click\n // so we deselect any items that aren't the target\n // unless shift is being pressed\n\n activeItems.forEach(function (item) {\n if (item.id === parseInt(passedId, 10) && !item.highlighted) {\n _this16.highlightItem(item);\n } else if (!hasShiftKey && item.highlighted) {\n _this16.unhighlightItem(item);\n }\n }); // Focus input as without focus, a user cannot do anything with a\n // highlighted item\n\n this.input.focus();\n };\n\n _proto._handleChoiceAction = function _handleChoiceAction(activeItems, element) {\n if (!activeItems || !element) {\n return;\n } // If we are clicking on an option\n\n\n var id = element.dataset.id;\n\n var choice = this._store.getChoiceById(id);\n\n if (!choice) {\n return;\n }\n\n var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : null;\n var hasActiveDropdown = this.dropdown.isActive; // Update choice keyCode\n\n choice.keyCode = passedKeyCode;\n this.passedElement.triggerEvent(EVENTS.choice, {\n choice: choice\n });\n\n if (!choice.selected && !choice.disabled) {\n var canAddItem = this._canAddItem(activeItems, choice.value);\n\n if (canAddItem.response) {\n this._addItem({\n value: choice.value,\n label: choice.label,\n choiceId: choice.id,\n groupId: choice.groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder,\n keyCode: choice.keyCode\n });\n\n this._triggerChange(choice.value);\n }\n }\n\n this.clearInput(); // We want to close the dropdown if we are dealing with a single select box\n\n if (hasActiveDropdown && this._isSelectOneElement) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n\n _proto._handleBackspace = function _handleBackspace(activeItems) {\n if (!this.config.removeItems || !activeItems) {\n return;\n }\n\n var lastItem = activeItems[activeItems.length - 1];\n var hasHighlightedItems = activeItems.some(function (item) {\n return item.highlighted;\n }); // If editing the last item is allowed and there are not other selected items,\n // we can edit the item value. Otherwise if we can remove items, remove all selected items\n\n if (this.config.editItems && !hasHighlightedItems && lastItem) {\n this.input.value = lastItem.value;\n this.input.setWidth();\n\n this._removeItem(lastItem);\n\n this._triggerChange(lastItem.value);\n } else {\n if (!hasHighlightedItems) {\n // Highlight last item if none already highlighted\n this.highlightItem(lastItem, false);\n }\n\n this.removeHighlightedItems(true);\n }\n };\n\n _proto._startLoading = function _startLoading() {\n this._store.dispatch(setIsLoading(true));\n };\n\n _proto._stopLoading = function _stopLoading() {\n this._store.dispatch(setIsLoading(false));\n };\n\n _proto._handleLoadingState = function _handleLoadingState(setLoading) {\n if (setLoading === void 0) {\n setLoading = true;\n }\n\n var placeholderItem = this.itemList.getChild(\".\" + this.config.classNames.placeholder);\n\n if (setLoading) {\n this.disable();\n this.containerOuter.addLoadingState();\n\n if (this._isSelectOneElement) {\n if (!placeholderItem) {\n placeholderItem = this._getTemplate('placeholder', this.config.loadingText);\n this.itemList.append(placeholderItem);\n } else {\n placeholderItem.innerHTML = this.config.loadingText;\n }\n } else {\n this.input.placeholder = this.config.loadingText;\n }\n } else {\n this.enable();\n this.containerOuter.removeLoadingState();\n\n if (this._isSelectOneElement) {\n placeholderItem.innerHTML = this._placeholderValue || '';\n } else {\n this.input.placeholder = this._placeholderValue || '';\n }\n }\n };\n\n _proto._handleSearch = function _handleSearch(value) {\n if (!value || !this.input.isFocussed) {\n return;\n }\n\n var choices = this._store.choices;\n var _this$config3 = this.config,\n searchFloor = _this$config3.searchFloor,\n searchChoices = _this$config3.searchChoices;\n var hasUnactiveChoices = choices.some(function (option) {\n return !option.active;\n }); // Check that we have a value to search and the input was an alphanumeric character\n\n if (value && value.length >= searchFloor) {\n var resultCount = searchChoices ? this._searchChoices(value) : 0; // Trigger search event\n\n this.passedElement.triggerEvent(EVENTS.search, {\n value: value,\n resultCount: resultCount\n });\n } else if (hasUnactiveChoices) {\n // Otherwise reset choices to active\n this._isSearching = false;\n\n this._store.dispatch(choices_activateChoices(true));\n }\n };\n\n _proto._canAddItem = function _canAddItem(activeItems, value) {\n var canAddItem = true;\n var notice = typeof this.config.addItemText === 'function' ? this.config.addItemText(value) : this.config.addItemText;\n\n if (!this._isSelectOneElement) {\n var isDuplicateValue = existsInArray(activeItems, value);\n\n if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {\n // If there is a max entry limit and we have reached that limit\n // don't update\n canAddItem = false;\n notice = typeof this.config.maxItemText === 'function' ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;\n }\n\n if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {\n canAddItem = false;\n notice = typeof this.config.uniqueItemText === 'function' ? this.config.uniqueItemText(value) : this.config.uniqueItemText;\n }\n\n if (this._isTextElement && this.config.addItems && canAddItem && typeof this.config.addItemFilter === 'function' && !this.config.addItemFilter(value)) {\n canAddItem = false;\n notice = typeof this.config.customAddItemText === 'function' ? this.config.customAddItemText(value) : this.config.customAddItemText;\n }\n }\n\n return {\n response: canAddItem,\n notice: notice\n };\n };\n\n _proto._searchChoices = function _searchChoices(value) {\n var newValue = typeof value === 'string' ? value.trim() : value;\n var currentValue = typeof this._currentValue === 'string' ? this._currentValue.trim() : this._currentValue;\n\n if (newValue.length < 1 && newValue === currentValue + \" \") {\n return 0;\n } // If new value matches the desired length and is not the same as the current value with a space\n\n\n var haystack = this._store.searchableChoices;\n var needle = newValue;\n var keys = [].concat(this.config.searchFields);\n var options = Object.assign(this.config.fuseOptions, {\n keys: keys\n });\n var fuse = new fuse_default.a(haystack, options);\n var results = fuse.search(needle);\n this._currentValue = newValue;\n this._highlightPosition = 0;\n this._isSearching = true;\n\n this._store.dispatch(choices_filterChoices(results));\n\n return results.length;\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _document = document,\n documentElement = _document.documentElement; // capture events - can cancel event processing or propagation\n\n documentElement.addEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.addEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.addEventListener('mousedown', this._onMouseDown, true); // passive events - doesn't call `preventDefault` or `stopPropagation`\n\n documentElement.addEventListener('click', this._onClick, {\n passive: true\n });\n documentElement.addEventListener('touchmove', this._onTouchMove, {\n passive: true\n });\n this.dropdown.element.addEventListener('mouseover', this._onMouseOver, {\n passive: true\n });\n\n if (this._isSelectOneElement) {\n this.containerOuter.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.containerOuter.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n }\n\n this.input.element.addEventListener('keyup', this._onKeyUp, {\n passive: true\n });\n this.input.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.input.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n\n if (this.input.element.form) {\n this.input.element.form.addEventListener('reset', this._onFormReset, {\n passive: true\n });\n }\n\n this.input.addEventListeners();\n };\n\n _proto._removeEventListeners = function _removeEventListeners() {\n var _document2 = document,\n documentElement = _document2.documentElement;\n documentElement.removeEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.removeEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.removeEventListener('mousedown', this._onMouseDown, true);\n documentElement.removeEventListener('click', this._onClick);\n documentElement.removeEventListener('touchmove', this._onTouchMove);\n this.dropdown.element.removeEventListener('mouseover', this._onMouseOver);\n\n if (this._isSelectOneElement) {\n this.containerOuter.element.removeEventListener('focus', this._onFocus);\n this.containerOuter.element.removeEventListener('blur', this._onBlur);\n }\n\n this.input.element.removeEventListener('keyup', this._onKeyUp);\n this.input.element.removeEventListener('focus', this._onFocus);\n this.input.element.removeEventListener('blur', this._onBlur);\n\n if (this.input.element.form) {\n this.input.element.form.removeEventListener('reset', this._onFormReset);\n }\n\n this.input.removeEventListeners();\n }\n /**\n * @param {KeyboardEvent} event\n */\n ;\n\n _proto._onKeyDown = function _onKeyDown(event) {\n var _keyDownActions;\n\n var target = event.target,\n keyCode = event.keyCode,\n ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n var activeItems = this._store.activeItems;\n var hasFocusedInput = this.input.isFocussed;\n var hasActiveDropdown = this.dropdown.isActive;\n var hasItems = this.itemList.hasChildren();\n var keyString = String.fromCharCode(keyCode);\n var BACK_KEY = KEY_CODES.BACK_KEY,\n DELETE_KEY = KEY_CODES.DELETE_KEY,\n ENTER_KEY = KEY_CODES.ENTER_KEY,\n A_KEY = KEY_CODES.A_KEY,\n ESC_KEY = KEY_CODES.ESC_KEY,\n UP_KEY = KEY_CODES.UP_KEY,\n DOWN_KEY = KEY_CODES.DOWN_KEY,\n PAGE_UP_KEY = KEY_CODES.PAGE_UP_KEY,\n PAGE_DOWN_KEY = KEY_CODES.PAGE_DOWN_KEY;\n var hasCtrlDownKeyPressed = ctrlKey || metaKey; // If a user is typing and the dropdown is not active\n\n if (!this._isTextElement && /[a-zA-Z0-9-_ ]/.test(keyString)) {\n this.showDropdown();\n } // Map keys to key actions\n\n\n var keyDownActions = (_keyDownActions = {}, _keyDownActions[A_KEY] = this._onAKey, _keyDownActions[ENTER_KEY] = this._onEnterKey, _keyDownActions[ESC_KEY] = this._onEscapeKey, _keyDownActions[UP_KEY] = this._onDirectionKey, _keyDownActions[PAGE_UP_KEY] = this._onDirectionKey, _keyDownActions[DOWN_KEY] = this._onDirectionKey, _keyDownActions[PAGE_DOWN_KEY] = this._onDirectionKey, _keyDownActions[DELETE_KEY] = this._onDeleteKey, _keyDownActions[BACK_KEY] = this._onDeleteKey, _keyDownActions); // If keycode has a function, run it\n\n if (keyDownActions[keyCode]) {\n keyDownActions[keyCode]({\n event: event,\n target: target,\n keyCode: keyCode,\n metaKey: metaKey,\n activeItems: activeItems,\n hasFocusedInput: hasFocusedInput,\n hasActiveDropdown: hasActiveDropdown,\n hasItems: hasItems,\n hasCtrlDownKeyPressed: hasCtrlDownKeyPressed\n });\n }\n };\n\n _proto._onKeyUp = function _onKeyUp(_ref2) {\n var target = _ref2.target,\n keyCode = _ref2.keyCode;\n var value = this.input.value;\n var activeItems = this._store.activeItems;\n\n var canAddItem = this._canAddItem(activeItems, value);\n\n var backKey = KEY_CODES.BACK_KEY,\n deleteKey = KEY_CODES.DELETE_KEY; // We are typing into a text input and have a value, we want to show a dropdown\n // notice. Otherwise hide the dropdown\n\n if (this._isTextElement) {\n var canShowDropdownNotice = canAddItem.notice && value;\n\n if (canShowDropdownNotice) {\n var dropdownItem = this._getTemplate('notice', canAddItem.notice);\n\n this.dropdown.element.innerHTML = dropdownItem.outerHTML;\n this.showDropdown(true);\n } else {\n this.hideDropdown(true);\n }\n } else {\n var userHasRemovedValue = (keyCode === backKey || keyCode === deleteKey) && !target.value;\n var canReactivateChoices = !this._isTextElement && this._isSearching;\n var canSearch = this._canSearch && canAddItem.response;\n\n if (userHasRemovedValue && canReactivateChoices) {\n this._isSearching = false;\n\n this._store.dispatch(choices_activateChoices(true));\n } else if (canSearch) {\n this._handleSearch(this.input.value);\n }\n }\n\n this._canSearch = this.config.searchEnabled;\n };\n\n _proto._onAKey = function _onAKey(_ref3) {\n var hasItems = _ref3.hasItems,\n hasCtrlDownKeyPressed = _ref3.hasCtrlDownKeyPressed;\n\n // If CTRL + A or CMD + A have been pressed and there are items to select\n if (hasCtrlDownKeyPressed && hasItems) {\n this._canSearch = false;\n var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;\n\n if (shouldHightlightAll) {\n this.highlightAll();\n }\n }\n };\n\n _proto._onEnterKey = function _onEnterKey(_ref4) {\n var event = _ref4.event,\n target = _ref4.target,\n activeItems = _ref4.activeItems,\n hasActiveDropdown = _ref4.hasActiveDropdown;\n var enterKey = KEY_CODES.ENTER_KEY;\n var targetWasButton = target.hasAttribute('data-button');\n\n if (this._isTextElement && target.value) {\n var value = this.input.value;\n\n var canAddItem = this._canAddItem(activeItems, value);\n\n if (canAddItem.response) {\n this.hideDropdown(true);\n\n this._addItem({\n value: value\n });\n\n this._triggerChange(value);\n\n this.clearInput();\n }\n }\n\n if (targetWasButton) {\n this._handleButtonAction(activeItems, target);\n\n event.preventDefault();\n }\n\n if (hasActiveDropdown) {\n var highlightedChoice = this.dropdown.getChild(\".\" + this.config.classNames.highlightedState);\n\n if (highlightedChoice) {\n // add enter keyCode value\n if (activeItems[0]) {\n activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign\n }\n\n this._handleChoiceAction(activeItems, highlightedChoice);\n }\n\n event.preventDefault();\n } else if (this._isSelectOneElement) {\n this.showDropdown();\n event.preventDefault();\n }\n };\n\n _proto._onEscapeKey = function _onEscapeKey(_ref5) {\n var hasActiveDropdown = _ref5.hasActiveDropdown;\n\n if (hasActiveDropdown) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n\n _proto._onDirectionKey = function _onDirectionKey(_ref6) {\n var event = _ref6.event,\n hasActiveDropdown = _ref6.hasActiveDropdown,\n keyCode = _ref6.keyCode,\n metaKey = _ref6.metaKey;\n var downKey = KEY_CODES.DOWN_KEY,\n pageUpKey = KEY_CODES.PAGE_UP_KEY,\n pageDownKey = KEY_CODES.PAGE_DOWN_KEY; // If up or down key is pressed, traverse through options\n\n if (hasActiveDropdown || this._isSelectOneElement) {\n this.showDropdown();\n this._canSearch = false;\n var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;\n var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;\n var selectableChoiceIdentifier = '[data-choice-selectable]';\n var nextEl;\n\n if (skipKey) {\n if (directionInt > 0) {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier + \":last-of-type\");\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n } else {\n var currentEl = this.dropdown.element.querySelector(\".\" + this.config.classNames.highlightedState);\n\n if (currentEl) {\n nextEl = getAdjacentEl(currentEl, selectableChoiceIdentifier, directionInt);\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n }\n\n if (nextEl) {\n // We prevent default to stop the cursor moving\n // when pressing the arrow\n if (!isScrolledIntoView(nextEl, this.choiceList.element, directionInt)) {\n this.choiceList.scrollToChildElement(nextEl, directionInt);\n }\n\n this._highlightChoice(nextEl);\n } // Prevent default to maintain cursor position whilst\n // traversing dropdown options\n\n\n event.preventDefault();\n }\n };\n\n _proto._onDeleteKey = function _onDeleteKey(_ref7) {\n var event = _ref7.event,\n target = _ref7.target,\n hasFocusedInput = _ref7.hasFocusedInput,\n activeItems = _ref7.activeItems;\n\n // If backspace or delete key is pressed and the input has no value\n if (hasFocusedInput && !target.value && !this._isSelectOneElement) {\n this._handleBackspace(activeItems);\n\n event.preventDefault();\n }\n };\n\n _proto._onTouchMove = function _onTouchMove() {\n if (this._wasTap) {\n this._wasTap = false;\n }\n };\n\n _proto._onTouchEnd = function _onTouchEnd(event) {\n var _ref8 = event || event.touches[0],\n target = _ref8.target;\n\n var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);\n\n if (touchWasWithinContainer) {\n var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;\n\n if (containerWasExactTarget) {\n if (this._isTextElement) {\n this.input.focus();\n } else if (this._isSelectMultipleElement) {\n this.showDropdown();\n }\n } // Prevents focus event firing\n\n\n event.stopPropagation();\n }\n\n this._wasTap = true;\n }\n /**\n * Handles mousedown event in capture mode for containetOuter.element\n * @param {MouseEvent} event\n */\n ;\n\n _proto._onMouseDown = function _onMouseDown(event) {\n var target = event.target;\n\n if (!(target instanceof HTMLElement)) {\n return;\n } // If we have our mouse down on the scrollbar and are on IE11...\n\n\n if (IS_IE11 && this.choiceList.element.contains(target)) {\n // check if click was on a scrollbar area\n var firstChoice =\n /** @type {HTMLElement} */\n this.choiceList.element.firstElementChild;\n var isOnScrollbar = this._direction === 'ltr' ? event.offsetX >= firstChoice.offsetWidth : event.offsetX < firstChoice.offsetLeft;\n this._isScrollingOnIe = isOnScrollbar;\n }\n\n if (target === this.input.element) {\n return;\n }\n\n var item = target.closest('[data-button],[data-item],[data-choice]');\n\n if (item instanceof HTMLElement) {\n var hasShiftKey = event.shiftKey;\n var activeItems = this._store.activeItems;\n var dataset = item.dataset;\n\n if ('button' in dataset) {\n this._handleButtonAction(activeItems, item);\n } else if ('item' in dataset) {\n this._handleItemAction(activeItems, item, hasShiftKey);\n } else if ('choice' in dataset) {\n this._handleChoiceAction(activeItems, item);\n }\n }\n\n event.preventDefault();\n }\n /**\n * Handles mouseover event over this.dropdown\n * @param {MouseEvent} event\n */\n ;\n\n _proto._onMouseOver = function _onMouseOver(_ref9) {\n var target = _ref9.target;\n\n if (target instanceof HTMLElement && 'choice' in target.dataset) {\n this._highlightChoice(target);\n }\n };\n\n _proto._onClick = function _onClick(_ref10) {\n var target = _ref10.target;\n var clickWasWithinContainer = this.containerOuter.element.contains(target);\n\n if (clickWasWithinContainer) {\n if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {\n if (this._isTextElement) {\n if (document.activeElement !== this.input.element) {\n this.input.focus();\n }\n } else {\n this.showDropdown();\n this.containerOuter.focus();\n }\n } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {\n this.hideDropdown();\n }\n } else {\n var hasHighlightedItems = this._store.highlightedActiveItems.length > 0;\n\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n\n this.containerOuter.removeFocusState();\n this.hideDropdown(true);\n }\n };\n\n _proto._onFocus = function _onFocus(_ref11) {\n var _this17 = this,\n _focusActions;\n\n var target = _ref11.target;\n var focusWasWithinContainer = this.containerOuter.element.contains(target);\n\n if (!focusWasWithinContainer) {\n return;\n }\n\n var focusActions = (_focusActions = {}, _focusActions[TEXT_TYPE] = function () {\n if (target === _this17.input.element) {\n _this17.containerOuter.addFocusState();\n }\n }, _focusActions[SELECT_ONE_TYPE] = function () {\n _this17.containerOuter.addFocusState();\n\n if (target === _this17.input.element) {\n _this17.showDropdown(true);\n }\n }, _focusActions[SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this17.input.element) {\n _this17.showDropdown(true); // If element is a select box, the focused element is the container and the dropdown\n // isn't already open, focus and show dropdown\n\n\n _this17.containerOuter.addFocusState();\n }\n }, _focusActions);\n focusActions[this.passedElement.element.type]();\n };\n\n _proto._onBlur = function _onBlur(_ref12) {\n var _this18 = this;\n\n var target = _ref12.target;\n var blurWasWithinContainer = this.containerOuter.element.contains(target);\n\n if (blurWasWithinContainer && !this._isScrollingOnIe) {\n var _blurActions;\n\n var activeItems = this._store.activeItems;\n var hasHighlightedItems = activeItems.some(function (item) {\n return item.highlighted;\n });\n var blurActions = (_blurActions = {}, _blurActions[TEXT_TYPE] = function () {\n if (target === _this18.input.element) {\n _this18.containerOuter.removeFocusState();\n\n if (hasHighlightedItems) {\n _this18.unhighlightAll();\n }\n\n _this18.hideDropdown(true);\n }\n }, _blurActions[SELECT_ONE_TYPE] = function () {\n _this18.containerOuter.removeFocusState();\n\n if (target === _this18.input.element || target === _this18.containerOuter.element && !_this18._canSearch) {\n _this18.hideDropdown(true);\n }\n }, _blurActions[SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this18.input.element) {\n _this18.containerOuter.removeFocusState();\n\n _this18.hideDropdown(true);\n\n if (hasHighlightedItems) {\n _this18.unhighlightAll();\n }\n }\n }, _blurActions);\n blurActions[this.passedElement.element.type]();\n } else {\n // On IE11, clicking the scollbar blurs our input and thus\n // closes the dropdown. To stop this, we refocus our input\n // if we know we are on IE *and* are scrolling.\n this._isScrollingOnIe = false;\n this.input.element.focus();\n }\n };\n\n _proto._onFormReset = function _onFormReset() {\n this._store.dispatch(resetTo(this._initialState));\n };\n\n _proto._highlightChoice = function _highlightChoice(el) {\n var _this19 = this;\n\n if (el === void 0) {\n el = null;\n }\n\n var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));\n\n if (!choices.length) {\n return;\n }\n\n var passedEl = el;\n var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(\".\" + this.config.classNames.highlightedState)); // Remove any highlighted choices\n\n highlightedChoices.forEach(function (choice) {\n choice.classList.remove(_this19.config.classNames.highlightedState);\n choice.setAttribute('aria-selected', 'false');\n });\n\n if (passedEl) {\n this._highlightPosition = choices.indexOf(passedEl);\n } else {\n // Highlight choice based on last known highlight location\n if (choices.length > this._highlightPosition) {\n // If we have an option to highlight\n passedEl = choices[this._highlightPosition];\n } else {\n // Otherwise highlight the option before\n passedEl = choices[choices.length - 1];\n }\n\n if (!passedEl) {\n passedEl = choices[0];\n }\n }\n\n passedEl.classList.add(this.config.classNames.highlightedState);\n passedEl.setAttribute('aria-selected', 'true');\n this.passedElement.triggerEvent(EVENTS.highlightChoice, {\n el: passedEl\n });\n\n if (this.dropdown.isActive) {\n // IE11 ignores aria-label and blocks virtual keyboard\n // if aria-activedescendant is set without a dropdown\n this.input.setActiveDescendant(passedEl.id);\n this.containerOuter.setActiveDescendant(passedEl.id);\n }\n };\n\n _proto._addItem = function _addItem(_ref13) {\n var value = _ref13.value,\n _ref13$label = _ref13.label,\n label = _ref13$label === void 0 ? null : _ref13$label,\n _ref13$choiceId = _ref13.choiceId,\n choiceId = _ref13$choiceId === void 0 ? -1 : _ref13$choiceId,\n _ref13$groupId = _ref13.groupId,\n groupId = _ref13$groupId === void 0 ? -1 : _ref13$groupId,\n _ref13$customProperti = _ref13.customProperties,\n customProperties = _ref13$customProperti === void 0 ? null : _ref13$customProperti,\n _ref13$placeholder = _ref13.placeholder,\n placeholder = _ref13$placeholder === void 0 ? false : _ref13$placeholder,\n _ref13$keyCode = _ref13.keyCode,\n keyCode = _ref13$keyCode === void 0 ? null : _ref13$keyCode;\n var passedValue = typeof value === 'string' ? value.trim() : value;\n var passedKeyCode = keyCode;\n var passedCustomProperties = customProperties;\n var items = this._store.items;\n var passedLabel = label || passedValue;\n var passedOptionId = choiceId || -1;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n var id = items ? items.length + 1 : 1; // If a prepended value has been passed, prepend it\n\n if (this.config.prependValue) {\n passedValue = this.config.prependValue + passedValue.toString();\n } // If an appended value has been passed, append it\n\n\n if (this.config.appendValue) {\n passedValue += this.config.appendValue.toString();\n }\n\n this._store.dispatch(items_addItem({\n value: passedValue,\n label: passedLabel,\n id: id,\n choiceId: passedOptionId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: passedKeyCode\n }));\n\n if (this._isSelectOneElement) {\n this.removeActiveItems(id);\n } // Trigger change event\n\n\n this.passedElement.triggerEvent(EVENTS.addItem, {\n id: id,\n value: passedValue,\n label: passedLabel,\n customProperties: passedCustomProperties,\n groupValue: group && group.value ? group.value : undefined,\n keyCode: passedKeyCode\n });\n return this;\n };\n\n _proto._removeItem = function _removeItem(item) {\n if (!item || !isType('Object', item)) {\n return this;\n }\n\n var id = item.id,\n value = item.value,\n label = item.label,\n choiceId = item.choiceId,\n groupId = item.groupId;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n this._store.dispatch(items_removeItem(id, choiceId));\n\n if (group && group.value) {\n this.passedElement.triggerEvent(EVENTS.removeItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group.value\n });\n } else {\n this.passedElement.triggerEvent(EVENTS.removeItem, {\n id: id,\n value: value,\n label: label\n });\n }\n\n return this;\n };\n\n _proto._addChoice = function _addChoice(_ref14) {\n var value = _ref14.value,\n _ref14$label = _ref14.label,\n label = _ref14$label === void 0 ? null : _ref14$label,\n _ref14$isSelected = _ref14.isSelected,\n isSelected = _ref14$isSelected === void 0 ? false : _ref14$isSelected,\n _ref14$isDisabled = _ref14.isDisabled,\n isDisabled = _ref14$isDisabled === void 0 ? false : _ref14$isDisabled,\n _ref14$groupId = _ref14.groupId,\n groupId = _ref14$groupId === void 0 ? -1 : _ref14$groupId,\n _ref14$customProperti = _ref14.customProperties,\n customProperties = _ref14$customProperti === void 0 ? null : _ref14$customProperti,\n _ref14$placeholder = _ref14.placeholder,\n placeholder = _ref14$placeholder === void 0 ? false : _ref14$placeholder,\n _ref14$keyCode = _ref14.keyCode,\n keyCode = _ref14$keyCode === void 0 ? null : _ref14$keyCode;\n\n if (typeof value === 'undefined' || value === null) {\n return;\n } // Generate unique id\n\n\n var choices = this._store.choices;\n var choiceLabel = label || value;\n var choiceId = choices ? choices.length + 1 : 1;\n var choiceElementId = this._baseId + \"-\" + this._idNames.itemChoice + \"-\" + choiceId;\n\n this._store.dispatch(choices_addChoice({\n id: choiceId,\n groupId: groupId,\n elementId: choiceElementId,\n value: value,\n label: choiceLabel,\n disabled: isDisabled,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n\n if (isSelected) {\n this._addItem({\n value: value,\n label: choiceLabel,\n choiceId: choiceId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n });\n }\n };\n\n _proto._addGroup = function _addGroup(_ref15) {\n var _this20 = this;\n\n var group = _ref15.group,\n id = _ref15.id,\n _ref15$valueKey = _ref15.valueKey,\n valueKey = _ref15$valueKey === void 0 ? 'value' : _ref15$valueKey,\n _ref15$labelKey = _ref15.labelKey,\n labelKey = _ref15$labelKey === void 0 ? 'label' : _ref15$labelKey;\n var groupChoices = isType('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));\n var groupId = id || Math.floor(new Date().valueOf() * Math.random());\n var isDisabled = group.disabled ? group.disabled : false;\n\n if (groupChoices) {\n this._store.dispatch(groups_addGroup({\n value: group.label,\n id: groupId,\n active: true,\n disabled: isDisabled\n }));\n\n var addGroupChoices = function addGroupChoices(choice) {\n var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;\n\n _this20._addChoice({\n value: choice[valueKey],\n label: isType('Object', choice) ? choice[labelKey] : choice.innerHTML,\n isSelected: choice.selected,\n isDisabled: isOptDisabled,\n groupId: groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder\n });\n };\n\n groupChoices.forEach(addGroupChoices);\n } else {\n this._store.dispatch(groups_addGroup({\n value: group.label,\n id: group.id,\n active: false,\n disabled: group.disabled\n }));\n }\n };\n\n _proto._getTemplate = function _getTemplate(template) {\n var _this$_templates$temp;\n\n if (!template) {\n return null;\n }\n\n var classNames = this.config.classNames;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return (_this$_templates$temp = this._templates[template]).call.apply(_this$_templates$temp, [this, classNames].concat(args));\n };\n\n _proto._createTemplates = function _createTemplates() {\n var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;\n var userTemplates = {};\n\n if (callbackOnCreateTemplates && typeof callbackOnCreateTemplates === 'function') {\n userTemplates = callbackOnCreateTemplates.call(this, strToEl);\n }\n\n this._templates = cjs_default()(TEMPLATES, userTemplates);\n };\n\n _proto._createElements = function _createElements() {\n this.containerOuter = new container_Container({\n element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.containerInner = new container_Container({\n element: this._getTemplate('containerInner'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.input = new input_Input({\n element: this._getTemplate('input', this._placeholderValue),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n preventPaste: !this.config.paste\n });\n this.choiceList = new list_List({\n element: this._getTemplate('choiceList', this._isSelectOneElement)\n });\n this.itemList = new list_List({\n element: this._getTemplate('itemList', this._isSelectOneElement)\n });\n this.dropdown = new Dropdown({\n element: this._getTemplate('dropdown'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type\n });\n };\n\n _proto._createStructure = function _createStructure() {\n // Hide original element\n this.passedElement.conceal(); // Wrap input in container preserving DOM ordering\n\n this.containerInner.wrap(this.passedElement.element); // Wrapper inner container with outer container\n\n this.containerOuter.wrap(this.containerInner.element);\n\n if (this._isSelectOneElement) {\n this.input.placeholder = this.config.searchPlaceholderValue || '';\n } else if (this._placeholderValue) {\n this.input.placeholder = this._placeholderValue;\n this.input.setWidth();\n }\n\n this.containerOuter.element.appendChild(this.containerInner.element);\n this.containerOuter.element.appendChild(this.dropdown.element);\n this.containerInner.element.appendChild(this.itemList.element);\n\n if (!this._isTextElement) {\n this.dropdown.element.appendChild(this.choiceList.element);\n }\n\n if (!this._isSelectOneElement) {\n this.containerInner.element.appendChild(this.input.element);\n } else if (this.config.searchEnabled) {\n this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);\n }\n\n if (this._isSelectElement) {\n this._highlightPosition = 0;\n this._isSearching = false;\n\n this._startLoading();\n\n if (this._presetGroups.length) {\n this._addPredefinedGroups(this._presetGroups);\n } else {\n this._addPredefinedChoices(this._presetChoices);\n }\n\n this._stopLoading();\n }\n\n if (this._isTextElement) {\n this._addPredefinedItems(this._presetItems);\n }\n };\n\n _proto._addPredefinedGroups = function _addPredefinedGroups(groups) {\n var _this21 = this;\n\n // If we have a placeholder option\n var placeholderChoice = this.passedElement.placeholderOption;\n\n if (placeholderChoice && placeholderChoice.parentNode.tagName === 'SELECT') {\n this._addChoice({\n value: placeholderChoice.value,\n label: placeholderChoice.innerHTML,\n isSelected: placeholderChoice.selected,\n isDisabled: placeholderChoice.disabled,\n placeholder: true\n });\n }\n\n groups.forEach(function (group) {\n return _this21._addGroup({\n group: group,\n id: group.id || null\n });\n });\n };\n\n _proto._addPredefinedChoices = function _addPredefinedChoices(choices) {\n var _this22 = this;\n\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort) {\n choices.sort(this.config.sorter);\n }\n\n var hasSelectedChoice = choices.some(function (choice) {\n return choice.selected;\n });\n var firstEnabledChoiceIndex = choices.findIndex(function (choice) {\n return choice.disabled === undefined || !choice.disabled;\n });\n choices.forEach(function (choice, index) {\n var value = choice.value,\n label = choice.label,\n customProperties = choice.customProperties,\n placeholder = choice.placeholder;\n\n if (_this22._isSelectElement) {\n // If the choice is actually a group\n if (choice.choices) {\n _this22._addGroup({\n group: choice,\n id: choice.id || null\n });\n } else {\n /**\n * If there is a selected choice already or the choice is not the first in\n * the array, add each choice normally.\n *\n * Otherwise we pre-select the first enabled choice in the array (\"select-one\" only)\n */\n var shouldPreselect = _this22._isSelectOneElement && !hasSelectedChoice && index === firstEnabledChoiceIndex;\n var isSelected = shouldPreselect ? true : choice.selected;\n var isDisabled = choice.disabled;\n\n _this22._addChoice({\n value: value,\n label: label,\n isSelected: isSelected,\n isDisabled: isDisabled,\n customProperties: customProperties,\n placeholder: placeholder\n });\n }\n } else {\n _this22._addChoice({\n value: value,\n label: label,\n isSelected: choice.selected,\n isDisabled: choice.disabled,\n customProperties: customProperties,\n placeholder: placeholder\n });\n }\n });\n }\n /**\n * @param {Item[]} items\n */\n ;\n\n _proto._addPredefinedItems = function _addPredefinedItems(items) {\n var _this23 = this;\n\n items.forEach(function (item) {\n if (typeof item === 'object' && item.value) {\n _this23._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n\n if (typeof item === 'string') {\n _this23._addItem({\n value: item\n });\n }\n });\n };\n\n _proto._setChoiceOrItem = function _setChoiceOrItem(item) {\n var _this24 = this;\n\n var itemType = getType(item).toLowerCase();\n var handleType = {\n object: function object() {\n if (!item.value) {\n return;\n } // If we are dealing with a select input, we need to create an option first\n // that is then selected. For text inputs we can just add items normally.\n\n\n if (!_this24._isTextElement) {\n _this24._addChoice({\n value: item.value,\n label: item.label,\n isSelected: true,\n isDisabled: false,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n } else {\n _this24._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n },\n string: function string() {\n if (!_this24._isTextElement) {\n _this24._addChoice({\n value: item,\n label: item,\n isSelected: true,\n isDisabled: false\n });\n } else {\n _this24._addItem({\n value: item\n });\n }\n }\n };\n handleType[itemType]();\n };\n\n _proto._findAndSelectChoiceByValue = function _findAndSelectChoiceByValue(val) {\n var _this25 = this;\n\n var choices = this._store.choices; // Check 'value' property exists and the choice isn't already selected\n\n var foundChoice = choices.find(function (choice) {\n return _this25.config.valueComparer(choice.value, val);\n });\n\n if (foundChoice && !foundChoice.selected) {\n this._addItem({\n value: foundChoice.value,\n label: foundChoice.label,\n choiceId: foundChoice.id,\n groupId: foundChoice.groupId,\n customProperties: foundChoice.customProperties,\n placeholder: foundChoice.placeholder,\n keyCode: foundChoice.keyCode\n });\n }\n };\n\n _proto._generatePlaceholderValue = function _generatePlaceholderValue() {\n if (this._isSelectElement) {\n var placeholderOption = this.passedElement.placeholderOption;\n return placeholderOption ? placeholderOption.text : false;\n }\n\n var _this$config4 = this.config,\n placeholder = _this$config4.placeholder,\n placeholderValue = _this$config4.placeholderValue;\n var dataset = this.passedElement.element.dataset;\n\n if (placeholder) {\n if (placeholderValue) {\n return placeholderValue;\n }\n\n if (dataset.placeholder) {\n return dataset.placeholder;\n }\n }\n\n return false;\n };\n\n return Choices;\n}();\n\n/* harmony default export */ var scripts_choices = __webpack_exports__[\"default\"] = (choices_Choices);\n\n/***/ })\n/******/ ])[\"default\"];\n});", "/*!\n * @description Recursive object extending\n * @author Viacheslav Lotsmanov \n * @license MIT\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2013-2018 Viacheslav Lotsmanov\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nfunction isSpecificValue(val) {\n\treturn (\n\t\tval instanceof Buffer\n\t\t|| val instanceof Date\n\t\t|| val instanceof RegExp\n\t) ? true : false;\n}\n\nfunction cloneSpecificValue(val) {\n\tif (val instanceof Buffer) {\n\t\tvar x = Buffer.alloc\n\t\t\t? Buffer.alloc(val.length)\n\t\t\t: new Buffer(val.length);\n\t\tval.copy(x);\n\t\treturn x;\n\t} else if (val instanceof Date) {\n\t\treturn new Date(val.getTime());\n\t} else if (val instanceof RegExp) {\n\t\treturn new RegExp(val);\n\t} else {\n\t\tthrow new Error('Unexpected situation');\n\t}\n}\n\n/**\n * Recursive cloning array.\n */\nfunction deepCloneArray(arr) {\n\tvar clone = [];\n\tarr.forEach(function (item, index) {\n\t\tif (typeof item === 'object' && item !== null) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tclone[index] = deepCloneArray(item);\n\t\t\t} else if (isSpecificValue(item)) {\n\t\t\t\tclone[index] = cloneSpecificValue(item);\n\t\t\t} else {\n\t\t\t\tclone[index] = deepExtend({}, item);\n\t\t\t}\n\t\t} else {\n\t\t\tclone[index] = item;\n\t\t}\n\t});\n\treturn clone;\n}\n\nfunction safeGetProperty(object, property) {\n\treturn property === '__proto__' ? undefined : object[property];\n}\n\n/**\n * Extening object that entered in first argument.\n *\n * Returns extended object or false if have no target object or incorrect type.\n *\n * If you wish to clone source object (without modify it), just use empty new\n * object as first argument, like this:\n * deepExtend({}, yourObj_1, [yourObj_N]);\n */\nvar deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) {\n\tif (arguments.length < 1 || typeof arguments[0] !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (arguments.length < 2) {\n\t\treturn arguments[0];\n\t}\n\n\tvar target = arguments[0];\n\n\t// convert arguments to array and cut off target object\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\tvar val, src, clone;\n\n\targs.forEach(function (obj) {\n\t\t// skip argument if isn't an object, is null, or is an array\n\t\tif (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(obj).forEach(function (key) {\n\t\t\tsrc = safeGetProperty(target, key); // source value\n\t\t\tval = safeGetProperty(obj, key); // new value\n\n\t\t\t// recursion prevention\n\t\t\tif (val === target) {\n\t\t\t\treturn;\n\n\t\t\t/**\n\t\t\t * if new value isn't object then just overwrite by new value\n\t\t\t * instead of extending.\n\t\t\t */\n\t\t\t} else if (typeof val !== 'object' || val === null) {\n\t\t\t\ttarget[key] = val;\n\t\t\t\treturn;\n\n\t\t\t// just clone arrays (and recursive clone objects inside)\n\t\t\t} else if (Array.isArray(val)) {\n\t\t\t\ttarget[key] = deepCloneArray(val);\n\t\t\t\treturn;\n\n\t\t\t// custom cloning and overwrite for specific objects\n\t\t\t} else if (isSpecificValue(val)) {\n\t\t\t\ttarget[key] = cloneSpecificValue(val);\n\t\t\t\treturn;\n\n\t\t\t// overwrite by new value if source isn't object or array\n\t\t\t} else if (typeof src !== 'object' || src === null || Array.isArray(src)) {\n\t\t\t\ttarget[key] = deepExtend({}, val);\n\t\t\t\treturn;\n\n\t\t\t// source value and new value is objects both, extending...\n\t\t\t} else {\n\t\t\t\ttarget[key] = deepExtend(src, val);\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t});\n\n\treturn target;\n};\n", "/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar ssrWindow = require('ssr-window');\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = ssrWindow.getWindow();\n var document = ssrWindow.getDocument();\n var arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(' 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n var window = ssrWindow.getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n var window = ssrWindow.getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n var window = ssrWindow.getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var window = ssrWindow.getWindow();\n var document = ssrWindow.getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = ssrWindow.getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n var window = ssrWindow.getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = ssrWindow.getWindow();\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = ssrWindow.getWindow();\n var document = ssrWindow.getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = ssrWindow.getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var document = ssrWindow.getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n var window = ssrWindow.getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var window = ssrWindow.getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexports.$ = $;\nexports.add = add;\nexports.addClass = addClass;\nexports.animate = animate;\nexports.animationEnd = animationEnd;\nexports.append = append;\nexports.appendTo = appendTo;\nexports.attr = attr;\nexports.blur = blur;\nexports.change = change;\nexports.children = children;\nexports.click = click;\nexports.closest = closest;\nexports.css = css;\nexports.data = data;\nexports.dataset = dataset;\nexports.default = $;\nexports.detach = detach;\nexports.each = each;\nexports.empty = empty;\nexports.eq = eq;\nexports.filter = filter;\nexports.find = find;\nexports.focus = focus;\nexports.focusin = focusin;\nexports.focusout = focusout;\nexports.hasClass = hasClass;\nexports.height = height;\nexports.hide = hide;\nexports.html = html;\nexports.index = index;\nexports.insertAfter = insertAfter;\nexports.insertBefore = insertBefore;\nexports.is = is;\nexports.keydown = keydown;\nexports.keypress = keypress;\nexports.keyup = keyup;\nexports.mousedown = mousedown;\nexports.mouseenter = mouseenter;\nexports.mouseleave = mouseleave;\nexports.mousemove = mousemove;\nexports.mouseout = mouseout;\nexports.mouseover = mouseover;\nexports.mouseup = mouseup;\nexports.next = next;\nexports.nextAll = nextAll;\nexports.off = off;\nexports.offset = offset;\nexports.on = on;\nexports.once = once;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.parent = parent;\nexports.parents = parents;\nexports.prepend = prepend;\nexports.prependTo = prependTo;\nexports.prev = prev;\nexports.prevAll = prevAll;\nexports.prop = prop;\nexports.remove = remove;\nexports.removeAttr = removeAttr;\nexports.removeClass = removeClass;\nexports.removeData = removeData;\nexports.resize = resize;\nexports.scroll = scroll;\nexports.scrollLeft = scrollLeft;\nexports.scrollTo = scrollTo;\nexports.scrollTop = scrollTop;\nexports.show = show;\nexports.siblings = siblings;\nexports.stop = stop;\nexports.styles = styles;\nexports.submit = submit;\nexports.text = text;\nexports.toggleClass = toggleClass;\nexports.touchend = touchend;\nexports.touchmove = touchmove;\nexports.touchstart = touchstart;\nexports.transform = transform;\nexports.transition = transition;\nexports.transitionEnd = transitionEnd;\nexports.trigger = trigger;\nexports.val = val;\nexports.value = value;\nexports.width = width;\n", "if (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\nif (!Element.prototype.closest) {\r\n Element.prototype.closest = function (s) {\r\n var el = this;\r\n\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n}\r\n", "/* flatpickr v4.6.9, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.flatpickr = factory());\n}(this, (function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n }\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n };\n\n var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, arguments); }, wait);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016, padded (0001-9999)\n Y: function (date) { return pad(date.getFullYear(), 4); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); },\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000,\n };\n function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n }\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaults), flatpickr.defaultConfig),\n l10n: english,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\") {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n // https://github.com/microsoft/TypeScript/issues/31663\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n default: __assign({}, english),\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n})));\n", "'use strict';\n\nmodule.exports = function(el, onOver, onOut) {\n var x, y, pX, pY;\n var mouseOver = false;\n var focused = false;\n var h = {},\n state = 0,\n timer = 0;\n\n var options = {\n sensitivity: 7,\n interval: 100,\n timeout: 0,\n handleFocus: false\n };\n\n function delay(el, e) {\n if (timer) timer = clearTimeout(timer);\n state = 0;\n return focused ? undefined : onOut.call(el, e);\n }\n\n function tracker(e) {\n x = e.clientX;\n y = e.clientY;\n }\n\n function compare(el, e) {\n if (timer) timer = clearTimeout(timer);\n if ((Math.abs(pX - x) + Math.abs(pY - y)) < options.sensitivity) {\n state = 1;\n return focused ? undefined : onOver.call(el, e);\n } else {\n pX = x;\n pY = y;\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n }\n\n // Public methods\n h.options = function(opt) {\n var focusOptionChanged = opt.handleFocus !== options.handleFocus;\n options = Object.assign({}, options, opt);\n if (focusOptionChanged) {\n options.handleFocus ? addFocus() : removeFocus();\n }\n return h;\n };\n\n function dispatchOver(e) {\n mouseOver = true;\n if (timer) timer = clearTimeout(timer);\n el.removeEventListener('mousemove', tracker, false);\n\n if (state !== 1) {\n pX = e.clientX;\n pY = e.clientY;\n\n el.addEventListener('mousemove', tracker, false);\n\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n\n return this;\n }\n\n function dispatchOut(e) {\n mouseOver = false;\n if (timer) timer = clearTimeout(timer);\n el.removeEventListener('mousemove', tracker, false);\n\n if (state === 1) {\n timer = setTimeout(function() {\n delay(el, e);\n }, options.timeout);\n }\n\n return this;\n }\n\n function dispatchFocus(e) {\n if (!mouseOver) {\n focused = true;\n onOver.call(el, e);\n }\n }\n\n function dispatchBlur(e) {\n if (!mouseOver && focused) {\n focused = false;\n onOut.call(el, e);\n }\n }\n\n function addFocus() {\n el.addEventListener('focus', dispatchFocus, false);\n el.addEventListener('blur', dispatchBlur, false);\n }\n\n function removeFocus() {\n el.removeEventListener('focus', dispatchFocus, false);\n el.removeEventListener('blur', dispatchBlur, false);\n }\n\n h.remove = function() {\n if (!el) return;\n el.removeEventListener('mouseover', dispatchOver, false);\n el.removeEventListener('mouseout', dispatchOut, false);\n removeFocus();\n };\n\n if (el) {\n el.addEventListener('mouseover', dispatchOver, false);\n el.addEventListener('mouseout', dispatchOut, false);\n }\n\n return h;\n};\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n})(window.document);\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (\n options.root &&\n options.root.nodeType != 1 &&\n options.root.nodeType != 9\n ) {\n throw new Error('root must be a Document or Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array} */\n this._monitoringDocuments = [];\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n var rootBounds = null;\n if (!this._rootContainsTarget(target)) {\n rootBounds = getEmptyRect();\n } else if (!crossOriginUpdater || this.root) {\n rootBounds = rootRect;\n }\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootBounds,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root && !isDoc(this.root)) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var doc = isDoc(this.root) ? this.root : document;\n var html = doc.documentElement;\n var body = doc.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n return (\n containsDeep(rootDoc, target) &&\n (!this.root || rootDoc == target.ownerDocument)\n );\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n * intersection is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n\n/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n // If the parent has element that is assigned through shadow root slot\n if (parent && parent.assignedSlot) {\n parent = parent.assignedSlot.parentNode\n }\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n return parent;\n}\n\n/**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\nfunction isDoc(node) {\n return node && node.nodeType === 9;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n", "/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.MicroModal = factory());\n}(this, (function () { 'use strict';\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var MicroModal = function () {\n\n var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=\"-\"])'];\n\n var Modal = /*#__PURE__*/function () {\n function Modal(_ref) {\n var targetModal = _ref.targetModal,\n _ref$triggers = _ref.triggers,\n triggers = _ref$triggers === void 0 ? [] : _ref$triggers,\n _ref$onShow = _ref.onShow,\n onShow = _ref$onShow === void 0 ? function () {} : _ref$onShow,\n _ref$onClose = _ref.onClose,\n onClose = _ref$onClose === void 0 ? function () {} : _ref$onClose,\n _ref$openTrigger = _ref.openTrigger,\n openTrigger = _ref$openTrigger === void 0 ? 'data-micromodal-trigger' : _ref$openTrigger,\n _ref$closeTrigger = _ref.closeTrigger,\n closeTrigger = _ref$closeTrigger === void 0 ? 'data-micromodal-close' : _ref$closeTrigger,\n _ref$openClass = _ref.openClass,\n openClass = _ref$openClass === void 0 ? 'is-open' : _ref$openClass,\n _ref$disableScroll = _ref.disableScroll,\n disableScroll = _ref$disableScroll === void 0 ? false : _ref$disableScroll,\n _ref$disableFocus = _ref.disableFocus,\n disableFocus = _ref$disableFocus === void 0 ? false : _ref$disableFocus,\n _ref$awaitCloseAnimat = _ref.awaitCloseAnimation,\n awaitCloseAnimation = _ref$awaitCloseAnimat === void 0 ? false : _ref$awaitCloseAnimat,\n _ref$awaitOpenAnimati = _ref.awaitOpenAnimation,\n awaitOpenAnimation = _ref$awaitOpenAnimati === void 0 ? false : _ref$awaitOpenAnimati,\n _ref$debugMode = _ref.debugMode,\n debugMode = _ref$debugMode === void 0 ? false : _ref$debugMode;\n\n _classCallCheck(this, Modal);\n\n // Save a reference of the modal\n this.modal = document.getElementById(targetModal); // Save a reference to the passed config\n\n this.config = {\n debugMode: debugMode,\n disableScroll: disableScroll,\n openTrigger: openTrigger,\n closeTrigger: closeTrigger,\n openClass: openClass,\n onShow: onShow,\n onClose: onClose,\n awaitCloseAnimation: awaitCloseAnimation,\n awaitOpenAnimation: awaitOpenAnimation,\n disableFocus: disableFocus\n }; // Register click events only if pre binding eventListeners\n\n if (triggers.length > 0) this.registerTriggers.apply(this, _toConsumableArray(triggers)); // pre bind functions for event listeners\n\n this.onClick = this.onClick.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n }\n /**\n * Loops through all openTriggers and binds click event\n * @param {array} triggers [Array of node elements]\n * @return {void}\n */\n\n\n _createClass(Modal, [{\n key: \"registerTriggers\",\n value: function registerTriggers() {\n var _this = this;\n\n for (var _len = arguments.length, triggers = new Array(_len), _key = 0; _key < _len; _key++) {\n triggers[_key] = arguments[_key];\n }\n\n triggers.filter(Boolean).forEach(function (trigger) {\n trigger.addEventListener('click', function (event) {\n return _this.showModal(event);\n });\n });\n }\n }, {\n key: \"showModal\",\n value: function showModal() {\n var _this2 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n this.activeElement = document.activeElement;\n this.modal.setAttribute('aria-hidden', 'false');\n this.modal.classList.add(this.config.openClass);\n this.scrollBehaviour('disable');\n this.addEventListeners();\n\n if (this.config.awaitOpenAnimation) {\n var handler = function handler() {\n _this2.modal.removeEventListener('animationend', handler, false);\n\n _this2.setFocusToFirstNode();\n };\n\n this.modal.addEventListener('animationend', handler, false);\n } else {\n this.setFocusToFirstNode();\n }\n\n this.config.onShow(this.modal, this.activeElement, event);\n }\n }, {\n key: \"closeModal\",\n value: function closeModal() {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var modal = this.modal;\n this.modal.setAttribute('aria-hidden', 'true');\n this.removeEventListeners();\n this.scrollBehaviour('enable');\n\n if (this.activeElement && this.activeElement.focus) {\n this.activeElement.focus();\n }\n\n this.config.onClose(this.modal, this.activeElement, event);\n\n if (this.config.awaitCloseAnimation) {\n var openClass = this.config.openClass; // <- old school ftw\n\n this.modal.addEventListener('animationend', function handler() {\n modal.classList.remove(openClass);\n modal.removeEventListener('animationend', handler, false);\n }, false);\n } else {\n modal.classList.remove(this.config.openClass);\n }\n }\n }, {\n key: \"closeModalById\",\n value: function closeModalById(targetModal) {\n this.modal = document.getElementById(targetModal);\n if (this.modal) this.closeModal();\n }\n }, {\n key: \"scrollBehaviour\",\n value: function scrollBehaviour(toggle) {\n if (!this.config.disableScroll) return;\n var body = document.querySelector('body');\n\n switch (toggle) {\n case 'enable':\n Object.assign(body.style, {\n overflow: ''\n });\n break;\n\n case 'disable':\n Object.assign(body.style, {\n overflow: 'hidden'\n });\n break;\n }\n }\n }, {\n key: \"addEventListeners\",\n value: function addEventListeners() {\n this.modal.addEventListener('touchstart', this.onClick);\n this.modal.addEventListener('click', this.onClick);\n document.addEventListener('keydown', this.onKeydown);\n }\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n this.modal.removeEventListener('touchstart', this.onClick);\n this.modal.removeEventListener('click', this.onClick);\n document.removeEventListener('keydown', this.onKeydown);\n }\n }, {\n key: \"onClick\",\n value: function onClick(event) {\n if (event.target.hasAttribute(this.config.closeTrigger)) {\n this.closeModal(event);\n }\n }\n }, {\n key: \"onKeydown\",\n value: function onKeydown(event) {\n if (event.keyCode === 27) this.closeModal(event); // esc\n\n if (event.keyCode === 9) this.retainFocus(event); // tab\n }\n }, {\n key: \"getFocusableNodes\",\n value: function getFocusableNodes() {\n var nodes = this.modal.querySelectorAll(FOCUSABLE_ELEMENTS);\n return Array.apply(void 0, _toConsumableArray(nodes));\n }\n /**\n * Tries to set focus on a node which is not a close trigger\n * if no other nodes exist then focuses on first close trigger\n */\n\n }, {\n key: \"setFocusToFirstNode\",\n value: function setFocusToFirstNode() {\n var _this3 = this;\n\n if (this.config.disableFocus) return;\n var focusableNodes = this.getFocusableNodes(); // no focusable nodes\n\n if (focusableNodes.length === 0) return; // remove nodes on whose click, the modal closes\n // could not think of a better name :(\n\n var nodesWhichAreNotCloseTargets = focusableNodes.filter(function (node) {\n return !node.hasAttribute(_this3.config.closeTrigger);\n });\n if (nodesWhichAreNotCloseTargets.length > 0) nodesWhichAreNotCloseTargets[0].focus();\n if (nodesWhichAreNotCloseTargets.length === 0) focusableNodes[0].focus();\n }\n }, {\n key: \"retainFocus\",\n value: function retainFocus(event) {\n var focusableNodes = this.getFocusableNodes(); // no focusable nodes\n\n if (focusableNodes.length === 0) return;\n /**\n * Filters nodes which are hidden to prevent\n * focus leak outside modal\n */\n\n focusableNodes = focusableNodes.filter(function (node) {\n return node.offsetParent !== null;\n }); // if disableFocus is true\n\n if (!this.modal.contains(document.activeElement)) {\n focusableNodes[0].focus();\n } else {\n var focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n }\n }\n }]);\n\n return Modal;\n }();\n /**\n * Modal prototype ends.\n * Here on code is responsible for detecting and\n * auto binding event handlers on modal triggers\n */\n // Keep a reference to the opened modal\n\n\n var activeModal = null;\n /**\n * Generates an associative array of modals and it's\n * respective triggers\n * @param {array} triggers An array of all triggers\n * @param {string} triggerAttr The data-attribute which triggers the module\n * @return {array}\n */\n\n var generateTriggerMap = function generateTriggerMap(triggers, triggerAttr) {\n var triggerMap = [];\n triggers.forEach(function (trigger) {\n var targetModal = trigger.attributes[triggerAttr].value;\n if (triggerMap[targetModal] === undefined) triggerMap[targetModal] = [];\n triggerMap[targetModal].push(trigger);\n });\n return triggerMap;\n };\n /**\n * Validates whether a modal of the given id exists\n * in the DOM\n * @param {number} id The id of the modal\n * @return {boolean}\n */\n\n\n var validateModalPresence = function validateModalPresence(id) {\n if (!document.getElementById(id)) {\n console.warn(\"MicroModal: \\u2757Seems like you have missed %c'\".concat(id, \"'\"), 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'ID somewhere in your code. Refer example below to resolve it.');\n console.warn(\"%cExample:\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', \"
\"));\n return false;\n }\n };\n /**\n * Validates if there are modal triggers present\n * in the DOM\n * @param {array} triggers An array of data-triggers\n * @return {boolean}\n */\n\n\n var validateTriggerPresence = function validateTriggerPresence(triggers) {\n if (triggers.length <= 0) {\n console.warn(\"MicroModal: \\u2757Please specify at least one %c'micromodal-trigger'\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'data attribute.');\n console.warn(\"%cExample:\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', \"\");\n return false;\n }\n };\n /**\n * Checks if triggers and their corresponding modals\n * are present in the DOM\n * @param {array} triggers Array of DOM nodes which have data-triggers\n * @param {array} triggerMap Associative array of modals and their triggers\n * @return {boolean}\n */\n\n\n var validateArgs = function validateArgs(triggers, triggerMap) {\n validateTriggerPresence(triggers);\n if (!triggerMap) return true;\n\n for (var id in triggerMap) {\n validateModalPresence(id);\n }\n\n return true;\n };\n /**\n * Binds click handlers to all modal triggers\n * @param {object} config [description]\n * @return void\n */\n\n\n var init = function init(config) {\n // Create an config object with default openTrigger\n var options = Object.assign({}, {\n openTrigger: 'data-micromodal-trigger'\n }, config); // Collects all the nodes with the trigger\n\n var triggers = _toConsumableArray(document.querySelectorAll(\"[\".concat(options.openTrigger, \"]\"))); // Makes a mappings of modals with their trigger nodes\n\n\n var triggerMap = generateTriggerMap(triggers, options.openTrigger); // Checks if modals and triggers exist in dom\n\n if (options.debugMode === true && validateArgs(triggers, triggerMap) === false) return; // For every target modal creates a new instance\n\n for (var key in triggerMap) {\n var value = triggerMap[key];\n options.targetModal = key;\n options.triggers = _toConsumableArray(value);\n activeModal = new Modal(options); // eslint-disable-line no-new\n }\n };\n /**\n * Shows a particular modal\n * @param {string} targetModal [The id of the modal to display]\n * @param {object} config [The configuration object to pass]\n * @return {void}\n */\n\n\n var show = function show(targetModal, config) {\n var options = config || {};\n options.targetModal = targetModal; // Checks if modals and triggers exist in dom\n\n if (options.debugMode === true && validateModalPresence(targetModal) === false) return; // clear events in case previous modal wasn't close\n\n if (activeModal) activeModal.removeEventListeners(); // stores reference to active modal\n\n activeModal = new Modal(options); // eslint-disable-line no-new\n\n activeModal.showModal();\n };\n /**\n * Closes the active modal\n * @param {string} targetModal [The id of the modal to close]\n * @return {void}\n */\n\n\n var close = function close(targetModal) {\n targetModal ? activeModal.closeModalById(targetModal) : activeModal.closeModal();\n };\n\n return {\n init: init,\n show: show,\n close: close\n };\n }();\n window.MicroModal = MicroModal;\n\n return MicroModal;\n\n})));\n", "if (window.NodeList && !NodeList.prototype.forEach) {\r\n NodeList.prototype.forEach = function (callback, thisArg) {\r\n thisArg = thisArg || window;\r\n for (var i = 0; i < this.length; i++) {\r\n callback.call(thisArg, this[i], i, this);\r\n }\r\n };\r\n}\r\n", "/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener(\"resize\", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement(\"source\");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === \"PICTURE\") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t regexTrailingCommas = /[,]+$/,\n\t regexNonNegativeInteger = /^\\d+$/,\n\n\t // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t // Must include at least one digit.\n\t // According to spec tests any decimal point must be followed by a digit.\n\t // No leading plus sign is allowed.)\n\t // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t c === \"\\u0009\" || // horizontal tab\n\t\t c === \"\\u000A\" || // new line\n\t\t c === \"\\u000C\" || // form feed\n\t\t c === \"\\u000D\"); // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements = [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements = null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell | MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name. Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t url,\n\t\t descriptors,\n\t\t currentDescriptor,\n\t\t state,\n\t\t c,\n\n\t\t // 2. Let position be a pointer into input, initially pointing at the start\n\t\t // of the string.\n\t\t pos = 0,\n\n\t\t // 3. Let candidates be an initially empty source set.\n\t\t candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t w, d, h, i,\n\t\t\t candidate = {},\n\t\t\t desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t // Space character\n\t\t\t\t // If current descriptor is not empty, append current descriptor to\n\t\t\t\t // descriptors and let current descriptor be the empty string.\n\t\t\t\t // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell | MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value \n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * = # [ , ]? | \n\t * = \n\t * = \n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// (Toy CSS parser. The goals here are:\n\t\t// 1) expansive test coverage without the weight of a full CSS parser.\n\t\t// 2) Avoiding regex wherever convenient.\n\t\t// Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t// Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// , let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// . If it does not parse correctly, or it does parse\n\t\t\t// correctly but the evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types = types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t// or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t * \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t * \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t * {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) || element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 : 999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD support\n\t\tdefine( \"picturefill\", function() { return picturefill; } );\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "function allSettled(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(\n new TypeError(\n typeof arr +\n ' ' +\n arr +\n ' is not iterable(cannot read property Symbol(Symbol.iterator))'\n )\n );\n }\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n function(e) {\n args[i] = { status: 'rejected', reason: e };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n );\n return;\n }\n }\n args[i] = { status: 'fulfilled', value: val };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n}\n\nexport default allSettled;\n", "/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n", "import promiseFinally from './finally';\nimport allSettled from './allSettled';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.allSettled = allSettled;\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n", "import Promise from './index';\nimport promiseFinally from './finally';\nimport allSettled from './allSettled';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\n// Expose the polyfill if Promise is undefined or set to a\n// non-function value. The latter can be due to a named HTMLElement\n// being exposed by browsers for legacy reasons.\n// https://github.com/taylorhakes/promise-polyfill/issues/114\nif (typeof globalNS['Promise'] !== 'function') {\n globalNS['Promise'] = Promise;\n} else if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = promiseFinally;\n} else if (!globalNS.Promise.allSettled) {\n globalNS.Promise.allSettled = allSettled;\n}\n", "import State from './state';\nimport {\n debounce,\n filterStates,\n} from './utils';\n\n// State Manager Constructor\nclass StateManager {\n constructor() {\n this.states = [];\n this.resizeTimer = null;\n this.configOptions = [];\n\n window.addEventListener('resize', debounce(this.resizeBrowser.bind(this), 25), true);\n }\n\n addState(options) {\n const newState = new State(options);\n\n if (newState.valid) {\n this.states.push(newState);\n }\n\n return newState;\n }\n\n addStates(statesArray) {\n statesArray.forEach(state => this.addState(state));\n }\n\n getState(id) {\n const selectedState = this.states.filter(state => state.id === id);\n\n return selectedState[0] || false;\n }\n\n isActive(id) {\n const selectedState = this.getState(id) || {};\n\n return selectedState.active || false;\n }\n\n getStates(idArr) {\n if (typeof (idArr) === 'undefined') {\n return this.states;\n }\n\n return idArr.map(id => this.getState(id));\n }\n\n removeState(id) {\n this.states.forEach((state, index) => {\n if (state.id === id) {\n state.destroy();\n this.states.splice(index, 1);\n }\n });\n }\n\n removeStates(idArray) {\n idArray.forEach(id => this.removeState(id));\n }\n\n removeAllStates() {\n this.states.forEach(state => state.destroy());\n this.states = [];\n }\n\n addConfigOption({\n name = '', // name, this is used to apply to a state\n test = null, // function which will perform the test\n when = 'resize', // resize or match (match will mean that resize will never fire either), or once (which will test once, then delete state if test doesnt pass)\n }) {\n if (name !== '' && test !== null) {\n State.addConfigOption({\n name,\n test,\n when,\n });\n }\n }\n\n removeConfigOption(name) {\n State.removeConfigOption(name);\n }\n\n getConfigOptions(name) {\n const configOptions = State.getConfigOptions();\n\n if (typeof name === 'string') {\n return configOptions.filter(configOption => configOption.name === name);\n }\n\n return configOptions;\n }\n\n resizeBrowser() {\n const activeStates = filterStates(this.states, 'active', true);\n\n activeStates.forEach((state) => {\n state.resizeState();\n });\n }\n\n stateChange(func) {\n State.setStateChangeMethod(func);\n }\n}\n\nexport default new StateManager();\n", "import {\n fireAllMethodsInArray,\n makeID,\n} from './utils';\n\nconst configOptions = [];\nlet stateChangeMethod = () => { };\n\nexport default class State {\n constructor(options) {\n this.id = options.id || makeID();\n this.query = options.query || 'all';\n\n const defaultOptions = {\n onEnter: [],\n onLeave: [],\n onResize: [],\n onFirstRun: [],\n };\n\n // Merge options with defaults to make the state\n this.options = Object.assign({}, defaultOptions, options);\n\n // Migrate methods into an array, this is to enable future functionality of adding extra methods to an existing state\n if (typeof this.options.onEnter === 'function') {\n this.options.onEnter = [this.options.onEnter];\n }\n\n if (typeof this.options.onLeave === 'function') {\n this.options.onLeave = [this.options.onLeave];\n }\n\n if (typeof this.options.onResize === 'function') {\n this.options.onResize = [this.options.onResize];\n }\n\n if (typeof this.options.onFirstRun === 'function') {\n this.options.onFirstRun = [this.options.onFirstRun];\n }\n\n // Test the one time tests first, if the test is invalid we wont create the config option\n if (this.testConfigOptions('once') === false) {\n this.valid = false;\n return false;\n }\n\n this.valid = true;\n this.active = false;\n this.init();\n }\n\n init() {\n this.test = window.matchMedia(this.query);\n\n if (this.test.matches && this.testConfigOptions('match')) {\n this.enterState();\n }\n\n this.listener = (test) => {\n let changed = false;\n\n if (test.matches) {\n if (this.testConfigOptions('match')) {\n this.enterState();\n changed = true;\n }\n } else {\n this.leaveState();\n changed = true;\n }\n\n if (changed) {\n stateChangeMethod();\n }\n };\n\n this.test.addListener(this.listener);\n }\n\n // Handle entering a state\n enterState() {\n fireAllMethodsInArray(this.options.onFirstRun, this.eventData('firstRun'));\n fireAllMethodsInArray(this.options.onEnter, this.eventData('enter'));\n this.options.onFirstRun = [];\n this.active = true;\n }\n\n // Handle leaving a state\n leaveState() {\n fireAllMethodsInArray(this.options.onLeave, this.eventData('leave'));\n this.active = false;\n }\n\n // Handle the user resizing the browser\n resizeState() {\n if (this.testConfigOptions('resize')) {\n fireAllMethodsInArray(this.options.onResize, this.eventData('resize'));\n }\n }\n\n // When the StateManager removes a state we want to remove the event listener\n destroy() {\n this.test.removeListener(this.listener);\n }\n\n attachCallback(type, callback, runIfActive) {\n switch (type) {\n case 'enter':\n this.options.onEnter.push(callback);\n break;\n case 'leave':\n this.options.onLeave.push(callback);\n break;\n case 'resize':\n this.options.onResize.push(callback);\n break;\n default:\n break;\n }\n\n if (type === 'enter' && runIfActive && this.active) {\n callback(this.eventData(type));\n }\n }\n\n testConfigOptions(when) {\n let test = true;\n\n configOptions.forEach((configOption) => {\n if (typeof this.options[configOption.name] !== 'undefined') {\n if (configOption.when === when && configOption.test.bind(this)() === false) {\n test = false;\n }\n }\n });\n\n return test;\n }\n\n eventData(eventType) {\n return {\n eventType,\n state: this,\n };\n }\n\n static addConfigOption(configOption) {\n configOptions.push(configOption);\n }\n\n static getConfigOptions() {\n return configOptions;\n }\n\n static removeConfigOption(name) {\n configOptions.forEach((item, index) => {\n if (item.name === name) {\n configOptions.splice(index, 1);\n }\n });\n }\n\n static setStateChangeMethod(func) {\n if (typeof func === 'function') {\n stateChangeMethod = func;\n } else {\n throw new Error('Not a function');\n }\n }\n}\n", "export function filterStates(states, key, value) {\n return states.filter(state => state[key] && state[key] === value);\n}\n\nexport function makeID() {\n return Math.random().toString(36).substr(2, 9);\n}\n\nexport function fireAllMethodsInArray(arr, event) {\n arr.forEach(method => method(event));\n}\n\nexport function funcToArray(func) {\n return typeof func === 'function' ? [func] : func;\n}\n\nexport function debounce(func) {\n let timeout;\n\n return (...args) => {\n const later = () => {\n timeout = null;\n func.apply(this, args);\n };\n\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n timeout = window.requestAnimationFrame(later);\n };\n}\n", "\"use strict\";function _typeof(e){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}!function(e,t){\"object\"===(\"undefined\"==typeof exports?\"undefined\":_typeof(exports))&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=e||self).ssrWindow={})}(void 0,function(e){function t(e){return null!==e&&\"object\"===_typeof(e)&&\"constructor\"in e&&e.constructor===Object}function n(e,o){void 0===e&&(e={}),void 0===o&&(o={}),Object.keys(o).forEach(function(u){void 0===e[u]?e[u]=o[u]:t(o[u])&&t(e[u])&&Object.keys(o[u]).length>0&&n(e[u],o[u])})}var o={body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:\"\"},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},createElementNS:function(){return{}},importNode:function(){return null},location:{hash:\"\",host:\"\",hostname:\"\",href:\"\",origin:\"\",pathname:\"\",protocol:\"\",search:\"\"}};var u={document:o,navigator:{userAgent:\"\"},location:{hash:\"\",host:\"\",hostname:\"\",href:\"\",origin:\"\",pathname:\"\",protocol:\"\",search:\"\"},history:{replaceState:function(){},pushState:function(){},go:function(){},back:function(){}},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return\"\"}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){},matchMedia:function(){return{}},requestAnimationFrame:function(e){return\"undefined\"==typeof setTimeout?(e(),null):setTimeout(e,0)},cancelAnimationFrame:function(e){\"undefined\"!=typeof setTimeout&&clearTimeout(e)}};e.extend=n,e.getDocument=function(){var e=\"undefined\"!=typeof document?document:{};return n(e,o),e},e.getWindow=function(){var e=\"undefined\"!=typeof window?window:{};return n(e,u),e},e.ssrDocument=o,e.ssrWindow=u,Object.defineProperty(e,\"__esModule\",{value:!0})});\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNzci13aW5kb3cudW1kLmpzIl0sIm5hbWVzIjpbImlzT2JqZWN0Iiwib2JqIiwiX3R5cGVvZiIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwiZXh0ZW5kIiwidGFyZ2V0Iiwic3JjIiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJsZW5ndGgiLCJzc3JEb2N1bWVudCIsImJvZHkiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFjdGl2ZUVsZW1lbnQiLCJibHVyIiwibm9kZU5hbWUiLCJxdWVyeVNlbGVjdG9yIiwicXVlcnlTZWxlY3RvckFsbCIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJjcmVhdGVFbGVtZW50IiwiY2hpbGRyZW4iLCJjaGlsZE5vZGVzIiwic3R5bGUiLCJzZXRBdHRyaWJ1dGUiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImNyZWF0ZUVsZW1lbnROUyIsImltcG9ydE5vZGUiLCJsb2NhdGlvbiIsImhhc2giLCJob3N0IiwiaG9zdG5hbWUiLCJocmVmIiwib3JpZ2luIiwicGF0aG5hbWUiLCJwcm90b2NvbCIsInNlYXJjaCIsInNzcldpbmRvdyIsImRvY3VtZW50IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiaGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIsInB1c2hTdGF0ZSIsImdvIiwiYmFjayIsIkN1c3RvbUV2ZW50IiwidGhpcyIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwiSW1hZ2UiLCJEYXRlIiwic2NyZWVuIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIm1hdGNoTWVkaWEiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYWxsYmFjayIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiaWQiLCJkb2MiLCJ3aW4iLCJ3aW5kb3ciXSwibWFwcGluZ3MiOiJzZUFDQSxTQUFTQSxFQUFTQyxHQUNoQixPQUNVLE9BQVJBLEdBQ2UsV0FBZkMsUUFBT0QsSUFDUCxnQkFBaUJBLEdBQ2pCQSxFQUFJRSxjQUFnQkMsT0FJeEIsU0FBU0MsRUFBT0MsRUFBa0JDLFFBQWxCLElBQUFELElBQUFBLEVBQUFBLFNBQWtCLElBQUFDLElBQUFBLEVBQUFBLElBQ2hDSCxPQUFPSSxLQUFLRCxHQUFLRSxRQUFRLFNBQUNDLFFBQ0csSUFBaEJKLEVBQU9JLEdBQXNCSixFQUFPSSxHQUFPSCxFQUFJRyxHQUV4RFYsRUFBU08sRUFBSUcsS0FDYlYsRUFBU00sRUFBT0ksS0FDaEJOLE9BQU9JLEtBQUtELEVBQUlHLElBQU1DLE9BQVMsR0FFL0JOLEVBQU9DLEVBQU9JLEdBQU1ILEVBQUlHLFVDaEJ4QkUsRUFBYyxDQUNsQkMsS0FBTSxHQUNOQyxpQkFBZ0IsYUFDaEJDLG9CQUFtQixhQUNuQkMsY0FBZSxDQUNiQyxLQUFJLGFBQ0pDLFNBQVUsSUFFWkMsY0FBYSxXQUNYLE9BQU8sTUFFVEMsaUJBQWdCLFdBQ2QsTUFBTyxJQUVUQyxlQUFjLFdBQ1osT0FBTyxNQUVUQyxZQUFXLFdBQ1QsTUFBTyxDQUNMQyxVQUFTLGVBR2JDLGNBQWEsV0FDWCxNQUFPLENBQ0xDLFNBQVUsR0FDVkMsV0FBWSxHQUNaQyxNQUFPLEdBQ1BDLGFBQVksYUFDWkMscUJBQW9CLFdBQ2xCLE1BQU8sTUFJYkMsZ0JBQWUsV0FDYixNQUFPLElBRVRDLFdBQVUsV0FDUixPQUFPLE1BRVRDLFNBQVUsQ0FDUkMsS0FBTSxHQUNOQyxLQUFNLEdBQ05DLFNBQVUsR0FDVkMsS0FBTSxHQUNOQyxPQUFRLEdBQ1JDLFNBQVUsR0FDVkMsU0FBVSxHQUNWQyxPQUFRLFNDOUNOQyxFQUFZLENBQ2hCQyxTQUFVOUIsRUFDVitCLFVBQVcsQ0FDVEMsVUFBVyxJQUViWixTQUFVLENBQ1JDLEtBQU0sR0FDTkMsS0FBTSxHQUNOQyxTQUFVLEdBQ1ZDLEtBQU0sR0FDTkMsT0FBUSxHQUNSQyxTQUFVLEdBQ1ZDLFNBQVUsR0FDVkMsT0FBUSxJQUVWSyxRQUFTLENBQ1BDLGFBQVksYUFDWkMsVUFBUyxhQUNUQyxHQUFFLGFBQ0ZDLEtBQUksY0FFTkMsWUFBYSxXQUNYLE9BQU9DLE1BRVRyQyxpQkFBZ0IsYUFDaEJDLG9CQUFtQixhQUNuQnFDLGlCQUFnQixXQUNkLE1BQU8sQ0FDTEMsaUJBQWdCLFdBQ2QsTUFBTyxNQUliQyxNQUFLLGFBQ0xDLEtBQUksYUFDSkMsT0FBUSxHQUNSQyxXQUFVLGFBQ1ZDLGFBQVksYUFDWkMsV0FBVSxXQUNSLE1BQU8sSUFFVEMsc0JBQXFCLFNBQUNDLEdBQ3BCLE1BQTBCLG9CQUFmSixZQUNUSSxJQUNPLE1BRUZKLFdBQVdJLEVBQVUsSUFFOUJDLHFCQUFvQixTQUFDQyxHQUNPLG9CQUFmTixZQUdYQyxhQUFhSyw4QkRGakIsV0FDRSxJQUFNQyxFQUNnQixvQkFBYnRCLFNBQTJCQSxTQUFZLEdBRWhELE9BREFyQyxFQUFPMkQsRUFBS3BELEdBQ0xvRCxlQ0VULFdBQ0UsSUFBTUMsRUFBZ0Msb0JBQVhDLE9BQXlCQSxPQUFVLEdBRTlELE9BREE3RCxFQUFPNEQsRUFBS3hCLEdBQ0x3QiIsImZpbGUiOiJEOlxcYmFtYm9vLWhvbWVcXHhtbC1kYXRhXFxidWlsZC1kaXJcXEFTLVJFTC1KT0IxXFxjb2RlXFxub2RlX21vZHVsZXNcXHNzci13aW5kb3dcXHNzci13aW5kb3cudW1kLmpzIn0=", "!function(root, factory) {\n \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function() {\n return root.svg4everybody = factory();\n }) : \"object\" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n function embed(parent, svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute(\"viewBox\", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n // append the fragment into the svg\n parent.appendChild(fragment);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.parent, item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live collection\n for (// get the cached index\n var index = 0; index < uses.length; ) {\n // get the current \n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar A11y = {\n getRandomNumber: function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n\n var randomChar = function randomChar() {\n return Math.round(16 * Math.random()).toString(16);\n };\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n },\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable: function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElRoleDescription: function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n return $el;\n },\n addElControls: function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n addElId: function addElId($el, id) {\n $el.attr('id', id);\n return $el;\n },\n addElLive: function addElLive($el, live) {\n $el.attr('aria-live', live);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterOrSpaceKey: function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n var swiper = this;\n var params = swiper.params.a11y;\n var $targetEl = (0, _dom.default)(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is((0, _utils.classesToSelector)(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n },\n notify: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n if (swiper.params.loop || !swiper.navigation) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletEl) {\n var $bulletEl = (0, _dom.default)(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n });\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.a11y;\n swiper.$el.append(swiper.a11y.liveRegion); // Container\n\n var $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n swiper.a11y.addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n var $wrapperEl = swiper.$wrapperEl;\n var wrapperId = $wrapperEl.attr('id') || \"swiper-wrapper-\" + swiper.a11y.getRandomNumber(16);\n var live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n swiper.a11y.addElId($wrapperEl, wrapperId);\n swiper.a11y.addElLive($wrapperEl, live); // Slide\n\n if (params.itemRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription((0, _dom.default)(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n swiper.a11y.addElRole((0, _dom.default)(swiper.slides), params.slideRole);\n swiper.slides.each(function (slideEl) {\n var $slideEl = (0, _dom.default)(slideEl);\n var ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, $slideEl.index() + 1).replace(/\\{\\{slidesLength\\}\\}/, swiper.slides.length);\n swiper.a11y.addElLabel($slideEl, ariaLabelMessage);\n }); // Navigation\n\n var $nextEl;\n var $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n swiper.a11y.makeElFocusable($nextEl);\n\n if ($nextEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($nextEl, 'button');\n $nextEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n swiper.a11y.addElControls($nextEl, wrapperId);\n }\n\n if ($prevEl && $prevEl.length) {\n swiper.a11y.makeElFocusable($prevEl);\n\n if ($prevEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($prevEl, 'button');\n $prevEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n swiper.a11y.addElControls($prevEl, wrapperId);\n } // Pagination\n\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', (0, _utils.classesToSelector)(swiper.params.pagination.bulletClass), swiper.a11y.onEnterOrSpaceKey);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n var $nextEl;\n var $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);\n } // Pagination\n\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', (0, _utils.classesToSelector)(swiper.params.pagination.bulletClass), swiper.a11y.onEnterOrSpaceKey);\n }\n }\n};\nvar _default = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group'\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n a11y: _extends({}, A11y, {\n liveRegion: (0, _dom.default)(\"\")\n })\n });\n },\n on: {\n afterInit: function afterInit(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy: function destroy(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = (0, _utils.nextTick)(function () {\n var autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n onVisibilityChange: function onVisibilityChange() {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n var swiper = this;\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n }\n};\nvar _default = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n autoplay: _extends({}, Autoplay, {\n running: false,\n paused: false\n })\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n var document = (0, _ssrWindow.getDocument)();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove(swiper) {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd: function touchEnd(swiper) {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n\n var document = (0, _ssrWindow.getDocument)();\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (array, val) {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n var i1;\n var i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction: function getInterpolateFunction(c) {\n var swiper = this;\n\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate: function setTranslate(_setTranslate, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var controlledTranslate;\n var Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n var Swiper = swiper.constructor;\n var controlled = swiper.controller.control;\n var i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n (0, _utils.nextTick)(function () {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n};\nvar _default = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n controller: _extends({\n control: swiper.params.controller.control\n }, Controller)\n });\n },\n on: {\n update: function update(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize: function resize(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate: function setTranslate(swiper, translate, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(swiper, duration, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = getBreakpoint;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n var breakpoint = false;\n var window = (0, _ssrWindow.getWindow)();\n var currentWidth = base === 'window' ? window.innerWidth : containerEl.clientWidth;\n var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n var points = Object.keys(breakpoints).map(function (point) {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n var minRatio = parseFloat(point.substr(1));\n var value = currentHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n\n return {\n value: point,\n point: point\n };\n });\n points.sort(function (a, b) {\n return parseInt(a.value, 10) - parseInt(b.value, 10);\n });\n\n for (var i = 0; i < points.length; i += 1) {\n var _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\n\n if (value <= currentWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _setBreakpoint = _interopRequireDefault(require(\"./setBreakpoint\"));\n\nvar _getBreakpoint = _interopRequireDefault(require(\"./getBreakpoint\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n setBreakpoint: _setBreakpoint.default,\n getBreakpoint: _getBreakpoint.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = setBreakpoint;\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n initialized = swiper.initialized,\n _swiper$loopedSlides = swiper.loopedSlides,\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\n params = swiper.params,\n $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(params.containerModifierClass + \"multirow\");\n\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(params.containerModifierClass + \"multirow-column\");\n }\n\n swiper.emitContainerClasses();\n }\n\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n (0, _utils.extend)(swiper.params, breakpointParams);\n (0, _utils.extend)(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nfunction checkOverflow() {\n var swiper = this;\n var params = swiper.params;\n var wasLocked = swiper.isLocked;\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nvar _default = {\n checkOverflow: checkOverflow\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = addClasses;\n\nfunction prepareClasses(entries, prefix) {\n var resultClasses = [];\n entries.forEach(function (item) {\n if (typeof item === 'object') {\n Object.keys(item).forEach(function (classNames) {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nfunction addClasses() {\n var swiper = this;\n var classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n $el = swiper.$el,\n device = swiper.device,\n support = swiper.support; // prettier-ignore\n\n var suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': support.pointerEvents && !support.touch\n }, {\n 'free-mode': params.freeMode\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'multirow': params.slidesPerColumn > 1\n }, {\n 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }], params.containerModifierClass);\n classNames.push.apply(classNames, suffixes);\n $el.addClass([].concat(classNames).join(' '));\n swiper.emitContainerClasses();\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClasses = _interopRequireDefault(require(\"./addClasses\"));\n\nvar _removeClasses = _interopRequireDefault(require(\"./removeClasses\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n addClasses: _addClasses.default,\n removeClasses: _removeClasses.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeClasses;\n\nfunction removeClasses() {\n var swiper = this;\n var $el = swiper.$el,\n classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nvar _getSupport = require(\"../../utils/get-support\");\n\nvar _getDevice = require(\"../../utils/get-device\");\n\nvar _getBrowser = require(\"../../utils/get-browser\");\n\nvar _resize = _interopRequireDefault(require(\"../../modules/resize/resize\"));\n\nvar _observer = _interopRequireDefault(require(\"../../modules/observer/observer\"));\n\nvar _modular = _interopRequireDefault(require(\"./modular\"));\n\nvar _eventsEmitter = _interopRequireDefault(require(\"./events-emitter\"));\n\nvar _index = _interopRequireDefault(require(\"./update/index\"));\n\nvar _index2 = _interopRequireDefault(require(\"./translate/index\"));\n\nvar _index3 = _interopRequireDefault(require(\"./transition/index\"));\n\nvar _index4 = _interopRequireDefault(require(\"./slide/index\"));\n\nvar _index5 = _interopRequireDefault(require(\"./loop/index\"));\n\nvar _index6 = _interopRequireDefault(require(\"./grab-cursor/index\"));\n\nvar _index7 = _interopRequireDefault(require(\"./manipulation/index\"));\n\nvar _index8 = _interopRequireDefault(require(\"./events/index\"));\n\nvar _index9 = _interopRequireDefault(require(\"./breakpoints/index\"));\n\nvar _index10 = _interopRequireDefault(require(\"./classes/index\"));\n\nvar _index11 = _interopRequireDefault(require(\"./images/index\"));\n\nvar _index12 = _interopRequireDefault(require(\"./check-overflow/index\"));\n\nvar _defaults = _interopRequireDefault(require(\"./defaults\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar prototypes = {\n modular: _modular.default,\n eventsEmitter: _eventsEmitter.default,\n update: _index.default,\n translate: _index2.default,\n transition: _index3.default,\n slide: _index4.default,\n loop: _index5.default,\n grabCursor: _index6.default,\n manipulation: _index7.default,\n events: _index8.default,\n breakpoints: _index9.default,\n checkOverflow: _index12.default,\n classes: _index10.default,\n images: _index11.default\n};\nvar extendedDefaults = {};\n\nvar Swiper = /*#__PURE__*/function () {\n function Swiper() {\n var el;\n var params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n\n if (!params) params = {};\n params = (0, _utils.extend)({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && (0, _dom.default)(params.el).length > 1) {\n var swipers = [];\n (0, _dom.default)(params.el).each(function (containerEl) {\n var newParams = (0, _utils.extend)({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n var swiper = this;\n swiper.__swiper__ = true;\n swiper.support = (0, _getSupport.getSupport)();\n swiper.device = (0, _getDevice.getDevice)({\n userAgent: params.userAgent\n });\n swiper.browser = (0, _getBrowser.getBrowser)();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n }\n }); // Extend defaults with modules params\n\n var swiperParams = (0, _utils.extend)({}, _defaults.default);\n swiper.useParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = (0, _utils.extend)({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = (0, _utils.extend)({}, swiper.params);\n swiper.passedParams = (0, _utils.extend)({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(function (eventName) {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = _dom.default; // Extend Swiper\n\n (0, _utils.extend)(swiper, {\n el: el,\n // Classes\n classNames: [],\n // Slides\n slides: (0, _dom.default)(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n\n if (swiper.support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: (0, _utils.now)(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n }); // Install Modules\n\n swiper.useModules();\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n var _proto = Swiper.prototype;\n\n _proto.setProgress = function setProgress(progress, speed) {\n var swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n var min = swiper.minTranslate();\n var max = swiper.maxTranslate();\n var current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n };\n\n _proto.emitContainerClasses = function emitContainerClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var classes = swiper.el.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', classes.join(' '));\n };\n\n _proto.getSlideClasses = function getSlideClasses(slideEl) {\n var swiper = this;\n return slideEl.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n };\n\n _proto.emitSlidesClasses = function emitSlidesClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var updates = [];\n swiper.slides.each(function (slideEl) {\n var classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl: slideEl,\n classNames: classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n };\n\n _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {\n var swiper = this;\n var params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n var spv = 1;\n\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {\n if (slides[_i] && !breakLoop) {\n slideSize += slides[_i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {\n if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n\n return spv;\n };\n\n _proto.update = function update() {\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var snapGrid = swiper.snapGrid,\n params = swiper.params; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n var translated;\n\n if (swiper.params.freeMode) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n };\n\n _proto.changeDirection = function changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n var swiper = this;\n var currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(\"\" + swiper.params.containerModifierClass + currentDirection).addClass(\"\" + swiper.params.containerModifierClass + newDirection);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(function (slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n };\n\n _proto.mount = function mount(el) {\n var swiper = this;\n if (swiper.mounted) return true; // Find el\n\n var $el = (0, _dom.default)(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper; // Find Wrapper\n\n var $wrapperEl;\n\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = (0, _dom.default)(el.shadowRoot.querySelector(\".\" + swiper.params.wrapperClass)); // Children needs to return slot items\n\n $wrapperEl.children = function (options) {\n return $el.children(options);\n };\n } else {\n $wrapperEl = $el.children(\".\" + swiper.params.wrapperClass);\n }\n\n (0, _utils.extend)(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n };\n\n _proto.init = function init(el) {\n var swiper = this;\n if (swiper.initialized) return swiper;\n var mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n };\n\n _proto.destroy = function destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n (0, _utils.deleteProps)(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n };\n\n Swiper.extendDefaults = function extendDefaults(newDefaults) {\n (0, _utils.extend)(extendedDefaults, newDefaults);\n };\n\n Swiper.installModule = function installModule(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n var name = module.name || Object.keys(Swiper.prototype.modules).length + \"_\" + (0, _utils.now)();\n Swiper.prototype.modules[name] = module;\n };\n\n Swiper.use = function use(module) {\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Swiper.installModule(m);\n });\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n };\n\n _createClass(Swiper, null, [{\n key: \"extendedDefaults\",\n get: function get() {\n return extendedDefaults;\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return _defaults.default;\n }\n }]);\n\n return Swiper;\n}();\n\nObject.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([_resize.default, _observer.default]);\nvar _default = Swiper;\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _default = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: false,\n nested: false,\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/* eslint-disable no-underscore-dangle */\nvar _default = {\n on: function on(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once: function once(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny: function onAny(handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n offAny: function offAny(handler) {\n var self = this;\n if (!self.eventsAnyListeners) return self;\n var index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n off: function off(events, handler) {\n var self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit: function emit() {\n var self = this;\n if (!self.eventsListeners) return self;\n var events;\n var data;\n var context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(function (eventHandler) {\n eventHandler.apply(context, [event].concat(data));\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _onTouchStart = _interopRequireDefault(require(\"./onTouchStart\"));\n\nvar _onTouchMove = _interopRequireDefault(require(\"./onTouchMove\"));\n\nvar _onTouchEnd = _interopRequireDefault(require(\"./onTouchEnd\"));\n\nvar _onResize = _interopRequireDefault(require(\"./onResize\"));\n\nvar _onClick = _interopRequireDefault(require(\"./onClick\"));\n\nvar _onScroll = _interopRequireDefault(require(\"./onScroll\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n swiper.onTouchStart = _onTouchStart.default.bind(swiper);\n swiper.onTouchMove = _onTouchMove.default.bind(swiper);\n swiper.onTouchEnd = _onTouchEnd.default.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = _onScroll.default.bind(swiper);\n }\n\n swiper.onClick = _onClick.default.bind(swiper);\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize.default, true);\n } else {\n swiper.on('observerUpdate', _onResize.default, true);\n }\n}\n\nfunction detachEvents() {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize.default);\n}\n\nvar _default = {\n attachEvents: attachEvents,\n detachEvents: detachEvents\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = onClick;\n\nfunction onClick(e) {\n var swiper = this;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = onResize;\n\nfunction onResize() {\n var swiper = this;\n var params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n var allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = onScroll;\n\nfunction onScroll() {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = onTouchEnd;\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction onTouchEnd(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n $wrapperEl = swiper.$wrapperEl,\n slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n var touchEndTime = (0, _utils.now)();\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = (0, _utils.now)();\n (0, _utils.nextTick)(function () {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n var currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || (0, _utils.now)() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n var nextSlide;\n\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(function () {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n swiper.emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n return;\n } // Find current slide\n\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + _increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + _increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = onTouchMove;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../../utils/dom\"));\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction onTouchMove(event) {\n var document = (0, _ssrWindow.getDocument)();\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n (0, _utils.extend)(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = (0, _utils.now)();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && (0, _dom.default)(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: (0, _utils.now)()\n });\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = onTouchStart;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../../utils/dom\"));\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction onTouchStart(event) {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n var window = (0, _ssrWindow.getWindow)();\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n var $targetEl = (0, _dom.default)(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root componenet\n\n var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = (0, _dom.default)(event.path[0]);\n }\n\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass)[0]) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n (0, _utils.extend)(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = (0, _utils.now)();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n\n if (document.activeElement && (0, _dom.default)(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _setGrabCursor = _interopRequireDefault(require(\"./setGrabCursor\"));\n\nvar _unsetGrabCursor = _interopRequireDefault(require(\"./unsetGrabCursor\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n setGrabCursor: _setGrabCursor.default,\n unsetGrabCursor: _unsetGrabCursor.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = setGrabCursor;\n\nfunction setGrabCursor(moving) {\n var swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = unsetGrabCursor;\n\nfunction unsetGrabCursor() {\n var swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper.el.style.cursor = '';\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _loadImage = _interopRequireDefault(require(\"./loadImage\"));\n\nvar _preloadImages = _interopRequireDefault(require(\"./preloadImages\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n loadImage: _loadImage.default,\n preloadImages: _preloadImages.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = loadImage;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../../utils/dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var window = (0, _ssrWindow.getWindow)();\n var image;\n\n function onReady() {\n if (callback) callback();\n }\n\n var isPicture = (0, _dom.default)(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = preloadImages;\n\nfunction preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _loopCreate = _interopRequireDefault(require(\"./loopCreate\"));\n\nvar _loopFix = _interopRequireDefault(require(\"./loopFix\"));\n\nvar _loopDestroy = _interopRequireDefault(require(\"./loopDestroy\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n loopCreate: _loopCreate.default,\n loopFix: _loopFix.default,\n loopDestroy: _loopDestroy.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = loopCreate;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../../utils/dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction loopCreate() {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\n\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = (0, _dom.default)(document.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\n $wrapperEl.append(blankNode);\n }\n\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (el, index) {\n var slide = (0, _dom.default)(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (var _i = 0; _i < appendSlides.length; _i += 1) {\n $wrapperEl.append((0, _dom.default)(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {\n $wrapperEl.prepend((0, _dom.default)(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = loopDestroy;\n\nfunction loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n slides = swiper.slides;\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\n slides.removeAttr('data-swiper-slide-index');\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = loopFix;\n\nfunction loopFix() {\n var swiper = this;\n swiper.emit('beforeLoopFix');\n var activeIndex = swiper.activeIndex,\n slides = swiper.slides,\n loopedSlides = swiper.loopedSlides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n snapGrid = swiper.snapGrid,\n rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (_slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = addSlide;\n\nfunction addSlide(index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (slides[_i]) $wrapperEl.append(slides[_i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {\n $wrapperEl.append(slidesBuffer[_i2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = appendSlide;\n\nfunction appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _appendSlide = _interopRequireDefault(require(\"./appendSlide\"));\n\nvar _prependSlide = _interopRequireDefault(require(\"./prependSlide\"));\n\nvar _addSlide = _interopRequireDefault(require(\"./addSlide\"));\n\nvar _removeSlide = _interopRequireDefault(require(\"./removeSlide\"));\n\nvar _removeAllSlides = _interopRequireDefault(require(\"./removeAllSlides\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n appendSlide: _appendSlide.default,\n prependSlide: _prependSlide.default,\n addSlide: _addSlide.default,\n removeSlide: _removeSlide.default,\n removeAllSlides: _removeAllSlides.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = prependSlide;\n\nfunction prependSlide(slides) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n var newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeAllSlides;\n\nfunction removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeSlide;\n\nfunction removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _utils = require(\"../../utils/utils\");\n\nvar _default = {\n useParams: function useParams(instanceParams) {\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\n if (module.params) {\n (0, _utils.extend)(instanceParams, module.params);\n }\n });\n },\n useModules: function useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Add event listeners\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _slideTo = _interopRequireDefault(require(\"./slideTo\"));\n\nvar _slideToLoop = _interopRequireDefault(require(\"./slideToLoop\"));\n\nvar _slideNext = _interopRequireDefault(require(\"./slideNext\"));\n\nvar _slidePrev = _interopRequireDefault(require(\"./slidePrev\"));\n\nvar _slideReset = _interopRequireDefault(require(\"./slideReset\"));\n\nvar _slideToClosest = _interopRequireDefault(require(\"./slideToClosest\"));\n\nvar _slideToClickedSlide = _interopRequireDefault(require(\"./slideToClickedSlide\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n slideTo: _slideTo.default,\n slideToLoop: _slideToLoop.default,\n slideNext: _slideNext.default,\n slidePrev: _slidePrev.default,\n slideReset: _slideReset.default,\n slideToClosest: _slideToClosest.default,\n slideToClickedSlide: _slideToClickedSlide.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = slideNext;\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = slidePrev;\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n\n var prevIndex;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = slideReset;\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = slideTo;\n\nfunction slideTo(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\"The 'index' argument cannot have type other than 'number' or 'string'. [\" + typeof index + \"] given.\");\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n var indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n var isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\"The passed-in 'index' (string) couldn't be converted to 'number'. [\" + index + \"] given.\");\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n var params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n var normalizedTranslate = -Math.floor(translate * 100);\n var normalizedGird = Math.floor(slidesGrid[i] * 100);\n var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGird) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n var t = -translate;\n\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = slideToClickedSlide;\n\nvar _dom = _interopRequireDefault(require(\"../../../utils/dom\"));\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt((0, _dom.default)(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n (0, _utils.nextTick)(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n (0, _utils.nextTick)(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = slideToClosest;\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n var swiper = this;\n var index = swiper.activeIndex;\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n var prevSnap = swiper.snapGrid[snapIndex - 1];\n var _currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = slideToLoop;\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _setTransition = _interopRequireDefault(require(\"./setTransition\"));\n\nvar _transitionStart = _interopRequireDefault(require(\"./transitionStart\"));\n\nvar _transitionEnd = _interopRequireDefault(require(\"./transitionEnd\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n setTransition: _setTransition.default,\n transitionStart: _transitionStart.default,\n transitionEnd: _transitionEnd.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = setTransition;\n\nfunction setTransition(duration, byController) {\n var swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = transitionEnd;\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex,\n params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n\n swiper.emit('slideChangeTransitionEnd');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = transitionStart;\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n params = swiper.params,\n previousIndex = swiper.previousIndex;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n\n swiper.emit('slideChangeTransitionStart');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = getSwiperTranslate;\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n var swiper = this;\n var params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = (0, _utils.getTranslate)($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _getTranslate = _interopRequireDefault(require(\"./getTranslate\"));\n\nvar _setTranslate = _interopRequireDefault(require(\"./setTranslate\"));\n\nvar _minTranslate = _interopRequireDefault(require(\"./minTranslate\"));\n\nvar _maxTranslate = _interopRequireDefault(require(\"./maxTranslate\"));\n\nvar _translateTo = _interopRequireDefault(require(\"./translateTo\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n getTranslate: _getTranslate.default,\n setTranslate: _setTranslate.default,\n minTranslate: _minTranslate.default,\n maxTranslate: _maxTranslate.default,\n translateTo: _translateTo.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = maxTranslate;\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = minTranslate;\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = setTranslate;\n\nfunction setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = translateTo;\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var minTranslate = swiper.minTranslate();\n var maxTranslate = swiper.maxTranslate();\n var newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _updateSize = _interopRequireDefault(require(\"./updateSize\"));\n\nvar _updateSlides = _interopRequireDefault(require(\"./updateSlides\"));\n\nvar _updateAutoHeight = _interopRequireDefault(require(\"./updateAutoHeight\"));\n\nvar _updateSlidesOffset = _interopRequireDefault(require(\"./updateSlidesOffset\"));\n\nvar _updateSlidesProgress = _interopRequireDefault(require(\"./updateSlidesProgress\"));\n\nvar _updateProgress = _interopRequireDefault(require(\"./updateProgress\"));\n\nvar _updateSlidesClasses = _interopRequireDefault(require(\"./updateSlidesClasses\"));\n\nvar _updateActiveIndex = _interopRequireDefault(require(\"./updateActiveIndex\"));\n\nvar _updateClickedSlide = _interopRequireDefault(require(\"./updateClickedSlide\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n updateSize: _updateSize.default,\n updateSlides: _updateSlides.default,\n updateAutoHeight: _updateAutoHeight.default,\n updateSlidesOffset: _updateSlidesOffset.default,\n updateSlidesProgress: _updateSlidesProgress.default,\n updateProgress: _updateProgress.default,\n updateSlidesClasses: _updateSlidesClasses.default,\n updateActiveIndex: _updateActiveIndex.default,\n updateClickedSlide: _updateClickedSlide.default\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateActiveIndex;\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n (0, _utils.extend)(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateAutoHeight;\n\nfunction updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n } // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(function (slide) {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', newHeight + \"px\");\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateClickedSlide;\n\nvar _dom = _interopRequireDefault(require(\"../../../utils/dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = (0, _dom.default)(e.target).closest(\".\" + params.slideClass)[0];\n var slideFound = false;\n var slideIndex;\n\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt((0, _dom.default)(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateProgress;\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction updateProgress(translate) {\n var swiper = this;\n\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n (0, _utils.extend)(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateSize;\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n (0, _utils.extend)(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateSlides;\n\nvar _utils = require(\"../../../utils/utils\");\n\nfunction updateSlides() {\n var swiper = this;\n\n var getDirectionLabel = function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n };\n\n var getDirectionPropertyValue = function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n };\n\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n\n function slidesForMargin(slideEl, slideIndex) {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }\n\n var offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.slidesGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: ''\n });\n var slidesNumberEvenToRows;\n\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 && params.spaceBetween && params.spaceBetween + \"px\");\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = getComputedStyle(slide[0]);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n var width = getDirectionPropertyValue(slideStyles, 'width');\n var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n var _slide$ = slide[0],\n clientWidth = _slide$.clientWidth,\n offsetWidth = _slide$.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = slideSize + \"px\";\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\n\n if (params.setWrapperSize) {\n var _$wrapperEl$css;\n\n $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css));\n }\n\n if (params.slidesPerColumn > 1) {\n var _$wrapperEl$css2;\n\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css2));\n\n if (params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\n var slidesGridItem = snapGrid[_i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\n var _slidesGridItem = snapGrid[_i2];\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\n\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(_slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n var _slides$filter$css;\n\n var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter(slidesForMargin).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + \"px\", _slides$filter$css));\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n var maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(function (snap) {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n var _allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n _allSlidesSize -= params.spaceBetween;\n\n if (_allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n (0, _utils.extend)(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateSlidesClasses;\n\nfunction updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex,\n realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateSlidesOffset;\n\nfunction updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = updateSlidesProgress;\n\nvar _dom = _interopRequireDefault(require(\"../../../utils/dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n\n swiper.visibleSlides = (0, _dom.default)(swiper.visibleSlides);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n slides = swiper.slides,\n slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform = swiper.translate;\n var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth; // Each slide offset from center\n\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n var translateZ = -translate * Math.abs(offsetMultiplier);\n var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n var translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg) scale(\" + scale + \")\";\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = (0, _dom.default)(\"
\");\n $slideEl.append($shadowBeforeEl);\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = (0, _dom.default)(\"
\");\n $slideEl.append($shadowAfterEl);\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n};\nvar _default = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n coverflowEffect: _extends({}, Coverflow)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"coverflow\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides,\n swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n rtl = swiper.rtlTranslate,\n swiperSize = swiper.size,\n browser = swiper.browser;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = (0, _dom.default)('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: swiperWidth + \"px\"\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = (0, _dom.default)('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n // Set shadows\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = (0, _dom.default)(\"
\");\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = (0, _dom.default)(\"
\");\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n '-moz-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n '-ms-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n 'transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\"\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\"translate3d(0px, \" + (swiperWidth / 2 + params.shadowOffset) + \"px, \" + -swiperWidth / 2 + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + params.shadowScale + \")\");\n } else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var offset = params.shadowOffset;\n $cubeShadowEl.transform(\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + (swiperHeight / 2 + offset) + \"px, \" + -swiperHeight / 2 / scale2 + \"px) rotateX(-90deg)\");\n }\n }\n\n var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\");\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el,\n slides = swiper.slides;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n }\n};\nvar _default = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n cubeEffect: _extends({}, Cube)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"cube\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n };\n (0, _utils.extend)(swiper.params, overwriteParams);\n (0, _utils.extend)(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl.css({\n opacity: slideOpacity\n }).transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nvar _default = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n fadeEffect: _extends({}, Fade)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"fade\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n (0, _utils.extend)(swiper.params, overwriteParams);\n (0, _utils.extend)(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n var offset = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = (0, _dom.default)(\"
\");\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = (0, _dom.default)(\"
\");\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n\n $slideEl.transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n activeIndex = swiper.activeIndex,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false; // eslint-disable-next-line\n\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nvar _default = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n flipEffect: _extends({}, Flip)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"flip\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n (0, _utils.extend)(swiper.params, overwriteParams);\n (0, _utils.extend)(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar HashNavigation = {\n onHashCange: function onHashCange() {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n swiper.emit('hashChange');\n var newHash = document.location.hash.replace('#', '');\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n var newIndex = swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-hash=\\\"\" + newHash + \"\\\"]\").index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash: function setHash() {\n var swiper = this;\n var window = (0, _ssrWindow.getWindow)();\n var document = (0, _ssrWindow.getDocument)();\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, \"#\" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');\n swiper.emit('hashSet');\n } else {\n var slide = swiper.slides.eq(swiper.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init: function init() {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n var window = (0, _ssrWindow.getWindow)();\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n swiper.hashNavigation.initialized = true;\n var hash = document.location.hash.replace('#', '');\n\n if (hash) {\n var speed = 0;\n\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n (0, _dom.default)(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var window = (0, _ssrWindow.getWindow)();\n\n if (swiper.params.hashNavigation.watchState) {\n (0, _dom.default)(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n }\n};\nvar _default = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n hashNavigation: _extends({\n initialized: false\n }, HashNavigation)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n 'transitionEnd _freeModeNoMomentumRelease': function transitionEnd_freeModeNoMomentumRelease(swiper) {\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar History = {\n init: function init() {\n var swiper = this;\n var window = (0, _ssrWindow.getWindow)();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n var history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues(swiper.params.url);\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var window = (0, _ssrWindow.getWindow)();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState: function setHistoryPopState() {\n var swiper = this;\n swiper.history.paths = History.getPathValues(swiper.params.url);\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues: function getPathValues(urlOverride) {\n var window = (0, _ssrWindow.getWindow)();\n var location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n var pathArray = location.pathname.slice(1).split('/').filter(function (part) {\n return part !== '';\n });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return {\n key: key,\n value: value\n };\n },\n setHistory: function setHistory(key, index) {\n var swiper = this;\n var window = (0, _ssrWindow.getWindow)();\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n var location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n var slide = swiper.slides.eq(index);\n var value = History.slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n var root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = root + \"/\" + key + \"/\" + value;\n } else if (!location.pathname.includes(key)) {\n value = key + \"/\" + value;\n }\n\n var currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value: value\n }, null, value);\n } else {\n window.history.pushState({\n value: value\n }, null, value);\n }\n },\n slugify: function slugify(text) {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n\n if (value) {\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHistory = History.slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n }\n};\nvar _default = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides'\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n history: _extends({}, History)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n 'transitionEnd _freeModeNoMomentumRelease': function transitionEnd_freeModeNoMomentumRelease(swiper) {\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Keyboard = {\n handle: function handle(event) {\n var swiper = this;\n var window = (0, _ssrWindow.getWindow)();\n var document = (0, _ssrWindow.getDocument)();\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n var kc = e.keyCode || e.charCode;\n var pageUpDown = swiper.params.keyboard.pageUpDown;\n var isPageUp = pageUpDown && kc === 33;\n var isPageDown = pageUpDown && kc === 34;\n var isArrowLeft = kc === 37;\n var isArrowRight = kc === 39;\n var isArrowUp = kc === 38;\n var isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n var inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(\".\" + swiper.params.slideClass).length > 0 && swiper.$el.parents(\".\" + swiper.params.slideActiveClass).length === 0) {\n return undefined;\n }\n\n var $el = swiper.$el;\n var swiperWidth = $el[0].clientWidth;\n var swiperHeight = $el[0].clientHeight;\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable: function enable() {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n if (swiper.keyboard.enabled) return;\n (0, _dom.default)(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n var document = (0, _ssrWindow.getDocument)();\n if (!swiper.keyboard.enabled) return;\n (0, _dom.default)(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n }\n};\nvar _default = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n keyboard: _extends({\n enabled: false\n }, Keyboard)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Lazy = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if (loadInDuplicate === void 0) {\n loadInDuplicate = true;\n }\n\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var $slideEl = isVirtual ? swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\") : swiper.slides.eq(index);\n var $images = $slideEl.find(\".\" + params.elementClass + \":not(.\" + params.loadedClass + \"):not(.\" + params.loadingClass + \")\");\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(function (imageEl) {\n var $imageEl = (0, _dom.default)(imageEl);\n $imageEl.addClass(params.loadingClass);\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n var $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', \"url(\\\"\" + background + \"\\\")\");\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(function (sourceEl) {\n var $source = (0, _dom.default)(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(\".\" + params.preloaderClass).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + swiper.params.slideDuplicateClass + \")\");\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var duplicatedSlide = swiper.$wrapperEl.children(\".\" + swiper.params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\");\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n swiperParams = swiper.params,\n slides = swiper.slides,\n activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n var slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(\".\" + swiperParams.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\").length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return (0, _dom.default)(slideEl).attr('data-swiper-slide-index');\n }\n\n return (0, _dom.default)(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(\".\" + swiperParams.slideVisibleClass).each(function (slideEl) {\n var index = isVirtual ? (0, _dom.default)(slideEl).attr('data-swiper-slide-index') : (0, _dom.default)(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {\n if (slideExist(_i)) swiper.lazy.loadInSlide(_i);\n } // Prev Slides\n\n\n for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {\n if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);\n }\n } else {\n var nextSlide = $wrapperEl.children(\".\" + swiperParams.slideNextClass);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n var prevSlide = $wrapperEl.children(\".\" + swiperParams.slidePrevClass);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n checkInViewOnLoad: function checkInViewOnLoad() {\n var window = (0, _ssrWindow.getWindow)();\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var $scrollElement = swiper.params.lazy.scrollingElement ? (0, _dom.default)(swiper.params.lazy.scrollingElement) : (0, _dom.default)(window);\n var isWindow = $scrollElement[0] === window;\n var scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n var scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n var swiperOffset = swiper.$el.offset();\n var rtl = swiper.rtlTranslate;\n var inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (inView) {\n swiper.lazy.load();\n $scrollElement.off('scroll', swiper.lazy.checkInViewOnLoad);\n } else if (!swiper.lazy.scrollHandlerAttached) {\n swiper.lazy.scrollHandlerAttached = true;\n $scrollElement.on('scroll', swiper.lazy.checkInViewOnLoad);\n }\n }\n};\nvar _default = {\n name: 'lazy',\n params: {\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n lazy: _extends({\n initialImageLoaded: false\n }, Lazy)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n if (swiper.params.lazy.checkInView) {\n swiper.lazy.checkInViewOnLoad();\n } else {\n swiper.lazy.load();\n }\n }\n },\n scroll: function scroll(swiper) {\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n 'scrollbarDragMove resize _freeModeNoMomentumRelease': function lazyLoad(swiper) {\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart(swiper) {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd: function transitionEnd(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isEventSupported() {\n var document = (0, _ssrWindow.getDocument)();\n var eventName = 'onwheel';\n var isSupported = (eventName in document);\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nvar Mousewheel = {\n lastScrollTime: (0, _utils.now)(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event: function event() {\n var window = (0, _ssrWindow.getWindow)();\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize: function normalize(e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n var sX = 0;\n var sY = 0; // spinX, spinY\n\n var pX = 0;\n var pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n },\n handleMouseEnter: function handleMouseEnter() {\n var swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n var swiper = this;\n swiper.mouseEntered = false;\n },\n handle: function handle(event) {\n var e = event;\n var disableParentSwiper = true;\n var swiper = this;\n var params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n var data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n var positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n var newEvent = {\n time: (0, _utils.now)(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n var recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n var _newEvent = {\n time: (0, _utils.now)(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;\n var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n var position = swiper.getTranslate() + delta * params.sensitivity;\n var wasBeginning = swiper.isBeginning;\n var wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n\n if (_recentWheelEvents.length >= 15) {\n _recentWheelEvents.shift(); // only store the last N events\n\n }\n\n var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;\n\n var firstEvent = _recentWheelEvents[0];\n\n _recentWheelEvents.push(_newEvent);\n\n if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n _recentWheelEvents.splice(0);\n } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n var snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = _newEvent;\n\n _recentWheelEvents.splice(0);\n\n swiper.mousewheel.timeout = (0, _utils.nextTick)(function () {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = (0, _utils.nextTick)(function () {\n var snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = _newEvent;\n\n _recentWheelEvents.splice(0);\n\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n },\n animateSlider: function animateSlider(newEvent) {\n var swiper = this;\n var window = (0, _ssrWindow.getWindow)();\n\n if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (this.params.mousewheel.thresholdTime && (0, _utils.now)() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && (0, _utils.now)() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n },\n releaseScroll: function releaseScroll(newEvent) {\n var swiper = this;\n var params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n },\n enable: function enable() {\n var swiper = this;\n var event = Mousewheel.event();\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);\n }\n\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable: function disable() {\n var swiper = this;\n var event = Mousewheel.event();\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);\n }\n\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n }\n};\nvar _default = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n mousewheel: {\n enabled: false,\n lastScrollTime: (0, _utils.now)(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n enable: Mousewheel.enable,\n disable: Mousewheel.disable,\n handle: Mousewheel.handle,\n handleMouseEnter: Mousewheel.handleMouseEnter,\n handleMouseLeave: Mousewheel.handleMouseLeave,\n animateSlider: Mousewheel.animateSlider,\n releaseScroll: Mousewheel.releaseScroll\n }\n });\n },\n on: {\n init: function init(swiper) {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy: function destroy(swiper) {\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = (0, _dom.default)(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = (0, _dom.default)(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n (0, _utils.extend)(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nvar _default = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n click: function click(swiper, e) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n var targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !(0, _dom.default)(targetEl).is($prevEl) && !(0, _dom.default)(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el; // Current/Total\n\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n\n if ($el.length > 1) {\n bullets.each(function (bullet) {\n var $bullet = (0, _dom.default)(bullet);\n var bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (bulletIndex === firstIndex) {\n $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n }\n\n if (bulletIndex === lastIndex) {\n $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n var bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {\n bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n }\n\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\n }\n }\n\n if (params.type === 'fraction') {\n $el.find((0, _utils.classesToSelector)(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find((0, _utils.classesToSelector)(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n var progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find((0, _utils.classesToSelector)(params.progressbarFillClass)).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', $el[0]);\n } else {\n swiper.emit('paginationUpdate', $el[0]);\n }\n\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\">\";\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find((0, _utils.classesToSelector)(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"\" + ' / ' + (\"\");\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"\";\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el) return;\n var $el = (0, _dom.default)(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\n swiper.pagination.dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', (0, _utils.classesToSelector)(params.bulletClass), function onClick(e) {\n e.preventDefault();\n var index = (0, _dom.default)(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n (0, _utils.extend)(swiper.pagination, {\n $el: $el,\n el: $el[0]\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', (0, _utils.classesToSelector)(params.bulletClass));\n }\n }\n};\nvar _default = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function formatFractionCurrent(number) {\n return number;\n },\n formatFractionTotal: function formatFractionTotal(number) {\n return number;\n },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable',\n // NEW\n lockClass: 'swiper-pagination-lock'\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n pagination: _extends({\n dynamicBulletIndex: 0\n }, Pagination)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy(swiper) {\n swiper.pagination.destroy();\n },\n click: function click(swiper, e) {\n var targetEl = e.target;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !(0, _dom.default)(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n swiper.emit('paginationShow');\n } else {\n swiper.emit('paginationHide');\n }\n\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n var $el = (0, _dom.default)(el);\n var rtlFactor = rtl ? -1 : 1;\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = parseInt(x, 10) * progress * rtlFactor + \"%\";\n } else {\n x = x * progress * rtlFactor + \"px\";\n }\n\n if (y.indexOf('%') >= 0) {\n y = parseInt(y, 10) * progress + \"%\";\n } else {\n y = y * progress + \"px\";\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(\"translate3d(\" + x + \", \" + y + \", 0px)\");\n } else {\n var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\");\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el,\n slides = swiper.slides,\n progress = swiper.progress,\n snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideEl, slideIndex) {\n var slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n (0, _dom.default)(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition(duration) {\n if (duration === void 0) {\n duration = this.params.speed;\n }\n\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {\n var $parallaxEl = (0, _dom.default)(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n }\n};\nvar _default = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n parallax: _extends({}, Parallax)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n var scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate,\n progress = swiper.progress;\n var dragSize = scrollbar.dragSize,\n trackSize = scrollbar.trackSize,\n $dragEl = scrollbar.$dragEl,\n $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(\"translate3d(\" + newPos + \"px, 0, 0)\");\n $dragEl[0].style.width = newSize + \"px\";\n } else {\n $dragEl.transform(\"translate3d(0px, \" + newPos + \"px, 0)\");\n $dragEl[0].style.height = newSize + \"px\";\n }\n\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl,\n $el = scrollbar.$el;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = dragSize + \"px\";\n } else {\n $dragEl[0].style.height = dragSize + \"px\";\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n (0, _utils.extend)(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition: function getPointerPosition(e) {\n var swiper = this;\n\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n },\n setDragPosition: function setDragPosition(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el,\n dragSize = scrollbar.dragSize,\n trackSize = scrollbar.trackSize,\n dragStartPos = scrollbar.dragStartPos;\n var positionRatio;\n positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el,\n $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n clearTimeout(swiper.scrollbar.dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el,\n $dragEl = scrollbar.$dragEl;\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd: function onDragEnd(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = (0, _utils.nextTick)(function () {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n swiper.emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var document = (0, _ssrWindow.getDocument)();\n var scrollbar = swiper.scrollbar,\n touchEventsTouch = swiper.touchEventsTouch,\n touchEventsDesktop = swiper.touchEventsDesktop,\n params = swiper.params,\n support = swiper.support;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n\n if (!support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var document = (0, _ssrWindow.getDocument)();\n var scrollbar = swiper.scrollbar,\n touchEventsTouch = swiper.touchEventsTouch,\n touchEventsDesktop = swiper.touchEventsDesktop,\n params = swiper.params,\n support = swiper.support;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n\n if (!support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var scrollbar = swiper.scrollbar,\n $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n var $el = (0, _dom.default)(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n var $dragEl = $el.find(\".\" + swiper.params.scrollbar.dragClass);\n\n if ($dragEl.length === 0) {\n $dragEl = (0, _dom.default)(\"
\");\n $el.append($dragEl);\n }\n\n (0, _utils.extend)(scrollbar, {\n $el: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n }\n};\nvar _default = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag'\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n scrollbar: _extends({\n isTouched: false,\n timeout: null,\n dragTimeout: null\n }, Scrollbar)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update(swiper) {\n swiper.scrollbar.updateSize();\n },\n resize: function resize(swiper) {\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate(swiper) {\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate(swiper) {\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n swiper.scrollbar.setTransition(duration);\n },\n destroy: function destroy(swiper) {\n swiper.scrollbar.destroy();\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _utils = require(\"../../utils/utils\");\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Thumbs = {\n init: function init() {\n var swiper = this;\n var thumbsParams = swiper.params.thumbs;\n if (swiper.thumbs.initialized) return false;\n swiper.thumbs.initialized = true;\n var SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n (0, _utils.extend)(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n (0, _utils.extend)(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if ((0, _utils.isObject)(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass((0, _utils.extend)({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false\n }));\n swiper.thumbs.swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n return true;\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && (0, _dom.default)(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n var slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt((0, _dom.default)(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n var prevIndex = swiper.slides.eq(currentIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n var direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\").addClass(thumbActiveClass);\n }\n } else {\n for (var _i = 0; _i < thumbsToActivate; _i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);\n }\n }\n }\n};\nvar _default = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs'\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n thumbs: _extends({\n swiper: null,\n initialized: false\n }, Thumbs)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n var thumbs = swiper.params.thumbs;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update: function update(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize: function resize(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition: function setTransition(swiper, duration) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy(swiper) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Virtual = {\n update: function update(force) {\n var swiper = this;\n var _swiper$params = swiper.params,\n slidesPerView = _swiper$params.slidesPerView,\n slidesPerGroup = _swiper$params.slidesPerGroup,\n centeredSlides = _swiper$params.centeredSlides;\n var _swiper$params$virtua = swiper.params.virtual,\n addSlidesBefore = _swiper$params$virtua.addSlidesBefore,\n addSlidesAfter = _swiper$params$virtua.addSlidesAfter;\n var _swiper$virtual = swiper.virtual,\n previousFrom = _swiper$virtual.from,\n previousTo = _swiper$virtual.to,\n slides = _swiper$virtual.slides,\n previousSlidesGrid = _swiper$virtual.slidesGrid,\n renderSlide = _swiper$virtual.renderSlide,\n previousOffset = _swiper$virtual.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n var offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n var slidesAfter;\n var slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n (0, _utils.extend)(swiper.virtual, {\n from: from,\n to: to,\n offset: offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, offset + \"px\");\n }\n\n swiper.updateProgress();\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset,\n from: from,\n to: to,\n slides: function getSlides() {\n var slidesToRender = [];\n\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n\n return;\n }\n\n var prependIndexes = [];\n var appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(\".\" + swiper.params.slideClass).remove();\n } else {\n for (var i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\").remove();\n }\n }\n }\n\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (_i >= from && _i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(_i);\n } else {\n if (_i > previousTo) appendIndexes.push(_i);\n if (_i < previousFrom) prependIndexes.push(_i);\n }\n }\n }\n\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) {\n return b - a;\n }).forEach(function (index) {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + \"px\");\n onRendered();\n },\n renderSlide: function renderSlide(slide, index) {\n var swiper = this;\n var params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n var $slideEl = params.renderSlide ? (0, _dom.default)(params.renderSlide.call(swiper, slide, index)) : (0, _dom.default)(\"
\" + slide + \"
\");\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide: function appendSlide(slides) {\n var swiper = this;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n swiper.virtual.update(true);\n },\n prependSlide: function prependSlide(slides) {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var newActiveIndex = activeIndex + 1;\n var numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n var $cachedEl = cache[cachedIndex];\n var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide: function removeSlide(slidesIndexes) {\n var swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n var activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides: function removeAllSlides() {\n var swiper = this;\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n }\n};\nvar _default = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n virtual: _extends({}, Virtual, {\n slides: swiper.params.virtual.slides,\n cache: {}\n })\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"virtual\");\n var overwriteParams = {\n watchSlidesProgress: true\n };\n (0, _utils.extend)(swiper.params, overwriteParams);\n (0, _utils.extend)(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate: function setTranslate(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _dom = _interopRequireDefault(require(\"../../utils/dom\"));\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = (0, _dom.default)(e.target).closest(\".\" + swiper.params.slideClass);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n swiper.zoom.isScaling = true;\n },\n onGestureChange: function onGestureChange(e) {\n var swiper = this;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') zoom.onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);\n }\n\n gesture.$imageEl.transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var device = swiper.device;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (!support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart: function onTouchStart(e) {\n var swiper = this;\n var device = swiper.device;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image,\n velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = (0, _utils.getTranslate)(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = (0, _utils.getTranslate)(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n } // Define if we need image drag\n\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\n },\n onTouchEnd: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image,\n velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\n },\n onTransitionEnd: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle: function toggle(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in: function _in(e) {\n var swiper = this;\n var window = (0, _ssrWindow.getWindow)();\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture,\n image = zoom.image;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n gesture.$slideEl.addClass(\"\" + params.zoomedSlideClass);\n var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\");\n gesture.$imageEl.transition(300).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n },\n out: function out() {\n var swiper = this;\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(\"\" + params.zoomedSlideClass);\n gesture.$slideEl = undefined;\n },\n toggleGestures: function toggleGestures(method) {\n var swiper = this;\n var zoom = swiper.zoom;\n var selector = zoom.slideSelector,\n passive = zoom.passiveListener;\n swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);\n swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);\n swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);\n },\n enableGestures: function enableGestures() {\n if (this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = true;\n this.zoom.toggleGestures('on');\n },\n disableGestures: function disableGestures() {\n if (!this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = false;\n this.zoom.toggleGestures('off');\n },\n // Attach/Detach Events\n enable: function enable() {\n var swiper = this;\n var support = swiper.support;\n var zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n var activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n var slideSelector = \".\" + swiper.params.slideClass;\n swiper.zoom.passiveListener = passiveListener;\n swiper.zoom.slideSelector = slideSelector; // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled) return;\n var support = swiper.support;\n swiper.zoom.enabled = false;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n var activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n var slideSelector = \".\" + swiper.params.slideClass; // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\n }\n};\nvar _default = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n zoom: _extends({\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n }\n }, Zoom)\n });\n var scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get: function get() {\n return scale;\n },\n set: function set(value) {\n if (scale !== value) {\n var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy(swiper) {\n swiper.zoom.disable();\n },\n touchStart: function touchStart(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(swiper, e) {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _utils = require(\"../../utils/utils\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Observer = {\n attach: function attach(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var window = (0, _ssrWindow.getWindow)();\n var swiper = this;\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!swiper.support.observer || !swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n }\n};\nvar _default = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n },\n create: function create() {\n var swiper = this;\n (0, _utils.bindModuleMethods)(swiper, {\n observer: _extends({}, Observer, {\n observers: []\n })\n });\n },\n on: {\n init: function init(swiper) {\n swiper.observer.init();\n },\n destroy: function destroy(swiper) {\n swiper.observer.destroy();\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _utils = require(\"../../utils/utils\");\n\nvar supportsResizeObserver = function supportsResizeObserver() {\n var window = (0, _ssrWindow.getWindow)();\n return typeof window.ResizeObserver !== 'undefined';\n};\n\nvar _default = {\n name: 'resize',\n create: function create() {\n var swiper = this;\n (0, _utils.extend)(swiper, {\n resize: {\n observer: null,\n createObserver: function createObserver() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.resize.observer = new ResizeObserver(function (entries) {\n var width = swiper.width,\n height = swiper.height;\n var newWidth = width;\n var newHeight = height;\n entries.forEach(function (_ref) {\n var contentBoxSize = _ref.contentBoxSize,\n contentRect = _ref.contentRect,\n target = _ref.target;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n swiper.resize.resizeHandler();\n }\n });\n swiper.resize.observer.observe(swiper.el);\n },\n removeObserver: function removeObserver() {\n if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {\n swiper.resize.observer.unobserve(swiper.el);\n swiper.resize.observer = null;\n }\n },\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init(swiper) {\n var window = (0, _ssrWindow.getWindow)();\n\n if (swiper.params.resizeObserver && supportsResizeObserver()) {\n swiper.resize.createObserver();\n return;\n } // Emit resize\n\n\n window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy(swiper) {\n var window = (0, _ssrWindow.getWindow)();\n swiper.resize.removeObserver();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n }\n }\n};\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _dom = require(\"dom7\");\n\nvar Methods = {\n addClass: _dom.addClass,\n removeClass: _dom.removeClass,\n hasClass: _dom.hasClass,\n toggleClass: _dom.toggleClass,\n attr: _dom.attr,\n removeAttr: _dom.removeAttr,\n transform: _dom.transform,\n transition: _dom.transition,\n on: _dom.on,\n off: _dom.off,\n trigger: _dom.trigger,\n transitionEnd: _dom.transitionEnd,\n outerWidth: _dom.outerWidth,\n outerHeight: _dom.outerHeight,\n styles: _dom.styles,\n offset: _dom.offset,\n css: _dom.css,\n each: _dom.each,\n html: _dom.html,\n text: _dom.text,\n is: _dom.is,\n index: _dom.index,\n eq: _dom.eq,\n append: _dom.append,\n prepend: _dom.prepend,\n next: _dom.next,\n nextAll: _dom.nextAll,\n prev: _dom.prev,\n prevAll: _dom.prevAll,\n parent: _dom.parent,\n parents: _dom.parents,\n closest: _dom.closest,\n find: _dom.find,\n children: _dom.children,\n filter: _dom.filter,\n remove: _dom.remove\n};\nObject.keys(Methods).forEach(function (methodName) {\n Object.defineProperty(_dom.$.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nvar _default = _dom.$;\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.getBrowser = getBrowser;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar browser;\n\nfunction calcBrowser() {\n var window = (0, _ssrWindow.getWindow)();\n\n function isSafari() {\n var ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.getDevice = getDevice;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar _getSupport = require(\"./get-support\");\n\nvar device;\n\nfunction calcDevice(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n userAgent = _ref.userAgent;\n\n var support = (0, _getSupport.getSupport)();\n var window = (0, _ssrWindow.getWindow)();\n var platform = window.navigator.platform;\n var ua = userAgent || window.navigator.userAgent;\n var device = {\n ios: false,\n android: false\n };\n var screenWidth = window.screen.width;\n var screenHeight = window.screen.height;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var windows = platform === 'Win32';\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + \"x\" + screenHeight) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!device) {\n device = calcDevice(overrides);\n }\n\n return device;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.getSupport = getSupport;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nvar support;\n\nfunction calcSupport() {\n var window = (0, _ssrWindow.getWindow)();\n var document = (0, _ssrWindow.getDocument)();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n observer: function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.deleteProps = deleteProps;\nexports.nextTick = nextTick;\nexports.now = now;\nexports.getTranslate = getTranslate;\nexports.isObject = isObject;\nexports.extend = extend;\nexports.bindModuleMethods = bindModuleMethods;\nexports.getComputedStyle = getComputedStyle;\nexports.classesToSelector = classesToSelector;\n\nvar _ssrWindow = require(\"ssr-window\");\n\nfunction deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n var window = (0, _ssrWindow.getWindow)();\n var style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n var window = (0, _ssrWindow.getWindow)();\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction extend() {\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n var noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (var i = 1; i < arguments.length; i += 1) {\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource)).filter(function (key) {\n return noExtend.indexOf(key) < 0;\n });\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach(function (key) {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(function (subKey) {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n\n instance[key] = obj[key];\n });\n}\n\nfunction classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return \".\" + classes.trim().replace(/([\\.:\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.');\n}", "/**\n * Swiper 6.5.9\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 30, 2021\n */\n\n\"use strict\";\nexports.__esModule = true;\nexports.default = require('./cjs/components/core/core-class').default;\nexports.Swiper = require('./cjs/components/core/core-class').default;\nexports.Virtual = require('./cjs/components/virtual/virtual').default;\nexports.Keyboard = require('./cjs/components/keyboard/keyboard').default;\nexports.Mousewheel = require('./cjs/components/mousewheel/mousewheel').default;\nexports.Navigation = require('./cjs/components/navigation/navigation').default;\nexports.Pagination = require('./cjs/components/pagination/pagination').default;\nexports.Scrollbar = require('./cjs/components/scrollbar/scrollbar').default;\nexports.Parallax = require('./cjs/components/parallax/parallax').default;\nexports.Zoom = require('./cjs/components/zoom/zoom').default;\nexports.Lazy = require('./cjs/components/lazy/lazy').default;\nexports.Controller = require('./cjs/components/controller/controller').default;\nexports.A11y = require('./cjs/components/a11y/a11y').default;\nexports.History = require('./cjs/components/history/history').default;\nexports.HashNavigation = require('./cjs/components/hash-navigation/hash-navigation').default;\nexports.Autoplay = require('./cjs/components/autoplay/autoplay').default;\nexports.EffectFade = require('./cjs/components/effect-fade/effect-fade').default;\nexports.EffectCube = require('./cjs/components/effect-cube/effect-cube').default;\nexports.EffectFlip = require('./cjs/components/effect-flip/effect-flip').default;\nexports.EffectCoverflow = require('./cjs/components/effect-coverflow/effect-coverflow').default;\nexports.Thumbs = require('./cjs/components/thumbs/thumbs').default;", "var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};", "(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.WHATWGFetch = {})));\n}(this, (function (exports) { 'use strict';\n\n var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global);\n\n var support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = global.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "export default class {\r\n\r\n constructor(options, statemanager) {\r\n const defaults = {\r\n btnOffCanvas: '.btn-offcanvas'\r\n };\r\n\r\n this.$elem = document.querySelector('#global-header');\r\n this.$body = document.body;\r\n\r\n if (!this.$elem){\r\n return;\r\n }\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n this.$btnOffCanvas = this.$elem.querySelector(defaults.btnOffCanvas);\r\n\r\n /*\r\n Event binding\r\n */\r\n this.bindEvents();\r\n }\r\n\r\n toggleClasses(){\r\n\r\n //Toggle button\r\n if(this.$btnOffCanvas.classList.contains('nav-open')){\r\n this.$btnOffCanvas.classList.remove('nav-open');\r\n } else {\r\n this.$btnOffCanvas.classList.add('nav-open');\r\n }\r\n\r\n //Toggle body element; used for fixing nav and overflow\r\n if(this.$body.classList.contains('nav-open')){\r\n this.$body.classList.remove('nav-open');\r\n } else {\r\n this.$body.classList.add('nav-open');\r\n }\r\n }\r\n\r\n bindEvents(){\r\n this.$btnOffCanvas.addEventListener('click', () =>{\r\n Mjolnir.Components.GlobalNav.toggleNav();\r\n this.toggleClasses();\r\n });\r\n }\r\n}\r\n", "import extend from 'deep-extend';\r\nimport hoverintent from 'hoverintent';\r\nimport 'element-closest-polyfill';\r\n\r\nexport default class {\r\n\r\n constructor(options, statemanager) {\r\n const defaults = {\r\n btnTopLevel: '.top-lvl-item .text',\r\n btnAccordion: '.btn-accordion-trigger',\r\n listItemTopLevel: '.main-nav > li',\r\n subNav: '.sub-nav',\r\n accordionAnimateSpeed: 300,\r\n hoverIntent: {\r\n timeout: 500,\r\n interval: 50\r\n }\r\n };\r\n\r\n this.state = {\r\n open: false\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n this.$elem = document.querySelector('#global-nav');\r\n this.activeAccordion = null;\r\n this.activeSubNav = null;\r\n\r\n if (!this.$elem){\r\n return;\r\n }\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n let self = this;\r\n this.$listItemTopLevel = this.$elem.querySelectorAll(this.options.listItemTopLevel);\r\n this.$btnTopLevel = this.$elem.querySelectorAll(this.options.btnTopLevel);\r\n this.$btnAccordion = this.$elem.querySelectorAll(this.options.btnAccordion);\r\n\r\n /*\r\n Bind statemanager events as required\r\n */\r\n statemanager.addOnEnter('mobile', function () {\r\n self.initSubNavAccordions();\r\n });\r\n\r\n statemanager.addOnEnter('desktop', function () {\r\n self.resetSubNavAccordions();\r\n });\r\n\r\n this.bindEvents(statemanager);\r\n }\r\n\r\n /*\r\n Top level mobile off canvas functionality\r\n Note: this is for ENTIRE nav element\r\n */\r\n\r\n // Opens the mobile nav\r\n openNav(){\r\n this.$elem.classList.add('open');\r\n this.state.open = true;\r\n }\r\n\r\n // Closes the mobile nav\r\n closeNav(){\r\n if (this.$elem.classList.contains('open')) {\r\n this.$elem.classList.remove('open');\r\n this.state.open = false;\r\n }\r\n\r\n if(this.activeAccordion){\r\n setTimeout(() => this.closeSubNavAccordion(this.activeAccordion, this.activeBtn));\r\n }\r\n\r\n }\r\n\r\n // Uses above methods to toggle the mobile nav\r\n toggleNav(){\r\n if (this.state.open === false){\r\n this.openNav();\r\n } else {\r\n this.closeNav();\r\n }\r\n }\r\n\r\n\r\n /*\r\n Mobile accordion functionality\r\n */\r\n\r\n // Opens a target subnav accordion\r\n openSubNavAccordion(targetSubNav, targetBtn){\r\n let openHeight = targetSubNav.getAttribute('data-open-height');\r\n targetSubNav.setAttribute('style', 'height: '+openHeight+'px');\r\n targetSubNav.classList.add('active');\r\n targetBtn.classList.add('active');\r\n this.activeAccordion = targetSubNav;\r\n this.activeBtn = targetBtn;\r\n }\r\n\r\n // Close a target subnav accordion\r\n closeSubNavAccordion(targetSubNav, targetBtn){\r\n targetSubNav.setAttribute('style', 'height: 0px');\r\n targetSubNav.classList.remove('active');\r\n targetBtn.classList.remove('active');\r\n this.activeAccordion = null;\r\n this.activeBtn = null;\r\n }\r\n\r\n // Uses above methods to toggle a subnav accordion\r\n toggleSubNavAccordion(targetSubNav, targetBtn){\r\n let isTargetActive = targetSubNav.classList.contains('active');\r\n\r\n if(isTargetActive){\r\n this.closeSubNavAccordion(targetSubNav, targetBtn);\r\n } else {\r\n this.openSubNavAccordion(targetSubNav, targetBtn);\r\n }\r\n }\r\n\r\n // Sets required attributes for accordion elements\r\n initSubNavAccordions(){\r\n this.$btnAccordion.forEach(function (trigger, index) {\r\n let $parentListIem = trigger.closest('li');\r\n let $subNav = $parentListIem.querySelector('.sub-nav');\r\n\r\n if ($subNav){\r\n let subNavDefaultHeight = $subNav.offsetHeight;\r\n $subNav.classList.remove('active');\r\n $subNav.setAttribute('data-open-height', subNavDefaultHeight);\r\n $subNav.setAttribute('style', 'height: 0px');\r\n\r\n } else {\r\n return;\r\n }\r\n });\r\n }\r\n\r\n // Clears any required attributes from above methods\r\n resetSubNavAccordions(){\r\n this.activeSubNav = null;\r\n this.$btnAccordion.forEach(function (trigger, index) {\r\n\r\n let $parentListIem = trigger.closest('li');\r\n let $subNav = $parentListIem.querySelector('.sub-nav');\r\n\r\n if ($subNav){\r\n $subNav.classList.remove('active');\r\n $subNav.setAttribute('style', 'height: auto');\r\n\r\n } else {\r\n return;\r\n }\r\n });\r\n }\r\n\r\n /*\r\n Desktop subnav functionality\r\n */\r\n // Shows a target subnav\r\n openSubNav(targetSubNav){\r\n targetSubNav.classList.add('active');\r\n this.activeSubNav = targetSubNav;\r\n }\r\n\r\n // Hides a target subnav\r\n closeSubNav(targetSubNav){\r\n targetSubNav.classList.remove('active');\r\n this.activeSubNav = null;\r\n }\r\n\r\n /*\r\n Common shared function to bind trigger events\r\n */\r\n bindEvents(statemanager){\r\n let self = this;\r\n\r\n /*\r\n Bind accordion events\r\n */\r\n this.$btnAccordion.forEach(function (trigger, index) {\r\n\r\n let $parentListIem = trigger.closest('li');\r\n let $subNav = $parentListIem.querySelector('.sub-nav');\r\n\r\n if ($subNav){\r\n\r\n trigger.addEventListener('click', ()=>{\r\n\r\n let isMobile = statemanager.ssm.isActive('mobile');\r\n\r\n if(isMobile){\r\n self.toggleSubNavAccordion($subNav, trigger)\r\n }\r\n });\r\n\r\n } else {\r\n return;\r\n }\r\n });\r\n\r\n /*\r\n Bind mouseenter events for top level items\r\n */\r\n this.$listItemTopLevel.forEach(function (trigger, index) {\r\n\r\n let $subNav = trigger.querySelector('.sub-nav');\r\n if ($subNav){\r\n\r\n hoverintent(trigger,\r\n function() {\r\n let isMobile = statemanager.ssm.isActive('mobile');\r\n\r\n if(!isMobile){\r\n if (self.activeSubNav !== null){\r\n self.closeSubNav(self.activeSubNav)\r\n }\r\n\r\n self.openSubNav($subNav);\r\n self.activeSubNav = $subNav;\r\n }\r\n }, function() {\r\n let isMobile = statemanager.ssm.isActive('mobile');\r\n\r\n if(!isMobile){\r\n\r\n self.closeSubNav($subNav);\r\n self.activeSubNav = null;\r\n }\r\n }).options(self.options.hoverIntent);\r\n\r\n } else {\r\n return;\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\n", "import extend from 'deep-extend';\r\nimport Cookies from 'js-cookie';\r\n\r\nexport default class {\r\n\r\n constructor(options) {\r\n const defaults = {\r\n btnClose: '.btn-close',\r\n cookieName: 'AS-notification-banner'\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n this.$elem = document.querySelector('#notification-bar');\r\n\r\n if (!this.$elem){\r\n return;\r\n }\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n this.$btnClose = this.$elem.querySelector(this.options.btnClose);\r\n this.$body = document.body;\r\n\r\n let CookieCheck = Cookies.get(this.options.cookieName);\r\n\r\n if(CookieCheck === undefined ){\r\n this.showBanner();\r\n } else if(window.Mjolnir.adminMode === true) {\r\n this.showBanner();\r\n }\r\n this.$btnClose.addEventListener('click', ()=>{\r\n if(window.Mjolnir.adminMode === false){\r\n this.closeBanner();\r\n }\r\n });\r\n }\r\n\r\n saveCookie(value){\r\n Cookies.set(this.options.cookieName, value, {\r\n expires: 7,\r\n secure: true\r\n });\r\n }\r\n\r\n showBanner(){\r\n this.$elem.classList.add('active');\r\n this.$body.classList.add('notification-active');\r\n }\r\n\r\n closeBanner(){\r\n this.saveCookie(true);\r\n this.$elem.classList.remove('active');\r\n this.$body.classList.remove('notification-active');\r\n }\r\n}\r\n", "import MicroModal from 'micromodal'; // es6 module\r\nimport extend from 'deep-extend';\r\nimport LocalStorageManager from '../utils/localstoragemanager.es6';\r\n\r\n\r\nimport 'url-polyfill';\r\n\r\nexport default class {\r\n\r\n constructor(options) {\r\n const defaults = {\r\n modalId: 'popup-modal',\r\n btnClose: '.btn-close',\r\n localStorageName: 'AS-popup-modal',\r\n localStorageExpiryTime: 7*24*60*60*1000 // Expiry after 7 days\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n this.$elem = document.getElementById(this.options.modalId);\r\n \r\n if (!this.$elem){\r\n return;\r\n }\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n this.$btnClose = this.$elem.querySelector(this.options.btnClose);\r\n\r\n /*\r\n Local Storage + Referrer checks\r\n */\r\n let localStorageCheck = LocalStorageManager.getWithExpiry(this.options.localStorageName);\r\n \r\n if(localStorageCheck === null){\r\n this.showModal();\r\n LocalStorageManager.setWithExpiry(this.options.localStorageName, true, this.options.localStorageExpiryTime);\r\n }\r\n\r\n this.$btnClose.addEventListener('click', () => {\r\n this.closeModal();\r\n });\r\n }\r\n \r\n showModal(){\r\n MicroModal.show(this.options.modalId);\r\n }\r\n\r\n closeModal(){\r\n MicroModal.close(this.options.modalId);\r\n }\r\n}", "import extend from 'deep-extend';\r\n\r\nexport default class {\r\n\r\n constructor(options) {\r\n const defaults = {\r\n searchBar: '.search-bar',\r\n searchLink: '.main-nav .search-link',\r\n btnClose: '.btn-close'\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n this.$elem = document.querySelector('.search-bar');\r\n this.$searchLink = document.querySelector(this.options.searchLink);\r\n this.$input = document.getElementById('search-input-box');\r\n \r\n if (!this.$elem) {\r\n return;\r\n }\r\n\r\n this.$btnClose = this.$elem.querySelector(this.options.btnClose);\r\n this.$btnClose.addEventListener('click', () => {\r\n this.$elem.classList.add('hide-on-desktop');\r\n });\r\n\r\n this.$searchLink.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n this.$elem.classList.remove('hide-on-desktop');\r\n this.$input.focus();\r\n });\r\n }\r\n}", "export default function getLatestUnitPriceData(data) {\r\n let tableData = {\r\n columns: ['Investment Option', 'Date', 'Unit Price'],\r\n rows: []\r\n };\r\n for (let i = 0; i < data.length; i++) {\r\n let columns = [];\r\n columns.push(data[i].name);\r\n let rowData = data[i].data[data[i].data.length-1];\r\n\r\n let date = new Date(rowData[0]);\r\n let jsDate = date.getDate();\r\n let jsMonth = date.getMonth() + 1;\r\n let formattedDate = (jsDate < 10 ? '0'+jsDate:jsDate) + '/' + (jsMonth < 10 ? '0'+jsMonth:jsMonth) + '/' + date.getFullYear();\r\n columns.push(formattedDate);\r\n columns.push(rowData[1]);\r\n tableData.rows.push(columns);\r\n }\r\n return tableData;\r\n}", "export default function parsePerformanceChartData(data) {\r\n let columnNames = data.filter((item) => {return item.visible;}).map((item) => item.name);\r\n\r\n columnNames.unshift('Date');\r\n\r\n var tableData = {\r\n columns: columnNames,\r\n rows: []\r\n };\r\n // Process the columns\r\n for (let i = 0; i < data.length; i++) {\r\n for (let j = 0; j < data[i].data.length; j++) {\r\n let date = new Date(data[i].data[j][0]);\r\n let jsDate = date.getDate();\r\n let jsMonth = date.getMonth() + 1;\r\n let formattedDate = (jsDate < 10 ? '0'+jsDate:jsDate) + '/' + (jsMonth < 10 ? '0'+jsMonth:jsMonth) + '/' + date.getFullYear();\r\n let value = data[i].data[j][1];\r\n let columnPosition = (i+1);\r\n\r\n if((tableData.rows.length-1) < j) {\r\n tableData.rows.push([formattedDate]);\r\n }\r\n\r\n tableData.rows[j][columnPosition] = value;\r\n }\r\n }\r\n\r\n tableData.rows.reverse();\r\n\r\n return tableData;\r\n}", "import extend from 'deep-extend';\r\n\r\nexport default class {\r\n\r\n constructor(elem, options) {\r\n const defaults = {\r\n chartEmbedId: '.chart-embed',\r\n fallBackHex: '#ff000',\r\n hexCodes: [\r\n {\r\n name: 'Liquid Alternatives',\r\n newColour: '#F5F5F5',\r\n },\r\n {\r\n name: 'Growth Alternatives',\r\n newColour: '#666666',\r\n },\r\n {\r\n name: 'Cash',\r\n newColour: '#DDDDDD',\r\n },\r\n {\r\n name: 'Private Credit',\r\n newColour: '#38424D',\r\n },\r\n {\r\n name: 'International Listed Property ', //NOTE! This space at end is REQUIRED\r\n newColour: '#F18EA5',\r\n },\r\n {\r\n name: 'Infrastructure',\r\n newColour: '#999999',\r\n },\r\n {\r\n name: 'Australian Direct Property',\r\n newColour: '#342DA4',\r\n },\r\n {\r\n name: 'Private Equity',\r\n newColour: '#FFE3D8',\r\n },\r\n {\r\n name: 'Short Term Fixed Interest',\r\n newColour: '#FF634F',\r\n },\r\n {\r\n name: 'Australian Equities',\r\n newColour: '#D6F8E5',\r\n },\r\n {\r\n name: 'International Equities',\r\n newColour: '#9ADF2A',\r\n },\r\n {\r\n name: 'Bonds',\r\n newColour: '#F6B111',\r\n }\r\n ]\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n\r\n if (!elem){\r\n return;\r\n }\r\n\r\n /*\r\n Define nodes / elements / etc\r\n */\r\n window.Highcharts = Highcharts;\r\n this.$elem = elem;\r\n this.$chartElem = this.$elem.querySelector(this.options.chartEmbedId);\r\n let apiUrl = elem.dataset.apiUrl;\r\n let forceProxy = this.$elem.dataset.forceProxy;\r\n\r\n if(forceProxy === 'true'){\r\n apiUrl = 'https://cors.bridged.cc/' + apiUrl;\r\n }\r\n\r\n this.fetchData(apiUrl);\r\n }\r\n\r\n fetchData(apiUrl){\r\n\r\n fetch(apiUrl, { headers: { \"Content-Type\": \"application/json; charset=utf-8\" }})\r\n .then(res => res.json()) // parse response as JSON (can be res.text() for plain response)\r\n .then(response => {\r\n /*\r\n Reconfigure the data hex values\r\n */\r\n let updatedData = this.updateHexCodes(response);\r\n this.renderPieChart(updatedData);\r\n });\r\n }\r\n\r\n updateHexCodes(data){\r\n let newData = data;\r\n\r\n /*\r\n This could be more efficient, and flexible\r\n */\r\n for (var obj of newData) {\r\n\r\n let matchedColourObj = this.options.hexCodes.filter(colourObj => {\r\n return colourObj.name === obj.name\r\n });\r\n if (matchedColourObj.length !== 0){\r\n obj.color = matchedColourObj[0].newColour;\r\n } else {\r\n obj.color = this.options.fallBackHex;\r\n }\r\n }\r\n return newData;\r\n }\r\n\r\n renderPieChart(earnRateData){\r\n const earningChart = new Highcharts.Chart({\r\n chart: {\r\n renderTo: this.$chartElem,\r\n type: 'pie',\r\n margin: [0, 0, 0, 0],\r\n spacingTop: 0,\r\n spacingBottom: 0,\r\n spacingLeft: 0,\r\n spacingRight: 0\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n title: {\r\n text: ''\r\n },\r\n plotOptions: {\r\n pie: {\r\n size:'100%',\r\n dataLabels: {\r\n enabled: false,\r\n format: '{point.name}: {point.percentage} %'\r\n }\r\n }\r\n },\r\n series: [{\r\n type: 'pie',\r\n name: 'Asset Allocation',\r\n data: earnRateData\r\n }],\r\n tooltip: {\r\n borderWidth: 0,\r\n shadow: false,\r\n useHTML: true,\r\n backgroundColor: \"#003822\",\r\n style: {\r\n padding: 10,\r\n fontSize: '14px',\r\n color: '#ffffff'\r\n },\r\n formatter: function() {\r\n return this.point.name + ': ' + Highcharts.numberFormat(this.y, 2, '.', ',') + '%';\r\n }\r\n\r\n }\r\n });\r\n }\r\n}", "import extend from 'deep-extend';\r\nimport flatpickr from \"flatpickr\";\r\n\r\n\r\nexport default class {\r\n\r\n constructor(elem, options) {\r\n const defaults = {\r\n chartEmbedId: '#chart-embed',\r\n keyListElem: '.key ul',\r\n\r\n hexCodes: {\r\n highGrowth: '#003822',\r\n balancedGrowth: '#51BB18',\r\n balanced: '#36A5B3',\r\n conservative: '#342DA4',\r\n managedCash: '#F18EA5',\r\n growth: '#F6B111' //Note: this isn't in design - I've made a judgement call\r\n }\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n\r\n if (!elem){\r\n return;\r\n }\r\n\r\n /*\r\n Define nodes / elements / etc\r\n */\r\n window.Highcharts = Highcharts;\r\n this.$elem = elem;\r\n this.$keyList = this.$elem.querySelector(this.options.keyListElem);\r\n let apiUrl = elem.dataset.apiUrl;\r\n let forceProxy = this.$elem.dataset.forceProxy;\r\n\r\n if(apiUrl == null || undefined){\r\n return;\r\n }\r\n if(forceProxy === 'true'){\r\n apiUrl = 'https://cors.bridged.cc/' + apiUrl;\r\n }\r\n\r\n this.fetchData(apiUrl);\r\n }\r\n\r\n\r\n fetchData(apiUrl){\r\n\r\n fetch(apiUrl, { headers: { \"Content-Type\": \"application/json; charset=utf-8\" }})\r\n .then(res => res.json()) // parse response as JSON (can be res.text() for plain response)\r\n .then(response => {\r\n /*\r\n Reconfigure the data hex values\r\n */\r\n let updatedData = this.updateHexCodes(response);\r\n this.renderKey(updatedData);\r\n this.renderLineChart(updatedData);\r\n });\r\n }\r\n\r\n updateHexCodes(data){\r\n let newData = data;\r\n\r\n /*\r\n This could be more efficient, and flexible\r\n */\r\n for (var obj of newData) {\r\n\r\n if(obj.name === 'High Growth'){\r\n obj.color = this.options.hexCodes.highGrowth;\r\n } else if(obj.name === 'Balanced Growth'){\r\n obj.color = this.options.hexCodes.balancedGrowth;\r\n } else if(obj.name === 'Balanced'){\r\n obj.color = this.options.hexCodes.balanced;\r\n } else if(obj.name === 'Conservative'){\r\n obj.color = this.options.hexCodes.conservative;\r\n } else if(obj.name === 'Managed Cash'){\r\n obj.color = this.options.hexCodes.managedCash;\r\n } else if(obj.name === 'Growth'){\r\n obj.color = this.options.hexCodes.growth;\r\n }\r\n }\r\n return newData;\r\n }\r\n\r\n initCustomDatePicker(chart){\r\n\r\n let minDate = chart.xAxis[0].getExtremes().min;\r\n let maxDate = chart.xAxis[0].getExtremes().max;\r\n let inputStartDate = document.querySelector('input.highcharts-range-selector[name=\"min\"]');\r\n let inputEndDate = document.querySelector('input.highcharts-range-selector[name=\"max\"]');\r\n\r\n flatpickr(inputStartDate, {\r\n minDate: minDate,\r\n maxDate: maxDate,\r\n defaultDate: minDate,\r\n });\r\n\r\n flatpickr(inputEndDate, {\r\n minDate: minDate,\r\n maxDate: maxDate,\r\n defaultDate: maxDate,\r\n });\r\n }\r\n\r\n renderLineChart(earnRateData){\r\n let earningRateChartID = this.$elem.querySelector(this.options.chartEmbedId);\r\n\r\n let self = this;\r\n let earningChart = new Highcharts.StockChart({\r\n chart: {\r\n renderTo: earningRateChartID,\r\n plotBackgroundColor: '#fcfcfc',\r\n type: 'line',\r\n events: {\r\n load: function () {\r\n self.chartLoaded(this);\r\n\r\n },\r\n }\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n xAxis: {\r\n type: 'datetime',\r\n dateTimeLabelFormats: {\r\n day: '%d %b\\'%y',\r\n week: '%b\\'%y',\r\n month: '%Y',\r\n year: '%Y'\r\n },\r\n endOnTick: true,\r\n lineColor: '#FFFFFF',\r\n lineWidth: 2,\r\n tickLength: 0,\r\n labels: {\r\n style: {fontSize: '14px', fontWeight: 'bold', fontFamily: '\"Lato\", sans-serif', color: '#656565'},\r\n //autoRotation: false\r\n rotation: -45\r\n },\r\n },\r\n yAxis: {\r\n gridLineWidth: 0,\r\n plotLines: [{\r\n color: '#cbcbcb',\r\n width: 1,\r\n value: 0\r\n }],\r\n startOnTick: false,\r\n opposite: false,\r\n labels: {align: 'right', style: {fontSize: '14px', fontWeight: 'bold', fontFamily: '\"Lato\", sans-serif', color: '#656565'}, formatter: function () {\r\n return this.value + '%';\r\n }},\r\n },\r\n legend: {\r\n enabled: false\r\n },\r\n plotOptions: {\r\n line: {\r\n lineWidth: 2,\r\n shadow: false,\r\n marker: {\r\n symbol: \"circle\",\r\n enabled: false,\r\n states: {\r\n hover: {\r\n enabled: true,\r\n radius: 4,\r\n lineWidth: 1,\r\n fillColor: null,\r\n lineColor: null\r\n }\r\n }\r\n }\r\n },\r\n series: {\r\n compare: 'percent',\r\n turboThreshold: 2000\r\n }\r\n\r\n },\r\n scrollbar: {\r\n enabled: 1\r\n },\r\n rangeSelector: {\r\n enabled: 1,\r\n //inputEnabled:1,\r\n allButtonsEnabled:1,\r\n inputDateFormat:'%d/%m/%Y',\r\n inputEditDateFormat:'%d/%m/%Y',\r\n inputBoxWidth: 94,\r\n inputBoxHeight: 18,\r\n buttons: [{\r\n type: 'month',\r\n count: 1,\r\n text: '1m'\r\n }, {\r\n type: 'month',\r\n count: 3,\r\n text: '3m'\r\n }, {\r\n type: 'month',\r\n count: 6,\r\n text: '6m'\r\n }, {\r\n type: 'year',\r\n count: 1,\r\n text: '1y'\r\n }, {\r\n type: 'all',\r\n text: 'All'\r\n }]\r\n },\r\n navigator: {\r\n enabled: true,\r\n maskInside: false,\r\n // outlineColor: '#4a7729',\r\n outlineWidth: 1,\r\n margin: 15,\r\n height: 60,\r\n maskFill: 'rgba(190,206,178,0.6)',\r\n series: {\r\n color: '#4c3249',\r\n fillOpacity: 0.4,\r\n },\r\n xAxis: {\r\n type: 'datetime',\r\n dateTimeLabelFormats: {\r\n day: '%d %b\\'%y',\r\n week: '%b\\'%y',\r\n month: '%Y',\r\n year: '%Y'\r\n },\r\n endOnTick: true,\r\n\r\n labels: {\r\n style: {fontSize: '13px', fontWeight: 'bold', fontFamily: '\"Lato\", sans-serif', color: '#3e3e3e'},\r\n },\r\n gridLineWidth: 0,\r\n }\r\n },\r\n series: earnRateData,\r\n title: {\r\n text: false\r\n },\r\n tooltip: {\r\n crosshairs: true,\r\n borderWidth: 0,\r\n shared: true,\r\n shadow: false,\r\n useHTML: true,\r\n backgroundColor: \"#F5F5F5\",\r\n style: {\r\n padding: 10,\r\n color: '#003822',\r\n zIndex: 999999,\r\n fontSize: '14px'\r\n\r\n },\r\n formatter: function () {\r\n var d = Date.fromISO(this.x);\r\n d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + 660);\r\n d.setHours(d.getHours() + 12);\r\n var e = Date.parse(d);\r\n\r\n var s =\r\n '
' +\r\n '

'\r\n + Highcharts.dateFormat('%d/%m/%Y', e) + '' +\r\n '

' +\r\n ' ';\r\n\r\n s +=\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n\r\n var t = 0;\r\n $.each(this.points, function (i, point) {\r\n\r\n var l =\r\n '' +\r\n ' ';\r\n\r\n\r\n l +=\r\n '';\r\n\r\n\r\n var v =\r\n '' +\r\n '';\r\n s += l + v;\r\n t += Number(point.y);\r\n });\r\n s += \"\";\r\n return s;\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n renderKey(data) {\r\n function listItemTemplate(obj) {\r\n return `\r\n
  • \r\n
    \r\n \r\n \r\n \r\n
    \r\n ${obj.name}\r\n
  • \r\n `;\r\n }\r\n\r\n this.$keyList.innerHTML = `\r\n ${data.map(listItemTemplate).join(\"\")}\r\n `;\r\n }\r\n chartLoaded(chart){\r\n this.initCustomDatePicker(chart);\r\n }\r\n}\r\n\r\n\r\n/*\r\nI'm leaving this as is for now - it requires further investigation to confirm exactly what its doing and why\r\n */\r\n\r\nvar D = new Date('2011-06-02T09:34:29+02:00');\r\nif (!D || +D !== 1307000069000) {\r\n Date.fromISO = function (s) {\r\n var day, tz,\r\n rx = /^(\\d{4}\\-\\d\\d\\-\\d\\d([tT ][\\d:\\.]*)?)([zZ]|([+\\-])(\\d\\d):(\\d\\d))?$/,\r\n p = rx.exec(s) || [];\r\n if (p[1]) {\r\n day = p[1].split(/\\D/);\r\n for (var i = 0, L = day.length; i < L; i++) {\r\n day[i] = parseInt(day[i], 10) || 0;\r\n }\r\n ;\r\n day[1] -= 1;\r\n day = new Date(Date.UTC.apply(Date, day));\r\n if (!day.getDate())\r\n return NaN;\r\n if (p[5]) {\r\n tz = (parseInt(p[5], 10) * 60);\r\n if (p[6])\r\n tz += parseInt(p[6], 10);\r\n if (p[4] == '+')\r\n tz *= -1;\r\n if (tz)\r\n day.setUTCMinutes(day.getUTCMinutes() + tz);\r\n }\r\n return day;\r\n }\r\n return NaN;\r\n }\r\n}\r\nelse {\r\n Date.fromISO = function (s) {\r\n return new Date(s);\r\n }\r\n}", "import extend from 'deep-extend';\r\nimport parsePerformanceChartData from '../helpers/parse-performance-chart-data.es6';\r\n\r\nexport default class {\r\n\r\n constructor(elem, options) {\r\n const defaults = {\r\n tableWrap: '.table-responsive-wrap',\r\n\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n\r\n if (!elem) {\r\n return;\r\n }\r\n\r\n this.$elem = elem;\r\n let apiUrl = elem.dataset.apiUrl;\r\n let apiAggregate = elem.dataset.apiAggregateUrls;\r\n let forceProxy = this.$elem.dataset.forceProxy;\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n this.$tableParent = this.$elem.querySelector(this.options.tableWrap);\r\n\r\n if (typeof apiAggregate !== 'undefined') {\r\n this.fetchAggregate(apiAggregate, forceProxy);\r\n } else {\r\n if (forceProxy === 'true') {\r\n apiUrl = 'https://cors.bridged.cc/' + apiUrl;\r\n }\r\n\r\n this.fetchData(apiUrl);\r\n }\r\n\r\n }\r\n\r\n fetchData(apiUrl) {\r\n fetch(apiUrl, {headers: {\"Content-Type\": \"application/json; charset=utf-8\"}})\r\n .then(res => res.json()) // parse response as JSON (can be res.text() for plain response)\r\n .then(response => {\r\n let tableData = parsePerformanceChartData(response);\r\n this.renderTableES6(tableData);\r\n });\r\n }\r\n\r\n fetchAggregate(endpoints, forceProxy) {\r\n this.aggregateData = [];\r\n let endpointList = endpoints.split(';');\r\n for (let i = 0; i < endpointList.length; i++) {\r\n let endpointParts = endpointList[i].split(',').map((item) => item.trim());\r\n let apiUrl = endpointParts[1];\r\n if (forceProxy === 'true') {\r\n apiUrl = 'https://cors.bridged.cc/' + apiUrl;\r\n }\r\n this.aggregateData[i] = {\r\n complete: false,\r\n label: endpointParts[0],\r\n data: []\r\n };\r\n fetch(apiUrl, {headers: {\"Content-Type\": \"application/json; charset=utf-8\"}})\r\n .then(res => res.json()) // parse response as JSON (can be res.text() for plain response)\r\n .then(response => {\r\n this.aggregateData[i].complete = true;\r\n this.aggregateData[i].data = response;\r\n if (this.aggregateData.filter((i) => {\r\n return !i.complete\r\n }).length === 0) {\r\n let processedData = this.processAggregate(this.aggregateData);\r\n this.renderTableES6(processedData);\r\n }\r\n });\r\n }\r\n }\r\n\r\n processAggregate(data) {\r\n let dateRowMap = {};\r\n let processedData = {\r\n columns: ['Date'],\r\n rows: []\r\n };\r\n for (let i = 0; i < data.length; i++) {\r\n processedData.columns.push(data[i].label);\r\n for (let j = 0; j < data[i].data.length; j++) {\r\n let date = data[i].data[j].date;\r\n let jsDateObj = new Date(date);\r\n let jsDate = jsDateObj.getDate();\r\n let jsMonth = jsDateObj.getMonth() + 1;\r\n let formattedDate = (jsDate < 10 ? '0'+jsDate:jsDate) + '/' + (jsMonth < 10 ? '0'+jsMonth:jsMonth) + '/' + jsDateObj.getFullYear();\r\n let price = data[i].data[j].price;\r\n if (typeof dateRowMap[date] === 'undefined') {\r\n dateRowMap[date] = j;\r\n processedData.rows.push([formattedDate]);\r\n }\r\n processedData.rows[dateRowMap[date]][i + 1] = price;\r\n }\r\n }\r\n processedData.rows.reverse();\r\n return processedData;\r\n }\r\n\r\n renderTableES6(data) {\r\n let {columns, rows} = data;\r\n const tableStart = `
    OptionReturn * ' + 'Unit Price' + '
    '\r\n + point.series.name +\r\n ' '\r\n + Highcharts.numberFormat(point.point.change, 2, '.', ',') + '%'+\r\n ''\r\n +Highcharts.numberFormat(point.y, 6, '.', ',') +\r\n '
    `;\r\n const tableHeadStart = ``;\r\n const tableHeadEnd = ``;\r\n const tableBodyStart = ``;\r\n const tableBodyEnd = ``;\r\n const tableEnd = `
    `;\r\n\r\n function headerCell(column) {\r\n return `\r\n ${column}\r\n `;\r\n }\r\n\r\n function bodyCell(cell) {\r\n return `\r\n ${cell}\r\n `;\r\n }\r\n\r\n function bodyRow(row) {\r\n return `\r\n \r\n ${row.map(bodyCell).join(\"\")}\r\n \r\n `;\r\n }\r\n\r\n this.$tableParent.innerHTML = `\r\n ${tableStart}\r\n ${tableHeadStart}\r\n ${columns.map(headerCell).join(\"\")}\r\n ${tableHeadEnd}\r\n ${tableBodyStart}\r\n ${rows.map(bodyRow).join(\"\")}\r\n ${tableBodyEnd}\r\n ${tableEnd}\r\n `;\r\n\r\n let table = this.$tableParent.querySelector('.performance-table');\r\n new Tabulator(table, {\r\n layout: 'fitColumns',\r\n headerSort: false,\r\n pagination: 'local',\r\n paginationSize: 10,\r\n paginationSizeSelector: false,\r\n selectable: false\r\n });\r\n }\r\n}\r\n", "import extend from 'deep-extend';\r\nimport getLatestUnitPriceData from '../helpers/get-latest-unit-price-data.es6';\r\n\r\nexport default class {\r\n\r\n constructor(elem, options) {\r\n const defaults = {\r\n tableWrap: '.table-responsive-wrap',\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n\r\n if (!elem){\r\n return;\r\n }\r\n\r\n this.$elem = elem;\r\n let apiUrl = elem.dataset.apiUrl;\r\n let apiAggregate = elem.dataset.apiAggregateUrls;\r\n let forceProxy = 'true'; // TODO this was not parametised\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n this.$tableParent = this.$elem.querySelector(this.options.tableWrap);\r\n\r\n //Begin\r\n if (typeof apiAggregate !== 'undefined') {\r\n this.fetchAggregate(apiAggregate, forceProxy);\r\n } else {\r\n if (forceProxy === 'true') {\r\n apiUrl = 'https://cors.bridged.cc/' + apiUrl;\r\n }\r\n\r\n this.fetchData(apiUrl);\r\n }\r\n \r\n }\r\n\r\n\r\n fetchData(apiUrl){\r\n\r\n fetch(apiUrl, { headers: { \"Content-Type\": \"application/json; charset=utf-8\" }})\r\n .then(res => res.json()) // parse response as JSON (can be res.text() for plain response)\r\n .then(response => {\r\n let tableData = getLatestUnitPriceData(response);\r\n this.renderTable(tableData);\r\n });\r\n }\r\n\r\n fetchAggregate(endpoints, forceProxy) {\r\n this.aggregateData = [];\r\n let endpointList = endpoints.split(';');\r\n for (let i = 0; i < endpointList.length; i++) {\r\n let endpointParts = endpointList[i].split(',').map((item) => item.trim());\r\n let apiUrl = endpointParts[1];\r\n if (forceProxy === 'true') {\r\n apiUrl = 'https://cors.bridged.cc/' + apiUrl;\r\n }\r\n this.aggregateData[i] = {\r\n complete: false,\r\n label: endpointParts[0],\r\n data: []\r\n };\r\n fetch(apiUrl, {headers: {\"Content-Type\": \"application/json; charset=utf-8\"}})\r\n .then(res => res.json()) // parse response as JSON (can be res.text() for plain response)\r\n .then(response => {\r\n this.aggregateData[i].complete = true;\r\n this.aggregateData[i].data = response;\r\n if (this.aggregateData.filter((i) => {\r\n return !i.complete\r\n }).length === 0) {\r\n let processedData = this.processAggregate(this.aggregateData);\r\n this.renderTable(processedData);\r\n }\r\n });\r\n }\r\n }\r\n\r\n processAggregate(data) {\r\n let processedData = {\r\n columns: ['Investment Option', 'Date', 'Unit Price'],\r\n rows: []\r\n };\r\n for (let i = 0; i < data.length; i++) {\r\n let lastRow = data[i].data[data[i].data.length-1];\r\n\r\n let jsDateObj = new Date(lastRow.date);\r\n let jsDate = jsDateObj.getDate();\r\n let jsMonth = jsDateObj.getMonth() + 1;\r\n let formattedDate = (jsDate < 10 ? '0'+jsDate:jsDate) + '/' + (jsMonth < 10 ? '0'+jsMonth:jsMonth) + '/' + jsDateObj.getFullYear();\r\n \r\n processedData.rows.push([data[i].label, formattedDate, lastRow.price]);\r\n }\r\n \r\n \r\n \r\n return processedData;\r\n }\r\n\r\n\r\n renderTable(data){\r\n let {columns, rows} = data;\r\n const tableStart = ``;\r\n const tableHeadStart = ``;\r\n const tableHeadEnd = ``;\r\n const tableBodyStart = ``;\r\n const tableBodyEnd = ``;\r\n const tableEnd = `
    `;\r\n\r\n function headerCell(column) {\r\n return `\r\n ${column}\r\n `;\r\n }\r\n\r\n function bodyCell(cell){\r\n return `\r\n ${cell}\r\n `;\r\n }\r\n\r\n function bodyRow(row) {\r\n return `\r\n \r\n ${row.map(bodyCell).join(\"\")}\r\n \r\n `;\r\n }\r\n\r\n this.$tableParent.innerHTML = `\r\n ${tableStart}\r\n ${tableHeadStart}\r\n ${columns.map(headerCell).join(\"\")}\r\n ${tableHeadEnd}\r\n ${tableBodyStart}\r\n ${rows.map(bodyRow).join(\"\")}\r\n ${tableBodyEnd}\r\n ${tableEnd}\r\n `;\r\n }\r\n}\r\n", "if (!Number.isNaN) {\r\n (function(Number)\r\n {\r\n Number.isNaN = Number.isNaN || function isNaN(input) {\r\n return typeof input === 'number' && input !== input;\r\n }\r\n })(Number);\r\n}", "export default new class {\r\n\r\n constructor() {\r\n \r\n }\r\n\r\n getWithExpiry(key) {\r\n const itemStr = localStorage.getItem(key)\r\n // if the item doesn't exist, return null\r\n if (!itemStr) {\r\n return null\r\n }\r\n const item = JSON.parse(itemStr)\r\n const now = new Date()\r\n // compare the expiry time of the item with the current time\r\n if (now.getTime() > item.expiry) {\r\n // If the item is expired, delete the item from storage\r\n // and return null\r\n localStorage.removeItem(key)\r\n return null\r\n }\r\n return item.value\r\n }\r\n\r\n\r\n setWithExpiry(key, value, ttl) {\r\n const now = new Date()\r\n \r\n // `item` is an object which contains the original value\r\n // as well as the time when it's supposed to expire\r\n const item = {\r\n value: value,\r\n expiry: now.getTime() + ttl,\r\n }\r\n localStorage.setItem(key, JSON.stringify(item))\r\n }\r\n}", "import ssm from 'simplestatemanager';\r\n\r\nexport default new class {\r\n\r\n constructor() {\r\n this.ssm = ssm;\r\n this.callbacks = {\r\n 'sm': {\r\n 'enter': [],\r\n 'leave': [],\r\n 'resize': [],\r\n 'firstRun': []\r\n },\r\n\r\n 'md': {\r\n 'enter': [],\r\n 'leave': [],\r\n 'resize': [],\r\n 'firstRun': []\r\n },\r\n\r\n 'lg': {\r\n 'enter': [],\r\n 'leave': [],\r\n 'resize': [],\r\n 'firstRun': []\r\n },\r\n\r\n 'xl': {\r\n 'enter': [],\r\n 'leave': [],\r\n 'resize': [],\r\n 'firstRun': []\r\n },\r\n\r\n 'mobile': {\r\n 'enter': [],\r\n 'leave': [],\r\n 'resize': [],\r\n 'firstRun': []\r\n },\r\n\r\n 'desktop': {\r\n 'enter': [],\r\n 'leave': [],\r\n 'resize': [],\r\n 'firstRun': []\r\n },\r\n };\r\n }\r\n\r\n\r\n run(){\r\n this.ssm.addState({\r\n id: 'sm',\r\n query: '(max-width: 767px)',\r\n onEnter: this.onEnter('sm'),\r\n onLeave: this.onLeave('sm'),\r\n onResize: this.onResize('sm'),\r\n onFirstRun: this.onFirstRun('sm')\r\n });\r\n\r\n this.ssm.addState({\r\n id: 'md',\r\n query: '(min-width: 768px) and (max-width: 991px)',\r\n onEnter: this.onEnter('md'),\r\n onLeave: this.onLeave('md'),\r\n onResize: this.onResize('md'),\r\n onFirstRun: this.onFirstRun('md')\r\n });\r\n\r\n this.ssm.addState({\r\n id: 'lg',\r\n query: '(min-width: 992px) and (max-width: 1199px)',\r\n onEnter: this.onEnter('lg'),\r\n onLeave: this.onLeave('lg'),\r\n onResize: this.onResize('lg'),\r\n onFirstRun: this.onFirstRun('lg')\r\n });\r\n\r\n this.ssm.addState({\r\n id: 'xl',\r\n query: '(min-width: 1200px)',\r\n onEnter: this.onEnter('xl'),\r\n onLeave: this.onLeave('xl'),\r\n onResize: this.onResize('xl'),\r\n onFirstRun: this.onFirstRun('xl')\r\n });\r\n\r\n this.ssm.addState({\r\n id: 'mobile',\r\n query: '(max-width: 991px)',\r\n onEnter: this.onEnter('mobile'),\r\n onLeave: this.onLeave('mobile'),\r\n onResize: this.onResize('mobile'),\r\n onFirstRun: this.onFirstRun('mobile')\r\n });\r\n\r\n this.ssm.addState({\r\n id: 'desktop',\r\n query: '(min-width: 992px)',\r\n onEnter: this.onEnter('desktop'),\r\n onLeave: this.onLeave('desktop'),\r\n onResize: this.onResize('desktop'),\r\n onFirstRun: this.onFirstRun('desktop')\r\n });\r\n }\r\n\r\n addOnEnter(stateId, callback) {\r\n if(\r\n typeof this.callbacks[stateId] !== 'undefined'\r\n && typeof this.callbacks[stateId].enter !== 'undefined'\r\n && typeof callback === 'function'\r\n ) {\r\n this.callbacks[stateId].enter.push(callback);\r\n }\r\n };\r\n\r\n addOnLeave(stateId, callback) {\r\n if(\r\n typeof this.callbacks[stateId] !== 'undefined'\r\n && typeof this.callbacks[stateId].leave !== 'undefined'\r\n && typeof callback === 'function'\r\n ) {\r\n this.callbacks[stateId].leave.push(callback);\r\n }\r\n };\r\n\r\n addOnResize(stateId, callback) {\r\n if(\r\n typeof this.callbacks[stateId] !== 'undefined'\r\n && typeof this.callbacks[stateId].resize !== 'undefined'\r\n && typeof callback === 'function'\r\n ) {\r\n this.callbacks[stateId].resize.push(callback);\r\n }\r\n };\r\n\r\n addOnFirstRun(stateId, callback) {\r\n if(\r\n typeof this.callbacks[stateId] !== 'undefined'\r\n && typeof this.callbacks[stateId].firstRun !== 'undefined'\r\n && typeof callback === 'function'\r\n ) {\r\n this.callbacks[stateId].firstRun.push(callback);\r\n }\r\n };\r\n\r\n onEnter(stateId) {\r\n let self = this;\r\n return function() {\r\n for(let i = 0; i < self.callbacks[stateId].enter.length; i++) {\r\n self.callbacks[stateId].enter[i].apply();\r\n }\r\n };\r\n };\r\n\r\n onLeave(stateId) {\r\n let self = this;\r\n return function() {\r\n for(let i = 0; i < self.callbacks[stateId].leave.length; i++) {\r\n self.callbacks[stateId].leave[i].call();\r\n }\r\n };\r\n };\r\n\r\n onResize(stateId) {\r\n let self = this;\r\n return function() {\r\n for(let i = 0; i < self.callbacks[stateId].resize.length; i++) {\r\n self.callbacks[stateId].resize[i].call();\r\n }\r\n };\r\n };\r\n\r\n onFirstRun(stateId) {\r\n let self = this;\r\n return function() {\r\n for(let i = 0; i < self.callbacks[stateId].firstRun.length; i++) {\r\n self.callbacks[stateId].firstRun[i].call();\r\n }\r\n };\r\n };\r\n}\r\n", "import extend from 'deep-extend';\r\n\r\nexport default class {\r\n\r\n constructor(elem, options) {\r\n const defaults = {\r\n accordionItem: '.accordion-item',\r\n btnAccordionTrigger: '.btn-accordion-trigger',\r\n accordionContent: '.accordion-content',\r\n openFirst: false,\r\n allowMultipleOpen: false\r\n };\r\n\r\n if (!elem){\r\n return;\r\n }\r\n\r\n this.options = extend({}, defaults, options);\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n this.$elem = elem;\r\n this.$accordionItems = this.$elem.querySelectorAll(this.options.accordionItem);\r\n this.activeAccordion = null;\r\n\r\n /*\r\n Function inits\r\n */\r\n this.initAccordionItems();\r\n }\r\n\r\n closeAccordionItem(targetElem){\r\n if (targetElem.classList.contains('active')) {\r\n let targetContent = targetElem.querySelectorAll(this.options.accordionContent)[0];\r\n\r\n targetElem.classList.remove('active');\r\n targetContent.classList.remove('active');\r\n\r\n this.activeAccordion = null;\r\n }\r\n }\r\n\r\n openAccordionItem(parentElem, contentElem){\r\n parentElem.classList.add('active');\r\n contentElem.classList.add('active');\r\n\r\n this.activeAccordion = parentElem;\r\n }\r\n\r\n toggleAccordionItem(parentElem, contentElem){\r\n\r\n if (this.options.allowMultipleOpen === false) {\r\n\r\n if (this.activeAccordion !== null){\r\n\r\n let isTargetActive = parentElem.isEqualNode(this.activeAccordion);\r\n if (isTargetActive === true) {\r\n\r\n this.closeAccordionItem(parentElem);\r\n\r\n } else {\r\n\r\n this.closeAccordionItem(this.activeAccordion);\r\n this.openAccordionItem(parentElem, contentElem);\r\n }\r\n } else {\r\n this.openAccordionItem(parentElem, contentElem);\r\n }\r\n } else {\r\n\r\n if (parentElem.classList.contains('active')) {\r\n this.closeAccordionItem(parentElem, contentElem);\r\n\r\n } else {\r\n this.openAccordionItem(parentElem, contentElem);\r\n }\r\n }\r\n }\r\n\r\n initAccordionItems(){\r\n let self = this;\r\n this.$accordionItems.forEach(function (elem, index) {\r\n let $accordionContent = elem.querySelectorAll(self.options.accordionContent)[0];\r\n let $btnAccordionTrigger = elem.querySelectorAll(self.options.btnAccordionTrigger)[0];\r\n\r\n if ($accordionContent){\r\n\r\n /*\r\n Event binding for each item\r\n */\r\n $btnAccordionTrigger.addEventListener('click', ()=>{\r\n self.toggleAccordionItem(elem, $accordionContent)\r\n });\r\n\r\n } else {\r\n return;\r\n }\r\n });\r\n\r\n if (this.options.openFirst === true){\r\n let $firstItem = this.$accordionItems[0];\r\n let $firstItemContent = $firstItem.querySelectorAll(self.options.accordionContent)[0];\r\n\r\n this.openAccordionItem($firstItem, $firstItemContent)\r\n }\r\n }\r\n}\r\n", "import extend from 'deep-extend';\r\nimport intersectionObserver from 'intersection-observer';\r\nexport default class {\r\n\r\n constructor(elem, options) {\r\n const defaults = {\r\n select: '.user-select',\r\n btnSubmit: '.btn-submit'\r\n };\r\n\r\n if (!elem || window.Mjolnir.adminMode === true ){\r\n return;\r\n }\r\n\r\n this.options = extend({}, defaults, options);\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n this.$elem = elem;\r\n let animationDelay = 0;\r\n if (this.$elem.dataset.animationDelay){\r\n animationDelay = this.$elem.dataset.animationDelay;\r\n }\r\n\r\n\r\n if(this.$elem.dataset.animateOnscroll === 'true'){\r\n this.setScrollObserver(this.$elem.dataset.scrollThreshold);\r\n } else {\r\n this.timer = setTimeout(() => {\r\n this.setLoadedState();\r\n }, animationDelay);\r\n }\r\n }\r\n\r\n\r\n setLoadedState(){\r\n this.$elem.dataset.animated = true;\r\n clearTimeout(this.timer);\r\n }\r\n\r\n setScrollObserver(threshold) {\r\n\r\n let newThreshold = parseFloat(threshold);\r\n let observer = new IntersectionObserver(onIntersection, {\r\n root: null,\r\n threshold: newThreshold // percentage of target's visible area. Triggers \"onIntersection\"\r\n });\r\n\r\n function onIntersection(entries, opts) {\r\n entries.forEach((entry) => {\r\n if(entry.isIntersecting === true){\r\n entry.target.setAttribute('data-animated', 'true');\r\n }\r\n });\r\n }\r\n\r\n observer.observe(this.$elem)\r\n }\r\n}", "import extend from 'deep-extend';\r\nexport default class {\r\n\r\n constructor(elem, options) {\r\n const defaults= {\r\n\r\n videoPlayer: null,\r\n videoElem: '.player-embed',\r\n btnPlay: '.btn-play-video',\r\n hideContentOnPlay: false,\r\n autoplay: false,\r\n muted: false,\r\n hideControls: true,\r\n controls:[\r\n 'play',\r\n 'progress',\r\n 'current-time',\r\n 'mute',\r\n 'volume',\r\n 'captions',\r\n 'settings',\r\n 'pip',\r\n 'airplay',\r\n 'fullscreen'\r\n ],\r\n };\r\n\r\n this.options = extend({}, defaults, options);\r\n\r\n this.$elem = elem;\r\n\r\n this.$videoElem = this.$elem.querySelector(this.options.videoElem);\r\n this.$btnPlay = this.$elem.querySelector(this.options.btnPlay);\r\n\r\n this.initPlayer();\r\n this.bindEvents();\r\n }\r\n\r\n initPlayer() {\r\n\r\n this.videoPlayer = new Plyr(this.$videoElem, {\r\n autoplay: this.options.autoplay,\r\n muted: this.options.muted,\r\n controls: this.options.controls,\r\n hideControls: this.options.hideControls\r\n });\r\n };\r\n\r\n toggleContent(){\r\n if(this.$elem.classList.contains('content-hidden')){\r\n this.$elem.classList.remove('content-hidden');\r\n } else {\r\n this.$elem.classList.add('content-hidden');\r\n }\r\n }\r\n\r\n playVideo() {\r\n this.videoPlayer.play();\r\n if(this.options.hideContentOnPlay === true){\r\n this.toggleContent();\r\n }\r\n };\r\n\r\n\r\n bindEvents(){\r\n if(this.$btnPlay){\r\n this.$btnPlay.addEventListener('click', ()=>{\r\n this.playVideo();\r\n });\r\n }\r\n }\r\n}\r\n\r\n", "import extend from 'deep-extend';\r\nimport Choices from 'choices.js';\r\n\r\nexport default class {\r\n\r\n constructor(elem, options) {\r\n const defaults = {\r\n select: '.user-select',\r\n btnSubmit: '.btn-submit'\r\n };\r\n\r\n if (!elem){\r\n return;\r\n }\r\n\r\n this.options = extend({}, defaults, options);\r\n\r\n /*\r\n Define nodes / elements\r\n */\r\n this.$elem = elem;\r\n this.$select = this.$elem.querySelector(this.options.select);\r\n this.$btnSubmit = this.$elem.querySelector(this.options.btnSubmit);\r\n\r\n /*\r\n Event binding\r\n */\r\n /*\r\n Rendering of select input is dependent on CMS populated values\r\n Check the select is in the DOM first\r\n */\r\n\r\n if (this.$select){\r\n const choices = new Choices(this.$select, {\r\n searchEnabled: false,\r\n shouldSort: false,\r\n itemSelectText: ''\r\n });\r\n\r\n this.$btnSubmit.addEventListener('click', ()=>{\r\n let targetUrl = this.$select.options[this.$select.selectedIndex].value;\r\n window.location = targetUrl;\r\n });\r\n } else {\r\n return;\r\n }\r\n }\r\n}\r\n", "/*\r\nUtilities, Polyfills and shims\r\n */\r\nimport '../_core/polyfills/is-nan.es6';\r\nimport picturefill from 'picturefill';\r\nimport svg4everybody from 'svg4everybody';\r\nimport 'nodelist-foreach-polyfill';\r\nimport 'promise-polyfill/src/polyfill';\r\nimport 'whatwg-fetch';\r\nimport StateManager from './../_core/utils/statemanager.es6';\r\n\r\n/*\r\nVendors and 3rd Party libraries\r\n */\r\nimport Swiper from 'swiper';\r\nimport SwiperCore, {\r\n Navigation,\r\n Pagination\r\n} from 'swiper/core';\r\nSwiperCore.use([Navigation, Pagination]);\r\n\r\n/*\r\nComponents\r\n */\r\nimport GlobalHeader from './../_core/components/global-header.es6';\r\nimport GlobalNav from './../_core/components/global-nav.es6';\r\nimport NotificationBar from '../_core/components/notification-bar.es6';\r\nimport PopupModal from '../_core/components/popup-modal.es6';\r\nimport SearchBar from '../_core/components/search-bar.es6';\r\n\r\n\r\n/*\r\nWidgets\r\n */\r\nimport Accordion from './../_core/widgets/accordion.es6';\r\nimport Wayfinder from './../_core/widgets/wayfinding-semantic-search.es6';\r\nimport AnimatedWidget from './../_core/widgets/animated-widget.es6';\r\nimport VideoPlayer from './../_core/widgets/video-player.es6';\r\n\r\n\r\n/*\r\nLEGACY\r\nPerformance Charts and visualizations\r\n */\r\nimport PerformanceChart from '../_core/performance/legacy/performance-line-chart.es6';\r\nimport UnitPriceHistoryTable from '../_core/performance/legacy/unit-price-history-table.es6';\r\nimport UnitPriceLatestTable from '../_core/performance/legacy/unit-price-latest-table.es6';\r\nimport AssetAllocationPieChart from '../_core/performance/legacy/asset-allocation-piechart.es6';\r\n\r\n\r\npicturefill();\r\nsvg4everybody();\r\n\r\n\r\nlet Components = {\r\n GlobalHeader,\r\n GlobalNav,\r\n NotificationBar,\r\n PopupModal,\r\n SearchBar\r\n};\r\n\r\nlet Widgets = {\r\n Accordion,\r\n Wayfinder,\r\n AnimatedWidget,\r\n VideoPlayer\r\n};\r\n\r\nlet LegacyVisualizations = {\r\n PerformanceChart,\r\n UnitPriceHistoryTable,\r\n UnitPriceLatestTable,\r\n AssetAllocationPieChart,\r\n};\r\n\r\nfunction loadComponent(name, options) {\r\n if (typeof Components[name] !== 'undefined') {\r\n return new Components[name](options, StateManager);\r\n } else {\r\n console.error('Component load error - ', name);\r\n return false;\r\n }\r\n}\r\n\r\nfunction loadWidget(name, elem, options) {\r\n if (typeof Widgets[name] !== 'undefined') {\r\n return new Widgets[name](elem, options);\r\n } else {\r\n console.error('Widget load error - ', name);\r\n return false;\r\n }\r\n}\r\n\r\nfunction loadLegacyVisualization(name, elem, options) {\r\n if (typeof LegacyVisualizations[name] !== 'undefined') {\r\n return new LegacyVisualizations[name](elem, options);\r\n } else {\r\n console.error('Legacy Visualizations load error - ', name);\r\n return false;\r\n }\r\n}\r\n\r\nwindow.Mjolnir = window.Mjolnir || {};\r\nwindow.Mjolnir.loadWidget = loadWidget;\r\nwindow.Mjolnir.loadComponent = loadComponent;\r\nwindow.Mjolnir.loadLegacyVisualization = loadLegacyVisualization;\r\nwindow.Mjolnir.Components = [];\r\nwindow.Mjolnir.adminMode = false;\r\n\r\n//Global Components\r\nMjolnir.Components.GlobalHeader = new Mjolnir.loadComponent('GlobalHeader');\r\nMjolnir.Components.GlobalNav = new Mjolnir.loadComponent('GlobalNav');\r\nMjolnir.Components.NotificationBar = new Mjolnir.loadComponent('NotificationBar');\r\nMjolnir.Components.PopupModal = new Mjolnir.loadComponent('PopupModal');\r\nMjolnir.Components.SearchBar = new Mjolnir.loadComponent('SearchBar');\r\n\r\nStateManager.run();\r\n\r\n\r\n/*\r\nGlobal Widget initializers\r\n */\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n /*\r\n Video Module\r\n */\r\n var videoElements = document.querySelectorAll('.video-wrapper');\r\n videoElements.forEach(function (elem, index) {\r\n let videoWidget = Mjolnir.loadWidget('VideoPlayer', elem, {\r\n hideContentOnPlay: true,\r\n autoplay: false,\r\n muted: false,\r\n hideControls: true\r\n });\r\n });\r\n\r\n /*\r\n Accordion Widget\r\n JS: /AS.Presentation/js/_core/widgets/accordion.es6\r\n View: /AS.Web/Components/Widgets/AccordionWidget/_AccordionWidget.cshtml\r\n */\r\n var accordionElems = document.querySelectorAll('.accordion');\r\n accordionElems.forEach(function (elem, index) {\r\n\r\n let accordionWidget = Mjolnir.loadWidget('Accordion', elem, {\r\n openFirst: false,\r\n allowMultipleOpen: true,\r\n });\r\n });\r\n\r\n /*\r\n Wayfinding / Semantic Widget\r\n JS: /AS.Presentation/js/_core/widgets/accordion.es6\r\n View: /AS.Web/Components/Widgets/AccordionWidget/_AccordionWidget.cshtml\r\n */\r\n var wayfindingElems = document.querySelectorAll('.wayfinding-semantic-search');\r\n wayfindingElems.forEach(function (elem, index) {\r\n let wayfindingWidget = Mjolnir.loadWidget('Wayfinder', elem);\r\n });\r\n\r\n /*\r\n Featured Content Sliders\r\n */\r\n var featuredContentSlider = document.querySelectorAll('.featured-content-slider');\r\n featuredContentSlider.forEach(function (elem, index) {\r\n\r\n let swiperContainer = elem.querySelector('.swiper-container');\r\n let swiper = new Swiper(swiperContainer, {\r\n\r\n loop: true,\r\n slidesPerView: 1,\r\n spaceBetween: 24,\r\n\r\n breakpoints: {\r\n 768: {\r\n slidesPerView: 2\r\n },\r\n 992: {\r\n slidesPerView: 3\r\n },\r\n },\r\n\r\n navigation: {\r\n nextEl: '.btn-swiper-next',\r\n prevEl: '.btn-swiper-prev'\r\n },\r\n });\r\n });\r\n\r\n /*\r\n On load animations\r\n */\r\n var animatedWidgets = document.querySelectorAll('[data-animated-widget=\"true\"]');\r\n animatedWidgets.forEach(function (elem, index) {\r\n let animatedWidget = Mjolnir.loadWidget('AnimatedWidget', elem);\r\n });\r\n\r\n /*\r\n LEGACY\r\n Visualization and tables\r\n */\r\n var initLegacyPerformance = true;\r\n if (initLegacyPerformance === true) {\r\n /*\r\n Performance Table Pagination via Tabulator\r\n */\r\n var performanceTable = document.querySelectorAll('.performance-table');\r\n performanceTable.forEach(function (elem, index) {\r\n if (elem.dataset.paginated) {\r\n let formatedTable = new Tabulator(elem, {\r\n layout: 'fitColumns',\r\n headerSort: false,\r\n pagination: 'local',\r\n paginationSize: 10,\r\n paginationSizeSelector: false,\r\n selectable: false\r\n });\r\n }\r\n });\r\n\r\n /*\r\n Unit Price History Table\r\n */\r\n var unitPriceHistoryTable = document.querySelectorAll('.unit-price-history-table');\r\n unitPriceHistoryTable.forEach(function (elem, index) {\r\n let unitPriceTable = Mjolnir.loadLegacyVisualization('UnitPriceHistoryTable', elem);\r\n });\r\n\r\n /*\r\n Latest Unit Price Table\r\n */\r\n var unitPriceLatestTable = document.querySelectorAll('.unit-price-latest-table');\r\n unitPriceLatestTable.forEach(function (elem, index) {\r\n let unitPriceTable = Mjolnir.loadLegacyVisualization('UnitPriceLatestTable', elem);\r\n });\r\n\r\n /*\r\n Performance Line Chart\r\n */\r\n var performanceLineChart = document.querySelectorAll('.performance-line-chart');\r\n performanceLineChart.forEach(function (elem, index) {\r\n let performanceChart = Mjolnir.loadLegacyVisualization('PerformanceChart', elem);\r\n });\r\n\r\n /*\r\n Asset Allocation Pie Chart\r\n */\r\n var assetAllocationElem = document.querySelectorAll('.asset-allocation-pie-chart');\r\n assetAllocationElem.forEach(function (elem, index) {\r\n let assetAllocationPieChart = Mjolnir.loadLegacyVisualization('AssetAllocationPieChart', elem);\r\n });\r\n }\r\n\r\n\r\n var liveChatTrigger = document.querySelectorAll('.btn-start-chat');\r\n liveChatTrigger.forEach(function (elem, index) {\r\n elem.addEventListener('click', (e) => {\r\n window.webChatGlobal[\"showChatbox\"]();\r\n e.preventDefault();\r\n });\r\n });\r\n});" ] }