{"version":3,"file":"main.a6642ac228d59101b71b.js","mappings":"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","sources":["webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/helpers/isElementExist.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.range.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.file.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.common.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.select.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.textarea.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/medicationChoice.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/services/storage.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.scrollable.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/services/coupon.js","webpack://utitreatment-wp-theme/external var \"jQuery\"","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.radio.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.number.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/libs/jquery.star-rating-svg.min.js","webpack://utitreatment-wp-theme/./node_modules/slidetoggle/dist/utils/Numbers.js","webpack://utitreatment-wp-theme/./node_modules/slidetoggle/dist/utils/Element.js","webpack://utitreatment-wp-theme/./node_modules/slidetoggle/dist/utils/Event.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/headerMenu.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/helpers/debounce.js","webpack://utitreatment-wp-theme/./node_modules/slidetoggle/dist/utils/Animate.js","webpack://utitreatment-wp-theme/./node_modules/slidetoggle/dist/common/hide.js","webpack://utitreatment-wp-theme/./node_modules/slidetoggle/dist/common/show.js","webpack://utitreatment-wp-theme/./node_modules/slidetoggle/dist/common/toggle.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/accordion.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/videoPlayer.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/toc.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/tabs.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/scrollToElement.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/loginForm.js","webpack://utitreatment-wp-theme/./node_modules/ssr-window/ssr-window.esm.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/utils.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/get-support.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/get-device.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/get-browser.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events-emitter.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/process-lazy-preloader.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateSize.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateSlides.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateProgress.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/transition/transitionEmit.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/slide/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/slide/slideTo.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/slide/slideToLoop.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/slide/slideNext.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/slide/slidePrev.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/slide/slideReset.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/slide/slideToClosest.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events/onTouchStart.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events/onTouchMove.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events/onTouchEnd.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events/onResize.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events/onClick.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events/onScroll.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events/onLoad.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/events/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/defaults.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/moduleExtendParams.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/core.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/translate/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/translate/getTranslate.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/translate/setTranslate.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/translate/minTranslate.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/translate/maxTranslate.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/translate/translateTo.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/transition/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/transition/setTransition.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/transition/transitionStart.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/transition/transitionEnd.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/loop/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/loop/loopCreate.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/loop/loopFix.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/loop/loopDestroy.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/grab-cursor/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/breakpoints/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/check-overflow/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/classes/index.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/classes/addClasses.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/classes/removeClasses.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/modules/resize/resize.js","webpack://utitreatment-wp-theme/./node_modules/swiper/core/modules/observer/observer.js","webpack://utitreatment-wp-theme/./node_modules/swiper/modules/navigation/navigation.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://utitreatment-wp-theme/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/effect-target.js","webpack://utitreatment-wp-theme/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/effect-init.js","webpack://utitreatment-wp-theme/./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/reviewSlider.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/starsRating.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/main.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/jcfInit.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/fixedHeader.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/setHeaderVariable.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/helpers/setRootProperty.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.checkbox.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.button.js"],"sourcesContent":["export default function isElementExist(el, cb) {\n var elem = document.querySelector(el);\n\n if (document.body.contains(elem)) {\n try {\n cb();\n } catch (e) {\n console.log(e);\n }\n }\n}\n","/*!\r\n * JavaScript Custom Forms : Range Module\r\n *\r\n * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf\r\n * Released under the MIT license (LICENSE.txt)\r\n *\r\n * Version: 1.2.3\r\n */\r\n\r\n(function(jcf) {\r\n\r\njcf.addModule(function($) {\r\n\t'use strict';\r\n\r\n\treturn {\r\n\t\tname: 'Range',\r\n\t\tselector: 'input[type=\"range\"]',\r\n\t\toptions: {\r\n\t\t\trealElementClass: 'jcf-real-element',\r\n\t\t\tfakeStructure: '',\r\n\t\t\tdataListMark: '',\r\n\t\t\trangeDisplayWrapper: '',\r\n\t\t\trangeDisplay: '',\r\n\t\t\thandleSelector: '.jcf-range-handle',\r\n\t\t\ttrackSelector: '.jcf-range-track',\r\n\t\t\tactiveHandleClass: 'jcf-active-handle',\r\n\t\t\tverticalClass: 'jcf-vertical',\r\n\t\t\torientation: 'horizontal',\r\n\t\t\trange: false, // or \"min\", \"max\", \"all\"\r\n\t\t\tdragHandleCenter: true,\r\n\t\t\tsnapToMarks: true,\r\n\t\t\tsnapRadius: 5,\r\n\t\t\tminRange: 0\r\n\t\t},\r\n\t\tmatchElement: function(element) {\r\n\t\t\treturn element.is(this.selector);\r\n\t\t},\r\n\t\tinit: function() {\r\n\t\t\tthis.initStructure();\r\n\t\t\tthis.attachEvents();\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tinitStructure: function() {\r\n\t\t\tthis.page = $('html');\r\n\t\t\tthis.realElement = $(this.options.element).addClass(this.options.hiddenClass);\r\n\t\t\tthis.fakeElement = $(this.options.fakeStructure).insertBefore(this.realElement).prepend(this.realElement);\r\n\t\t\tthis.track = this.fakeElement.find(this.options.trackSelector);\r\n\t\t\tthis.trackHolder = this.track.parent();\r\n\t\t\tthis.handle = this.fakeElement.find(this.options.handleSelector);\r\n\t\t\tthis.createdHandleCount = 0;\r\n\t\t\tthis.activeDragHandleIndex = 0;\r\n\t\t\tthis.isMultiple = this.realElement.prop('multiple') || typeof this.realElement.attr('multiple') === 'string';\r\n\t\t\tthis.values = this.isMultiple ? this.realElement.attr('value').split(',') : [this.realElement.val()];\r\n\t\t\tthis.handleCount = this.isMultiple ? this.values.length : 1;\r\n\r\n\t\t\t// create range display\r\n\t\t\tthis.rangeDisplayWrapper = $(this.options.rangeDisplayWrapper).insertBefore(this.track);\r\n\t\t\tif (this.options.range === 'min' || this.options.range === 'all') {\r\n\t\t\t\tthis.rangeMin = $(this.options.rangeDisplay).addClass('jcf-range-min').prependTo(this.rangeDisplayWrapper);\r\n\t\t\t}\r\n\t\t\tif (this.options.range === 'max' || this.options.range === 'all') {\r\n\t\t\t\tthis.rangeMax = $(this.options.rangeDisplay).addClass('jcf-range-max').prependTo(this.rangeDisplayWrapper);\r\n\t\t\t}\r\n\r\n\t\t\t// clone handles if needed\r\n\t\t\twhile (this.createdHandleCount < this.handleCount) {\r\n\t\t\t\tthis.createdHandleCount++;\r\n\t\t\t\tthis.handle.clone().addClass('jcf-index-' + this.createdHandleCount).insertBefore(this.handle);\r\n\r\n\t\t\t\t// create mid ranges\r\n\t\t\t\tif (this.createdHandleCount > 1) {\r\n\t\t\t\t\tif (!this.rangeMid) {\r\n\t\t\t\t\t\tthis.rangeMid = $();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.rangeMid = this.rangeMid.add($(this.options.rangeDisplay).addClass('jcf-range-mid').prependTo(this.rangeDisplayWrapper));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// grab all handles\r\n\t\t\tthis.handle.detach();\r\n\t\t\tthis.handle = null;\r\n\t\t\tthis.handles = this.fakeElement.find(this.options.handleSelector);\r\n\t\t\tthis.handles.eq(0).addClass(this.options.activeHandleClass);\r\n\r\n\t\t\t// handle orientation\r\n\t\t\tthis.isVertical = (this.options.orientation === 'vertical');\r\n\t\t\tthis.directionProperty = this.isVertical ? 'top' : 'left';\r\n\t\t\tthis.offsetProperty = this.isVertical ? 'bottom' : 'left';\r\n\t\t\tthis.eventProperty = this.isVertical ? 'pageY' : 'pageX';\r\n\t\t\tthis.sizeProperty = this.isVertical ? 'height' : 'width';\r\n\t\t\tthis.sizeMethod = this.isVertical ? 'innerHeight' : 'innerWidth';\r\n\t\t\tthis.fakeElement.css('touchAction', this.isVertical ? 'pan-x' : 'pan-y');\r\n\t\t\tif (this.isVertical) {\r\n\t\t\t\tthis.fakeElement.addClass(this.options.verticalClass);\r\n\t\t\t}\r\n\r\n\t\t\t// set initial values\r\n\t\t\tthis.minValue = parseFloat(this.realElement.attr('min'));\r\n\t\t\tthis.maxValue = parseFloat(this.realElement.attr('max'));\r\n\t\t\tthis.stepValue = parseFloat(this.realElement.attr('step')) || 1;\r\n\r\n\t\t\t// check attribute values\r\n\t\t\tthis.minValue = isNaN(this.minValue) ? 0 : this.minValue;\r\n\t\t\tthis.maxValue = isNaN(this.maxValue) ? 100 : this.maxValue;\r\n\r\n\t\t\t// handle range\r\n\t\t\tif (this.stepValue !== 1) {\r\n\t\t\t\tthis.maxValue -= (this.maxValue - this.minValue) % this.stepValue;\r\n\t\t\t}\r\n\t\t\tthis.stepsCount = (this.maxValue - this.minValue) / this.stepValue;\r\n\t\t\tthis.createDataList();\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\tthis.realElement.on({\r\n\t\t\t\tfocus: this.onFocus\r\n\t\t\t});\r\n\t\t\tthis.trackHolder.on('jcf-pointerdown', this.onTrackPress);\r\n\t\t\tthis.handles.on('jcf-pointerdown', this.onHandlePress);\r\n\t\t},\r\n\t\tcreateDataList: function() {\r\n\t\t\tvar self = this,\r\n\t\t\t\tdataValues = [],\r\n\t\t\t\tdataListId = this.realElement.attr('list');\r\n\r\n\t\t\tif (dataListId) {\r\n\t\t\t\t$('#' + dataListId).find('option').each(function() {\r\n\t\t\t\t\tvar itemValue = parseFloat(this.value || this.innerHTML),\r\n\t\t\t\t\t\tmark, markOffset;\r\n\r\n\t\t\t\t\tif (!isNaN(itemValue)) {\r\n\t\t\t\t\t\tmarkOffset = self.valueToOffset(itemValue);\r\n\t\t\t\t\t\tdataValues.push({\r\n\t\t\t\t\t\t\tvalue: itemValue,\r\n\t\t\t\t\t\t\toffset: markOffset\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tmark = $(self.options.dataListMark).text(itemValue).attr({\r\n\t\t\t\t\t\t\t'data-mark-value': itemValue\r\n\t\t\t\t\t\t}).css(self.offsetProperty, markOffset + '%').appendTo(self.track);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tif (dataValues.length) {\r\n\t\t\t\t\tself.dataValues = dataValues;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetDragHandleRange: function(handleIndex) {\r\n\t\t\t// calculate range for slider with multiple handles\r\n\t\t\tvar minStep = -Infinity,\r\n\t\t\t\tmaxStep = Infinity;\r\n\r\n\t\t\tif (handleIndex > 0) {\r\n\t\t\t\tminStep = this.valueToStepIndex(parseFloat(this.values[handleIndex - 1]) + this.options.minRange);\r\n\t\t\t}\r\n\t\t\tif (handleIndex < this.handleCount - 1) {\r\n\t\t\t\tmaxStep = this.valueToStepIndex(parseFloat(this.values[handleIndex + 1]) - this.options.minRange);\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tminStepIndex: minStep,\r\n\t\t\t\tmaxStepIndex: maxStep\r\n\t\t\t};\r\n\t\t},\r\n\t\tgetNearestHandle: function(percent) {\r\n\t\t\t// handle vertical sliders\r\n\t\t\tif (this.isVertical) {\r\n\t\t\t\tpercent = 1 - percent;\r\n\t\t\t}\r\n\r\n\t\t\t// detect closest handle when track is pressed\r\n\t\t\tvar closestHandle = this.handles.eq(0),\r\n\t\t\t\tclosestDistance = Infinity,\r\n\t\t\t\tself = this;\r\n\r\n\t\t\tif (this.handleCount > 1) {\r\n\t\t\t\tthis.handles.each(function() {\r\n\t\t\t\t\tvar handleOffset = parseFloat(this.style[self.offsetProperty]) / 100,\r\n\t\t\t\t\t\thandleDistance = Math.abs(handleOffset - percent);\r\n\r\n\t\t\t\t\tif (handleDistance < closestDistance) {\r\n\t\t\t\t\t\tclosestDistance = handleDistance;\r\n\t\t\t\t\t\tclosestHandle = $(this);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn closestHandle;\r\n\t\t},\r\n\t\tonTrackPress: function(e) {\r\n\t\t\tvar trackSize, trackOffset, innerOffset;\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\tif (!this.realElement.is(':disabled') && !this.activeDragHandle) {\r\n\t\t\t\ttrackSize = this.track[this.sizeMethod]();\r\n\t\t\t\ttrackOffset = this.track.offset()[this.directionProperty];\r\n\t\t\t\tthis.activeDragHandle = this.getNearestHandle((e[this.eventProperty] - trackOffset) / this.trackHolder[this.sizeMethod]());\r\n\t\t\t\tthis.activeDragHandleIndex = this.handles.index(this.activeDragHandle);\r\n\t\t\t\tthis.handles.removeClass(this.options.activeHandleClass).eq(this.activeDragHandleIndex).addClass(this.options.activeHandleClass);\r\n\t\t\t\tinnerOffset = this.activeDragHandle[this.sizeMethod]() / 2;\r\n\r\n\t\t\t\tthis.dragData = {\r\n\t\t\t\t\ttrackSize: trackSize,\r\n\t\t\t\t\tinnerOffset: innerOffset,\r\n\t\t\t\t\ttrackOffset: trackOffset,\r\n\t\t\t\t\tmin: trackOffset,\r\n\t\t\t\t\tmax: trackOffset + trackSize\r\n\t\t\t\t};\r\n\t\t\t\tthis.page.on({\r\n\t\t\t\t\t'jcf-pointermove': this.onHandleMove,\r\n\t\t\t\t\t'jcf-pointerup': this.onHandleRelease\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (e.pointerType === 'mouse') {\r\n\t\t\t\t\tthis.realElement.focus();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.onHandleMove(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonHandlePress: function(e) {\r\n\t\t\tvar trackSize, trackOffset, innerOffset;\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\tif (!this.realElement.is(':disabled') && !this.activeDragHandle) {\r\n\t\t\t\tthis.activeDragHandle = $(e.currentTarget);\r\n\t\t\t\tthis.activeDragHandleIndex = this.handles.index(this.activeDragHandle);\r\n\t\t\t\tthis.handles.removeClass(this.options.activeHandleClass).eq(this.activeDragHandleIndex).addClass(this.options.activeHandleClass);\r\n\t\t\t\ttrackSize = this.track[this.sizeMethod]();\r\n\t\t\t\ttrackOffset = this.track.offset()[this.directionProperty];\r\n\t\t\t\tinnerOffset = this.options.dragHandleCenter ? this.activeDragHandle[this.sizeMethod]() / 2 : e[this.eventProperty] - this.handle.offset()[this.directionProperty];\r\n\r\n\t\t\t\tthis.dragData = {\r\n\t\t\t\t\ttrackSize: trackSize,\r\n\t\t\t\t\tinnerOffset: innerOffset,\r\n\t\t\t\t\ttrackOffset: trackOffset,\r\n\t\t\t\t\tmin: trackOffset,\r\n\t\t\t\t\tmax: trackOffset + trackSize\r\n\t\t\t\t};\r\n\t\t\t\tthis.page.on({\r\n\t\t\t\t\t'jcf-pointermove': this.onHandleMove,\r\n\t\t\t\t\t'jcf-pointerup': this.onHandleRelease\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (e.pointerType === 'mouse') {\r\n\t\t\t\t\tthis.realElement.focus();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonHandleMove: function(e) {\r\n\t\t\tvar self = this,\r\n\t\t\t\tnewOffset, dragPercent, stepIndex, valuePercent, handleDragRange;\r\n\r\n\t\t\t// calculate offset\r\n\t\t\tif (this.isVertical) {\r\n\t\t\t\tnewOffset = this.dragData.max + (this.dragData.min - e[this.eventProperty]) - this.dragData.innerOffset;\r\n\t\t\t} else {\r\n\t\t\t\tnewOffset = e[this.eventProperty] - this.dragData.innerOffset;\r\n\t\t\t}\r\n\r\n\t\t\t// fit in range\r\n\t\t\tif (newOffset < this.dragData.min) {\r\n\t\t\t\tnewOffset = this.dragData.min;\r\n\t\t\t} else if (newOffset > this.dragData.max) {\r\n\t\t\t\tnewOffset = this.dragData.max;\r\n\t\t\t}\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\tif (this.options.snapToMarks && this.dataValues) {\r\n\t\t\t\t// snap handle to marks\r\n\t\t\t\tvar dragOffset = newOffset - this.dragData.trackOffset;\r\n\t\t\t\tdragPercent = (newOffset - this.dragData.trackOffset) / this.dragData.trackSize * 100;\r\n\r\n\t\t\t\t$.each(this.dataValues, function(index, item) {\r\n\t\t\t\t\tvar markOffset = item.offset / 100 * self.dragData.trackSize,\r\n\t\t\t\t\t\tmarkMin = markOffset - self.options.snapRadius,\r\n\t\t\t\t\t\tmarkMax = markOffset + self.options.snapRadius;\r\n\r\n\t\t\t\t\tif (dragOffset >= markMin && dragOffset <= markMax) {\r\n\t\t\t\t\t\tdragPercent = item.offset;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// snap handle to steps\r\n\t\t\t\tdragPercent = (newOffset - this.dragData.trackOffset) / this.dragData.trackSize * 100;\r\n\t\t\t}\r\n\r\n\t\t\t// move handle only in range\r\n\t\t\tstepIndex = Math.round(dragPercent * this.stepsCount / 100);\r\n\t\t\tif (this.handleCount > 1) {\r\n\t\t\t\thandleDragRange = this.getDragHandleRange(this.activeDragHandleIndex);\r\n\t\t\t\tif (stepIndex < handleDragRange.minStepIndex) {\r\n\t\t\t\t\tstepIndex = Math.max(handleDragRange.minStepIndex, stepIndex);\r\n\t\t\t\t} else if (stepIndex > handleDragRange.maxStepIndex) {\r\n\t\t\t\t\tstepIndex = Math.min(handleDragRange.maxStepIndex, stepIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvaluePercent = stepIndex * (100 / this.stepsCount);\r\n\r\n\t\t\tif (this.dragData.stepIndex !== stepIndex) {\r\n\t\t\t\tthis.dragData.stepIndex = stepIndex;\r\n\t\t\t\tthis.dragData.offset = valuePercent;\r\n\t\t\t\tthis.activeDragHandle.css(this.offsetProperty, this.dragData.offset + '%');\r\n\r\n\t\t\t\t// update value(s) and trigger \"input\" event\r\n\t\t\t\tthis.values[this.activeDragHandleIndex] = '' + this.stepIndexToValue(stepIndex);\r\n\t\t\t\tthis.updateValues();\r\n\t\t\t\tthis.realElement.trigger('input');\r\n\t\t\t}\r\n\t\t},\r\n\t\tonHandleRelease: function() {\r\n\t\t\tvar newValue;\r\n\t\t\tif (typeof this.dragData.offset === 'number') {\r\n\t\t\t\tnewValue = this.stepIndexToValue(this.dragData.stepIndex);\r\n\t\t\t\tthis.realElement.val(newValue).trigger('change');\r\n\t\t\t}\r\n\r\n\t\t\tthis.page.off({\r\n\t\t\t\t'jcf-pointermove': this.onHandleMove,\r\n\t\t\t\t'jcf-pointerup': this.onHandleRelease\r\n\t\t\t});\r\n\t\t\tdelete this.activeDragHandle;\r\n\t\t\tdelete this.dragData;\r\n\t\t},\r\n\t\tonFocus: function() {\r\n\t\t\tif (!this.fakeElement.hasClass(this.options.focusClass)) {\r\n\t\t\t\tthis.fakeElement.addClass(this.options.focusClass);\r\n\t\t\t\tthis.realElement.on({\r\n\t\t\t\t\tblur: this.onBlur,\r\n\t\t\t\t\tkeydown: this.onKeyPress\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tonBlur: function() {\r\n\t\t\tthis.fakeElement.removeClass(this.options.focusClass);\r\n\t\t\tthis.realElement.off({\r\n\t\t\t\tblur: this.onBlur,\r\n\t\t\t\tkeydown: this.onKeyPress\r\n\t\t\t});\r\n\t\t},\r\n\t\tonKeyPress: function(e) {\r\n\t\t\tvar incValue = (e.which === 38 || e.which === 39),\r\n\t\t\t\tdecValue = (e.which === 37 || e.which === 40);\r\n\r\n\t\t\t// handle TAB key in slider with multiple handles\r\n\t\t\tif (e.which === 9 && this.handleCount > 1) {\r\n\t\t\t\tif (e.shiftKey && this.activeDragHandleIndex > 0) {\r\n\t\t\t\t\tthis.activeDragHandleIndex--;\r\n\t\t\t\t} else if (!e.shiftKey && this.activeDragHandleIndex < this.handleCount - 1) {\r\n\t\t\t\t\tthis.activeDragHandleIndex++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.handles.removeClass(this.options.activeHandleClass).eq(this.activeDragHandleIndex).addClass(this.options.activeHandleClass);\r\n\t\t\t}\r\n\r\n\t\t\t// handle cursor keys\r\n\t\t\tif (decValue || incValue) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.step(incValue ? this.stepValue : -this.stepValue);\r\n\t\t\t}\r\n\t\t},\r\n\t\tupdateValues: function() {\r\n\t\t\tvar value = this.values.join(',');\r\n\t\t\tif (this.values.length > 1) {\r\n\t\t\t\tthis.realElement.prop('valueLow', this.values[0]);\r\n\t\t\t\tthis.realElement.prop('valueHigh', this.values[this.values.length - 1]);\r\n\t\t\t\tthis.realElement.val(value);\r\n\r\n\t\t\t\t// if browser does not accept multiple values set only one\r\n\t\t\t\tif (this.realElement.val() !== value) {\r\n\t\t\t\t\tthis.realElement.val(this.values[this.values.length - 1]);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.realElement.val(value);\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateRanges();\r\n\t\t},\r\n\t\tupdateRanges: function() {\r\n\t\t\t// update display ranges\r\n\t\t\tvar self = this,\r\n\t\t\t\thandle;\r\n\r\n\t\t\tif (this.rangeMin) {\r\n\t\t\t\thandle = this.handles[0];\r\n\t\t\t\tthis.rangeMin.css(this.offsetProperty, 0).css(this.sizeProperty, handle.style[this.offsetProperty]);\r\n\t\t\t}\r\n\t\t\tif (this.rangeMax) {\r\n\t\t\t\thandle = this.handles[this.handles.length - 1];\r\n\t\t\t\tthis.rangeMax.css(this.offsetProperty, handle.style[this.offsetProperty]).css(this.sizeProperty, 100 - parseFloat(handle.style[this.offsetProperty]) + '%');\r\n\t\t\t}\r\n\t\t\tif (this.rangeMid) {\r\n\t\t\t\tthis.handles.each(function(index, curHandle) {\r\n\t\t\t\t\tvar prevHandle, midBox;\r\n\t\t\t\t\tif (index > 0) {\r\n\t\t\t\t\t\tprevHandle = self.handles[index - 1];\r\n\t\t\t\t\t\tmidBox = self.rangeMid[index - 1];\r\n\t\t\t\t\t\tmidBox.style[self.offsetProperty] = prevHandle.style[self.offsetProperty];\r\n\t\t\t\t\t\tmidBox.style[self.sizeProperty] = parseFloat(curHandle.style[self.offsetProperty]) - parseFloat(prevHandle.style[self.offsetProperty]) + '%';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tstep: function(changeValue) {\r\n\t\t\tvar originalValue = parseFloat(this.values[this.activeDragHandleIndex || 0]),\r\n\t\t\t\tnewValue = originalValue,\r\n\t\t\t\tminValue = this.minValue,\r\n\t\t\t\tmaxValue = this.maxValue;\r\n\r\n\t\t\tif (isNaN(originalValue)) {\r\n\t\t\t\tnewValue = 0;\r\n\t\t\t}\r\n\r\n\t\t\tnewValue += changeValue;\r\n\r\n\t\t\tif (this.handleCount > 1) {\r\n\t\t\t\tif (this.activeDragHandleIndex > 0) {\r\n\t\t\t\t\tminValue = parseFloat(this.values[this.activeDragHandleIndex - 1]) + this.options.minRange;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.activeDragHandleIndex < this.handleCount - 1) {\r\n\t\t\t\t\tmaxValue = parseFloat(this.values[this.activeDragHandleIndex + 1]) - this.options.minRange;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (newValue > maxValue) {\r\n\t\t\t\tnewValue = maxValue;\r\n\t\t\t} else if (newValue < minValue) {\r\n\t\t\t\tnewValue = minValue;\r\n\t\t\t}\r\n\r\n\t\t\tif (newValue !== originalValue) {\r\n\t\t\t\tthis.values[this.activeDragHandleIndex || 0] = '' + newValue;\r\n\t\t\t\tthis.updateValues();\r\n\t\t\t\tthis.realElement.trigger('input').trigger('change');\r\n\t\t\t\tthis.setSliderValue(this.values);\r\n\t\t\t}\r\n\t\t},\r\n\t\tvalueToStepIndex: function(value) {\r\n\t\t\treturn (value - this.minValue) / this.stepValue;\r\n\t\t},\r\n\t\tstepIndexToValue: function(stepIndex) {\r\n\t\t\treturn this.minValue + this.stepValue * stepIndex;\r\n\t\t},\r\n\t\tvalueToOffset: function(value) {\r\n\t\t\tvar range = this.maxValue - this.minValue,\r\n\t\t\t\tpercent = (value - this.minValue) / range;\r\n\r\n\t\t\treturn percent * 100;\r\n\t\t},\r\n\t\tgetSliderValue: function() {\r\n\t\t\treturn $.map(this.values, function(value) {\r\n\t\t\t\treturn parseFloat(value) || 0;\r\n\t\t\t});\r\n\t\t},\r\n\t\tsetSliderValue: function(values) {\r\n\t\t\t// set handle position accordion according to value\r\n\t\t\tvar self = this;\r\n\t\t\tthis.handles.each(function(index, handle) {\r\n\t\t\t\thandle.style[self.offsetProperty] = self.valueToOffset(values[index]) + '%';\r\n\t\t\t});\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\t// handle disabled state\r\n\t\t\tvar isDisabled = this.realElement.is(':disabled');\r\n\t\t\tthis.fakeElement.toggleClass(this.options.disabledClass, isDisabled);\r\n\r\n\t\t\t// refresh handle position according to current value\r\n\t\t\tthis.setSliderValue(this.getSliderValue());\r\n\t\t\tthis.updateRanges();\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\tthis.realElement.removeClass(this.options.hiddenClass).insertBefore(this.fakeElement);\r\n\t\t\tthis.fakeElement.remove();\r\n\r\n\t\t\tthis.realElement.off({\r\n\t\t\t\tkeydown: this.onKeyPress,\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\tblur: this.onBlur\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n});\r\n\r\n}(jcf));\r\n","/*!\r\n * JavaScript Custom Forms : File Module\r\n *\r\n * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf\r\n * Released under the MIT license (LICENSE.txt)\r\n *\r\n * Version: 1.2.3\r\n */\r\n\r\n(function(jcf) {\r\n\r\njcf.addModule(function($) {\r\n\t'use strict';\r\n\r\n\treturn {\r\n\t\tname: 'File',\r\n\t\tselector: 'input[type=\"file\"]',\r\n\t\toptions: {\r\n\t\t\tfakeStructure: '',\r\n\t\t\tbuttonText: 'Choose file',\r\n\t\t\tplaceholderText: 'No file chosen',\r\n\t\t\trealElementClass: 'jcf-real-element',\r\n\t\t\textensionPrefixClass: 'jcf-extension-',\r\n\t\t\tselectedFileBlock: '.jcf-fake-input',\r\n\t\t\tbuttonTextBlock: '.jcf-button-content'\r\n\t\t},\r\n\t\tmatchElement: function(element) {\r\n\t\t\treturn element.is('input[type=\"file\"]');\r\n\t\t},\r\n\t\tinit: function() {\r\n\t\t\tthis.initStructure();\r\n\t\t\tthis.attachEvents();\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tinitStructure: function() {\r\n\t\t\tthis.doc = $(document);\r\n\t\t\tthis.realElement = $(this.options.element).addClass(this.options.realElementClass);\r\n\t\t\tthis.fakeElement = $(this.options.fakeStructure).insertBefore(this.realElement);\r\n\t\t\tthis.fileNameBlock = this.fakeElement.find(this.options.selectedFileBlock);\r\n\t\t\tthis.buttonTextBlock = this.fakeElement.find(this.options.buttonTextBlock).text(this.options.buttonText);\r\n\r\n\t\t\tthis.realElement.appendTo(this.fakeElement).css({\r\n\t\t\t\tposition: 'absolute',\r\n\t\t\t\topacity: 0\r\n\t\t\t});\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\tthis.realElement.on({\r\n\t\t\t\t'jcf-pointerdown': this.onPress,\r\n\t\t\t\tchange: this.onChange,\r\n\t\t\t\tfocus: this.onFocus\r\n\t\t\t});\r\n\t\t},\r\n\t\tonChange: function() {\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tonFocus: function() {\r\n\t\t\tthis.fakeElement.addClass(this.options.focusClass);\r\n\t\t\tthis.realElement.on('blur', this.onBlur);\r\n\t\t},\r\n\t\tonBlur: function() {\r\n\t\t\tthis.fakeElement.removeClass(this.options.focusClass);\r\n\t\t\tthis.realElement.off('blur', this.onBlur);\r\n\t\t},\r\n\t\tonPress: function() {\r\n\t\t\tthis.fakeElement.addClass(this.options.pressedClass);\r\n\t\t\tthis.doc.on('jcf-pointerup', this.onRelease);\r\n\t\t},\r\n\t\tonRelease: function() {\r\n\t\t\tthis.fakeElement.removeClass(this.options.pressedClass);\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onRelease);\r\n\t\t},\r\n\t\tgetFileName: function() {\r\n\t\t\tvar resultFileName = '',\r\n\t\t\t\tfiles = this.realElement.prop('files');\r\n\r\n\t\t\tif (files && files.length) {\r\n\t\t\t\t$.each(files, function(index, file) {\r\n\t\t\t\t\tresultFileName += (index > 0 ? ', ' : '') + file.name;\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tresultFileName = this.realElement.val().replace(/^[\\s\\S]*(?:\\\\|\\/)([\\s\\S^\\\\\\/]*)$/g, '$1');\r\n\t\t\t}\r\n\r\n\t\t\treturn resultFileName;\r\n\t\t},\r\n\t\tgetFileExtension: function() {\r\n\t\t\tvar fileName = this.realElement.val();\r\n\t\t\treturn fileName.lastIndexOf('.') < 0 ? '' : fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();\r\n\t\t},\r\n\t\tupdateExtensionClass: function() {\r\n\t\t\tvar currentExtension = this.getFileExtension(),\r\n\t\t\t\tcurrentClassList = this.fakeElement.prop('className'),\r\n\t\t\t\tcleanedClassList = currentClassList.replace(new RegExp('(\\\\s|^)' + this.options.extensionPrefixClass + '[^ ]+','gi'), '');\r\n\r\n\t\t\tthis.fakeElement.prop('className', cleanedClassList);\r\n\t\t\tif (currentExtension) {\r\n\t\t\t\tthis.fakeElement.addClass(this.options.extensionPrefixClass + currentExtension);\r\n\t\t\t}\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\tvar selectedFileName = this.getFileName() || this.options.placeholderText;\r\n\t\t\tthis.fakeElement.toggleClass(this.options.disabledClass, this.realElement.is(':disabled'));\r\n\t\t\tthis.fileNameBlock.text(selectedFileName);\r\n\t\t\tthis.updateExtensionClass();\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\t// reset styles and restore element position\r\n\t\t\tthis.realElement.insertBefore(this.fakeElement).removeClass(this.options.realElementClass).css({\r\n\t\t\t\tposition: '',\r\n\t\t\t\topacity: ''\r\n\t\t\t});\r\n\t\t\tthis.fakeElement.remove();\r\n\r\n\t\t\t// remove event handlers\r\n\t\t\tthis.realElement.off({\r\n\t\t\t\t'jcf-pointerdown': this.onPress,\r\n\t\t\t\tchange: this.onChange,\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\tblur: this.onBlur\r\n\t\t\t});\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onRelease);\r\n\t\t}\r\n\t};\r\n});\r\n\r\n}(jcf));\r\n","'use strict';\r\n\r\nwindow.jcf = require('./jcf');\r\n\r\nrequire('./jcf.button');\r\nrequire('./jcf.checkbox');\r\nrequire('./jcf.file');\r\nrequire('./jcf.number');\r\nrequire('./jcf.radio');\r\nrequire('./jcf.range');\r\nrequire('./jcf.scrollable');\r\nrequire('./jcf.select');\r\nrequire('./jcf.textarea');\r\n\r\nmodule.exports = window.jcf;\r\n\r\ndelete window.jcf;\r\n\r\n","/*!\r\n * JavaScript Custom Forms : Select Module\r\n *\r\n * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf\r\n * Released under the MIT license (LICENSE.txt)\r\n *\r\n * Version: 1.2.3\r\n */\r\n\r\n(function(jcf) {\r\n\r\njcf.addModule(function($, window) {\r\n\t'use strict';\r\n\r\n\tvar module = {\r\n\t\tname: 'Select',\r\n\t\tselector: 'select',\r\n\t\toptions: {\r\n\t\t\telement: null,\r\n\t\t\tmultipleCompactStyle: false\r\n\t\t},\r\n\t\tplugins: {\r\n\t\t\tListBox: ListBox,\r\n\t\t\tComboBox: ComboBox,\r\n\t\t\tSelectList: SelectList\r\n\t\t},\r\n\t\tmatchElement: function(element) {\r\n\t\t\treturn element.is('select');\r\n\t\t},\r\n\t\tinit: function() {\r\n\t\t\tthis.element = $(this.options.element);\r\n\t\t\tthis.createInstance();\r\n\t\t},\r\n\t\tisListBox: function() {\r\n\t\t\treturn this.element.is('[size]:not([jcf-size]), [multiple]');\r\n\t\t},\r\n\t\tcreateInstance: function() {\r\n\t\t\tif (this.instance) {\r\n\t\t\t\tthis.instance.destroy();\r\n\t\t\t}\r\n\t\t\tif (this.isListBox() && !this.options.multipleCompactStyle) {\r\n\t\t\t\tthis.instance = new ListBox(this.options);\r\n\t\t\t} else {\r\n\t\t\t\tthis.instance = new ComboBox(this.options);\r\n\t\t\t}\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\tvar typeMismatch = (this.isListBox() && this.instance instanceof ComboBox) ||\r\n\t\t\t\t\t\t\t\t(!this.isListBox() && this.instance instanceof ListBox);\r\n\r\n\t\t\tif (typeMismatch) {\r\n\t\t\t\tthis.createInstance();\r\n\t\t\t} else {\r\n\t\t\t\tthis.instance.refresh();\r\n\t\t\t}\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\tthis.instance.destroy();\r\n\t\t}\r\n\t};\r\n\r\n\t// combobox module\r\n\tfunction ComboBox(options) {\r\n\t\tthis.options = $.extend({\r\n\t\t\twrapNative: true,\r\n\t\t\twrapNativeOnMobile: true,\r\n\t\t\tfakeDropInBody: true,\r\n\t\t\tuseCustomScroll: true,\r\n\t\t\tflipDropToFit: true,\r\n\t\t\tmaxVisibleItems: 10,\r\n\t\t\tfakeAreaStructure: '',\r\n\t\t\tfakeDropStructure: '
',\r\n\t\t\toptionClassPrefix: 'jcf-option-',\r\n\t\t\tselectClassPrefix: 'jcf-select-',\r\n\t\t\tdropContentSelector: '.jcf-select-drop-content',\r\n\t\t\tselectTextSelector: '.jcf-select-text',\r\n\t\t\tdropActiveClass: 'jcf-drop-active',\r\n\t\t\tflipDropClass: 'jcf-drop-flipped'\r\n\t\t}, options);\r\n\t\tthis.init();\r\n\t}\r\n\t$.extend(ComboBox.prototype, {\r\n\t\tinit: function() {\r\n\t\t\tthis.initStructure();\r\n\t\t\tthis.bindHandlers();\r\n\t\t\tthis.attachEvents();\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tinitStructure: function() {\r\n\t\t\t// prepare structure\r\n\t\t\tthis.win = $(window);\r\n\t\t\tthis.doc = $(document);\r\n\t\t\tthis.realElement = $(this.options.element);\r\n\t\t\tthis.fakeElement = $(this.options.fakeAreaStructure).insertAfter(this.realElement);\r\n\t\t\tthis.selectTextContainer = this.fakeElement.find(this.options.selectTextSelector);\r\n\t\t\tthis.selectText = $('').appendTo(this.selectTextContainer);\r\n\t\t\tmakeUnselectable(this.fakeElement);\r\n\r\n\t\t\t// copy classes from original select\r\n\t\t\tthis.fakeElement.addClass(getPrefixedClasses(this.realElement.prop('className'), this.options.selectClassPrefix));\r\n\r\n\t\t\t// handle compact multiple style\r\n\t\t\tif (this.realElement.prop('multiple')) {\r\n\t\t\t\tthis.fakeElement.addClass('jcf-compact-multiple');\r\n\t\t\t}\r\n\r\n\t\t\t// detect device type and dropdown behavior\r\n\t\t\tif (this.options.isMobileDevice && this.options.wrapNativeOnMobile && !this.options.wrapNative) {\r\n\t\t\t\tthis.options.wrapNative = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.wrapNative) {\r\n\t\t\t\t// wrap native select inside fake block\r\n\t\t\t\tthis.realElement.prependTo(this.fakeElement).css({\r\n\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\theight: '100%',\r\n\t\t\t\t\twidth: '100%'\r\n\t\t\t\t}).addClass(this.options.resetAppearanceClass);\r\n\t\t\t} else {\r\n\t\t\t\t// just hide native select\r\n\t\t\t\tthis.realElement.addClass(this.options.hiddenClass);\r\n\t\t\t\tthis.fakeElement.attr('title', this.realElement.attr('title'));\r\n\t\t\t\tthis.fakeDropTarget = this.options.fakeDropInBody ? $('body') : this.fakeElement;\r\n\t\t\t}\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\t// delayed refresh handler\r\n\t\t\tvar self = this;\r\n\t\t\tthis.delayedRefresh = function() {\r\n\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\tself.refresh();\r\n\t\t\t\t\tif (self.list) {\r\n\t\t\t\t\t\tself.list.refresh();\r\n\t\t\t\t\t\tself.list.scrollToActiveOption();\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1);\r\n\t\t\t};\r\n\r\n\t\t\t// native dropdown event handlers\r\n\t\t\tif (this.options.wrapNative) {\r\n\t\t\t\tthis.realElement.on({\r\n\t\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\t\tchange: this.onChange,\r\n\t\t\t\t\tclick: this.onChange,\r\n\t\t\t\t\tkeydown: this.delayedRefresh\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// custom dropdown event handlers\r\n\t\t\t\tthis.realElement.on({\r\n\t\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\t\tchange: this.onChange,\r\n\t\t\t\t\tkeydown: this.onKeyDown\r\n\t\t\t\t});\r\n\t\t\t\tthis.fakeElement.on({\r\n\t\t\t\t\t'jcf-pointerdown': this.onSelectAreaPress\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tonKeyDown: function(e) {\r\n\t\t\tif (e.which === 13) {\r\n\t\t\t\tthis.toggleDropdown();\r\n\t\t\t} else if (this.dropActive) {\r\n\t\t\t\tthis.delayedRefresh();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonChange: function() {\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tonFocus: function() {\r\n\t\t\tif (!this.pressedFlag || !this.focusedFlag) {\r\n\t\t\t\tthis.fakeElement.addClass(this.options.focusClass);\r\n\t\t\t\tthis.realElement.on('blur', this.onBlur);\r\n\t\t\t\tthis.toggleListMode(true);\r\n\t\t\t\tthis.focusedFlag = true;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonBlur: function() {\r\n\t\t\tif (!this.pressedFlag) {\r\n\t\t\t\tthis.fakeElement.removeClass(this.options.focusClass);\r\n\t\t\t\tthis.realElement.off('blur', this.onBlur);\r\n\t\t\t\tthis.toggleListMode(false);\r\n\t\t\t\tthis.focusedFlag = false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonResize: function() {\r\n\t\t\tif (this.dropActive) {\r\n\t\t\t\tthis.hideDropdown();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSelectDropPress: function() {\r\n\t\t\tthis.pressedFlag = true;\r\n\t\t},\r\n\t\tonSelectDropRelease: function(e, pointerEvent) {\r\n\t\t\tthis.pressedFlag = false;\r\n\t\t\tif (pointerEvent.pointerType === 'mouse') {\r\n\t\t\t\tthis.realElement.focus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSelectAreaPress: function(e) {\r\n\t\t\t// skip click if drop inside fake element or real select is disabled\r\n\t\t\tvar dropClickedInsideFakeElement = !this.options.fakeDropInBody && $(e.target).closest(this.dropdown).length;\r\n\t\t\tif (dropClickedInsideFakeElement || e.button > 1 || this.realElement.is(':disabled')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// toggle dropdown visibility\r\n\t\t\tthis.selectOpenedByEvent = e.pointerType;\r\n\t\t\tthis.toggleDropdown();\r\n\r\n\t\t\t// misc handlers\r\n\t\t\tif (!this.focusedFlag) {\r\n\t\t\t\tif (e.pointerType === 'mouse') {\r\n\t\t\t\t\tthis.realElement.focus();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.onFocus(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.pressedFlag = true;\r\n\t\t\tthis.fakeElement.addClass(this.options.pressedClass);\r\n\t\t\tthis.doc.on('jcf-pointerup', this.onSelectAreaRelease);\r\n\t\t},\r\n\t\tonSelectAreaRelease: function(e) {\r\n\t\t\tif (this.focusedFlag && e.pointerType === 'mouse') {\r\n\t\t\t\tthis.realElement.focus();\r\n\t\t\t}\r\n\t\t\tthis.pressedFlag = false;\r\n\t\t\tthis.fakeElement.removeClass(this.options.pressedClass);\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onSelectAreaRelease);\r\n\t\t},\r\n\t\tonOutsideClick: function(e) {\r\n\t\t\tvar target = $(e.target),\r\n\t\t\t\tclickedInsideSelect = target.closest(this.fakeElement).length || target.closest(this.dropdown).length;\r\n\r\n\t\t\tif (!clickedInsideSelect) {\r\n\t\t\t\tthis.hideDropdown();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSelect: function() {\r\n\t\t\tthis.refresh();\r\n\r\n\t\t\tif (this.realElement.prop('multiple')) {\r\n\t\t\t\tthis.repositionDropdown();\r\n\t\t\t} else {\r\n\t\t\t\tthis.hideDropdown();\r\n\t\t\t}\r\n\r\n\t\t\tthis.fireNativeEvent(this.realElement, 'change');\r\n\t\t},\r\n\t\ttoggleListMode: function(state) {\r\n\t\t\tif (!this.options.wrapNative) {\r\n\t\t\t\tif (state) {\r\n\t\t\t\t\t// temporary change select to list to avoid appearing of native dropdown\r\n\t\t\t\t\tthis.realElement.attr({\r\n\t\t\t\t\t\tsize: 4,\r\n\t\t\t\t\t\t'jcf-size': ''\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// restore select from list mode to dropdown select\r\n\t\t\t\t\tif (!this.options.wrapNative) {\r\n\t\t\t\t\t\tthis.realElement.removeAttr('size jcf-size');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tcreateDropdown: function() {\r\n\t\t\t// destroy previous dropdown if needed\r\n\t\t\tif (this.dropdown) {\r\n\t\t\t\tthis.list.destroy();\r\n\t\t\t\tthis.dropdown.remove();\r\n\t\t\t}\r\n\r\n\t\t\t// create new drop container\r\n\t\t\tthis.dropdown = $(this.options.fakeDropStructure).appendTo(this.fakeDropTarget);\r\n\t\t\tthis.dropdown.addClass(getPrefixedClasses(this.realElement.prop('className'), this.options.selectClassPrefix));\r\n\t\t\tmakeUnselectable(this.dropdown);\r\n\r\n\t\t\t// handle compact multiple style\r\n\t\t\tif (this.realElement.prop('multiple')) {\r\n\t\t\t\tthis.dropdown.addClass('jcf-compact-multiple');\r\n\t\t\t}\r\n\r\n\t\t\t// set initial styles for dropdown in body\r\n\t\t\tif (this.options.fakeDropInBody) {\r\n\t\t\t\tthis.dropdown.css({\r\n\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\ttop: -9999\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// create new select list instance\r\n\t\t\tthis.list = new SelectList({\r\n\t\t\t\tuseHoverClass: true,\r\n\t\t\t\thandleResize: false,\r\n\t\t\t\talwaysPreventMouseWheel: true,\r\n\t\t\t\tmaxVisibleItems: this.options.maxVisibleItems,\r\n\t\t\t\tuseCustomScroll: this.options.useCustomScroll,\r\n\t\t\t\tholder: this.dropdown.find(this.options.dropContentSelector),\r\n\t\t\t\tmultipleSelectWithoutKey: this.realElement.prop('multiple'),\r\n\t\t\t\telement: this.realElement\r\n\t\t\t});\r\n\t\t\t$(this.list).on({\r\n\t\t\t\tselect: this.onSelect,\r\n\t\t\t\tpress: this.onSelectDropPress,\r\n\t\t\t\trelease: this.onSelectDropRelease\r\n\t\t\t});\r\n\t\t},\r\n\t\trepositionDropdown: function() {\r\n\t\t\tvar selectOffset = this.fakeElement.offset(),\r\n\t\t\t\tfakeElementBounds = this.fakeElement[0].getBoundingClientRect(),\r\n\t\t\t\tselectWidth = fakeElementBounds.width || fakeElementBounds.right - fakeElementBounds.left,\r\n\t\t\t\tselectHeight = this.fakeElement.outerHeight(),\r\n\t\t\t\tdropHeight = this.dropdown.css('width', selectWidth).outerHeight(),\r\n\t\t\t\twinScrollTop = this.win.scrollTop(),\r\n\t\t\t\twinHeight = this.win.height(),\r\n\t\t\t\tcalcTop, calcLeft, bodyOffset, needFlipDrop = false;\r\n\r\n\t\t\t// check flip drop position\r\n\t\t\tif (selectOffset.top + selectHeight + dropHeight > winScrollTop + winHeight && selectOffset.top - dropHeight > winScrollTop) {\r\n\t\t\t\tneedFlipDrop = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.fakeDropInBody) {\r\n\t\t\t\tbodyOffset = this.fakeDropTarget.css('position') !== 'static' ? this.fakeDropTarget.offset().top : 0;\r\n\t\t\t\tif (this.options.flipDropToFit && needFlipDrop) {\r\n\t\t\t\t\t// calculate flipped dropdown position\r\n\t\t\t\t\tcalcLeft = selectOffset.left;\r\n\t\t\t\t\tcalcTop = selectOffset.top - dropHeight - bodyOffset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// calculate default drop position\r\n\t\t\t\t\tcalcLeft = selectOffset.left;\r\n\t\t\t\t\tcalcTop = selectOffset.top + selectHeight - bodyOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// update drop styles\r\n\t\t\t\tthis.dropdown.css({\r\n\t\t\t\t\twidth: selectWidth,\r\n\t\t\t\t\tleft: calcLeft,\r\n\t\t\t\t\ttop: calcTop\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// refresh flipped class\r\n\t\t\tthis.dropdown.add(this.fakeElement).toggleClass(this.options.flipDropClass, this.options.flipDropToFit && needFlipDrop);\r\n\t\t},\r\n\t\tshowDropdown: function() {\r\n\t\t\t// do not show empty custom dropdown\r\n\t\t\tif (!this.realElement.prop('options').length) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// create options list if not created\r\n\t\t\tif (!this.dropdown) {\r\n\t\t\t\tthis.createDropdown();\r\n\t\t\t}\r\n\r\n\t\t\t// show dropdown\r\n\t\t\tthis.dropActive = true;\r\n\t\t\tthis.dropdown.appendTo(this.fakeDropTarget);\r\n\t\t\tthis.fakeElement.addClass(this.options.dropActiveClass);\r\n\t\t\tthis.refreshSelectedText();\r\n\t\t\tthis.repositionDropdown();\r\n\t\t\tthis.list.setScrollTop(this.savedScrollTop);\r\n\t\t\tthis.list.refresh();\r\n\r\n\t\t\t// add temporary event handlers\r\n\t\t\tthis.win.on('resize', this.onResize);\r\n\t\t\tthis.doc.on('jcf-pointerdown', this.onOutsideClick);\r\n\t\t},\r\n\t\thideDropdown: function() {\r\n\t\t\tif (this.dropdown) {\r\n\t\t\t\tthis.savedScrollTop = this.list.getScrollTop();\r\n\t\t\t\tthis.fakeElement.removeClass(this.options.dropActiveClass + ' ' + this.options.flipDropClass);\r\n\t\t\t\tthis.dropdown.removeClass(this.options.flipDropClass).detach();\r\n\t\t\t\tthis.doc.off('jcf-pointerdown', this.onOutsideClick);\r\n\t\t\t\tthis.win.off('resize', this.onResize);\r\n\t\t\t\tthis.dropActive = false;\r\n\t\t\t\tif (this.selectOpenedByEvent === 'touch') {\r\n\t\t\t\t\tthis.onBlur();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\ttoggleDropdown: function() {\r\n\t\t\tif (this.dropActive) {\r\n\t\t\t\tthis.hideDropdown();\r\n\t\t\t} else {\r\n\t\t\t\tthis.showDropdown();\r\n\t\t\t}\r\n\t\t},\r\n\t\trefreshSelectedText: function() {\r\n\t\t\t// redraw selected area\r\n\t\t\tvar selectedIndex = this.realElement.prop('selectedIndex'),\r\n\t\t\t\tselectedOption = this.realElement.prop('options')[selectedIndex],\r\n\t\t\t\tselectedOptionImage = selectedOption ? selectedOption.getAttribute('data-image') : null,\r\n\t\t\t\tselectedOptionText = '',\r\n\t\t\t\tselectedOptionClasses,\r\n\t\t\t\tself = this;\r\n\r\n\t\t\tif (this.realElement.prop('multiple')) {\r\n\t\t\t\t$.each(this.realElement.prop('options'), function(index, option) {\r\n\t\t\t\t\tif (option.selected) {\r\n\t\t\t\t\t\tselectedOptionText += (selectedOptionText ? ', ' : '') + option.innerHTML;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tif (!selectedOptionText) {\r\n\t\t\t\t\tselectedOptionText = self.realElement.attr('placeholder') || '';\r\n\t\t\t\t}\r\n\t\t\t\tthis.selectText.removeAttr('class').html(selectedOptionText);\r\n\t\t\t} else if (!selectedOption) {\r\n\t\t\t\tif (this.selectImage) {\r\n\t\t\t\t\tthis.selectImage.hide();\r\n\t\t\t\t}\r\n\t\t\t\tthis.selectText.removeAttr('class').empty();\r\n\t\t\t} else if (this.currentSelectedText !== selectedOption.innerHTML || this.currentSelectedImage !== selectedOptionImage) {\r\n\t\t\t\tselectedOptionClasses = getPrefixedClasses(selectedOption.className, this.options.optionClassPrefix);\r\n\t\t\t\tthis.selectText.attr('class', selectedOptionClasses).html(selectedOption.innerHTML);\r\n\r\n\t\t\t\tif (selectedOptionImage) {\r\n\t\t\t\t\tif (!this.selectImage) {\r\n\t\t\t\t\t\tthis.selectImage = $('').prependTo(this.selectTextContainer).hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.selectImage.attr('src', selectedOptionImage).show();\r\n\t\t\t\t} else if (this.selectImage) {\r\n\t\t\t\t\tthis.selectImage.hide();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.currentSelectedText = selectedOption.innerHTML;\r\n\t\t\t\tthis.currentSelectedImage = selectedOptionImage;\r\n\t\t\t}\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\t// refresh fake select visibility\r\n\t\t\tif (this.realElement.prop('style').display === 'none') {\r\n\t\t\t\tthis.fakeElement.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.fakeElement.show();\r\n\t\t\t}\r\n\r\n\t\t\t// refresh selected text\r\n\t\t\tthis.refreshSelectedText();\r\n\r\n\t\t\t// handle disabled state\r\n\t\t\tthis.fakeElement.toggleClass(this.options.disabledClass, this.realElement.is(':disabled'));\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\t// restore structure\r\n\t\t\tif (this.options.wrapNative) {\r\n\t\t\t\tthis.realElement.insertBefore(this.fakeElement).css({\r\n\t\t\t\t\tposition: '',\r\n\t\t\t\t\theight: '',\r\n\t\t\t\t\twidth: ''\r\n\t\t\t\t}).removeClass(this.options.resetAppearanceClass);\r\n\t\t\t} else {\r\n\t\t\t\tthis.realElement.removeClass(this.options.hiddenClass);\r\n\t\t\t\tif (this.realElement.is('[jcf-size]')) {\r\n\t\t\t\t\tthis.realElement.removeAttr('size jcf-size');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// removing element will also remove its event handlers\r\n\t\t\tthis.fakeElement.remove();\r\n\r\n\t\t\t// remove other event handlers\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onSelectAreaRelease);\r\n\t\t\tthis.realElement.off({\r\n\t\t\t\tfocus: this.onFocus\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t// listbox module\r\n\tfunction ListBox(options) {\r\n\t\tthis.options = $.extend({\r\n\t\t\twrapNative: true,\r\n\t\t\tuseCustomScroll: true,\r\n\t\t\tfakeStructure: '',\r\n\t\t\tselectClassPrefix: 'jcf-select-',\r\n\t\t\tlistHolder: '.jcf-list-wrapper'\r\n\t\t}, options);\r\n\t\tthis.init();\r\n\t}\r\n\t$.extend(ListBox.prototype, {\r\n\t\tinit: function() {\r\n\t\t\tthis.bindHandlers();\r\n\t\t\tthis.initStructure();\r\n\t\t\tthis.attachEvents();\r\n\t\t},\r\n\t\tinitStructure: function() {\r\n\t\t\tthis.realElement = $(this.options.element);\r\n\t\t\tthis.fakeElement = $(this.options.fakeStructure).insertAfter(this.realElement);\r\n\t\t\tthis.listHolder = this.fakeElement.find(this.options.listHolder);\r\n\t\t\tmakeUnselectable(this.fakeElement);\r\n\r\n\t\t\t// copy classes from original select\r\n\t\t\tthis.fakeElement.addClass(getPrefixedClasses(this.realElement.prop('className'), this.options.selectClassPrefix));\r\n\t\t\tthis.realElement.addClass(this.options.hiddenClass);\r\n\r\n\t\t\tthis.list = new SelectList({\r\n\t\t\t\tuseCustomScroll: this.options.useCustomScroll,\r\n\t\t\t\tholder: this.listHolder,\r\n\t\t\t\tselectOnClick: false,\r\n\t\t\t\telement: this.realElement\r\n\t\t\t});\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\t// delayed refresh handler\r\n\t\t\tvar self = this;\r\n\t\t\tthis.delayedRefresh = function(e) {\r\n\t\t\t\tif (e && (e.which === 16 || e.ctrlKey || e.metaKey || e.altKey)) {\r\n\t\t\t\t\t// ignore modifier keys\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclearTimeout(self.refreshTimer);\r\n\t\t\t\t\tself.refreshTimer = setTimeout(function() {\r\n\t\t\t\t\t\tself.refresh();\r\n\t\t\t\t\t\tself.list.scrollToActiveOption();\r\n\t\t\t\t\t}, 1);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// other event handlers\r\n\t\t\tthis.realElement.on({\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\tclick: this.delayedRefresh,\r\n\t\t\t\tkeydown: this.delayedRefresh\r\n\t\t\t});\r\n\r\n\t\t\t// select list event handlers\r\n\t\t\t$(this.list).on({\r\n\t\t\t\tselect: this.onSelect,\r\n\t\t\t\tpress: this.onFakeOptionsPress,\r\n\t\t\t\trelease: this.onFakeOptionsRelease\r\n\t\t\t});\r\n\t\t},\r\n\t\tonFakeOptionsPress: function(e, pointerEvent) {\r\n\t\t\tthis.pressedFlag = true;\r\n\t\t\tif (pointerEvent.pointerType === 'mouse') {\r\n\t\t\t\tthis.realElement.focus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonFakeOptionsRelease: function(e, pointerEvent) {\r\n\t\t\tthis.pressedFlag = false;\r\n\t\t\tif (pointerEvent.pointerType === 'mouse') {\r\n\t\t\t\tthis.realElement.focus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSelect: function() {\r\n\t\t\tthis.fireNativeEvent(this.realElement, 'change');\r\n\t\t\tthis.fireNativeEvent(this.realElement, 'click');\r\n\t\t},\r\n\t\tonFocus: function() {\r\n\t\t\tif (!this.pressedFlag || !this.focusedFlag) {\r\n\t\t\t\tthis.fakeElement.addClass(this.options.focusClass);\r\n\t\t\t\tthis.realElement.on('blur', this.onBlur);\r\n\t\t\t\tthis.focusedFlag = true;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonBlur: function() {\r\n\t\t\tif (!this.pressedFlag) {\r\n\t\t\t\tthis.fakeElement.removeClass(this.options.focusClass);\r\n\t\t\t\tthis.realElement.off('blur', this.onBlur);\r\n\t\t\t\tthis.focusedFlag = false;\r\n\t\t\t}\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\tthis.fakeElement.toggleClass(this.options.disabledClass, this.realElement.is(':disabled'));\r\n\t\t\tthis.list.refresh();\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\tthis.list.destroy();\r\n\t\t\tthis.realElement.insertBefore(this.fakeElement).removeClass(this.options.hiddenClass);\r\n\t\t\tthis.fakeElement.remove();\r\n\t\t}\r\n\t});\r\n\r\n\t// options list module\r\n\tfunction SelectList(options) {\r\n\t\tthis.options = $.extend({\r\n\t\t\tholder: null,\r\n\t\t\tmaxVisibleItems: 10,\r\n\t\t\tselectOnClick: true,\r\n\t\t\tuseHoverClass: false,\r\n\t\t\tuseCustomScroll: false,\r\n\t\t\thandleResize: true,\r\n\t\t\tmultipleSelectWithoutKey: false,\r\n\t\t\talwaysPreventMouseWheel: false,\r\n\t\t\tindexAttribute: 'data-index',\r\n\t\t\tcloneClassPrefix: 'jcf-option-',\r\n\t\t\tcontainerStructure: '',\r\n\t\t\tcontainerSelector: '.jcf-list-content',\r\n\t\t\tcaptionClass: 'jcf-optgroup-caption',\r\n\t\t\tdisabledClass: 'jcf-disabled',\r\n\t\t\toptionClass: 'jcf-option',\r\n\t\t\tgroupClass: 'jcf-optgroup',\r\n\t\t\thoverClass: 'jcf-hover',\r\n\t\t\tselectedClass: 'jcf-selected',\r\n\t\t\tscrollClass: 'jcf-scroll-active'\r\n\t\t}, options);\r\n\t\tthis.init();\r\n\t}\r\n\t$.extend(SelectList.prototype, {\r\n\t\tinit: function() {\r\n\t\t\tthis.initStructure();\r\n\t\t\tthis.refreshSelectedClass();\r\n\t\t\tthis.attachEvents();\r\n\t\t},\r\n\t\tinitStructure: function() {\r\n\t\t\tthis.element = $(this.options.element);\r\n\t\t\tthis.indexSelector = '[' + this.options.indexAttribute + ']';\r\n\t\t\tthis.container = $(this.options.containerStructure).appendTo(this.options.holder);\r\n\t\t\tthis.listHolder = this.container.find(this.options.containerSelector);\r\n\t\t\tthis.lastClickedIndex = this.element.prop('selectedIndex');\r\n\t\t\tthis.rebuildList();\r\n\r\n\t\t\t// save current selection in multiple select\r\n\t\t\tif (this.element.prop('multiple')) {\r\n\t\t\t\tthis.previousSelection = this.getSelectedOptionsIndexes();\r\n\t\t\t}\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\tthis.bindHandlers();\r\n\t\t\tthis.listHolder.on('jcf-pointerdown', this.indexSelector, this.onItemPress);\r\n\t\t\tthis.listHolder.on('jcf-pointerdown', this.onPress);\r\n\r\n\t\t\tif (this.options.useHoverClass) {\r\n\t\t\t\tthis.listHolder.on('jcf-pointerover', this.indexSelector, this.onHoverItem);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonPress: function(e) {\r\n\t\t\t$(this).trigger('press', e);\r\n\t\t\tthis.listHolder.on('jcf-pointerup', this.onRelease);\r\n\t\t},\r\n\t\tonRelease: function(e) {\r\n\t\t\t$(this).trigger('release', e);\r\n\t\t\tthis.listHolder.off('jcf-pointerup', this.onRelease);\r\n\t\t},\r\n\t\tonHoverItem: function(e) {\r\n\t\t\tvar hoverIndex = parseFloat(e.currentTarget.getAttribute(this.options.indexAttribute));\r\n\t\t\tthis.fakeOptions.removeClass(this.options.hoverClass).eq(hoverIndex).addClass(this.options.hoverClass);\r\n\t\t},\r\n\t\tonItemPress: function(e) {\r\n\t\t\tif (e.pointerType === 'touch' || this.options.selectOnClick) {\r\n\t\t\t\t// select option after \"click\"\r\n\t\t\t\tthis.tmpListOffsetTop = this.list.offset().top;\r\n\t\t\t\tthis.listHolder.on('jcf-pointerup', this.indexSelector, this.onItemRelease);\r\n\t\t\t} else {\r\n\t\t\t\t// select option immediately\r\n\t\t\t\tthis.onSelectItem(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonItemRelease: function(e) {\r\n\t\t\t// remove event handlers and temporary data\r\n\t\t\tthis.listHolder.off('jcf-pointerup', this.indexSelector, this.onItemRelease);\r\n\r\n\t\t\t// simulate item selection\r\n\t\t\tif (this.tmpListOffsetTop === this.list.offset().top) {\r\n\t\t\t\tthis.listHolder.on('click', this.indexSelector, { savedPointerType: e.pointerType }, this.onSelectItem);\r\n\t\t\t}\r\n\t\t\tdelete this.tmpListOffsetTop;\r\n\t\t},\r\n\t\tonSelectItem: function(e) {\r\n\t\t\tvar clickedIndex = parseFloat(e.currentTarget.getAttribute(this.options.indexAttribute)),\r\n\t\t\t\tpointerType = e.data && e.data.savedPointerType || e.pointerType || 'mouse',\r\n\t\t\t\trange;\r\n\r\n\t\t\t// remove click event handler\r\n\t\t\tthis.listHolder.off('click', this.indexSelector, this.onSelectItem);\r\n\r\n\t\t\t// ignore clicks on disabled options\r\n\t\t\tif (e.button > 1 || this.realOptions[clickedIndex].disabled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.element.prop('multiple')) {\r\n\t\t\t\tif (e.metaKey || e.ctrlKey || pointerType === 'touch' || this.options.multipleSelectWithoutKey) {\r\n\t\t\t\t\t// if CTRL/CMD pressed or touch devices - toggle selected option\r\n\t\t\t\t\tthis.realOptions[clickedIndex].selected = !this.realOptions[clickedIndex].selected;\r\n\t\t\t\t} else if (e.shiftKey) {\r\n\t\t\t\t\t// if SHIFT pressed - update selection\r\n\t\t\t\t\trange = [this.lastClickedIndex, clickedIndex].sort(function(a, b) {\r\n\t\t\t\t\t\treturn a - b;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.realOptions.each(function(index, option) {\r\n\t\t\t\t\t\toption.selected = (index >= range[0] && index <= range[1]);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// set single selected index\r\n\t\t\t\t\tthis.element.prop('selectedIndex', clickedIndex);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.element.prop('selectedIndex', clickedIndex);\r\n\t\t\t}\r\n\r\n\t\t\t// save last clicked option\r\n\t\t\tif (!e.shiftKey) {\r\n\t\t\t\tthis.lastClickedIndex = clickedIndex;\r\n\t\t\t}\r\n\r\n\t\t\t// refresh classes\r\n\t\t\tthis.refreshSelectedClass();\r\n\r\n\t\t\t// scroll to active item in desktop browsers\r\n\t\t\tif (pointerType === 'mouse') {\r\n\t\t\t\tthis.scrollToActiveOption();\r\n\t\t\t}\r\n\r\n\t\t\t// make callback when item selected\r\n\t\t\t$(this).trigger('select');\r\n\t\t},\r\n\t\trebuildList: function() {\r\n\t\t\t// rebuild options\r\n\t\t\tvar self = this,\r\n\t\t\t\trootElement = this.element[0];\r\n\r\n\t\t\t// recursively create fake options\r\n\t\t\tthis.storedSelectHTML = rootElement.innerHTML;\r\n\t\t\tthis.optionIndex = 0;\r\n\t\t\tthis.list = $(this.createOptionsList(rootElement));\r\n\t\t\tthis.listHolder.empty().append(this.list);\r\n\t\t\tthis.realOptions = this.element.find('option');\r\n\t\t\tthis.fakeOptions = this.list.find(this.indexSelector);\r\n\t\t\tthis.fakeListItems = this.list.find('.' + this.options.captionClass + ',' + this.indexSelector);\r\n\t\t\tdelete this.optionIndex;\r\n\r\n\t\t\t// detect max visible items\r\n\t\t\tvar maxCount = this.options.maxVisibleItems,\r\n\t\t\t\tsizeValue = this.element.prop('size');\r\n\t\t\tif (sizeValue > 1 && !this.element.is('[jcf-size]')) {\r\n\t\t\t\tmaxCount = sizeValue;\r\n\t\t\t}\r\n\r\n\t\t\t// handle scrollbar\r\n\t\t\tvar needScrollBar = this.fakeOptions.length > maxCount;\r\n\t\t\tthis.container.toggleClass(this.options.scrollClass, needScrollBar);\r\n\t\t\tif (needScrollBar) {\r\n\t\t\t\t// change max-height\r\n\t\t\t\tthis.listHolder.css({\r\n\t\t\t\t\tmaxHeight: this.getOverflowHeight(maxCount),\r\n\t\t\t\t\toverflow: 'auto'\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (this.options.useCustomScroll && jcf.modules.Scrollable) {\r\n\t\t\t\t\t// add custom scrollbar if specified in options\r\n\t\t\t\t\tjcf.replace(this.listHolder, 'Scrollable', {\r\n\t\t\t\t\t\thandleResize: this.options.handleResize,\r\n\t\t\t\t\t\talwaysPreventMouseWheel: this.options.alwaysPreventMouseWheel\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// disable edge wheel scrolling\r\n\t\t\tif (this.options.alwaysPreventMouseWheel) {\r\n\t\t\t\tthis.preventWheelHandler = function(e) {\r\n\t\t\t\t\tvar currentScrollTop = self.listHolder.scrollTop(),\r\n\t\t\t\t\t\tmaxScrollTop = self.listHolder.prop('scrollHeight') - self.listHolder.innerHeight();\r\n\r\n\t\t\t\t\t// check edge cases\r\n\t\t\t\t\tif ((currentScrollTop <= 0 && e.deltaY < 0) || (currentScrollTop >= maxScrollTop && e.deltaY > 0)) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tthis.listHolder.on('jcf-mousewheel', this.preventWheelHandler);\r\n\t\t\t}\r\n\t\t},\r\n\t\trefreshSelectedClass: function() {\r\n\t\t\tvar self = this,\r\n\t\t\t\tselectedItem,\r\n\t\t\t\tisMultiple = this.element.prop('multiple'),\r\n\t\t\t\tselectedIndex = this.element.prop('selectedIndex');\r\n\r\n\t\t\tif (isMultiple) {\r\n\t\t\t\tthis.realOptions.each(function(index, option) {\r\n\t\t\t\t\tself.fakeOptions.eq(index).toggleClass(self.options.selectedClass, !!option.selected);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.fakeOptions.removeClass(this.options.selectedClass + ' ' + this.options.hoverClass);\r\n\t\t\t\tselectedItem = this.fakeOptions.eq(selectedIndex).addClass(this.options.selectedClass);\r\n\t\t\t\tif (this.options.useHoverClass) {\r\n\t\t\t\t\tselectedItem.addClass(this.options.hoverClass);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tscrollToActiveOption: function() {\r\n\t\t\t// scroll to target option\r\n\t\t\tvar targetOffset = this.getActiveOptionOffset();\r\n\t\t\tif (typeof targetOffset === 'number') {\r\n\t\t\t\tthis.listHolder.prop('scrollTop', targetOffset);\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetSelectedOptionsIndexes: function() {\r\n\t\t\tvar selection = [];\r\n\t\t\tthis.realOptions.each(function(index, option) {\r\n\t\t\t\tif (option.selected) {\r\n\t\t\t\t\tselection.push(index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn selection;\r\n\t\t},\r\n\t\tgetChangedSelectedIndex: function() {\r\n\t\t\tvar selectedIndex = this.element.prop('selectedIndex'),\r\n\t\t\t\tself = this,\r\n\t\t\t\tfound = false,\r\n\t\t\t\ttargetIndex = null;\r\n\r\n\t\t\tif (this.element.prop('multiple')) {\r\n\t\t\t\t// multiple selects handling\r\n\t\t\t\tthis.currentSelection = this.getSelectedOptionsIndexes();\r\n\t\t\t\t$.each(this.currentSelection, function(index, optionIndex) {\r\n\t\t\t\t\tif (!found && self.previousSelection.indexOf(optionIndex) < 0) {\r\n\t\t\t\t\t\tif (index === 0) {\r\n\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttargetIndex = optionIndex;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.previousSelection = this.currentSelection;\r\n\t\t\t\treturn targetIndex;\r\n\t\t\t} else {\r\n\t\t\t\t// single choice selects handling\r\n\t\t\t\treturn selectedIndex;\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetActiveOptionOffset: function() {\r\n\t\t\t// calc values\r\n\t\t\tvar currentIndex = this.getChangedSelectedIndex();\r\n\r\n\t\t\t// selection was not changed\r\n\t\t\tif (currentIndex === null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// find option and scroll to it if needed\r\n\t\t\tvar dropHeight = this.listHolder.height(),\r\n\t\t\t\tdropScrollTop = this.listHolder.prop('scrollTop'),\r\n\t\t\t\tfakeOption = this.fakeOptions.eq(currentIndex),\r\n\t\t\t\tfakeOptionOffset = fakeOption.offset().top - this.list.offset().top,\r\n\t\t\t\tfakeOptionHeight = fakeOption.innerHeight();\r\n\r\n\t\t\t// scroll list\r\n\t\t\tif (fakeOptionOffset + fakeOptionHeight >= dropScrollTop + dropHeight) {\r\n\t\t\t\t// scroll down (always scroll to option)\r\n\t\t\t\treturn fakeOptionOffset - dropHeight + fakeOptionHeight;\r\n\t\t\t} else if (fakeOptionOffset < dropScrollTop) {\r\n\t\t\t\t// scroll up to option\r\n\t\t\t\treturn fakeOptionOffset;\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetOverflowHeight: function(sizeValue) {\r\n\t\t\tvar item = this.fakeListItems.eq(sizeValue - 1),\r\n\t\t\t\tlistOffset = this.list.offset().top,\r\n\t\t\t\titemOffset = item.offset().top,\r\n\t\t\t\titemHeight = item.innerHeight();\r\n\r\n\t\t\treturn itemOffset + itemHeight - listOffset;\r\n\t\t},\r\n\t\tgetScrollTop: function() {\r\n\t\t\treturn this.listHolder.scrollTop();\r\n\t\t},\r\n\t\tsetScrollTop: function(value) {\r\n\t\t\tthis.listHolder.scrollTop(value);\r\n\t\t},\r\n\t\tcreateOption: function(option) {\r\n\t\t\tvar newOption = document.createElement('span');\r\n\t\t\tnewOption.className = this.options.optionClass;\r\n\t\t\tnewOption.innerHTML = option.innerHTML;\r\n\t\t\tnewOption.setAttribute(this.options.indexAttribute, this.optionIndex++);\r\n\r\n\t\t\tvar optionImage, optionImageSrc = option.getAttribute('data-image');\r\n\t\t\tif (optionImageSrc) {\r\n\t\t\t\toptionImage = document.createElement('img');\r\n\t\t\t\toptionImage.src = optionImageSrc;\r\n\t\t\t\tnewOption.insertBefore(optionImage, newOption.childNodes[0]);\r\n\t\t\t}\r\n\t\t\tif (option.disabled) {\r\n\t\t\t\tnewOption.className += ' ' + this.options.disabledClass;\r\n\t\t\t}\r\n\t\t\tif (option.className) {\r\n\t\t\t\tnewOption.className += ' ' + getPrefixedClasses(option.className, this.options.cloneClassPrefix);\r\n\t\t\t}\r\n\t\t\treturn newOption;\r\n\t\t},\r\n\t\tcreateOptGroup: function(optgroup) {\r\n\t\t\tvar optGroupContainer = document.createElement('span'),\r\n\t\t\t\toptGroupName = optgroup.getAttribute('label'),\r\n\t\t\t\toptGroupCaption, optGroupList;\r\n\r\n\t\t\t// create caption\r\n\t\t\toptGroupCaption = document.createElement('span');\r\n\t\t\toptGroupCaption.className = this.options.captionClass;\r\n\t\t\toptGroupCaption.innerHTML = optGroupName;\r\n\t\t\toptGroupContainer.appendChild(optGroupCaption);\r\n\r\n\t\t\t// create list of options\r\n\t\t\tif (optgroup.children.length) {\r\n\t\t\t\toptGroupList = this.createOptionsList(optgroup);\r\n\t\t\t\toptGroupContainer.appendChild(optGroupList);\r\n\t\t\t}\r\n\r\n\t\t\toptGroupContainer.className = this.options.groupClass;\r\n\t\t\treturn optGroupContainer;\r\n\t\t},\r\n\t\tcreateOptionContainer: function() {\r\n\t\t\tvar optionContainer = document.createElement('li');\r\n\t\t\treturn optionContainer;\r\n\t\t},\r\n\t\tcreateOptionsList: function(container) {\r\n\t\t\tvar self = this,\r\n\t\t\t\tlist = document.createElement('ul');\r\n\r\n\t\t\t$.each(container.children, function(index, currentNode) {\r\n\t\t\t\tvar item = self.createOptionContainer(currentNode),\r\n\t\t\t\t\tnewNode;\r\n\r\n\t\t\t\tswitch (currentNode.tagName.toLowerCase()) {\r\n\t\t\t\t\tcase 'option': newNode = self.createOption(currentNode); break;\r\n\t\t\t\t\tcase 'optgroup': newNode = self.createOptGroup(currentNode); break;\r\n\t\t\t\t}\r\n\t\t\t\tlist.appendChild(item).appendChild(newNode);\r\n\t\t\t});\r\n\t\t\treturn list;\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\t// check for select innerHTML changes\r\n\t\t\tif (this.storedSelectHTML !== this.element.prop('innerHTML')) {\r\n\t\t\t\tthis.rebuildList();\r\n\t\t\t}\r\n\r\n\t\t\t// refresh custom scrollbar\r\n\t\t\tvar scrollInstance = jcf.getInstance(this.listHolder);\r\n\t\t\tif (scrollInstance) {\r\n\t\t\t\tscrollInstance.refresh();\r\n\t\t\t}\r\n\r\n\t\t\t// refresh selectes classes\r\n\t\t\tthis.refreshSelectedClass();\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\tthis.listHolder.off('jcf-mousewheel', this.preventWheelHandler);\r\n\t\t\tthis.listHolder.off('jcf-pointerdown', this.indexSelector, this.onSelectItem);\r\n\t\t\tthis.listHolder.off('jcf-pointerover', this.indexSelector, this.onHoverItem);\r\n\t\t\tthis.listHolder.off('jcf-pointerdown', this.onPress);\r\n\t\t}\r\n\t});\r\n\r\n\t// helper functions\r\n\tvar getPrefixedClasses = function(className, prefixToAdd) {\r\n\t\treturn className ? className.replace(/[\\s]*([\\S]+)+[\\s]*/gi, prefixToAdd + '$1 ') : '';\r\n\t};\r\n\tvar makeUnselectable = (function() {\r\n\t\tvar unselectableClass = jcf.getOptions().unselectableClass;\r\n\t\tfunction preventHandler(e) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\treturn function(node) {\r\n\t\t\tnode.addClass(unselectableClass).on('selectstart', preventHandler);\r\n\t\t};\r\n\t}());\r\n\r\n\treturn module;\r\n});\r\n\r\n}(jcf));\r\n","/*!\r\n * JavaScript Custom Forms : Textarea Module\r\n *\r\n * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf\r\n * Released under the MIT license (LICENSE.txt)\r\n *\r\n * Version: 1.2.3\r\n */\r\n\r\n(function(jcf) {\r\n\r\njcf.addModule(function($) {\r\n\t'use strict';\r\n\r\n\treturn {\r\n\t\tname: 'Textarea',\r\n\t\tselector: 'textarea',\r\n\t\toptions: {\r\n\t\t\tresize: true,\r\n\t\t\tresizerStructure: '',\r\n\t\t\tfakeStructure: ''\r\n\t\t},\r\n\t\tmatchElement: function(element) {\r\n\t\t\treturn element.is('textarea');\r\n\t\t},\r\n\t\tinit: function() {\r\n\t\t\tthis.initStructure();\r\n\t\t\tthis.attachEvents();\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tinitStructure: function() {\r\n\t\t\t// prepare structure\r\n\t\t\tthis.doc = $(document);\r\n\t\t\tthis.realElement = $(this.options.element);\r\n\t\t\tthis.fakeElement = $(this.options.fakeStructure).insertAfter(this.realElement);\r\n\t\t\tthis.resizer = $(this.options.resizerStructure).appendTo(this.fakeElement);\r\n\r\n\t\t\t// add custom scrollbar\r\n\t\t\tif (jcf.modules.Scrollable) {\r\n\t\t\t\tthis.realElement.prependTo(this.fakeElement).addClass().css({\r\n\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\tresize: 'none'\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.scrollable = new jcf.modules.Scrollable({\r\n\t\t\t\t\telement: this.realElement,\r\n\t\t\t\t\talwaysShowScrollbars: true\r\n\t\t\t\t});\r\n\t\t\t\tthis.scrollable.setScrollBarEdge(this.resizer.outerHeight());\r\n\t\t\t}\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\t// add event handlers\r\n\t\t\tthis.realElement.on({\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\tkeyup: this.onChange,\r\n\t\t\t\tchange: this.onChange\r\n\t\t\t});\r\n\r\n\t\t\tthis.resizer.on('jcf-pointerdown', this.onResizePress);\r\n\t\t},\r\n\t\tonResizePress: function(e) {\r\n\t\t\tvar resizerOffset = this.resizer.offset(),\r\n\t\t\t\tareaOffset = this.fakeElement.offset();\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.dragData = {\r\n\t\t\t\tareaOffset: areaOffset,\r\n\t\t\t\tinnerOffsetLeft: e.pageX - resizerOffset.left,\r\n\t\t\t\tinnerOffsetTop: e.pageY - resizerOffset.top\r\n\t\t\t};\r\n\t\t\tthis.doc.on({\r\n\t\t\t\t'jcf-pointermove': this.onResizeMove,\r\n\t\t\t\t'jcf-pointerup': this.onResizeRelease\r\n\t\t\t});\r\n\r\n\t\t\t// restore focus\r\n\t\t\tif (this.isFocused) {\r\n\t\t\t\tthis.focusedDrag = true;\r\n\t\t\t\tthis.realElement.focus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonResizeMove: function(e) {\r\n\t\t\tvar newWidth = e.pageX + this.dragData.innerOffsetLeft - this.dragData.areaOffset.left,\r\n\t\t\t\tnewHeight = e.pageY + this.dragData.innerOffsetTop - this.dragData.areaOffset.top,\r\n\t\t\t\twidthDiff = this.fakeElement.innerWidth() - this.realElement.innerWidth();\r\n\r\n\t\t\t// prevent text selection or page scroll on touch devices\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\t// resize textarea and refresh scrollbars\r\n\t\t\tthis.realElement.innerWidth(newWidth - widthDiff).innerHeight(newHeight);\r\n\r\n\t\t\tif (this.scrollable) {\r\n\t\t\t\tthis.scrollable.rebuildScrollbars();\r\n\t\t\t}\r\n\r\n\t\t\t// restore focus\r\n\t\t\tif (this.focusedDrag) {\r\n\t\t\t\tthis.realElement.focus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonResizeRelease: function() {\r\n\t\t\tthis.doc.off({\r\n\t\t\t\t'jcf-pointermove': this.onResizeMove,\r\n\t\t\t\t'jcf-pointerup': this.onResizeRelease\r\n\t\t\t});\r\n\r\n\t\t\tdelete this.focusedDrag;\r\n\t\t},\r\n\t\tonFocus: function() {\r\n\t\t\tthis.isFocused = true;\r\n\t\t\tthis.fakeElement.addClass(this.options.focusClass);\r\n\t\t\tthis.realElement.on('blur', this.onBlur);\r\n\t\t},\r\n\t\tonBlur: function() {\r\n\t\t\tthis.isFocused = false;\r\n\t\t\tthis.fakeElement.removeClass(this.options.focusClass);\r\n\t\t\tthis.realElement.off('blur', this.onBlur);\r\n\t\t},\r\n\t\tonChange: function() {\r\n\t\t\tthis.refreshCustomScrollbars();\r\n\t\t},\r\n\t\trefreshCustomScrollbars: function() {\r\n\t\t\tif (this.scrollable) {\r\n\t\t\t\tif (this.isFocused) {\r\n\t\t\t\t\tthis.scrollable.redrawScrollbars();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.scrollable.rebuildScrollbars();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\t// refresh custom scroll position\r\n\t\t\tvar isDisabled = this.realElement.is(':disabled');\r\n\t\t\tthis.fakeElement.toggleClass(this.options.disabledClass, isDisabled);\r\n\t\t\tthis.refreshCustomScrollbars();\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\t// destroy custom scrollbar\r\n\t\t\tthis.scrollable.destroy();\r\n\r\n\t\t\t// restore styles and remove event listeners\r\n\t\t\tthis.realElement.css({\r\n\t\t\t\toverflow: '',\r\n\t\t\t\tresize: ''\r\n\t\t\t}).insertBefore(this.fakeElement).off({\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\tblur: this.onBlur\r\n\t\t\t});\r\n\r\n\t\t\t// remove scrollbar and fake wrapper\r\n\t\t\tthis.fakeElement.remove();\r\n\t\t}\r\n\t};\r\n});\r\n\r\n}(jcf));\r\n","/*!\r\n * JavaScript Custom Forms\r\n *\r\n * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf\r\n * Released under the MIT license (LICENSE.txt)\r\n *\r\n * Version: 1.2.3\r\n */\r\n;(function(root, factory) {\r\n\t'use strict';\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(['jquery'], factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\tmodule.exports = factory(require('jquery'));\r\n\t} else {\r\n\t\troot.jcf = factory(jQuery);\r\n\t}\r\n}(this, function($) {\r\n\t'use strict';\r\n\r\n\t// define version\r\n\tvar version = '1.2.3';\r\n\r\n\t// private variables\r\n\tvar customInstances = [];\r\n\r\n\t// default global options\r\n\tvar commonOptions = {\r\n\t\toptionsKey: 'jcf',\r\n\t\tdataKey: 'jcf-instance',\r\n\t\trtlClass: 'jcf-rtl',\r\n\t\tfocusClass: 'jcf-focus',\r\n\t\tpressedClass: 'jcf-pressed',\r\n\t\tdisabledClass: 'jcf-disabled',\r\n\t\thiddenClass: 'jcf-hidden',\r\n\t\tresetAppearanceClass: 'jcf-reset-appearance',\r\n\t\tunselectableClass: 'jcf-unselectable'\r\n\t};\r\n\r\n\t// detect device type\r\n\tvar isTouchDevice = ('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch,\r\n\t\tisWinPhoneDevice = /Windows Phone/.test(navigator.userAgent);\r\n\tcommonOptions.isMobileDevice = !!(isTouchDevice || isWinPhoneDevice);\r\n\r\n\t// create global stylesheet if custom forms are used\r\n\tvar createStyleSheet = function() {\r\n\t\tvar styleTag = $('' +\n this.getLinearGradient(this._uid + '_SVGID_1_', a.emptyColor, a.emptyColor, a.starShape) +\n this.getLinearGradient(this._uid + '_SVGID_2_', a.hoverColor, a.hoverColor, a.starShape) +\n this.getLinearGradient(this._uid + '_SVGID_3_', a.starGradient.start, a.starGradient.end, a.starShape) +\n this.getVectorPath(this._uid, {\n starShape: a.starShape,\n strokeWidth: a.strokeWidth,\n strokeColor: a.strokeColor\n }) +\n '',\n d = '',\n e = 0;\n e < a.totalStars;\n e++\n )\n d += c;\n this.$el.append(d), (this.$stars = this.$el.find('.jq-star'));\n },\n getVectorPath: function(a, b) {\n return 'rounded' === b.starShape ? this.getRoundedVectorPath(a, b) : this.getSpikeVectorPath(a, b);\n },\n getSpikeVectorPath: function(a, b) {\n return (\n ''\n );\n },\n getRoundedVectorPath: function(a, b) {\n var c =\n 'M520.9,336.5c-3.8-11.8-14.2-20.5-26.5-22.2l-140.9-20.5l-63-127.7 c-5.5-11.2-16.8-18.2-29.3-18.2c-12.5,0-23.8,7-29.3,18.2l-63,127.7L28,314.2C15.7,316,5.4,324.7,1.6,336.5S1,361.3,9.9,370 l102,99.4l-24,140.3c-2.1,12.3,2.9,24.6,13,32c5.7,4.2,12.4,6.2,19.2,6.2c5.2,0,10.5-1.2,15.2-3.8l126-66.3l126,66.2 c4.8,2.6,10,3.8,15.2,3.8c6.8,0,13.5-2.1,19.2-6.2c10.1-7.3,15.1-19.7,13-32l-24-140.3l102-99.4 C521.6,361.3,524.8,348.3,520.9,336.5z';\n return (\n ''\n );\n },\n getSvgDimensions: function(a) {\n return 'rounded' === a\n ? 'width=\"550px\" height=\"500.2px\" viewBox=\"0 146.8 550 500.2\" style=\"enable-background:new 0 0 550 500.2;'\n : 'x=\"0px\" y=\"0px\" width=\"305px\" height=\"305px\" viewBox=\"60 -62 309 309\" style=\"enable-background:new 64 -59 305 305;';\n },\n getLinearGradient: function(a, b, c, d) {\n var e = 'rounded' === d ? 500 : 250;\n return (\n ' '\n );\n },\n executeCallback: function(a, b) {\n var c = this.settings.callback;\n c(a, b);\n }\n },\n g = {\n unload: function() {\n var c = 'plugin_' + b,\n d = a(this),\n e = d.data(c).$stars;\n e.off(), d.removeData(c).remove();\n },\n setRating: function(c, d) {\n var e = 'plugin_' + b,\n f = a(this),\n g = f.data(e);\n c > g.settings.totalStars || 0 > c || (d && (c = Math.round(c)), g.applyRating(c));\n },\n getRating: function() {\n var c = 'plugin_' + b,\n d = a(this),\n e = d.data(c);\n return e._state.rating;\n },\n resize: function(c) {\n var d = 'plugin_' + b,\n e = a(this),\n f = e.data(d),\n g = f.$stars;\n return 1 >= c || c > 200\n ? void console.error('star size out of bounds')\n : ((g = Array.prototype.slice.call(g)),\n void g.forEach(function(b) {\n a(b).css({ width: c + 'px', height: c + 'px' });\n }));\n },\n setReadOnly: function(c) {\n var d = 'plugin_' + b,\n e = a(this),\n f = e.data(d);\n c === !0 ? f.$stars.off('mouseover mouseout click') : ((f.settings.readOnly = !1), f.addListeners());\n }\n };\n a.extend(e.prototype, f),\n (a.fn[b] = function(c) {\n if (!a.isPlainObject(c)) {\n if (g.hasOwnProperty(c)) return g[c].apply(this, Array.prototype.slice.call(arguments, 1));\n a.error('Method ' + c + ' does not exist on ' + b + '.js');\n }\n return this.each(function() {\n a.data(this, 'plugin_' + b) || a.data(this, 'plugin_' + b, new e(this, c));\n });\n });\n})(jQuery, window, document);\n","export var Numbers;\n(function (Numbers) {\n Numbers.parseOrElse = function (str, or) {\n if (or === void 0) { or = '0'; }\n if (str) {\n return parseInt(str);\n }\n return or && typeof or === 'string' ? parseInt(or) : 0;\n };\n})(Numbers || (Numbers = {}));\n//# sourceMappingURL=Numbers.js.map","import { Numbers } from './Numbers';\nexport var Element;\n(function (Element) {\n var isElement = function (element) { return element instanceof HTMLElement; };\n Element.setStyles = function (element, styles) {\n Object.keys(styles).map(function (key) {\n element.style[key] = styles[key];\n });\n };\n Element.getBoxStyles = function (element) {\n var computedValue = window.getComputedStyle(element);\n return {\n height: Numbers.parseOrElse(computedValue.height),\n padding: {\n top: Numbers.parseOrElse(computedValue.paddingTop),\n bottom: Numbers.parseOrElse(computedValue.paddingBottom),\n },\n border: {\n top: Numbers.parseOrElse(computedValue.borderTopWidth),\n bottom: Numbers.parseOrElse(computedValue.borderBottomWidth),\n },\n };\n };\n Element.getElement = function (element) {\n if (isElement(element)) {\n return element;\n }\n var elementFromSelector = document.querySelector(element);\n if (isElement(elementFromSelector)) {\n return elementFromSelector;\n }\n throw new Error('Your element does not exist in the DOM.');\n };\n Element.setAttribute = function (element, attribute, value) {\n element.setAttribute(attribute, value);\n };\n Element.getAttribute = function (element, attribute) {\n return element.getAttribute(attribute);\n };\n})(Element || (Element = {}));\n//# sourceMappingURL=Element.js.map","export var Events;\n(function (Events) {\n Events.on = function (element, event, callback) {\n element.addEventListener(event, callback);\n return {\n destroy: function () { return element && element.removeEventListener(event, callback); },\n };\n };\n})(Events || (Events = {}));\n//# sourceMappingURL=Event.js.map","export default function headerMenu() {\n const wrapper = document.querySelector('.header_menu');\n const trigger = document.querySelector('.menu-trigger');\n\n const ACTIVE_CLASS = {\n MENU: 'header_menu--active',\n TRIGGER: 'menu-trigger--active'\n };\n\n function toggleMenu() {\n wrapper.classList.toggle(ACTIVE_CLASS.MENU);\n trigger.classList.toggle(ACTIVE_CLASS.TRIGGER);\n\n if (document.body.classList.contains('_lock')) {\n document.body.classList.remove('_lock');\n } else {\n document.body.classList.add('_lock');\n }\n }\n\n function hideMenu() {\n wrapper.classList.remove(ACTIVE_CLASS.MENU);\n trigger.classList.remove(ACTIVE_CLASS.TRIGGER);\n }\n\n trigger.addEventListener('click', toggleMenu);\n window.addEventListener('resize', hideMenu);\n}\n","export default function debounce(func, timeout) {\n var timeoutID,\n timeout = timeout || 200;\n return function() {\n var scope = this,\n args = arguments;\n clearTimeout(timeoutID);\n timeoutID = setTimeout(function() {\n func.apply(scope, Array.prototype.slice.call(args));\n }, timeout);\n };\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Element } from './Element';\nimport { Events } from './Event';\nexport var Animate;\n(function (Animate) {\n var slideToggleAttribute = 'data-slide-toggle';\n var onRequestAnimationFrame = function (callback) {\n requestAnimationFrame(callback);\n };\n var getTransition = function (options) {\n var _a = options.miliseconds, miliseconds = _a === void 0 ? 200 : _a, _b = options.transitionFunction, transitionFunction = _b === void 0 ? 'linear' : _b;\n return \"all \" + miliseconds + \"ms \" + transitionFunction + \" 0s\";\n };\n var isHidden = function (element) { return Element.getAttribute(element, slideToggleAttribute) === 'false'; };\n var isShown = function (element) { return Element.getAttribute(element, slideToggleAttribute) === 'true'; };\n Animate.shouldCollapse = function (element) {\n var attribute = Element.getAttribute(element, slideToggleAttribute);\n if (!attribute) {\n var height = Element.getBoxStyles(element).height;\n return height && height > 0;\n }\n return Element.getAttribute(element, slideToggleAttribute) === 'true';\n };\n Animate.hide = function (element, options) {\n var _a;\n if (isHidden(element)) {\n return;\n }\n (_a = options.onAnimationStart) === null || _a === void 0 ? void 0 : _a.call(options);\n var _b = Element.getBoxStyles(element), height = _b.height, boxStyles = __rest(_b, [\"height\"]);\n Element.setStyles(element, { transition: '' });\n onRequestAnimationFrame(function () {\n Element.setStyles(element, {\n overflow: 'hidden',\n height: height + \"px\",\n paddingTop: boxStyles.padding.top + \"px\",\n paddingBottom: boxStyles.padding.bottom + \"px\",\n borderTopWidth: boxStyles.border.top + \"px\",\n borderBottomWidth: boxStyles.border.bottom + \"px\",\n transition: getTransition(options),\n });\n onRequestAnimationFrame(function () {\n Element.setStyles(element, {\n height: '0',\n paddingTop: '0',\n paddingBottom: '0',\n borderTopWidth: '0',\n borderBottomWidth: '0',\n });\n var event = Events.on(element, 'transitionend', function () {\n var _a;\n event.destroy();\n (_a = options.onAnimationEnd) === null || _a === void 0 ? void 0 : _a.call(options);\n });\n });\n });\n Element.setAttribute(element, slideToggleAttribute, 'false');\n };\n Animate.show = function (element, options) {\n var _a;\n if (isShown(element)) {\n return;\n }\n var _b = options.elementDisplayStyle, elementDisplayStyle = _b === void 0 ? 'block' : _b;\n (_a = options.onAnimationStart) === null || _a === void 0 ? void 0 : _a.call(options);\n Element.setStyles(element, {\n transition: '',\n display: elementDisplayStyle,\n height: 'auto',\n paddingTop: '',\n paddingBottom: '',\n borderTopWidth: '',\n borderBottomWidth: '',\n });\n var _c = Element.getBoxStyles(element), height = _c.height, boxStyles = __rest(_c, [\"height\"]);\n Element.setStyles(element, {\n display: 'none',\n });\n onRequestAnimationFrame(function () {\n Element.setStyles(element, {\n display: elementDisplayStyle,\n overflow: 'hidden',\n height: '0',\n paddingTop: '0',\n paddingBottom: '0',\n borderTopWidth: '0',\n borderBottomWidth: '0',\n transition: getTransition(options),\n });\n onRequestAnimationFrame(function () {\n Element.setStyles(element, {\n height: height + \"px\",\n paddingTop: boxStyles.padding.top + \"px\",\n paddingBottom: boxStyles.padding.bottom + \"px\",\n borderTopWidth: boxStyles.border.top + \"px\",\n borderBottomWidth: boxStyles.border.bottom + \"px\",\n });\n var event = Events.on(element, 'transitionend', function () {\n var _a;\n Element.setStyles(element, {\n height: '',\n overflow: '',\n paddingTop: '',\n paddingBottom: '',\n borderTopWidth: '',\n borderBottomWidth: '',\n });\n event.destroy();\n (_a = options.onAnimationEnd) === null || _a === void 0 ? void 0 : _a.call(options);\n });\n });\n });\n Element.setAttribute(element, slideToggleAttribute, 'true');\n };\n})(Animate || (Animate = {}));\n//# sourceMappingURL=Animate.js.map","import { Animate, Element } from '../utils';\nvar Hide;\n(function (Hide) {\n Hide.on = function (element, options) {\n Animate.hide(element, options);\n };\n})(Hide || (Hide = {}));\nexport var hide = function (element, options) {\n Hide.on(Element.getElement(element), options);\n};\n//# sourceMappingURL=hide.js.map","import { Animate, Element } from '../utils';\nvar Show;\n(function (Show) {\n Show.on = function (element, options) {\n Animate.show(element, options);\n };\n})(Show || (Show = {}));\nexport var show = function (element, options) {\n Show.on(Element.getElement(element), options);\n};\n//# sourceMappingURL=show.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Animate, Element } from '../utils';\nvar Toggle;\n(function (Toggle) {\n var onHideEnd = function (options) {\n return function () {\n var _a, _b;\n (_a = options.onClose) === null || _a === void 0 ? void 0 : _a.call(options);\n (_b = options.onAnimationEnd) === null || _b === void 0 ? void 0 : _b.call(options);\n };\n };\n var onShowEnd = function (options) {\n return function () {\n var _a, _b;\n (_a = options.onOpen) === null || _a === void 0 ? void 0 : _a.call(options);\n (_b = options.onAnimationEnd) === null || _b === void 0 ? void 0 : _b.call(options);\n };\n };\n Toggle.on = function (element, options) {\n if (Animate.shouldCollapse(element)) {\n Animate.hide(element, __assign(__assign({}, options), { onAnimationEnd: onHideEnd(options) }));\n }\n else {\n Animate.show(element, __assign(__assign({}, options), { onAnimationEnd: onShowEnd(options) }));\n }\n };\n})(Toggle || (Toggle = {}));\nexport var toggle = function (element, options) {\n Toggle.on(Element.getElement(element), options);\n};\n//# sourceMappingURL=toggle.js.map","import { show, hide, toggle } from 'slidetoggle';\n\nexport default function accordion(accordionSelector, triggerSelector, activeClass) {\n const accordion = document.querySelectorAll(accordionSelector);\n const triggers = document.querySelectorAll(triggerSelector);\n\n const ANIMATION_OPTIONS = {\n MILLISECONDS: 200,\n TRANSITION: 'ease-in-out'\n };\n\n function slideUp(content) {\n hide(content, ANIMATION_OPTIONS);\n }\n\n function slideToggle(content) {\n toggle(content, ANIMATION_OPTIONS);\n }\n\n accordion.forEach(item => {\n const isClosedOnStart = item.classList.contains('js-acco-closed-on-start');\n\n if (!isClosedOnStart) {\n const firstTrigger = item.querySelector(triggerSelector);\n const firstContent = firstTrigger.nextElementSibling;\n\n firstTrigger.classList.add(activeClass);\n show(firstContent, ANIMATION_OPTIONS);\n }\n });\n\n triggers.forEach(trigger => {\n trigger.addEventListener('click', () => {\n const isNotOpened = !trigger.classList.contains(activeClass);\n\n if (isNotOpened) {\n triggers.forEach(trigger => {\n const content = trigger.nextElementSibling;\n\n trigger.classList.remove(activeClass);\n slideUp(content);\n });\n }\n\n const content = trigger.nextElementSibling;\n\n trigger.classList.toggle(activeClass);\n slideToggle(content);\n });\n });\n}\n","export default function videoPlayer() {\n const wrapper = document.querySelector('.video-player');\n const poster = wrapper.querySelector('.video-player_poster');\n const iframe = wrapper.querySelector('iframe');\n\n if (!iframe) return;\n\n function handleClick() {\n iframe.src = `${iframe.src}?autoplay=1&mute=1`;\n poster.style.display = 'none';\n }\n\n wrapper.addEventListener('click', handleClick);\n}\n","import accordion from './accordion';\nimport tabs from './tabs';\nimport scrollToElement from './scrollToElement';\n\nexport default function toc() {\n const wrapper = document.querySelector('.toc_body');\n const textContainers = document.querySelectorAll('.text-container');\n\n textContainers.forEach(container => {\n const linksWrapper = document.createElement('div');\n const item = document.createElement('div');\n const h2 = container.querySelectorAll('h2');\n const category = document.createElement('button');\n\n h2.forEach(item => {\n const link = document.createElement('a');\n\n link.textContent = item.textContent;\n linksWrapper.append(link);\n });\n\n item.classList.add('toc_item');\n linksWrapper.classList.add('toc_links');\n category.classList.add('toc_category');\n\n category.textContent = container.dataset.tocTitle;\n\n item.append(category);\n item.append(linksWrapper);\n wrapper.append(item);\n });\n\n const links = document.querySelectorAll('.toc_links a');\n const h2 = document.querySelectorAll('.text-container h2');\n\n tabs('.toc_category', '.tab-item');\n accordion('.toc_body', '.toc_category', 'toc_category--active');\n scrollToElement(links, h2);\n}\n","export default function tabs(triggerSelector, contentSelector) {\n const tabsElements = {\n trigger: document.querySelectorAll(triggerSelector),\n content: document.querySelectorAll(contentSelector)\n };\n\n const STATE_CLASS = {\n ACTIVE: 'tab-item--visible',\n HIDDEN: 'tab-item--hidden'\n };\n\n const TRIGGER_ACTIVE_CLASS = 'js-tab-visible';\n\n function hideContent() {\n tabsElements.content.forEach(item => {\n item.classList.remove(STATE_CLASS.ACTIVE);\n item.classList.add(STATE_CLASS.HIDDEN);\n });\n }\n\n function showContent(i = 0) {\n tabsElements.content[i].classList.remove(STATE_CLASS.HIDDEN);\n tabsElements.content[i].classList.add(STATE_CLASS.ACTIVE);\n }\n\n function removeActiveClass() {\n tabsElements.trigger.forEach(item => {\n item.classList.remove(TRIGGER_ACTIVE_CLASS);\n });\n }\n\n function addActiveClass(i = 0) {\n tabsElements.trigger[i].classList.add(TRIGGER_ACTIVE_CLASS);\n }\n\n removeActiveClass();\n hideContent();\n addActiveClass();\n showContent();\n\n tabsElements.trigger.forEach((item, i) => {\n item.addEventListener('click', () => {\n const isTabbAlreadyActive = item.classList.contains(TRIGGER_ACTIVE_CLASS);\n\n if (isTabbAlreadyActive) return;\n removeActiveClass();\n addActiveClass(i);\n\n hideContent();\n showContent(i);\n });\n });\n}\n","export default function scrollToElement(trigger, targetElement) {\n const header = document.querySelector('.header');\n const headerHeight = header.clientHeight;\n const EXTRA_OFFSET = 30;\n\n trigger.forEach((item, i) => {\n const elementOffsetTop = targetElement[i].getBoundingClientRect().top;\n const offsetTop = elementOffsetTop - headerHeight - EXTRA_OFFSET;\n\n function scrollTo() {\n window.scroll({\n left: 0,\n top: offsetTop,\n behavior: 'smooth'\n });\n }\n\n item.addEventListener('click', scrollTo);\n });\n}\n","export default function loginForm() {\n const formWrapper = document.querySelector('.login-form');\n const inputs = formWrapper.querySelectorAll('input[id^=input]');\n const emailInput = inputs[0];\n const passwordInput = inputs[1];\n const emailInputContainer = emailInput.parentElement;\n const passwordInputContainer = passwordInput.parentElement;\n\n emailInput.placeholder = 'Email or Login';\n emailInputContainer.classList.add('ginput_container_email');\n\n passwordInput.placeholder = 'Password';\n passwordInputContainer.classList.add('ginput_container_password');\n}\n","/**\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","import { getWindow, getDocument } from 'ssr-window';\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\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 if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\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 return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (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 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 return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\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 const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\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 swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowEl && slideEl.shadowEl.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction findElementsInElements(elements = [], selector = '') {\n const found = [];\n elements.forEach(el => {\n found.push(...el.querySelectorAll(selector));\n });\n return found;\n}\nfunction elementChildren(element, selector = '') {\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\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}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty, getSlideTransformEl,\n// dom\nfindElementsInElements, createElement, elementChildren, elementOffset, elementPrevAll, elementNextAll, elementStyle, elementIndex, elementParents, elementTransitionEnd, elementOuterSize };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\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 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';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\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 }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\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 if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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 once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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 emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n 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 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};","export const processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nexport const preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\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};","import { elementStyle } from '../../shared/utils.js';\nexport default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, '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 { elementChildren, elementOuterSize, elementStyle, setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\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 function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\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 = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\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 if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\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 if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\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 for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', 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 if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\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 swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= 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 if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(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 if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\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 if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(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 }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}","export 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;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + 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 if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}","import { elementChildren, elementNextAll, elementPrevAll } from '../../shared/utils.js';\nexport default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}","import { preload } from '../../shared/process-lazy-preloader.js';\nexport function getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nexport default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","export default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\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 if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('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 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 if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\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 === 'string') {\n index = parseInt(index, 10);\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 if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\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 const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\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 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 }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = 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 wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\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 if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\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 enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\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 snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\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 if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\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 if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\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 if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import { elementChildren, nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\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 = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\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 if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\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 let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\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 if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (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 if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n 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 if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\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 pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {\n const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\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 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : 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;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 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 clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\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 if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","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 if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\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 if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { processLazyPreloader } from '../../shared/process-lazy-preloader.js';\nexport default function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\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';\nimport onLoad from './onLoad.js';\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\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 // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, 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 if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\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 if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}","export default {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\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\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: 5,\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 // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: 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 maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\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 if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\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 { extend, deleteProps, createElement, elementChildren, elementStyle, elementIndex } 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 checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nimport { processLazyPreloader, preload } from '../shared/process-lazy-preloader.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};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\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 if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\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 if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\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 });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\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 if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\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 // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\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: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\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');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\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 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 getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(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 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 if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // 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 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 if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(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 changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.shadowEl) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement ? el : wrapperEl,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\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');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\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 if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\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 progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n 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 if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\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;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\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 wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\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 if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\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 if (params.autoHeight) {\n swiper.updateAutoHeight();\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 loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { elementChildren } from '../../shared/utils.js';\nexport default function loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}","export default function loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n slideTo: false,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix(loopParams);\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix(loopParams);\n }\n }\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\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.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}","export default function unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\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 return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\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 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 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 if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nexport default {\n checkOverflow\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}\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\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 }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\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 let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\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 if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\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';\nimport { elementParents } from '../../../shared/utils.js';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\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 (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\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 const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.el);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.el, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.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 navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.shadowRoot.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\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 let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\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 if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","import { createElement, elementChildren } from './utils.js';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}","import { getDocument } from 'ssr-window';\nimport { elementChildren, isObject } from '../../shared/utils.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import { getSlideTransformEl } from './utils.js';\nexport default function effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","import { elementTransitionEnd } from './utils.js';\nexport default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides\n}) {\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowEl && slideEl.shadowEl === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}","import Swiper, { Navigation, Thumbs, EffectFade } from 'swiper';\nimport debounce from '../helpers/debounce';\n\nexport default function reviewSlider() {\n const OPTIONS = {\n SLIDER: {\n modules: [Navigation, Thumbs, EffectFade],\n effect: 'fade',\n autoHeight: true,\n breakpoints: {\n 1200: {\n allowTouchMove: false\n }\n },\n navigation: {\n nextEl: '.review-slider_arrow-next',\n prevEl: '.review-slider_arrow-prev'\n }\n },\n THUMBS: {\n spaceBetween: 20,\n freeMode: true,\n watchSlidesProgress: true,\n breakpoints: {\n 320: {\n slidesPerView: 2\n },\n 640: {\n slidesPerView: 3\n }\n }\n }\n };\n\n const thumbsSldier = new Swiper('.review-slider_thumbs .swiper', OPTIONS.THUMBS);\n const slider = new Swiper('.review-slider_quotes', {\n ...OPTIONS.SLIDER,\n thumbs: {\n swiper: thumbsSldier\n }\n });\n\n const updateDelay = 300;\n const sliderUpdate = debounce(() => {\n slider.update();\n }, updateDelay);\n\n window.addEventListener('resize', sliderUpdate);\n}\n","import '../libs/jquery.star-rating-svg.min';\n\nexport default function starsRating() {\n jQuery('.stars').starRating({\n initialRating: 4,\n activeColor: '#B46397',\n starShape: 'rounded',\n strokeWidth: 0,\n emptyColor: 'lightgray',\n useGradient: false,\n starSize: 24,\n readOnly: true\n });\n}\n","import isElementExist from './helpers/isElementExist.js';\nimport headerMenu from './modules/headerMenu';\nimport fixedHeader from './modules/fixedHeader';\nimport setHeaderVariable from './modules/setHeaderVariable';\nimport accordion from './modules/accordion';\nimport videoPlayer from './modules/videoPlayer';\nimport medicationChoice from './modules/medicationChoice';\nimport toc from './modules/toc';\nimport loginForm from './modules/loginForm';\n\nimport jcfInit from './modules/jcfInit';\nimport reviewSlider from './modules/reviewSlider';\nimport starsRating from './modules/starsRating';\n\nwindow.addEventListener('DOMContentLoaded', () => {\n isElementExist('.header', () => {\n fixedHeader();\n setHeaderVariable();\n });\n isElementExist('.header_menu', headerMenu);\n isElementExist('.accordion', () => accordion('.accordion', '.accordion_button', 'accordion_button--active'));\n isElementExist('.toc', toc);\n isElementExist('.review-slider', reviewSlider);\n isElementExist('.video-player', videoPlayer);\n isElementExist('.medications-box', medicationChoice);\n isElementExist('.stars', starsRating);\n isElementExist('.login-form', loginForm);\n jcfInit();\n});\n","import jcf from 'jcf';\n\nexport default function jcfInit() {\n var customSelect = jQuery('select');\n var customCheckbox = jQuery('input[type=\"checkbox\"]');\n var customRadio = jQuery('input[type=\"radio\"]');\n\n // all option see https://github.com/w3co/jcf\n jcf.setOptions('Select', {\n wrapNative: false,\n wrapNativeOnMobile: false,\n fakeDropInBody: false,\n maxVisibleItems: 6\n });\n\n jcf.setOptions('Checkbox', {});\n\n jcf.setOptions('Radio', {});\n\n // init only after option\n jcf.replace(customSelect);\n jcf.replace(customCheckbox);\n jcf.replace(customRadio);\n}\n","export default function fixedHeader() {\n const header = document.querySelector('.header');\n const headerHeight = header.clientHeight;\n const FIXED_CLASS = 'header--fixed';\n\n function windowScrollHandler() {\n if (window.scrollY > headerHeight) {\n header.classList.add(FIXED_CLASS);\n }\n\n if (window.scrollY === 0) {\n header.classList.remove(FIXED_CLASS);\n }\n }\n\n window.addEventListener('scroll', windowScrollHandler);\n}\n","import debounce from '../helpers/debounce';\nimport setRootProperty from '../helpers/setRootProperty';\n\nexport default function setHeaderVariable() {\n const header = document.querySelector('.header');\n const headerVariableName = 'header-height';\n const DELAY = 300;\n\n const setHeaderHeightVariable = debounce(() => {\n const headerHeight = header.offsetHeight;\n setRootProperty(headerVariableName, headerHeight);\n }, DELAY);\n\n window.addEventListener('load', setHeaderHeightVariable);\n window.addEventListener('resize', setHeaderHeightVariable);\n}\n","export default function setRootProperty(name, value) {\n const root = document.querySelector(':root');\n root.style.setProperty(`--${name}`, `${value}px`);\n}\n","/*!\r\n * JavaScript Custom Forms : Checkbox Module\r\n *\r\n * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf\r\n * Released under the MIT license (LICENSE.txt)\r\n *\r\n * Version: 1.2.3\r\n */\r\n\r\n(function(jcf) {\r\n\r\njcf.addModule(function($) {\r\n\t'use strict';\r\n\r\n\treturn {\r\n\t\tname: 'Checkbox',\r\n\t\tselector: 'input[type=\"checkbox\"]',\r\n\t\toptions: {\r\n\t\t\twrapNative: true,\r\n\t\t\tcheckedClass: 'jcf-checked',\r\n\t\t\tuncheckedClass: 'jcf-unchecked',\r\n\t\t\tlabelActiveClass: 'jcf-label-active',\r\n\t\t\tfakeStructure: ''\r\n\t\t},\r\n\t\tmatchElement: function(element) {\r\n\t\t\treturn element.is(':checkbox');\r\n\t\t},\r\n\t\tinit: function() {\r\n\t\t\tthis.initStructure();\r\n\t\t\tthis.attachEvents();\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tinitStructure: function() {\r\n\t\t\t// prepare structure\r\n\t\t\tthis.doc = $(document);\r\n\t\t\tthis.realElement = $(this.options.element);\r\n\t\t\tthis.fakeElement = $(this.options.fakeStructure).insertAfter(this.realElement);\r\n\t\t\tthis.labelElement = this.getLabelFor();\r\n\r\n\t\t\tif (this.options.wrapNative) {\r\n\t\t\t\t// wrap native checkbox inside fake block\r\n\t\t\t\tthis.realElement.appendTo(this.fakeElement).css({\r\n\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\theight: '100%',\r\n\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\topacity: 0,\r\n\t\t\t\t\tmargin: 0\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// just hide native checkbox\r\n\t\t\t\tthis.realElement.addClass(this.options.hiddenClass);\r\n\t\t\t}\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\t// add event handlers\r\n\t\t\tthis.realElement.on({\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\tclick: this.onRealClick\r\n\t\t\t});\r\n\t\t\tthis.fakeElement.on('click', this.onFakeClick);\r\n\t\t\tthis.fakeElement.on('jcf-pointerdown', this.onPress);\r\n\t\t},\r\n\t\tonRealClick: function(e) {\r\n\t\t\t// just redraw fake element (setTimeout handles click that might be prevented)\r\n\t\t\tvar self = this;\r\n\t\t\tthis.savedEventObject = e;\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tself.refresh();\r\n\t\t\t}, 0);\r\n\t\t},\r\n\t\tonFakeClick: function(e) {\r\n\t\t\t// skip event if clicked on real element inside wrapper\r\n\t\t\tif (this.options.wrapNative && this.realElement.is(e.target)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// toggle checked class\r\n\t\t\tif (!this.realElement.is(':disabled')) {\r\n\t\t\t\tdelete this.savedEventObject;\r\n\t\t\t\tthis.stateChecked = this.realElement.prop('checked');\r\n\t\t\t\tthis.realElement.prop('checked', !this.stateChecked);\r\n\t\t\t\tthis.fireNativeEvent(this.realElement, 'click');\r\n\t\t\t\tif (this.savedEventObject && this.savedEventObject.isDefaultPrevented()) {\r\n\t\t\t\t\tthis.realElement.prop('checked', this.stateChecked);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.fireNativeEvent(this.realElement, 'change');\r\n\t\t\t\t}\r\n\t\t\t\tdelete this.savedEventObject;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonFocus: function() {\r\n\t\t\tif (!this.pressedFlag || !this.focusedFlag) {\r\n\t\t\t\tthis.focusedFlag = true;\r\n\t\t\t\tthis.fakeElement.addClass(this.options.focusClass);\r\n\t\t\t\tthis.realElement.on('blur', this.onBlur);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonBlur: function() {\r\n\t\t\tif (!this.pressedFlag) {\r\n\t\t\t\tthis.focusedFlag = false;\r\n\t\t\t\tthis.fakeElement.removeClass(this.options.focusClass);\r\n\t\t\t\tthis.realElement.off('blur', this.onBlur);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonPress: function(e) {\r\n\t\t\tif (!this.focusedFlag && e.pointerType === 'mouse') {\r\n\t\t\t\tthis.realElement.focus();\r\n\t\t\t}\r\n\t\t\tthis.pressedFlag = true;\r\n\t\t\tthis.fakeElement.addClass(this.options.pressedClass);\r\n\t\t\tthis.doc.on('jcf-pointerup', this.onRelease);\r\n\t\t},\r\n\t\tonRelease: function(e) {\r\n\t\t\tif (this.focusedFlag && e.pointerType === 'mouse') {\r\n\t\t\t\tthis.realElement.focus();\r\n\t\t\t}\r\n\t\t\tthis.pressedFlag = false;\r\n\t\t\tthis.fakeElement.removeClass(this.options.pressedClass);\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onRelease);\r\n\t\t},\r\n\t\tgetLabelFor: function() {\r\n\t\t\tvar parentLabel = this.realElement.closest('label'),\r\n\t\t\t\telementId = this.realElement.prop('id');\r\n\r\n\t\t\tif (!parentLabel.length && elementId) {\r\n\t\t\t\tparentLabel = $('label[for=\"' + elementId + '\"]');\r\n\t\t\t}\r\n\t\t\treturn parentLabel.length ? parentLabel : null;\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\t// redraw custom checkbox\r\n\t\t\tvar isChecked = this.realElement.is(':checked'),\r\n\t\t\t\tisDisabled = this.realElement.is(':disabled');\r\n\r\n\t\t\tthis.fakeElement.toggleClass(this.options.checkedClass, isChecked)\r\n\t\t\t\t\t\t\t.toggleClass(this.options.uncheckedClass, !isChecked)\r\n\t\t\t\t\t\t\t.toggleClass(this.options.disabledClass, isDisabled);\r\n\r\n\t\t\tif (this.labelElement) {\r\n\t\t\t\tthis.labelElement.toggleClass(this.options.labelActiveClass, isChecked);\r\n\t\t\t}\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\t// restore structure\r\n\t\t\tif (this.options.wrapNative) {\r\n\t\t\t\tthis.realElement.insertBefore(this.fakeElement).css({\r\n\t\t\t\t\tposition: '',\r\n\t\t\t\t\twidth: '',\r\n\t\t\t\t\theight: '',\r\n\t\t\t\t\topacity: '',\r\n\t\t\t\t\tmargin: ''\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.realElement.removeClass(this.options.hiddenClass);\r\n\t\t\t}\r\n\r\n\t\t\t// removing element will also remove its event handlers\r\n\t\t\tthis.fakeElement.off('jcf-pointerdown', this.onPress);\r\n\t\t\tthis.fakeElement.remove();\r\n\r\n\t\t\t// remove other event handlers\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onRelease);\r\n\t\t\tthis.realElement.off({\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\tclick: this.onRealClick\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n});\r\n\r\n}(jcf));\r\n","/*!\r\n * JavaScript Custom Forms : Button Module\r\n *\r\n * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf\r\n * Released under the MIT license (LICENSE.txt)\r\n *\r\n * Version: 1.2.3\r\n */\r\n\r\n(function(jcf) {\r\n\r\njcf.addModule(function($) {\r\n\t'use strict';\r\n\r\n\treturn {\r\n\t\tname: 'Button',\r\n\t\tselector: 'button, input[type=\"button\"], input[type=\"submit\"], input[type=\"reset\"]',\r\n\t\toptions: {\r\n\t\t\trealElementClass: 'jcf-real-element',\r\n\t\t\tfakeStructure: '',\r\n\t\t\tbuttonContent: '.jcf-button-content'\r\n\t\t},\r\n\t\tmatchElement: function(element) {\r\n\t\t\treturn element.is(this.selector);\r\n\t\t},\r\n\t\tinit: function() {\r\n\t\t\tthis.initStructure();\r\n\t\t\tthis.attachEvents();\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tinitStructure: function() {\r\n\t\t\tthis.page = $('html');\r\n\t\t\tthis.realElement = $(this.options.element).addClass(this.options.realElementClass);\r\n\t\t\tthis.fakeElement = $(this.options.fakeStructure).insertBefore(this.realElement);\r\n\t\t\tthis.buttonContent = this.fakeElement.find(this.options.buttonContent);\r\n\r\n\t\t\tthis.fakeElement.css({\r\n\t\t\t\tposition: 'relative'\r\n\t\t\t});\r\n\t\t\tthis.realElement.prependTo(this.fakeElement).css({\r\n\t\t\t\tposition: 'absolute',\r\n\t\t\t\topacity: 0\r\n\t\t\t});\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\tthis.realElement.on({\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\t'jcf-pointerdown': this.onPress\r\n\t\t\t});\r\n\t\t},\r\n\t\tonPress: function() {\r\n\t\t\tthis.fakeElement.addClass(this.options.pressedClass);\r\n\t\t\tthis.page.on('jcf-pointerup', this.onRelease);\r\n\t\t},\r\n\t\tonRelease: function() {\r\n\t\t\tthis.fakeElement.removeClass(this.options.pressedClass);\r\n\t\t\tthis.page.off('jcf-pointerup', this.onRelease);\r\n\t\t},\r\n\t\tonFocus: function() {\r\n\t\t\tthis.fakeElement.addClass(this.options.focusClass);\r\n\t\t\tthis.realElement.on('blur', this.onBlur);\r\n\t\t},\r\n\t\tonBlur: function() {\r\n\t\t\tthis.fakeElement.removeClass(this.options.focusClass);\r\n\t\t\tthis.realElement.off('blur', this.onBlur);\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\tthis.buttonContent.html(this.realElement.html() || this.realElement.val());\r\n\t\t\tthis.fakeElement.toggleClass(this.options.disabledClass, this.realElement.is(':disabled'));\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\tthis.realElement.removeClass(this.options.realElementClass).insertBefore(this.fakeElement);\r\n\t\t\tthis.fakeElement.remove();\r\n\r\n\t\t\tthis.realElement.off({\r\n\t\t\t\tfocus: this.onFocus,\r\n\t\t\t\tblur: this.onBlur,\r\n\t\t\t\t'jcf-pointerdown': this.onPress\r\n\t\t\t});\r\n\r\n\t\t\tthis.realElement.css({\r\n\t\t\t\tposition: '',\r\n\t\t\t\topacity: ''\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n});\r\n\r\n}(jcf));\r\n"],"names":["isElementExist","el","cb","elem","document","querySelector","body","contains","e","console","log","jcf","addModule","$","name","selector","options","realElementClass","fakeStructure","dataListMark","rangeDisplayWrapper","rangeDisplay","handleSelector","trackSelector","activeHandleClass","verticalClass","orientation","range","dragHandleCenter","snapToMarks","snapRadius","minRange","matchElement","element","is","this","init","initStructure","attachEvents","refresh","page","realElement","addClass","hiddenClass","fakeElement","insertBefore","prepend","track","find","trackHolder","parent","handle","createdHandleCount","activeDragHandleIndex","isMultiple","prop","attr","values","split","val","handleCount","length","rangeMin","prependTo","rangeMax","clone","rangeMid","add","detach","handles","eq","isVertical","directionProperty","offsetProperty","eventProperty","sizeProperty","sizeMethod","css","minValue","parseFloat","maxValue","stepValue","isNaN","stepsCount","createDataList","on","focus","onFocus","onTrackPress","onHandlePress","self","dataValues","dataListId","each","markOffset","itemValue","value","innerHTML","valueToOffset","push","offset","text","appendTo","getDragHandleRange","handleIndex","minStep","maxStep","Infinity","valueToStepIndex","minStepIndex","maxStepIndex","getNearestHandle","percent","closestHandle","closestDistance","handleOffset","style","handleDistance","Math","abs","trackSize","trackOffset","innerOffset","preventDefault","activeDragHandle","index","removeClass","dragData","min","max","onHandleMove","onHandleRelease","pointerType","currentTarget","newOffset","dragPercent","stepIndex","valuePercent","handleDragRange","dragOffset","item","markMin","markMax","round","stepIndexToValue","updateValues","trigger","newValue","off","hasClass","focusClass","blur","onBlur","keydown","onKeyPress","incValue","which","decValue","shiftKey","step","join","updateRanges","curHandle","prevHandle","midBox","changeValue","originalValue","setSliderValue","getSliderValue","map","isDisabled","toggleClass","disabledClass","destroy","remove","buttonText","placeholderText","extensionPrefixClass","selectedFileBlock","buttonTextBlock","doc","fileNameBlock","position","opacity","onPress","change","onChange","pressedClass","onRelease","getFileName","resultFileName","files","file","replace","getFileExtension","fileName","lastIndexOf","substring","toLowerCase","updateExtensionClass","currentExtension","cleanedClassList","RegExp","selectedFileName","window","module","exports","multipleCompactStyle","plugins","ListBox","ComboBox","SelectList","createInstance","isListBox","instance","extend","wrapNative","wrapNativeOnMobile","fakeDropInBody","useCustomScroll","flipDropToFit","maxVisibleItems","fakeAreaStructure","fakeDropStructure","optionClassPrefix","selectClassPrefix","dropContentSelector","selectTextSelector","dropActiveClass","flipDropClass","listHolder","holder","selectOnClick","useHoverClass","handleResize","multipleSelectWithoutKey","alwaysPreventMouseWheel","indexAttribute","cloneClassPrefix","containerStructure","containerSelector","captionClass","optionClass","groupClass","hoverClass","selectedClass","scrollClass","prototype","bindHandlers","win","insertAfter","selectTextContainer","selectText","makeUnselectable","getPrefixedClasses","isMobileDevice","height","width","resetAppearanceClass","fakeDropTarget","delayedRefresh","setTimeout","list","scrollToActiveOption","click","onKeyDown","onSelectAreaPress","toggleDropdown","dropActive","pressedFlag","focusedFlag","toggleListMode","onResize","hideDropdown","onSelectDropPress","onSelectDropRelease","pointerEvent","target","closest","dropdown","button","selectOpenedByEvent","onSelectAreaRelease","onOutsideClick","onSelect","repositionDropdown","fireNativeEvent","state","size","removeAttr","createDropdown","top","select","press","release","calcTop","calcLeft","bodyOffset","selectOffset","fakeElementBounds","getBoundingClientRect","selectWidth","right","left","selectHeight","outerHeight","dropHeight","winScrollTop","scrollTop","winHeight","needFlipDrop","showDropdown","refreshSelectedText","setScrollTop","savedScrollTop","getScrollTop","selectedOptionClasses","selectedIndex","selectedOption","selectedOptionImage","getAttribute","selectedOptionText","option","selected","html","currentSelectedText","currentSelectedImage","className","selectImage","hide","show","empty","display","ctrlKey","metaKey","altKey","clearTimeout","refreshTimer","onFakeOptionsPress","onFakeOptionsRelease","refreshSelectedClass","indexSelector","container","lastClickedIndex","rebuildList","previousSelection","getSelectedOptionsIndexes","onItemPress","onHoverItem","hoverIndex","fakeOptions","tmpListOffsetTop","onItemRelease","onSelectItem","savedPointerType","clickedIndex","data","realOptions","disabled","sort","a","b","rootElement","storedSelectHTML","optionIndex","createOptionsList","append","fakeListItems","maxCount","sizeValue","needScrollBar","maxHeight","getOverflowHeight","overflow","modules","Scrollable","preventWheelHandler","currentScrollTop","maxScrollTop","innerHeight","deltaY","selectedItem","targetOffset","getActiveOptionOffset","selection","getChangedSelectedIndex","found","targetIndex","currentSelection","indexOf","currentIndex","dropScrollTop","fakeOption","fakeOptionOffset","fakeOptionHeight","listOffset","createOption","newOption","createElement","setAttribute","optionImage","optionImageSrc","src","childNodes","createOptGroup","optgroup","optGroupCaption","optGroupList","optGroupContainer","optGroupName","appendChild","children","createOptionContainer","currentNode","newNode","tagName","scrollInstance","getInstance","prefixToAdd","unselectableClass","getOptions","preventHandler","node","resize","resizerStructure","resizer","scrollable","alwaysShowScrollbars","setScrollBarEdge","keyup","onResizePress","resizerOffset","areaOffset","innerOffsetLeft","pageX","innerOffsetTop","pageY","onResizeMove","onResizeRelease","isFocused","focusedDrag","newWidth","newHeight","widthDiff","innerWidth","rebuildScrollbars","refreshCustomScrollbars","redrawScrollbars","customInstances","commonOptions","optionsKey","dataKey","rtlClass","isTouchDevice","DocumentTouch","isWinPhoneDevice","test","navigator","userAgent","eventList","pointerEventsSupported","pointerEnabled","msPointerEnabled","touchEventsSupported","eventMap","eventPrefix","pointerover","pointerdown","pointermove","pointerup","targetEventName","fakeEventList","fakeEventName","eventName","eventHandlers","event","special","setup","fallbackEvent","addEventListener","fixEvent","teardown","removeEventListener","lastTouch","origEvent","touchEventData","type","fix","substr","changedTouches","x","y","dx","dy","mouseEventSimulated","dispatch","call","wheelEvents","documentMode","shimEventName","detail","wheelDelta","wheelDeltaY","deltaX","wheelDeltaX","delta","deltaMode","moduleMixin","elements","eventObject","dispatchEvent","createEvent","initEvent","createEventObject","fireEvent","propName","propValue","isFunction","apply","arguments","api","version","setOptions","moduleName","moduleOptions","proto","Module","getInlineOptions","dataOptions","attrOptions","parseJSON","pluginName","plugin","originalDestroy","removeData","i","splice","customOptions","styleSheetCreated","styleTag","styleSheet","addCSSRule","rules","insertRule","addRule","refreshAll","createStyleSheet","currentModuleName","replaceAll","context","destroyAll","medicationChoice","medicationContainer","medicationList","medicationItems","querySelectorAll","confirmMedicationBtn","ACTIVE_CLASS","preselectedMedicationElement","selectMedication","classList","listItem","forEach","tests","dataset","price","slug","setUtiTreatmentType","applyDefaultCoupon","location","href","Array","from","storageService","TESTS_KEY","getLocalStorage","key","JSON","parse","localStorage","getItem","setLocalStorage","setItem","stringify","get","set","removeItem","treatmentType","coupon","ScrollBar","mouseWheelStep","scrollAreaStructure","scrollWrapper","vBarEdge","vBar","vertical","onScroll","hBar","scrollLeft","onMouseWheel","onTouchBody","activeElement","touchData","onMoveBody","onReleaseBody","targetScrollTop","targetScrollLeft","verticalScrollAllowed","verticalScrollActive","horizontalScrollAllowed","horizontalScrollActive","extraLeft","extraTop","preventFlag","currentScrollLeft","embeddedDimensions","maxScrollLeft","edgeSize","saveElementDimensions","savedDimensions","restoreElementDimensions","saveScrollOffsets","savedOffsets","restoreScrollOffsets","getContainerDimensions","desiredDimensions","currentStyles","currentHeight","currentWidth","isModifiedStyles","getThickness","outerWidth","getEmbeddedDimensions","dimensions","resultDimensions","fakeBarWidth","fakeBarHeight","paddingWidth","paddingHeight","containerDimensions","viewSize","maxScrollValue","setMaxValue","setRatio","setSize","setValue","touchAction","inactiveClass","horizontalClass","scrollbarStructure","btnDecSelector","btnIncSelector","sliderSelector","scrollInterval","scrollStep","fullSizeProperty","invertedSizeProperty","thicknessMeasureMethod","charAt","toUpperCase","offsetEventProperty","currentSliderSize","handleSize","scrollbar","btnDec","btnInc","slider","onButtonPress","handleDragActive","sliderOffset","innerHandleOffset","onHandleDrag","calcOffset","triggerScrollEvent","direction","clickOffset","startPageScrolling","startSmoothScrolling","onButtonRelease","stopPageScrolling","stopSmoothScrolling","currentSize","doPageScroll","handleTop","clearInterval","pageScrollTimer","setInterval","dt","raf","requestAnimationFrame","func","getTimestamp","Date","now","getTime","doScrollAnimation","smoothScrollActive","scrollValue","btnDecSize","btnIncSize","ratio","setPosition","styles","couponService","coupon_code","discount_amount","jQuery","checkedClass","uncheckedClass","labelActiveClass","labelElement","getLabelFor","onRealClick","onFakeClick","savedEventObject","refreshRadioGroup","currentActiveRadio","getCurrentActiveRadio","stateChecked","isDefaultPrevented","getRadioGroup","filter","radio","parentForm","parents","parentLabel","elementId","isChecked","margin","pressInterval","initialValue","isFinite","onBtnPress","increment","stepTimer","onBtnRelease","addValue","edgeNumber","diff","currentValue","c","d","totalStars","useFullStars","starShape","emptyColor","hoverColor","activeColor","ratedColor","useGradient","readOnly","disableAfterRate","baseUrl","starGradient","start","end","strokeWidth","strokeColor","initialRating","starSize","callback","onHover","onLeave","f","g","$el","settings","forceRoundUp","ceil","toFixed","_state","rating","_uid","floor","random","_defaults","_name","renderMarkup","addListeners","initRating","$stars","hoverRating","bind","restoreState","handleRating","getIndex","paintStars","applyRating","executeCallback","rated","minRating","getOffsetByPixel","offsetX","h","j","k","l","ratedColors","getSvgDimensions","getLinearGradient","getVectorPath","getRoundedVectorPath","getSpikeVectorPath","unload","setRating","getRating","error","slice","setReadOnly","fn","isPlainObject","hasOwnProperty","Numbers","Element","Events","headerMenu","wrapper","toggle","debounce","timeout","timeoutID","scope","args","parseOrElse","str","or","parseInt","isElement","HTMLElement","setStyles","Object","keys","getBoxStyles","computedValue","getComputedStyle","padding","paddingTop","bottom","paddingBottom","border","borderTopWidth","borderBottomWidth","getElement","elementFromSelector","Error","attribute","Animate","Hide","Show","__rest","s","t","p","getOwnPropertySymbols","propertyIsEnumerable","slideToggleAttribute","onRequestAnimationFrame","getTransition","_a","miliseconds","_b","transitionFunction","shouldCollapse","isHidden","onAnimationStart","boxStyles","transition","onAnimationEnd","isShown","elementDisplayStyle","_c","Toggle","__assign","assign","n","accordion","accordionSelector","triggerSelector","activeClass","triggers","ANIMATION_OPTIONS","MILLISECONDS","TRANSITION","firstTrigger","firstContent","nextElementSibling","content","slideUp","slideToggle","videoPlayer","poster","iframe","onHideEnd","onClose","onShowEnd","onOpen","toc","linksWrapper","h2","category","link","textContent","tocTitle","links","tabsElements","STATE_CLASS","TRIGGER_ACTIVE_CLASS","hideContent","showContent","removeActiveClass","addActiveClass","tabs","targetElement","headerHeight","clientHeight","offsetTop","scroll","behavior","scrollToElement","loginForm","inputs","emailInput","passwordInput","emailInputContainer","parentElement","passwordInputContainer","placeholder","isObject","obj","constructor","ssrDocument","nodeName","getElementById","getElementsByTagName","createElementNS","importNode","hash","host","hostname","origin","pathname","protocol","search","ssrWindow","history","replaceState","pushState","go","back","CustomEvent","getPropertyValue","Image","screen","matchMedia","cancelAnimationFrame","id","delay","o","toString","to","noExtend","nextSource","nodeType","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","__swiper__","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","progress","easeProgress","cos","PI","currentPosition","scrollTo","slideEl","shadowEl","matches","tag","classes","isArray","elementStyle","child","previousSibling","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","calcSupport","events","handler","priority","eventsListeners","destroyed","method","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","unshift","processLazyPreloader","imageEl","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","activeIndex","grid","rows","activeColumn","preloadColumns","_","includes","column","slideIndexLastInView","rewind","loop","realIndex","updateSize","clientWidth","isHorizontal","Number","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","nextEls","next","elementNextAll","prevSlide","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","slideToClickedSlide","transitionEmit","runCallbacks","slideTo","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","transitionEnd","isH","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","loopPreventsSliding","loopFix","_clientLeft","clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","onTouchStart","touchEventsData","evCache","touches","simulateTouch","originalEvent","targetEl","touchEventsTarget","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","diffX","diffY","sqrt","touchAngle","atan2","zoom","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","getTranslate","evt","bubbles","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","currentTranslate","disableParentSwiper","resistanceRatio","activeSlideIndex","resistance","followFinger","onTouchEnd","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","newProgress","previousTranslate","onLoad","update","dummyEventAttached","dummyEventListener","device","capture","domMethod","swiperMethod","passive","updateOnWindowResize","ios","android","isGridEnabled","resizeObserver","createElements","url","virtualTranslate","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transitionDuration","loopCreate","slideRealIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","recalcSlides","currentSlideTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","points","point","minRatio","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","overrides","platform","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getDevice","needPerspectiveFix","String","major","minor","num","calcBrowser","__modules__","mod","extendParams","swiperParams","defaults","passedParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","trim","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","Navigation","hideOnClick","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","subEl","onPrevClick","onNextClick","checkProps","initButton","destroyButton","_s","pagination","clickable","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","effectParams","transformEl","backfaceVisibility","EffectFade","fadeEffect","crossFade","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","tx","ty","slideOpacity","transformElements","allSlides","transitionEndTarget","eventTriggered","parentNode","getSlide","fireCallBack","reviewSlider","OPTIONS","thumbsSldier","sliderUpdate","starsRating","starRating","customSelect","customCheckbox","customRadio","header","FIXED_CLASS","scrollY","fixedHeader","setHeaderHeightVariable","setHeaderVariable","buttonContent"],"sourceRoot":""}