{"version":3,"file":"main.4c315c09535210e7a1cf.js","mappings":"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","sources":["webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.file.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/./themes/treat-my-uti/src/js/modules/requireTestSelection.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/modules/phoneOrderUser.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.scrollable.js","webpack://utitreatment-wp-theme/external var \"jQuery\"","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.button.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.select.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.checkbox.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/helpers/isElementExist.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/libs/jquery.star-rating-svg.min.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.textarea.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.radio.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.common.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.range.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/services/coupon.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/services/storage.js","webpack://utitreatment-wp-theme/./node_modules/jcf/js/jcf.number.js"],"sourcesContent":["/*!\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","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","import storageService from '../services/storage.js';\n\n/**\n * Redirects to the home page if there are no tests in storage.\n */\nexport default function requireTestSelection() {\n if (storageService().tests.length > 0) {\n return;\n }\n\n window.location.replace('/antibiotics');\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 StorageService from '../services/storage.js';\n\n/**\n * Check if the user is a phone order user, store the user_id and display the banner informing the user.\n */\nexport function phoneOrderUser() {\n const URL_PARAMS_KEY = 'user_id';\n const BANNER_TEXT =\n 'You are operating this site as a sales agent on behalf of a customer, and commissions will be awarded.';\n const storageService = StorageService();\n storeUserIdFromUrl();\n const userId = storageService.userId;\n\n updatePhoneOrderUserBanner(userId);\n\n function storeUserIdFromUrl() {\n const userId = new URLSearchParams(window.location.search).get(URL_PARAMS_KEY);\n if (userId && Number.isInteger(Number(userId))) {\n storageService.userId = userId;\n }\n }\n\n function updatePhoneOrderUserBanner(userId) {\n const element = document.getElementById('phone-order-user-notification');\n if (!element) {\n console.error('Phone order user banner element is not present in DOM.');\n return;\n }\n\n if (userId) {\n element.innerHTML = BANNER_TEXT;\n element.classList.remove('is-hidden');\n } else {\n element.innerHTML = '';\n }\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';\nimport jcfInit from './modules/jcfInit';\nimport requireTestSelection from './modules/requireTestSelection';\nimport reviewSlider from './modules/reviewSlider';\nimport starsRating from './modules/starsRating';\nimport { phoneOrderUser } from './modules/phoneOrderUser.js';\n\nwindow.addEventListener('DOMContentLoaded', () => {\n isElementExist('.header', () => {\n fixedHeader();\n setHeaderVariable();\n });\n isElementExist('.header_menu', headerMenu);\n isElementExist('#phone-order-user-notification', phoneOrderUser);\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 isElementExist('app-find-a-lab', requireTestSelection);\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 : Scrollbar 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: 'Scrollable',\r\n\t\tselector: '.jcf-scrollable',\r\n\t\tplugins: {\r\n\t\t\tScrollBar: ScrollBar\r\n\t\t},\r\n\t\toptions: {\r\n\t\t\tmouseWheelStep: 150,\r\n\t\t\thandleResize: true,\r\n\t\t\talwaysShowScrollbars: false,\r\n\t\t\talwaysPreventMouseWheel: false,\r\n\t\t\tscrollAreaStructure: '
'\r\n\t\t},\r\n\t\tmatchElement: function(element) {\r\n\t\t\treturn element.is('.jcf-scrollable');\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.rebuildScrollbars();\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.win = $(window);\r\n\t\t\tthis.realElement = $(this.options.element);\r\n\t\t\tthis.scrollWrapper = $(this.options.scrollAreaStructure).insertAfter(this.realElement);\r\n\r\n\t\t\t// set initial styles\r\n\t\t\tthis.scrollWrapper.css('position', 'relative');\r\n\t\t\tthis.realElement.css('overflow', 'hidden');\r\n\t\t\tthis.vBarEdge = 0;\r\n\t\t},\r\n\t\tattachEvents: function() {\r\n\t\t\t// create scrollbars\r\n\t\t\tvar self = this;\r\n\t\t\tthis.vBar = new ScrollBar({\r\n\t\t\t\tholder: this.scrollWrapper,\r\n\t\t\t\tvertical: true,\r\n\t\t\t\tonScroll: function(scrollTop) {\r\n\t\t\t\t\tself.realElement.scrollTop(scrollTop);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.hBar = new ScrollBar({\r\n\t\t\t\tholder: this.scrollWrapper,\r\n\t\t\t\tvertical: false,\r\n\t\t\t\tonScroll: function(scrollLeft) {\r\n\t\t\t\t\tself.realElement.scrollLeft(scrollLeft);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// add event handlers\r\n\t\t\tthis.realElement.on('scroll', this.onScroll);\r\n\t\t\tif (this.options.handleResize) {\r\n\t\t\t\tthis.win.on('resize orientationchange load', this.onResize);\r\n\t\t\t}\r\n\r\n\t\t\t// add pointer/wheel event handlers\r\n\t\t\tthis.realElement.on('jcf-mousewheel', this.onMouseWheel);\r\n\t\t\tthis.realElement.on('jcf-pointerdown', this.onTouchBody);\r\n\t\t},\r\n\t\tonScroll: function() {\r\n\t\t\tthis.redrawScrollbars();\r\n\t\t},\r\n\t\tonResize: function() {\r\n\t\t\t// do not rebuild scrollbars if form field is in focus\r\n\t\t\tif (!$(document.activeElement).is(':input')) {\r\n\t\t\t\tthis.rebuildScrollbars();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonTouchBody: function(e) {\r\n\t\t\tif (e.pointerType === 'touch') {\r\n\t\t\t\tthis.touchData = {\r\n\t\t\t\t\tscrollTop: this.realElement.scrollTop(),\r\n\t\t\t\t\tscrollLeft: this.realElement.scrollLeft(),\r\n\t\t\t\t\tleft: e.pageX,\r\n\t\t\t\t\ttop: e.pageY\r\n\t\t\t\t};\r\n\t\t\t\tthis.doc.on({\r\n\t\t\t\t\t'jcf-pointermove': this.onMoveBody,\r\n\t\t\t\t\t'jcf-pointerup': this.onReleaseBody\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tonMoveBody: function(e) {\r\n\t\t\tvar targetScrollTop,\r\n\t\t\t\ttargetScrollLeft,\r\n\t\t\t\tverticalScrollAllowed = this.verticalScrollActive,\r\n\t\t\t\thorizontalScrollAllowed = this.horizontalScrollActive;\r\n\r\n\t\t\tif (e.pointerType === 'touch') {\r\n\t\t\t\ttargetScrollTop = this.touchData.scrollTop - e.pageY + this.touchData.top;\r\n\t\t\t\ttargetScrollLeft = this.touchData.scrollLeft - e.pageX + this.touchData.left;\r\n\r\n\t\t\t\t// check that scrolling is ended and release outer scrolling\r\n\t\t\t\tif (this.verticalScrollActive && (targetScrollTop < 0 || targetScrollTop > this.vBar.maxValue)) {\r\n\t\t\t\t\tverticalScrollAllowed = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.horizontalScrollActive && (targetScrollLeft < 0 || targetScrollLeft > this.hBar.maxValue)) {\r\n\t\t\t\t\thorizontalScrollAllowed = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.realElement.scrollTop(targetScrollTop);\r\n\t\t\t\tthis.realElement.scrollLeft(targetScrollLeft);\r\n\r\n\t\t\t\tif (verticalScrollAllowed || horizontalScrollAllowed) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.onReleaseBody(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonReleaseBody: function(e) {\r\n\t\t\tif (e.pointerType === 'touch') {\r\n\t\t\t\tdelete this.touchData;\r\n\t\t\t\tthis.doc.off({\r\n\t\t\t\t\t'jcf-pointermove': this.onMoveBody,\r\n\t\t\t\t\t'jcf-pointerup': this.onReleaseBody\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tonMouseWheel: function(e) {\r\n\t\t\tvar currentScrollTop = this.realElement.scrollTop(),\r\n\t\t\t\tcurrentScrollLeft = this.realElement.scrollLeft(),\r\n\t\t\t\tmaxScrollTop = this.realElement.prop('scrollHeight') - this.embeddedDimensions.innerHeight,\r\n\t\t\t\tmaxScrollLeft = this.realElement.prop('scrollWidth') - this.embeddedDimensions.innerWidth,\r\n\t\t\t\textraLeft, extraTop, preventFlag;\r\n\r\n\t\t\t// check edge cases\r\n\t\t\tif (!this.options.alwaysPreventMouseWheel) {\r\n\t\t\t\tif (this.verticalScrollActive && e.deltaY) {\r\n\t\t\t\t\tif (!(currentScrollTop <= 0 && e.deltaY < 0) && !(currentScrollTop >= maxScrollTop && e.deltaY > 0)) {\r\n\t\t\t\t\t\tpreventFlag = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (this.horizontalScrollActive && e.deltaX) {\r\n\t\t\t\t\tif (!(currentScrollLeft <= 0 && e.deltaX < 0) && !(currentScrollLeft >= maxScrollLeft && e.deltaX > 0)) {\r\n\t\t\t\t\t\tpreventFlag = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!this.verticalScrollActive && !this.horizontalScrollActive) {\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// prevent default action and scroll item\r\n\t\t\tif (preventFlag || this.options.alwaysPreventMouseWheel) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t} else {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\textraLeft = e.deltaX / 100 * this.options.mouseWheelStep;\r\n\t\t\textraTop = e.deltaY / 100 * this.options.mouseWheelStep;\r\n\r\n\t\t\tthis.realElement.scrollTop(currentScrollTop + extraTop);\r\n\t\t\tthis.realElement.scrollLeft(currentScrollLeft + extraLeft);\r\n\t\t},\r\n\t\tsetScrollBarEdge: function(edgeSize) {\r\n\t\t\tthis.vBarEdge = edgeSize || 0;\r\n\t\t\tthis.redrawScrollbars();\r\n\t\t},\r\n\t\tsaveElementDimensions: function() {\r\n\t\t\tthis.savedDimensions = {\r\n\t\t\t\ttop: this.realElement.width(),\r\n\t\t\t\tleft: this.realElement.height()\r\n\t\t\t};\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\trestoreElementDimensions: function() {\r\n\t\t\tif (this.savedDimensions) {\r\n\t\t\t\tthis.realElement.css({\r\n\t\t\t\t\twidth: this.savedDimensions.width,\r\n\t\t\t\t\theight: this.savedDimensions.height\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\tsaveScrollOffsets: function() {\r\n\t\t\tthis.savedOffsets = {\r\n\t\t\t\ttop: this.realElement.scrollTop(),\r\n\t\t\t\tleft: this.realElement.scrollLeft()\r\n\t\t\t};\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\trestoreScrollOffsets: function() {\r\n\t\t\tif (this.savedOffsets) {\r\n\t\t\t\tthis.realElement.scrollTop(this.savedOffsets.top);\r\n\t\t\t\tthis.realElement.scrollLeft(this.savedOffsets.left);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\tgetContainerDimensions: function() {\r\n\t\t\t// save current styles\r\n\t\t\tvar desiredDimensions,\r\n\t\t\t\tcurrentStyles,\r\n\t\t\t\tcurrentHeight,\r\n\t\t\t\tcurrentWidth;\r\n\r\n\t\t\tif (this.isModifiedStyles) {\r\n\t\t\t\tdesiredDimensions = {\r\n\t\t\t\t\twidth: this.realElement.innerWidth() + this.vBar.getThickness(),\r\n\t\t\t\t\theight: this.realElement.innerHeight() + this.hBar.getThickness()\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\t// unwrap real element and measure it according to CSS\r\n\t\t\t\tthis.saveElementDimensions().saveScrollOffsets();\r\n\t\t\t\tthis.realElement.insertAfter(this.scrollWrapper);\r\n\t\t\t\tthis.scrollWrapper.detach();\r\n\r\n\t\t\t\t// measure element\r\n\t\t\t\tcurrentStyles = this.realElement.prop('style');\r\n\t\t\t\tcurrentWidth = parseFloat(currentStyles.width);\r\n\t\t\t\tcurrentHeight = parseFloat(currentStyles.height);\r\n\r\n\t\t\t\t// reset styles if needed\r\n\t\t\t\tif (this.embeddedDimensions && currentWidth && currentHeight) {\r\n\t\t\t\t\tthis.isModifiedStyles |= (currentWidth !== this.embeddedDimensions.width || currentHeight !== this.embeddedDimensions.height);\r\n\t\t\t\t\tthis.realElement.css({\r\n\t\t\t\t\t\toverflow: '',\r\n\t\t\t\t\t\twidth: '',\r\n\t\t\t\t\t\theight: ''\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// calculate desired dimensions for real element\r\n\t\t\t\tdesiredDimensions = {\r\n\t\t\t\t\twidth: this.realElement.outerWidth(),\r\n\t\t\t\t\theight: this.realElement.outerHeight()\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// restore structure and original scroll offsets\r\n\t\t\t\tthis.scrollWrapper.insertAfter(this.realElement);\r\n\t\t\t\tthis.realElement.css('overflow', 'hidden').prependTo(this.scrollWrapper);\r\n\t\t\t\tthis.restoreElementDimensions().restoreScrollOffsets();\r\n\t\t\t}\r\n\r\n\t\t\treturn desiredDimensions;\r\n\t\t},\r\n\t\tgetEmbeddedDimensions: function(dimensions) {\r\n\t\t\t// handle scrollbars cropping\r\n\t\t\tvar fakeBarWidth = this.vBar.getThickness(),\r\n\t\t\t\tfakeBarHeight = this.hBar.getThickness(),\r\n\t\t\t\tpaddingWidth = this.realElement.outerWidth() - this.realElement.width(),\r\n\t\t\t\tpaddingHeight = this.realElement.outerHeight() - this.realElement.height(),\r\n\t\t\t\tresultDimensions;\r\n\r\n\t\t\tif (this.options.alwaysShowScrollbars) {\r\n\t\t\t\t// simply return dimensions without custom scrollbars\r\n\t\t\t\tthis.verticalScrollActive = true;\r\n\t\t\t\tthis.horizontalScrollActive = true;\r\n\t\t\t\tresultDimensions = {\r\n\t\t\t\t\tinnerWidth: dimensions.width - fakeBarWidth,\r\n\t\t\t\t\tinnerHeight: dimensions.height - fakeBarHeight\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\t// detect when to display each scrollbar\r\n\t\t\t\tthis.saveElementDimensions();\r\n\t\t\t\tthis.verticalScrollActive = false;\r\n\t\t\t\tthis.horizontalScrollActive = false;\r\n\r\n\t\t\t\t// fill container with full size\r\n\t\t\t\tthis.realElement.css({\r\n\t\t\t\t\twidth: dimensions.width - paddingWidth,\r\n\t\t\t\t\theight: dimensions.height - paddingHeight\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.horizontalScrollActive = this.realElement.prop('scrollWidth') > this.containerDimensions.width;\r\n\t\t\t\tthis.verticalScrollActive = this.realElement.prop('scrollHeight') > this.containerDimensions.height;\r\n\r\n\t\t\t\tthis.restoreElementDimensions();\r\n\t\t\t\tresultDimensions = {\r\n\t\t\t\t\tinnerWidth: dimensions.width - (this.verticalScrollActive ? fakeBarWidth : 0),\r\n\t\t\t\t\tinnerHeight: dimensions.height - (this.horizontalScrollActive ? fakeBarHeight : 0)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t$.extend(resultDimensions, {\r\n\t\t\t\twidth: resultDimensions.innerWidth - paddingWidth,\r\n\t\t\t\theight: resultDimensions.innerHeight - paddingHeight\r\n\t\t\t});\r\n\t\t\treturn resultDimensions;\r\n\t\t},\r\n\t\trebuildScrollbars: function() {\r\n\t\t\t// resize wrapper according to real element styles\r\n\t\t\tthis.containerDimensions = this.getContainerDimensions();\r\n\t\t\tthis.embeddedDimensions = this.getEmbeddedDimensions(this.containerDimensions);\r\n\r\n\t\t\t// resize wrapper to desired dimensions\r\n\t\t\tthis.scrollWrapper.css({\r\n\t\t\t\twidth: this.containerDimensions.width,\r\n\t\t\t\theight: this.containerDimensions.height\r\n\t\t\t});\r\n\r\n\t\t\t// resize element inside wrapper excluding scrollbar size\r\n\t\t\tthis.realElement.css({\r\n\t\t\t\toverflow: 'hidden',\r\n\t\t\t\twidth: this.embeddedDimensions.width,\r\n\t\t\t\theight: this.embeddedDimensions.height\r\n\t\t\t});\r\n\r\n\t\t\t// redraw scrollbar offset\r\n\t\t\tthis.redrawScrollbars();\r\n\t\t},\r\n\t\tredrawScrollbars: function() {\r\n\t\t\tvar viewSize, maxScrollValue;\r\n\r\n\t\t\t// redraw vertical scrollbar\r\n\t\t\tif (this.verticalScrollActive) {\r\n\t\t\t\tviewSize = this.vBarEdge ? this.containerDimensions.height - this.vBarEdge : this.embeddedDimensions.innerHeight;\r\n\t\t\t\tmaxScrollValue = Math.max(this.realElement.prop('offsetHeight'), this.realElement.prop('scrollHeight')) - this.vBarEdge;\r\n\r\n\t\t\t\tthis.vBar.show().setMaxValue(maxScrollValue - viewSize).setRatio(viewSize / maxScrollValue).setSize(viewSize);\r\n\t\t\t\tthis.vBar.setValue(this.realElement.scrollTop());\r\n\t\t\t} else {\r\n\t\t\t\tthis.vBar.hide();\r\n\t\t\t}\r\n\r\n\t\t\t// redraw horizontal scrollbar\r\n\t\t\tif (this.horizontalScrollActive) {\r\n\t\t\t\tviewSize = this.embeddedDimensions.innerWidth;\r\n\t\t\t\tmaxScrollValue = this.realElement.prop('scrollWidth');\r\n\r\n\t\t\t\tif (maxScrollValue === viewSize) {\r\n\t\t\t\t\tthis.horizontalScrollActive = false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.hBar.show().setMaxValue(maxScrollValue - viewSize).setRatio(viewSize / maxScrollValue).setSize(viewSize);\r\n\t\t\t\tthis.hBar.setValue(this.realElement.scrollLeft());\r\n\t\t\t} else {\r\n\t\t\t\tthis.hBar.hide();\r\n\t\t\t}\r\n\r\n\t\t\t// set \"touch-action\" style rule\r\n\t\t\tvar touchAction = '';\r\n\t\t\tif (this.verticalScrollActive && this.horizontalScrollActive) {\r\n\t\t\t\ttouchAction = 'none';\r\n\t\t\t} else if (this.verticalScrollActive) {\r\n\t\t\t\ttouchAction = 'pan-x';\r\n\t\t\t} else if (this.horizontalScrollActive) {\r\n\t\t\t\ttouchAction = 'pan-y';\r\n\t\t\t}\r\n\t\t\tthis.realElement.css('touchAction', touchAction);\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\tthis.rebuildScrollbars();\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\t// remove event listeners\r\n\t\t\tthis.win.off('resize orientationchange load', this.onResize);\r\n\t\t\tthis.realElement.off({\r\n\t\t\t\t'jcf-mousewheel': this.onMouseWheel,\r\n\t\t\t\t'jcf-pointerdown': this.onTouchBody\r\n\t\t\t});\r\n\t\t\tthis.doc.off({\r\n\t\t\t\t'jcf-pointermove': this.onMoveBody,\r\n\t\t\t\t'jcf-pointerup': this.onReleaseBody\r\n\t\t\t});\r\n\r\n\t\t\t// restore structure\r\n\t\t\tthis.saveScrollOffsets();\r\n\t\t\tthis.vBar.destroy();\r\n\t\t\tthis.hBar.destroy();\r\n\t\t\tthis.realElement.insertAfter(this.scrollWrapper).css({\r\n\t\t\t\ttouchAction: '',\r\n\t\t\t\toverflow: '',\r\n\t\t\t\twidth: '',\r\n\t\t\t\theight: ''\r\n\t\t\t});\r\n\t\t\tthis.scrollWrapper.remove();\r\n\t\t\tthis.restoreScrollOffsets();\r\n\t\t}\r\n\t};\r\n\r\n\t// custom scrollbar\r\n\tfunction ScrollBar(options) {\r\n\t\tthis.options = $.extend({\r\n\t\t\tholder: null,\r\n\t\t\tvertical: true,\r\n\t\t\tinactiveClass: 'jcf-inactive',\r\n\t\t\tverticalClass: 'jcf-scrollbar-vertical',\r\n\t\t\thorizontalClass: 'jcf-scrollbar-horizontal',\r\n\t\t\tscrollbarStructure: '
',\r\n\t\t\tbtnDecSelector: '.jcf-scrollbar-dec',\r\n\t\t\tbtnIncSelector: '.jcf-scrollbar-inc',\r\n\t\t\tsliderSelector: '.jcf-scrollbar-slider',\r\n\t\t\thandleSelector: '.jcf-scrollbar-handle',\r\n\t\t\tscrollInterval: 300,\r\n\t\t\tscrollStep: 400 // px/sec\r\n\t\t}, options);\r\n\t\tthis.init();\r\n\t}\r\n\t$.extend(ScrollBar.prototype, {\r\n\t\tinit: function() {\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\t// define proporties\r\n\t\t\tthis.doc = $(document);\r\n\t\t\tthis.isVertical = !!this.options.vertical;\r\n\t\t\tthis.sizeProperty = this.isVertical ? 'height' : 'width';\r\n\t\t\tthis.fullSizeProperty = this.isVertical ? 'outerHeight' : 'outerWidth';\r\n\t\t\tthis.invertedSizeProperty = this.isVertical ? 'width' : 'height';\r\n\t\t\tthis.thicknessMeasureMethod = 'outer' + this.invertedSizeProperty.charAt(0).toUpperCase() + this.invertedSizeProperty.substr(1);\r\n\t\t\tthis.offsetProperty = this.isVertical ? 'top' : 'left';\r\n\t\t\tthis.offsetEventProperty = this.isVertical ? 'pageY' : 'pageX';\r\n\r\n\t\t\t// initialize variables\r\n\t\t\tthis.value = this.options.value || 0;\r\n\t\t\tthis.maxValue = this.options.maxValue || 0;\r\n\t\t\tthis.currentSliderSize = 0;\r\n\t\t\tthis.handleSize = 0;\r\n\r\n\t\t\t// find elements\r\n\t\t\tthis.holder = $(this.options.holder);\r\n\t\t\tthis.scrollbar = $(this.options.scrollbarStructure).appendTo(this.holder);\r\n\t\t\tthis.btnDec = this.scrollbar.find(this.options.btnDecSelector);\r\n\t\t\tthis.btnInc = this.scrollbar.find(this.options.btnIncSelector);\r\n\t\t\tthis.slider = this.scrollbar.find(this.options.sliderSelector);\r\n\t\t\tthis.handle = this.slider.find(this.options.handleSelector);\r\n\r\n\t\t\t// set initial styles\r\n\t\t\tthis.scrollbar.addClass(this.isVertical ? this.options.verticalClass : this.options.horizontalClass).css({\r\n\t\t\t\ttouchAction: this.isVertical ? 'pan-x' : 'pan-y',\r\n\t\t\t\tposition: 'absolute'\r\n\t\t\t});\r\n\t\t\tthis.slider.css({\r\n\t\t\t\tposition: 'relative'\r\n\t\t\t});\r\n\t\t\tthis.handle.css({\r\n\t\t\t\ttouchAction: 'none',\r\n\t\t\t\tposition: 'absolute'\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.handle.on('jcf-pointerdown', this.onHandlePress);\r\n\t\t\tthis.slider.add(this.btnDec).add(this.btnInc).on('jcf-pointerdown', this.onButtonPress);\r\n\t\t},\r\n\t\tonHandlePress: function(e) {\r\n\t\t\tif (e.pointerType === 'mouse' && e.button > 1) {\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.handleDragActive = true;\r\n\t\t\t\tthis.sliderOffset = this.slider.offset()[this.offsetProperty];\r\n\t\t\t\tthis.innerHandleOffset = e[this.offsetEventProperty] - this.handle.offset()[this.offsetProperty];\r\n\r\n\t\t\t\tthis.doc.on('jcf-pointermove', this.onHandleDrag);\r\n\t\t\t\tthis.doc.on('jcf-pointerup', this.onHandleRelease);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonHandleDrag: function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.calcOffset = e[this.offsetEventProperty] - this.sliderOffset - this.innerHandleOffset;\r\n\t\t\tthis.setValue(this.calcOffset / (this.currentSliderSize - this.handleSize) * this.maxValue);\r\n\t\t\tthis.triggerScrollEvent(this.value);\r\n\t\t},\r\n\t\tonHandleRelease: function() {\r\n\t\t\tthis.handleDragActive = false;\r\n\t\t\tthis.doc.off('jcf-pointermove', this.onHandleDrag);\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onHandleRelease);\r\n\t\t},\r\n\t\tonButtonPress: function(e) {\r\n\t\t\tvar direction, clickOffset;\r\n\t\t\tif (e.pointerType === 'mouse' && e.button > 1) {\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tif (!this.handleDragActive) {\r\n\t\t\t\t\tif (this.slider.is(e.currentTarget)) {\r\n\t\t\t\t\t\t// slider pressed\r\n\t\t\t\t\t\tdirection = this.handle.offset()[this.offsetProperty] > e[this.offsetEventProperty] ? -1 : 1;\r\n\t\t\t\t\t\tclickOffset = e[this.offsetEventProperty] - this.slider.offset()[this.offsetProperty];\r\n\t\t\t\t\t\tthis.startPageScrolling(direction, clickOffset);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// scrollbar buttons pressed\r\n\t\t\t\t\t\tdirection = this.btnDec.is(e.currentTarget) ? -1 : 1;\r\n\t\t\t\t\t\tthis.startSmoothScrolling(direction);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.doc.on('jcf-pointerup', this.onButtonRelease);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonButtonRelease: function() {\r\n\t\t\tthis.stopPageScrolling();\r\n\t\t\tthis.stopSmoothScrolling();\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onButtonRelease);\r\n\t\t},\r\n\t\tstartPageScrolling: function(direction, clickOffset) {\r\n\t\t\tvar self = this,\r\n\t\t\t\tstepValue = direction * self.currentSize;\r\n\r\n\t\t\t// limit checker\r\n\t\t\tvar isFinishedScrolling = function() {\r\n\t\t\t\tvar handleTop = (self.value / self.maxValue) * (self.currentSliderSize - self.handleSize);\r\n\r\n\t\t\t\tif (direction > 0) {\r\n\t\t\t\t\treturn handleTop + self.handleSize >= clickOffset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn handleTop <= clickOffset;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// scroll by page when track is pressed\r\n\t\t\tvar doPageScroll = function() {\r\n\t\t\t\tself.value += stepValue;\r\n\t\t\t\tself.setValue(self.value);\r\n\t\t\t\tself.triggerScrollEvent(self.value);\r\n\r\n\t\t\t\tif (isFinishedScrolling()) {\r\n\t\t\t\t\tclearInterval(self.pageScrollTimer);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// start scrolling\r\n\t\t\tthis.pageScrollTimer = setInterval(doPageScroll, this.options.scrollInterval);\r\n\t\t\tdoPageScroll();\r\n\t\t},\r\n\t\tstopPageScrolling: function() {\r\n\t\t\tclearInterval(this.pageScrollTimer);\r\n\t\t},\r\n\t\tstartSmoothScrolling: function(direction) {\r\n\t\t\tvar self = this, dt;\r\n\t\t\tthis.stopSmoothScrolling();\r\n\r\n\t\t\t// simple animation functions\r\n\t\t\tvar raf = window.requestAnimationFrame || function(func) {\r\n\t\t\t\tsetTimeout(func, 16);\r\n\t\t\t};\r\n\t\t\tvar getTimestamp = function() {\r\n\t\t\t\treturn Date.now ? Date.now() : new Date().getTime();\r\n\t\t\t};\r\n\r\n\t\t\t// set animation limit\r\n\t\t\tvar isFinishedScrolling = function() {\r\n\t\t\t\tif (direction > 0) {\r\n\t\t\t\t\treturn self.value >= self.maxValue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn self.value <= 0;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// animation step\r\n\t\t\tvar doScrollAnimation = function() {\r\n\t\t\t\tvar stepValue = (getTimestamp() - dt) / 1000 * self.options.scrollStep;\r\n\r\n\t\t\t\tif (self.smoothScrollActive) {\r\n\t\t\t\t\tself.value += stepValue * direction;\r\n\t\t\t\t\tself.setValue(self.value);\r\n\t\t\t\t\tself.triggerScrollEvent(self.value);\r\n\r\n\t\t\t\t\tif (!isFinishedScrolling()) {\r\n\t\t\t\t\t\tdt = getTimestamp();\r\n\t\t\t\t\t\traf(doScrollAnimation);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// start animation\r\n\t\t\tself.smoothScrollActive = true;\r\n\t\t\tdt = getTimestamp();\r\n\t\t\traf(doScrollAnimation);\r\n\t\t},\r\n\t\tstopSmoothScrolling: function() {\r\n\t\t\tthis.smoothScrollActive = false;\r\n\t\t},\r\n\t\ttriggerScrollEvent: function(scrollValue) {\r\n\t\t\tif (this.options.onScroll) {\r\n\t\t\t\tthis.options.onScroll(scrollValue);\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetThickness: function() {\r\n\t\t\treturn this.scrollbar[this.thicknessMeasureMethod]();\r\n\t\t},\r\n\t\tsetSize: function(size) {\r\n\t\t\t// resize scrollbar\r\n\t\t\tvar btnDecSize = this.btnDec[this.fullSizeProperty](),\r\n\t\t\t\tbtnIncSize = this.btnInc[this.fullSizeProperty]();\r\n\r\n\t\t\t// resize slider\r\n\t\t\tthis.currentSize = size;\r\n\t\t\tthis.currentSliderSize = size - btnDecSize - btnIncSize;\r\n\t\t\tthis.scrollbar.css(this.sizeProperty, size);\r\n\t\t\tthis.slider.css(this.sizeProperty, this.currentSliderSize);\r\n\t\t\tthis.currentSliderSize = this.slider[this.sizeProperty]();\r\n\r\n\t\t\t// resize handle\r\n\t\t\tthis.handleSize = Math.round(this.currentSliderSize * this.ratio);\r\n\t\t\tthis.handle.css(this.sizeProperty, this.handleSize);\r\n\t\t\tthis.handleSize = this.handle[this.fullSizeProperty]();\r\n\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\tsetRatio: function(ratio) {\r\n\t\t\tthis.ratio = ratio;\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\tsetMaxValue: function(maxValue) {\r\n\t\t\tthis.maxValue = maxValue;\r\n\t\t\tthis.setValue(Math.min(this.value, this.maxValue));\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\tsetValue: function(value) {\r\n\t\t\tthis.value = value;\r\n\t\t\tif (this.value < 0) {\r\n\t\t\t\tthis.value = 0;\r\n\t\t\t} else if (this.value > this.maxValue) {\r\n\t\t\t\tthis.value = this.maxValue;\r\n\t\t\t}\r\n\t\t\tthis.refresh();\r\n\t\t},\r\n\t\tsetPosition: function(styles) {\r\n\t\t\tthis.scrollbar.css(styles);\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\thide: function() {\r\n\t\t\tthis.scrollbar.detach();\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\tshow: function() {\r\n\t\t\tthis.scrollbar.appendTo(this.holder);\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\t// recalculate handle position\r\n\t\t\tif (this.value === 0 || this.maxValue === 0) {\r\n\t\t\t\tthis.calcOffset = 0;\r\n\t\t\t} else {\r\n\t\t\t\tthis.calcOffset = (this.value / this.maxValue) * (this.currentSliderSize - this.handleSize);\r\n\t\t\t}\r\n\t\t\tthis.handle.css(this.offsetProperty, this.calcOffset);\r\n\r\n\t\t\t// toggle inactive classes\r\n\t\t\tthis.btnDec.toggleClass(this.options.inactiveClass, this.value === 0);\r\n\t\t\tthis.btnInc.toggleClass(this.options.inactiveClass, this.value === this.maxValue);\r\n\t\t\tthis.scrollbar.toggleClass(this.options.inactiveClass, this.maxValue === 0);\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\t// remove event handlers and scrollbar block itself\r\n\t\t\tthis.btnDec.add(this.btnInc).off('jcf-pointerdown', this.onButtonPress);\r\n\t\t\tthis.handle.off('jcf-pointerdown', this.onHandlePress);\r\n\t\t\tthis.doc.off('jcf-pointermove', this.onHandleDrag);\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onHandleRelease);\r\n\t\t\tthis.doc.off('jcf-pointerup', this.onButtonRelease);\r\n\t\t\tthis.stopSmoothScrolling();\r\n\t\t\tthis.stopPageScrolling();\r\n\t\t\tthis.scrollbar.remove();\r\n\t\t}\r\n\t});\r\n\r\n\treturn module;\r\n});\r\n\r\n}(jcf));\r\n","module.exports = jQuery;","/*!\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","/*!\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 : 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\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","/*!\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 : Radio 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: 'Radio',\r\n\t\tselector: 'input[type=\"radio\"]',\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(':radio');\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 radio 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\topacity: 0\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// just hide native radio\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// redraw current radio and its group (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.refreshRadioGroup();\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.currentActiveRadio = this.getCurrentActiveRadio();\r\n\t\t\t\tthis.stateChecked = this.realElement.prop('checked');\r\n\t\t\t\tthis.realElement.prop('checked', true);\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\tthis.currentActiveRadio.prop('checked', true);\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\tgetCurrentActiveRadio: function() {\r\n\t\t\treturn this.getRadioGroup(this.realElement).filter(':checked');\r\n\t\t},\r\n\t\tgetRadioGroup: function(radio) {\r\n\t\t\t// find radio group for specified radio button\r\n\t\t\tvar name = radio.attr('name'),\r\n\t\t\t\tparentForm = radio.parents('form');\r\n\r\n\t\t\tif (name) {\r\n\t\t\t\tif (parentForm.length) {\r\n\t\t\t\t\treturn parentForm.find('input[name=\"' + name + '\"]');\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn $('input[name=\"' + name + '\"]:not(form input)');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn radio;\r\n\t\t\t}\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\trefreshRadioGroup: function() {\r\n\t\t\t// redraw current radio and its group\r\n\t\t\tthis.getRadioGroup(this.realElement).each(function() {\r\n\t\t\t\tjcf.refresh(this);\r\n\t\t\t});\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\t// redraw current radio button\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\tblur: this.onBlur,\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","'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 : 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","import storageService from './storage.js';\n\n/**\n * Service class to manage couponse.\n */\nexport default function couponService() {\n /**\n * Apply the default coupon to the storage service.\n */\n function applyDefaultCoupon() {\n storageService().coupon = {\n coupon_code: '30OffUtiOrder',\n discount_amount: 30,\n name: '30% Off',\n type: 'Percent',\n };\n }\n\n return {\n applyDefaultCoupon,\n };\n}\n","/**\n * Service class for accessing localStorage.\n */\nexport default function storageService() {\n /**\n * Keys used to reference data in localStorage\n */\n const TESTS_KEY = 'ngStorage-tests';\n const COUPON_KEY = 'ngStorage-coupon';\n const TREATMENT_TYPE = 'ngStorage-treatmentType';\n const USER_ID_KEY = 'user_id';\n\n /**\n * Retrieves a value stored as JSON in localStorage\n *\n * @param {string} key the key to retrieve from storage\n *\n * @return {any} The value stored in localStorage, or null if localstorage is not available\n */\n function getLocalStorage(key) {\n try {\n return JSON.parse(window.localStorage?.getItem(key) || null);\n } catch (error) {\n console.error('Error getting value from local storage', error);\n\n return null;\n }\n }\n\n /**\n * Saves a value in localStorage as a JSON string\n *\n * @param {string} key The key to store the value in\n * @param {any} value The value to be stored\n *\n * @return {void}\n */\n function setLocalStorage(key, value) {\n try {\n window.localStorage?.setItem(key, JSON.stringify(value || null));\n } catch (error) {\n console.error('Error setting value in local storage', error);\n }\n }\n\n /**\n * Deletes a value from the storage.\n *\n * @param key {string} The value's key.\n *\n * @return void\n */\n function removeLocalStorage(key) {\n window.localStorage?.removeItem(key);\n }\n\n // Initialize tests in localStorage\n if (!getLocalStorage(TESTS_KEY)) {\n setLocalStorage(TESTS_KEY, []);\n }\n\n return {\n /**\n * Local Storage get, set and remove\n */\n localStorage: {\n get: getLocalStorage,\n set: setLocalStorage,\n remove: removeLocalStorage,\n },\n\n /**\n * Retrieve selected tests data from local storage\n */\n get tests() {\n return this.localStorage.get(TESTS_KEY) ?? [];\n },\n\n /**\n * Store selected tests data in local storage\n */\n set tests(tests) {\n this.localStorage.set(TESTS_KEY, tests);\n },\n\n /**\n * Store the treatment type in local storage\n */\n set treatmentType(treatmentType) {\n this.localStorage.set(TREATMENT_TYPE, treatmentType);\n },\n\n /**\n * Store coupon data in local storage\n */\n set coupon(coupon) {\n this.localStorage.set(COUPON_KEY, coupon);\n },\n\n /**\n * Retrieve the Manage user ID placing an order from local storage\n */\n get userId() {\n return getLocalStorage(USER_ID_KEY);\n },\n\n /**\n * Store the Manage user ID placing an order in local storage\n */\n set userId(userId) {\n if (typeof userId === 'string' && /^[0-9]+$/.test(userId.trim())) {\n setLocalStorage(USER_ID_KEY, Number(userId));\n } else if (typeof userId === 'number' && Number.isInteger(userId)) {\n setLocalStorage(USER_ID_KEY, userId);\n } else if (userId === null) {\n removeLocalStorage(USER_ID_KEY);\n } else {\n console.error(`Attempt to store invalid user_id in local storage: ${userId} (type: ${typeof userId})`);\n }\n },\n\n /**\n * Set the treatment type to UTI\n */\n setUtiTreatmentType() {\n this.treatmentType = 'uti';\n },\n };\n}\n","/*!\r\n * JavaScript Custom Forms : Number 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: 'Number',\r\n\t\tselector: 'input[type=\"number\"]',\r\n\t\toptions: {\r\n\t\t\trealElementClass: 'jcf-real-element',\r\n\t\t\tfakeStructure: '',\r\n\t\t\tbtnIncSelector: '.jcf-btn-inc',\r\n\t\t\tbtnDecSelector: '.jcf-btn-dec',\r\n\t\t\tpressInterval: 150\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).prepend(this.realElement);\r\n\t\t\tthis.btnDec = this.fakeElement.find(this.options.btnDecSelector);\r\n\t\t\tthis.btnInc = this.fakeElement.find(this.options.btnIncSelector);\r\n\r\n\t\t\t// set initial values\r\n\t\t\tthis.initialValue = parseFloat(this.realElement.val()) || 0;\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) ? -Infinity : this.minValue;\r\n\t\t\tthis.maxValue = isNaN(this.maxValue) ? Infinity : this.maxValue;\r\n\r\n\t\t\t// handle range\r\n\t\t\tif (isFinite(this.maxValue)) {\r\n\t\t\t\tthis.maxValue -= (this.maxValue - this.minValue) % this.stepValue;\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});\r\n\t\t\tthis.btnDec.add(this.btnInc).on('jcf-pointerdown', this.onBtnPress);\r\n\t\t},\r\n\t\tonBtnPress: function(e) {\r\n\t\t\tvar self = this,\r\n\t\t\t\tincrement;\r\n\r\n\t\t\tif (!this.realElement.is(':disabled')) {\r\n\t\t\t\tincrement = this.btnInc.is(e.currentTarget);\r\n\r\n\t\t\t\tself.step(increment);\r\n\t\t\t\tclearInterval(this.stepTimer);\r\n\t\t\t\tthis.stepTimer = setInterval(function() {\r\n\t\t\t\t\tself.step(increment);\r\n\t\t\t\t}, this.options.pressInterval);\r\n\r\n\t\t\t\tthis.page.on('jcf-pointerup', this.onBtnRelease);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonBtnRelease: function() {\r\n\t\t\tclearInterval(this.stepTimer);\r\n\t\t\tthis.page.off('jcf-pointerup', this.onBtnRelease);\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({\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\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\tif (e.which === 38 || e.which === 40) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.step(e.which === 38);\r\n\t\t\t}\r\n\t\t},\r\n\t\tstep: function(increment) {\r\n\t\t\tvar originalValue = parseFloat(this.realElement.val()),\r\n\t\t\t\tnewValue = originalValue || 0,\r\n\t\t\t\taddValue = this.stepValue * (increment ? 1 : -1),\r\n\t\t\t\tedgeNumber = isFinite(this.minValue) ? this.minValue : this.initialValue - Math.abs(newValue * this.stepValue),\r\n\t\t\t\tdiff = Math.abs(edgeNumber - newValue) % this.stepValue;\r\n\r\n\t\t\t// handle step diff\r\n\t\t\tif (diff) {\r\n\t\t\t\tif (increment) {\r\n\t\t\t\t\tnewValue += addValue - diff;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValue -= diff;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnewValue += addValue;\r\n\t\t\t}\r\n\r\n\t\t\t// handle min/max limits\r\n\t\t\tif (newValue < this.minValue) {\r\n\t\t\t\tnewValue = this.minValue;\r\n\t\t\t} else if (newValue > this.maxValue) {\r\n\t\t\t\tnewValue = this.maxValue;\r\n\t\t\t}\r\n\r\n\t\t\t// update value in real input if its changed\r\n\t\t\tif (newValue !== originalValue) {\r\n\t\t\t\tthis.realElement.val(newValue).trigger('change');\r\n\t\t\t\tthis.refresh();\r\n\t\t\t}\r\n\t\t},\r\n\t\trefresh: function() {\r\n\t\t\tvar isDisabled = this.realElement.is(':disabled'),\r\n\t\t\t\tcurrentValue = parseFloat(this.realElement.val());\r\n\r\n\t\t\t// handle disabled state\r\n\t\t\tthis.fakeElement.toggleClass(this.options.disabledClass, isDisabled);\r\n\r\n\t\t\t// refresh button classes\r\n\t\t\tthis.btnDec.toggleClass(this.options.disabledClass, currentValue === this.minValue);\r\n\t\t\tthis.btnInc.toggleClass(this.options.disabledClass, currentValue === this.maxValue);\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\t// restore original structure\r\n\t\t\tthis.realElement.removeClass(this.options.realElementClass).insertBefore(this.fakeElement);\r\n\t\t\tthis.fakeElement.remove();\r\n\t\t\tclearInterval(this.stepTimer);\r\n\r\n\t\t\t// remove event handlers\r\n\t\t\tthis.page.off('jcf-pointerup', this.onBtnRelease);\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"],"names":["jcf","addModule","$","name","selector","options","fakeStructure","buttonText","placeholderText","realElementClass","extensionPrefixClass","selectedFileBlock","buttonTextBlock","matchElement","element","is","init","this","initStructure","attachEvents","refresh","doc","document","realElement","addClass","fakeElement","insertBefore","fileNameBlock","find","text","appendTo","css","position","opacity","on","onPress","change","onChange","focus","onFocus","focusClass","onBlur","removeClass","off","pressedClass","onRelease","getFileName","resultFileName","files","prop","length","each","index","file","val","replace","getFileExtension","fileName","lastIndexOf","substring","toLowerCase","updateExtensionClass","currentExtension","cleanedClassList","RegExp","selectedFileName","toggleClass","disabledClass","destroy","remove","blur","Numbers","Element","Events","headerMenu","wrapper","querySelector","trigger","ACTIVE_CLASS","addEventListener","classList","toggle","body","contains","add","window","debounce","func","timeout","timeoutID","scope","args","arguments","clearTimeout","setTimeout","apply","Array","prototype","slice","call","parseOrElse","str","or","parseInt","isElement","HTMLElement","setStyles","styles","Object","keys","map","key","style","getBoxStyles","computedValue","getComputedStyle","height","padding","top","paddingTop","bottom","paddingBottom","border","borderTopWidth","borderBottomWidth","getElement","elementFromSelector","Error","setAttribute","attribute","value","getAttribute","event","callback","removeEventListener","Animate","Hide","Show","__rest","s","e","t","p","hasOwnProperty","indexOf","getOwnPropertySymbols","i","propertyIsEnumerable","slideToggleAttribute","onRequestAnimationFrame","requestAnimationFrame","getTransition","_a","miliseconds","_b","transitionFunction","shouldCollapse","hide","isHidden","onAnimationStart","boxStyles","transition","overflow","onAnimationEnd","show","isShown","elementDisplayStyle","display","_c","Toggle","__assign","assign","n","accordion","accordionSelector","triggerSelector","activeClass","querySelectorAll","triggers","ANIMATION_OPTIONS","MILLISECONDS","TRANSITION","forEach","item","firstTrigger","firstContent","nextElementSibling","content","slideUp","slideToggle","videoPlayer","poster","iframe","src","onHideEnd","onClose","onShowEnd","onOpen","toc","container","linksWrapper","createElement","h2","category","link","textContent","append","dataset","tocTitle","links","tabsElements","STATE_CLASS","TRIGGER_ACTIVE_CLASS","hideContent","showContent","removeActiveClass","addActiveClass","tabs","targetElement","headerHeight","clientHeight","offsetTop","getBoundingClientRect","scroll","left","behavior","scrollToElement","loginForm","inputs","emailInput","passwordInput","emailInputContainer","parentElement","passwordInputContainer","placeholder","requireTestSelection","storage","tests","location","isObject","obj","constructor","extend","target","ssrDocument","activeElement","nodeName","getElementById","createEvent","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","hash","host","hostname","href","origin","pathname","protocol","search","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getPropertyValue","Image","Date","screen","matchMedia","cancelAnimationFrame","id","win","delay","now","o","toString","to","noExtend","nextSource","node","nodeType","keysArray","filter","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","__swiper__","el","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","slideEl","shadowEl","matches","tag","classes","isArray","elementStyle","child","previousSibling","size","includeMargins","parseFloat","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","events","handler","priority","self","eventsListeners","destroyed","method","split","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","splice","eventHandler","emit","data","context","unshift","processLazyPreloader","imageEl","closest","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","_","includes","column","slideIndexLastInView","rewind","loop","realIndex","updateSize","width","clientWidth","isHorizontal","isVertical","Number","isNaN","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","floor","swiperSlideSize","abs","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","newHeight","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","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","slideTo","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","transitionEnd","isH","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","loopFix","_clientLeft","clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","onTouchStart","touchEventsData","evCache","touches","simulateTouch","pointerType","originalEvent","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","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","diff","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","getTranslate","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","currentTranslate","disableParentSwiper","resistanceRatio","activeSlideIndex","resistance","followFinger","onTouchEnd","type","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","scrollLeft","scrollTop","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","a","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transitionDuration","loopCreate","slideRealIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","prepend","recalcSlides","currentSlideTranslate","controller","control","loopParams","c","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","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","test","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","defaults","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","className","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","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","disconnect","Navigation","hideOnClick","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","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","detail","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","slider","sliderUpdate","starsRating","jQuery","starRating","initialRating","activeColor","starShape","strokeWidth","emptyColor","useGradient","starSize","readOnly","phoneOrderUser","storageService","userId","URLSearchParams","get","isInteger","storeUserIdFromUrl","innerHTML","console","error","updatePhoneOrderUserBanner","customSelect","customCheckbox","customRadio","isElementExist","header","FIXED_CLASS","scrollY","fixedHeader","setHeaderHeightVariable","setHeaderVariable","medicationChoice","wrapNative","wrapNativeOnMobile","fakeDropInBody","maxVisibleItems","plugins","ScrollBar","mouseWheelStep","handleResize","alwaysShowScrollbars","alwaysPreventMouseWheel","scrollAreaStructure","rebuildScrollbars","scrollWrapper","insertAfter","vBarEdge","vBar","holder","vertical","hBar","onMouseWheel","onTouchBody","redrawScrollbars","touchData","onMoveBody","onReleaseBody","targetScrollTop","targetScrollLeft","verticalScrollAllowed","verticalScrollActive","horizontalScrollAllowed","horizontalScrollActive","maxValue","extraLeft","extraTop","preventFlag","currentScrollTop","currentScrollLeft","maxScrollTop","embeddedDimensions","maxScrollLeft","deltaY","deltaX","setScrollBarEdge","edgeSize","saveElementDimensions","savedDimensions","restoreElementDimensions","saveScrollOffsets","savedOffsets","restoreScrollOffsets","getContainerDimensions","desiredDimensions","currentStyles","currentWidth","isModifiedStyles","getThickness","detach","outerWidth","outerHeight","prependTo","getEmbeddedDimensions","dimensions","resultDimensions","fakeBarWidth","fakeBarHeight","paddingWidth","paddingHeight","containerDimensions","viewSize","maxScrollValue","setMaxValue","setRatio","setSize","setValue","touchAction","inactiveClass","verticalClass","horizontalClass","scrollbarStructure","btnDecSelector","btnIncSelector","sliderSelector","handleSelector","scrollInterval","scrollStep","sizeProperty","fullSizeProperty","invertedSizeProperty","thicknessMeasureMethod","charAt","toUpperCase","offsetProperty","offsetEventProperty","currentSliderSize","handleSize","scrollbar","btnDec","btnInc","handle","bindHandlers","onHandlePress","onButtonPress","handleDragActive","sliderOffset","offset","innerHandleOffset","onHandleDrag","onHandleRelease","calcOffset","triggerScrollEvent","clickOffset","currentTarget","startPageScrolling","startSmoothScrolling","onButtonRelease","stopPageScrolling","stopSmoothScrolling","stepValue","currentSize","doPageScroll","handleTop","clearInterval","pageScrollTimer","setInterval","dt","raf","getTimestamp","doScrollAnimation","smoothScrollActive","scrollValue","btnDecSize","btnIncSize","round","setPosition","exports","buttonContent","page","html","multipleCompactStyle","ListBox","ComboBox","SelectList","createInstance","isListBox","instance","useCustomScroll","flipDropToFit","fakeAreaStructure","fakeDropStructure","optionClassPrefix","selectClassPrefix","dropContentSelector","selectTextSelector","dropActiveClass","flipDropClass","listHolder","selectOnClick","useHoverClass","multipleSelectWithoutKey","indexAttribute","cloneClassPrefix","containerStructure","containerSelector","captionClass","optionClass","groupClass","hoverClass","selectedClass","scrollClass","selectTextContainer","selectText","makeUnselectable","getPrefixedClasses","isMobileDevice","resetAppearanceClass","attr","fakeDropTarget","delayedRefresh","list","scrollToActiveOption","click","keydown","onKeyDown","onSelectAreaPress","toggleDropdown","dropActive","pressedFlag","focusedFlag","toggleListMode","hideDropdown","onSelectDropPress","onSelectDropRelease","pointerEvent","dropdown","selectOpenedByEvent","onSelectAreaRelease","onOutsideClick","onSelect","repositionDropdown","fireNativeEvent","state","removeAttr","createDropdown","select","press","release","calcTop","calcLeft","bodyOffset","selectOffset","fakeElementBounds","selectWidth","right","selectHeight","dropHeight","winScrollTop","winHeight","needFlipDrop","showDropdown","refreshSelectedText","setScrollTop","savedScrollTop","getScrollTop","selectedOptionClasses","selectedIndex","selectedOption","selectedOptionImage","selectedOptionText","option","selected","currentSelectedText","currentSelectedImage","selectImage","empty","ctrlKey","metaKey","altKey","refreshTimer","onFakeOptionsPress","onFakeOptionsRelease","refreshSelectedClass","indexSelector","lastClickedIndex","rebuildList","previousSelection","getSelectedOptionsIndexes","onItemPress","onHoverItem","hoverIndex","fakeOptions","eq","tmpListOffsetTop","onItemRelease","onSelectItem","savedPointerType","range","realOptions","shiftKey","rootElement","storedSelectHTML","optionIndex","createOptionsList","fakeListItems","maxCount","sizeValue","needScrollBar","maxHeight","getOverflowHeight","Scrollable","preventWheelHandler","selectedItem","isMultiple","targetOffset","getActiveOptionOffset","selection","getChangedSelectedIndex","targetIndex","currentSelection","currentIndex","dropScrollTop","fakeOption","fakeOptionOffset","fakeOptionHeight","listOffset","createOption","newOption","optionImage","optionImageSrc","createOptGroup","optgroup","optGroupCaption","optGroupList","optGroupContainer","optGroupName","appendChild","createOptionContainer","currentNode","newNode","scrollInstance","getInstance","prefixToAdd","unselectableClass","getOptions","preventHandler","checkedClass","uncheckedClass","labelActiveClass","labelElement","getLabelFor","margin","onRealClick","onFakeClick","savedEventObject","stateChecked","isDefaultPrevented","parentLabel","elementId","isChecked","isDisabled","customInstances","commonOptions","optionsKey","dataKey","rtlClass","isTouchDevice","isWinPhoneDevice","eventList","pointerEventsSupported","pointerEnabled","msPointerEnabled","touchEventsSupported","eventMap","eventPrefix","pointerover","pointerdown","pointermove","pointerup","targetEventName","fakeEventList","fakeEventName","eventHandlers","special","setup","fallbackEvent","fixEvent","teardown","lastTouch","origEvent","touchEventData","fix","changedTouches","dx","dy","mouseEventSimulated","dispatch","wheelEvents","documentMode","shimEventName","wheelDelta","wheelDeltaY","wheelDeltaX","delta","deltaMode","moduleMixin","elements","eventObject","createEventObject","fireEvent","propName","propValue","isFunction","api","version","setOptions","moduleName","moduleOptions","proto","Module","getInlineOptions","dataOptions","attrOptions","parseJSON","pluginName","plugin","originalDestroy","removeData","customOptions","styleSheetCreated","styleTag","styleSheet","addCSSRule","rules","insertRule","addRule","refreshAll","createStyleSheet","currentModuleName","replaceAll","destroyAll","medicationContainer","medicationList","medicationItems","confirmMedicationBtn","preselectedMedicationElement","selectMedication","listItem","price","slug","setUtiTreatmentType","applyDefaultCoupon","cb","elem","log","d","totalStars","useFullStars","hoverColor","ratedColor","disableAfterRate","baseUrl","starGradient","start","end","strokeColor","onHover","onLeave","f","g","$el","settings","forceRoundUp","toFixed","_state","rating","_uid","random","_defaults","_name","renderMarkup","addListeners","initRating","$stars","hoverRating","restoreState","handleRating","getIndex","paintStars","applyRating","executeCallback","rated","minRating","getOffsetByPixel","offsetX","h","j","k","l","ratedColors","getSvgDimensions","getLinearGradient","getVectorPath","getRoundedVectorPath","getSpikeVectorPath","unload","setRating","getRating","resize","setReadOnly","fn","isPlainObject","resizerStructure","resizer","scrollable","keyup","onResizePress","resizerOffset","areaOffset","dragData","innerOffsetLeft","innerOffsetTop","onResizeMove","onResizeRelease","isFocused","focusedDrag","widthDiff","refreshCustomScrollbars","refreshRadioGroup","currentActiveRadio","getCurrentActiveRadio","getRadioGroup","radio","parentForm","dataListMark","rangeDisplayWrapper","rangeDisplay","trackSelector","activeHandleClass","orientation","dragHandleCenter","snapToMarks","snapRadius","minRange","track","trackHolder","createdHandleCount","activeDragHandleIndex","values","handleCount","rangeMin","rangeMax","clone","rangeMid","handles","directionProperty","eventProperty","sizeMethod","minValue","stepsCount","createDataList","onTrackPress","dataValues","dataListId","markOffset","itemValue","valueToOffset","getDragHandleRange","handleIndex","minStep","maxStep","Infinity","valueToStepIndex","minStepIndex","maxStepIndex","getNearestHandle","percent","closestHandle","closestDistance","handleOffset","handleDistance","trackSize","trackOffset","innerOffset","activeDragHandle","onHandleMove","newOffset","dragPercent","stepIndex","valuePercent","handleDragRange","dragOffset","markMin","markMax","stepIndexToValue","updateValues","newValue","hasClass","onKeyPress","incValue","decValue","updateRanges","curHandle","prevHandle","midBox","changeValue","originalValue","setSliderValue","getSliderValue","couponService","coupon","coupon_code","discount_amount","TESTS_KEY","USER_ID_KEY","getLocalStorage","JSON","parse","localStorage","getItem","setLocalStorage","setItem","stringify","removeLocalStorage","removeItem","set","treatmentType","pressInterval","initialValue","isFinite","onBtnPress","stepTimer","onBtnRelease","addValue","edgeNumber","currentValue"],"sourceRoot":""}