{"version":3,"file":"js/app.2f52a270.js","mappings":"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","sources":["webpack://zn98com-vue2/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://zn98com-vue2/./node_modules/core-js/internals/a-callable.js","webpack://zn98com-vue2/./node_modules/core-js/internals/a-possible-prototype.js","webpack://zn98com-vue2/./node_modules/core-js/internals/an-object.js","webpack://zn98com-vue2/./node_modules/core-js/internals/array-includes.js","webpack://zn98com-vue2/./node_modules/core-js/internals/array-slice.js","webpack://zn98com-vue2/./node_modules/core-js/internals/classof-raw.js","webpack://zn98com-vue2/./node_modules/core-js/internals/classof.js","webpack://zn98com-vue2/./node_modules/core-js/internals/clear-error-stack.js","webpack://zn98com-vue2/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://zn98com-vue2/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://zn98com-vue2/./node_modules/core-js/internals/create-property-descriptor.js","webpack://zn98com-vue2/./node_modules/core-js/internals/descriptors.js","webpack://zn98com-vue2/./node_modules/core-js/internals/document-create-element.js","webpack://zn98com-vue2/./node_modules/core-js/internals/engine-is-ios.js","webpack://zn98com-vue2/./node_modules/core-js/internals/engine-is-node.js","webpack://zn98com-vue2/./node_modules/core-js/internals/engine-user-agent.js","webpack://zn98com-vue2/./node_modules/core-js/internals/engine-v8-version.js","webpack://zn98com-vue2/./node_modules/core-js/internals/enum-bug-keys.js","webpack://zn98com-vue2/./node_modules/core-js/internals/error-stack-installable.js","webpack://zn98com-vue2/./node_modules/core-js/internals/export.js","webpack://zn98com-vue2/./node_modules/core-js/internals/fails.js","webpack://zn98com-vue2/./node_modules/core-js/internals/function-apply.js","webpack://zn98com-vue2/./node_modules/core-js/internals/function-bind-context.js","webpack://zn98com-vue2/./node_modules/core-js/internals/function-bind-native.js","webpack://zn98com-vue2/./node_modules/core-js/internals/function-call.js","webpack://zn98com-vue2/./node_modules/core-js/internals/function-name.js","webpack://zn98com-vue2/./node_modules/core-js/internals/function-uncurry-this.js","webpack://zn98com-vue2/./node_modules/core-js/internals/get-built-in.js","webpack://zn98com-vue2/./node_modules/core-js/internals/get-method.js","webpack://zn98com-vue2/./node_modules/core-js/internals/global.js","webpack://zn98com-vue2/./node_modules/core-js/internals/has-own-property.js","webpack://zn98com-vue2/./node_modules/core-js/internals/hidden-keys.js","webpack://zn98com-vue2/./node_modules/core-js/internals/html.js","webpack://zn98com-vue2/./node_modules/core-js/internals/ie8-dom-define.js","webpack://zn98com-vue2/./node_modules/core-js/internals/indexed-object.js","webpack://zn98com-vue2/./node_modules/core-js/internals/inherit-if-required.js","webpack://zn98com-vue2/./node_modules/core-js/internals/inspect-source.js","webpack://zn98com-vue2/./node_modules/core-js/internals/install-error-cause.js","webpack://zn98com-vue2/./node_modules/core-js/internals/internal-state.js","webpack://zn98com-vue2/./node_modules/core-js/internals/is-callable.js","webpack://zn98com-vue2/./node_modules/core-js/internals/is-forced.js","webpack://zn98com-vue2/./node_modules/core-js/internals/is-object.js","webpack://zn98com-vue2/./node_modules/core-js/internals/is-pure.js","webpack://zn98com-vue2/./node_modules/core-js/internals/is-symbol.js","webpack://zn98com-vue2/./node_modules/core-js/internals/length-of-array-like.js","webpack://zn98com-vue2/./node_modules/core-js/internals/native-symbol.js","webpack://zn98com-vue2/./node_modules/core-js/internals/native-weak-map.js","webpack://zn98com-vue2/./node_modules/core-js/internals/normalize-string-argument.js","webpack://zn98com-vue2/./node_modules/core-js/internals/object-define-property.js","webpack://zn98com-vue2/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://zn98com-vue2/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://zn98com-vue2/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://zn98com-vue2/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://zn98com-vue2/./node_modules/core-js/internals/object-keys-internal.js","webpack://zn98com-vue2/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://zn98com-vue2/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://zn98com-vue2/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://zn98com-vue2/./node_modules/core-js/internals/own-keys.js","webpack://zn98com-vue2/./node_modules/core-js/internals/proxy-accessor.js","webpack://zn98com-vue2/./node_modules/core-js/internals/redefine.js","webpack://zn98com-vue2/./node_modules/core-js/internals/require-object-coercible.js","webpack://zn98com-vue2/./node_modules/core-js/internals/set-global.js","webpack://zn98com-vue2/./node_modules/core-js/internals/shared-key.js","webpack://zn98com-vue2/./node_modules/core-js/internals/shared-store.js","webpack://zn98com-vue2/./node_modules/core-js/internals/shared.js","webpack://zn98com-vue2/./node_modules/core-js/internals/task.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-absolute-index.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-indexed-object.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-length.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-object.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-primitive.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-property-key.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-string-tag-support.js","webpack://zn98com-vue2/./node_modules/core-js/internals/to-string.js","webpack://zn98com-vue2/./node_modules/core-js/internals/try-to-string.js","webpack://zn98com-vue2/./node_modules/core-js/internals/uid.js","webpack://zn98com-vue2/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://zn98com-vue2/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://zn98com-vue2/./node_modules/core-js/internals/validate-arguments-length.js","webpack://zn98com-vue2/./node_modules/core-js/internals/well-known-symbol.js","webpack://zn98com-vue2/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://zn98com-vue2/./node_modules/core-js/modules/es.error.cause.js","webpack://zn98com-vue2/./node_modules/core-js/modules/web.clear-immediate.js","webpack://zn98com-vue2/./node_modules/core-js/modules/web.immediate.js","webpack://zn98com-vue2/./node_modules/core-js/modules/web.set-immediate.js","webpack://zn98com-vue2/./node_modules/ssr-window/dist/ssr-window.esm.js","webpack://zn98com-vue2/./node_modules/dom7/dist/dom7.modular.js","webpack://zn98com-vue2/../src/utils/dom.js","webpack://zn98com-vue2/../src/utils/utils.js","webpack://zn98com-vue2/../src/utils/support.js","webpack://zn98com-vue2/../src/utils/class.js","webpack://zn98com-vue2/../src/components/core/update/updateSize.js","webpack://zn98com-vue2/../src/components/core/update/updateSlides.js","webpack://zn98com-vue2/../src/components/core/update/updateAutoHeight.js","webpack://zn98com-vue2/../src/components/core/update/updateSlidesOffset.js","webpack://zn98com-vue2/../src/components/core/update/updateSlidesProgress.js","webpack://zn98com-vue2/../src/components/core/update/updateProgress.js","webpack://zn98com-vue2/../src/components/core/update/updateSlidesClasses.js","webpack://zn98com-vue2/../src/components/core/update/updateActiveIndex.js","webpack://zn98com-vue2/../src/components/core/update/updateClickedSlide.js","webpack://zn98com-vue2/../src/components/core/update/index.js","webpack://zn98com-vue2/../src/components/core/translate/getTranslate.js","webpack://zn98com-vue2/../src/components/core/translate/setTranslate.js","webpack://zn98com-vue2/../src/components/core/translate/minTranslate.js","webpack://zn98com-vue2/../src/components/core/translate/maxTranslate.js","webpack://zn98com-vue2/../src/components/core/translate/translateTo.js","webpack://zn98com-vue2/../src/components/core/translate/index.js","webpack://zn98com-vue2/../src/components/core/transition/setTransition.js","webpack://zn98com-vue2/../src/components/core/transition/transitionStart.js","webpack://zn98com-vue2/../src/components/core/transition/transitionEnd.js","webpack://zn98com-vue2/../src/components/core/transition/index.js","webpack://zn98com-vue2/../src/components/core/slide/slideTo.js","webpack://zn98com-vue2/../src/components/core/slide/slideToLoop.js","webpack://zn98com-vue2/../src/components/core/slide/slideNext.js","webpack://zn98com-vue2/../src/components/core/slide/slidePrev.js","webpack://zn98com-vue2/../src/components/core/slide/slideReset.js","webpack://zn98com-vue2/../src/components/core/slide/slideToClosest.js","webpack://zn98com-vue2/../src/components/core/slide/slideToClickedSlide.js","webpack://zn98com-vue2/../src/components/core/slide/index.js","webpack://zn98com-vue2/../src/components/core/loop/loopCreate.js","webpack://zn98com-vue2/../src/components/core/loop/loopFix.js","webpack://zn98com-vue2/../src/components/core/loop/loopDestroy.js","webpack://zn98com-vue2/../src/components/core/loop/index.js","webpack://zn98com-vue2/../src/components/core/grab-cursor/setGrabCursor.js","webpack://zn98com-vue2/../src/components/core/grab-cursor/unsetGrabCursor.js","webpack://zn98com-vue2/../src/components/core/grab-cursor/index.js","webpack://zn98com-vue2/../src/components/core/manipulation/appendSlide.js","webpack://zn98com-vue2/../src/components/core/manipulation/prependSlide.js","webpack://zn98com-vue2/../src/components/core/manipulation/addSlide.js","webpack://zn98com-vue2/../src/components/core/manipulation/removeSlide.js","webpack://zn98com-vue2/../src/components/core/manipulation/removeAllSlides.js","webpack://zn98com-vue2/../src/components/core/manipulation/index.js","webpack://zn98com-vue2/../src/utils/device.js","webpack://zn98com-vue2/../src/components/core/events/onTouchStart.js","webpack://zn98com-vue2/../src/components/core/events/onTouchMove.js","webpack://zn98com-vue2/../src/components/core/events/onTouchEnd.js","webpack://zn98com-vue2/../src/components/core/events/onResize.js","webpack://zn98com-vue2/../src/components/core/events/onClick.js","webpack://zn98com-vue2/../src/components/core/events/onScroll.js","webpack://zn98com-vue2/../src/components/core/events/index.js","webpack://zn98com-vue2/../src/components/core/breakpoints/setBreakpoint.js","webpack://zn98com-vue2/../src/components/core/breakpoints/getBreakpoint.js","webpack://zn98com-vue2/../src/components/core/breakpoints/index.js","webpack://zn98com-vue2/../src/components/core/classes/addClasses.js","webpack://zn98com-vue2/../src/components/core/classes/removeClasses.js","webpack://zn98com-vue2/../src/components/core/classes/index.js","webpack://zn98com-vue2/../src/components/core/images/loadImage.js","webpack://zn98com-vue2/../src/components/core/images/preloadImages.js","webpack://zn98com-vue2/../src/components/core/images/index.js","webpack://zn98com-vue2/../src/components/core/check-overflow/index.js","webpack://zn98com-vue2/../src/components/core/defaults.js","webpack://zn98com-vue2/../src/components/core/core-class.js","webpack://zn98com-vue2/../src/modules/device/device.js","webpack://zn98com-vue2/../src/modules/support/support.js","webpack://zn98com-vue2/../src/utils/browser.js","webpack://zn98com-vue2/../src/modules/browser/browser.js","webpack://zn98com-vue2/../src/modules/resize/resize.js","webpack://zn98com-vue2/../src/modules/observer/observer.js","webpack://zn98com-vue2/../src/components/virtual/virtual.js","webpack://zn98com-vue2/../src/components/keyboard/keyboard.js","webpack://zn98com-vue2/../src/components/mousewheel/mousewheel.js","webpack://zn98com-vue2/../src/components/navigation/navigation.js","webpack://zn98com-vue2/../src/components/pagination/pagination.js","webpack://zn98com-vue2/../src/components/scrollbar/scrollbar.js","webpack://zn98com-vue2/../src/components/parallax/parallax.js","webpack://zn98com-vue2/../src/components/zoom/zoom.js","webpack://zn98com-vue2/../src/components/lazy/lazy.js","webpack://zn98com-vue2/../src/components/controller/controller.js","webpack://zn98com-vue2/../src/components/a11y/a11y.js","webpack://zn98com-vue2/../src/components/history/history.js","webpack://zn98com-vue2/../src/components/hash-navigation/hash-navigation.js","webpack://zn98com-vue2/../src/components/autoplay/autoplay.js","webpack://zn98com-vue2/../src/components/effect-fade/effect-fade.js","webpack://zn98com-vue2/../src/components/effect-cube/effect-cube.js","webpack://zn98com-vue2/../src/components/effect-flip/effect-flip.js","webpack://zn98com-vue2/../src/components/effect-coverflow/effect-coverflow.js","webpack://zn98com-vue2/../src/components/thumbs/thumbs.js","webpack://zn98com-vue2/../src/swiper.js","webpack://zn98com-vue2/./node_modules/v-viewer/dist/v-viewer.js","webpack://zn98com-vue2/./node_modules/viewerjs/dist/viewer.js","webpack://zn98com-vue2/./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js","webpack://zn98com-vue2/./node_modules/vue/dist/vue.runtime.esm.js","webpack://zn98com-vue2/webpack/bootstrap","webpack://zn98com-vue2/webpack/runtime/compat get default export","webpack://zn98com-vue2/webpack/runtime/define property getters","webpack://zn98com-vue2/webpack/runtime/ensure chunk","webpack://zn98com-vue2/webpack/runtime/get javascript chunk filename","webpack://zn98com-vue2/webpack/runtime/get mini-css chunk filename","webpack://zn98com-vue2/webpack/runtime/global","webpack://zn98com-vue2/webpack/runtime/hasOwnProperty shorthand","webpack://zn98com-vue2/webpack/runtime/load script","webpack://zn98com-vue2/webpack/runtime/make namespace object","webpack://zn98com-vue2/webpack/runtime/publicPath","webpack://zn98com-vue2/webpack/runtime/css loading","webpack://zn98com-vue2/webpack/runtime/jsonp chunk loading","webpack://zn98com-vue2/./src/App.vue?6edc","webpack://zn98com-vue2/./src/views/layout/NavHeader.vue?fcc9","webpack://zn98com-vue2/src/views/layout/NavHeader.vue","webpack://zn98com-vue2/./src/views/layout/NavHeader.vue?4ecf","webpack://zn98com-vue2/./src/views/layout/NavHeader.vue","webpack://zn98com-vue2/./src/views/layout/NavFooter.vue?d72e","webpack://zn98com-vue2/src/views/layout/NavFooter.vue","webpack://zn98com-vue2/./src/views/layout/NavFooter.vue?7cf2","webpack://zn98com-vue2/./src/views/layout/NavFooter.vue","webpack://zn98com-vue2/./src/views/layout/NavSwiper.vue?9bb4","webpack://zn98com-vue2/src/views/layout/NavSwiper.vue","webpack://zn98com-vue2/./src/views/layout/NavSwiper.vue?932c","webpack://zn98com-vue2/./src/views/layout/NavSwiper.vue","webpack://zn98com-vue2/src/App.vue","webpack://zn98com-vue2/./src/App.vue?facb","webpack://zn98com-vue2/./src/App.vue","webpack://zn98com-vue2/./node_modules/vue-router/dist/vue-router.esm.js","webpack://zn98com-vue2/./src/router/index.js","webpack://zn98com-vue2/./node_modules/vuex/dist/vuex.esm.js","webpack://zn98com-vue2/./src/store/index.js","webpack://zn98com-vue2/./src/utils/imgViewer.js","webpack://zn98com-vue2/./src/main.js"],"sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.22.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n return passed;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2));\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n","/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, forced: FORCED }, O);\n }\n};\n\n// https://github.com/tc39/proposal-error-cause\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n clearImmediate: clearImmediate\n});\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setImmediate = require('../internals/task').set;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n setImmediate: setImmediate\n});\n","/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\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 }\n\n // Set attrs\n for (let 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 // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\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 (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let 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 return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n 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 const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\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 return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\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}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\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}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const 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}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let 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// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\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 return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let 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 (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let 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 (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\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 new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let 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 return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let 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 el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\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 if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((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,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\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((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((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 const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let 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 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 const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\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;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n return {\n touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\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 const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\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 if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : 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\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .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 if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\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 slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (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 const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\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 if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\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\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((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 let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const 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 }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\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 Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\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 if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let 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 }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const 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 swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\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 if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\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 if (runCallbacks) {\n swiper.emit('transitionEnd');\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}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n 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 swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n 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 swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let 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 const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\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 if (!swiper.animating) {\n swiper.animating = true;\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 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const 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 const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\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 const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\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\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\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 const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const 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}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let 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 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 && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\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;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\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 const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\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 if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\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 data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-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) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\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;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\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 data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\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 data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\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 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 return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\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 if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\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 afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let 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 newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\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 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 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\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(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\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 if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\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 }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const 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 if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\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}\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\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 }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\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 }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\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 const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\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 }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\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 const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : 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 if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\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 }\n // Prevent Links Clicks\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 }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\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 const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\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}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(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 if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const 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;\n\n // events\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\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\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\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\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, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\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\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // 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\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\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 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: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let 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 for (let 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 (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\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 if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\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 }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\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\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((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 const 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\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\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\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 swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let 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 for (let 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 appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((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(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
${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(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let 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 swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\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 if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && isArrowRight) || (swiper.isVertical() && isArrowDown) || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\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();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // 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 ) {\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}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\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 if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // 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) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\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() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const 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;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n 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\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // 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 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 }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\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 const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\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 momuntum 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 const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\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\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\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 const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\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 = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\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 if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\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 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 }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\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 return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\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() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\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 if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\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 if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\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 }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\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 if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\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 firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let 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 $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\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 }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n ) {\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 if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport 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', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // 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', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\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 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 if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\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 if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n 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(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\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() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\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() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\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 let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport 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() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const 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 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 const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(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 if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\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(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\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(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\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 = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = 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 if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\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\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 (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\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) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\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\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\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 const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const 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\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const 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(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\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 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let 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 if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\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\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\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() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\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 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\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 // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, 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 if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, 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 if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nexport 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() {\n const swiper = this;\n const zoom = {\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 };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\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 if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n const $source = $(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 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 if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\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 return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let 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 if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\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() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // 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 let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\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 const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // 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 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 c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let 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(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\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};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\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 if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\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 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() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nexport 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 },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n swiper.emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const 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() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\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 const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n 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 swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const 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() {\n const 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 swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const 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 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};\n\nexport 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() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) 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 if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\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() {\n const swiper = this;\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() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\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 if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\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 $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 const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const 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 const zFactor = (Browser.isSafari || Browser.isWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport 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() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const 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 Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\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 let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\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 $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\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\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
`);\n $slideEl.append($shadowAfterEl);\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 // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nexport 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() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n 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 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 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const 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\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport 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() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n Device,\n Support,\n Browser,\n Resize,\n Observer,\n //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"viewerjs\"), require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"viewerjs\", \"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueViewer\"] = factory(require(\"viewerjs\"), require(\"vue\"));\n\telse\n\t\troot[\"VueViewer\"] = factory(root[\"Viewer\"], root[\"Vue\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_2__) {\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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = extend;\n\nfunction extend() {\n var extended = {};\n var deep = false;\n var i = 0;\n var length = arguments.length;\n\n if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') {\n deep = arguments[0];\n i++;\n }\n\n function merge(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') {\n extended[prop] = extend(true, extended[prop], obj[prop]);\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n }\n\n for (; i < length; i++) {\n var obj = arguments[i];\n merge(obj);\n }\n\n return extended;\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_viewerjs__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_viewerjs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_viewerjs__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue__);\n\n\n\n\nvar api = function api() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$images = _ref.images,\n images = _ref$images === undefined ? [] : _ref$images,\n _ref$options = _ref.options,\n options = _ref$options === undefined ? {} : _ref$options;\n\n options = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__utils__[\"a\" /* extend */])(options, {\n inline: false });\n\n var ViewerToken = __WEBPACK_IMPORTED_MODULE_2_vue___default.a.extend({\n render: function render(h) {\n return h('div', {\n style: {\n display: 'none'\n },\n class: ['__viewer-token']\n }, images.map(function (attr) {\n return h('img', {\n attrs: typeof attr === 'string' ? { src: attr } : attr\n });\n }));\n }\n });\n var token = new ViewerToken();\n token.$mount();\n document.body.appendChild(token.$el);\n\n var $viewer = new __WEBPACK_IMPORTED_MODULE_0_viewerjs___default.a(token.$el, options);\n var $destroy = $viewer.destroy.bind($viewer);\n $viewer.destroy = function () {\n $destroy();\n token.$destroy();\n document.body.removeChild(token.$el);\n return $viewer;\n };\n $viewer.show();\n\n token.$el.addEventListener('hidden', function () {\n if (this.viewer === $viewer) {\n $viewer.destroy();\n }\n });\n\n return $viewer;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (api);\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_viewerjs__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_viewerjs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_viewerjs__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_throttle_debounce__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_throttle_debounce___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_throttle_debounce__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue__);\n\n\n\n\nvar directive = function directive() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$name = _ref.name,\n name = _ref$name === undefined ? 'viewer' : _ref$name,\n _ref$debug = _ref.debug,\n debug = _ref$debug === undefined ? false : _ref$debug;\n\n function createViewer(el, options) {\n var rebuild = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var observer = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n __WEBPACK_IMPORTED_MODULE_2_vue___default.a.nextTick(function () {\n if (observer && !imageDiff(el)) return;\n if (rebuild || !el['$' + name]) {\n destroyViewer(el);\n el['$' + name] = new __WEBPACK_IMPORTED_MODULE_0_viewerjs___default.a(el, options);\n log('Viewer created');\n } else {\n el['$' + name].update();\n log('Viewer updated');\n }\n });\n }\n\n function imageDiff(el) {\n var imageContent = el.innerHTML.match(//g);\n var viewerImageText = imageContent ? imageContent.join('') : undefined;\n if (el.__viewerImageDiffCache === viewerImageText) {\n log('Element change detected, but image(s) has not changed');\n return false;\n } else {\n log('Image change detected');\n el.__viewerImageDiffCache = viewerImageText;\n return true;\n }\n }\n\n function createObserver(el, options, debouncedCreateViewer, rebuild) {\n destroyObserver(el);\n var MutationObserver = global.MutationObserver || global.WebKitMutationObserver || global.MozMutationObserver;\n if (!MutationObserver) {\n log('Observer not supported');\n return;\n }\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n log('Viewer mutation:' + mutation.type);\n debouncedCreateViewer(el, options, rebuild, true);\n });\n });\n var config = { attributes: true, childList: true, characterData: true, subtree: true };\n observer.observe(el, config);\n el.__viewerMutationObserver = observer;\n log('Observer created');\n }\n\n function createWatcher(el, _ref2, vnode, debouncedCreateViewer) {\n var expression = _ref2.expression;\n\n var simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n if (!expression || !simplePathRE.test(expression)) {\n log('Only simple dot-delimited paths can create watcher');\n return;\n }\n el.__viewerUnwatch = vnode.context.$watch(expression, function (newVal, oldVal) {\n log('Change detected by watcher: ', expression);\n debouncedCreateViewer(el, newVal, true);\n }, {\n deep: true\n });\n log('Watcher created, expression: ', expression);\n }\n\n function destroyViewer(el) {\n if (!el['$' + name]) {\n return;\n }\n el['$' + name].destroy();\n delete el['$' + name];\n log('Viewer destroyed');\n }\n\n function destroyObserver(el) {\n if (!el.__viewerMutationObserver) {\n return;\n }\n el.__viewerMutationObserver.disconnect();\n delete el.__viewerMutationObserver;\n log('Observer destroyed');\n }\n\n function destroyWatcher(el) {\n if (!el.__viewerUnwatch) {\n return;\n }\n el.__viewerUnwatch();\n delete el.__viewerUnwatch;\n log('Watcher destroyed');\n }\n\n function log() {\n var _console;\n\n debug && (_console = console).log.apply(_console, arguments);\n }\n\n var directive = {\n bind: function bind(el, binding, vnode) {\n log('Viewer bind');\n var debouncedCreateViewer = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_throttle_debounce__[\"debounce\"])(50, createViewer);\n debouncedCreateViewer(el, binding.value);\n\n createWatcher(el, binding, vnode, debouncedCreateViewer);\n\n if (!binding.modifiers.static) {\n createObserver(el, binding.value, debouncedCreateViewer, binding.modifiers.rebuild);\n }\n },\n unbind: function unbind(el, binding) {\n log('Viewer unbind');\n\n destroyObserver(el);\n\n destroyWatcher(el);\n\n destroyViewer(el);\n }\n };\n\n return directive;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (directive);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(9)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(10)(\n /* script */\n __webpack_require__(8),\n /* template */\n __webpack_require__(11),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Volumes/public/Workspace/web/v-viewer/src/component.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] component.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-3091014c\", Component.options)\n } else {\n hotAPI.reload(\"data-v-3091014c\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_viewerjs__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_viewerjs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_viewerjs__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__component_vue__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__component_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__component_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__directive__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__api__ = __webpack_require__(3);\n/* harmony reexport (default from non-hamory) */ __webpack_require__.d(__webpack_exports__, \"component\", function() { return __WEBPACK_IMPORTED_MODULE_2__component_vue___default.a; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"directive\", function() { return __WEBPACK_IMPORTED_MODULE_3__directive__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"api\", function() { return __WEBPACK_IMPORTED_MODULE_4__api__[\"a\"]; });\n/* harmony reexport (default from non-hamory) */ __webpack_require__.d(__webpack_exports__, \"Viewer\", function() { return __WEBPACK_IMPORTED_MODULE_1_viewerjs___default.a; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n install: function install(Vue) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$name = _ref.name,\n name = _ref$name === undefined ? 'viewer' : _ref$name,\n _ref$debug = _ref.debug,\n debug = _ref$debug === undefined ? false : _ref$debug,\n defaultOptions = _ref.defaultOptions;\n\n __WEBPACK_IMPORTED_MODULE_1_viewerjs___default.a.setDefaults(defaultOptions);\n\n Vue.component(name, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* extend */])(__WEBPACK_IMPORTED_MODULE_2__component_vue___default.a, { name: name }));\n Vue.directive(name, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__directive__[\"a\" /* default */])({ name: name, debug: debug }));\n Vue.prototype['$' + name + 'Api'] = __WEBPACK_IMPORTED_MODULE_4__api__[\"a\" /* default */];\n },\n setDefaults: function setDefaults(defaultOptions) {\n __WEBPACK_IMPORTED_MODULE_1_viewerjs___default.a.setDefaults(defaultOptions);\n }\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function (global, factory) {\n\t( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (global = global || self, factory(global.throttleDebounce = {}));\n})(this, function (exports) {\n\t'use strict';\n\n\tfunction throttle(delay, noTrailing, callback, debounceMode) {\n\t\tvar timeoutID;\n\t\tvar cancelled = false;\n\n\t\tvar lastExec = 0;\n\n\t\tfunction clearExistingTimeout() {\n\t\t\tif (timeoutID) {\n\t\t\t\tclearTimeout(timeoutID);\n\t\t\t}\n\t\t}\n\n\t\tfunction cancel() {\n\t\t\tclearExistingTimeout();\n\t\t\tcancelled = true;\n\t\t}\n\n\t\tif (typeof noTrailing !== 'boolean') {\n\t\t\tdebounceMode = callback;\n\t\t\tcallback = noTrailing;\n\t\t\tnoTrailing = undefined;\n\t\t}\n\n\n\t\tfunction wrapper() {\n\t\t\tfor (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\targuments_[_key] = arguments[_key];\n\t\t\t}\n\n\t\t\tvar self = this;\n\t\t\tvar elapsed = Date.now() - lastExec;\n\n\t\t\tif (cancelled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction exec() {\n\t\t\t\tlastExec = Date.now();\n\t\t\t\tcallback.apply(self, arguments_);\n\t\t\t}\n\n\n\t\t\tfunction clear() {\n\t\t\t\ttimeoutID = undefined;\n\t\t\t}\n\n\t\t\tif (debounceMode && !timeoutID) {\n\t\t\t\texec();\n\t\t\t}\n\n\t\t\tclearExistingTimeout();\n\n\t\t\tif (debounceMode === undefined && elapsed > delay) {\n\t\t\t\texec();\n\t\t\t} else if (noTrailing !== true) {\n\t\t\t\ttimeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n\t\t\t}\n\t\t}\n\n\t\twrapper.cancel = cancel;\n\n\t\treturn wrapper;\n\t}\n\n\tfunction debounce(delay, atBegin, callback) {\n\t\treturn callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n\t}\n\n\texports.debounce = debounce;\n\texports.throttle = throttle;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_viewerjs__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_viewerjs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_viewerjs__);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n images: {\n type: Array\n },\n rebuild: {\n type: Boolean,\n default: false\n },\n trigger: {},\n options: {\n type: Object\n }\n },\n\n data: function data() {\n return {};\n },\n\n\n computed: {},\n\n methods: {\n onChange: function onChange() {\n if (this.rebuild) {\n this.rebuildViewer();\n } else {\n this.updateViewer();\n }\n },\n rebuildViewer: function rebuildViewer() {\n this.destroyViewer();\n this.createViewer();\n },\n updateViewer: function updateViewer() {\n if (this.$viewer) {\n this.$viewer.update();\n this.$emit('inited', this.$viewer);\n } else {\n this.createViewer();\n }\n },\n destroyViewer: function destroyViewer() {\n this.$viewer && this.$viewer.destroy();\n },\n createViewer: function createViewer() {\n this.$viewer = new __WEBPACK_IMPORTED_MODULE_0_viewerjs___default.a(this.$el, this.options);\n this.$emit('inited', this.$viewer);\n }\n },\n\n watch: {\n images: function images() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.onChange();\n });\n },\n\n trigger: {\n handler: function handler() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.onChange();\n });\n },\n\n deep: true\n },\n options: {\n handler: function handler() {\n var _this3 = this;\n\n this.$nextTick(function () {\n _this3.rebuildViewer();\n });\n },\n\n deep: true\n }\n },\n\n mounted: function mounted() {\n this.createViewer();\n },\n destroyed: function destroyed() {\n this.destroyViewer();\n }\n});\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar g;\n\ng = function () {\n\treturn this;\n}();\n\ntry {\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n}\n\nmodule.exports = g;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n// this module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n scopeId,\n cssModules\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n // inject cssModules\n if (cssModules) {\n var computed = Object.create(options.computed || null)\n Object.keys(cssModules).forEach(function (key) {\n var module = cssModules[key]\n computed[key] = function () { return module }\n })\n options.computed = computed\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [_vm._t(\"default\", null, {\n \"images\": _vm.images,\n \"options\": _vm.options\n })], 2)\n},staticRenderFns: []}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-3091014c\", module.exports)\n }\n}\n\n/***/ })\n/******/ ]);\n});","/*!\n * Viewer.js v1.10.5\n * https://fengyuanchen.github.io/viewerjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2022-04-05T08:21:02.491Z\n */\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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Viewer = factory());\n})(this, (function () { 'use strict';\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\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 Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _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\n var DEFAULTS = {\n /**\n * Enable a modal backdrop, specify `static` for a backdrop\n * which doesn't close the modal on click.\n * @type {boolean}\n */\n backdrop: true,\n\n /**\n * Show the button on the top-right of the viewer.\n * @type {boolean}\n */\n button: true,\n\n /**\n * Show the navbar.\n * @type {boolean | number}\n */\n navbar: true,\n\n /**\n * Specify the visibility and the content of the title.\n * @type {boolean | number | Function | Array}\n */\n title: true,\n\n /**\n * Show the toolbar.\n * @type {boolean | number | Object}\n */\n toolbar: true,\n\n /**\n * Custom class name(s) to add to the viewer's root element.\n * @type {string}\n */\n className: '',\n\n /**\n * Define where to put the viewer in modal mode.\n * @type {string | Element}\n */\n container: 'body',\n\n /**\n * Filter the images for viewing. Return true if the image is viewable.\n * @type {Function}\n */\n filter: null,\n\n /**\n * Enable to request fullscreen when play.\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/FullscreenOptions}\n * @type {boolean|FullscreenOptions}\n */\n fullscreen: true,\n\n /**\n * Define the extra attributes to inherit from the original image.\n * @type {Array}\n */\n inheritedAttributes: ['crossOrigin', 'decoding', 'isMap', 'loading', 'referrerPolicy', 'sizes', 'srcset', 'useMap'],\n\n /**\n * Define the initial index of image for viewing.\n * @type {number}\n */\n initialViewIndex: 0,\n\n /**\n * Enable inline mode.\n * @type {boolean}\n */\n inline: false,\n\n /**\n * The amount of time to delay between automatically cycling an image when playing.\n * @type {number}\n */\n interval: 5000,\n\n /**\n * Enable keyboard support.\n * @type {boolean}\n */\n keyboard: true,\n\n /**\n * Focus the viewer when initialized.\n * @type {boolean}\n */\n focus: true,\n\n /**\n * Indicate if show a loading spinner when load image or not.\n * @type {boolean}\n */\n loading: true,\n\n /**\n * Indicate if enable loop viewing or not.\n * @type {boolean}\n */\n loop: true,\n\n /**\n * Min width of the viewer in inline mode.\n * @type {number}\n */\n minWidth: 200,\n\n /**\n * Min height of the viewer in inline mode.\n * @type {number}\n */\n minHeight: 100,\n\n /**\n * Enable to move the image.\n * @type {boolean}\n */\n movable: true,\n\n /**\n * Enable to rotate the image.\n * @type {boolean}\n */\n rotatable: true,\n\n /**\n * Enable to scale the image.\n * @type {boolean}\n */\n scalable: true,\n\n /**\n * Enable to zoom the image.\n * @type {boolean}\n */\n zoomable: true,\n\n /**\n * Enable to zoom the current image by dragging on the touch screen.\n * @type {boolean}\n */\n zoomOnTouch: true,\n\n /**\n * Enable to zoom the image by wheeling mouse.\n * @type {boolean}\n */\n zoomOnWheel: true,\n\n /**\n * Enable to slide to the next or previous image by swiping on the touch screen.\n * @type {boolean}\n */\n slideOnTouch: true,\n\n /**\n * Indicate if toggle the image size between its natural size\n * and initial size when double click on the image or not.\n * @type {boolean}\n */\n toggleOnDblclick: true,\n\n /**\n * Show the tooltip with image ratio (percentage) when zoom in or zoom out.\n * @type {boolean}\n */\n tooltip: true,\n\n /**\n * Enable CSS3 Transition for some special elements.\n * @type {boolean}\n */\n transition: true,\n\n /**\n * Define the CSS `z-index` value of viewer in modal mode.\n * @type {number}\n */\n zIndex: 2015,\n\n /**\n * Define the CSS `z-index` value of viewer in inline mode.\n * @type {number}\n */\n zIndexInline: 0,\n\n /**\n * Define the ratio when zoom the image by wheeling mouse.\n * @type {number}\n */\n zoomRatio: 0.1,\n\n /**\n * Define the min ratio of the image when zoom out.\n * @type {number}\n */\n minZoomRatio: 0.01,\n\n /**\n * Define the max ratio of the image when zoom in.\n * @type {number}\n */\n maxZoomRatio: 100,\n\n /**\n * Define where to get the original image URL for viewing.\n * @type {string | Function}\n */\n url: 'src',\n\n /**\n * Event shortcuts.\n * @type {Function}\n */\n ready: null,\n show: null,\n shown: null,\n hide: null,\n hidden: null,\n view: null,\n viewed: null,\n move: null,\n moved: null,\n rotate: null,\n rotated: null,\n scale: null,\n scaled: null,\n zoom: null,\n zoomed: null,\n play: null,\n stop: null\n };\n\n var TEMPLATE = '
' + '
' + '
' + '
' + '
' + '
' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ';\n\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n var NAMESPACE = 'viewer'; // Actions\n\n var ACTION_MOVE = 'move';\n var ACTION_SWITCH = 'switch';\n var ACTION_ZOOM = 'zoom'; // Classes\n\n var CLASS_ACTIVE = \"\".concat(NAMESPACE, \"-active\");\n var CLASS_CLOSE = \"\".concat(NAMESPACE, \"-close\");\n var CLASS_FADE = \"\".concat(NAMESPACE, \"-fade\");\n var CLASS_FIXED = \"\".concat(NAMESPACE, \"-fixed\");\n var CLASS_FULLSCREEN = \"\".concat(NAMESPACE, \"-fullscreen\");\n var CLASS_FULLSCREEN_EXIT = \"\".concat(NAMESPACE, \"-fullscreen-exit\");\n var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n var CLASS_HIDE_MD_DOWN = \"\".concat(NAMESPACE, \"-hide-md-down\");\n var CLASS_HIDE_SM_DOWN = \"\".concat(NAMESPACE, \"-hide-sm-down\");\n var CLASS_HIDE_XS_DOWN = \"\".concat(NAMESPACE, \"-hide-xs-down\");\n var CLASS_IN = \"\".concat(NAMESPACE, \"-in\");\n var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n var CLASS_LOADING = \"\".concat(NAMESPACE, \"-loading\");\n var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\");\n var CLASS_OPEN = \"\".concat(NAMESPACE, \"-open\");\n var CLASS_SHOW = \"\".concat(NAMESPACE, \"-show\");\n var CLASS_TRANSITION = \"\".concat(NAMESPACE, \"-transition\"); // Native events\n\n var EVENT_CLICK = 'click';\n var EVENT_DBLCLICK = 'dblclick';\n var EVENT_DRAG_START = 'dragstart';\n var EVENT_FOCUSIN = 'focusin';\n var EVENT_KEY_DOWN = 'keydown';\n var EVENT_LOAD = 'load';\n var EVENT_ERROR = 'error';\n var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n var EVENT_RESIZE = 'resize';\n var EVENT_TRANSITION_END = 'transitionend';\n var EVENT_WHEEL = 'wheel'; // Custom events\n\n var EVENT_READY = 'ready';\n var EVENT_SHOW = 'show';\n var EVENT_SHOWN = 'shown';\n var EVENT_HIDE = 'hide';\n var EVENT_HIDDEN = 'hidden';\n var EVENT_VIEW = 'view';\n var EVENT_VIEWED = 'viewed';\n var EVENT_MOVE = 'move';\n var EVENT_MOVED = 'moved';\n var EVENT_ROTATE = 'rotate';\n var EVENT_ROTATED = 'rotated';\n var EVENT_SCALE = 'scale';\n var EVENT_SCALED = 'scaled';\n var EVENT_ZOOM = 'zoom';\n var EVENT_ZOOMED = 'zoomed';\n var EVENT_PLAY = 'play';\n var EVENT_STOP = 'stop'; // Data keys\n\n var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\"); // RegExps\n\n var REGEXP_SPACES = /\\s\\s*/; // Misc\n\n var BUTTONS = ['zoom-in', 'zoom-out', 'one-to-one', 'reset', 'prev', 'play', 'next', 'rotate-left', 'rotate-right', 'flip-horizontal', 'flip-vertical'];\n\n /**\n * Check if the given value is a string.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a string, else `false`.\n */\n\n function isString(value) {\n return typeof value === 'string';\n }\n /**\n * Check if the given value is not a number.\n */\n\n var isNaN = Number.isNaN || WINDOW.isNaN;\n /**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\n\n function isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n }\n /**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\n\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n /**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\n\n function isObject(value) {\n return _typeof(value) === 'object' && value !== null;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n /**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\n\n function isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n\n try {\n var _constructor = value.constructor;\n var prototype = _constructor.prototype;\n return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n } catch (error) {\n return false;\n }\n }\n /**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n /**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\n\n function forEach(data, callback) {\n if (data && isFunction(callback)) {\n if (Array.isArray(data) || isNumber(data.length)\n /* array-like */\n ) {\n var length = data.length;\n var i;\n\n for (i = 0; i < length; i += 1) {\n if (callback.call(data, data[i], i, data) === false) {\n break;\n }\n }\n } else if (isObject(data)) {\n Object.keys(data).forEach(function (key) {\n callback.call(data, data[key], key, data);\n });\n }\n }\n\n return data;\n }\n /**\n * Extend the given object.\n * @param {*} obj - The object to be extended.\n * @param {*} args - The rest objects which will be merged to the first object.\n * @returns {Object} The extended object.\n */\n\n var assign = Object.assign || function assign(obj) {\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 if (isObject(obj) && args.length > 0) {\n args.forEach(function (arg) {\n if (isObject(arg)) {\n Object.keys(arg).forEach(function (key) {\n obj[key] = arg[key];\n });\n }\n });\n }\n\n return obj;\n };\n var REGEXP_SUFFIX = /^(?:width|height|left|top|marginLeft|marginTop)$/;\n /**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\n\n function setStyle(element, styles) {\n var style = element.style;\n forEach(styles, function (value, property) {\n if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n value += 'px';\n }\n\n style[property] = value;\n });\n }\n /**\n * Escape a string for using in HTML.\n * @param {String} value - The string to escape.\n * @returns {String} Returns the escaped string.\n */\n\n function escapeHTMLEntities(value) {\n return isString(value) ? value.replace(/&(?!amp;|quot;|#39;|lt;|gt;)/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>') : value;\n }\n /**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\n\n function hasClass(element, value) {\n if (!element || !value) {\n return false;\n }\n\n return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n }\n /**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\n\n function addClass(element, value) {\n if (!element || !value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n addClass(elem, value);\n });\n return;\n }\n\n if (element.classList) {\n element.classList.add(value);\n return;\n }\n\n var className = element.className.trim();\n\n if (!className) {\n element.className = value;\n } else if (className.indexOf(value) < 0) {\n element.className = \"\".concat(className, \" \").concat(value);\n }\n }\n /**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\n\n function removeClass(element, value) {\n if (!element || !value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n removeClass(elem, value);\n });\n return;\n }\n\n if (element.classList) {\n element.classList.remove(value);\n return;\n }\n\n if (element.className.indexOf(value) >= 0) {\n element.className = element.className.replace(value, '');\n }\n }\n /**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\n\n function toggleClass(element, value, added) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n toggleClass(elem, value, added);\n });\n return;\n } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n if (added) {\n addClass(element, value);\n } else {\n removeClass(element, value);\n }\n }\n var REGEXP_HYPHENATE = /([a-z\\d])([A-Z])/g;\n /**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\n\n function hyphenate(value) {\n return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();\n }\n /**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\n\n function getData(element, name) {\n if (isObject(element[name])) {\n return element[name];\n }\n\n if (element.dataset) {\n return element.dataset[name];\n }\n\n return element.getAttribute(\"data-\".concat(hyphenate(name)));\n }\n /**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\n\n function setData(element, name, data) {\n if (isObject(data)) {\n element[name] = data;\n } else if (element.dataset) {\n element.dataset[name] = data;\n } else {\n element.setAttribute(\"data-\".concat(hyphenate(name)), data);\n }\n }\n\n var onceSupported = function () {\n var supported = false;\n\n if (IS_BROWSER) {\n var once = false;\n\n var listener = function listener() {};\n\n var options = Object.defineProperty({}, 'once', {\n get: function get() {\n supported = true;\n return once;\n },\n\n /**\n * This setter can fix a `TypeError` in strict mode\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n * @param {boolean} value - The value to set\n */\n set: function set(value) {\n once = value;\n }\n });\n WINDOW.addEventListener('test', listener, options);\n WINDOW.removeEventListener('test', listener, options);\n }\n\n return supported;\n }();\n /**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n\n function removeListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (!onceSupported) {\n var listeners = element.listeners;\n\n if (listeners && listeners[event] && listeners[event][listener]) {\n handler = listeners[event][listener];\n delete listeners[event][listener];\n\n if (Object.keys(listeners[event]).length === 0) {\n delete listeners[event];\n }\n\n if (Object.keys(listeners).length === 0) {\n delete element.listeners;\n }\n }\n }\n\n element.removeEventListener(event, handler, options);\n });\n }\n /**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n function addListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (options.once && !onceSupported) {\n var _element$listeners = element.listeners,\n listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n _handler = function handler() {\n delete listeners[event][listener];\n element.removeEventListener(event, _handler, options);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n listener.apply(element, args);\n };\n\n if (!listeners[event]) {\n listeners[event] = {};\n }\n\n if (listeners[event][listener]) {\n element.removeEventListener(event, listeners[event][listener], options);\n }\n\n listeners[event][listener] = _handler;\n element.listeners = listeners;\n }\n\n element.addEventListener(event, _handler, options);\n });\n }\n /**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @param {Object} options - The additional event options.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\n\n function dispatchEvent(element, type, data, options) {\n var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n if (isFunction(Event) && isFunction(CustomEvent)) {\n event = new CustomEvent(type, _objectSpread2({\n bubbles: true,\n cancelable: true,\n detail: data\n }, options));\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, data);\n }\n\n return element.dispatchEvent(event);\n }\n /**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\n\n function getOffset(element) {\n var box = element.getBoundingClientRect();\n return {\n left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n };\n }\n /**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\n\n function getTransforms(_ref) {\n var rotate = _ref.rotate,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n var values = [];\n\n if (isNumber(translateX) && translateX !== 0) {\n values.push(\"translateX(\".concat(translateX, \"px)\"));\n }\n\n if (isNumber(translateY) && translateY !== 0) {\n values.push(\"translateY(\".concat(translateY, \"px)\"));\n } // Rotate should come first before scale to match orientation transform\n\n\n if (isNumber(rotate) && rotate !== 0) {\n values.push(\"rotate(\".concat(rotate, \"deg)\"));\n }\n\n if (isNumber(scaleX) && scaleX !== 1) {\n values.push(\"scaleX(\".concat(scaleX, \")\"));\n }\n\n if (isNumber(scaleY) && scaleY !== 1) {\n values.push(\"scaleY(\".concat(scaleY, \")\"));\n }\n\n var transform = values.length ? values.join(' ') : 'none';\n return {\n WebkitTransform: transform,\n msTransform: transform,\n transform: transform\n };\n }\n /**\n * Get an image name from an image url.\n * @param {string} url - The target url.\n * @example\n * // picture.jpg\n * getImageNameFromURL('https://domain.com/path/to/picture.jpg?size=1280×960')\n * @returns {string} A string contains the image name.\n */\n\n function getImageNameFromURL(url) {\n return isString(url) ? decodeURIComponent(url.replace(/^.*\\//, '').replace(/[?&#].*$/, '')) : '';\n }\n var IS_SAFARI = WINDOW.navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(WINDOW.navigator.userAgent);\n /**\n * Get an image's natural sizes.\n * @param {string} image - The target image.\n * @param {Object} options - The viewer options.\n * @param {Function} callback - The callback function.\n * @returns {HTMLImageElement} The new image.\n */\n\n function getImageNaturalSizes(image, options, callback) {\n var newImage = document.createElement('img'); // Modern browsers (except Safari)\n\n if (image.naturalWidth && !IS_SAFARI) {\n callback(image.naturalWidth, image.naturalHeight);\n return newImage;\n }\n\n var body = document.body || document.documentElement;\n\n newImage.onload = function () {\n callback(newImage.width, newImage.height);\n\n if (!IS_SAFARI) {\n body.removeChild(newImage);\n }\n };\n\n forEach(options.inheritedAttributes, function (name) {\n var value = image.getAttribute(name);\n\n if (value !== null) {\n newImage.setAttribute(name, value);\n }\n });\n newImage.src = image.src; // iOS Safari will convert the image automatically\n // with its orientation once append it into DOM\n\n if (!IS_SAFARI) {\n newImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n body.appendChild(newImage);\n }\n\n return newImage;\n }\n /**\n * Get the related class name of a responsive type number.\n * @param {string} type - The responsive type.\n * @returns {string} The related class name.\n */\n\n function getResponsiveClass(type) {\n switch (type) {\n case 2:\n return CLASS_HIDE_XS_DOWN;\n\n case 3:\n return CLASS_HIDE_SM_DOWN;\n\n case 4:\n return CLASS_HIDE_MD_DOWN;\n\n default:\n return '';\n }\n }\n /**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\n\n function getMaxZoomRatio(pointers) {\n var pointers2 = _objectSpread2({}, pointers);\n\n var ratios = [];\n forEach(pointers, function (pointer, pointerId) {\n delete pointers2[pointerId];\n forEach(pointers2, function (pointer2) {\n var x1 = Math.abs(pointer.startX - pointer2.startX);\n var y1 = Math.abs(pointer.startY - pointer2.startY);\n var x2 = Math.abs(pointer.endX - pointer2.endX);\n var y2 = Math.abs(pointer.endY - pointer2.endY);\n var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n var ratio = (z2 - z1) / z1;\n ratios.push(ratio);\n });\n });\n ratios.sort(function (a, b) {\n return Math.abs(a) < Math.abs(b);\n });\n return ratios[0];\n }\n /**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\n\n function getPointer(_ref2, endOnly) {\n var pageX = _ref2.pageX,\n pageY = _ref2.pageY;\n var end = {\n endX: pageX,\n endY: pageY\n };\n return endOnly ? end : _objectSpread2({\n timeStamp: Date.now(),\n startX: pageX,\n startY: pageY\n }, end);\n }\n /**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\n\n function getPointersCenter(pointers) {\n var pageX = 0;\n var pageY = 0;\n var count = 0;\n forEach(pointers, function (_ref3) {\n var startX = _ref3.startX,\n startY = _ref3.startY;\n pageX += startX;\n pageY += startY;\n count += 1;\n });\n pageX /= count;\n pageY /= count;\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n\n var render = {\n render: function render() {\n this.initContainer();\n this.initViewer();\n this.initList();\n this.renderViewer();\n },\n initBody: function initBody() {\n var ownerDocument = this.element.ownerDocument;\n var body = ownerDocument.body || ownerDocument.documentElement;\n this.body = body;\n this.scrollbarWidth = window.innerWidth - ownerDocument.documentElement.clientWidth;\n this.initialBodyPaddingRight = body.style.paddingRight;\n this.initialBodyComputedPaddingRight = window.getComputedStyle(body).paddingRight;\n },\n initContainer: function initContainer() {\n this.containerData = {\n width: window.innerWidth,\n height: window.innerHeight\n };\n },\n initViewer: function initViewer() {\n var options = this.options,\n parent = this.parent;\n var viewerData;\n\n if (options.inline) {\n viewerData = {\n width: Math.max(parent.offsetWidth, options.minWidth),\n height: Math.max(parent.offsetHeight, options.minHeight)\n };\n this.parentData = viewerData;\n }\n\n if (this.fulled || !viewerData) {\n viewerData = this.containerData;\n }\n\n this.viewerData = assign({}, viewerData);\n },\n renderViewer: function renderViewer() {\n if (this.options.inline && !this.fulled) {\n setStyle(this.viewer, this.viewerData);\n }\n },\n initList: function initList() {\n var _this = this;\n\n var element = this.element,\n options = this.options,\n list = this.list;\n var items = []; // initList may be called in this.update, so should keep idempotent\n\n list.innerHTML = '';\n forEach(this.images, function (image, index) {\n var src = image.src;\n var alt = image.alt || getImageNameFromURL(src);\n\n var url = _this.getImageURL(image);\n\n if (src || url) {\n var item = document.createElement('li');\n var img = document.createElement('img');\n forEach(options.inheritedAttributes, function (name) {\n var value = image.getAttribute(name);\n\n if (value !== null) {\n img.setAttribute(name, value);\n }\n });\n img.src = src || url;\n img.alt = alt;\n img.setAttribute('data-original-url', url || src);\n item.setAttribute('data-index', index);\n item.setAttribute('data-viewer-action', 'view');\n item.setAttribute('role', 'button');\n\n if (options.keyboard) {\n item.setAttribute('tabindex', 0);\n }\n\n item.appendChild(img);\n list.appendChild(item);\n items.push(item);\n }\n });\n this.items = items;\n forEach(items, function (item) {\n var image = item.firstElementChild;\n var onLoad;\n var onError;\n setData(image, 'filled', true);\n\n if (options.loading) {\n addClass(item, CLASS_LOADING);\n }\n\n addListener(image, EVENT_LOAD, onLoad = function onLoad(event) {\n removeListener(image, EVENT_ERROR, onError);\n\n if (options.loading) {\n removeClass(item, CLASS_LOADING);\n }\n\n _this.loadImage(event);\n }, {\n once: true\n });\n addListener(image, EVENT_ERROR, onError = function onError() {\n removeListener(image, EVENT_LOAD, onLoad);\n\n if (options.loading) {\n removeClass(item, CLASS_LOADING);\n }\n }, {\n once: true\n });\n });\n\n if (options.transition) {\n addListener(element, EVENT_VIEWED, function () {\n addClass(list, CLASS_TRANSITION);\n }, {\n once: true\n });\n }\n },\n renderList: function renderList() {\n var index = this.index;\n var item = this.items[index];\n\n if (!item) {\n return;\n }\n\n var next = item.nextElementSibling;\n var gutter = parseInt(window.getComputedStyle(next || item).marginLeft, 10);\n var offsetWidth = item.offsetWidth;\n var outerWidth = offsetWidth + gutter; // Place the active item in the center of the screen\n\n setStyle(this.list, assign({\n width: outerWidth * this.length - gutter\n }, getTransforms({\n translateX: (this.viewerData.width - offsetWidth) / 2 - outerWidth * index\n })));\n },\n resetList: function resetList() {\n var list = this.list;\n list.innerHTML = '';\n removeClass(list, CLASS_TRANSITION);\n setStyle(list, getTransforms({\n translateX: 0\n }));\n },\n initImage: function initImage(done) {\n var _this2 = this;\n\n var options = this.options,\n image = this.image,\n viewerData = this.viewerData;\n var footerHeight = this.footer.offsetHeight;\n var viewerWidth = viewerData.width;\n var viewerHeight = Math.max(viewerData.height - footerHeight, footerHeight);\n var oldImageData = this.imageData || {};\n var sizingImage;\n this.imageInitializing = {\n abort: function abort() {\n sizingImage.onload = null;\n }\n };\n sizingImage = getImageNaturalSizes(image, options, function (naturalWidth, naturalHeight) {\n var aspectRatio = naturalWidth / naturalHeight;\n var width = viewerWidth;\n var height = viewerHeight;\n _this2.imageInitializing = false;\n\n if (viewerHeight * aspectRatio > viewerWidth) {\n height = viewerWidth / aspectRatio;\n } else {\n width = viewerHeight * aspectRatio;\n }\n\n width = Math.min(width * 0.9, naturalWidth);\n height = Math.min(height * 0.9, naturalHeight);\n var left = (viewerWidth - width) / 2;\n var top = (viewerHeight - height) / 2;\n var imageData = {\n left: left,\n top: top,\n x: left,\n y: top,\n width: width,\n height: height,\n oldRatio: 1,\n ratio: width / naturalWidth,\n aspectRatio: aspectRatio,\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight\n };\n var initialImageData = assign({}, imageData);\n\n if (options.rotatable) {\n imageData.rotate = oldImageData.rotate || 0;\n initialImageData.rotate = 0;\n }\n\n if (options.scalable) {\n imageData.scaleX = oldImageData.scaleX || 1;\n imageData.scaleY = oldImageData.scaleY || 1;\n initialImageData.scaleX = 1;\n initialImageData.scaleY = 1;\n }\n\n _this2.imageData = imageData;\n _this2.initialImageData = initialImageData;\n\n if (done) {\n done();\n }\n });\n },\n renderImage: function renderImage(done) {\n var _this3 = this;\n\n var image = this.image,\n imageData = this.imageData;\n setStyle(image, assign({\n width: imageData.width,\n height: imageData.height,\n // XXX: Not to use translateX/Y to avoid image shaking when zooming\n marginLeft: imageData.x,\n marginTop: imageData.y\n }, getTransforms(imageData)));\n\n if (done) {\n if ((this.viewing || this.moving || this.rotating || this.scaling || this.zooming) && this.options.transition && hasClass(image, CLASS_TRANSITION)) {\n var onTransitionEnd = function onTransitionEnd() {\n _this3.imageRendering = false;\n done();\n };\n\n this.imageRendering = {\n abort: function abort() {\n removeListener(image, EVENT_TRANSITION_END, onTransitionEnd);\n }\n };\n addListener(image, EVENT_TRANSITION_END, onTransitionEnd, {\n once: true\n });\n } else {\n done();\n }\n }\n },\n resetImage: function resetImage() {\n // this.image only defined after viewed\n if (this.viewing || this.viewed) {\n var image = this.image;\n\n if (this.viewing) {\n this.viewing.abort();\n }\n\n image.parentNode.removeChild(image);\n this.image = null;\n }\n }\n };\n\n var events = {\n bind: function bind() {\n var options = this.options,\n viewer = this.viewer,\n canvas = this.canvas;\n var document = this.element.ownerDocument;\n addListener(viewer, EVENT_CLICK, this.onClick = this.click.bind(this));\n addListener(viewer, EVENT_DRAG_START, this.onDragStart = this.dragstart.bind(this));\n addListener(canvas, EVENT_POINTER_DOWN, this.onPointerDown = this.pointerdown.bind(this));\n addListener(document, EVENT_POINTER_MOVE, this.onPointerMove = this.pointermove.bind(this));\n addListener(document, EVENT_POINTER_UP, this.onPointerUp = this.pointerup.bind(this));\n addListener(document, EVENT_KEY_DOWN, this.onKeyDown = this.keydown.bind(this));\n addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n\n if (options.zoomable && options.zoomOnWheel) {\n addListener(viewer, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n passive: false,\n capture: true\n });\n }\n\n if (options.toggleOnDblclick) {\n addListener(canvas, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n }\n },\n unbind: function unbind() {\n var options = this.options,\n viewer = this.viewer,\n canvas = this.canvas;\n var document = this.element.ownerDocument;\n removeListener(viewer, EVENT_CLICK, this.onClick);\n removeListener(viewer, EVENT_DRAG_START, this.onDragStart);\n removeListener(canvas, EVENT_POINTER_DOWN, this.onPointerDown);\n removeListener(document, EVENT_POINTER_MOVE, this.onPointerMove);\n removeListener(document, EVENT_POINTER_UP, this.onPointerUp);\n removeListener(document, EVENT_KEY_DOWN, this.onKeyDown);\n removeListener(window, EVENT_RESIZE, this.onResize);\n\n if (options.zoomable && options.zoomOnWheel) {\n removeListener(viewer, EVENT_WHEEL, this.onWheel, {\n passive: false,\n capture: true\n });\n }\n\n if (options.toggleOnDblclick) {\n removeListener(canvas, EVENT_DBLCLICK, this.onDblclick);\n }\n }\n };\n\n var handlers = {\n click: function click(event) {\n var options = this.options,\n imageData = this.imageData;\n var target = event.target;\n var action = getData(target, DATA_ACTION);\n\n if (!action && target.localName === 'img' && target.parentElement.localName === 'li') {\n target = target.parentElement;\n action = getData(target, DATA_ACTION);\n } // Cancel the emulated click when the native click event was triggered.\n\n\n if (IS_TOUCH_DEVICE && event.isTrusted && target === this.canvas) {\n clearTimeout(this.clickCanvasTimeout);\n }\n\n switch (action) {\n case 'mix':\n if (this.played) {\n this.stop();\n } else if (options.inline) {\n if (this.fulled) {\n this.exit();\n } else {\n this.full();\n }\n } else {\n this.hide();\n }\n\n break;\n\n case 'hide':\n this.hide();\n break;\n\n case 'view':\n this.view(getData(target, 'index'));\n break;\n\n case 'zoom-in':\n this.zoom(0.1, true);\n break;\n\n case 'zoom-out':\n this.zoom(-0.1, true);\n break;\n\n case 'one-to-one':\n this.toggle();\n break;\n\n case 'reset':\n this.reset();\n break;\n\n case 'prev':\n this.prev(options.loop);\n break;\n\n case 'play':\n this.play(options.fullscreen);\n break;\n\n case 'next':\n this.next(options.loop);\n break;\n\n case 'rotate-left':\n this.rotate(-90);\n break;\n\n case 'rotate-right':\n this.rotate(90);\n break;\n\n case 'flip-horizontal':\n this.scaleX(-imageData.scaleX || -1);\n break;\n\n case 'flip-vertical':\n this.scaleY(-imageData.scaleY || -1);\n break;\n\n default:\n if (this.played) {\n this.stop();\n }\n\n }\n },\n dblclick: function dblclick(event) {\n event.preventDefault();\n\n if (this.viewed && event.target === this.image) {\n // Cancel the emulated double click when the native dblclick event was triggered.\n if (IS_TOUCH_DEVICE && event.isTrusted) {\n clearTimeout(this.doubleClickImageTimeout);\n } // XXX: No pageX/Y properties in custom event, fallback to the original event.\n\n\n this.toggle(event.isTrusted ? event : event.detail && event.detail.originalEvent);\n }\n },\n load: function load() {\n var _this = this;\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = false;\n }\n\n var element = this.element,\n options = this.options,\n image = this.image,\n index = this.index,\n viewerData = this.viewerData;\n removeClass(image, CLASS_INVISIBLE);\n\n if (options.loading) {\n removeClass(this.canvas, CLASS_LOADING);\n }\n\n image.style.cssText = 'height:0;' + \"margin-left:\".concat(viewerData.width / 2, \"px;\") + \"margin-top:\".concat(viewerData.height / 2, \"px;\") + 'max-width:none!important;' + 'position:relative;' + 'width:0;';\n this.initImage(function () {\n toggleClass(image, CLASS_MOVE, options.movable);\n toggleClass(image, CLASS_TRANSITION, options.transition);\n\n _this.renderImage(function () {\n _this.viewed = true;\n _this.viewing = false;\n\n if (isFunction(options.viewed)) {\n addListener(element, EVENT_VIEWED, options.viewed, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_VIEWED, {\n originalImage: _this.images[index],\n index: index,\n image: image\n }, {\n cancelable: false\n });\n });\n });\n },\n loadImage: function loadImage(event) {\n var image = event.target;\n var parent = image.parentNode;\n var parentWidth = parent.offsetWidth || 30;\n var parentHeight = parent.offsetHeight || 50;\n var filled = !!getData(image, 'filled');\n getImageNaturalSizes(image, this.options, function (naturalWidth, naturalHeight) {\n var aspectRatio = naturalWidth / naturalHeight;\n var width = parentWidth;\n var height = parentHeight;\n\n if (parentHeight * aspectRatio > parentWidth) {\n if (filled) {\n width = parentHeight * aspectRatio;\n } else {\n height = parentWidth / aspectRatio;\n }\n } else if (filled) {\n height = parentWidth / aspectRatio;\n } else {\n width = parentHeight * aspectRatio;\n }\n\n setStyle(image, assign({\n width: width,\n height: height\n }, getTransforms({\n translateX: (parentWidth - width) / 2,\n translateY: (parentHeight - height) / 2\n })));\n });\n },\n keydown: function keydown(event) {\n var options = this.options;\n\n if (!options.keyboard) {\n return;\n }\n\n var keyCode = event.keyCode || event.which || event.charCode;\n\n switch (keyCode) {\n // Enter\n case 13:\n if (this.viewer.contains(event.target)) {\n this.click(event);\n }\n\n break;\n }\n\n if (!this.fulled) {\n return;\n }\n\n switch (keyCode) {\n // Escape\n case 27:\n if (this.played) {\n this.stop();\n } else if (options.inline) {\n if (this.fulled) {\n this.exit();\n }\n } else {\n this.hide();\n }\n\n break;\n // Space\n\n case 32:\n if (this.played) {\n this.stop();\n }\n\n break;\n // ArrowLeft\n\n case 37:\n this.prev(options.loop);\n break;\n // ArrowUp\n\n case 38:\n // Prevent scroll on Firefox\n event.preventDefault(); // Zoom in\n\n this.zoom(options.zoomRatio, true);\n break;\n // ArrowRight\n\n case 39:\n this.next(options.loop);\n break;\n // ArrowDown\n\n case 40:\n // Prevent scroll on Firefox\n event.preventDefault(); // Zoom out\n\n this.zoom(-options.zoomRatio, true);\n break;\n // Ctrl + 0\n\n case 48: // Fall through\n // Ctrl + 1\n // eslint-disable-next-line no-fallthrough\n\n case 49:\n if (event.ctrlKey) {\n event.preventDefault();\n this.toggle();\n }\n\n break;\n }\n },\n dragstart: function dragstart(event) {\n if (event.target.localName === 'img') {\n event.preventDefault();\n }\n },\n pointerdown: function pointerdown(event) {\n var options = this.options,\n pointers = this.pointers;\n var buttons = event.buttons,\n button = event.button;\n\n if (!this.viewed || this.showing || this.viewing || this.hiding // Handle mouse event and pointer event and ignore touch event\n || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n || event.ctrlKey)) {\n return;\n } // Prevent default behaviours as page zooming in touch devices.\n\n\n event.preventDefault();\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n pointers[touch.identifier] = getPointer(touch);\n });\n } else {\n pointers[event.pointerId || 0] = getPointer(event);\n }\n\n var action = options.movable ? ACTION_MOVE : false;\n\n if (options.zoomOnTouch && options.zoomable && Object.keys(pointers).length > 1) {\n action = ACTION_ZOOM;\n } else if (options.slideOnTouch && (event.pointerType === 'touch' || event.type === 'touchstart') && this.isSwitchable()) {\n action = ACTION_SWITCH;\n }\n\n if (options.transition && (action === ACTION_MOVE || action === ACTION_ZOOM)) {\n removeClass(this.image, CLASS_TRANSITION);\n }\n\n this.action = action;\n },\n pointermove: function pointermove(event) {\n var pointers = this.pointers,\n action = this.action;\n\n if (!this.viewed || !action) {\n return;\n }\n\n event.preventDefault();\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n });\n } else {\n assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n }\n\n this.change(event);\n },\n pointerup: function pointerup(event) {\n var _this2 = this;\n\n var options = this.options,\n action = this.action,\n pointers = this.pointers;\n var pointer;\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n pointer = pointers[touch.identifier];\n delete pointers[touch.identifier];\n });\n } else {\n pointer = pointers[event.pointerId || 0];\n delete pointers[event.pointerId || 0];\n }\n\n if (!action) {\n return;\n }\n\n event.preventDefault();\n\n if (options.transition && (action === ACTION_MOVE || action === ACTION_ZOOM)) {\n addClass(this.image, CLASS_TRANSITION);\n }\n\n this.action = false; // Emulate click and double click in touch devices to support backdrop and image zooming (#210).\n\n if (IS_TOUCH_DEVICE && action !== ACTION_ZOOM && pointer && Date.now() - pointer.timeStamp < 500) {\n clearTimeout(this.clickCanvasTimeout);\n clearTimeout(this.doubleClickImageTimeout);\n\n if (options.toggleOnDblclick && this.viewed && event.target === this.image) {\n if (this.imageClicked) {\n this.imageClicked = false; // This timeout will be cleared later when a native dblclick event is triggering\n\n this.doubleClickImageTimeout = setTimeout(function () {\n dispatchEvent(_this2.image, EVENT_DBLCLICK, {\n originalEvent: event\n });\n }, 50);\n } else {\n this.imageClicked = true; // The default timing of a double click in Windows is 500 ms\n\n this.doubleClickImageTimeout = setTimeout(function () {\n _this2.imageClicked = false;\n }, 500);\n }\n } else {\n this.imageClicked = false;\n\n if (options.backdrop && options.backdrop !== 'static' && event.target === this.canvas) {\n // This timeout will be cleared later when a native click event is triggering\n this.clickCanvasTimeout = setTimeout(function () {\n dispatchEvent(_this2.canvas, EVENT_CLICK, {\n originalEvent: event\n });\n }, 50);\n }\n }\n }\n },\n resize: function resize() {\n var _this3 = this;\n\n if (!this.isShown || this.hiding) {\n return;\n }\n\n if (this.fulled) {\n this.close();\n this.initBody();\n this.open();\n }\n\n this.initContainer();\n this.initViewer();\n this.renderViewer();\n this.renderList();\n\n if (this.viewed) {\n this.initImage(function () {\n _this3.renderImage();\n });\n }\n\n if (this.played) {\n if (this.options.fullscreen && this.fulled && !(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n this.stop();\n return;\n }\n\n forEach(this.player.getElementsByTagName('img'), function (image) {\n addListener(image, EVENT_LOAD, _this3.loadImage.bind(_this3), {\n once: true\n });\n dispatchEvent(image, EVENT_LOAD);\n });\n }\n },\n wheel: function wheel(event) {\n var _this4 = this;\n\n if (!this.viewed) {\n return;\n }\n\n event.preventDefault(); // Limit wheel speed to prevent zoom too fast\n\n if (this.wheeling) {\n return;\n }\n\n this.wheeling = true;\n setTimeout(function () {\n _this4.wheeling = false;\n }, 50);\n var ratio = Number(this.options.zoomRatio) || 0.1;\n var delta = 1;\n\n if (event.deltaY) {\n delta = event.deltaY > 0 ? 1 : -1;\n } else if (event.wheelDelta) {\n delta = -event.wheelDelta / 120;\n } else if (event.detail) {\n delta = event.detail > 0 ? 1 : -1;\n }\n\n this.zoom(-delta * ratio, true, event);\n }\n };\n\n var methods = {\n /** Show the viewer (only available in modal mode)\n * @param {boolean} [immediate=false] - Indicates if show the viewer immediately or not.\n * @returns {Viewer} this\n */\n show: function show() {\n var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var element = this.element,\n options = this.options;\n\n if (options.inline || this.showing || this.isShown || this.showing) {\n return this;\n }\n\n if (!this.ready) {\n this.build();\n\n if (this.ready) {\n this.show(immediate);\n }\n\n return this;\n }\n\n if (isFunction(options.show)) {\n addListener(element, EVENT_SHOW, options.show, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_SHOW) === false || !this.ready) {\n return this;\n }\n\n if (this.hiding) {\n this.transitioning.abort();\n }\n\n this.showing = true;\n this.open();\n var viewer = this.viewer;\n removeClass(viewer, CLASS_HIDE);\n viewer.setAttribute('role', 'dialog');\n viewer.setAttribute('aria-labelledby', this.title.id);\n viewer.setAttribute('aria-modal', true);\n viewer.removeAttribute('aria-hidden');\n\n if (options.transition && !immediate) {\n var shown = this.shown.bind(this);\n this.transitioning = {\n abort: function abort() {\n removeListener(viewer, EVENT_TRANSITION_END, shown);\n removeClass(viewer, CLASS_IN);\n }\n };\n addClass(viewer, CLASS_TRANSITION); // Force reflow to enable CSS3 transition\n\n viewer.initialOffsetWidth = viewer.offsetWidth;\n addListener(viewer, EVENT_TRANSITION_END, shown, {\n once: true\n });\n addClass(viewer, CLASS_IN);\n } else {\n addClass(viewer, CLASS_IN);\n this.shown();\n }\n\n return this;\n },\n\n /**\n * Hide the viewer (only available in modal mode)\n * @param {boolean} [immediate=false] - Indicates if hide the viewer immediately or not.\n * @returns {Viewer} this\n */\n hide: function hide() {\n var _this = this;\n\n var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var element = this.element,\n options = this.options;\n\n if (options.inline || this.hiding || !(this.isShown || this.showing)) {\n return this;\n }\n\n if (isFunction(options.hide)) {\n addListener(element, EVENT_HIDE, options.hide, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_HIDE) === false) {\n return this;\n }\n\n if (this.showing) {\n this.transitioning.abort();\n }\n\n this.hiding = true;\n\n if (this.played) {\n this.stop();\n } else if (this.viewing) {\n this.viewing.abort();\n }\n\n var viewer = this.viewer,\n image = this.image;\n\n var hideImmediately = function hideImmediately() {\n removeClass(viewer, CLASS_IN);\n\n _this.hidden();\n };\n\n if (options.transition && !immediate) {\n var onViewerTransitionEnd = function onViewerTransitionEnd(event) {\n // Ignore all propagating `transitionend` events (#275).\n if (event && event.target === viewer) {\n removeListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n\n _this.hidden();\n }\n };\n\n var onImageTransitionEnd = function onImageTransitionEnd() {\n // In case of show the viewer by `viewer.show(true)` previously (#407).\n if (hasClass(viewer, CLASS_TRANSITION)) {\n addListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n removeClass(viewer, CLASS_IN);\n } else {\n hideImmediately();\n }\n };\n\n this.transitioning = {\n abort: function abort() {\n if (_this.viewed && hasClass(image, CLASS_TRANSITION)) {\n removeListener(image, EVENT_TRANSITION_END, onImageTransitionEnd);\n } else if (hasClass(viewer, CLASS_TRANSITION)) {\n removeListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n }\n }\n }; // In case of hiding the viewer when holding on the image (#255),\n // note that the `CLASS_TRANSITION` class will be removed on pointer down.\n\n if (this.viewed && hasClass(image, CLASS_TRANSITION)) {\n addListener(image, EVENT_TRANSITION_END, onImageTransitionEnd, {\n once: true\n });\n this.zoomTo(0, false, null, true);\n } else {\n onImageTransitionEnd();\n }\n } else {\n hideImmediately();\n }\n\n return this;\n },\n\n /**\n * View one of the images with image's index\n * @param {number} index - The index of the image to view.\n * @returns {Viewer} this\n */\n view: function view() {\n var _this2 = this;\n\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.initialViewIndex;\n index = Number(index) || 0;\n\n if (this.hiding || this.played || index < 0 || index >= this.length || this.viewed && index === this.index) {\n return this;\n }\n\n if (!this.isShown) {\n this.index = index;\n return this.show();\n }\n\n if (this.viewing) {\n this.viewing.abort();\n }\n\n var element = this.element,\n options = this.options,\n title = this.title,\n canvas = this.canvas;\n var item = this.items[index];\n var img = item.querySelector('img');\n var url = getData(img, 'originalUrl');\n var alt = img.getAttribute('alt');\n var image = document.createElement('img');\n forEach(options.inheritedAttributes, function (name) {\n var value = img.getAttribute(name);\n\n if (value !== null) {\n image.setAttribute(name, value);\n }\n });\n image.src = url;\n image.alt = alt;\n\n if (isFunction(options.view)) {\n addListener(element, EVENT_VIEW, options.view, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_VIEW, {\n originalImage: this.images[index],\n index: index,\n image: image\n }) === false || !this.isShown || this.hiding || this.played) {\n return this;\n }\n\n var activeItem = this.items[this.index];\n\n if (activeItem) {\n removeClass(activeItem, CLASS_ACTIVE);\n activeItem.removeAttribute('aria-selected');\n }\n\n addClass(item, CLASS_ACTIVE);\n item.setAttribute('aria-selected', true);\n\n if (options.focus) {\n item.focus();\n }\n\n this.image = image;\n this.viewed = false;\n this.index = index;\n this.imageData = {};\n addClass(image, CLASS_INVISIBLE);\n\n if (options.loading) {\n addClass(canvas, CLASS_LOADING);\n }\n\n canvas.innerHTML = '';\n canvas.appendChild(image); // Center current item\n\n this.renderList(); // Clear title\n\n title.innerHTML = ''; // Generate title after viewed\n\n var onViewed = function onViewed() {\n var imageData = _this2.imageData;\n var render = Array.isArray(options.title) ? options.title[1] : options.title;\n title.innerHTML = escapeHTMLEntities(isFunction(render) ? render.call(_this2, image, imageData) : \"\".concat(alt, \" (\").concat(imageData.naturalWidth, \" \\xD7 \").concat(imageData.naturalHeight, \")\"));\n };\n\n var onLoad;\n var onError;\n addListener(element, EVENT_VIEWED, onViewed, {\n once: true\n });\n this.viewing = {\n abort: function abort() {\n removeListener(element, EVENT_VIEWED, onViewed);\n\n if (image.complete) {\n if (_this2.imageRendering) {\n _this2.imageRendering.abort();\n } else if (_this2.imageInitializing) {\n _this2.imageInitializing.abort();\n }\n } else {\n // Cancel download to save bandwidth.\n image.src = '';\n removeListener(image, EVENT_LOAD, onLoad);\n\n if (_this2.timeout) {\n clearTimeout(_this2.timeout);\n }\n }\n }\n };\n\n if (image.complete) {\n this.load();\n } else {\n addListener(image, EVENT_LOAD, onLoad = function onLoad() {\n removeListener(image, EVENT_ERROR, onError);\n\n _this2.load();\n }, {\n once: true\n });\n addListener(image, EVENT_ERROR, onError = function onError() {\n removeListener(image, EVENT_LOAD, onLoad);\n\n if (_this2.timeout) {\n clearTimeout(_this2.timeout);\n _this2.timeout = false;\n }\n\n removeClass(image, CLASS_INVISIBLE);\n\n if (options.loading) {\n removeClass(_this2.canvas, CLASS_LOADING);\n }\n }, {\n once: true\n });\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n } // Make the image visible if it fails to load within 1s\n\n\n this.timeout = setTimeout(function () {\n removeClass(image, CLASS_INVISIBLE);\n _this2.timeout = false;\n }, 1000);\n }\n\n return this;\n },\n\n /**\n * View the previous image\n * @param {boolean} [loop=false] - Indicate if view the last one\n * when it is the first one at present.\n * @returns {Viewer} this\n */\n prev: function prev() {\n var loop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var index = this.index - 1;\n\n if (index < 0) {\n index = loop ? this.length - 1 : 0;\n }\n\n this.view(index);\n return this;\n },\n\n /**\n * View the next image\n * @param {boolean} [loop=false] - Indicate if view the first one\n * when it is the last one at present.\n * @returns {Viewer} this\n */\n next: function next() {\n var loop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var maxIndex = this.length - 1;\n var index = this.index + 1;\n\n if (index > maxIndex) {\n index = loop ? 0 : maxIndex;\n }\n\n this.view(index);\n return this;\n },\n\n /**\n * Move the image with relative offsets.\n * @param {number} x - The moving distance in the horizontal direction.\n * @param {number} [y=x] The moving distance in the vertical direction.\n * @returns {Viewer} this\n */\n move: function move(x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n var imageData = this.imageData;\n this.moveTo(isUndefined(x) ? x : imageData.x + Number(x), isUndefined(y) ? y : imageData.y + Number(y));\n return this;\n },\n\n /**\n * Move the image to an absolute point.\n * @param {number} x - The new position in the horizontal direction.\n * @param {number} [y=x] - The new position in the vertical direction.\n * @param {Event} [_originalEvent=null] - The original event if any.\n * @returns {Viewer} this\n */\n moveTo: function moveTo(x) {\n var _this3 = this;\n\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n\n var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var element = this.element,\n options = this.options,\n imageData = this.imageData;\n x = Number(x);\n y = Number(y);\n\n if (this.viewed && !this.played && options.movable) {\n var oldX = imageData.x;\n var oldY = imageData.y;\n var changed = false;\n\n if (isNumber(x)) {\n changed = true;\n } else {\n x = oldX;\n }\n\n if (isNumber(y)) {\n changed = true;\n } else {\n y = oldY;\n }\n\n if (changed) {\n if (isFunction(options.move)) {\n addListener(element, EVENT_MOVE, options.move, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_MOVE, {\n x: x,\n y: y,\n oldX: oldX,\n oldY: oldY,\n originalEvent: _originalEvent\n }) === false) {\n return this;\n }\n\n imageData.x = x;\n imageData.y = y;\n imageData.left = x;\n imageData.top = y;\n this.moving = true;\n this.renderImage(function () {\n _this3.moving = false;\n\n if (isFunction(options.moved)) {\n addListener(element, EVENT_MOVED, options.moved, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_MOVED, {\n x: x,\n y: y,\n oldX: oldX,\n oldY: oldY,\n originalEvent: _originalEvent\n }, {\n cancelable: false\n });\n });\n }\n }\n\n return this;\n },\n\n /**\n * Rotate the image with a relative degree.\n * @param {number} degree - The rotate degree.\n * @returns {Viewer} this\n */\n rotate: function rotate(degree) {\n this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n return this;\n },\n\n /**\n * Rotate the image to an absolute degree.\n * @param {number} degree - The rotate degree.\n * @returns {Viewer} this\n */\n rotateTo: function rotateTo(degree) {\n var _this4 = this;\n\n var element = this.element,\n options = this.options,\n imageData = this.imageData;\n degree = Number(degree);\n\n if (isNumber(degree) && this.viewed && !this.played && options.rotatable) {\n var oldDegree = imageData.rotate;\n\n if (isFunction(options.rotate)) {\n addListener(element, EVENT_ROTATE, options.rotate, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_ROTATE, {\n degree: degree,\n oldDegree: oldDegree\n }) === false) {\n return this;\n }\n\n imageData.rotate = degree;\n this.rotating = true;\n this.renderImage(function () {\n _this4.rotating = false;\n\n if (isFunction(options.rotated)) {\n addListener(element, EVENT_ROTATED, options.rotated, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_ROTATED, {\n degree: degree,\n oldDegree: oldDegree\n }, {\n cancelable: false\n });\n });\n }\n\n return this;\n },\n\n /**\n * Scale the image on the x-axis.\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @returns {Viewer} this\n */\n scaleX: function scaleX(_scaleX) {\n this.scale(_scaleX, this.imageData.scaleY);\n return this;\n },\n\n /**\n * Scale the image on the y-axis.\n * @param {number} scaleY - The scale ratio on the y-axis.\n * @returns {Viewer} this\n */\n scaleY: function scaleY(_scaleY) {\n this.scale(this.imageData.scaleX, _scaleY);\n return this;\n },\n\n /**\n * Scale the image.\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n * @returns {Viewer} this\n */\n scale: function scale(scaleX) {\n var _this5 = this;\n\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n var element = this.element,\n options = this.options,\n imageData = this.imageData;\n scaleX = Number(scaleX);\n scaleY = Number(scaleY);\n\n if (this.viewed && !this.played && options.scalable) {\n var oldScaleX = imageData.scaleX;\n var oldScaleY = imageData.scaleY;\n var changed = false;\n\n if (isNumber(scaleX)) {\n changed = true;\n } else {\n scaleX = oldScaleX;\n }\n\n if (isNumber(scaleY)) {\n changed = true;\n } else {\n scaleY = oldScaleY;\n }\n\n if (changed) {\n if (isFunction(options.scale)) {\n addListener(element, EVENT_SCALE, options.scale, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_SCALE, {\n scaleX: scaleX,\n scaleY: scaleY,\n oldScaleX: oldScaleX,\n oldScaleY: oldScaleY\n }) === false) {\n return this;\n }\n\n imageData.scaleX = scaleX;\n imageData.scaleY = scaleY;\n this.scaling = true;\n this.renderImage(function () {\n _this5.scaling = false;\n\n if (isFunction(options.scaled)) {\n addListener(element, EVENT_SCALED, options.scaled, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_SCALED, {\n scaleX: scaleX,\n scaleY: scaleY,\n oldScaleX: oldScaleX,\n oldScaleY: oldScaleY\n }, {\n cancelable: false\n });\n });\n }\n }\n\n return this;\n },\n\n /**\n * Zoom the image with a relative ratio.\n * @param {number} ratio - The target ratio.\n * @param {boolean} [hasTooltip=false] - Indicates if it has a tooltip or not.\n * @param {Event} [_originalEvent=null] - The original event if any.\n * @returns {Viewer} this\n */\n zoom: function zoom(ratio) {\n var hasTooltip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var imageData = this.imageData;\n ratio = Number(ratio);\n\n if (ratio < 0) {\n ratio = 1 / (1 - ratio);\n } else {\n ratio = 1 + ratio;\n }\n\n this.zoomTo(imageData.width * ratio / imageData.naturalWidth, hasTooltip, _originalEvent);\n return this;\n },\n\n /**\n * Zoom the image to an absolute ratio.\n * @param {number} ratio - The target ratio.\n * @param {boolean} [hasTooltip=false] - Indicates if it has a tooltip or not.\n * @param {Event} [_originalEvent=null] - The original event if any.\n * @param {Event} [_zoomable=false] - Indicates if the current zoom is available or not.\n * @returns {Viewer} this\n */\n zoomTo: function zoomTo(ratio) {\n var _this6 = this;\n\n var hasTooltip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var _zoomable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var element = this.element,\n options = this.options,\n pointers = this.pointers,\n imageData = this.imageData;\n var x = imageData.x,\n y = imageData.y,\n width = imageData.width,\n height = imageData.height,\n naturalWidth = imageData.naturalWidth,\n naturalHeight = imageData.naturalHeight;\n ratio = Math.max(0, ratio);\n\n if (isNumber(ratio) && this.viewed && !this.played && (_zoomable || options.zoomable)) {\n if (!_zoomable) {\n var minZoomRatio = Math.max(0.01, options.minZoomRatio);\n var maxZoomRatio = Math.min(100, options.maxZoomRatio);\n ratio = Math.min(Math.max(ratio, minZoomRatio), maxZoomRatio);\n }\n\n if (_originalEvent) {\n switch (_originalEvent.type) {\n case 'wheel':\n if (options.zoomRatio >= 0.055 && ratio > 0.95 && ratio < 1.05) {\n ratio = 1;\n }\n\n break;\n\n case 'pointermove':\n case 'touchmove':\n case 'mousemove':\n if (ratio > 0.99 && ratio < 1.01) {\n ratio = 1;\n }\n\n break;\n }\n }\n\n var newWidth = naturalWidth * ratio;\n var newHeight = naturalHeight * ratio;\n var offsetWidth = newWidth - width;\n var offsetHeight = newHeight - height;\n var oldRatio = imageData.ratio;\n\n if (isFunction(options.zoom)) {\n addListener(element, EVENT_ZOOM, options.zoom, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_ZOOM, {\n ratio: ratio,\n oldRatio: oldRatio,\n originalEvent: _originalEvent\n }) === false) {\n return this;\n }\n\n this.zooming = true;\n\n if (_originalEvent) {\n var offset = getOffset(this.viewer);\n var center = pointers && Object.keys(pointers).length > 0 ? getPointersCenter(pointers) : {\n pageX: _originalEvent.pageX,\n pageY: _originalEvent.pageY\n }; // Zoom from the triggering point of the event\n\n imageData.x -= offsetWidth * ((center.pageX - offset.left - x) / width);\n imageData.y -= offsetHeight * ((center.pageY - offset.top - y) / height);\n } else {\n // Zoom from the center of the image\n imageData.x -= offsetWidth / 2;\n imageData.y -= offsetHeight / 2;\n }\n\n imageData.left = imageData.x;\n imageData.top = imageData.y;\n imageData.width = newWidth;\n imageData.height = newHeight;\n imageData.oldRatio = oldRatio;\n imageData.ratio = ratio;\n this.renderImage(function () {\n _this6.zooming = false;\n\n if (isFunction(options.zoomed)) {\n addListener(element, EVENT_ZOOMED, options.zoomed, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_ZOOMED, {\n ratio: ratio,\n oldRatio: oldRatio,\n originalEvent: _originalEvent\n }, {\n cancelable: false\n });\n });\n\n if (hasTooltip) {\n this.tooltip();\n }\n }\n\n return this;\n },\n\n /**\n * Play the images\n * @param {boolean|FullscreenOptions} [fullscreen=false] - Indicate if request fullscreen or not.\n * @returns {Viewer} this\n */\n play: function play() {\n var _this7 = this;\n\n var fullscreen = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!this.isShown || this.played) {\n return this;\n }\n\n var element = this.element,\n options = this.options;\n\n if (isFunction(options.play)) {\n addListener(element, EVENT_PLAY, options.play, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_PLAY) === false) {\n return this;\n }\n\n var player = this.player;\n var onLoad = this.loadImage.bind(this);\n var list = [];\n var total = 0;\n var index = 0;\n this.played = true;\n this.onLoadWhenPlay = onLoad;\n\n if (fullscreen) {\n this.requestFullscreen(fullscreen);\n }\n\n addClass(player, CLASS_SHOW);\n forEach(this.items, function (item, i) {\n var img = item.querySelector('img');\n var image = document.createElement('img');\n image.src = getData(img, 'originalUrl');\n image.alt = img.getAttribute('alt');\n image.referrerPolicy = img.referrerPolicy;\n total += 1;\n addClass(image, CLASS_FADE);\n toggleClass(image, CLASS_TRANSITION, options.transition);\n\n if (hasClass(item, CLASS_ACTIVE)) {\n addClass(image, CLASS_IN);\n index = i;\n }\n\n list.push(image);\n addListener(image, EVENT_LOAD, onLoad, {\n once: true\n });\n player.appendChild(image);\n });\n\n if (isNumber(options.interval) && options.interval > 0) {\n var play = function play() {\n _this7.playing = setTimeout(function () {\n removeClass(list[index], CLASS_IN);\n index += 1;\n index = index < total ? index : 0;\n addClass(list[index], CLASS_IN);\n play();\n }, options.interval);\n };\n\n if (total > 1) {\n play();\n }\n }\n\n return this;\n },\n // Stop play\n stop: function stop() {\n var _this8 = this;\n\n if (!this.played) {\n return this;\n }\n\n var element = this.element,\n options = this.options;\n\n if (isFunction(options.stop)) {\n addListener(element, EVENT_STOP, options.stop, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_STOP) === false) {\n return this;\n }\n\n var player = this.player;\n this.played = false;\n clearTimeout(this.playing);\n forEach(player.getElementsByTagName('img'), function (image) {\n removeListener(image, EVENT_LOAD, _this8.onLoadWhenPlay);\n });\n removeClass(player, CLASS_SHOW);\n player.innerHTML = '';\n this.exitFullscreen();\n return this;\n },\n // Enter modal mode (only available in inline mode)\n full: function full() {\n var _this9 = this;\n\n var options = this.options,\n viewer = this.viewer,\n image = this.image,\n list = this.list;\n\n if (!this.isShown || this.played || this.fulled || !options.inline) {\n return this;\n }\n\n this.fulled = true;\n this.open();\n addClass(this.button, CLASS_FULLSCREEN_EXIT);\n\n if (options.transition) {\n removeClass(list, CLASS_TRANSITION);\n\n if (this.viewed) {\n removeClass(image, CLASS_TRANSITION);\n }\n }\n\n addClass(viewer, CLASS_FIXED);\n viewer.setAttribute('role', 'dialog');\n viewer.setAttribute('aria-labelledby', this.title.id);\n viewer.setAttribute('aria-modal', true);\n viewer.removeAttribute('style');\n setStyle(viewer, {\n zIndex: options.zIndex\n });\n\n if (options.focus) {\n this.enforceFocus();\n }\n\n this.initContainer();\n this.viewerData = assign({}, this.containerData);\n this.renderList();\n\n if (this.viewed) {\n this.initImage(function () {\n _this9.renderImage(function () {\n if (options.transition) {\n setTimeout(function () {\n addClass(image, CLASS_TRANSITION);\n addClass(list, CLASS_TRANSITION);\n }, 0);\n }\n });\n });\n }\n\n return this;\n },\n // Exit modal mode (only available in inline mode)\n exit: function exit() {\n var _this10 = this;\n\n var options = this.options,\n viewer = this.viewer,\n image = this.image,\n list = this.list;\n\n if (!this.isShown || this.played || !this.fulled || !options.inline) {\n return this;\n }\n\n this.fulled = false;\n this.close();\n removeClass(this.button, CLASS_FULLSCREEN_EXIT);\n\n if (options.transition) {\n removeClass(list, CLASS_TRANSITION);\n\n if (this.viewed) {\n removeClass(image, CLASS_TRANSITION);\n }\n }\n\n if (options.focus) {\n this.clearEnforceFocus();\n }\n\n viewer.removeAttribute('role');\n viewer.removeAttribute('aria-labelledby');\n viewer.removeAttribute('aria-modal');\n removeClass(viewer, CLASS_FIXED);\n setStyle(viewer, {\n zIndex: options.zIndexInline\n });\n this.viewerData = assign({}, this.parentData);\n this.renderViewer();\n this.renderList();\n\n if (this.viewed) {\n this.initImage(function () {\n _this10.renderImage(function () {\n if (options.transition) {\n setTimeout(function () {\n addClass(image, CLASS_TRANSITION);\n addClass(list, CLASS_TRANSITION);\n }, 0);\n }\n });\n });\n }\n\n return this;\n },\n // Show the current ratio of the image with percentage\n tooltip: function tooltip() {\n var _this11 = this;\n\n var options = this.options,\n tooltipBox = this.tooltipBox,\n imageData = this.imageData;\n\n if (!this.viewed || this.played || !options.tooltip) {\n return this;\n }\n\n tooltipBox.textContent = \"\".concat(Math.round(imageData.ratio * 100), \"%\");\n\n if (!this.tooltipping) {\n if (options.transition) {\n if (this.fading) {\n dispatchEvent(tooltipBox, EVENT_TRANSITION_END);\n }\n\n addClass(tooltipBox, CLASS_SHOW);\n addClass(tooltipBox, CLASS_FADE);\n addClass(tooltipBox, CLASS_TRANSITION);\n tooltipBox.removeAttribute('aria-hidden'); // Force reflow to enable CSS3 transition\n\n tooltipBox.initialOffsetWidth = tooltipBox.offsetWidth;\n addClass(tooltipBox, CLASS_IN);\n } else {\n addClass(tooltipBox, CLASS_SHOW);\n tooltipBox.removeAttribute('aria-hidden');\n }\n } else {\n clearTimeout(this.tooltipping);\n }\n\n this.tooltipping = setTimeout(function () {\n if (options.transition) {\n addListener(tooltipBox, EVENT_TRANSITION_END, function () {\n removeClass(tooltipBox, CLASS_SHOW);\n removeClass(tooltipBox, CLASS_FADE);\n removeClass(tooltipBox, CLASS_TRANSITION);\n tooltipBox.setAttribute('aria-hidden', true);\n _this11.fading = false;\n }, {\n once: true\n });\n removeClass(tooltipBox, CLASS_IN);\n _this11.fading = true;\n } else {\n removeClass(tooltipBox, CLASS_SHOW);\n tooltipBox.setAttribute('aria-hidden', true);\n }\n\n _this11.tooltipping = false;\n }, 1000);\n return this;\n },\n\n /**\n * Toggle the image size between its current size and natural size\n * @param {Event} [_originalEvent=null] - The original event if any.\n * @returns {Viewer} this\n */\n toggle: function toggle() {\n var _originalEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n if (this.imageData.ratio === 1) {\n this.zoomTo(this.imageData.oldRatio, true, _originalEvent);\n } else {\n this.zoomTo(1, true, _originalEvent);\n }\n\n return this;\n },\n // Reset the image to its initial state\n reset: function reset() {\n if (this.viewed && !this.played) {\n this.imageData = assign({}, this.initialImageData);\n this.renderImage();\n }\n\n return this;\n },\n // Update viewer when images changed\n update: function update() {\n var _this12 = this;\n\n var element = this.element,\n options = this.options,\n isImg = this.isImg; // Destroy viewer if the target image was deleted\n\n if (isImg && !element.parentNode) {\n return this.destroy();\n }\n\n var images = [];\n forEach(isImg ? [element] : element.querySelectorAll('img'), function (image) {\n if (isFunction(options.filter)) {\n if (options.filter.call(_this12, image)) {\n images.push(image);\n }\n } else if (_this12.getImageURL(image)) {\n images.push(image);\n }\n });\n\n if (!images.length) {\n return this;\n }\n\n this.images = images;\n this.length = images.length;\n\n if (this.ready) {\n var changedIndexes = [];\n forEach(this.items, function (item, i) {\n var img = item.querySelector('img');\n var image = images[i];\n\n if (image && img) {\n if (image.src !== img.src // Title changed (#408)\n || image.alt !== img.alt) {\n changedIndexes.push(i);\n }\n } else {\n changedIndexes.push(i);\n }\n });\n setStyle(this.list, {\n width: 'auto'\n });\n this.initList();\n\n if (this.isShown) {\n if (this.length) {\n if (this.viewed) {\n var changedIndex = changedIndexes.indexOf(this.index);\n\n if (changedIndex >= 0) {\n this.viewed = false;\n this.view(Math.max(Math.min(this.index - changedIndex, this.length - 1), 0));\n } else {\n var activeItem = this.items[this.index]; // Reactivate the current viewing item after reset the list.\n\n addClass(activeItem, CLASS_ACTIVE);\n activeItem.setAttribute('aria-selected', true);\n }\n }\n } else {\n this.image = null;\n this.viewed = false;\n this.index = 0;\n this.imageData = {};\n this.canvas.innerHTML = '';\n this.title.innerHTML = '';\n }\n }\n } else {\n this.build();\n }\n\n return this;\n },\n // Destroy the viewer\n destroy: function destroy() {\n var element = this.element,\n options = this.options;\n\n if (!element[NAMESPACE]) {\n return this;\n }\n\n this.destroyed = true;\n\n if (this.ready) {\n if (this.played) {\n this.stop();\n }\n\n if (options.inline) {\n if (this.fulled) {\n this.exit();\n }\n\n this.unbind();\n } else if (this.isShown) {\n if (this.viewing) {\n if (this.imageRendering) {\n this.imageRendering.abort();\n } else if (this.imageInitializing) {\n this.imageInitializing.abort();\n }\n }\n\n if (this.hiding) {\n this.transitioning.abort();\n }\n\n this.hidden();\n } else if (this.showing) {\n this.transitioning.abort();\n this.hidden();\n }\n\n this.ready = false;\n this.viewer.parentNode.removeChild(this.viewer);\n } else if (options.inline) {\n if (this.delaying) {\n this.delaying.abort();\n } else if (this.initializing) {\n this.initializing.abort();\n }\n }\n\n if (!options.inline) {\n removeListener(element, EVENT_CLICK, this.onStart);\n }\n\n element[NAMESPACE] = undefined;\n return this;\n }\n };\n\n var others = {\n getImageURL: function getImageURL(image) {\n var url = this.options.url;\n\n if (isString(url)) {\n url = image.getAttribute(url);\n } else if (isFunction(url)) {\n url = url.call(this, image);\n } else {\n url = '';\n }\n\n return url;\n },\n enforceFocus: function enforceFocus() {\n var _this = this;\n\n this.clearEnforceFocus();\n addListener(document, EVENT_FOCUSIN, this.onFocusin = function (event) {\n var viewer = _this.viewer;\n var target = event.target;\n\n if (target === document || target === viewer || viewer.contains(target)) {\n return;\n }\n\n while (target) {\n // Avoid conflicts with other modals (#474, #540)\n if (target.getAttribute('tabindex') !== null || target.getAttribute('aria-modal') === 'true') {\n return;\n }\n\n target = target.parentElement;\n }\n\n viewer.focus();\n });\n },\n clearEnforceFocus: function clearEnforceFocus() {\n if (this.onFocusin) {\n removeListener(document, EVENT_FOCUSIN, this.onFocusin);\n this.onFocusin = null;\n }\n },\n open: function open() {\n var body = this.body;\n addClass(body, CLASS_OPEN);\n body.style.paddingRight = \"\".concat(this.scrollbarWidth + (parseFloat(this.initialBodyComputedPaddingRight) || 0), \"px\");\n },\n close: function close() {\n var body = this.body;\n removeClass(body, CLASS_OPEN);\n body.style.paddingRight = this.initialBodyPaddingRight;\n },\n shown: function shown() {\n var element = this.element,\n options = this.options,\n viewer = this.viewer;\n this.fulled = true;\n this.isShown = true;\n this.render();\n this.bind();\n this.showing = false;\n\n if (options.focus) {\n viewer.focus();\n this.enforceFocus();\n }\n\n if (isFunction(options.shown)) {\n addListener(element, EVENT_SHOWN, options.shown, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_SHOWN) === false) {\n return;\n }\n\n if (this.ready && this.isShown && !this.hiding) {\n this.view(this.index);\n }\n },\n hidden: function hidden() {\n var element = this.element,\n options = this.options,\n viewer = this.viewer;\n\n if (options.fucus) {\n this.clearEnforceFocus();\n }\n\n this.fulled = false;\n this.viewed = false;\n this.isShown = false;\n this.close();\n this.unbind();\n addClass(viewer, CLASS_HIDE);\n viewer.removeAttribute('role');\n viewer.removeAttribute('aria-labelledby');\n viewer.removeAttribute('aria-modal');\n viewer.setAttribute('aria-hidden', true);\n this.resetList();\n this.resetImage();\n this.hiding = false;\n\n if (!this.destroyed) {\n if (isFunction(options.hidden)) {\n addListener(element, EVENT_HIDDEN, options.hidden, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_HIDDEN, null, {\n cancelable: false\n });\n }\n },\n requestFullscreen: function requestFullscreen(options) {\n var document = this.element.ownerDocument;\n\n if (this.fulled && !(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n var documentElement = document.documentElement; // Element.requestFullscreen()\n\n if (documentElement.requestFullscreen) {\n // Avoid TypeError when convert `options` to dictionary\n if (isPlainObject(options)) {\n documentElement.requestFullscreen(options);\n } else {\n documentElement.requestFullscreen();\n }\n } else if (documentElement.webkitRequestFullscreen) {\n documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n } else if (documentElement.mozRequestFullScreen) {\n documentElement.mozRequestFullScreen();\n } else if (documentElement.msRequestFullscreen) {\n documentElement.msRequestFullscreen();\n }\n }\n },\n exitFullscreen: function exitFullscreen() {\n var document = this.element.ownerDocument;\n\n if (this.fulled && (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n // Document.exitFullscreen()\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n }\n },\n change: function change(event) {\n var options = this.options,\n pointers = this.pointers;\n var pointer = pointers[Object.keys(pointers)[0]]; // In the case of the `pointers` object is empty (#421)\n\n if (!pointer) {\n return;\n }\n\n var offsetX = pointer.endX - pointer.startX;\n var offsetY = pointer.endY - pointer.startY;\n\n switch (this.action) {\n // Move the current image\n case ACTION_MOVE:\n this.move(offsetX, offsetY, event);\n break;\n // Zoom the current image\n\n case ACTION_ZOOM:\n this.zoom(getMaxZoomRatio(pointers), false, event);\n break;\n\n case ACTION_SWITCH:\n {\n this.action = 'switched';\n var absoluteOffsetX = Math.abs(offsetX);\n\n if (absoluteOffsetX > 1 && absoluteOffsetX > Math.abs(offsetY)) {\n // Empty `pointers` as `touchend` event will not be fired after swiped in iOS browsers.\n this.pointers = {};\n\n if (offsetX > 1) {\n this.prev(options.loop);\n } else if (offsetX < -1) {\n this.next(options.loop);\n }\n }\n\n break;\n }\n } // Override\n\n\n forEach(pointers, function (p) {\n p.startX = p.endX;\n p.startY = p.endY;\n });\n },\n isSwitchable: function isSwitchable() {\n var imageData = this.imageData,\n viewerData = this.viewerData;\n return this.length > 1 && imageData.x >= 0 && imageData.y >= 0 && imageData.width <= viewerData.width && imageData.height <= viewerData.height;\n }\n };\n\n var AnotherViewer = WINDOW.Viewer;\n\n var getUniqueID = function (id) {\n return function () {\n id += 1;\n return id;\n };\n }(-1);\n\n var Viewer = /*#__PURE__*/function () {\n /**\n * Create a new Viewer.\n * @param {Element} element - The target element for viewing.\n * @param {Object} [options={}] - The configuration options.\n */\n function Viewer(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Viewer);\n\n if (!element || element.nodeType !== 1) {\n throw new Error('The first argument is required and must be an element.');\n }\n\n this.element = element;\n this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n this.action = false;\n this.fading = false;\n this.fulled = false;\n this.hiding = false;\n this.imageClicked = false;\n this.imageData = {};\n this.index = this.options.initialViewIndex;\n this.isImg = false;\n this.isShown = false;\n this.length = 0;\n this.moving = false;\n this.played = false;\n this.playing = false;\n this.pointers = {};\n this.ready = false;\n this.rotating = false;\n this.scaling = false;\n this.showing = false;\n this.timeout = false;\n this.tooltipping = false;\n this.viewed = false;\n this.viewing = false;\n this.wheeling = false;\n this.zooming = false;\n this.id = getUniqueID();\n this.init();\n }\n\n _createClass(Viewer, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n var element = this.element,\n options = this.options;\n\n if (element[NAMESPACE]) {\n return;\n }\n\n element[NAMESPACE] = this; // The `focus` option requires the `keyboard` option set to `true`.\n\n if (options.focus && !options.keyboard) {\n options.focus = false;\n }\n\n var isImg = element.localName === 'img';\n var images = [];\n forEach(isImg ? [element] : element.querySelectorAll('img'), function (image) {\n if (isFunction(options.filter)) {\n if (options.filter.call(_this, image)) {\n images.push(image);\n }\n } else if (_this.getImageURL(image)) {\n images.push(image);\n }\n });\n this.isImg = isImg;\n this.length = images.length;\n this.images = images;\n this.initBody(); // Override `transition` option if it is not supported\n\n if (isUndefined(document.createElement(NAMESPACE).style.transition)) {\n options.transition = false;\n }\n\n if (options.inline) {\n var count = 0;\n\n var progress = function progress() {\n count += 1;\n\n if (count === _this.length) {\n var timeout;\n _this.initializing = false;\n _this.delaying = {\n abort: function abort() {\n clearTimeout(timeout);\n }\n }; // build asynchronously to keep `this.viewer` is accessible in `ready` event handler.\n\n timeout = setTimeout(function () {\n _this.delaying = false;\n\n _this.build();\n }, 0);\n }\n };\n\n this.initializing = {\n abort: function abort() {\n forEach(images, function (image) {\n if (!image.complete) {\n removeListener(image, EVENT_LOAD, progress);\n removeListener(image, EVENT_ERROR, progress);\n }\n });\n }\n };\n forEach(images, function (image) {\n if (image.complete) {\n progress();\n } else {\n var onLoad;\n var onError;\n addListener(image, EVENT_LOAD, onLoad = function onLoad() {\n removeListener(image, EVENT_ERROR, onError);\n progress();\n }, {\n once: true\n });\n addListener(image, EVENT_ERROR, onError = function onError() {\n removeListener(image, EVENT_LOAD, onLoad);\n progress();\n }, {\n once: true\n });\n }\n });\n } else {\n addListener(element, EVENT_CLICK, this.onStart = function (_ref) {\n var target = _ref.target;\n\n if (target.localName === 'img' && (!isFunction(options.filter) || options.filter.call(_this, target))) {\n _this.view(_this.images.indexOf(target));\n }\n });\n }\n }\n }, {\n key: \"build\",\n value: function build() {\n if (this.ready) {\n return;\n }\n\n var element = this.element,\n options = this.options;\n var parent = element.parentNode;\n var template = document.createElement('div');\n template.innerHTML = TEMPLATE;\n var viewer = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n var title = viewer.querySelector(\".\".concat(NAMESPACE, \"-title\"));\n var toolbar = viewer.querySelector(\".\".concat(NAMESPACE, \"-toolbar\"));\n var navbar = viewer.querySelector(\".\".concat(NAMESPACE, \"-navbar\"));\n var button = viewer.querySelector(\".\".concat(NAMESPACE, \"-button\"));\n var canvas = viewer.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n this.parent = parent;\n this.viewer = viewer;\n this.title = title;\n this.toolbar = toolbar;\n this.navbar = navbar;\n this.button = button;\n this.canvas = canvas;\n this.footer = viewer.querySelector(\".\".concat(NAMESPACE, \"-footer\"));\n this.tooltipBox = viewer.querySelector(\".\".concat(NAMESPACE, \"-tooltip\"));\n this.player = viewer.querySelector(\".\".concat(NAMESPACE, \"-player\"));\n this.list = viewer.querySelector(\".\".concat(NAMESPACE, \"-list\"));\n viewer.id = \"\".concat(NAMESPACE).concat(this.id);\n title.id = \"\".concat(NAMESPACE, \"Title\").concat(this.id);\n addClass(title, !options.title ? CLASS_HIDE : getResponsiveClass(Array.isArray(options.title) ? options.title[0] : options.title));\n addClass(navbar, !options.navbar ? CLASS_HIDE : getResponsiveClass(options.navbar));\n toggleClass(button, CLASS_HIDE, !options.button);\n\n if (options.keyboard) {\n button.setAttribute('tabindex', 0);\n }\n\n if (options.backdrop) {\n addClass(viewer, \"\".concat(NAMESPACE, \"-backdrop\"));\n\n if (!options.inline && options.backdrop !== 'static') {\n setData(canvas, DATA_ACTION, 'hide');\n }\n }\n\n if (isString(options.className) && options.className) {\n // In case there are multiple class names\n options.className.split(REGEXP_SPACES).forEach(function (className) {\n addClass(viewer, className);\n });\n }\n\n if (options.toolbar) {\n var list = document.createElement('ul');\n var custom = isPlainObject(options.toolbar);\n var zoomButtons = BUTTONS.slice(0, 3);\n var rotateButtons = BUTTONS.slice(7, 9);\n var scaleButtons = BUTTONS.slice(9);\n\n if (!custom) {\n addClass(toolbar, getResponsiveClass(options.toolbar));\n }\n\n forEach(custom ? options.toolbar : BUTTONS, function (value, index) {\n var deep = custom && isPlainObject(value);\n var name = custom ? hyphenate(index) : value;\n var show = deep && !isUndefined(value.show) ? value.show : value;\n\n if (!show || !options.zoomable && zoomButtons.indexOf(name) !== -1 || !options.rotatable && rotateButtons.indexOf(name) !== -1 || !options.scalable && scaleButtons.indexOf(name) !== -1) {\n return;\n }\n\n var size = deep && !isUndefined(value.size) ? value.size : value;\n var click = deep && !isUndefined(value.click) ? value.click : value;\n var item = document.createElement('li');\n\n if (options.keyboard) {\n item.setAttribute('tabindex', 0);\n }\n\n item.setAttribute('role', 'button');\n addClass(item, \"\".concat(NAMESPACE, \"-\").concat(name));\n\n if (!isFunction(click)) {\n setData(item, DATA_ACTION, name);\n }\n\n if (isNumber(show)) {\n addClass(item, getResponsiveClass(show));\n }\n\n if (['small', 'large'].indexOf(size) !== -1) {\n addClass(item, \"\".concat(NAMESPACE, \"-\").concat(size));\n } else if (name === 'play') {\n addClass(item, \"\".concat(NAMESPACE, \"-large\"));\n }\n\n if (isFunction(click)) {\n addListener(item, EVENT_CLICK, click);\n }\n\n list.appendChild(item);\n });\n toolbar.appendChild(list);\n } else {\n addClass(toolbar, CLASS_HIDE);\n }\n\n if (!options.rotatable) {\n var rotates = toolbar.querySelectorAll('li[class*=\"rotate\"]');\n addClass(rotates, CLASS_INVISIBLE);\n forEach(rotates, function (rotate) {\n toolbar.appendChild(rotate);\n });\n }\n\n if (options.inline) {\n addClass(button, CLASS_FULLSCREEN);\n setStyle(viewer, {\n zIndex: options.zIndexInline\n });\n\n if (window.getComputedStyle(parent).position === 'static') {\n setStyle(parent, {\n position: 'relative'\n });\n }\n\n parent.insertBefore(viewer, element.nextSibling);\n } else {\n addClass(button, CLASS_CLOSE);\n addClass(viewer, CLASS_FIXED);\n addClass(viewer, CLASS_FADE);\n addClass(viewer, CLASS_HIDE);\n setStyle(viewer, {\n zIndex: options.zIndex\n });\n var container = options.container;\n\n if (isString(container)) {\n container = element.ownerDocument.querySelector(container);\n }\n\n if (!container) {\n container = this.body;\n }\n\n container.appendChild(viewer);\n }\n\n if (options.inline) {\n this.render();\n this.bind();\n this.isShown = true;\n }\n\n this.ready = true;\n\n if (isFunction(options.ready)) {\n addListener(element, EVENT_READY, options.ready, {\n once: true\n });\n }\n\n if (dispatchEvent(element, EVENT_READY) === false) {\n this.ready = false;\n return;\n }\n\n if (this.ready && options.inline) {\n this.view(this.index);\n }\n }\n /**\n * Get the no conflict viewer class.\n * @returns {Viewer} The viewer class.\n */\n\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Viewer = AnotherViewer;\n return Viewer;\n }\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n assign(DEFAULTS, isPlainObject(options) && options);\n }\n }]);\n\n return Viewer;\n }();\n\n assign(Viewer.prototype, render, events, handlers, methods, others);\n\n return Viewer;\n\n}));\n","\n/*!\n * vue-awesome-swiper v4.1.1\n * Copyright (c) Surmon. All rights reserved.\n * Released under the MIT License.\n * Surmon \n */\n\n(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?f(exports,require('swiper'),require('vue')):typeof define==='function'&&define.amd?define(['exports','swiper','vue'],f):(g=g||self,f(g.VueAwesomeSwiper={},g.Swiper,g.Vue));}(this,(function(exports, SwiperClass, Vue){'use strict';SwiperClass=SwiperClass&&Object.prototype.hasOwnProperty.call(SwiperClass,'default')?SwiperClass['default']:SwiperClass;Vue=Vue&&Object.prototype.hasOwnProperty.call(Vue,'default')?Vue['default']:Vue;/**\r\n * @file vue-awesome-swiper\r\n * @module constants\r\n * @author Surmon \r\n */\r\nvar CoreNames;\r\n(function (CoreNames) {\r\n CoreNames[\"SwiperComponent\"] = \"Swiper\";\r\n CoreNames[\"SwiperSlideComponent\"] = \"SwiperSlide\";\r\n CoreNames[\"SwiperDirective\"] = \"swiper\";\r\n CoreNames[\"SwiperInstance\"] = \"$swiper\";\r\n})(CoreNames || (CoreNames = {}));\r\nvar DEFAULT_CLASSES = Object.freeze({\r\n containerClass: 'swiper-container',\r\n wrapperClass: 'swiper-wrapper',\r\n slideClass: 'swiper-slide'\r\n});\r\nvar ComponentEvents;\r\n(function (ComponentEvents) {\r\n ComponentEvents[\"Ready\"] = \"ready\";\r\n ComponentEvents[\"ClickSlide\"] = \"clickSlide\";\r\n})(ComponentEvents || (ComponentEvents = {}));\r\nvar ComponentPropNames;\r\n(function (ComponentPropNames) {\r\n ComponentPropNames[\"AutoUpdate\"] = \"autoUpdate\";\r\n ComponentPropNames[\"AutoDestroy\"] = \"autoDestroy\";\r\n ComponentPropNames[\"DeleteInstanceOnDestroy\"] = \"deleteInstanceOnDestroy\";\r\n ComponentPropNames[\"CleanupStylesOnDestroy\"] = \"cleanupStylesOnDestroy\";\r\n})(ComponentPropNames || (ComponentPropNames = {}));\r\n// https://swiperjs.com/api/#events\r\nvar SWIPER_EVENTS = [\r\n 'init',\r\n 'beforeDestroy',\r\n 'slideChange',\r\n 'slideChangeTransitionStart',\r\n 'slideChangeTransitionEnd',\r\n 'slideNextTransitionStart',\r\n 'slideNextTransitionEnd',\r\n 'slidePrevTransitionStart',\r\n 'slidePrevTransitionEnd',\r\n 'transitionStart',\r\n 'transitionEnd',\r\n 'touchStart',\r\n 'touchMove',\r\n 'touchMoveOpposite',\r\n 'sliderMove',\r\n 'touchEnd',\r\n 'click',\r\n 'tap',\r\n 'doubleTap',\r\n 'imagesReady',\r\n 'progress',\r\n 'reachBeginning',\r\n 'reachEnd',\r\n 'fromEdge',\r\n 'setTranslate',\r\n 'setTransition',\r\n 'resize',\r\n 'observerUpdate',\r\n 'beforeLoopFix',\r\n 'loopFix'\r\n];/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __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}/**\r\n * @file vue-awesome-swiper\r\n * @module utils\r\n * @author Surmon \r\n */\r\nvar kebabcase = function (string) {\r\n return string\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/\\s+/g, '-')\r\n .toLowerCase();\r\n};/**\r\n * @file vue-awesome-swiper\r\n * @module event\r\n * @author Surmon \r\n */\r\nvar handleClickSlideEvent = function (swiper, event, emit) {\r\n var _a, _b, _c;\r\n if (swiper && !(swiper.destroyed)) {\r\n var eventPath = ((_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event)) || event.path;\r\n if ((event === null || event === void 0 ? void 0 : event.target) && eventPath) {\r\n var slides_1 = Array.from(swiper.slides);\r\n var paths = Array.from(eventPath);\r\n // Click slide || slide[children]\r\n if (slides_1.includes(event.target) || paths.some(function (item) { return slides_1.includes(item); })) {\r\n var clickedIndex = swiper.clickedIndex;\r\n var reallyIndex = Number((_c = (_b = swiper.clickedSlide) === null || _b === void 0 ? void 0 : _b.dataset) === null || _c === void 0 ? void 0 : _c.swiperSlideIndex);\r\n var reallyIndexValue = Number.isInteger(reallyIndex) ? reallyIndex : null;\r\n emit(ComponentEvents.ClickSlide, clickedIndex, reallyIndexValue);\r\n emit(kebabcase(ComponentEvents.ClickSlide), clickedIndex, reallyIndexValue);\r\n }\r\n }\r\n }\r\n};\r\nvar bindSwiperEvents = function (swiper, emit) {\r\n SWIPER_EVENTS.forEach(function (eventName) {\r\n swiper.on(eventName, function () {\n var arguments$1 = arguments;\n\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments$1[_i];\r\n }\r\n emit.apply(void 0, __spreadArrays([eventName], args));\r\n var kebabcaseName = kebabcase(eventName);\r\n if (kebabcaseName !== eventName) {\r\n emit.apply(void 0, __spreadArrays([kebabcaseName], args));\r\n }\r\n });\r\n });\r\n};/**\r\n * @file vue-awesome-swiper\r\n * @module directive\r\n * @author Surmon \r\n */\r\nvar INSTANCE_NAME_KEY = 'instanceName';\r\nfunction getDirective(SwiperClass, globalOptions) {\r\n var getStandardisedOptionByAttrs = function (vnode, key) {\r\n var _a, _b, _c, _d;\r\n var value = (_b = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[key];\r\n return value !== undefined\r\n ? value\r\n : (_d = (_c = vnode.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d[kebabcase(key)];\r\n };\r\n // Get swiper instace name in directive\r\n var getSwiperInstanceName = function (element, binding, vnode) {\r\n return (binding.arg ||\r\n getStandardisedOptionByAttrs(vnode, INSTANCE_NAME_KEY) ||\r\n element.id ||\r\n CoreNames.SwiperInstance);\r\n };\r\n var getSwiperInstance = function (element, binding, vnode) {\r\n var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n return vnode.context[instanceName] || null;\r\n };\r\n var getSwipeOptions = function (binding) {\r\n return binding.value || globalOptions;\r\n };\r\n var getBooleanValueByInput = function (input) {\r\n return [true, undefined, null, ''].includes(input);\r\n };\r\n // Emit event in Vue directive\r\n var getEventEmiter = function (vnode) {\r\n var _a, _b;\r\n var handlers = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.on) || ((_b = vnode.componentOptions) === null || _b === void 0 ? void 0 : _b.listeners);\r\n return function (name) {\n var arguments$1 = arguments;\n\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments$1[_i];\r\n }\r\n var _a;\r\n var handle = (_a = handlers) === null || _a === void 0 ? void 0 : _a[name];\r\n if (handle) {\r\n handle.fns.apply(handle, args);\r\n }\r\n };\r\n };\r\n return {\r\n // Init\r\n bind: function (element, binding, vnode) {\r\n // auto class name\r\n if (element.className.indexOf(DEFAULT_CLASSES.containerClass) === -1) {\r\n element.className += ((element.className ? ' ' : '') + DEFAULT_CLASSES.containerClass);\r\n }\r\n // bind click event\r\n element.addEventListener('click', function (event) {\r\n var emitEvent = getEventEmiter(vnode);\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n handleClickSlideEvent(swiper, event, emitEvent);\r\n });\r\n },\r\n // DOM inserted\r\n inserted: function (element, binding, vnode) {\r\n var context = vnode.context;\r\n var swiperOptions = getSwipeOptions(binding);\r\n var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n var emitEvent = getEventEmiter(vnode);\r\n var vueContext = context;\r\n var swiper = vueContext === null || vueContext === void 0 ? void 0 : vueContext[instanceName];\r\n // Swiper will destroy but not delete instance, when used \r\n if (!swiper || swiper.destroyed) {\r\n swiper = new SwiperClass(element, swiperOptions);\r\n vueContext[instanceName] = swiper;\r\n bindSwiperEvents(swiper, emitEvent);\r\n emitEvent(ComponentEvents.Ready, swiper);\r\n // MARK: Reinstance when the nexttick with \r\n // Vue.nextTick(instancing) | setTimeout(instancing)\r\n }\r\n },\r\n // On options changed or DOM updated\r\n componentUpdated: function (element, binding, vnode) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\r\n var autoUpdate = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoUpdate);\r\n if (getBooleanValueByInput(autoUpdate)) {\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n if (swiper) {\r\n var swiperOptions = getSwipeOptions(binding);\r\n var isLoop = swiperOptions.loop;\r\n if (isLoop) {\r\n (_b = (_a = swiper) === null || _a === void 0 ? void 0 : _a.loopDestroy) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n (_c = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _c === void 0 ? void 0 : _c.call(swiper);\r\n (_e = (_d = swiper.navigation) === null || _d === void 0 ? void 0 : _d.update) === null || _e === void 0 ? void 0 : _e.call(_d);\r\n (_g = (_f = swiper.pagination) === null || _f === void 0 ? void 0 : _f.render) === null || _g === void 0 ? void 0 : _g.call(_f);\r\n (_j = (_h = swiper.pagination) === null || _h === void 0 ? void 0 : _h.update) === null || _j === void 0 ? void 0 : _j.call(_h);\r\n if (isLoop) {\r\n (_l = (_k = swiper) === null || _k === void 0 ? void 0 : _k.loopCreate) === null || _l === void 0 ? void 0 : _l.call(_k);\r\n (_m = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _m === void 0 ? void 0 : _m.call(swiper);\r\n }\r\n }\r\n }\r\n },\r\n // Destroy this directive\r\n unbind: function (element, binding, vnode) {\r\n var _a;\r\n var autoDestroy = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoDestroy);\r\n if (getBooleanValueByInput(autoDestroy)) {\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n if (swiper && swiper.initialized) {\r\n (_a = swiper === null || swiper === void 0 ? void 0 : swiper.destroy) === null || _a === void 0 ? void 0 : _a.call(swiper, getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.DeleteInstanceOnDestroy)), getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.CleanupStylesOnDestroy)));\r\n }\r\n }\r\n }\r\n };\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperComponent\r\n * @author Surmon \r\n */\r\nvar SlotNames;\r\n(function (SlotNames) {\r\n SlotNames[\"ParallaxBg\"] = \"parallax-bg\";\r\n SlotNames[\"Pagination\"] = \"pagination\";\r\n SlotNames[\"Scrollbar\"] = \"scrollbar\";\r\n SlotNames[\"PrevButton\"] = \"button-prev\";\r\n SlotNames[\"NextButton\"] = \"button-next\";\r\n})(SlotNames || (SlotNames = {}));\r\nfunction getSwiperComponent(SwiperClass) {\r\n var _a;\r\n return Vue.extend({\r\n name: CoreNames.SwiperComponent,\r\n props: (_a = {\r\n defaultOptions: {\r\n type: Object,\r\n required: false,\r\n default: function () { return ({}); }\r\n },\r\n // eslint-disable-next-line vue/require-default-prop\r\n options: {\r\n type: Object,\r\n required: false\r\n }\r\n },\r\n _a[ComponentPropNames.AutoUpdate] = {\r\n type: Boolean,\r\n default: true\r\n },\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/550/files\r\n _a[ComponentPropNames.AutoDestroy] = {\r\n type: Boolean,\r\n default: true\r\n },\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/388\r\n _a[ComponentPropNames.DeleteInstanceOnDestroy] = {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n _a[ComponentPropNames.CleanupStylesOnDestroy] = {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n _a),\r\n data: function () {\r\n var _a;\r\n return _a = {},\r\n _a[CoreNames.SwiperInstance] = null,\r\n _a;\r\n },\r\n computed: {\r\n swiperInstance: {\r\n cache: false,\r\n set: function (swiper) {\r\n this[CoreNames.SwiperInstance] = swiper;\r\n },\r\n get: function () {\r\n return this[CoreNames.SwiperInstance];\r\n }\r\n },\r\n swiperOptions: function () {\r\n return this.options || this.defaultOptions;\r\n },\r\n wrapperClass: function () {\r\n return this.swiperOptions.wrapperClass || DEFAULT_CLASSES.wrapperClass;\r\n }\r\n },\r\n methods: {\r\n // Feature: click event\r\n handleSwiperClick: function (event) {\r\n handleClickSlideEvent(this.swiperInstance, event, this.$emit.bind(this));\r\n },\r\n autoReLoopSwiper: function () {\r\n var _a, _b;\r\n if (this.swiperInstance && this.swiperOptions.loop) {\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/593\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/544\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/545/files\r\n var swiper = this.swiperInstance;\r\n (_a = swiper === null || swiper === void 0 ? void 0 : swiper.loopDestroy) === null || _a === void 0 ? void 0 : _a.call(swiper);\r\n (_b = swiper === null || swiper === void 0 ? void 0 : swiper.loopCreate) === null || _b === void 0 ? void 0 : _b.call(swiper);\r\n }\r\n },\r\n updateSwiper: function () {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n if (this[ComponentPropNames.AutoUpdate] && this.swiperInstance) {\r\n this.autoReLoopSwiper();\r\n (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.swiperInstance.navigation) === null || _c === void 0 ? void 0 : _c.update) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n (_f = (_e = this.swiperInstance.pagination) === null || _e === void 0 ? void 0 : _e.render) === null || _f === void 0 ? void 0 : _f.call(_e);\r\n (_h = (_g = this.swiperInstance.pagination) === null || _g === void 0 ? void 0 : _g.update) === null || _h === void 0 ? void 0 : _h.call(_g);\r\n }\r\n },\r\n destroySwiper: function () {\r\n var _a, _b;\r\n if (this[ComponentPropNames.AutoDestroy] && this.swiperInstance) {\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/341\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/340\r\n if (this.swiperInstance.initialized) {\r\n (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a, this[ComponentPropNames.DeleteInstanceOnDestroy], this[ComponentPropNames.CleanupStylesOnDestroy]);\r\n }\r\n }\r\n },\r\n initSwiper: function () {\r\n this.swiperInstance = new SwiperClass(this.$el, this.swiperOptions);\r\n bindSwiperEvents(this.swiperInstance, this.$emit.bind(this));\r\n this.$emit(ComponentEvents.Ready, this.swiperInstance);\r\n }\r\n },\r\n mounted: function () {\r\n if (!this.swiperInstance) {\r\n this.initSwiper();\r\n }\r\n },\r\n // Update swiper when the parent component activated with `keep-alive`.\r\n activated: function () {\r\n this.updateSwiper();\r\n },\r\n updated: function () {\r\n this.updateSwiper();\r\n },\r\n beforeDestroy: function () {\r\n // https://github.com/surmon-china/vue-awesome-swiper/commit/2924a9d4d3d1cf51c0d46076410b1f804b2b8a43#diff-7f4e0261ac562c0f354cb91a1ca8864f\r\n this.$nextTick(this.destroySwiper);\r\n },\r\n render: function (createElement) {\r\n return createElement('div', {\r\n staticClass: DEFAULT_CLASSES.containerClass,\r\n on: {\r\n click: this.handleSwiperClick\r\n }\r\n }, [\r\n this.$slots[SlotNames.ParallaxBg],\r\n createElement('div', {\r\n class: this.wrapperClass\r\n }, this.$slots.default),\r\n this.$slots[SlotNames.Pagination],\r\n this.$slots[SlotNames.PrevButton],\r\n this.$slots[SlotNames.NextButton],\r\n this.$slots[SlotNames.Scrollbar]\r\n ]);\r\n }\r\n });\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperSlideComponent\r\n * @author Surmon \r\n */\r\nvar SwiperSlideComponent = Vue.extend({\r\n name: CoreNames.SwiperSlideComponent,\r\n computed: {\r\n slideClass: function () {\r\n var _a, _b;\r\n return ((_b = (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.swiperOptions) === null || _b === void 0 ? void 0 : _b.slideClass) || DEFAULT_CLASSES.slideClass;\r\n }\r\n },\r\n methods: {\r\n update: function () {\r\n var _a;\r\n var parent = this.$parent;\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/632\r\n if (parent[ComponentPropNames.AutoUpdate]) {\r\n (_a = parent === null || parent === void 0 ? void 0 : parent.swiperInstance) === null || _a === void 0 ? void 0 : _a.update();\r\n }\r\n }\r\n },\r\n mounted: function () {\r\n this.update();\r\n },\r\n updated: function () {\r\n this.update();\r\n },\r\n render: function (createElement) {\r\n return createElement('div', {\r\n class: this.slideClass\r\n }, this.$slots.default);\r\n }\r\n});/**\r\n * @file vue-awesome-swiper\r\n * @module exporter\r\n * @author Surmon \r\n */\r\nvar getInstaller = function (SwiperClass) {\r\n var install = function (Vue, globalOptions) {\r\n if (install.installed)\r\n { return; }\r\n var SwiperComponent = getSwiperComponent(SwiperClass);\r\n if (globalOptions) {\r\n SwiperComponent.options.props.defaultOptions.default = function () { return globalOptions; };\r\n }\r\n Vue.component(CoreNames.SwiperComponent, SwiperComponent);\r\n Vue.component(CoreNames.SwiperSlideComponent, SwiperSlideComponent);\r\n Vue.directive(CoreNames.SwiperDirective, getDirective(SwiperClass, globalOptions));\r\n install.installed = true;\r\n };\r\n return install;\r\n};\r\nfunction exporter(SwiperClass) {\r\n var _a;\r\n return _a = {\r\n version: '4.1.1',\r\n install: getInstaller(SwiperClass),\r\n directive: getDirective(SwiperClass)\r\n },\r\n _a[CoreNames.SwiperComponent] = getSwiperComponent(SwiperClass),\r\n _a[CoreNames.SwiperSlideComponent] = SwiperSlideComponent,\r\n _a;\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module default-export\r\n * @author Surmon \r\n */\r\nvar VueAwesomeSwiper = exporter(SwiperClass);\r\nvar version = VueAwesomeSwiper.version;\r\nvar install = VueAwesomeSwiper.install;\r\nvar directive = VueAwesomeSwiper.directive;\r\nvar Swiper = VueAwesomeSwiper.Swiper;\r\nvar SwiperSlide = VueAwesomeSwiper.SwiperSlide;exports.Swiper=Swiper;exports.SwiperSlide=SwiperSlide;exports.default=VueAwesomeSwiper;exports.directive=directive;exports.install=install;exports.version=version;Object.defineProperty(exports,'__esModule',{value:true});})));","/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i], vm);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n var haveExpectedTypes = expectedTypes.some(function (t) { return t; });\n if (!valid && haveExpectedTypes) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\n\nfunction assertType (value, type, vm) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n try {\n valid = value instanceof type;\n } catch (e) {\n warn('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n valid = false;\n }\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(functionTypeCheckRE);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n // check if we need to specify expected value\n if (\n expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n isExplicable(typeof value) &&\n !isBoolean(expectedType, receivedType)\n ) {\n message += \" with value \" + (styleValue(value, expectedType));\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + (styleValue(value, receivedType)) + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\nfunction isExplicable (value) {\n return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.