{"version":3,"sources":["webpack://rangeSlider/webpack/universalModuleDefinition","webpack://rangeSlider/webpack/bootstrap","webpack://rangeSlider/./src/utils/functions.js","webpack://rangeSlider/./src/range-slider.js","webpack://rangeSlider/./src/utils/dom.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","uuid","s4","Math","floor","random","toString","substring","delay","fn","wait","_len","arguments","length","args","Array","_key","setTimeout","apply","debounce","debounceDuration","undefined","_len2","_key2","debouncing","lastReturnVal","clearTimeout","debounceTimeout","isString","obj","isNumberLike","isArray","isFinite","parseFloat","getFirsNumberLike","_len3","_key3","len","isObject","simpleExtend","defaultOpt","options","opt","between","pos","min","max","dom","func","newLineAndTabRegexp","RegExp","pluginName","inputrange","supportsRange","defaults","polyfill","document","rangeClass","disabledClass","fillClass","bufferClass","handleClass","startEvent","moveEvent","endEvent","step","buffer","stick","borderRadius","vertical","verticalSlidingFixRegistered","RangeSlider","element","_classCallCheck","this","stepSetByDefault","stickAttribute","stickValues","instances","push","onInit","onSlide","onSlideStart","onSlideEnd","onSlideEventsCount","isInteractsNow","needTriggerEvents","_addVerticalSlideScrollFix","getAttribute","identifier","percent","split","map","_updatePercentFromValue","toFixed","_toFixed","directionClass","container","createElement","addClass","handle","range","id","elementTitle","setAttribute","appendChild","_setValue","insertAfter","setCss","position","width","height","overflow","opacity","_handleDown","_handleMove","_handleEnd","_startEventListener","_changeEventListener","_handleResize","_init","addEventListener","addEventListeners","triggerEvents","_setBufferPosition","_update","_this","removeAllListenersFromEl","removeEventListener","style","cssText","parentNode","removeChild","filter","plugin","some","_removeVerticalSlideScrollFix","replace","ev","data","_this2","el","target","isEventOnSlider","which","forEachAncestors","hasClass","origin","_getPositionFromValue","_setPosition","triggerEvent","sizeProperty","handleSize","getDimension","rangeSize","maxHandleX","grabX","disabled","removeClass","_touchMoveScrollHandler","passive","_this3","e","preventDefault","className","indexOf","boundingClientRect","getBoundingClientRect","posX","_getRelativePosition","rangeX","bottom","left","handleX","_getPositionFromNode","removeEventListeners","slidingVertically","stickRadius","restFromValue","stickTo","_getValueFromPosition","abs","transform","isPercent","console","warn","isNaN","bufferSize","paddingSize","bufferSizeWithPadding","node","offsetTop","offsetLeft","offsetParent","pageOffset","pagePositionProperty","touches","originalEvent","currentPoint","x","y","pageYOffset","percentage","round","Number","force","createInstance","slice","forEach","event","version","VERSION","functions","EVENT_LISTENER_LIST","ieVersion","detectIE","ua","navigator","userAgent","msie","parseInt","rv","edge","eventCaptureParams","PointerEvent","isHidden","offsetWidth","offsetHeight","open","getHiddenParentNodes","parents","hiddenParentNodes","hiddenParentNodesLength","hiddenParentNodesStyle","dimension","toggleOpenProperty","display","visibility","j","cssObj","elem","test","newClass","callback","andForElement","TypeError","HTMLElement","trim","createEvent","initCustomEvent","dispatchEvent","referenceNode","newNode","insertBefore","nextSibling","events","listener","eventName","index","splice","instance","rm","input","type"],"mappings":"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","file":"range-slider.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"rangeSlider\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rangeSlider\"] = factory();\n\telse\n\t\troot[\"rangeSlider\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","/**\n * Create a random uuid\n */\nexport const uuid = () => {\n const s4 = () => Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n};\n\n/**\n * Delays a function for the given number of milliseconds, and then calls\n * it with the arguments supplied.\n *\n * @param {Function} fn function\n * @param {Number} wait delay\n * @param {Number} args arguments\n * @return {Function}\n */\nexport const delay = (fn, wait, ...args) => setTimeout(() => fn.apply(null, args), wait);\n\n/**\n * Returns a debounced function that will make sure the given\n * function is not triggered too much.\n *\n * @param {Function} fn Function to debounce.\n * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the\n * function. (defaults to 100ms)\n * @return {Function}\n */\nexport const debounce = (fn, debounceDuration = 100) => (...args) => {\n if (!fn.debouncing) {\n fn.lastReturnVal = fn.apply(window, args);\n fn.debouncing = true;\n }\n clearTimeout(fn.debounceTimeout);\n fn.debounceTimeout = setTimeout(() => {\n fn.debouncing = false;\n }, debounceDuration);\n return fn.lastReturnVal;\n};\n\nexport const isString = obj => obj === '' + obj;\n\nexport const isArray = obj => Object.prototype.toString.call(obj) === '[object Array]';\n\nexport const isNumberLike = (obj) =>\n (obj !== null && obj !== undefined && ((isString(obj) && isFinite(parseFloat(obj))) || (isFinite(obj))));\n\nexport const getFirsNumberLike = (...args) => {\n if (!args.length) {\n return null;\n }\n\n for (let i = 0, len = args.length; i < len; i++) {\n if (isNumberLike(args[i])) {\n return args[i];\n }\n }\n\n return null;\n};\n\nexport const isObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]';\n\nexport const simpleExtend = (defaultOpt, options) => {\n const opt = {};\n\n for (let key in defaultOpt) {\n opt[key] = defaultOpt[key];\n }\n for (let key in options) {\n opt[key] = options[key];\n }\n\n return opt;\n};\n\nexport const between = (pos, min, max) => {\n if (pos < min) {\n return min;\n }\n if (pos > max) {\n return max;\n }\n return pos;\n};\n","import * as dom from './utils/dom';\nimport * as func from './utils/functions';\nimport './range-slider.css';\n\nconst newLineAndTabRegexp = new RegExp('/[\\\\n\\\\t]/', 'g');\nconst MAX_SET_BY_DEFAULT = 100;\nconst HANDLE_RESIZE_DELAY = 300;\nconst HANDLE_RESIZE_DEBOUNCE = 50;\n\nconst pluginName = 'rangeSlider';\nconst inputrange = dom.supportsRange();\nconst defaults = {\n polyfill: true,\n root: document,\n rangeClass: 'rangeSlider',\n disabledClass: 'rangeSlider--disabled',\n fillClass: 'rangeSlider__fill',\n bufferClass: 'rangeSlider__buffer',\n handleClass: 'rangeSlider__handle',\n startEvent: ['mousedown', 'touchstart', 'pointerdown'],\n moveEvent: ['mousemove', 'touchmove', 'pointermove'],\n endEvent: ['mouseup', 'touchend', 'pointerup'],\n min: null,\n max: null,\n step: null,\n value: null,\n buffer: null,\n stick: null,\n borderRadius: 10,\n vertical: false\n};\n\nlet verticalSlidingFixRegistered = false;\n\n/**\n * Plugin\n * @param {HTMLElement} element\n * @param {this} options\n */\nexport default class RangeSlider {\n constructor(element, options) {\n let minSetByDefault;\n let maxSetByDefault;\n let stepSetByDefault;\n let stickAttribute;\n let stickValues;\n\n RangeSlider.instances.push(this);\n\n this.element = element;\n this.options = func.simpleExtend(defaults, options);\n this.polyfill = this.options.polyfill;\n this.vertical = this.options.vertical;\n this.onInit = this.options.onInit;\n this.onSlide = this.options.onSlide;\n this.onSlideStart = this.options.onSlideStart;\n this.onSlideEnd = this.options.onSlideEnd;\n this.onSlideEventsCount = -1;\n this.isInteractsNow = false;\n this.needTriggerEvents = false;\n\n this._addVerticalSlideScrollFix();\n\n // Plugin should only be used as a polyfill\n if (!this.polyfill) {\n // Input range support?\n if (inputrange) {\n return;\n }\n }\n\n this.options.buffer = this.options.buffer || parseFloat(this.element.getAttribute('data-buffer'));\n\n this.identifier = 'js-' + pluginName + '-' + func.uuid();\n\n this.min = func.getFirsNumberLike(\n this.options.min,\n parseFloat(this.element.getAttribute('min')),\n (minSetByDefault = 0)\n );\n\n this.max = func.getFirsNumberLike(\n this.options.max,\n parseFloat(this.element.getAttribute('max')),\n (maxSetByDefault = MAX_SET_BY_DEFAULT)\n );\n\n this.value = func.getFirsNumberLike(this.options.value, this.element.value,\n parseFloat(this.element.value || this.min + (this.max - this.min) / 2));\n\n this.step = func.getFirsNumberLike(this.options.step,\n parseFloat(this.element.getAttribute('step')) || (stepSetByDefault = 1));\n\n this.percent = null;\n\n if (func.isArray(this.options.stick) && this.options.stick.length >= 1) {\n this.stick = this.options.stick;\n } else if ((stickAttribute = this.element.getAttribute('stick'))) {\n stickValues = stickAttribute.split(' ');\n if (stickValues.length >= 1) {\n this.stick = stickValues.map(parseFloat);\n }\n }\n if (this.stick && this.stick.length === 1) {\n this.stick.push(this.step * 1.5);\n }\n this._updatePercentFromValue();\n\n this.toFixed = this._toFixed(this.step);\n\n let directionClass;\n\n this.container = document.createElement('div');\n dom.addClass(this.container, this.options.fillClass);\n\n directionClass = this.vertical ? this.options.fillClass + '__vertical' : this.options.fillClass + '__horizontal';\n dom.addClass(this.container, directionClass);\n\n this.handle = document.createElement('div');\n dom.addClass(this.handle, this.options.handleClass);\n\n directionClass = this.vertical ?\n this.options.handleClass + '__vertical' :\n this.options.handleClass + '__horizontal';\n dom.addClass(this.handle, directionClass);\n\n this.range = document.createElement('div');\n dom.addClass(this.range, this.options.rangeClass);\n this.range.id = this.identifier;\n\n const elementTitle = element.getAttribute('title');\n if (elementTitle && elementTitle.length > 0) {\n this.range.setAttribute('title', elementTitle);\n }\n\n if (this.options.bufferClass) {\n this.buffer = document.createElement('div');\n dom.addClass(this.buffer, this.options.bufferClass);\n this.range.appendChild(this.buffer);\n\n directionClass = this.vertical ?\n this.options.bufferClass + '__vertical' :\n this.options.bufferClass + '__horizontal';\n dom.addClass(this.buffer, directionClass);\n }\n\n this.range.appendChild(this.container);\n this.range.appendChild(this.handle);\n\n directionClass = this.vertical ? this.options.rangeClass + '__vertical' : this.options.rangeClass + '__horizontal';\n dom.addClass(this.range, directionClass);\n\n if (func.isNumberLike(this.options.value)) {\n this._setValue(this.options.value, true);\n this.element.value = this.options.value;\n }\n\n if (func.isNumberLike(this.options.buffer)) {\n this.element.setAttribute('data-buffer', this.options.buffer);\n }\n\n if (func.isNumberLike(this.options.min) || minSetByDefault) {\n this.element.setAttribute('min', '' + this.min);\n }\n\n if (func.isNumberLike(this.options.max) || maxSetByDefault) {\n this.element.setAttribute('max', '' + this.max);\n }\n\n if (func.isNumberLike(this.options.step) || stepSetByDefault) {\n this.element.setAttribute('step', '' + this.step);\n }\n\n dom.insertAfter(this.element, this.range);\n\n // hide the input visually\n dom.setCss(this.element, {\n 'position': 'absolute',\n 'width': '1px',\n 'height': '1px',\n 'overflow': 'hidden',\n 'opacity': '0'\n });\n\n // Store context\n this._handleDown = this._handleDown.bind(this);\n this._handleMove = this._handleMove.bind(this);\n this._handleEnd = this._handleEnd.bind(this);\n this._startEventListener = this._startEventListener.bind(this);\n this._changeEventListener = this._changeEventListener.bind(this);\n this._handleResize = this._handleResize.bind(this);\n\n this._init();\n\n // Attach Events\n window.addEventListener('resize', this._handleResize, false);\n\n dom.addEventListeners(this.options.root, this.options.startEvent, this._startEventListener);\n\n // Listen to programmatic value changes\n this.element.addEventListener('change', this._changeEventListener, false);\n }\n\n /**\n * A lightweight plugin wrapper around the constructor,preventing against multiple instantiations\n * @param {Element} el\n * @param {Object} options\n */\n static create(el, options) {\n const createInstance = (el) => {\n let data = el[pluginName];\n\n // Create a new instance.\n if (!data) {\n data = new RangeSlider(el, options);\n el[pluginName] = data;\n }\n };\n\n if (el.length) {\n Array.prototype.slice.call(el).forEach(function (el) {\n createInstance(el);\n });\n } else {\n createInstance(el);\n }\n }\n\n static _touchMoveScrollHandler (event) {\n if (RangeSlider.slidingVertically) {\n event.preventDefault();\n }\n }\n\n /* public methods */\n\n /**\n * @param {Object} obj like {min : Number, max : Number, value : Number, step : Number, buffer : [String|Number]}\n * @param {Boolean} triggerEvents\n * @returns {RangeSlider}\n */\n update(obj, triggerEvents) {\n if (triggerEvents) {\n this.needTriggerEvents = true;\n }\n if (func.isObject(obj)) {\n if (func.isNumberLike(obj.min)) {\n this.element.setAttribute('min', '' + obj.min);\n this.min = obj.min;\n }\n\n if (func.isNumberLike(obj.max)) {\n this.element.setAttribute('max', '' + obj.max);\n this.max = obj.max;\n }\n\n if (func.isNumberLike(obj.step)) {\n this.element.setAttribute('step', '' + obj.step);\n this.step = obj.step;\n this.toFixed = this._toFixed(obj.step);\n }\n\n if (func.isNumberLike(obj.buffer)) {\n this._setBufferPosition(obj.buffer);\n }\n\n if (func.isNumberLike(obj.value)) {\n this._setValue(obj.value);\n }\n }\n this._update();\n this.onSlideEventsCount = 0;\n this.needTriggerEvents = false;\n return this;\n };\n\n destroy() {\n dom.removeAllListenersFromEl(this, this.options.root);\n window.removeEventListener('resize', this._handleResize, false);\n this.element.removeEventListener('change', this._changeEventListener, false);\n\n this.element.style.cssText = '';\n delete this.element[pluginName];\n\n // Remove the generated markup\n if (this.range) {\n this.range.parentNode.removeChild(this.range);\n }\n\n RangeSlider.instances = RangeSlider.instances.filter((plugin) => plugin !== this);\n\n if (!RangeSlider.instances.some((plugin) => plugin.vertical)) {\n this._removeVerticalSlideScrollFix();\n }\n }\n\n /* private methods */\n\n _toFixed(step) {\n return (step + '').replace('.', '').length - 1;\n }\n\n _init() {\n if (this.onInit && typeof this.onInit === 'function') {\n this.onInit();\n }\n this._update(false);\n }\n\n _updatePercentFromValue() {\n this.percent = (this.value - this.min) / (this.max - this.min);\n }\n\n /**\n * This method check if this.identifier exists in ev.target's ancestors\n * @param ev\n * @param data\n */\n _startEventListener(ev, data) {\n const el = ev.target;\n let isEventOnSlider = false;\n\n if (ev.which !== 1 && !('touches' in ev)) {\n return;\n }\n\n dom.forEachAncestors(\n el,\n el => (isEventOnSlider = el.id === this.identifier && !dom.hasClass(el, this.options.disabledClass)),\n true\n );\n\n if (isEventOnSlider) {\n this._handleDown(ev, data);\n }\n }\n\n _changeEventListener(ev, data) {\n if (data && data.origin === this.identifier) {\n return;\n }\n\n const value = ev.target.value;\n const pos = this._getPositionFromValue(value);\n\n this._setPosition(pos);\n }\n\n _update(triggerEvent) {\n const sizeProperty = this.vertical ? 'offsetHeight' : 'offsetWidth';\n\n this.handleSize = dom.getDimension(this.handle, sizeProperty);\n this.rangeSize = dom.getDimension(this.range, sizeProperty);\n this.maxHandleX = this.rangeSize - this.handleSize;\n this.grabX = this.handleSize / 2;\n this.position = this._getPositionFromValue(this.value);\n\n // Consider disabled state\n if (this.element.disabled) {\n dom.addClass(this.range, this.options.disabledClass);\n } else {\n dom.removeClass(this.range, this.options.disabledClass);\n }\n\n this._setPosition(this.position);\n if (this.options.bufferClass && this.options.buffer) {\n this._setBufferPosition(this.options.buffer);\n }\n this._updatePercentFromValue();\n if (triggerEvent !== false) {\n dom.triggerEvent(this.element, 'change', { origin: this.identifier });\n }\n }\n\n _addVerticalSlideScrollFix() {\n if (this.vertical && !verticalSlidingFixRegistered) {\n document.addEventListener('touchmove', RangeSlider._touchMoveScrollHandler, { passive: false });\n verticalSlidingFixRegistered = true;\n }\n }\n\n _removeVerticalSlideScrollFix() {\n document.removeEventListener('touchmove', RangeSlider._touchMoveScrollHandler);\n verticalSlidingFixRegistered = false;\n }\n\n _handleResize() {\n return func.debounce(() => {\n // Simulate resizeEnd event.\n func.delay(() => {\n this._update();\n }, HANDLE_RESIZE_DELAY);\n }, HANDLE_RESIZE_DEBOUNCE)();\n }\n\n _handleDown(e) {\n this.isInteractsNow = true;\n e.preventDefault();\n dom.addEventListeners(this.options.root, this.options.moveEvent, this._handleMove);\n dom.addEventListeners(this.options.root, this.options.endEvent, this._handleEnd);\n\n // If we click on the handle don't set the new position\n if ((' ' + e.target.className + ' ').replace(newLineAndTabRegexp, ' ').indexOf(this.options.handleClass) > -1) {\n return;\n }\n\n const boundingClientRect = this.range.getBoundingClientRect();\n\n const posX = this._getRelativePosition(e);\n const rangeX = this.vertical ? boundingClientRect.bottom : boundingClientRect.left;\n const handleX = this._getPositionFromNode(this.handle) - rangeX;\n const position = posX - this.grabX;\n\n this._setPosition(position);\n\n if (posX >= handleX && posX < handleX + this.options.borderRadius * 2) {\n this.grabX = posX - handleX;\n }\n this._updatePercentFromValue();\n }\n\n _handleMove(e) {\n const posX = this._getRelativePosition(e);\n\n this.isInteractsNow = true;\n e.preventDefault();\n this._setPosition(posX - this.grabX);\n }\n\n _handleEnd(e) {\n e.preventDefault();\n dom.removeEventListeners(this.options.root, this.options.moveEvent, this._handleMove);\n dom.removeEventListeners(this.options.root, this.options.endEvent, this._handleEnd);\n\n // Ok we're done fire the change event\n dom.triggerEvent(this.element, 'change', { origin: this.identifier });\n\n if (this.isInteractsNow || this.needTriggerEvents) {\n if (this.onSlideEnd && typeof this.onSlideEnd === 'function') {\n this.onSlideEnd(this.value, this.percent, this.position);\n }\n\n if (this.vertical) {\n RangeSlider.slidingVertically = false;\n }\n }\n this.onSlideEventsCount = 0;\n this.isInteractsNow = false;\n }\n\n _setPosition(pos) {\n let position;\n let stickRadius;\n let restFromValue;\n let stickTo;\n\n // Snapping steps\n let value = this._getValueFromPosition(func.between(pos, 0, this.maxHandleX));\n\n // Stick to stick[0] in radius stick[1]\n if (this.stick) {\n stickTo = this.stick[0];\n stickRadius = this.stick[1] || 0.1;\n restFromValue = value % stickTo;\n if (restFromValue < stickRadius) {\n value = value - restFromValue;\n } else if (Math.abs(stickTo - restFromValue) < stickRadius) {\n value = value - restFromValue + stickTo;\n }\n }\n position = this._getPositionFromValue(value);\n\n // Update ui\n if (this.vertical) {\n this.container.style.height = (position + this.grabX) + 'px';\n this.handle.style['webkitTransform'] = 'translateY(-' + position + 'px)';\n this.handle.style['msTransform'] = 'translateY(-' + position + 'px)';\n this.handle.style.transform = 'translateY(-' + position + 'px)';\n } else {\n this.container.style.width = (position + this.grabX) + 'px';\n this.handle.style['webkitTransform'] = 'translateX(' + position + 'px)';\n this.handle.style['msTransform'] = 'translateX(' + position + 'px)';\n this.handle.style.transform = 'translateX(' + position + 'px)';\n }\n\n this._setValue(value);\n\n // Update globals\n this.position = position;\n this.value = value;\n this._updatePercentFromValue();\n\n if (this.isInteractsNow || this.needTriggerEvents) {\n if (this.onSlideStart && typeof this.onSlideStart === 'function' && this.onSlideEventsCount === 0) {\n this.onSlideStart(this.value, this.percent, this.position);\n }\n\n if (this.onSlide && typeof this.onSlide === 'function') {\n this.onSlide(this.value, this.percent, this.position);\n }\n\n if (this.vertical) {\n RangeSlider.slidingVertically = true;\n }\n }\n\n this.onSlideEventsCount++;\n }\n\n _setBufferPosition(pos) {\n let isPercent = true;\n\n if (isFinite(pos)) {\n pos = parseFloat(pos);\n } else if (func.isString(pos)) {\n if (pos.indexOf('px') > 0) {\n isPercent = false;\n }\n pos = parseFloat(pos);\n } else {\n console.warn('New position must be XXpx or XX%');\n return;\n }\n\n if (isNaN(pos)) {\n console.warn('New position is NaN');\n return;\n }\n if (!this.options.bufferClass) {\n console.warn('You disabled buffer, it\\'s className is empty');\n return;\n }\n let bufferSize = isPercent ? pos : (pos / this.rangeSize * 100);\n\n if (bufferSize < 0) {\n bufferSize = 0;\n }\n if (bufferSize > 100) {\n bufferSize = 100;\n }\n this.options.buffer = bufferSize;\n\n let paddingSize = this.options.borderRadius / this.rangeSize * 100;\n let bufferSizeWithPadding = bufferSize - paddingSize;\n\n if (bufferSizeWithPadding < 0) {\n bufferSizeWithPadding = 0;\n }\n\n if (this.vertical) {\n this.buffer.style.height = bufferSizeWithPadding + '%';\n this.buffer.style.bottom = paddingSize * 0.5 + '%';\n } else {\n this.buffer.style.width = bufferSizeWithPadding + '%';\n this.buffer.style.left = paddingSize * 0.5 + '%';\n }\n\n this.element.setAttribute('data-buffer', bufferSize);\n }\n\n /**\n *\n * @param {Element} node\n * @returns {*} Returns element position relative to the parent\n * @private\n */\n _getPositionFromNode(node) {\n let i = this.vertical ? this.maxHandleX : 0;\n\n while (node !== null) {\n i += this.vertical ? node.offsetTop : node.offsetLeft;\n node = node.offsetParent;\n }\n return i;\n }\n\n /**\n *\n * @param {(MouseEvent|TouchEvent)}e\n * @returns {number}\n */\n _getRelativePosition(e) {\n const boundingClientRect = this.range.getBoundingClientRect();\n\n // Get the offset relative to the viewport\n const rangeSize = this.vertical ? boundingClientRect.bottom : boundingClientRect.left;\n let pageOffset = 0;\n\n const pagePositionProperty = this.vertical ? 'pageY' : 'pageX';\n\n if (typeof e[pagePositionProperty] !== 'undefined') {\n pageOffset = (e.touches && e.touches.length) ? e.touches[0][pagePositionProperty] : e[pagePositionProperty];\n } else if (typeof e.originalEvent !== 'undefined') {\n if (typeof e.originalEvent[pagePositionProperty] !== 'undefined') {\n pageOffset = e.originalEvent[pagePositionProperty];\n } else if (e.originalEvent.touches && e.originalEvent.touches[0] &&\n typeof e.originalEvent.touches[0][pagePositionProperty] !== 'undefined') {\n pageOffset = e.originalEvent.touches[0][pagePositionProperty];\n }\n } else if (e.touches && e.touches[0] && typeof e.touches[0][pagePositionProperty] !== 'undefined') {\n pageOffset = e.touches[0][pagePositionProperty];\n } else if (e.currentPoint && (typeof e.currentPoint.x !== 'undefined' || typeof e.currentPoint.y !== 'undefined')) {\n pageOffset = this.vertical ? e.currentPoint.y : e.currentPoint.x;\n }\n\n if (this.vertical) {\n pageOffset -= window.pageYOffset;\n }\n\n return this.vertical ? rangeSize - pageOffset : pageOffset - rangeSize;\n }\n\n _getPositionFromValue(value) {\n const percentage = (value - this.min) / (this.max - this.min);\n const pos = percentage * this.maxHandleX;\n\n return isNaN(pos) ? 0 : pos;\n }\n\n _getValueFromPosition(pos) {\n const percentage = ((pos) / (this.maxHandleX || 1));\n const value = this.step * Math.round(percentage * (this.max - this.min) / this.step) + this.min;\n\n return Number((value).toFixed(this.toFixed));\n }\n\n _setValue(value, force) {\n if (value === this.value && !force) {\n return;\n }\n\n // Set the new value and fire the `input` event\n this.element.value = value;\n this.value = value;\n dom.triggerEvent(this.element, 'input', { origin: this.identifier });\n }\n}\n\nRangeSlider.version = VERSION;\nRangeSlider.dom = dom;\nRangeSlider.functions = func;\nRangeSlider.instances = [];\nRangeSlider.slidingVertically = false;\n","import * as func from './functions';\n\nconst EVENT_LISTENER_LIST = 'eventListenerList';\n\nexport const detectIE = () => {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n\n if (msie > 0) {\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n const trident = ua.indexOf('Trident/');\n\n if (trident > 0) {\n const rv = ua.indexOf('rv:');\n\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n const edge = ua.indexOf('Edge/');\n\n if (edge > 0) {\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n\n return false;\n};\n\nconst ieVersion = detectIE();\nconst eventCaptureParams = window.PointerEvent && !ieVersion ? {passive: false} : false;\n\n/**\n * Check if a `element` is visible in the DOM\n *\n * @param {Element} element\n * @return {Boolean}\n */\nexport const isHidden = (element) => (\n element.offsetWidth === 0 || element.offsetHeight === 0 || element.open === false\n);\n\n/**\n * Get hidden parentNodes of an `element`\n *\n * @param {Element} element\n * @return {Element[]}\n */\nexport const getHiddenParentNodes = (element) => {\n const parents = [];\n let node = element.parentNode;\n\n while (node && isHidden(node)) {\n parents.push(node);\n node = node.parentNode;\n }\n return parents;\n};\n\n/**\n * Returns dimensions for an element even if it is not visible in the DOM.\n *\n * @param {Element} element\n * @param {string} key (e.g. offsetWidth …)\n * @return {Number}\n */\nexport const getDimension = (element, key) => {\n const hiddenParentNodes = getHiddenParentNodes(element);\n const hiddenParentNodesLength = hiddenParentNodes.length;\n const hiddenParentNodesStyle = [];\n let dimension = element[key];\n\n // Used for native `
` elements\n const toggleOpenProperty = (element) => {\n if (typeof element.open !== 'undefined') {\n element.open = !element.open;\n }\n };\n\n if (hiddenParentNodesLength) {\n for (let i = 0; i < hiddenParentNodesLength; i++) {\n // Cache the styles to restore then later.\n hiddenParentNodesStyle.push({\n display: hiddenParentNodes[i].style.display,\n height: hiddenParentNodes[i].style.height,\n overflow: hiddenParentNodes[i].style.overflow,\n visibility: hiddenParentNodes[i].style.visibility\n });\n\n hiddenParentNodes[i].style.display = 'block';\n hiddenParentNodes[i].style.height = '0';\n hiddenParentNodes[i].style.overflow = 'hidden';\n hiddenParentNodes[i].style.visibility = 'hidden';\n toggleOpenProperty(hiddenParentNodes[i]);\n }\n\n dimension = element[key];\n\n for (let j = 0; j < hiddenParentNodesLength; j++) {\n toggleOpenProperty(hiddenParentNodes[j]);\n hiddenParentNodes[j].style.display = hiddenParentNodesStyle[j].display;\n hiddenParentNodes[j].style.height = hiddenParentNodesStyle[j].height;\n hiddenParentNodes[j].style.overflow = hiddenParentNodesStyle[j].overflow;\n hiddenParentNodes[j].style.visibility = hiddenParentNodesStyle[j].visibility;\n }\n }\n return dimension;\n};\n\n/**\n *\n * @param {HTMLElement} el\n * @param {Object} cssObj\n * @returns {*}\n */\nexport const setCss = (el, cssObj) => {\n for (const key in cssObj) {\n el.style[key] = cssObj[key];\n }\n return el.style;\n};\n\n/**\n *\n * @param {HTMLElement} elem\n * @param {string} className\n */\nexport const hasClass = (elem, className) => new RegExp(' ' + className + ' ').test(' ' + elem.className + ' ');\n\n/**\n *\n * @param {HTMLElement} elem\n * @param {string} className\n */\nexport const addClass = (elem, className) => {\n if (!hasClass(elem, className)) {\n elem.className += ' ' + className;\n }\n};\n\n/**\n *\n * @param {HTMLElement} elem\n * @param {string} className\n */\nexport const removeClass = (elem, className) => {\n let newClass = ' ' + elem.className.replace(/[\\t\\r\\n]/g, ' ') + ' ';\n\n if (hasClass(elem, className)) {\n while (newClass.indexOf(' ' + className + ' ') >= 0) {\n newClass = newClass.replace(' ' + className + ' ', ' ');\n }\n elem.className = newClass.replace(/^\\s+|\\s+$/g, '');\n }\n};\n\n/**\n *\n * @param {HTMLElement} el\n * @param {Function} callback\n * @param {boolean} andForElement - apply callback for el\n * @returns {HTMLElement}\n */\nexport const forEachAncestors = (el, callback, andForElement) => {\n if (andForElement) {\n callback(el);\n }\n\n while (el.parentNode && !callback(el)) {\n el = el.parentNode;\n }\n\n return el;\n};\n\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name event name\n * @param {Object} data\n */\nexport const triggerEvent = (el, name, data) => {\n if (!func.isString(name)) {\n throw new TypeError('event name must be String');\n }\n if (!(el instanceof HTMLElement)) {\n throw new TypeError('element must be HTMLElement');\n }\n name = name.trim();\n const event = document.createEvent('CustomEvent');\n\n event.initCustomEvent(name, false, false, data);\n el.dispatchEvent(event);\n};\n\n/**\n * @param {Object} referenceNode after this\n * @param {Object} newNode insert this\n */\nexport const insertAfter = (referenceNode, newNode) =>\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n\n/**\n * Add event listeners and push them to el[EVENT_LISTENER_LIST]\n * @param {HTMLElement|Node|Document} el DOM element\n * @param {Array} events\n * @param {Function} listener\n */\nexport const addEventListeners = (el, events, listener) => {\n events.forEach((eventName) => {\n if (!el[EVENT_LISTENER_LIST]) {\n el[EVENT_LISTENER_LIST] = {};\n }\n if (!el[EVENT_LISTENER_LIST][eventName]) {\n el[EVENT_LISTENER_LIST][eventName] = [];\n }\n\n el.addEventListener(\n eventName,\n listener,\n eventCaptureParams\n );\n if (el[EVENT_LISTENER_LIST][eventName].indexOf(listener) < 0) {\n el[EVENT_LISTENER_LIST][eventName].push(listener);\n }\n });\n};\n\n/**\n * Remove event listeners and remove them from el[EVENT_LISTENER_LIST]\n * @param {HTMLElement} el DOM element\n * @param {Array} events\n * @param {Function} listener\n */\nexport const removeEventListeners = (el, events, listener) => {\n events.forEach((eventName) => {\n let index;\n\n el.removeEventListener(\n eventName,\n listener,\n false\n );\n\n if (el[EVENT_LISTENER_LIST] && el[EVENT_LISTENER_LIST][eventName] &&\n (index = el[EVENT_LISTENER_LIST][eventName].indexOf(listener)) > -1\n ) {\n el[EVENT_LISTENER_LIST][eventName].splice(index, 1);\n }\n });\n};\n\n/**\n * Remove ALL event listeners which exists in el[EVENT_LISTENER_LIST]\n * @param {RangeSlider} instance\n * @param {HTMLElement} el DOM element\n */\nexport const removeAllListenersFromEl = (instance, el) => {\n if (!el[EVENT_LISTENER_LIST]) {\n return;\n }\n\n /* jshint ignore:start */\n\n /**\n *\n * @callback listener\n * @this {Object} event name\n */\n function rm(listener) {\n if (listener === instance._startEventListener) {\n this.el.removeEventListener(this.eventName, listener, false);\n }\n }\n\n for (const eventName in el[EVENT_LISTENER_LIST]) {\n el[EVENT_LISTENER_LIST][eventName].forEach(rm, {eventName: eventName, el: el});\n }\n\n el[EVENT_LISTENER_LIST] = {};\n /* jshint ignore:end */\n};\n\n/**\n * Range feature detection\n * @return {Boolean}\n */\nexport const supportsRange = () => {\n const input = document.createElement('input');\n\n input.setAttribute('type', 'range');\n return input.type !== 'text';\n};\n"],"sourceRoot":""}