{"version":3,"file":"main.js","mappings":"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","sources":["webpack://flow.EduSigmaOrgLanding/./node_modules/vanilla-toast/vanilla-toast.js","webpack://flow.EduSigmaOrgLanding/webpack/bootstrap","webpack://flow.EduSigmaOrgLanding/webpack/runtime/compat get default export","webpack://flow.EduSigmaOrgLanding/webpack/runtime/define property getters","webpack://flow.EduSigmaOrgLanding/webpack/runtime/hasOwnProperty shorthand","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/animateBlock.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/getPageName.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/form.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/accordion/accordion.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/resize.js","webpack://flow.EduSigmaOrgLanding/./node_modules/ssr-window/ssr-window.esm.js","webpack://flow.EduSigmaOrgLanding/./node_modules/dom7/dom7.esm.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/shared/dom.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/shared/utils.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/shared/get-support.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/shared/get-device.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/shared/get-browser.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/events-emitter.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateSize.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateSlides.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateProgress.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/transition/transitionEmit.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/slide/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/slide/slideTo.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/slide/slideToLoop.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/slide/slideNext.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/slide/slidePrev.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/slide/slideReset.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/slide/slideToClosest.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/loop/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/loop/loopCreate.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/loop/loopFix.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/loop/loopDestroy.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/events/onTouchStart.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/events/onTouchMove.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/events/onTouchEnd.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/events/onResize.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/events/onClick.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/events/onScroll.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/events/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/breakpoints/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/classes/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/classes/addClasses.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/classes/removeClasses.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/defaults.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/moduleExtendParams.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/core.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/translate/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/translate/getTranslate.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/translate/setTranslate.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/translate/minTranslate.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/translate/maxTranslate.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/translate/translateTo.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/transition/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/transition/setTransition.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/transition/transitionStart.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/transition/transitionEnd.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/grab-cursor/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/check-overflow/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/images/index.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/images/loadImage.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/images/preloadImages.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/modules/resize/resize.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/core/modules/observer/observer.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/modules/navigation/navigation.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/shared/classes-to-selector.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/modules/pagination/pagination.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/modules/lazy/lazy.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-about-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-barriers-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-cases-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-license-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-platform-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-reviews-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-teachers-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-team-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-videos-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-worth-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-projectportfolio-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-office-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-requirement-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-whowill-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-after-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-programm-slider.js","webpack://flow.EduSigmaOrgLanding/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-pay-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-training-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-team-slider-new.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-feedback-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-hr-feedback.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/init-coaches-slider.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/sliders/sliders.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/tabs/tabs.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/tabs/init-tabs.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/date/ChangeDate.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/date/set-timer.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/index.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/quiz.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/clickChange.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/init-filters.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/UtmTags.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/bannerCounter.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/accordion/init-accordion.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/site.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/initPartnershipFilters.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/noMoreFear.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/init-show-more-button.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/date/index.js","webpack://flow.EduSigmaOrgLanding/./wwwroot/src/modules/init-widget.js"],"sourcesContent":["(function() {\r\n \"use strict\";\r\n\r\n // VanillaToast class\r\n var VanillaToast = (function() {\r\n function VanillaToast() {\r\n this.queue = new TaskQueue();\r\n this.cancellationTokens = [];\r\n this.element = null;\r\n }\r\n\r\n var constants = {\r\n default: {\r\n className: 'default',\r\n fadeDuration: 400,\r\n fadeInterval: 16,\r\n duration: 2000,\r\n closeButton: false,\r\n immediately: false\r\n },\r\n success: {\r\n className: 'success'\r\n },\r\n info: {\r\n className: 'info'\r\n },\r\n warning: {\r\n className: 'warning'\r\n },\r\n error: {\r\n className: 'error',\r\n duration: 3000,\r\n closeButton: true\r\n }\r\n };\r\n\r\n // create elements.\r\n VanillaToast.prototype.initElement = function(selector) {\r\n var container = document.createElement('div');\r\n var toastBox = document.createElement('div');\r\n var text = document.createElement('div');\r\n var closeButton = document.createElement('span');\r\n\r\n container.setAttribute(\"id\", \"vanilla-toast-container\");\r\n\r\n toastBox.setAttribute(\"id\", \"vanilla-toast\");\r\n\r\n text.setAttribute(\"id\", \"vanilla-toast-text\");\r\n\r\n closeButton.setAttribute(\"id\", \"vanilla-toast-close-button\");\r\n closeButton.innerHTML = '✖';\r\n\r\n toastBox.appendChild(text);\r\n toastBox.appendChild(closeButton);\r\n container.appendChild(toastBox);\r\n\r\n if (selector) {\r\n document.getElementById(seletor).appendChild(containter);\r\n } else {\r\n document.body.appendChild(container);\r\n }\r\n\r\n this.element = {\r\n container: container,\r\n toastBox: toastBox,\r\n text: text,\r\n closeButton: closeButton\r\n };\r\n\r\n _setStyle(this, constants.default);\r\n };\r\n\r\n // cancel current showing toast.\r\n VanillaToast.prototype.cancel = function() {\r\n if (this.cancellationTokens.length) this.cancellationTokens[0].cancel();\r\n };\r\n\r\n // cancel all enqueued toasts.\r\n VanillaToast.prototype.cancelAll = function() {\r\n var length = this.cancellationTokens.length;\r\n for (var i = 0; i < length; ++i) {\r\n (function(token) {\r\n token.cancel();\r\n })(this.cancellationTokens[length - i - 1]);\r\n }\r\n };\r\n\r\n // show toast\r\n VanillaToast.prototype.show = function(text, option, callback) {\r\n var self = this;\r\n if (!self.element) self.initElement();\r\n if (!option) option = {};\r\n // if immediately show option is on, cancel all previous toasts.\r\n if (option.immediately) self.cancelAll();\r\n\r\n var cancellationToken = new CancellationToken();\r\n // enqueue\r\n self.queue.enqueue(function(next) {\r\n // time setting\r\n var fadeDuration = option.fadeDuration || constants.default.fadeDuration;\r\n var fadeInterval = option.fadeInterval || constants.default.fadeInterval;\r\n var fadeStep = Math.min(fadeInterval / fadeDuration, 1);\r\n var duration = option.duration || constants.default.duration;\r\n\r\n // close button setting\r\n self.element.closeButton.style.display =\r\n option.closeButton ? 'inline' : 'none';\r\n\r\n // set text\r\n self.element.text.innerHTML = text;\r\n\r\n // set visible\r\n var s = self.element.toastBox.style;\r\n s.opacity = 0;\r\n s.display = 'inline-block';\r\n\r\n // set styles\r\n _setStyle(self, option);\r\n\r\n // timeoutId\r\n var timeoutId = null;\r\n\r\n // duration timeout callback.\r\n var timeoutCallback = function() {\r\n timeoutId = null;\r\n // release click clickHandler\r\n self.element.toastBox.removeEventListener('click', cancelHandler);\r\n _hide(self, option, cancellationToken, function() {\r\n if (callback) callback();\r\n self.cancellationTokens.shift().dispose();\r\n next();\r\n });\r\n };\r\n\r\n // click for close handler\r\n var cancelHandler = function() {\r\n if (!timeoutId) return;\r\n clearTimeout(timeoutId);\r\n timeoutCallback();\r\n };\r\n\r\n // start fade in.\r\n _fade(s, fadeStep, fadeInterval, cancellationToken, function() {\r\n // show while duration time and hide.\r\n self.element.toastBox.addEventListener('click', cancelHandler);\r\n if (cancellationToken.isCancellationRequested) {\r\n timeoutCallback();\r\n } else {\r\n timeoutId = setTimeout(timeoutCallback, duration);\r\n cancellationToken.register(function() {\r\n cancelHandler();\r\n });\r\n }\r\n });\r\n });\r\n\r\n self.cancellationTokens.push(cancellationToken);\r\n\r\n return self;\r\n };\r\n\r\n // create preset methods\r\n for (var item in constants) {\r\n (function(preset) {\r\n VanillaToast.prototype[preset] = function(text, option, callback) {\r\n if (!option) option = {};\r\n\r\n // copy preset options\r\n for (var propertyName in constants[preset]) {\r\n if (option[propertyName] === undefined)\r\n option[propertyName] = constants[preset][propertyName];\r\n }\r\n\r\n return this.show(text, option, callback);\r\n };\r\n })(item);\r\n }\r\n\r\n // private methods.\r\n\r\n // set style\r\n function _setStyle(self, option) {\r\n self.element.toastBox.className = option.className || constants.default.className;\r\n };\r\n\r\n // hide toast\r\n function _hide(self, option, cancellationToken, callback) {\r\n if (!option) option = {};\r\n\r\n // time setting\r\n var fadeDuration = option.fadeDuration || constants.default.fadeDuration;\r\n var fadeInterval = option.fadeInterval || constants.default.fadeInterval;\r\n var fadeStep = Math.min(fadeInterval / fadeDuration, 1);\r\n\r\n // set visible\r\n var s = self.element.toastBox.style;\r\n s.opacity = 1;\r\n\r\n // start fade out and call callback function.\r\n _fade(s, -fadeStep, fadeInterval, cancellationToken, function() {\r\n s.display = 'none';\r\n if (callback) callback();\r\n });\r\n\r\n return self;\r\n };\r\n\r\n // run fade animation\r\n function _fade(style, step, interval, cancellationToken, callback) {\r\n (function fade() {\r\n if (cancellationToken.isCancellationRequested) {\r\n style.opacity = step < 0 ? 0 : 1;\r\n if (callback) callback();\r\n return;\r\n }\r\n style.opacity = Number(style.opacity) + step;\r\n if (step < 0 && style.opacity < 0) {\r\n if (callback) callback();\r\n } else if (step > 0 && style.opacity >= 1) {\r\n if (callback) callback();\r\n } else {\r\n var timeoutId = setTimeout(function() {\r\n timeoutId = null;\r\n fade();\r\n }, interval);\r\n cancellationToken.register(function() {\r\n if (!timeoutId) return;\r\n clearTimeout(timeoutId);\r\n timeoutId = null;\r\n if (callback) callback();\r\n });\r\n }\r\n })();\r\n };\r\n\r\n return VanillaToast;\r\n })();\r\n\r\n // CancellationToken class\r\n var CancellationToken = (function() {\r\n function CancellationToken() {\r\n this.isCancellationRequested = false;\r\n this.cancelCallbacks = [];\r\n }\r\n\r\n CancellationToken.prototype.cancel = function() {\r\n this.isCancellationRequested = true;\r\n var copiedCallbacks = this.cancelCallbacks.slice();\r\n while (copiedCallbacks.length) copiedCallbacks.shift()();\r\n };\r\n\r\n CancellationToken.prototype.register = function(callback) {\r\n this.cancelCallbacks.push(callback);\r\n };\r\n\r\n CancellationToken.prototype.dispose = function() {\r\n while (this.cancelCallbacks.length) this.cancelCallbacks.shift();\r\n };\r\n\r\n return CancellationToken;\r\n })();\r\n\r\n // TaskQueue class from https://github.com/talsu/async-task-queue\r\n var TaskQueue = (function() {\r\n function TaskQueue() {\r\n this.queue = [];\r\n this.isExecuting = false;\r\n }\r\n\r\n // enqueue job. run immediately.\r\n TaskQueue.prototype.enqueue = function(job) {\r\n // enqueue.\r\n this.queue.push(job);\r\n // call execute.\r\n dequeueAndExecute(this);\r\n };\r\n\r\n // Dequeue and execute job.\r\n function dequeueAndExecute(self) {\r\n if (self.isExecuting) return;\r\n\r\n // Dequeue Job.\r\n var job = self.queue.shift();\r\n if (!job) return;\r\n\r\n //Execute Job.\r\n self.isExecuting = true;\r\n\r\n // Pass next job execute callback.\r\n job(function() {\r\n self.isExecuting = false;\r\n dequeueAndExecute(self);\r\n });\r\n }\r\n\r\n return TaskQueue;\r\n })();\r\n\r\n // export\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = new VanillaToast();\r\n }\r\n exports.vanillaToast = new VanillaToast();\r\n } else {\r\n this.vanillaToast = new VanillaToast();\r\n }\r\n}.call(this));\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","const animateBlock = (SLIDES) => {\r\n const wrapper = document.querySelector(SLIDES);\r\n\r\n if (!wrapper || window.innerWidth <= 996) {\r\n return;\r\n }\r\n \r\n const items = Array.from(wrapper.children);\r\n\r\n items.forEach((item) => {\r\n gsap.set(item, { scale: 0 });\r\n });\r\n\r\n function setScale() {\r\n items.forEach((item) => {\r\n const rect = item.getBoundingClientRect();\r\n\r\n const viewportHeight = window.innerHeight;\r\n const itemCenter = rect.top + rect.height / 2;\r\n\r\n const distanceFromCenter = Math.abs(viewportHeight / 2 - itemCenter);\r\n\r\n const progress = distanceFromCenter / (viewportHeight / 2);\r\n const adjustedProgress = Math.pow(progress, 2);\r\n\r\n let scale = 1 - adjustedProgress * 0.15;\r\n scale = Math.max(0, Math.min(scale, 1));\r\n\r\n gsap.to(item, { scale: scale, duration: 0.1 });\r\n });\r\n }\r\n\r\n setScale();\r\n\r\n window.addEventListener(\"scroll\", setScale);\r\n\r\n let scrollY = 0;\r\n let oldScrollY = 0;\r\n let roundedScrollY = 0;\r\n const lerpAmount = 0.1;\r\n\r\n function lerp(start, end, t) {\r\n return start * (1 - t) + end * oldScrollY;\r\n }\r\n\r\n function animate() {\r\n requestAnimationFrame(animate);\r\n\r\n roundedScrollY = lerp(roundedScrollY, scrollY, lerpAmount);\r\n\r\n wrapper.style.transform = `translate3d(0, ${-roundedScrollY}px, 0)`;\r\n\r\n setScale();\r\n }\r\n\r\n window.addEventListener(\"scroll\", (e) => {\r\n scrollY = window.scrollY;\r\n });\r\n\r\n animate();\r\n};\r\n\r\nexport default animateBlock;\r\n","const getPageName = () => {\r\n const segments = new URL(window.location.href).pathname.split(\"/\");\r\n const last = segments.pop() || segments.pop();\r\n return last.toLocaleLowerCase();\r\n}\r\n\r\nexport default getPageName;","import vanillaToast from 'vanilla-toast';\r\nimport getPageName from './getPageName';\r\n\r\nconst form = () => {\r\n //const citizenRequest = 'https://localhost:44328/CitizenRequest/NewInternationalCommerceRequest'; // debug\r\n const citizenRequest = 'https://2025.api.tgu-dpo.ru/citizenrequest/NewInternationalCommerceRequest';\r\n const crmRequest = 'https://sigmaedu.ru/sigmaeng/handler.php';\r\n\r\n const SCORES = {\r\n Age: {\r\n '21 or younger': 0,\r\n '22 – 25': 1,\r\n '26 – 31': 1,\r\n '32 or older': 1\r\n },\r\n Employment: {\r\n 'Student': 0,\r\n 'Unemployed': 0,\r\n 'Entry-level specialist': 1,\r\n 'Middle+ specialist': 1,\r\n 'Individual entrepreneur': 1\r\n },\r\n EnglishLevel: {\r\n 'Elementary / Pre-Intermediate': 0,\r\n Intermediate: 1,\r\n 'Upper-Intermediate or over': 1\r\n },\r\n AvailabilityDevices: {\r\n 'laptop/PC': 1,\r\n 'Smartphone only': 0,\r\n 'No laptop/PC, no smartphone': 0\r\n },\r\n LevelOfEducation: {\r\n 'Secondary education': 1,\r\n 'Higher education': 1,\r\n 'No education': 0,\r\n 'Primary': 0\r\n },\r\n };\r\n\r\n // Установка маски на телефон\r\n class Phone {\r\n constructor(options) {\r\n this.$el = document.querySelector(options.id);\r\n this.iti = options.iti;\r\n }\r\n\r\n setupMaskPhone() {\r\n if (this.$el) {\r\n this.iti = window.intlTelInput(this.$el, {\r\n separateDialCode: true,\r\n initialCountry: 'auto',\r\n geoIpLookup: function (callback) {\r\n fetch('https://ipapi.co/json')\r\n .then(function (res) {\r\n return res.json();\r\n })\r\n .then(function (data) {\r\n if (data.country_code == 'RU') {\r\n if (getPageName() == \"dataanalyst-uae\") {\r\n callback('ae');\r\n } else {\r\n callback('ke');\r\n }\r\n } else {\r\n callback(data.country_code);\r\n }\r\n })\r\n .catch(function () {\r\n if (getPageName() == \"dataanalyst-uae\") {\r\n callback('ae');\r\n } else {\r\n callback('ke');\r\n }\r\n });\r\n },\r\n utilsScript: '/js/utils.js',\r\n });\r\n\r\n const setIntervalStartPlaceholder = setInterval(() => {\r\n let placeholderInputPhone = this.$el.placeholder;\r\n\r\n if (placeholderInputPhone != '') {\r\n let maskNumber = placeholderInputPhone.replace(/[0-9+]/gi, '9');\r\n\r\n $(this.$el).mask(maskNumber, { autoclear: false });\r\n\r\n clearInterval(setIntervalStartPlaceholder);\r\n }\r\n }, 500);\r\n\r\n this.$el.addEventListener('countrychange', function () {\r\n let placeholderInputPhone = document.getElementById(\r\n this.id\r\n ).placeholder;\r\n let maskNumber = placeholderInputPhone.replace(/[0-9+]/gi, '9');\r\n\r\n $('#' + this.id).mask(maskNumber, { autoclear: false });\r\n });\r\n }\r\n }\r\n }\r\n\r\n const phone = new Phone({\r\n iti: 'itiPhone',\r\n id: '#phone',\r\n });\r\n phone.setupMaskPhone(); \r\n\r\n const phoneSpecial = new Phone({\r\n iti: 'itiPhoneHome',\r\n id: '#phone-special',\r\n });\r\n phoneSpecial.setupMaskPhone();\r\n\r\n /* Валидаторы */\r\n var validators = {\r\n requried: function (value, error) {\r\n if (!value || value.length === 0) {\r\n error.message = 'This field is required';\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n email: function (value, error) {\r\n if (/.+@.+\\..+/.test(value)) {\r\n return true;\r\n } else {\r\n error.message = 'Incorrect email';\r\n return false;\r\n }\r\n },\r\n phone: function (status, error) {\r\n if (status) {\r\n return true;\r\n } else {\r\n error.message = 'Please enter the correct number';\r\n return false;\r\n }\r\n },\r\n };\r\n\r\n // Показ ошибок при заполнении формы\r\n function showError(error, field) {\r\n if (error.message) {\r\n var errorContainer = document.createElement('div');\r\n errorContainer.textContent = error.message;\r\n errorContainer.classList.add('form__error-container');\r\n field.appendChild(errorContainer);\r\n }\r\n }\r\n\r\n // Валидация формы\r\n function validate(form) {\r\n var result = true;\r\n Array.from(form.querySelectorAll('.form__field')).forEach(function (\r\n formField\r\n ) {\r\n var error = {};\r\n var control = formField.querySelector('select, input, textarea');\r\n if (formField.querySelector('.form__required')) {\r\n if (!validators.requried(control.value, error)) {\r\n showError(error, formField);\r\n control.classList.add('form__field--invalid');\r\n result = false;\r\n return;\r\n }\r\n }\r\n\r\n if (control.id === 'email') {\r\n if (!validators.email(control.value, error)) {\r\n showError(error, formField);\r\n control.classList.add('form__field--invalid');\r\n result = false;\r\n }\r\n }\r\n\r\n if (control.id === 'phone') {\r\n if (!validators.phone(phone.iti.isValidNumber(), error)) {\r\n showError(error, formField);\r\n control.classList.add('form__field--invalid');\r\n result = false;\r\n }\r\n }\r\n\r\n if (control.id === 'phone-special') {\r\n if (!validators.phone(phoneSpecial.iti.isValidNumber(), error)) {\r\n showError(error, formField);\r\n control.classList.add('form__field--invalid');\r\n result = false;\r\n }\r\n }\r\n\r\n let invalidField = form.querySelector('.form__field--invalid');\r\n if (invalidField) {\r\n invalidField.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n });\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n // Кастомное сообщение для поля email\r\n const emailInputs = document.querySelectorAll(\"input[type=email]\");\r\n \r\n if (emailInputs.length) {\r\n emailInputs.forEach((input) => {\r\n input.addEventListener(\"invalid\", () => {\r\n input.setCustomValidity(`The email address must contain the '@' symbol. The '@' symbol is missing in the address '${input.value}'.`);\r\n });\r\n\r\n input.addEventListener(\"input\", () => {\r\n input.setCustomValidity(\"\");\r\n });\r\n })\r\n }\r\n\r\n // Удаление ошибок с формы\r\n function deleteErrors(form) {\r\n form.querySelectorAll('.form__error-container').forEach(function (el) {\r\n el.remove();\r\n });\r\n\r\n form.querySelectorAll('.form__field--invalid').forEach(function (el) {\r\n el.classList.remove('form__field--invalid');\r\n });\r\n }\r\n\r\n // Установка формы\r\n function setForm(selector) {\r\n var form = document.querySelector(selector);\r\n\r\n if (!form) {\r\n return;\r\n }\r\n\r\n form.addEventListener('submit', function (e) {\r\n sendFormEng(form, e);\r\n });\r\n\r\n addMaxLengthPromocode(form);\r\n\r\n onFormFilling(form, () => {\r\n fbq('track', 'InitiateCheckout');\r\n });\r\n }\r\n\r\n // Максимальное число символов для поля \"Промокод\"\r\n function addMaxLengthPromocode(form) {\r\n const promocode = form.querySelector('#promocode');\r\n if (promocode) {\r\n promocode.setAttribute('maxlength', '30');\r\n }\r\n }\r\n\r\n /* Получение данных с форм в модальных окнах */\r\n function getFormModalData(formClass) {\r\n const forms = document.querySelectorAll(formClass);\r\n\r\n let data = {};\r\n [...forms].forEach((form) => {\r\n Array.from(new FormData(form)).forEach(function (formElement) {\r\n let key = formElement[0];\r\n let value = formElement[1];\r\n\r\n data[key] = value;\r\n });\r\n\r\n form.reset();\r\n });\r\n\r\n return data;\r\n }\r\n\r\n /* Переключение и отправка формы в Квизе */\r\n function quizForm() {\r\n const slides = document.querySelectorAll('.quiz__slide'),\r\n submit = document.getElementById('quiz-btn');\r\n\r\n if (slides.length < 1) {\r\n return;\r\n }\r\n\r\n submit.addEventListener('click', (e) => {\r\n let target = e.target,\r\n form = target.closest('.quiz__slide-form');\r\n\r\n e.preventDefault();\r\n deleteErrors(form);\r\n\r\n if (validate(form)) {\r\n sendFormEng(form, e, getFormModalData('.quiz__slide-form'));\r\n }\r\n });\r\n }\r\n\r\n // Отправка формы\r\n let firstFormData = {};\r\n\r\n function sendFormEng(form, e, modalData) {\r\n var sendBtn = form.querySelector(\r\n 'button[type=\"submit\"], input[type=\"submit\"]'\r\n );\r\n var data = {};\r\n\r\n if (modalData) {\r\n data = { ...modalData };\r\n } else {\r\n e.preventDefault();\r\n deleteErrors(form);\r\n data = {};\r\n\r\n if (!validate(form)) {\r\n return;\r\n }\r\n \r\n Array.from(new FormData(form)).forEach(function (formElement) {\r\n var key = formElement[0];\r\n var value = formElement[1];\r\n\r\n if (key == 'Phone') {\r\n if (form.id === 'form-special') {\r\n data[key] = phoneSpecial.iti.getNumber();\r\n } else {\r\n data[key] = phone.iti.getNumber();\r\n }\r\n } else if (key == 'BirthDate') {\r\n data[key] = value.split('.').reverse().join('-');\r\n } else {\r\n data[key] = value;\r\n }\r\n });\r\n }\r\n\r\n sendBtn.disabled = true;\r\n\r\n var url = document.location.href;\r\n\r\n var paramsStartIndex = url.indexOf('?');\r\n if (paramsStartIndex > -1) {\r\n url\r\n .slice(paramsStartIndex + 1, url.length)\r\n .split('&')\r\n .map(function (utmString) {\r\n return utmString.split('=');\r\n })\r\n .forEach(function (utmMark) {\r\n var key = utmMark[0];\r\n key = key[0].toUpperCase() + key.slice(1, key.length);\r\n var value = utmMark[1];\r\n value =\r\n value.indexOf('#') > -1\r\n ? value.slice(0, value.indexOf('#'))\r\n : value;\r\n data[key] = value;\r\n });\r\n }\r\n\r\n data['Eng'] = true;\r\n data['Landing'] = url;\r\n\r\n // Временный костыль для отправки формы\r\n data['Place'] = \"\";\r\n\r\n // Roistat\r\n let roistatCookie = getCookie('roistat_visit');\r\n\r\n if (!!roistatCookie) {\r\n data['RoistatCookie'] = roistatCookie;\r\n }\r\n\r\n if (form.id == 'form-first') {\r\n firstFormData = { ...data };\r\n }\r\n\r\n if (form.id == 'form-second' || form.id == 'quiz-form') {\r\n data['Program'] = firstFormData.Program;\r\n data['FirstName'] = firstFormData.FirstName;\r\n data['Email'] = firstFormData.Email;\r\n data['Phone'] = firstFormData.Phone;\r\n data['Package'] = firstFormData.Package;\r\n data['Promocode'] = firstFormData.Promocode;\r\n data['Place'] = firstFormData.Place;\r\n }\r\n\r\n /* Передача ClientId */\r\n (() => {\r\n let ym_uid = getCookie('_ym_uid');\r\n\r\n if (ym_uid) {\r\n data['ClientId'] = ym_uid;\r\n }\r\n })();\r\n\r\n fetch(citizenRequest, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json;charset=utf-8' },\r\n body: JSON.stringify(data),\r\n })\r\n .then((response) => response.json())\r\n .then((result) => {\r\n sendBtn.disabled = false;\r\n form.reset();\r\n addAdvCakeScript(\r\n result.requestId,\r\n result.odinId,\r\n result.programName,\r\n data.Email\r\n );\r\n\r\n if (form.id == 'form-first') { \r\n if (getPageName() == 'dataanalyst-learning') {\r\n fbq('track', 'CompleteRegistration');\r\n ym(92965313, 'reachGoal', 'CompleteRegistration');\r\n window.lintrk('track', { conversion_id: 16830722 });\r\n vanillaToast.success(\r\n 'Your application was successfully sent
Success!',\r\n { duration: 3000, fadeDuration: 500 }\r\n );\r\n openSuccessModalEng(data['Program']);\r\n return;\r\n }\r\n\r\n if (getPageName() == 'dataanalytics') {\r\n ym(92965313,'reachGoal','TestForm');\r\n }\r\n\r\n fbq('track', 'Lead');\r\n ym(92965313, 'reachGoal', 'Lead');\r\n gtag('event', 'first_form');\r\n window.lintrk('track', { conversion_id: 16830714 });\r\n if (document.querySelector('.form__steps')) {\r\n document.querySelector('.form__steps').classList.add('first');\r\n document.getElementById('form-first').style.display = 'none';\r\n document.getElementById('form-second').style.display = 'block';\r\n }\r\n\r\n //Изменение текста в левой части формы во втором шаге\r\n if (getPageName() == 'dataanalyst' || getPageName() == 'learn-dataanalyst' || getPageName() == 'power-bi') {\r\n document.querySelector(\r\n '.form__second-toggle-dataanalyst'\r\n ).style.display = 'block';\r\n document.querySelector('.form__first-toggle').style.display =\r\n 'none';\r\n }\r\n\r\n // Открытие квиза\r\n if (getPageName() == 'dataanalyst-bootcamp') {\r\n document.querySelector('.quiz').classList.add('is-active');\r\n document.querySelector('body').classList.add('scroll-lock');\r\n document\r\n .querySelector('.quiz__header-close')\r\n .addEventListener('click', () => {\r\n document.querySelector('.quiz').classList.remove('is-active');\r\n document.querySelector('body').classList.remove('scroll-lock');\r\n });\r\n }\r\n }\r\n\r\n if (form.id == 'form-second') {\r\n fbq('track', 'CompleteRegistration');\r\n ym(92965313, 'reachGoal', 'CompleteRegistration');\r\n window.lintrk('track', { conversion_id: 16830722 });\r\n vanillaToast.success(\r\n 'Your application was successfully sent
Success!',\r\n { duration: 3000, fadeDuration: 500 }\r\n );\r\n // openSuccessModalEng(data['Program']);\r\n document.querySelector('.form__steps').classList.remove('first');\r\n document.querySelector('.form__steps').classList.add('second');\r\n }\r\n\r\n if (form.id == 'form-special'){\r\n openSuccessModalEng(data['Program']);\r\n fbq('track', 'Lead');\r\n ym(92965313, 'reachGoal', 'Lead');\r\n }\r\n\r\n if (form.id == 'quiz-form') {\r\n const quizSlides = document.querySelectorAll('.quiz__slide');\r\n fbq('track', 'CompleteRegistration');\r\n ym(92965313, 'reachGoal', 'CompleteRegistration');\r\n window.lintrk('track', { conversion_id: 16830722 });\r\n vanillaToast.success(\r\n 'Your application was successfully sent
Success!',\r\n { duration: 3000, fadeDuration: 500 }\r\n );\r\n document.querySelector('.quiz').classList.remove('is-active');\r\n document.querySelector('body').classList.remove('scroll-lock');\r\n quizSlides[quizSlides.length - 1].style.display = 'none';\r\n quizSlides[0].style.display = 'flex';\r\n documentDownLoad(\r\n '/files/10_useful_materials_for_a_future_Data_Analyst.pdf',\r\n '10_useful_materials_for_a_future_Data_Analyst.pdf'\r\n );\r\n }\r\n\r\n if (form.id == 'form-partnership') {\r\n vanillaToast.success(\r\n 'Your application was successfully sent
Success!',\r\n { duration: 3000, fadeDuration: 500 }\r\n );\r\n openSuccessModalPartnership();\r\n }\r\n\r\n // AB \r\n amountScores(data);\r\n\r\n // Отправка в АМО \r\n formSubmitCommerce(data, form);\r\n })\r\n .catch((err) => {\r\n sendBtn.disabled = false;\r\n vanillaToast.error(\r\n 'Please check your network connection or try again later
There has been an error',\r\n { duration: 3000, fadeDuration: 500 }\r\n );\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n function formSubmitCommerce(data, form) {\r\n const requestUrl = data['Program'] === \"QA Engineer\" ? \"https://hook.eu2.make.com/kblmrpcfjexpkw72sfgomxariz67ogk8\" : crmRequest;\r\n $.ajax({\r\n url: requestUrl,\r\n method: 'POST',\r\n contentType: 'application/json;charset=utf-8',\r\n data: JSON.stringify(data),\r\n success: function () {\r\n formSubmtNewLink(data, form);\r\n },\r\n error: function () {},\r\n });\r\n }\r\n\r\n function formSubmtNewLink(data, form) {\r\n $.ajax({\r\n url: \"https://hook.eu2.make.com/bl15odssio5yallvqirraeqgcoulb5fb\",\r\n method: 'POST',\r\n contentType: 'application/json;charset=utf-8',\r\n data: JSON.stringify(data),\r\n success: function () {\r\n formSubmitBizavtomat(data, form);\r\n },\r\n error: function () { \r\n formSubmitBizavtomat(data, form);\r\n },\r\n });\r\n }\r\n\r\n function formSubmitBizavtomat(data, form) {\r\n $.ajax({\r\n url: \"https://n8n.bizavtomat.ru/webhook/62da461e-8135-47f0-9e40-a546cb15d125\",\r\n method: 'POST',\r\n contentType: 'application/json;charset=utf-8',\r\n data: JSON.stringify(data),\r\n success: function () {\r\n if (form.id == 'form-second' || getPageName() == 'dataanalytics') {\r\n setTimeout(() => {\r\n window.location.assign(\"https://wa.me/+254703246117/\");\r\n }, 0); \r\n }\r\n },\r\n error: function () {},\r\n });\r\n }\r\n\r\n //Скачивание документа при нажатии на кнопку модального окна при успешной отправке формы\r\n function documentDownLoad(path, filename) {\r\n const a = document.createElement('a');\r\n a.href = path;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }\r\n\r\n // Модальное окно успешно отправленной формы\r\n function successModal() {\r\n let modal = document.querySelector('#quiz-success');\r\n\r\n if (!modal) {\r\n modal = document.createElement('div');\r\n ['modal', 'quiz'].forEach((additionalClass) => {\r\n modal.classList.add(additionalClass);\r\n });\r\n modal.id = 'quiz-success';\r\n modal.innerHTML = '
';\r\n\r\n document.body.append(modal);\r\n }\r\n\r\n const a = document.createElement('a');\r\n a.href = '#quiz-success';\r\n a.rel = 'modal:open';\r\n a.style.display = 'none';\r\n document.body.append(a);\r\n\r\n window.openSuccessModalEng = (programName) => {\r\n const successModal = document.createElement('div');\r\n successModal.classList.add('beat');\r\n\r\n /* FLOW-9732 замена текста в зависимости от дня недели и времени */\r\n let text = '';\r\n\r\n (() => {\r\n const date = new Date();\r\n\r\n if (programName === 'I haven’t chosen yet, need a consultation') {\r\n text = 'Our team will call you back to help you choose a bootcamp that suits you best.';\r\n } else if (date.getDay() == 0 || date.getDay() == 6) {\r\n text = 'Our team will reach out to you on Monday.';\r\n } else if (date.getHours() >= 18) {\r\n text = 'Our team will reach out to you tomorrow.';\r\n } else if (programName === 'Data Analyst' || programName === 'QA Engineer') {\r\n text =\r\n 'Our team will be calling you from +254 711 019 500 to discuss your online course enrollment from 11:00 to 20:00.';\r\n } else {\r\n text = 'Our team will contact you upon group formation.';\r\n }\r\n })();\r\n\r\n if (programName === 'Data Analyst') {\r\n successModal.innerHTML = `\r\n
\r\n
\r\n
\r\n \"Image\r\n
\r\n
\r\n

Thank you for choosing Sigma Academy!

\r\n

Your application is accepted!
Our team will be calling you from +254 711 019 500
to discuss your data bootcamp enrollment from 11:00 to 20:00.

\r\n

Join our Telegram Bot to get all the guidance and support you need:

\r\n
    \r\n
  • • Get advice on enrolling in the bootcamp
  • \r\n
  • • Access our useful webinar "Boost Your Income: Key Skills for Digital Professions", and more!
  • \r\n
\r\n

Bonus «10 useful materials for a future Data Analyst»
will be automatically downloaded.

\r\n Get a bonus\r\n
\r\n \r\n
\r\n
\r\n `;\r\n } else if (programName === 'QA Engineer') {\r\n successModal.innerHTML = `\r\n
\r\n
\r\n
\r\n \"Image\r\n
\r\n
\r\n

Thank you for choosing Sigma Academy!

\r\n

Your application is accepted!
Our team will be calling you from +254 711 019 500
to discuss your QA engineering bootcamp enrollment from 11:00 to 20:00.

\r\n

Join our Telegram Bot to get all the guidance and support you need:

\r\n
    \r\n
  • • Get advice on enrolling in the bootcamp
  • \r\n
  • • Access our useful webinar "Boost Your Income: Key Skills for Digital Professions", and more!
  • \r\n
\r\n Get a bonus\r\n
\r\n \r\n
\r\n
\r\n `;\r\n }\r\n else if (programName === 'Smart Personal Investments') {\r\n successModal.innerHTML = `\r\n
\r\n
\r\n
\r\n \"Image\r\n
\r\n
\r\n

Thank you for choosing Sigma Academy!

\r\n

Your application is accepted!
Our team will be calling you from +254 711 019 500
to discuss your bootcamp enrollment from 11:00 to 20:00.

\r\n

Join our Telegram Bot to get all the guidance and support you need:

\r\n
    \r\n
  • • Get advice on enrolling in the bootcamp
  • \r\n
  • • Access our useful webinar "Boost Your Income: Key Skills for Digital Professions", and more!
  • \r\n
\r\n Get a bonus\r\n
\r\n \r\n
\r\n
\r\n `;\r\n }\r\n else if (programName === 'Power BI Specialist') {\r\n successModal.innerHTML = `\r\n
\r\n
\r\n
\r\n \"Image\r\n
\r\n
\r\n

Thank you for choosing Sigma Academy!

\r\n

Your application is accepted!
Our team will be calling you from +254 711 019 500
to discuss your course enrollment from 11:00 to 20:00.

\r\n

Join our Telegram Bot to get all the guidance and support you need:

\r\n
    \r\n
  • • Get advice on enrolling in the course
  • \r\n
  • • Access our useful webinar "Boost Your Income: Key Skills for Digital Professions", and more!
  • \r\n
\r\n Get a bonus\r\n
\r\n \r\n
\r\n
\r\n `;\r\n } else {\r\n successModal.innerHTML = `\r\n
\r\n
\r\n
\r\n \"Image\r\n
\r\n
\r\n

Thank you for choosing Sigma Academy!

\r\n

Your application is accepted!
${text}

\r\n

Meanwhile, you might also want to check our Data Analyst Bootcamp program. Start on January 25th!

\r\n

Join our Telegram Bot to get all the guidance and support you need:

\r\n
    \r\n
  • • Get advice on enrolling in the bootcamp
  • \r\n
  • • Access our useful webinar "Boost Your Income: Key Skills for Digital Professions", and more!
  • \r\n
\r\n Get a bonus\r\n \r\n
\r\n \r\n
\r\n
\r\n `;\r\n }\r\n\r\n document.body.append(successModal);\r\n document.body.classList.add('scroll-lock');\r\n const closeButton = successModal.querySelector('.beat__close');\r\n\r\n //Скачивание файла лид магнита при нажатии на кнопку модального окна при успешной отправке формы программы dataanalyst\r\n if (programName === 'Data Analyst') {\r\n const buttonClick = document.querySelector('.beat__button');\r\n buttonClick.addEventListener('click', () => {\r\n documentDownLoad(\r\n '/files/10_useful_materials_for_a_future_Data_Analyst.pdf',\r\n '10_useful_materials_for_a_future_Data_Analyst.pdf'\r\n );\r\n });\r\n }\r\n\r\n const onOverlayClick = (evt) => {\r\n if (!evt.target.closest('.beat__inner')) {\r\n document.body.classList.remove('scroll-lock');\r\n document.body.removeChild(successModal);\r\n document.body.removeEventListener('click', onOverlayClick);\r\n }\r\n };\r\n\r\n document.body.addEventListener('click', onOverlayClick);\r\n closeButton?.addEventListener('click', () => {\r\n document.body.classList.remove('scroll-lock');\r\n document.body.removeChild(successModal);\r\n document.body.removeEventListener('click', onOverlayClick);\r\n });\r\n };\r\n\r\n window.openSuccessModalPartnership = () => {\r\n const successModal = document.createElement('div');\r\n successModal.classList.add('beat');\r\n successModal.innerHTML = `\r\n
\r\n
\r\n
\r\n \"Image\r\n
\r\n
\r\n

Thank you for choosing Sigma Academy!

\r\n

We’re excited to learn more about your business and how we can help you achieve your goals. We’ll be in touch shortly to discuss your application

\r\n
\r\n \r\n
\r\n
\r\n `;\r\n\r\n document.body.append(successModal);\r\n document.body.classList.add('scroll-lock');\r\n const closeButton = successModal.querySelector('.beat__close');\r\n\r\n const onOverlayClick = (evt) => {\r\n if (!evt.target.closest('.beat__inner')) {\r\n document.body.classList.remove('scroll-lock');\r\n document.body.removeChild(successModal);\r\n document.body.removeEventListener('click', onOverlayClick);\r\n }\r\n };\r\n\r\n document.body.addEventListener('click', onOverlayClick);\r\n closeButton.addEventListener('click', () => {\r\n document.body.classList.remove('scroll-lock');\r\n document.body.removeChild(successModal);\r\n document.body.removeEventListener('click', onOverlayClick);\r\n });\r\n };\r\n }\r\n\r\n // Отслеживание заполнения формы\r\n function onFormFilling(form, callback) {\r\n const controls = form.querySelectorAll('input, select, textarea');\r\n let changed = false;\r\n controls.forEach((control) => {\r\n $(control).one('blur', (e) => {\r\n if (!changed) {\r\n callback(e);\r\n changed = true;\r\n }\r\n });\r\n });\r\n }\r\n\r\n /* Получение cookie */\r\n function getCookie(cname) {\r\n let name = cname + '=';\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n /* Добавление скрипта AdvCake на сайт */\r\n function addAdvCakeScript(id, OdinId, program, email) {\r\n window.advcake_data = window.advcake_data || [];\r\n window.advcake_data.push({\r\n pageType: 6,\r\n user: {\r\n email: `md5(${email})`,\r\n type: '',\r\n },\r\n leadInfo: {\r\n id: `${id}`,\r\n leadid: `${OdinId}`,\r\n name: `${program}`,\r\n totalPrice: 0,\r\n coupon: '',\r\n marketing_cat: 4,\r\n },\r\n });\r\n }\r\n\r\n /* Инициализация селектов */\r\n function setSelects() {\r\n const selectors = [\r\n {\r\n id: '#ProgramFormEng',\r\n placeholder: 'Program',\r\n },\r\n {\r\n id: '#gender',\r\n placeholder: 'Gender',\r\n },\r\n {\r\n id: '#PreferredLearningFormat',\r\n placeholder: 'Preferred learning format',\r\n },\r\n {\r\n id: '#PreferredPaymentOption',\r\n placeholder: 'Preferred payment option',\r\n },\r\n {\r\n id: '#availability',\r\n placeholder: 'Availability of a laptop/computer',\r\n },\r\n {\r\n id: '#englishLevel',\r\n placeholder: 'Level of English',\r\n },\r\n {\r\n id: '#MonthlyIncome',\r\n placeholder: 'Monthly income',\r\n },\r\n {\r\n id: '#LevelOfEducation',\r\n placeholder: 'Level of education',\r\n },\r\n {\r\n id: '#Age',\r\n placeholder: 'Age',\r\n },\r\n {\r\n id: '#Package',\r\n placeholder: 'Package',\r\n },\r\n {\r\n id: '#PurposeTraining',\r\n placeholder: 'What is the purpose of training',\r\n },\r\n {\r\n id: '#Employment',\r\n placeholder: 'Your current occupation and employment',\r\n },\r\n {\r\n id: '#FoundUs',\r\n placeholder: 'How did you know about us',\r\n },\r\n ];\r\n\r\n selectors.forEach((item) => {\r\n let selector = $(item.id),\r\n message = '';\r\n\r\n selector.select2({\r\n placeholder: item.placeholder,\r\n language: {\r\n noResults: function () {\r\n return message;\r\n },\r\n },\r\n escapeMarkup: function (markup) {\r\n return markup;\r\n },\r\n });\r\n\r\n selector.val(null).trigger('change');\r\n });\r\n }\r\n\r\n /* Сумма баллов для опредения качества заявки */\r\n function amountScores(data) {\r\n if (data.Age && data.Employment && data.EnglishLevel && data.AvailabilityDevices && data.LevelOfEducation) { \r\n try {\r\n let sum =\r\n SCORES.Age[data.Age] +\r\n SCORES.Employment[data.Employment] +\r\n SCORES.EnglishLevel[data.EnglishLevel] +\r\n SCORES.AvailabilityDevices[data.AvailabilityDevices] +\r\n SCORES.LevelOfEducation[data.LevelOfEducation];\r\n\r\n if (sum == 5) {\r\n ym(92965313,'reachGoal','Segment_AB');\r\n fbq('track', 'Schedule');\r\n } \r\n } catch(e) {\r\n console.log(e);\r\n } \r\n }\r\n }\r\n\r\n /* Добавления поля Package на главной странице в форме */\r\n function addFieldPackage() {\r\n const Programs = document.getElementById('ProgramFormEng');\r\n\r\n if (!Programs) {\r\n return;\r\n }\r\n\r\n const PackageField = document.createElement('div');\r\n PackageField.classList.add('form__field', 'formSelect'); \r\n\r\n Programs.onchange = () => {\r\n if (Programs.selectedIndex != '-1') {\r\n let program = Programs.options[Programs.selectedIndex].getAttribute('program');\r\n\r\n if (program == 'dataanalyst' || program == 'webdeveloper' || program == 'power-bi') {\r\n Programs.parentElement.after(PackageField);\r\n if (program == 'dataanalyst' || program == 'power-bi') {\r\n PackageField.innerHTML = `\r\n \r\n \r\n `;\r\n } else {\r\n PackageField.innerHTML = `\r\n \r\n \r\n `;\r\n }\r\n\r\n const Package = $('#Package');\r\n Package.select2({\r\n placeholder: 'Package',\r\n });\r\n Package.val(null).trigger('change');\r\n } else {\r\n const Package = document.getElementById('Package');\r\n\r\n if (Package) {\r\n Package.parentElement.remove();\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n /* Инициализация функций */\r\n $(function () {\r\n setForm('#form-first');\r\n setForm('#form-second');\r\n setForm('#form-partnership');\r\n setForm('#form-special');\r\n setSelects();\r\n successModal();\r\n addFieldPackage();\r\n quizForm();\r\n\r\n /* Добавления поля инпута при выборе в форме опроса значения \"Other (your answer)\" */\r\n const PurposeTraining = document.getElementById('PurposeTraining'),\r\n PurposeTrainingRadios = document.querySelectorAll(\r\n '.quiz input[name=\"PurposeTraining\"]'\r\n ),\r\n PurposeTrainingText = document.getElementById('PurposeTrainingText'),\r\n FoundUs = document.getElementById('FoundUs'),\r\n FoundUsRadios = document.querySelectorAll('.quiz input[name=\"FoundUs\"]'),\r\n FoundUsText = document.getElementById('FoundUsText');\r\n\r\n if (PurposeTraining) {\r\n PurposeTraining.onchange = (e) => {\r\n let value = e.target.value;\r\n\r\n if (value === 'Other (your answer)') {\r\n PurposeTrainingText.parentNode.style.display = 'block';\r\n PurposeTrainingText.parentNode.querySelector('.form__input--hidden').classList.add(\"form__required\");\r\n } else {\r\n PurposeTrainingText.parentNode.style.display = 'none';\r\n PurposeTrainingText.parentNode.querySelector('.form__input--hidden').classList.remove(\"form__required\");\r\n }\r\n };\r\n }\r\n\r\n if (PurposeTrainingRadios.length) {\r\n PurposeTrainingRadios.forEach((radio) => {\r\n radio.onchange = (e) => {\r\n let value = e.target.value;\r\n\r\n if (value === 'Other (your answer)') {\r\n PurposeTrainingText.parentElement.style.display = 'block';\r\n } else {\r\n PurposeTrainingText.parentElement.style.display = 'none';\r\n }\r\n };\r\n });\r\n }\r\n\r\n if (FoundUs) {\r\n FoundUs.onchange = (e) => {\r\n let value = e.target.value;\r\n\r\n if (value === 'Other (your answer)') {\r\n FoundUsText.parentNode.style.display = 'block';\r\n FoundUsText.parentNode.querySelector('.form__input--hidden').classList.add(\"form__required\");\r\n } else {\r\n FoundUsText.parentNode.style.display = 'none';\r\n FoundUsText.parentNode.querySelector('.form__input--hidden').classList.remove(\"form__required\");\r\n }\r\n };\r\n }\r\n\r\n if (FoundUsRadios.length) {\r\n FoundUsRadios.forEach((radio) => {\r\n radio.onchange = (e) => {\r\n let value = e.target.value;\r\n\r\n if (value === 'Other (your answer)') {\r\n FoundUsText.parentElement.style.display = 'block';\r\n } else {\r\n FoundUsText.parentElement.style.display = 'none';\r\n }\r\n };\r\n });\r\n }\r\n });\r\n};\r\n\r\nexport default form;\r\n","export class Accordion {\r\n constructor() {\r\n this._openHeight = 0;\r\n this._windowWidth = window.innerWidth;\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this._windowResizeHandler = this._windowResizeHandler.bind(this);\r\n this._init();\r\n }\r\n\r\n _init() {\r\n this.fullUpdate();\r\n document.addEventListener('click', this._documentClickHandler);\r\n window.addEventListener('resize', this._windowResizeHandler);\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n if (!target.closest('[data-accordion=\"button\"]')) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n const parent = target.closest('[data-accordion=\"parent\"]');\r\n\r\n if (\r\n parent.dataset.destroy &&\r\n !window.matchMedia(parent.dataset.destroy).matches\r\n ) {\r\n return;\r\n }\r\n\r\n const element = target.closest('[data-accordion=\"element\"]');\r\n if (element.classList.contains('is-active')) {\r\n this.closeAccordion(element);\r\n return;\r\n }\r\n this.openAccordion(element);\r\n }\r\n\r\n _windowResizeHandler() {\r\n if (this._windowWidth === window.innerWidth) {\r\n return;\r\n }\r\n this._windowWidth = window.innerWidth;\r\n this.updateAccordionsHeight();\r\n }\r\n\r\n closeAllAccordion(parent) {\r\n const elements = parent.querySelectorAll('[data-accordion=\"element\"]');\r\n elements.forEach((element) => {\r\n const currentParent = element.closest('[data-accordion=\"parent\"]');\r\n if (currentParent === parent) {\r\n this.closeAccordion(element);\r\n }\r\n });\r\n }\r\n\r\n updateAccordionsHeight(element = null) {\r\n if (element) {\r\n const content = element.querySelector('[data-accordion=\"content\"]');\r\n content.style.transition = 'none';\r\n content.style.maxHeight = `${content.scrollHeight}px`;\r\n setTimeout(() => {\r\n content.style.transition = null;\r\n });\r\n return;\r\n }\r\n\r\n const closeElements = document.querySelectorAll(\r\n '[data-accordion=\"element\"]:not(.is-active)'\r\n );\r\n\r\n closeElements.forEach((closeElement) => {\r\n const parent = closeElement.closest('[data-accordion=\"parent\"]');\r\n const content = closeElement?.querySelector('[data-accordion=\"content\"]');\r\n if (\r\n parent.dataset.destroy &&\r\n !window.matchMedia(parent.dataset.destroy).matches\r\n ) {\r\n content.style.maxHeight = '100%';\r\n return;\r\n }\r\n if (content) {\r\n content.style.maxHeight = null;\r\n }\r\n });\r\n\r\n const openElements = document.querySelectorAll(\r\n '[data-accordion=\"element\"].is-active'\r\n );\r\n openElements.forEach((openElement) => {\r\n const content = openElement.querySelector('[data-accordion=\"content\"]');\r\n const parent = openElement.closest('[data-accordion=\"parent\"]');\r\n if (\r\n parent.dataset.destroy &&\r\n !window.matchMedia(parent.dataset.destroy).matches\r\n ) {\r\n content.style.maxHeight = '100%';\r\n return;\r\n }\r\n content.style.transition = 'none';\r\n content.style.maxHeight = `${content.scrollHeight}px`;\r\n setTimeout(() => {\r\n content.style.transition = null;\r\n });\r\n });\r\n }\r\n\r\n fullUpdate(parent = null, transition = false) {\r\n let openElements;\r\n if (parent) {\r\n openElements = parent.querySelectorAll(\r\n '[data-accordion=\"element\"].is-active'\r\n );\r\n } else {\r\n openElements = document.querySelectorAll(\r\n '[data-accordion=\"element\"].is-active'\r\n );\r\n }\r\n openElements.forEach((openElement) => {\r\n const innerParent = openElement.querySelector(\r\n '[data-accordion=\"parent\"]'\r\n );\r\n if (innerParent) {\r\n return;\r\n }\r\n this.openAccordion(openElement, transition);\r\n });\r\n this.updateAccordionsHeight();\r\n }\r\n\r\n openAccordion(element, transition = true) {\r\n const parentElement = element.closest('[data-accordion=\"parent\"]');\r\n const contentElement = element.querySelector('[data-accordion=\"content\"]');\r\n this._openHeight += contentElement.scrollHeight;\r\n\r\n if (parentElement.hasAttribute('data-single')) {\r\n this.closeAllAccordion(parentElement);\r\n }\r\n\r\n element.classList.add('is-active');\r\n if (transition) {\r\n contentElement.style.maxHeight = `${this._openHeight}px`;\r\n } else {\r\n contentElement.style.transition = 'none';\r\n contentElement.style.maxHeight = `${this._openHeight}px`;\r\n setTimeout(() => {\r\n contentElement.style.transition = null;\r\n });\r\n }\r\n\r\n if (parentElement.closest('[data-accordion=\"element\"]')) {\r\n this.openAccordion(\r\n parentElement.closest('[data-accordion=\"element\"]'),\r\n transition\r\n );\r\n return;\r\n }\r\n\r\n this._openHeight = 0;\r\n }\r\n\r\n closeAccordion(element, transition = true) {\r\n const contentElement = element.querySelector('[data-accordion=\"content\"]');\r\n if (!contentElement) {\r\n return;\r\n }\r\n element.classList.remove('is-active');\r\n if (transition) {\r\n contentElement.style.maxHeight = '0';\r\n } else {\r\n contentElement.style.transition = 'none';\r\n contentElement.style.maxHeight = '0';\r\n setTimeout(() => {\r\n contentElement.style.transition = null;\r\n });\r\n }\r\n }\r\n}\r\n","let resize = (func) => {\r\n let currentInnerWidth = window.innerWidth;\r\n\r\n window.addEventListener('resize', () => {\r\n if (window.innerWidth === currentInnerWidth) return;\r\n currentInnerWidth = window.innerWidth;\r\n func();\r\n });\r\n}\r\n\r\nexport default resize;","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\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 Object.keys(src).forEach((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\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst 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() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (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 for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (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 for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\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\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\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 const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\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\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\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\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\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\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\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\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\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}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\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\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\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\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\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\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}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\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}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\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\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\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\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\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\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\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\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\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\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\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 let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(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 {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\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\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\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(' ');\n\nfunction shortcut(name) {\n function eventHandler(...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]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\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};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\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 windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\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\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\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\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\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]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n 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 let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\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\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 Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(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 && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\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]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(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 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\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n 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.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\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 $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // 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\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n 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\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n 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\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-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 } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n 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\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n 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\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\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 extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\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\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 // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n 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\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n 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 installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n 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\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\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;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(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}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\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}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\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 = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\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\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\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 emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\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\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(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 Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\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 const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\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 swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(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\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\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); // Next Slides\n\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","import resize from \"../resize\";\r\nimport Swiper, { Navigation, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Lazy]);\r\n\r\nconst initAboutSlider = () => {\r\n const slider = document.querySelector(\".about-slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n lazy: true,\r\n autoHeight: false,\r\n loop: true,\r\n slidesPerView: 3,\r\n spaceBetween: 20,\r\n\r\n breakpoints: {\r\n 997: {\r\n slidesPerView: 3,\r\n },\r\n 768: {\r\n slidesPerView: 2,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".about-slider__navigation-next\",\r\n prevEl: \".about-slider__navigation-prev\",\r\n disabledClass: \"last\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth > 767\r\n ? init() \r\n : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initAboutSlider;\r\n","import Swiper, { Navigation, Pagination } from \"swiper\";\r\nSwiper.use([Navigation, Pagination]);\r\n\r\nconst initBarriersSlider = () => {\r\n const slider = document.querySelector(\".barriers-slider\");\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n loop: true,\r\n spaceBetween: 20,\r\n\r\n breakpoints: {\r\n 997: {\r\n slidesPerView: 3,\r\n },\r\n 768: {\r\n slidesPerView: 2,\r\n },\r\n 0: {\r\n slidesPerView: 1,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".barriers__navigation-next\",\r\n prevEl: \".barriers__navigation-prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \".barriers__pagination\",\r\n clickable: true,\r\n currentClass: \"active\",\r\n },\r\n });\r\n};\r\n\r\nexport default initBarriersSlider;\r\n","import Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initCasesSlider = () => {\r\n const slider = document.querySelector(\"[data-cases] .cases-slider\");\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n autoHeight: false,\r\n loop: true,\r\n lazy: true,\r\n spaceBetween: 20,\r\n slidesPerView: 3,\r\n\r\n breakpoints: {\r\n 997: {\r\n slidesPerView: 3,\r\n },\r\n 660: {\r\n slidesPerView: 2,\r\n },\r\n 0: {\r\n slidesPerView: 1,\r\n },\r\n },\r\n\r\n navigation: {\r\n nextEl: \"[data-cases] .cases-slider__navigation-next\",\r\n prevEl: \"[data-cases] .cases-slider__navigation-prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \"[data-cases] .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n};\r\n\r\nexport default initCasesSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initLicenseSlider = () => {\r\n const slider = document.querySelector(\".license-slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n lazy: true,\r\n autoHeight: false,\r\n slidesPerView: 1,\r\n navigation: {\r\n nextEl: \".diplom--company .slider-navigation__button--next\",\r\n prevEl: \".diplom--company .slider-navigation__button--prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \".diplom--company .swiper-pagination-diplom\",\r\n type: \"fraction\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 767\r\n ? init() \r\n : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initLicenseSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper, { Navigation, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Lazy]);\r\n\r\nconst initPlatformSlider = () => {\r\n const slider = document.querySelector(\".platform-slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n autoHeight: false,\r\n spaceBetween: 20,\r\n slidesPerView: 2,\r\n lazy: true,\r\n\r\n navigation: {\r\n nextEl: \".platform-slider__navigation-next\",\r\n prevEl: \".platform-slider__navigation-prev\",\r\n disabledClass: \"last\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth > 767\r\n ? init() \r\n : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initPlatformSlider;\r\n","import Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initReviewsSlider = () => {\r\n const slider = document.querySelector(\"[data-reviews] .cases-slider\");\r\n\r\n if (!slider) return;\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n watchOverflow: true,\r\n spaceBetween: 20,\r\n slidesPerView: 3,\r\n lazy: true,\r\n\r\n breakpoints: {\r\n 997: {\r\n slidesPerView: 3,\r\n },\r\n 660: {\r\n slidesPerView: 2,\r\n },\r\n 0: {\r\n spaceBetween: 10,\r\n slidesPerView: 1.2,\r\n },\r\n },\r\n\r\n navigation: {\r\n nextEl: \"[data-reviews] .cases-slider__navigation-next\",\r\n prevEl: \"[data-reviews] .cases-slider__navigation-prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \"[data-reviews] .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n\r\n const videoReviews = slider.querySelectorAll('.cases__video-item');\r\n\r\n videoReviews?.forEach((videoReview) => {\r\n videoReview?.addEventListener(\"mouseover\", () => videoReview.querySelector(\"video\")?.play());\r\n\r\n videoReview?.addEventListener(\"mouseleave\", () => videoReview.querySelector(\"video\")?.pause());\r\n });\r\n};\r\n\r\nexport default initReviewsSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initTeachersSlider = () => {\r\n const slider = document.querySelector(\".teachers-slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n autoHeight: false,\r\n loop: true,\r\n lazy: true,\r\n\r\n breakpoints: {\r\n 1681: {\r\n spaceBetween: 50,\r\n slidesPerView: 5,\r\n },\r\n 1441: {\r\n spaceBetween: 40,\r\n slidesPerView: 5,\r\n },\r\n 1281: {\r\n spaceBetween: 40,\r\n slidesPerView: 5,\r\n },\r\n 1131: {\r\n spaceBetween: 50,\r\n slidesPerView: 4,\r\n },\r\n 997: {\r\n spaceBetween: 50,\r\n slidesPerView: 4,\r\n },\r\n 768: {\r\n spaceBetween: 30,\r\n slidesPerView: 4,\r\n },\r\n 0: {\r\n spaceBetween: 50,\r\n width: 195,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".teachers-slider__navigation-next\",\r\n prevEl: \".teachers-slider__navigation-prev\",\r\n disabledClass: \"last\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n if (window.innerWidth <= 767) {\r\n destroy();\r\n init();\r\n } else {\r\n destroy();\r\n init();\r\n }\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initTeachersSlider;\r\n","import Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initTeamSlider = () => {\r\n const slider = document.querySelector(\".team-slider\");\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n autoHeight: false,\r\n loop: true,\r\n lazy: true,\r\n\r\n breakpoints: {\r\n 1290: {\r\n spaceBetween: 23,\r\n slidesPerView: 5,\r\n },\r\n 996: {\r\n spaceBetween: 30,\r\n slidesPerView: 4,\r\n },\r\n 768: {\r\n spaceBetween: 30,\r\n slidesPerView: 3,\r\n },\r\n 600: {\r\n spaceBetween: 30,\r\n slidesPerView: 2,\r\n },\r\n 0: {\r\n spaceBetween: 30,\r\n slidesPerView: 1,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".team .slider-navigation__button--next\",\r\n prevEl: \".team .slider-navigation__button--prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \".team .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n};\r\n\r\nexport default initTeamSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper, { Navigation, Pagination } from \"swiper\";\r\nSwiper.use([Navigation, Pagination]);\r\n\r\nconst initVideosSlider = () => {\r\n const slider = document.querySelector(\".videos__slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n autoHeight: false,\r\n loop: true,\r\n spaceBetween: 20,\r\n slidesPerView: 2,\r\n\r\n breakpoints: {\r\n 767: {\r\n slidesPerView: 2,\r\n },\r\n 550: {\r\n slidesPerView: 1.5,\r\n },\r\n 0: {\r\n slidesPerView: 1,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".videos .slider-navigation__button--next\",\r\n prevEl: \".videos .slider-navigation__button--prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \".videos .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 996\r\n ? init() \r\n : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initVideosSlider;\r\n","import Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initWorthSlider = () => {\r\n const slider = document.querySelector(\".worth-slider\");\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n autoHeight: false,\r\n loop: true,\r\n lazy: true,\r\n spaceBetween: 20,\r\n breakpoints: {\r\n 768: {\r\n slidesPerView: 3,\r\n },\r\n 0: {\r\n slidesPerView: 1.5,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".worth .slider-navigation__button--next\",\r\n prevEl: \".worth .slider-navigation__button--prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \".worth .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n};\r\n\r\nexport default initWorthSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper, { Navigation, Pagination } from \"swiper\";\r\nSwiper.use([Navigation, Pagination]);\r\n\r\nconst initProjectSlider = () => {\r\n const slider = document.querySelector(\".projectsPortfolio__slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n autoHeight: false,\r\n spaceBetween: 8,\r\n width: 277,\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 767\r\n ? init() \r\n : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initProjectSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initOfficeSlider = () => {\r\n const slider = document.querySelector(\".office__slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n autoHeight: false,\r\n loop: true,\r\n lazy: true,\r\n spaceBetween: 20,\r\n slidesPerView: 2,\r\n\r\n breakpoints: {\r\n 767: {\r\n slidesPerView: 2,\r\n },\r\n 550: {\r\n slidesPerView: 1.5,\r\n },\r\n 370: {\r\n slidesPerView: 1.25,\r\n },\r\n 0: {\r\n slidesPerView: 1,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".office .slider-navigation__button--next\",\r\n prevEl: \".office .slider-navigation__button--prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \".office .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 996\r\n ? init() \r\n : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initOfficeSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initRequirementSlider = () => {\r\n const slider = document.querySelector(\".requirements__swiper\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n lazy: true,\r\n autoHeight: false,\r\n spaceBetween: 10,\r\n slidesPerView: 1.25,\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 767\r\n ? init() \r\n : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initRequirementSlider;\r\n","import resize from '../resize';\r\nimport Swiper, { Navigation, Pagination, Lazy } from 'swiper';\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initWhoWillSlider = () => {\r\n const slider = document.querySelector('.whoWill__swiper');\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n lazy: true,\r\n autoHeight: false,\r\n spaceBetween: 10,\r\n slidesPerView: 1.25,\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 767 ? init() : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initWhoWillSlider;\r\n","import Swiper, { Navigation, Pagination, Lazy } from 'swiper';\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initAfterSlider = () => {\r\n const slider = document.querySelector('.after__blocks');\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n lazy: true,\r\n autoHeight: false,\r\n\r\n breakpoints: {\r\n 1131: {\r\n spaceBetween: 20,\r\n slidesPerView: 3,\r\n },\r\n 768: {\r\n spaceBetween: 20,\r\n slidesPerView: 2,\r\n },\r\n 0: {\r\n spaceBetween: 10,\r\n slidesPerView: 1.3,\r\n },\r\n },\r\n navigation: {\r\n nextEl: '.after__next',\r\n prevEl: '.after__prev',\r\n disabledClass: 'last',\r\n },\r\n });\r\n};\r\n\r\nexport default initAfterSlider;\r\n","import resize from '../resize';\r\nimport Swiper, { Navigation, Pagination, Scrollbar } from 'swiper';\r\nSwiper.use([Navigation, Pagination, Scrollbar]);\r\n\r\nconst initProgrammSlider = () => {\r\n const slider = document.querySelector('.programNew__swiper'),\r\n body = document.body;\r\n\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n direction: 'vertical',\r\n slidesPerView: 1,\r\n spaceBetween: 8,\r\n height: 50,\r\n freeMode: true,\r\n scrollbar: {\r\n el: '.programNew-scrollbar',\r\n draggable: true,\r\n dragSize: '119',\r\n snapOnRelease: true,\r\n },\r\n mousewheel: true,\r\n\r\n on: {\r\n init: slider.addEventListener('wheel', function (e) {\r\n if (e.deltaY < 0) {\r\n swiper.slidePrev();\r\n } else {\r\n swiper.slideNext();\r\n }\r\n }),\r\n init: slider.addEventListener('mouseover', function (e) {\r\n body.addEventListener('wheel', preventScroll, { passive: false });\r\n }),\r\n init: slider.addEventListener('mouseout', function () {\r\n body.removeEventListener('wheel', preventScroll, {\r\n passive: false,\r\n });\r\n }),\r\n },\r\n });\r\n\r\n function preventScroll(e) {\r\n e.preventDefault();\r\n // e.stopPropagation();\r\n\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n destroy();\r\n init();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initProgrammSlider;\r\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\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 swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import resize from '../resize';\r\nimport Swiper, { Navigation, Pagination } from 'swiper';\r\nSwiper.use([Navigation, Pagination]);\r\n\r\nconst initPaySlider = () => {\r\n const slider = document.querySelector('.pay__cards');\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n autoHeight: false,\r\n spaceBetween: 10,\r\n slidesPerView: 1.1,\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 767 ? init() : destroy();\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initPaySlider;\r\n","import Swiper, { Navigation, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Lazy]);\r\n\r\nconst initTrainingSlider = () => {\r\n const slider = document.querySelector(\".training__slider\");\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n lazy: true,\r\n breakpoints: { \r\n 768: {\r\n spaceBetween: 20,\r\n slidesPerView: 2,\r\n },\r\n 500: {\r\n spaceBetween: 15,\r\n slidesPerView: 1.5,\r\n },\r\n 0: {\r\n spaceBetween: 10,\r\n slidesPerView: 1.2,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".training .slider-navigation__button--next\",\r\n prevEl: \".training .slider-navigation__button--prev\",\r\n },\r\n });\r\n};\r\n\r\nexport default initTrainingSlider;\r\n","import Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initTeamSliderNew = () => {\r\n const slider = document.querySelector(\".team-slider-new\");\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n autoHeight: false,\r\n loop: true,\r\n lazy: true,\r\n\r\n breakpoints: {\r\n 1290: {\r\n spaceBetween: 10,\r\n slidesPerView: 5,\r\n },\r\n 997: {\r\n spaceBetween: 10,\r\n slidesPerView: 4,\r\n },\r\n 768: {\r\n spaceBetween: 10,\r\n slidesPerView: 3,\r\n },\r\n 599: {\r\n spaceBetween: 10,\r\n slidesPerView: 2,\r\n },\r\n 0: {\r\n spaceBetween: 10,\r\n slidesPerView: 1.6,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".team .team-new-next\",\r\n prevEl: \".team .team-new-prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \".team .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n};\r\n\r\nexport default initTeamSliderNew;\r\n","import Swiper, {Navigation, Lazy} from \"swiper\";\r\nSwiper.use([Navigation, Lazy]);\r\n\r\nconst initFeedbackSlider = () => {\r\n const slider = document.querySelector(\"[data-feedback] .cases-slider\");\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n loop: true,\r\n lazy: true,\r\n watchSlidesProgress: true,\r\n\r\n breakpoints: {\r\n 660: {\r\n slidesPerView: 2,\r\n spaceBetween: 20,\r\n },\r\n 0: {\r\n slidesPerView: 1.05,\r\n spaceBetween: 10,\r\n },\r\n },\r\n\r\n navigation: {\r\n nextEl: \"[data-feedback] .slider-navigation__button--next\",\r\n prevEl: \"[data-feedback] .slider-navigation__button--prev\",\r\n },\r\n });\r\n};\r\n\r\nexport default initFeedbackSlider;\r\n","import Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initHrFeedbackSlider = () => {\r\n const slider = document.querySelector(\"[data-hr-feedback] .cases-slider\");\r\n\r\n if (!slider) return;\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n watchOverflow: true,\r\n spaceBetween: 20,\r\n slidesPerView: 3,\r\n lazy: true,\r\n\r\n breakpoints: {\r\n 997: {\r\n slidesPerView: 3,\r\n },\r\n 660: {\r\n slidesPerView: 2,\r\n },\r\n 0: {\r\n spaceBetween: 10,\r\n slidesPerView: 1.2,\r\n },\r\n },\r\n\r\n navigation: {\r\n nextEl: \"[data-hr-feedback] .cases-slider__navigation-next\",\r\n prevEl: \"[data-hr-feedback] .cases-slider__navigation-prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \"[data-hr-feedback] .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n\r\n const videoReviews = slider.querySelectorAll('.cases__video-item');\r\n\r\n videoReviews?.forEach((videoReview) => {\r\n videoReview?.addEventListener(\"mouseover\", () => videoReview.querySelector(\"video\")?.play());\r\n\r\n videoReview?.addEventListener(\"mouseleave\", () => videoReview.querySelector(\"video\")?.pause());\r\n });\r\n};\r\n\r\nexport default initHrFeedbackSlider;\r\n","import Swiper, { Navigation, Pagination, Lazy } from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initCoachesSlider = () => {\r\n const slider = document.querySelector(\".coaches-right__swiper\");\r\n\r\n if (!slider) return;\r\n\r\n slider &&\r\n new Swiper(slider, {\r\n watchOverflow: true,\r\n spaceBetween: 17,\r\n lazy: true,\r\n\r\n breakpoints: {\r\n 500: {\r\n slidesPerView: 2,\r\n },\r\n 370: {\r\n slidesPerView: 1.6,\r\n },\r\n 0: {\r\n slidesPerView: 1,\r\n },\r\n },\r\n\r\n navigation: {\r\n nextEl: \".coaches__next\",\r\n prevEl: \".coaches__prev\",\r\n disabledClass: \"last\",\r\n },\r\n pagination: {\r\n el: \".coaches__pagination\",\r\n bulletActiveClass: \"active\"\r\n },\r\n });\r\n};\r\n\r\nexport default initCoachesSlider;\r\n","import initAboutSlider from \"./init-about-slider\";\r\nimport initBarriersSlider from \"./init-barriers-slider\";\r\nimport initCasesSlider from \"./init-cases-slider\";\r\nimport initLicenseSlider from \"./init-license-slider\";\r\nimport initPlatformSlider from \"./init-platform-slider\";\r\nimport initReviewsSlider from \"./init-reviews-slider\";\r\nimport initTeachersSlider from \"./init-teachers-slider\";\r\nimport initTeamSlider from \"./init-team-slider\";\r\nimport initVideosSlider from \"./init-videos-slider\";\r\nimport initWorthSlider from \"./init-worth-slider\";\r\nimport initProjectSlider from \"./init-projectportfolio-slider\";\r\nimport initOfficeSlider from \"./init-office-slider\";\r\nimport initRequirementSlider from \"./init-requirement-slider\";\r\nimport initWhoWillSlider from \"./init-whowill-slider\";\r\nimport initAfterSlider from \"./init-after-slider\";\r\nimport initProgrammSlider from \"./init-programm-slider\";\r\nimport initPaySlider from \"./init-pay-slider\";\r\nimport initTrainingSlider from \"./init-training-slider\";\r\nimport initTeamSliderNew from \"./init-team-slider-new\";\r\nimport initFeedbackSlider from \"./init-feedback-slider\";\r\nimport initHrFeedbackSlider from \"./init-hr-feedback\";\r\nimport initCoachesSlider from \"./init-coaches-slider\";\r\n\r\n\r\n\r\n\r\nconst sliders = () => {\r\n initTeachersSlider();\r\n initReviewsSlider();\r\n initCasesSlider();\r\n initWorthSlider();\r\n initTeamSlider();\r\n initBarriersSlider();\r\n initAboutSlider();\r\n initPlatformSlider();\r\n initVideosSlider();\r\n initLicenseSlider();\r\n initProjectSlider();\r\n initOfficeSlider();\r\n initRequirementSlider();\r\n initWhoWillSlider();\r\n initAfterSlider();\r\n initProgrammSlider();\r\n initTrainingSlider();\r\n initTeamSliderNew();\r\n initHrFeedbackSlider();\r\n //initPaySlider();\r\n initFeedbackSlider();\r\n initCoachesSlider();\r\n};\r\n\r\nexport default sliders;\r\n","export class Tabs {\r\n constructor() {\r\n this._windowWidth = window.innerWidth;\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this._init();\r\n }\r\n\r\n _init() {\r\n this._initAllTabs();\r\n document.addEventListener('click', this._documentClickHandler);\r\n }\r\n\r\n _resizeObserver() {\r\n return new ResizeObserver((entries) => {\r\n for (let entry of entries) {\r\n if (entry.target.classList.contains('is-active')) {\r\n this._updateTabHeight();\r\n }\r\n }\r\n });\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n if (!target.closest('[data-tabs=\"control\"]')) {\r\n return;\r\n }\r\n evt.preventDefault();\r\n const control = target.closest('[data-tabs=\"control\"]');\r\n this.openTab(control);\r\n }\r\n\r\n _initAllTabs() {\r\n const tabs = document.querySelectorAll('[data-tabs=\"parent\"]');\r\n const forLoadTabs = document.querySelectorAll('[data-tabs=\"element\"].for-load');\r\n tabs.forEach((tab) => {\r\n this._initTab(tab);\r\n });\r\n forLoadTabs.forEach((tab) => {\r\n tab.classList.remove('for-load');\r\n });\r\n }\r\n\r\n _removeAllActiveClasses(tabControlElements, tabElements) {\r\n tabElements.forEach((tab) => {\r\n tab.classList.remove('is-active');\r\n });\r\n\r\n tabControlElements.forEach((element, index) => {\r\n element.classList.remove('is-active');\r\n element.setAttribute('data-index', index);\r\n });\r\n }\r\n\r\n _setTabStartState(tab, dataHeight, tabElements, tabContentElement, tabControlElements, dataDelay) {\r\n const activeIndex = this._returnActiveIndex(tabControlElements);\r\n const blockHeight = dataHeight === 'max' ? this._returnMaxHeight(tabElements) : tabElements[activeIndex].offsetHeight;\r\n this._removeAllActiveClasses(tabControlElements, tabElements);\r\n tab.classList.add('no-transition');\r\n tabControlElements[activeIndex].classList.add('is-active');\r\n tabElements[activeIndex].classList.add('is-active');\r\n if (dataHeight !== 'unset') {\r\n tabContentElement.style.height = `${blockHeight}px`;\r\n }\r\n setTimeout(() => {\r\n if (dataDelay) {\r\n tab.classList.remove('no-transition');\r\n }\r\n }, dataDelay);\r\n }\r\n\r\n _returnActiveIndex(tabControlElements) {\r\n let activeIndex = 0;\r\n let flag = true;\r\n tabControlElements.forEach((control, index) => {\r\n if (control.classList.contains('is-active') && flag) {\r\n activeIndex = index;\r\n flag = false;\r\n }\r\n });\r\n return activeIndex;\r\n }\r\n\r\n _returnMaxHeight(tabElements) {\r\n let height = [];\r\n tabElements.forEach((element) => {\r\n height.push(element.offsetHeight);\r\n });\r\n height.sort((a, b) => a - b);\r\n return height[height.length - 1];\r\n }\r\n\r\n _returnScopeList(nodeList, parent) {\r\n const array = [];\r\n nodeList.forEach((element) => {\r\n const elementParent = element.closest('[data-tabs=\"parent\"]');\r\n if (elementParent === parent) {\r\n array.push(element);\r\n }\r\n });\r\n\r\n return array;\r\n }\r\n\r\n _returnScopeChild(nodeList, parent) {\r\n let currentChild;\r\n nodeList.forEach((element) => {\r\n const elementParent = element.closest('[data-tabs=\"parent\"]');\r\n if (elementParent === parent) {\r\n currentChild = element;\r\n }\r\n });\r\n\r\n return currentChild;\r\n }\r\n\r\n _updateTabHeight() {\r\n const activeElements = document.querySelectorAll('[data-tabs=\"element\"].is-active');\r\n activeElements.forEach((element) => {\r\n let transition = false;\r\n const parent = element.closest('[data-tabs=\"parent\"]');\r\n if (parent.closest('[data-tabs=\"element\"]')) {\r\n transition = true;\r\n }\r\n this._setTabElementHeight(element, transition);\r\n });\r\n }\r\n\r\n _setTabElementHeight(element, transition) {\r\n const parentElement = element.closest('[data-tabs=\"parent\"]');\r\n const dataHeight = parentElement.dataset.height;\r\n const contentElement = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"content\"]'), parentElement);\r\n const tabElements = this._returnScopeList(parentElement.querySelectorAll('[data-tabs=\"element\"]'), parentElement);\r\n\r\n if (!transition) {\r\n parentElement.classList.add('no-transition');\r\n }\r\n\r\n if (dataHeight === 'max') {\r\n contentElement.style.height = `${this._returnMaxHeight(tabElements)}px`;\r\n } else if (dataHeight === 'unset') {\r\n contentElement.style.height = null;\r\n } else {\r\n contentElement.style.height = `${this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"element\"].is-active'), parentElement).offsetHeight}px`;\r\n }\r\n\r\n setTimeout(() => parentElement.classList.remove('no-transition'));\r\n }\r\n\r\n _initTab(tab) {\r\n const dataHeight = tab.dataset.height;\r\n const dataDelay = tab.dataset.delay ? tab.dataset.delay : 0;\r\n const tabContentElement = tab.querySelector('[data-tabs=\"content\"]');\r\n const tabControlElements = this._returnScopeList(tab.querySelectorAll('[data-tabs=\"control\"]'), tab);\r\n const tabElements = this._returnScopeList(tab.querySelectorAll('[data-tabs=\"element\"]'), tab);\r\n this._setTabStartState(tab, dataHeight, tabElements, tabContentElement, tabControlElements, dataDelay);\r\n if (dataHeight !== 'unset') {\r\n tabElements.forEach((element) => {\r\n this._resizeObserver().observe(element);\r\n });\r\n }\r\n setTimeout(() => {\r\n tab.classList.remove('no-transition-global');\r\n });\r\n }\r\n\r\n reInit() {\r\n this._initAllTabs();\r\n }\r\n\r\n openTab(control) {\r\n const currentIndex = control.dataset.index;\r\n const parentElement = control.closest('[data-tabs=\"parent\"]');\r\n\r\n if (control.classList.contains('is-active') || parentElement.classList.contains('no-action')) {\r\n return;\r\n }\r\n\r\n const dataDelay = parentElement.dataset.delay ? parentElement.dataset.delay : 0;\r\n const dataHeight = parentElement.dataset.height;\r\n const contentElement = parentElement.querySelector('[data-tabs=\"content\"]');\r\n const tabElements = this._returnScopeList(parentElement.querySelectorAll('[data-tabs=\"element\"]'), parentElement);\r\n\r\n const activeControl = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"control\"].is-active'), parentElement);\r\n const activeElement = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"element\"].is-active'), parentElement);\r\n const currentHeight = contentElement.offsetHeight;\r\n const newHeight = tabElements[currentIndex].offsetHeight;\r\n\r\n parentElement.classList.add('no-action');\r\n document.activeElement.blur();\r\n\r\n if (activeControl) {\r\n activeControl.classList.remove('is-active');\r\n }\r\n\r\n if (activeElement) {\r\n activeElement.classList.remove('is-active');\r\n }\r\n\r\n if (currentHeight > newHeight) {\r\n setTimeout(() => {\r\n if (dataHeight !== 'max' && dataHeight !== 'unset') {\r\n contentElement.style.height = newHeight + 'px';\r\n }\r\n control.classList.add('is-active');\r\n tabElements[currentIndex].classList.add('is-active');\r\n parentElement.classList.remove('no-action');\r\n }, dataDelay);\r\n } else {\r\n if (dataHeight !== 'max' && dataHeight !== 'unset') {\r\n contentElement.style.height = newHeight + 'px';\r\n }\r\n setTimeout(() => {\r\n control.classList.add('is-active');\r\n tabElements[currentIndex].classList.add('is-active');\r\n parentElement.classList.remove('no-action');\r\n }, dataDelay);\r\n }\r\n }\r\n}\r\n","import {Tabs} from './tabs';\r\n\r\nlet tabs;\r\n\r\nconst initTabs = () => {\r\n tabs = new Tabs();\r\n // Используйте в разработке экспортируемую переменную tabs, window сделан для бэкэнда\r\n window.tabs = tabs;\r\n};\r\n\r\nexport {initTabs, tabs};\r\n","import setTimer from './set-timer';\r\n\r\nexport class ChangeDate {\r\n constructor(options) {\r\n this.start = new Date(options.start);\r\n this.end = new Date(options.end);\r\n this.period = options.period;\r\n this.timer = options.timer;\r\n this.selectorCounter = options.selectorCounter;\r\n this.data = options.data;\r\n this.count = Math.floor((Date.now() - this.start) / 864e5);\r\n this._init();\r\n }\r\n\r\n _init() {\r\n if (this.end == 'Invalid Date') {\r\n let i = this.count;\r\n\r\n while (i >= this.period) {\r\n i -= this.period;\r\n }\r\n\r\n this.start = new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * i);\r\n this.end = new Date(\r\n this.start.getTime() + 24 * 60 * 60 * 1000 * this.period\r\n );\r\n }\r\n\r\n if (this.timer == true) {\r\n setTimer(this.end);\r\n }\r\n }\r\n}\r\n","const setTimer = (date) => {\r\n const timerHours = document.querySelectorAll('[data-timer-hours]');\r\n const timerMinutes = document.querySelectorAll('[data-timer-minutes]');\r\n const timerSeconds = document.querySelectorAll('[data-timer-seconds]');\r\n\r\n if (!timerHours.length) return;\r\n\r\n let distance;\r\n\r\n function timerInterval() {\r\n // При изменении конечной даты в баннере вставляем сюда дату в формате (год, месяц[от 0 до 11], число, часы[от 0 до 23 и вычитаем разницу для Москвы], минуты, секунды)\r\n const utcDate = new Date(\r\n Date.UTC(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate() - 1,\r\n 28,\r\n 59,\r\n 0\r\n )\r\n );\r\n const countDownDate = new Date(utcDate).getTime();\r\n const now = new Date().getTime();\r\n distance = countDownDate - now;\r\n const hours = Math.floor(distance / (1000 * 60 * 60));\r\n const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\r\n const seconds = Math. floor((distance % (1000 * 60)) / (1000));\r\n\r\n function plusZero(num) {\r\n if (num < 10) {\r\n return '0' + num;\r\n } else {\r\n return num;\r\n }\r\n } \r\n \r\n timerHours.forEach(hour => hour.textContent = `${plusZero(hours)}`);\r\n timerMinutes.forEach(minute => minute.textContent = `${plusZero(minutes)}`);\r\n timerSeconds.forEach(second => second.textContent = `${plusZero(seconds)}`);\r\n };\r\n\r\n timerInterval();\r\n const timeInterval = setInterval(timerInterval, 1000);\r\n if (distance < 0) {\r\n clearInterval(timeInterval);\r\n timerHours.textContent = `00`;\r\n timerMinutes.textContent = `00`;\r\n timerSeconds.textContent = `00`;\r\n }\r\n};\r\n\r\nexport default setTimer;\r\n","\"use strict\";\r\n\r\n/* Стили */\r\nimport \"../css/site.scss\";\r\n\r\n/* Скрипты */\r\nimport animateBlock from \"./modules/animateBlock\";\r\nimport bannerCounter from \"./modules/bannerCounter\";\r\nimport form from \"./modules/form\";\r\nimport { initAccordion } from './modules/accordion/init-accordion.js';\r\nimport initFilters from \"./modules/init-filters\";\r\nimport initPartnershipFilters from \"./modules/initPartnershipFilters\";\r\nimport site from \"./modules/site\";\r\nimport sliders from './modules/sliders/sliders';\r\nimport UtmTags from \"./modules/UtmTags\";\r\nimport clickChange from \"./modules/clickChange\";\r\nimport initShowMoreButton from \"./modules/init-show-more-button\";\r\nimport quiz from \"./modules/quiz\";\r\nimport { initTabs } from \"./modules/tabs/init-tabs\";\r\nimport noMoreFear from \"./modules/noMoreFear.js\";\r\nimport initChangeDate from \"./modules/date/index.js\";\r\nimport initWidjet from \"./modules/init-widget.js\";\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", () => {\r\n bannerCounter();\r\n UtmTags();\r\n initAccordion();\r\n animateBlock(\".videos__slider-wrapper\");\r\n animateBlock(\".office__slides\");\r\n site();\r\n form();\r\n sliders();\r\n initFilters();\r\n initPartnershipFilters();\r\n noMoreFear();\r\n clickChange('.programNew__point','.programNew__block');\r\n if (window.innerWidth <= 767){\r\n initShowMoreButton('[data-teachers]',0);\r\n }\r\n if (window.innerWidth > 767){\r\n initChangeDate();\r\n }\r\n quiz();\r\n initTabs();\r\n initWidjet();\r\n});\r\n","const quiz = () => {\r\n const btnsPrevSlide = document.querySelectorAll(\r\n \".quiz__slide-switches__back\"\r\n ),\r\n btnsNextSlide = document.querySelectorAll(\".quiz__slide-btn\"),\r\n slides = document.querySelectorAll(\".quiz__slide\"),\r\n forms = document.querySelectorAll(\".quiz__slide-form\");\r\n\r\n if (btnsPrevSlide.length < 1) {\r\n return;\r\n } \r\n\r\n /* Переключение через кнопку \"Назад\" */\r\n (function PrevSlide() {\r\n for (let i = 0; i < btnsPrevSlide.length; i++) {\r\n btnsPrevSlide[i].addEventListener(\"click\", () => {\r\n slides[i + 1].style.display = \"none\";\r\n slides[i].style.display = \"flex\";\r\n });\r\n }\r\n })();\r\n\r\n /* Переключение через кнопку \"Далее\" */\r\n (function nextSlide() {\r\n forms.forEach((form, i) => {\r\n let radios = form.querySelectorAll(\"input[type=radio]\");\r\n\r\n if (radios.length > 0) {\r\n radios.forEach((radio) => {\r\n if (radio != document.querySelector(\"#PurposeTraining-6\") && radio != document.querySelector(\"#FoundUs-5\")) {\r\n radio.addEventListener(\"change\", () => {\r\n btnsNextSlide[i + 1].disabled = false;\r\n \r\n setTimeout(() => {\r\n slides[i + 1].style.display = \"none\";\r\n slides[i + 2].style.display = \"flex\";\r\n }, 500);\r\n });\r\n } else {\r\n radio.addEventListener(\"change\", () => {\r\n btnsNextSlide[i + 1].disabled = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n for (let i = 0; i < btnsNextSlide.length; i++) {\r\n btnsNextSlide[i].addEventListener(\"click\", () => {\r\n if (i == btnsNextSlide.length - 1) return;\r\n slides[i].style.display = \"none\";\r\n slides[i + 1].style.display = \"flex\";\r\n });\r\n }\r\n })();\r\n};\r\n\r\nexport default quiz;\r\n","const clickChange = (button,block) => {\r\n\r\n let chips = document.querySelectorAll(button),\r\n blocks = document.querySelectorAll(block);\r\n\r\n\r\n [...chips][0]?.classList.add('active');\r\n [...blocks][0]?.classList.add('active-block');\r\n \r\n [...chips].forEach((item, idx) => {\r\n item.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n \r\n [...chips].map((it) => {\r\n it.classList.remove('active');\r\n });\r\n item.classList.add('active');\r\n\r\n [...blocks].map((it) => {\r\n it.classList.remove('active-block');\r\n [...blocks][idx].classList.add('active-block');\r\n });\r\n });\r\n });\r\n}\r\n\r\nexport default clickChange;","const initFilters = () => {\r\n const filters = document.querySelectorAll('[data-filter]');\r\n const items = document.querySelectorAll('[data-filter-item]');\r\n \r\n let active = document.querySelector('.active[data-filter]');\r\n\r\n filters.length && items.length && filters.forEach(filter => {\r\n filter.addEventListener('click', () => {\r\n let direction = filter.getAttribute('data-direction');\r\n\r\n filter.classList.add('active');\r\n active?.classList.remove('active');\r\n active = filter;\r\n\r\n items.forEach((item) => {\r\n switch (direction) {\r\n case 'all':\r\n item.style.display = null;\r\n break;\r\n case item.getAttribute('data-direction'):\r\n item.style.display = null;\r\n item.style.opacity = '1';\r\n break;\r\n default:\r\n item.style.display = 'none';\r\n break;\r\n };\r\n });\r\n })\r\n })\r\n};\r\n \r\nexport default initFilters;\r\n","const UtmTags = () => {\r\n // Функция добавления UTM меток в url сайта\r\n const updateQueryStringParam = function (value) {\r\n let baseUrl = [\r\n location.protocol,\r\n \"//\",\r\n location.host,\r\n location.pathname,\r\n ].join(\"\"),\r\n params = \"?\" + value;\r\n\r\n params = params == \"?\" ? \"\" : params;\r\n window.history.replaceState({}, \"\", baseUrl + params);\r\n };\r\n \r\n const url = document.location.href,\r\n paramsStartIndex = url.indexOf(\"?\"),\r\n hostname = window.location.hostname;\r\n\r\n if (paramsStartIndex > -1) {\r\n // Добавление UTM меток в session storage\r\n sessionStorage.setItem(\r\n \"utm_tags\",\r\n url.slice(paramsStartIndex + 1, url.length)\r\n );\r\n sessionStorage.setItem(\r\n \"hostname\",\r\n hostname\r\n );\r\n } else {\r\n // При переходе по страницам если сохранены метки в session\r\n // storage, то выполняем функцию по их добавлению в url \r\n if (sessionStorage.getItem(\"utm_tags\") && hostname == sessionStorage.getItem(\"hostname\")) {\r\n updateQueryStringParam(sessionStorage.getItem(\"utm_tags\"));\r\n }\r\n }\r\n};\r\n\r\nexport default UtmTags;\r\n","const bannerCounter = () => {\r\n const counter = document.querySelector('.banner-counter');\r\n\r\n if (!counter) return;\r\n\r\n function QuantityPlaces(value, startDate) {\r\n const stepDay = new Date().getDate() - startDate;\r\n\r\n if (stepDay <= 0) {\r\n return value;\r\n } else {\r\n return value - stepDay * 2;\r\n }\r\n }\r\n\r\n counter.innerHTML = QuantityPlaces(16, 29);\r\n}\r\n\r\nexport default bannerCounter;","import {Accordion} from './accordion';\r\nlet accordion;\r\n\r\nconst initAccordion = () => {\r\n accordion = new Accordion();\r\n};\r\n\r\nexport {initAccordion, accordion};\r\n","import getPageName from \"./getPageName\";\r\n\r\nconst site = () => {\r\n changeDate(\"February, 16\");\r\n seeAllFaq();\r\n seeAllProgramm();\r\n reviewsContent();\r\n headerMenu();\r\n advCaceProgram();\r\n\r\n // Collapse blocks\r\n collapseList(\r\n \".barriers-list\",\r\n \".barriers-list__item-head\",\r\n \".barriers-list__item-collapse\",\r\n \".barriers-list__item-icon\"\r\n );\r\n collapseList(\r\n \".faq__blocks\",\r\n \".faqBlock__top\",\r\n \".faqBlock__collapse\",\r\n \".faqBlock__icon\"\r\n );\r\n\r\n if (window.innerWidth <= 800) {\r\n collapseList(\r\n \".footer-item__list--1\",\r\n \".footer-item__list-head\",\r\n \".footer-item__list-collapse\",\r\n \".footer-item__list-icon\"\r\n );\r\n collapseList(\r\n \".footer-item__list--2\",\r\n \".footer-item__list-head\",\r\n \".footer-item__list-collapse\",\r\n \".footer-item__list-icon\"\r\n );\r\n collapseList(\r\n \".program__blocks\",\r\n \".programBlock__top\",\r\n \".programBlock__right\",\r\n \".programBlock__icon\"\r\n );\r\n }\r\n\r\n if (window.innerWidth < 768) {\r\n collapseList(\r\n \".careerNew__blocks\",\r\n \".careerNew-block__button\",\r\n \".careerNew-block__p\",\r\n \".careerNew-block__button-icon\"\r\n );\r\n collapseList(\r\n \".requirements__blocks\",\r\n \".requirements__button\",\r\n \".requirements-block__p\",\r\n \".requirements__button-icon\"\r\n );\r\n }\r\n\r\n // Смена дат\r\n function changeDate(date) {\r\n const dates = document.querySelectorAll(\".change-date\");\r\n\r\n if (dates.length > 0) {\r\n dates.forEach((item) => {\r\n item.innerHTML = date;\r\n });\r\n }\r\n }\r\n\r\n //Кнопки смотреть все\r\n function seeAllFaq() {\r\n let btn_viewAll = document.querySelector(\".faqBlock__button\");\r\n let blocks = document.querySelectorAll(\".faq__block\");\r\n\r\n blocks.forEach((item, index) => {\r\n blocks[index].style.height = 0;\r\n blocks[index].style.border = \"none\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n blocks[i].removeAttribute(\"style\");\r\n }\r\n\r\n btn_viewAll?.addEventListener(\"click\", function () {\r\n if (blocks[index].hasAttribute(\"style\")) {\r\n blocks[index].removeAttribute(\"style\");\r\n\r\n btn_viewAll.textContent = \"Collapse all\";\r\n\r\n btn_viewAll.classList.add(\"active\");\r\n } else {\r\n blocks[index].style.display = \"none\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n blocks[i].removeAttribute(\"style\");\r\n }\r\n\r\n blocks[0].scrollIntoView();\r\n\r\n btn_viewAll.textContent = \"Show all questions\";\r\n\r\n btn_viewAll.classList.remove(\"active\");\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Плавный скролл\r\n function setNavigation() {\r\n $(\"a[href^='#']:not(.employment-formats__btn):not([rel='modal:open'])\").on(\r\n \"click\",\r\n function (e) {\r\n e.preventDefault();\r\n $(\"html,body\")\r\n .stop()\r\n .animate(\r\n {\r\n scrollTop: $(`#${this.href.split(\"#\").pop()}`).offset().top,\r\n },\r\n 700\r\n );\r\n }\r\n );\r\n }\r\n\r\n $(function () {\r\n setNavigation();\r\n });\r\n\r\n // Добавление контента в блок \"Отзывы наших выпускников\"\r\n function reviewsContent() {\r\n const pageName = getPageName(),\r\n reviewsBlocks = document.querySelector(\".reviews__blocks\");\r\n\r\n function parseReviews() {\r\n $.ajax({\r\n type: \"GET\",\r\n url: \"/files/reviews.json\",\r\n }).then(function (blocks) {\r\n blocks.forEach(function (el) {\r\n if (reviewsBlocks) {\r\n if (el.url == pageName) {\r\n createReviewsBlock(el.data);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n function createReviewsBlock(data) {\r\n let content = '';\r\n\r\n data.forEach((item) => {\r\n content += `\r\n
\r\n

${item.name}

\r\n

${item.content}

\r\n

${item.program}\r\n

\r\n `;\r\n });\r\n\r\n reviewsBlocks.innerHTML = content;\r\n\r\n setTimeout(() => {\r\n setSwiper(\".reviews-swiper\", \"reviews\");\r\n }, 50);\r\n }\r\n\r\n parseReviews();\r\n }\r\n\r\n // Collapse\r\n function collapseList(wrapper, btns, collapse, icon) {\r\n let wrap = document.querySelector(wrapper);\r\n\r\n if (wrap) {\r\n let buttons = wrap.querySelectorAll(btns),\r\n blockCollapseHeights = [],\r\n collapseBlock = wrap?.querySelectorAll(collapse);\r\n\r\n buttons.forEach((item, i) => {\r\n if (collapseBlock[i]) {\r\n blockCollapseHeights.push(collapseBlock[i].clientHeight);\r\n collapseBlock[i].style.height = 0;\r\n\r\n item.addEventListener(\"click\", (e) => {\r\n e.stopImmediatePropagation();\r\n\r\n if (collapseBlock[i].style.height == 0 + \"px\") {\r\n collapseBlock[i].style.height = blockCollapseHeights[i] + \"px\";\r\n item.querySelector(icon).classList.add(\"rotate\");\r\n } else {\r\n collapseBlock[i].style.height = 0;\r\n item.querySelector(icon).classList.remove(\"rotate\");\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n //Кнопки смотреть все\r\n function seeAllProgramm() {\r\n let btn_viewAll = document.querySelector(\".program__button\"),\r\n blocks = document.querySelectorAll(\".program__block\"),\r\n heightToThirdEl =\r\n blocks[0]\r\n ?.querySelector(\".programBlock__list\")\r\n .childNodes[5]?.getBoundingClientRect().bottom -\r\n blocks[0]?.querySelector(\".programBlock__list\").getBoundingClientRect()\r\n .top;\r\n let quantity = blocks.length;\r\n\r\n if (!btn_viewAll) return;\r\n blocks.forEach((item, index) => {\r\n blocks[index].style.height = \"0\";\r\n\r\n for (var i = 0; i < 2; i++) {\r\n blocks[i].removeAttribute(\"style\");\r\n\r\n if (window.innerWidth > 767) {\r\n blocks[i].style.height = heightToThirdEl + 36 + \"px\";\r\n }\r\n }\r\n\r\n if (index >= 2 && index <= quantity) {\r\n item.style.borderTop = \"none\";\r\n }\r\n\r\n btn_viewAll.addEventListener(\"click\", function () {\r\n if (blocks[index].hasAttribute(\"style\")) {\r\n blocks[index].removeAttribute(\"style\");\r\n\r\n btn_viewAll.textContent = \"Collapse all\";\r\n\r\n btn_viewAll.classList.add(\"active\");\r\n } else {\r\n blocks[index].style.display = \"none\";\r\n for (var i = 0; i < 2; i++) {\r\n blocks[i].removeAttribute(\"style\");\r\n\r\n if (window.innerWidth >= 767) {\r\n blocks[i].style.height = heightToThirdEl + 36 + \"px\";\r\n }\r\n }\r\n\r\n if (window.innerWidth > 767) {\r\n blocks[0].style.borderBottom = \"1px solid #1f1f1f\";\r\n }\r\n\r\n blocks[0].scrollIntoView({\r\n behavior: \"smooth\",\r\n });\r\n\r\n btn_viewAll.textContent = \"Show the program\";\r\n\r\n btn_viewAll.classList.remove(\"active\");\r\n }\r\n });\r\n });\r\n }\r\n\r\n //Хэдэр-меню\r\n function headerMenu() {\r\n let button_1 = document.querySelector(\".header__item_top\"),\r\n button_2 = document.querySelector(\".header-hamburger\"),\r\n body = document.querySelector(\"body\"),\r\n home = document.querySelector(\".home\"),\r\n catalog = document.querySelector(\".catalog\"),\r\n menu = document.querySelector(\".popup-header\");\r\n\r\n button_1?.addEventListener(\"mouseover\", () => {\r\n menu.classList.add(\"popup-header-active\");\r\n document.querySelector(\".header__item_top-icon\").classList.add(\"active\");\r\n\r\n home?.addEventListener(\"mouseover\", () => {\r\n menu.classList.remove(\"popup-header-active\");\r\n document\r\n .querySelector(\".header__item_top-icon\")\r\n .classList.remove(\"active\");\r\n });\r\n\r\n catalog?.addEventListener(\"mouseover\", () => {\r\n menu.classList.remove(\"popup-header-active\");\r\n document\r\n .querySelector(\".header__item_top-icon\")\r\n .classList.remove(\"active\");\r\n });\r\n });\r\n\r\n button_2?.addEventListener(\"click\", () => {\r\n if (button_2.classList.contains(\"header-hamburger-active\")) {\r\n button_2.classList.remove(\"header-hamburger-active\");\r\n menu.classList.remove(\"popup-header-active\");\r\n body.style.overflow = \"visible\";\r\n } else {\r\n menu.classList.add(\"popup-header-active\");\r\n button_2.classList.add(\"header-hamburger-active\");\r\n body.style.overflow = \"hidden\";\r\n }\r\n });\r\n\r\n function clickChoose() {\r\n let buttonsClick = Array.from(\r\n document.querySelectorAll(\".popup-header__list\")\r\n ),\r\n menuSections = Array.from(\r\n document.querySelectorAll(\".popup-header__program\")\r\n ),\r\n targetMenu;\r\n\r\n buttonsClick.forEach((item) => {\r\n item.addEventListener(\"mouseover\", function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n buttonsClick.forEach((i) => {\r\n i.classList.remove(\"active-list\");\r\n });\r\n item.classList.toggle(\"active-list\");\r\n\r\n menuSections.forEach((it) => {\r\n it.classList.remove(\"program-active\");\r\n });\r\n\r\n targetMenu = menuSections[buttonsClick.indexOf(item)];\r\n targetMenu.classList.toggle(\"program-active\");\r\n });\r\n });\r\n }\r\n clickChoose();\r\n }\r\n\r\n /* Реализация показа/скрытия баннера */\r\n (() => {\r\n const banner = document.querySelector(\"[data-banner]\");\r\n if (!banner) return;\r\n const header = document.querySelector(\".header\");\r\n const form = document.querySelector(\"#form\");\r\n\r\n const trackScroll = () => {\r\n const scrolled = window.pageYOffset;\r\n if (scrolled < header.offsetTop + header.clientHeight) {\r\n banner.style.transform = \"translateY(207%)\";\r\n } else if (\r\n scrolled + document.documentElement.clientHeight >\r\n form.offsetTop\r\n ) {\r\n banner.style.transform = \"translateY(207%)\";\r\n } else if (scrolled < form.offsetTop) {\r\n banner.style.transform = \"translateY(0)\";\r\n }\r\n };\r\n window.addEventListener(\"scroll\", trackScroll);\r\n })();\r\n\r\n // Интеграция Adv.Cace для программ\r\n function advCaceProgram() {\r\n let targetUrl = location.href.split(\"/\");\r\n\r\n //Включаем на странице программ и передаем имя программы\r\n if (!targetUrl.includes(\"program\")) {\r\n return;\r\n }\r\n\r\n try {\r\n const programName =\r\n document?.querySelector(\"h1\").childNodes[0].textContent;\r\n\r\n window.advcake_data = window.advcake_data || [];\r\n window.advcake_data.push({\r\n pageType: 2,\r\n user: {\r\n email: \"\",\r\n },\r\n currentLead: {\r\n leadid: \"\",\r\n name: programName,\r\n },\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n /* Цели метрик для JivoSite */\r\n\r\n // Пользователь отправил сообщение в чат\r\n function jivo_onClientStartChat() {\r\n ym(92965313, \"reachGoal\", \"Jivo_Client_initiate_chat\");\r\n }\r\n\r\n // Оператор инициировал диалог с посетителем\r\n function jivo_onAccept() {\r\n ym(92965313, \"reachGoal\", \"Jivo_Proactive_invitation_accepted\");\r\n }\r\n\r\n // Пользователь отправил контактные данные в чате\r\n function jivo_onIntroduction() {\r\n ym(92965313, \"reachGoal\", \"Jivo_Offline_message_sent\");\r\n }\r\n};\r\n\r\nexport default site;\r\n","const initPartnershipFilters = () => { \r\n const availableDirections = document.querySelectorAll(\"[data-available-direction]\");\r\n const filters = document.querySelectorAll(\".available [data-filter]\");\r\n \r\n availableDirections.forEach((card) => {\r\n card.addEventListener(\"click\", () => Array.from(filters).find((filter) => filter.dataset.direction === card.dataset.availableDirection).click())\r\n })\r\n};\r\n \r\nexport default initPartnershipFilters;\r\n","const noMoreFear = () => {\r\n const block = document.querySelector('.noMoreFear');\r\n\r\n if (!block) return;\r\n\r\n const buttons = block.querySelectorAll('.noMoreFear__title'),\r\n cards = block.querySelectorAll('.noMoreFear__item'),\r\n texts = block.querySelectorAll('.noMoreFear__text-block');\r\n \r\n let activeCard = 0;\r\n texts[activeCard].parentNode.style.height = texts[activeCard].offsetHeight + 10 + 'px';\r\n \r\n buttons.forEach((button, i) => {\r\n button.addEventListener('click', () => { \r\n cards[activeCard].classList.remove('active');\r\n texts[activeCard].parentNode.style.height = 0;\r\n \r\n texts[i].parentNode.style.height = texts[i].offsetHeight + 10 + 'px';\r\n \r\n activeCard = i;\r\n\r\n if (!button.closest(\".noMoreFear__item\").classList.contains(\"active\")) {\r\n button.closest(\".noMoreFear__item\").classList.add(\"active\");\r\n }\r\n }) \r\n })\r\n}\r\n\r\nexport default noMoreFear;","// Функция для инициализации кнопки Показать ещё.\r\n// При вызове аргументами передаются селектор блока, в котором нужен данный функционал, а также количество элементов, видимых изначально. Например, initShowMoreButton('.program', 4);\r\n// При вёрстке кнопке добавить класс .show-button для стилизации, если нужны специфические стили для кнопки, то стилизовать каскадом от родителя. Например, \r\n// .program {\r\n// .show-button {\r\n// ... \r\n// } \r\n// }\r\n// Также кнопке ОБЯЗАТЕЛЬНО добавить атрибут data-show-button\r\n// Также ОБЯЗАТЕЛЬНО добавить атрибут data-collapse-item всем элементам из раскрывающегося списка, даже если они видимы изначально\r\n\r\nconst initShowMoreButton = (container, visibleItems) => {\r\n const itemsContainer = document.querySelector(container);\r\n if (!itemsContainer) return;\r\n const showMoreButton = itemsContainer.querySelector(\"[data-show-button]\");\r\n let items = Array.from(itemsContainer.querySelectorAll(\"[data-collapse-item]\")).filter((item) => item.style.display !== \"none\"),\r\n hiddenItems = items.slice(visibleItems);\r\n\r\n // Обнуление перед переинициализацией\r\n const resetParameters = () => {\r\n items.forEach(item => {\r\n item.style.display = null;\r\n item.style.opacity = 1;\r\n });\r\n \r\n if (showMoreButton) {\r\n showMoreButton.classList.remove(\"hidden\");\r\n showMoreButton.textContent = \"View all\";\r\n }\r\n \r\n if (items.length <= visibleItems) {\r\n showMoreButton?.classList.add(\"hidden\");\r\n return;\r\n };\r\n \r\n hiddenItems.forEach((item) => {\r\n item.style.display = 'none';\r\n item.style.opacity = 0;\r\n });\r\n }\r\n\r\n resetParameters();\r\n\r\n const onShowMoreButtonClick = () => {\r\n hiddenItems.forEach((item) => {\r\n item.style.display = null;\r\n setTimeout(() => {\r\n item.style.opacity = 1;\r\n });\r\n });\r\n showMoreButton.textContent = \"Collapse all\";\r\n showMoreButton.removeEventListener(\"click\", onShowMoreButtonClick);\r\n showMoreButton.addEventListener(\"click\", onCollapseButtonClick);\r\n }\r\n\r\n const onCollapseButtonClick = () => {\r\n hiddenItems.forEach((item) => {\r\n setTimeout(() => {\r\n item.style.display = 'none';\r\n }, 250);\r\n item.style.opacity = 0;\r\n });\r\n showMoreButton.textContent = \"View all\";\r\n showMoreButton.removeEventListener(\"click\", onCollapseButtonClick);\r\n showMoreButton.addEventListener(\"click\", onShowMoreButtonClick);\r\n }\r\n\r\n showMoreButton?.addEventListener(\"click\", onShowMoreButtonClick);\r\n\r\n document.addEventListener('click', (evt) => {\r\n if (evt.target.closest('[data-filter]')) {\r\n showMoreButton?.removeEventListener(\"click\", onCollapseButtonClick);\r\n items = Array.from(itemsContainer.querySelectorAll(\"[data-collapse-item]\")).filter((item) => item.style.display !== \"none\");\r\n hiddenItems = items.slice(visibleItems);\r\n resetParameters();\r\n showMoreButton?.addEventListener(\"click\", onShowMoreButtonClick);\r\n } \r\n })\r\n};\r\n\r\nexport default initShowMoreButton;\r\n","import { ChangeDate } from './ChangeDate';\r\n\r\nconst initChangeDate = () => { \r\n new ChangeDate({\r\n timer: true,\r\n start: \"2024-11-12\",\r\n end: '',\r\n period: 2\r\n });\r\n};\r\n\r\nexport default initChangeDate;\r\n","const initWidjet = () => {\r\n const widget = document.querySelector(\"[data-widget]\");\r\n if (!widget) return;\r\n \r\n const trackScroll = () => {\r\n window.scrollY > 500\r\n ? widget.style.opacity = \"1\"\r\n : widget.style.opacity = \"0\";\r\n };\r\n \r\n trackScroll();\r\n window.addEventListener(\"scroll\", trackScroll);\r\n};\r\n\r\nexport default initWidjet;\r\n"],"names":["VanillaToast","this","queue","TaskQueue","cancellationTokens","element","constants","default","className","fadeDuration","fadeInterval","duration","closeButton","immediately","success","info","warning","error","item","prototype","initElement","selector","container","document","createElement","toastBox","text","setAttribute","innerHTML","appendChild","getElementById","seletor","containter","body","_setStyle","cancel","length","cancelAll","i","show","option","callback","self","cancellationToken","CancellationToken","enqueue","next","fadeStep","Math","min","style","display","s","opacity","timeoutId","timeoutCallback","removeEventListener","cancelHandler","_fade","_hide","shift","dispose","clearTimeout","addEventListener","isCancellationRequested","setTimeout","register","push","preset","propertyName","undefined","step","interval","fade","Number","cancelCallbacks","copiedCallbacks","slice","isExecuting","dequeueAndExecute","job","module","exports","vanillaToast","call","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","hasOwnProperty","SLIDES","wrapper","querySelector","window","innerWidth","items","Array","from","children","forEach","gsap","set","scale","setScale","scrollY","roundedScrollY","e","animate","requestAnimationFrame","transform","concat","rect","getBoundingClientRect","viewportHeight","innerHeight","itemCenter","top","height","progress","abs","pow","max","to","segments","URL","location","href","pathname","split","pop","toLocaleLowerCase","citizenRequest","crmRequest","SCORES","Age","Employment","EnglishLevel","Intermediate","AvailabilityDevices","LevelOfEducation","Phone","options","_classCallCheck","$el","id","iti","value","_this","intlTelInput","separateDialCode","initialCountry","geoIpLookup","fetch","then","res","json","data","country_code","getPageName","catch","utilsScript","setIntervalStartPlaceholder","setInterval","placeholderInputPhone","placeholder","maskNumber","replace","$","mask","autoclear","clearInterval","phone","setupMaskPhone","phoneSpecial","validators","requried","message","email","test","status","showError","field","errorContainer","textContent","classList","add","validate","form","result","querySelectorAll","formField","control","isValidNumber","invalidField","scrollIntoView","behavior","block","emailInputs","deleteErrors","el","remove","setForm","sendFormEng","promocode","addMaxLengthPromocode","controls","changed","one","fbq","onFormFilling","quizForm","slides","submit","forms","target","closest","preventDefault","FormData","formElement","reset","input","setCustomValidity","firstFormData","modalData","sendBtn","_objectSpread","getNumber","reverse","join","disabled","url","paramsStartIndex","indexOf","map","utmString","utmMark","toUpperCase","ym_uid","roistatCookie","getCookie","Program","FirstName","Email","Package","Promocode","Place","method","headers","JSON","stringify","response","OdinId","program","requestId","odinId","programName","advcake_data","pageType","user","type","leadInfo","leadid","name","totalPrice","coupon","marketing_cat","ym","lintrk","conversion_id","openSuccessModalEng","gtag","quizSlides","documentDownLoad","openSuccessModalPartnership","console","log","amountScores","requestUrl","ajax","contentType","formSubmitBizavtomat","formSubmtNewLink","formSubmitCommerce","err","assign","path","filename","download","click","removeChild","cname","ca","decodeURIComponent","cookie","c","charAt","substring","select2","language","noResults","escapeMarkup","markup","val","trigger","modal","additionalClass","append","rel","successModal","date","Date","getDay","getHours","onOverlayClick","evt","Programs","PackageField","onchange","selectedIndex","getAttribute","parentElement","after","addFieldPackage","PurposeTraining","PurposeTrainingRadios","PurposeTrainingText","FoundUs","FoundUsRadios","FoundUsText","parentNode","radio","Accordion","_openHeight","_windowWidth","_documentClickHandler","bind","_windowResizeHandler","_init","fullUpdate","parent","dataset","destroy","matchMedia","matches","contains","closeAccordion","openAccordion","updateAccordionsHeight","arguments","content","transition","maxHeight","scrollHeight","closeElement","openElement","_this2","contentElement","hasAttribute","closeAllAccordion","func","currentInnerWidth","isObject","constructor","extend","src","keys","ssrDocument","activeElement","blur","nodeName","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","hash","host","hostname","origin","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","cancelAnimationFrame","getWindow","win","Dom7","super","proto","__proto__","makeReactive","arrayFlat","arr","isArray","arrayFilter","filter","context","html","trim","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","shortcut","args","on","Methods","addClass","classes","classNames","removeClass","hasClass","toggleClass","toggle","attr","attrs","attrName","removeAttr","removeAttribute","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","clientTop","clientLeft","scrollTop","scrollLeft","scrollX","left","css","props","each","index","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","els","newChild","tempDiv","firstChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","find","foundElements","found","methodName","writable","nextTick","delay","now","toString","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","getTime","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","priority","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","updateSize","width","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","slideTo","internal","initial","Error","indexAsNumber","isFinite","animating","preventInteractionOnTransition","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","isH","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","getTranslate","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","dummyEventAttached","dummyEventListener","touchEvents","device","domMethod","swiperMethod","start","passiveListeners","passive","move","end","updateOnWindowResize","ios","android","attachEvents","detachEvents","isGridEnabled","addClasses","suffixes","entries","prefix","resultClasses","prepareClasses","fill","containerModifierClass","emitContainerClasses","removeClasses","init","resizeObserver","createElements","virtualTranslate","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","update","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","overrides","platform","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getDevice","isSafari","toLowerCase","isWebView","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","observer","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","position","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scaleX","scaleY","render","paginationHTML","numberOfBullets","Lazy","lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$slideEl","$images","$imageEl","background","$pictureEl","sourceEl","$source","slideOriginalIndex","load","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","swiperOffset","inView","swiperCoord","sticky","slider","resizeSwiper","resize","dragStartPos","dragSize","trackSize","divider","timeout","dragTimeout","scrollbar","$dragEl","newSize","newPos","hide","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","returnValue","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","initTeachersSlider","videoReviews","videoReview","_videoReview$querySel","play","_videoReview$querySel2","pause","initReviewsSlider","initWorthSlider","initTeamSlider","initBarriersSlider","initAboutSlider","initPlatformSlider","initVideosSlider","initLicenseSlider","initProjectSlider","initOfficeSlider","initRequirementSlider","initWhoWillSlider","initAfterSlider","preventScroll","mousewheel","_defineProperty","deltaY","initProgrammSlider","initTrainingSlider","initTeamSliderNew","initHrFeedbackSlider","initFeedbackSlider","initCoachesSlider","tabs","Tabs","_initAllTabs","_step","_iterator","_createForOfIteratorHelper","done","_updateTabHeight","f","openTab","forLoadTabs","tab","_initTab","tabControlElements","tabElements","dataHeight","tabContentElement","dataDelay","_returnActiveIndex","blockHeight","_returnMaxHeight","_removeAllActiveClasses","flag","nodeList","array","currentChild","_this3","_setTabElementHeight","_returnScopeChild","_returnScopeList","_this4","_setTabStartState","_resizeObserver","currentIndex","activeControl","ChangeDate","period","timer","selectorCounter","count","timerHours","timerMinutes","timerSeconds","distance","timerInterval","timeInterval","utcDate","UTC","getFullYear","getMonth","getDate","countDownDate","hours","minutes","seconds","plusZero","num","hour","minute","second","setTimer","btnsPrevSlide","btnsNextSlide","_2","chips","blocks","filters","active","baseUrl","stepDay","counter","sessionStorage","setItem","getItem","animateBlock","btn_viewAll","pageName","reviewsBlocks","button_1","button_2","home","catalog","menu","buttonsClick","menuSections","dates","collapseList","btns","collapse","icon","wrap","buttons","blockCollapseHeights","collapseBlock","border","_blocks$","_blocks$2","heightToThirdEl","bottom","quantity","borderTop","borderBottom","seeAllProgramm","img","setSwiper","it","includes","_document","currentLead","advCaceProgram","stop","banner","header","scrolled","pageYOffset","site","sliders","_active","availableDirections","card","availableDirection","initPartnershipFilters","cards","texts","activeCard","noMoreFear","_toConsumableArray","idx","visibleItems","itemsContainer","showMoreButton","hiddenItems","resetParameters","onShowMoreButtonClick","onCollapseButtonClick","initShowMoreButton","_loop","radios","_loop2","widget","trackScroll","initWidjet"],"sourceRoot":""}