{"version":3,"file":"bootstrap-slider.js","sources":["bootstrap-slider.js"],"sourcesContent":["/*! =======================================================\r\n VERSION 11.0.2\r\n========================================================= */\r\n\"use strict\";\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\n/*! =========================================================\r\n * bootstrap-slider.js\r\n *\r\n * Maintainers:\r\n *\t\tKyle Kemp\r\n *\t\t\t- Twitter: @seiyria\r\n *\t\t\t- Github: seiyria\r\n *\t\tRohit Kalkur\r\n *\t\t\t- Twitter: @Rovolutionary\r\n *\t\t\t- Github: rovolution\r\n *\r\n * =========================================================\r\n *\r\n * bootstrap-slider is released under the MIT License\r\n * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n * ========================================================= */\r\n\r\n/**\r\n * Bridget makes jQuery widgets\r\n * v1.0.1\r\n * MIT license\r\n */\r\nvar windowIsDefined = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\";\r\n\r\n(function (factory) {\r\n\tif (typeof define === \"function\" && define.amd) {\r\n\t\tdefine([\"jquery\"], factory);\r\n\t} else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\r\n\t\tvar jQuery;\r\n\t\ttry {\r\n\t\t\tjQuery = require(\"jquery\");\r\n\t\t} catch (err) {\r\n\t\t\tjQuery = null;\r\n\t\t}\r\n\t\tmodule.exports = factory(jQuery);\r\n\t} else if (window) {\r\n\t\twindow.Slider = factory(window.jQuery);\r\n\t}\r\n})(function ($) {\r\n\t// Constants\r\n\tvar NAMESPACE_MAIN = 'slider';\r\n\tvar NAMESPACE_ALTERNATE = 'bootstrapSlider';\r\n\r\n\t// Polyfill console methods\r\n\tif (windowIsDefined && !window.console) {\r\n\t\twindow.console = {};\r\n\t}\r\n\tif (windowIsDefined && !window.console.log) {\r\n\t\twindow.console.log = function () {};\r\n\t}\r\n\tif (windowIsDefined && !window.console.warn) {\r\n\t\twindow.console.warn = function () {};\r\n\t}\r\n\r\n\t// Reference to Slider constructor\r\n\tvar Slider;\r\n\r\n\t(function ($) {\r\n\r\n\t\t'use strict';\r\n\r\n\t\t// -------------------------- utils -------------------------- //\r\n\r\n\t\tvar slice = Array.prototype.slice;\r\n\r\n\t\tfunction noop() {}\r\n\r\n\t\t// -------------------------- definition -------------------------- //\r\n\r\n\t\tfunction defineBridget($) {\r\n\r\n\t\t\t// bail if no jQuery\r\n\t\t\tif (!$) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// -------------------------- addOptionMethod -------------------------- //\r\n\r\n\t\t\t/**\r\n * adds option method -> $().plugin('option', {...})\r\n * @param {Function} PluginClass - constructor class\r\n */\r\n\t\t\tfunction addOptionMethod(PluginClass) {\r\n\t\t\t\t// don't overwrite original option method\r\n\t\t\t\tif (PluginClass.prototype.option) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// option setter\r\n\t\t\t\tPluginClass.prototype.option = function (opts) {\r\n\t\t\t\t\t// bail out if not an object\r\n\t\t\t\t\tif (!$.isPlainObject(opts)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.options = $.extend(true, this.options, opts);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\t// -------------------------- plugin bridge -------------------------- //\r\n\r\n\t\t\t// helper function for logging errors\r\n\t\t\t// $.error breaks jQuery chaining\r\n\t\t\tvar logError = typeof console === 'undefined' ? noop : function (message) {\r\n\t\t\t\tconsole.error(message);\r\n\t\t\t};\r\n\r\n\t\t\t/**\r\n * jQuery plugin bridge, access methods like $elem.plugin('method')\r\n * @param {String} namespace - plugin name\r\n * @param {Function} PluginClass - constructor class\r\n */\r\n\t\t\tfunction bridge(namespace, PluginClass) {\r\n\t\t\t\t// add to jQuery fn namespace\r\n\t\t\t\t$.fn[namespace] = function (options) {\r\n\t\t\t\t\tif (typeof options === 'string') {\r\n\t\t\t\t\t\t// call plugin method when first argument is a string\r\n\t\t\t\t\t\t// get arguments for method\r\n\t\t\t\t\t\tvar args = slice.call(arguments, 1);\r\n\r\n\t\t\t\t\t\tfor (var i = 0, len = this.length; i < len; i++) {\r\n\t\t\t\t\t\t\tvar elem = this[i];\r\n\t\t\t\t\t\t\tvar instance = $.data(elem, namespace);\r\n\t\t\t\t\t\t\tif (!instance) {\r\n\t\t\t\t\t\t\t\tlogError(\"cannot call methods on \" + namespace + \" prior to initialization; \" + \"attempted to call '\" + options + \"'\");\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (!$.isFunction(instance[options]) || options.charAt(0) === '_') {\r\n\t\t\t\t\t\t\t\tlogError(\"no such method '\" + options + \"' for \" + namespace + \" instance\");\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// trigger method with arguments\r\n\t\t\t\t\t\t\tvar returnValue = instance[options].apply(instance, args);\r\n\r\n\t\t\t\t\t\t\t// break look and return first value if provided\r\n\t\t\t\t\t\t\tif (returnValue !== undefined && returnValue !== instance) {\r\n\t\t\t\t\t\t\t\treturn returnValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// return this if no return value\r\n\t\t\t\t\t\treturn this;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar objects = this.map(function () {\r\n\t\t\t\t\t\t\tvar instance = $.data(this, namespace);\r\n\t\t\t\t\t\t\tif (instance) {\r\n\t\t\t\t\t\t\t\t// apply options & init\r\n\t\t\t\t\t\t\t\tinstance.option(options);\r\n\t\t\t\t\t\t\t\tinstance._init();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// initialize new instance\r\n\t\t\t\t\t\t\t\tinstance = new PluginClass(this, options);\r\n\t\t\t\t\t\t\t\t$.data(this, namespace, instance);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn $(this);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (objects.length === 1) {\r\n\t\t\t\t\t\t\treturn objects[0];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn objects;\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// -------------------------- bridget -------------------------- //\r\n\r\n\t\t\t/**\r\n * converts a Prototypical class into a proper jQuery plugin\r\n * the class must have a ._init method\r\n * @param {String} namespace - plugin name, used in $().pluginName\r\n * @param {Function} PluginClass - constructor class\r\n */\r\n\t\t\t$.bridget = function (namespace, PluginClass) {\r\n\t\t\t\taddOptionMethod(PluginClass);\r\n\t\t\t\tbridge(namespace, PluginClass);\r\n\t\t\t};\r\n\r\n\t\t\treturn $.bridget;\r\n\t\t}\r\n\r\n\t\t// get jquery from browser global\r\n\t\tdefineBridget($);\r\n\t})($);\r\n\r\n\t/*************************************************\r\n \t\t\tBOOTSTRAP-SLIDER SOURCE CODE\r\n \t**************************************************/\r\n\r\n\t(function ($) {\r\n\t\tvar autoRegisterNamespace = void 0;\r\n\r\n\t\tvar ErrorMsgs = {\r\n\t\t\tformatInvalidInputErrorMsg: function formatInvalidInputErrorMsg(input) {\r\n\t\t\t\treturn \"Invalid input value '\" + input + \"' passed in\";\r\n\t\t\t},\r\n\t\t\tcallingContextNotSliderInstance: \"Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method\"\r\n\t\t};\r\n\r\n\t\tvar SliderScale = {\r\n\t\t\tlinear: {\r\n\t\t\t\tgetValue: function getValue(value, options) {\r\n\t\t\t\t\tif (value < options.min) {\r\n\t\t\t\t\t\treturn options.min;\r\n\t\t\t\t\t} else if (value > options.max) {\r\n\t\t\t\t\t\treturn options.max;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\ttoValue: function toValue(percentage) {\r\n\t\t\t\t\tvar rawValue = percentage / 100 * (this.options.max - this.options.min);\r\n\t\t\t\t\tvar shouldAdjustWithBase = true;\r\n\t\t\t\t\tif (this.options.ticks_positions.length > 0) {\r\n\t\t\t\t\t\tvar minv,\r\n\t\t\t\t\t\t maxv,\r\n\t\t\t\t\t\t minp,\r\n\t\t\t\t\t\t maxp = 0;\r\n\t\t\t\t\t\tfor (var i = 1; i < this.options.ticks_positions.length; i++) {\r\n\t\t\t\t\t\t\tif (percentage <= this.options.ticks_positions[i]) {\r\n\t\t\t\t\t\t\t\tminv = this.options.ticks[i - 1];\r\n\t\t\t\t\t\t\t\tminp = this.options.ticks_positions[i - 1];\r\n\t\t\t\t\t\t\t\tmaxv = this.options.ticks[i];\r\n\t\t\t\t\t\t\t\tmaxp = this.options.ticks_positions[i];\r\n\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar partialPercentage = (percentage - minp) / (maxp - minp);\r\n\t\t\t\t\t\trawValue = minv + partialPercentage * (maxv - minv);\r\n\t\t\t\t\t\tshouldAdjustWithBase = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar adjustment = shouldAdjustWithBase ? this.options.min : 0;\r\n\t\t\t\t\tvar value = adjustment + Math.round(rawValue / this.options.step) * this.options.step;\r\n\t\t\t\t\treturn SliderScale.linear.getValue(value, this.options);\r\n\t\t\t\t},\r\n\t\t\t\ttoPercentage: function toPercentage(value) {\r\n\t\t\t\t\tif (this.options.max === this.options.min) {\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.options.ticks_positions.length > 0) {\r\n\t\t\t\t\t\tvar minv,\r\n\t\t\t\t\t\t maxv,\r\n\t\t\t\t\t\t minp,\r\n\t\t\t\t\t\t maxp = 0;\r\n\t\t\t\t\t\tfor (var i = 0; i < this.options.ticks.length; i++) {\r\n\t\t\t\t\t\t\tif (value <= this.options.ticks[i]) {\r\n\t\t\t\t\t\t\t\tminv = i > 0 ? this.options.ticks[i - 1] : 0;\r\n\t\t\t\t\t\t\t\tminp = i > 0 ? this.options.ticks_positions[i - 1] : 0;\r\n\t\t\t\t\t\t\t\tmaxv = this.options.ticks[i];\r\n\t\t\t\t\t\t\t\tmaxp = this.options.ticks_positions[i];\r\n\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (i > 0) {\r\n\t\t\t\t\t\t\tvar partialPercentage = (value - minv) / (maxv - minv);\r\n\t\t\t\t\t\t\treturn minp + partialPercentage * (maxp - minp);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn 100 * (value - this.options.min) / (this.options.max - this.options.min);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tlogarithmic: {\r\n\t\t\t\t/* Based on http://stackoverflow.com/questions/846221/logarithmic-slider */\r\n\t\t\t\ttoValue: function toValue(percentage) {\r\n\t\t\t\t\tvar offset = 1 - this.options.min;\r\n\t\t\t\t\tvar min = Math.log(this.options.min + offset);\r\n\t\t\t\t\tvar max = Math.log(this.options.max + offset);\r\n\t\t\t\t\tvar value = Math.exp(min + (max - min) * percentage / 100) - offset;\r\n\t\t\t\t\tif (Math.round(value) === max) {\r\n\t\t\t\t\t\treturn max;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = this.options.min + Math.round((value - this.options.min) / this.options.step) * this.options.step;\r\n\t\t\t\t\t/* Rounding to the nearest step could exceed the min or\r\n * max, so clip to those values. */\r\n\t\t\t\t\treturn SliderScale.linear.getValue(value, this.options);\r\n\t\t\t\t},\r\n\t\t\t\ttoPercentage: function toPercentage(value) {\r\n\t\t\t\t\tif (this.options.max === this.options.min) {\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar offset = 1 - this.options.min;\r\n\t\t\t\t\t\tvar max = Math.log(this.options.max + offset);\r\n\t\t\t\t\t\tvar min = Math.log(this.options.min + offset);\r\n\t\t\t\t\t\tvar v = Math.log(value + offset);\r\n\t\t\t\t\t\treturn 100 * (v - min) / (max - min);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/*************************************************\r\n \t\t\t\t\t\tCONSTRUCTOR\r\n \t**************************************************/\r\n\t\tSlider = function Slider(element, options) {\r\n\t\t\tcreateNewSlider.call(this, element, options);\r\n\t\t\treturn this;\r\n\t\t};\r\n\r\n\t\tfunction createNewSlider(element, options) {\r\n\r\n\t\t\t/*\r\n \tThe internal state object is used to store data about the current 'state' of slider.\r\n \tThis includes values such as the `value`, `enabled`, etc...\r\n */\r\n\t\t\tthis._state = {\r\n\t\t\t\tvalue: null,\r\n\t\t\t\tenabled: null,\r\n\t\t\t\toffset: null,\r\n\t\t\t\tsize: null,\r\n\t\t\t\tpercentage: null,\r\n\t\t\t\tinDrag: false,\r\n\t\t\t\tover: false,\r\n\t\t\t\ttickIndex: null\r\n\t\t\t};\r\n\r\n\t\t\t// The objects used to store the reference to the tick methods if ticks_tooltip is on\r\n\t\t\tthis.ticksCallbackMap = {};\r\n\t\t\tthis.handleCallbackMap = {};\r\n\r\n\t\t\tif (typeof element === \"string\") {\r\n\t\t\t\tthis.element = document.querySelector(element);\r\n\t\t\t} else if (element instanceof HTMLElement) {\r\n\t\t\t\tthis.element = element;\r\n\t\t\t}\r\n\r\n\t\t\t/*************************************************\r\n \t\t\t\t\tProcess Options\r\n \t**************************************************/\r\n\t\t\toptions = options ? options : {};\r\n\t\t\tvar optionTypes = Object.keys(this.defaultOptions);\r\n\r\n\t\t\tvar isMinSet = options.hasOwnProperty('min');\r\n\t\t\tvar isMaxSet = options.hasOwnProperty('max');\r\n\r\n\t\t\tfor (var i = 0; i < optionTypes.length; i++) {\r\n\t\t\t\tvar optName = optionTypes[i];\r\n\r\n\t\t\t\t// First check if an option was passed in via the constructor\r\n\t\t\t\tvar val = options[optName];\r\n\t\t\t\t// If no data attrib, then check data atrributes\r\n\t\t\t\tval = typeof val !== 'undefined' ? val : getDataAttrib(this.element, optName);\r\n\t\t\t\t// Finally, if nothing was specified, use the defaults\r\n\t\t\t\tval = val !== null ? val : this.defaultOptions[optName];\r\n\r\n\t\t\t\t// Set all options on the instance of the Slider\r\n\t\t\t\tif (!this.options) {\r\n\t\t\t\t\tthis.options = {};\r\n\t\t\t\t}\r\n\t\t\t\tthis.options[optName] = val;\r\n\t\t\t}\r\n\r\n\t\t\tthis.ticksAreValid = Array.isArray(this.options.ticks) && this.options.ticks.length > 0;\r\n\r\n\t\t\t// Lock to ticks only when ticks[] is defined and set\r\n\t\t\tif (!this.ticksAreValid) {\r\n\t\t\t\tthis.options.lock_to_ticks = false;\r\n\t\t\t}\r\n\r\n\t\t\t// Check options.rtl\r\n\t\t\tif (this.options.rtl === 'auto') {\r\n\t\t\t\tvar computedStyle = window.getComputedStyle(this.element);\r\n\t\t\t\tif (computedStyle != null) {\r\n\t\t\t\t\tthis.options.rtl = computedStyle.direction === 'rtl';\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fix for Firefox bug in versions less than 62:\r\n\t\t\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=548397\r\n\t\t\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1467722\r\n\t\t\t\t\tthis.options.rtl = this.element.style.direction === 'rtl';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*\r\n \tValidate `tooltip_position` against 'orientation`\r\n \t- if `tooltip_position` is incompatible with orientation, switch it to a default compatible with specified `orientation`\r\n \t\t-- default for \"vertical\" -> \"right\", \"left\" if rtl\r\n \t\t-- default for \"horizontal\" -> \"top\"\r\n */\r\n\t\t\tif (this.options.orientation === \"vertical\" && (this.options.tooltip_position === \"top\" || this.options.tooltip_position === \"bottom\")) {\r\n\t\t\t\tif (this.options.rtl) {\r\n\t\t\t\t\tthis.options.tooltip_position = \"left\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.options.tooltip_position = \"right\";\r\n\t\t\t\t}\r\n\t\t\t} else if (this.options.orientation === \"horizontal\" && (this.options.tooltip_position === \"left\" || this.options.tooltip_position === \"right\")) {\r\n\r\n\t\t\t\tthis.options.tooltip_position = \"top\";\r\n\t\t\t}\r\n\r\n\t\t\tfunction getDataAttrib(element, optName) {\r\n\t\t\t\tvar dataName = \"data-slider-\" + optName.replace(/_/g, '-');\r\n\t\t\t\tvar dataValString = element.getAttribute(dataName);\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn JSON.parse(dataValString);\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\treturn dataValString;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*************************************************\r\n \t\t\t\t\tCreate Markup\r\n \t**************************************************/\r\n\r\n\t\t\tvar origWidth = this.element.style.width;\r\n\t\t\tvar updateSlider = false;\r\n\t\t\tvar parent = this.element.parentNode;\r\n\t\t\tvar sliderTrackSelection;\r\n\t\t\tvar sliderTrackLow, sliderTrackHigh;\r\n\t\t\tvar sliderMinHandle;\r\n\t\t\tvar sliderMaxHandle;\r\n\r\n\t\t\tif (this.sliderElem) {\r\n\t\t\t\tupdateSlider = true;\r\n\t\t\t} else {\r\n\t\t\t\t/* Create elements needed for slider */\r\n\t\t\t\tthis.sliderElem = document.createElement(\"div\");\r\n\t\t\t\tthis.sliderElem.className = \"slider\";\r\n\r\n\t\t\t\t/* Create slider track elements */\r\n\t\t\t\tvar sliderTrack = document.createElement(\"div\");\r\n\t\t\t\tsliderTrack.className = \"slider-track\";\r\n\r\n\t\t\t\tsliderTrackLow = document.createElement(\"div\");\r\n\t\t\t\tsliderTrackLow.className = \"slider-track-low\";\r\n\r\n\t\t\t\tsliderTrackSelection = document.createElement(\"div\");\r\n\t\t\t\tsliderTrackSelection.className = \"slider-selection\";\r\n\r\n\t\t\t\tsliderTrackHigh = document.createElement(\"div\");\r\n\t\t\t\tsliderTrackHigh.className = \"slider-track-high\";\r\n\r\n\t\t\t\tsliderMinHandle = document.createElement(\"div\");\r\n\t\t\t\tsliderMinHandle.className = \"slider-handle min-slider-handle\";\r\n\t\t\t\tsliderMinHandle.setAttribute('role', 'slider');\r\n\t\t\t\tsliderMinHandle.setAttribute('aria-valuemin', this.options.min);\r\n\t\t\t\tsliderMinHandle.setAttribute('aria-valuemax', this.options.max);\r\n\r\n\t\t\t\tsliderMaxHandle = document.createElement(\"div\");\r\n\t\t\t\tsliderMaxHandle.className = \"slider-handle max-slider-handle\";\r\n\t\t\t\tsliderMaxHandle.setAttribute('role', 'slider');\r\n\t\t\t\tsliderMaxHandle.setAttribute('aria-valuemin', this.options.min);\r\n\t\t\t\tsliderMaxHandle.setAttribute('aria-valuemax', this.options.max);\r\n\r\n\t\t\t\tsliderTrack.appendChild(sliderTrackLow);\r\n\t\t\t\tsliderTrack.appendChild(sliderTrackSelection);\r\n\t\t\t\tsliderTrack.appendChild(sliderTrackHigh);\r\n\r\n\t\t\t\t/* Create highlight range elements */\r\n\t\t\t\tthis.rangeHighlightElements = [];\r\n\t\t\t\tvar rangeHighlightsOpts = this.options.rangeHighlights;\r\n\t\t\t\tif (Array.isArray(rangeHighlightsOpts) && rangeHighlightsOpts.length > 0) {\r\n\t\t\t\t\tfor (var j = 0; j < rangeHighlightsOpts.length; j++) {\r\n\t\t\t\t\t\tvar rangeHighlightElement = document.createElement(\"div\");\r\n\t\t\t\t\t\tvar customClassString = rangeHighlightsOpts[j].class || \"\";\r\n\t\t\t\t\t\trangeHighlightElement.className = \"slider-rangeHighlight slider-selection \" + customClassString;\r\n\t\t\t\t\t\tthis.rangeHighlightElements.push(rangeHighlightElement);\r\n\t\t\t\t\t\tsliderTrack.appendChild(rangeHighlightElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Add aria-labelledby to handle's */\r\n\t\t\t\tvar isLabelledbyArray = Array.isArray(this.options.labelledby);\r\n\t\t\t\tif (isLabelledbyArray && this.options.labelledby[0]) {\r\n\t\t\t\t\tsliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby[0]);\r\n\t\t\t\t}\r\n\t\t\t\tif (isLabelledbyArray && this.options.labelledby[1]) {\r\n\t\t\t\t\tsliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby[1]);\r\n\t\t\t\t}\r\n\t\t\t\tif (!isLabelledbyArray && this.options.labelledby) {\r\n\t\t\t\t\tsliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby);\r\n\t\t\t\t\tsliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Create ticks */\r\n\t\t\t\tthis.ticks = [];\r\n\t\t\t\tif (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\r\n\t\t\t\t\tthis.ticksContainer = document.createElement('div');\r\n\t\t\t\t\tthis.ticksContainer.className = 'slider-tick-container';\r\n\r\n\t\t\t\t\tfor (i = 0; i < this.options.ticks.length; i++) {\r\n\t\t\t\t\t\tvar tick = document.createElement('div');\r\n\t\t\t\t\t\ttick.className = 'slider-tick';\r\n\t\t\t\t\t\tif (this.options.ticks_tooltip) {\r\n\t\t\t\t\t\t\tvar tickListenerReference = this._addTickListener();\r\n\t\t\t\t\t\t\tvar enterCallback = tickListenerReference.addMouseEnter(this, tick, i);\r\n\t\t\t\t\t\t\tvar leaveCallback = tickListenerReference.addMouseLeave(this, tick);\r\n\r\n\t\t\t\t\t\t\tthis.ticksCallbackMap[i] = {\r\n\t\t\t\t\t\t\t\tmouseEnter: enterCallback,\r\n\t\t\t\t\t\t\t\tmouseLeave: leaveCallback\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.ticks.push(tick);\r\n\t\t\t\t\t\tthis.ticksContainer.appendChild(tick);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsliderTrackSelection.className += \" tick-slider-selection\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.tickLabels = [];\r\n\t\t\t\tif (Array.isArray(this.options.ticks_labels) && this.options.ticks_labels.length > 0) {\r\n\t\t\t\t\tthis.tickLabelContainer = document.createElement('div');\r\n\t\t\t\t\tthis.tickLabelContainer.className = 'slider-tick-label-container';\r\n\r\n\t\t\t\t\tfor (i = 0; i < this.options.ticks_labels.length; i++) {\r\n\t\t\t\t\t\tvar label = document.createElement('div');\r\n\t\t\t\t\t\tvar noTickPositionsSpecified = this.options.ticks_positions.length === 0;\r\n\t\t\t\t\t\tvar tickLabelsIndex = this.options.reversed && noTickPositionsSpecified ? this.options.ticks_labels.length - (i + 1) : i;\r\n\t\t\t\t\t\tlabel.className = 'slider-tick-label';\r\n\t\t\t\t\t\tlabel.innerHTML = this.options.ticks_labels[tickLabelsIndex];\r\n\r\n\t\t\t\t\t\tthis.tickLabels.push(label);\r\n\t\t\t\t\t\tthis.tickLabelContainer.appendChild(label);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar createAndAppendTooltipSubElements = function createAndAppendTooltipSubElements(tooltipElem) {\r\n\t\t\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t\t\tarrow.className = \"arrow\";\r\n\r\n\t\t\t\t\tvar inner = document.createElement(\"div\");\r\n\t\t\t\t\tinner.className = \"tooltip-inner\";\r\n\r\n\t\t\t\t\ttooltipElem.appendChild(arrow);\r\n\t\t\t\t\ttooltipElem.appendChild(inner);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/* Create tooltip elements */\r\n\t\t\t\tvar sliderTooltip = document.createElement(\"div\");\r\n\t\t\t\tsliderTooltip.className = \"tooltip tooltip-main\";\r\n\t\t\t\tsliderTooltip.setAttribute('role', 'presentation');\r\n\t\t\t\tcreateAndAppendTooltipSubElements(sliderTooltip);\r\n\r\n\t\t\t\tvar sliderTooltipMin = document.createElement(\"div\");\r\n\t\t\t\tsliderTooltipMin.className = \"tooltip tooltip-min\";\r\n\t\t\t\tsliderTooltipMin.setAttribute('role', 'presentation');\r\n\t\t\t\tcreateAndAppendTooltipSubElements(sliderTooltipMin);\r\n\r\n\t\t\t\tvar sliderTooltipMax = document.createElement(\"div\");\r\n\t\t\t\tsliderTooltipMax.className = \"tooltip tooltip-max\";\r\n\t\t\t\tsliderTooltipMax.setAttribute('role', 'presentation');\r\n\t\t\t\tcreateAndAppendTooltipSubElements(sliderTooltipMax);\r\n\r\n\t\t\t\t/* Append components to sliderElem */\r\n\t\t\t\tthis.sliderElem.appendChild(sliderTrack);\r\n\t\t\t\tthis.sliderElem.appendChild(sliderTooltip);\r\n\t\t\t\tthis.sliderElem.appendChild(sliderTooltipMin);\r\n\t\t\t\tthis.sliderElem.appendChild(sliderTooltipMax);\r\n\r\n\t\t\t\tif (this.tickLabelContainer) {\r\n\t\t\t\t\tthis.sliderElem.appendChild(this.tickLabelContainer);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.ticksContainer) {\r\n\t\t\t\t\tthis.sliderElem.appendChild(this.ticksContainer);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.sliderElem.appendChild(sliderMinHandle);\r\n\t\t\t\tthis.sliderElem.appendChild(sliderMaxHandle);\r\n\r\n\t\t\t\t/* Append slider element to parent container, right before the original element */\r\n\t\t\t\tparent.insertBefore(this.sliderElem, this.element);\r\n\r\n\t\t\t\t/* Hide original element */\r\n\t\t\t\tthis.element.style.display = \"none\";\r\n\t\t\t}\r\n\t\t\t/* If JQuery exists, cache JQ references */\r\n\t\t\tif ($) {\r\n\t\t\t\tthis.$element = $(this.element);\r\n\t\t\t\tthis.$sliderElem = $(this.sliderElem);\r\n\t\t\t}\r\n\r\n\t\t\t/*************************************************\r\n \t\t\t\t\t\tSetup\r\n \t**************************************************/\r\n\t\t\tthis.eventToCallbackMap = {};\r\n\t\t\tthis.sliderElem.id = this.options.id;\r\n\r\n\t\t\tthis.touchCapable = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;\r\n\r\n\t\t\tthis.touchX = 0;\r\n\t\t\tthis.touchY = 0;\r\n\r\n\t\t\tthis.tooltip = this.sliderElem.querySelector('.tooltip-main');\r\n\t\t\tthis.tooltipInner = this.tooltip.querySelector('.tooltip-inner');\r\n\r\n\t\t\tthis.tooltip_min = this.sliderElem.querySelector('.tooltip-min');\r\n\t\t\tthis.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner');\r\n\r\n\t\t\tthis.tooltip_max = this.sliderElem.querySelector('.tooltip-max');\r\n\t\t\tthis.tooltipInner_max = this.tooltip_max.querySelector('.tooltip-inner');\r\n\r\n\t\t\tif (SliderScale[this.options.scale]) {\r\n\t\t\t\tthis.options.scale = SliderScale[this.options.scale];\r\n\t\t\t}\r\n\r\n\t\t\tif (updateSlider === true) {\r\n\t\t\t\t// Reset classes\r\n\t\t\t\tthis._removeClass(this.sliderElem, 'slider-horizontal');\r\n\t\t\t\tthis._removeClass(this.sliderElem, 'slider-vertical');\r\n\t\t\t\tthis._removeClass(this.sliderElem, 'slider-rtl');\r\n\t\t\t\tthis._removeClass(this.tooltip, 'hide');\r\n\t\t\t\tthis._removeClass(this.tooltip_min, 'hide');\r\n\t\t\t\tthis._removeClass(this.tooltip_max, 'hide');\r\n\r\n\t\t\t\t// Undo existing inline styles for track\r\n\t\t\t\t[\"left\", \"right\", \"top\", \"width\", \"height\"].forEach(function (prop) {\r\n\t\t\t\t\tthis._removeProperty(this.trackLow, prop);\r\n\t\t\t\t\tthis._removeProperty(this.trackSelection, prop);\r\n\t\t\t\t\tthis._removeProperty(this.trackHigh, prop);\r\n\t\t\t\t}, this);\r\n\r\n\t\t\t\t// Undo inline styles on handles\r\n\t\t\t\t[this.handle1, this.handle2].forEach(function (handle) {\r\n\t\t\t\t\tthis._removeProperty(handle, 'left');\r\n\t\t\t\t\tthis._removeProperty(handle, 'right');\r\n\t\t\t\t\tthis._removeProperty(handle, 'top');\r\n\t\t\t\t}, this);\r\n\r\n\t\t\t\t// Undo inline styles and classes on tooltips\r\n\t\t\t\t[this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function (tooltip) {\r\n\t\t\t\t\tthis._removeProperty(tooltip, 'bs-tooltip-left');\r\n\t\t\t\t\tthis._removeProperty(tooltip, 'bs-tooltip-right');\r\n\t\t\t\t\tthis._removeProperty(tooltip, 'bs-tooltip-top');\r\n\r\n\t\t\t\t\tthis._removeClass(tooltip, 'bs-tooltip-right');\r\n\t\t\t\t\tthis._removeClass(tooltip, 'bs-tooltip-left');\r\n\t\t\t\t\tthis._removeClass(tooltip, 'bs-tooltip-top');\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.orientation === 'vertical') {\r\n\t\t\t\tthis._addClass(this.sliderElem, 'slider-vertical');\r\n\t\t\t\tthis.stylePos = 'top';\r\n\t\t\t\tthis.mousePos = 'pageY';\r\n\t\t\t\tthis.sizePos = 'offsetHeight';\r\n\t\t\t} else {\r\n\t\t\t\tthis._addClass(this.sliderElem, 'slider-horizontal');\r\n\t\t\t\tthis.sliderElem.style.width = origWidth;\r\n\t\t\t\tthis.options.orientation = 'horizontal';\r\n\t\t\t\tif (this.options.rtl) {\r\n\t\t\t\t\tthis.stylePos = 'right';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.stylePos = 'left';\r\n\t\t\t\t}\r\n\t\t\t\tthis.mousePos = 'clientX';\r\n\t\t\t\tthis.sizePos = 'offsetWidth';\r\n\t\t\t}\r\n\t\t\t// specific rtl class\r\n\t\t\tif (this.options.rtl) {\r\n\t\t\t\tthis._addClass(this.sliderElem, 'slider-rtl');\r\n\t\t\t}\r\n\t\t\tthis._setTooltipPosition();\r\n\t\t\t/* In case ticks are specified, overwrite the min and max bounds */\r\n\t\t\tif (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\r\n\t\t\t\tif (!isMaxSet) {\r\n\t\t\t\t\tthis.options.max = Math.max.apply(Math, this.options.ticks);\r\n\t\t\t\t}\r\n\t\t\t\tif (!isMinSet) {\r\n\t\t\t\t\tthis.options.min = Math.min.apply(Math, this.options.ticks);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (Array.isArray(this.options.value)) {\r\n\t\t\t\tthis.options.range = true;\r\n\t\t\t\tthis._state.value = this.options.value;\r\n\t\t\t} else if (this.options.range) {\r\n\t\t\t\t// User wants a range, but value is not an array\r\n\t\t\t\tthis._state.value = [this.options.value, this.options.max];\r\n\t\t\t} else {\r\n\t\t\t\tthis._state.value = this.options.value;\r\n\t\t\t}\r\n\r\n\t\t\tthis.trackLow = sliderTrackLow || this.trackLow;\r\n\t\t\tthis.trackSelection = sliderTrackSelection || this.trackSelection;\r\n\t\t\tthis.trackHigh = sliderTrackHigh || this.trackHigh;\r\n\r\n\t\t\tif (this.options.selection === 'none') {\r\n\t\t\t\tthis._addClass(this.trackLow, 'hide');\r\n\t\t\t\tthis._addClass(this.trackSelection, 'hide');\r\n\t\t\t\tthis._addClass(this.trackHigh, 'hide');\r\n\t\t\t} else if (this.options.selection === 'after' || this.options.selection === 'before') {\r\n\t\t\t\tthis._removeClass(this.trackLow, 'hide');\r\n\t\t\t\tthis._removeClass(this.trackSelection, 'hide');\r\n\t\t\t\tthis._removeClass(this.trackHigh, 'hide');\r\n\t\t\t}\r\n\r\n\t\t\tthis.handle1 = sliderMinHandle || this.handle1;\r\n\t\t\tthis.handle2 = sliderMaxHandle || this.handle2;\r\n\r\n\t\t\tif (updateSlider === true) {\r\n\t\t\t\t// Reset classes\r\n\t\t\t\tthis._removeClass(this.handle1, 'round triangle');\r\n\t\t\t\tthis._removeClass(this.handle2, 'round triangle hide');\r\n\r\n\t\t\t\tfor (i = 0; i < this.ticks.length; i++) {\r\n\t\t\t\t\tthis._removeClass(this.ticks[i], 'round triangle hide');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar availableHandleModifiers = ['round', 'triangle', 'custom'];\r\n\t\t\tvar isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1;\r\n\t\t\tif (isValidHandleType) {\r\n\t\t\t\tthis._addClass(this.handle1, this.options.handle);\r\n\t\t\t\tthis._addClass(this.handle2, this.options.handle);\r\n\r\n\t\t\t\tfor (i = 0; i < this.ticks.length; i++) {\r\n\t\t\t\t\tthis._addClass(this.ticks[i], this.options.handle);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._state.offset = this._offset(this.sliderElem);\r\n\t\t\tthis._state.size = this.sliderElem[this.sizePos];\r\n\t\t\tthis.setValue(this._state.value);\r\n\r\n\t\t\t/******************************************\r\n \t\t\t\tBind Event Listeners\r\n \t******************************************/\r\n\r\n\t\t\t// Bind keyboard handlers\r\n\t\t\tthis.handle1Keydown = this._keydown.bind(this, 0);\r\n\t\t\tthis.handle1.addEventListener(\"keydown\", this.handle1Keydown, false);\r\n\r\n\t\t\tthis.handle2Keydown = this._keydown.bind(this, 1);\r\n\t\t\tthis.handle2.addEventListener(\"keydown\", this.handle2Keydown, false);\r\n\r\n\t\t\tthis.mousedown = this._mousedown.bind(this);\r\n\t\t\tthis.touchstart = this._touchstart.bind(this);\r\n\t\t\tthis.touchmove = this._touchmove.bind(this);\r\n\r\n\t\t\tif (this.touchCapable) {\r\n\t\t\t\tthis.sliderElem.addEventListener(\"touchstart\", this.touchstart, false);\r\n\t\t\t\tthis.sliderElem.addEventListener(\"touchmove\", this.touchmove, false);\r\n\t\t\t}\r\n\r\n\t\t\tthis.sliderElem.addEventListener(\"mousedown\", this.mousedown, false);\r\n\r\n\t\t\t// Bind window handlers\r\n\t\t\tthis.resize = this._resize.bind(this);\r\n\t\t\twindow.addEventListener(\"resize\", this.resize, false);\r\n\r\n\t\t\t// Bind tooltip-related handlers\r\n\t\t\tif (this.options.tooltip === 'hide') {\r\n\t\t\t\tthis._addClass(this.tooltip, 'hide');\r\n\t\t\t\tthis._addClass(this.tooltip_min, 'hide');\r\n\t\t\t\tthis._addClass(this.tooltip_max, 'hide');\r\n\t\t\t} else if (this.options.tooltip === 'always') {\r\n\t\t\t\tthis._showTooltip();\r\n\t\t\t\tthis._alwaysShowTooltip = true;\r\n\t\t\t} else {\r\n\t\t\t\tthis.showTooltip = this._showTooltip.bind(this);\r\n\t\t\t\tthis.hideTooltip = this._hideTooltip.bind(this);\r\n\r\n\t\t\t\tif (this.options.ticks_tooltip) {\r\n\t\t\t\t\tvar callbackHandle = this._addTickListener();\r\n\t\t\t\t\t//create handle1 listeners and store references in map\r\n\t\t\t\t\tvar mouseEnter = callbackHandle.addMouseEnter(this, this.handle1);\r\n\t\t\t\t\tvar mouseLeave = callbackHandle.addMouseLeave(this, this.handle1);\r\n\t\t\t\t\tthis.handleCallbackMap.handle1 = {\r\n\t\t\t\t\t\tmouseEnter: mouseEnter,\r\n\t\t\t\t\t\tmouseLeave: mouseLeave\r\n\t\t\t\t\t};\r\n\t\t\t\t\t//create handle2 listeners and store references in map\r\n\t\t\t\t\tmouseEnter = callbackHandle.addMouseEnter(this, this.handle2);\r\n\t\t\t\t\tmouseLeave = callbackHandle.addMouseLeave(this, this.handle2);\r\n\t\t\t\t\tthis.handleCallbackMap.handle2 = {\r\n\t\t\t\t\t\tmouseEnter: mouseEnter,\r\n\t\t\t\t\t\tmouseLeave: mouseLeave\r\n\t\t\t\t\t};\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.sliderElem.addEventListener(\"mouseenter\", this.showTooltip, false);\r\n\t\t\t\t\tthis.sliderElem.addEventListener(\"mouseleave\", this.hideTooltip, false);\r\n\r\n\t\t\t\t\tif (this.touchCapable) {\r\n\t\t\t\t\t\tthis.sliderElem.addEventListener(\"touchstart\", this.showTooltip, false);\r\n\t\t\t\t\t\tthis.sliderElem.addEventListener(\"touchmove\", this.showTooltip, false);\r\n\t\t\t\t\t\tthis.sliderElem.addEventListener(\"touchend\", this.hideTooltip, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.handle1.addEventListener(\"focus\", this.showTooltip, false);\r\n\t\t\t\tthis.handle1.addEventListener(\"blur\", this.hideTooltip, false);\r\n\r\n\t\t\t\tthis.handle2.addEventListener(\"focus\", this.showTooltip, false);\r\n\t\t\t\tthis.handle2.addEventListener(\"blur\", this.hideTooltip, false);\r\n\r\n\t\t\t\tif (this.touchCapable) {\r\n\t\t\t\t\tthis.handle1.addEventListener(\"touchstart\", this.showTooltip, false);\r\n\t\t\t\t\tthis.handle1.addEventListener(\"touchmove\", this.showTooltip, false);\r\n\t\t\t\t\tthis.handle1.addEventListener(\"touchend\", this.hideTooltip, false);\r\n\r\n\t\t\t\t\tthis.handle2.addEventListener(\"touchstart\", this.showTooltip, false);\r\n\t\t\t\t\tthis.handle2.addEventListener(\"touchmove\", this.showTooltip, false);\r\n\t\t\t\t\tthis.handle2.addEventListener(\"touchend\", this.hideTooltip, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.enabled) {\r\n\t\t\t\tthis.enable();\r\n\t\t\t} else {\r\n\t\t\t\tthis.disable();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/*************************************************\r\n \t\t\t\tINSTANCE PROPERTIES/METHODS\r\n \t- Any methods bound to the prototype are considered\r\n part of the plugin's `public` interface\r\n \t**************************************************/\r\n\t\tSlider.prototype = {\r\n\t\t\t_init: function _init() {}, // NOTE: Must exist to support bridget\r\n\r\n\t\t\tconstructor: Slider,\r\n\r\n\t\t\tdefaultOptions: {\r\n\t\t\t\tid: \"\",\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tmax: 10,\r\n\t\t\t\tstep: 1,\r\n\t\t\t\tprecision: 0,\r\n\t\t\t\torientation: 'horizontal',\r\n\t\t\t\tvalue: 5,\r\n\t\t\t\trange: false,\r\n\t\t\t\tselection: 'before',\r\n\t\t\t\ttooltip: 'show',\r\n\t\t\t\ttooltip_split: false,\r\n\t\t\t\tlock_to_ticks: false,\r\n\t\t\t\thandle: 'round',\r\n\t\t\t\treversed: false,\r\n\t\t\t\trtl: 'auto',\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tformatter: function formatter(val) {\r\n\t\t\t\t\tif (Array.isArray(val)) {\r\n\t\t\t\t\t\treturn val[0] + \" : \" + val[1];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn val;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tnatural_arrow_keys: false,\r\n\t\t\t\tticks: [],\r\n\t\t\t\tticks_positions: [],\r\n\t\t\t\tticks_labels: [],\r\n\t\t\t\tticks_snap_bounds: 0,\r\n\t\t\t\tticks_tooltip: false,\r\n\t\t\t\tscale: 'linear',\r\n\t\t\t\tfocus: false,\r\n\t\t\t\ttooltip_position: null,\r\n\t\t\t\tlabelledby: null,\r\n\t\t\t\trangeHighlights: []\r\n\t\t\t},\r\n\r\n\t\t\tgetElement: function getElement() {\r\n\t\t\t\treturn this.sliderElem;\r\n\t\t\t},\r\n\r\n\t\t\tgetValue: function getValue() {\r\n\t\t\t\tif (this.options.range) {\r\n\t\t\t\t\treturn this._state.value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn this._state.value[0];\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tsetValue: function setValue(val, triggerSlideEvent, triggerChangeEvent) {\r\n\t\t\t\tif (!val) {\r\n\t\t\t\t\tval = 0;\r\n\t\t\t\t}\r\n\t\t\t\tvar oldValue = this.getValue();\r\n\t\t\t\tthis._state.value = this._validateInputValue(val);\r\n\t\t\t\tvar applyPrecision = this._applyPrecision.bind(this);\r\n\r\n\t\t\t\tif (this.options.range) {\r\n\t\t\t\t\tthis._state.value[0] = applyPrecision(this._state.value[0]);\r\n\t\t\t\t\tthis._state.value[1] = applyPrecision(this._state.value[1]);\r\n\r\n\t\t\t\t\tif (this.ticksAreValid && this.options.lock_to_ticks) {\r\n\t\t\t\t\t\tthis._state.value[0] = this.options.ticks[this._getClosestTickIndex(this._state.value[0])];\r\n\t\t\t\t\t\tthis._state.value[1] = this.options.ticks[this._getClosestTickIndex(this._state.value[1])];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._state.value[0] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[0]));\r\n\t\t\t\t\tthis._state.value[1] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[1]));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._state.value = applyPrecision(this._state.value);\r\n\r\n\t\t\t\t\tif (this.ticksAreValid && this.options.lock_to_ticks) {\r\n\t\t\t\t\t\tthis._state.value = this.options.ticks[this._getClosestTickIndex(this._state.value)];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._state.value = [Math.max(this.options.min, Math.min(this.options.max, this._state.value))];\r\n\t\t\t\t\tthis._addClass(this.handle2, 'hide');\r\n\t\t\t\t\tif (this.options.selection === 'after') {\r\n\t\t\t\t\t\tthis._state.value[1] = this.options.max;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._state.value[1] = this.options.min;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Determine which ticks the handle(s) are set at (if applicable)\r\n\t\t\t\tthis._setTickIndex();\r\n\r\n\t\t\t\tif (this.options.max > this.options.min) {\r\n\t\t\t\t\tthis._state.percentage = [this._toPercentage(this._state.value[0]), this._toPercentage(this._state.value[1]), this.options.step * 100 / (this.options.max - this.options.min)];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._state.percentage = [0, 0, 100];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._layout();\r\n\t\t\t\tvar newValue = this.options.range ? this._state.value : this._state.value[0];\r\n\r\n\t\t\t\tthis._setDataVal(newValue);\r\n\t\t\t\tif (triggerSlideEvent === true) {\r\n\t\t\t\t\tthis._trigger('slide', newValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar hasChanged = false;\r\n\t\t\t\tif (Array.isArray(newValue)) {\r\n\t\t\t\t\thasChanged = oldValue[0] !== newValue[0] || oldValue[1] !== newValue[1];\r\n\t\t\t\t} else {\r\n\t\t\t\t\thasChanged = oldValue !== newValue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (hasChanged && triggerChangeEvent === true) {\r\n\t\t\t\t\tthis._trigger('change', {\r\n\t\t\t\t\t\toldValue: oldValue,\r\n\t\t\t\t\t\tnewValue: newValue\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\tdestroy: function destroy() {\r\n\t\t\t\t// Remove event handlers on slider elements\r\n\t\t\t\tthis._removeSliderEventHandlers();\r\n\r\n\t\t\t\t// Remove the slider from the DOM\r\n\t\t\t\tthis.sliderElem.parentNode.removeChild(this.sliderElem);\r\n\t\t\t\t/* Show original element */\r\n\t\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\t\t// Clear out custom event bindings\r\n\t\t\t\tthis._cleanUpEventCallbacksMap();\r\n\r\n\t\t\t\t// Remove data values\r\n\t\t\t\tthis.element.removeAttribute(\"data\");\r\n\r\n\t\t\t\t// Remove JQuery handlers/data\r\n\t\t\t\tif ($) {\r\n\t\t\t\t\tthis._unbindJQueryEventHandlers();\r\n\t\t\t\t\tif (autoRegisterNamespace === NAMESPACE_MAIN) {\r\n\t\t\t\t\t\tthis.$element.removeData(autoRegisterNamespace);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.$element.removeData(NAMESPACE_ALTERNATE);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tdisable: function disable() {\r\n\t\t\t\tthis._state.enabled = false;\r\n\t\t\t\tthis.handle1.removeAttribute(\"tabindex\");\r\n\t\t\t\tthis.handle2.removeAttribute(\"tabindex\");\r\n\t\t\t\tthis._addClass(this.sliderElem, 'slider-disabled');\r\n\t\t\t\tthis._trigger('slideDisabled');\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\tenable: function enable() {\r\n\t\t\t\tthis._state.enabled = true;\r\n\t\t\t\tthis.handle1.setAttribute(\"tabindex\", 0);\r\n\t\t\t\tthis.handle2.setAttribute(\"tabindex\", 0);\r\n\t\t\t\tthis._removeClass(this.sliderElem, 'slider-disabled');\r\n\t\t\t\tthis._trigger('slideEnabled');\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\ttoggle: function toggle() {\r\n\t\t\t\tif (this._state.enabled) {\r\n\t\t\t\t\tthis.disable();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.enable();\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\tisEnabled: function isEnabled() {\r\n\t\t\t\treturn this._state.enabled;\r\n\t\t\t},\r\n\r\n\t\t\ton: function on(evt, callback) {\r\n\t\t\t\tthis._bindNonQueryEventHandler(evt, callback);\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\toff: function off(evt, callback) {\r\n\t\t\t\tif ($) {\r\n\t\t\t\t\tthis.$element.off(evt, callback);\r\n\t\t\t\t\tthis.$sliderElem.off(evt, callback);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._unbindNonQueryEventHandler(evt, callback);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tgetAttribute: function getAttribute(attribute) {\r\n\t\t\t\tif (attribute) {\r\n\t\t\t\t\treturn this.options[attribute];\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn this.options;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tsetAttribute: function setAttribute(attribute, value) {\r\n\t\t\t\tthis.options[attribute] = value;\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\trefresh: function refresh(options) {\r\n\t\t\t\tvar currentValue = this.getValue();\r\n\t\t\t\tthis._removeSliderEventHandlers();\r\n\t\t\t\tcreateNewSlider.call(this, this.element, this.options);\r\n\t\t\t\t// Don't reset slider's value on refresh if `useCurrentValue` is true\r\n\t\t\t\tif (options && options.useCurrentValue === true) {\r\n\t\t\t\t\tthis.setValue(currentValue);\r\n\t\t\t\t}\r\n\t\t\t\tif ($) {\r\n\t\t\t\t\t// Bind new instance of slider to the element\r\n\t\t\t\t\tif (autoRegisterNamespace === NAMESPACE_MAIN) {\r\n\t\t\t\t\t\t$.data(this.element, NAMESPACE_MAIN, this);\r\n\t\t\t\t\t\t$.data(this.element, NAMESPACE_ALTERNATE, this);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$.data(this.element, NAMESPACE_ALTERNATE, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\trelayout: function relayout() {\r\n\t\t\t\tthis._resize();\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t/******************************+\r\n \t\t\t\tHELPERS\r\n \t- Any method that is not part of the public interface.\r\n - Place it underneath this comment block and write its signature like so:\r\n \t\t_fnName : function() {...}\r\n \t********************************/\r\n\t\t\t_removeTooltipListener: function _removeTooltipListener(event, handler) {\r\n\t\t\t\tthis.handle1.removeEventListener(event, handler, false);\r\n\t\t\t\tthis.handle2.removeEventListener(event, handler, false);\r\n\t\t\t},\r\n\t\t\t_removeSliderEventHandlers: function _removeSliderEventHandlers() {\r\n\t\t\t\t// Remove keydown event listeners\r\n\t\t\t\tthis.handle1.removeEventListener(\"keydown\", this.handle1Keydown, false);\r\n\t\t\t\tthis.handle2.removeEventListener(\"keydown\", this.handle2Keydown, false);\r\n\r\n\t\t\t\t//remove the listeners from the ticks and handles if they had their own listeners\r\n\t\t\t\tif (this.options.ticks_tooltip) {\r\n\t\t\t\t\tvar ticks = this.ticksContainer.getElementsByClassName('slider-tick');\r\n\t\t\t\t\tfor (var i = 0; i < ticks.length; i++) {\r\n\t\t\t\t\t\tticks[i].removeEventListener('mouseenter', this.ticksCallbackMap[i].mouseEnter, false);\r\n\t\t\t\t\t\tticks[i].removeEventListener('mouseleave', this.ticksCallbackMap[i].mouseLeave, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.handleCallbackMap.handle1 && this.handleCallbackMap.handle2) {\r\n\t\t\t\t\t\tthis.handle1.removeEventListener('mouseenter', this.handleCallbackMap.handle1.mouseEnter, false);\r\n\t\t\t\t\t\tthis.handle2.removeEventListener('mouseenter', this.handleCallbackMap.handle2.mouseEnter, false);\r\n\t\t\t\t\t\tthis.handle1.removeEventListener('mouseleave', this.handleCallbackMap.handle1.mouseLeave, false);\r\n\t\t\t\t\t\tthis.handle2.removeEventListener('mouseleave', this.handleCallbackMap.handle2.mouseLeave, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.handleCallbackMap = null;\r\n\t\t\t\tthis.ticksCallbackMap = null;\r\n\r\n\t\t\t\tif (this.showTooltip) {\r\n\t\t\t\t\tthis._removeTooltipListener(\"focus\", this.showTooltip);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.hideTooltip) {\r\n\t\t\t\t\tthis._removeTooltipListener(\"blur\", this.hideTooltip);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Remove event listeners from sliderElem\r\n\t\t\t\tif (this.showTooltip) {\r\n\t\t\t\t\tthis.sliderElem.removeEventListener(\"mouseenter\", this.showTooltip, false);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.hideTooltip) {\r\n\t\t\t\t\tthis.sliderElem.removeEventListener(\"mouseleave\", this.hideTooltip, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.sliderElem.removeEventListener(\"mousedown\", this.mousedown, false);\r\n\r\n\t\t\t\tif (this.touchCapable) {\r\n\t\t\t\t\t// Remove touch event listeners from handles\r\n\t\t\t\t\tif (this.showTooltip) {\r\n\t\t\t\t\t\tthis.handle1.removeEventListener(\"touchstart\", this.showTooltip, false);\r\n\t\t\t\t\t\tthis.handle1.removeEventListener(\"touchmove\", this.showTooltip, false);\r\n\t\t\t\t\t\tthis.handle2.removeEventListener(\"touchstart\", this.showTooltip, false);\r\n\t\t\t\t\t\tthis.handle2.removeEventListener(\"touchmove\", this.showTooltip, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.hideTooltip) {\r\n\t\t\t\t\t\tthis.handle1.removeEventListener(\"touchend\", this.hideTooltip, false);\r\n\t\t\t\t\t\tthis.handle2.removeEventListener(\"touchend\", this.hideTooltip, false);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Remove event listeners from sliderElem\r\n\t\t\t\t\tif (this.showTooltip) {\r\n\t\t\t\t\t\tthis.sliderElem.removeEventListener(\"touchstart\", this.showTooltip, false);\r\n\t\t\t\t\t\tthis.sliderElem.removeEventListener(\"touchmove\", this.showTooltip, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.hideTooltip) {\r\n\t\t\t\t\t\tthis.sliderElem.removeEventListener(\"touchend\", this.hideTooltip, false);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.sliderElem.removeEventListener(\"touchstart\", this.touchstart, false);\r\n\t\t\t\t\tthis.sliderElem.removeEventListener(\"touchmove\", this.touchmove, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Remove window event listener\r\n\t\t\t\twindow.removeEventListener(\"resize\", this.resize, false);\r\n\t\t\t},\r\n\t\t\t_bindNonQueryEventHandler: function _bindNonQueryEventHandler(evt, callback) {\r\n\t\t\t\tif (this.eventToCallbackMap[evt] === undefined) {\r\n\t\t\t\t\tthis.eventToCallbackMap[evt] = [];\r\n\t\t\t\t}\r\n\t\t\t\tthis.eventToCallbackMap[evt].push(callback);\r\n\t\t\t},\r\n\t\t\t_unbindNonQueryEventHandler: function _unbindNonQueryEventHandler(evt, callback) {\r\n\t\t\t\tvar callbacks = this.eventToCallbackMap[evt];\r\n\t\t\t\tif (callbacks !== undefined) {\r\n\t\t\t\t\tfor (var i = 0; i < callbacks.length; i++) {\r\n\t\t\t\t\t\tif (callbacks[i] === callback) {\r\n\t\t\t\t\t\t\tcallbacks.splice(i, 1);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_cleanUpEventCallbacksMap: function _cleanUpEventCallbacksMap() {\r\n\t\t\t\tvar eventNames = Object.keys(this.eventToCallbackMap);\r\n\t\t\t\tfor (var i = 0; i < eventNames.length; i++) {\r\n\t\t\t\t\tvar eventName = eventNames[i];\r\n\t\t\t\t\tdelete this.eventToCallbackMap[eventName];\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_showTooltip: function _showTooltip() {\r\n\t\t\t\tif (this.options.tooltip_split === false) {\r\n\t\t\t\t\tthis._addClass(this.tooltip, 'show');\r\n\t\t\t\t\tthis.tooltip_min.style.display = 'none';\r\n\t\t\t\t\tthis.tooltip_max.style.display = 'none';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._addClass(this.tooltip_min, 'show');\r\n\t\t\t\t\tthis._addClass(this.tooltip_max, 'show');\r\n\t\t\t\t\tthis.tooltip.style.display = 'none';\r\n\t\t\t\t}\r\n\t\t\t\tthis._state.over = true;\r\n\t\t\t},\r\n\t\t\t_hideTooltip: function _hideTooltip() {\r\n\t\t\t\tif (this._state.inDrag === false && this._alwaysShowTooltip !== true) {\r\n\t\t\t\t\tthis._removeClass(this.tooltip, 'show');\r\n\t\t\t\t\tthis._removeClass(this.tooltip_min, 'show');\r\n\t\t\t\t\tthis._removeClass(this.tooltip_max, 'show');\r\n\t\t\t\t}\r\n\t\t\t\tthis._state.over = false;\r\n\t\t\t},\r\n\t\t\t_setToolTipOnMouseOver: function _setToolTipOnMouseOver(tempState) {\r\n\t\t\t\tvar self = this;\r\n\t\t\t\tvar formattedTooltipVal = this.options.formatter(!tempState ? this._state.value[0] : tempState.value[0]);\r\n\t\t\t\tvar positionPercentages = !tempState ? getPositionPercentages(this._state, this.options.reversed) : getPositionPercentages(tempState, this.options.reversed);\r\n\t\t\t\tthis._setText(this.tooltipInner, formattedTooltipVal);\r\n\r\n\t\t\t\tthis.tooltip.style[this.stylePos] = positionPercentages[0] + \"%\";\r\n\r\n\t\t\t\tfunction getPositionPercentages(state, reversed) {\r\n\t\t\t\t\tif (reversed) {\r\n\t\t\t\t\t\treturn [100 - state.percentage[0], self.options.range ? 100 - state.percentage[1] : state.percentage[1]];\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn [state.percentage[0], state.percentage[1]];\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_copyState: function _copyState() {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tvalue: [this._state.value[0], this._state.value[1]],\r\n\t\t\t\t\tenabled: this._state.enabled,\r\n\t\t\t\t\toffset: this._state.offset,\r\n\t\t\t\t\tsize: this._state.size,\r\n\t\t\t\t\tpercentage: [this._state.percentage[0], this._state.percentage[1], this._state.percentage[2]],\r\n\t\t\t\t\tinDrag: this._state.inDrag,\r\n\t\t\t\t\tover: this._state.over,\r\n\t\t\t\t\t// deleted or null'd keys\r\n\t\t\t\t\tdragged: this._state.dragged,\r\n\t\t\t\t\tkeyCtrl: this._state.keyCtrl\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\t_addTickListener: function _addTickListener() {\r\n\t\t\t\treturn {\r\n\t\t\t\t\taddMouseEnter: function addMouseEnter(reference, element, index) {\r\n\t\t\t\t\t\tvar enter = function enter() {\r\n\t\t\t\t\t\t\tvar tempState = reference._copyState();\r\n\t\t\t\t\t\t\t// Which handle is being hovered over?\r\n\t\t\t\t\t\t\tvar val = element === reference.handle1 ? tempState.value[0] : tempState.value[1];\r\n\t\t\t\t\t\t\tvar per = void 0;\r\n\r\n\t\t\t\t\t\t\t// Setup value and percentage for tick's 'mouseenter'\r\n\t\t\t\t\t\t\tif (index !== undefined) {\r\n\t\t\t\t\t\t\t\tval = reference.options.ticks[index];\r\n\t\t\t\t\t\t\t\tper = reference.options.ticks_positions.length > 0 && reference.options.ticks_positions[index] || reference._toPercentage(reference.options.ticks[index]);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tper = reference._toPercentage(val);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttempState.value[0] = val;\r\n\t\t\t\t\t\t\ttempState.percentage[0] = per;\r\n\t\t\t\t\t\t\treference._setToolTipOnMouseOver(tempState);\r\n\t\t\t\t\t\t\treference._showTooltip();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\telement.addEventListener(\"mouseenter\", enter, false);\r\n\t\t\t\t\t\treturn enter;\r\n\t\t\t\t\t},\r\n\t\t\t\t\taddMouseLeave: function addMouseLeave(reference, element) {\r\n\t\t\t\t\t\tvar leave = function leave() {\r\n\t\t\t\t\t\t\treference._hideTooltip();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\telement.addEventListener(\"mouseleave\", leave, false);\r\n\t\t\t\t\t\treturn leave;\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\t_layout: function _layout() {\r\n\t\t\t\tvar positionPercentages;\r\n\t\t\t\tvar formattedValue;\r\n\r\n\t\t\t\tif (this.options.reversed) {\r\n\t\t\t\t\tpositionPercentages = [100 - this._state.percentage[0], this.options.range ? 100 - this._state.percentage[1] : this._state.percentage[1]];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpositionPercentages = [this._state.percentage[0], this._state.percentage[1]];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.handle1.style[this.stylePos] = positionPercentages[0] + \"%\";\r\n\t\t\t\tthis.handle1.setAttribute('aria-valuenow', this._state.value[0]);\r\n\t\t\t\tformattedValue = this.options.formatter(this._state.value[0]);\r\n\t\t\t\tif (isNaN(formattedValue)) {\r\n\t\t\t\t\tthis.handle1.setAttribute('aria-valuetext', formattedValue);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.handle1.removeAttribute('aria-valuetext');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.handle2.style[this.stylePos] = positionPercentages[1] + \"%\";\r\n\t\t\t\tthis.handle2.setAttribute('aria-valuenow', this._state.value[1]);\r\n\t\t\t\tformattedValue = this.options.formatter(this._state.value[1]);\r\n\t\t\t\tif (isNaN(formattedValue)) {\r\n\t\t\t\t\tthis.handle2.setAttribute('aria-valuetext', formattedValue);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.handle2.removeAttribute('aria-valuetext');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Position highlight range elements */\r\n\t\t\t\tif (this.rangeHighlightElements.length > 0 && Array.isArray(this.options.rangeHighlights) && this.options.rangeHighlights.length > 0) {\r\n\t\t\t\t\tfor (var _i = 0; _i < this.options.rangeHighlights.length; _i++) {\r\n\t\t\t\t\t\tvar startPercent = this._toPercentage(this.options.rangeHighlights[_i].start);\r\n\t\t\t\t\t\tvar endPercent = this._toPercentage(this.options.rangeHighlights[_i].end);\r\n\r\n\t\t\t\t\t\tif (this.options.reversed) {\r\n\t\t\t\t\t\t\tvar sp = 100 - endPercent;\r\n\t\t\t\t\t\t\tendPercent = 100 - startPercent;\r\n\t\t\t\t\t\t\tstartPercent = sp;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar currentRange = this._createHighlightRange(startPercent, endPercent);\r\n\r\n\t\t\t\t\t\tif (currentRange) {\r\n\t\t\t\t\t\t\tif (this.options.orientation === 'vertical') {\r\n\t\t\t\t\t\t\t\tthis.rangeHighlightElements[_i].style.top = currentRange.start + \"%\";\r\n\t\t\t\t\t\t\t\tthis.rangeHighlightElements[_i].style.height = currentRange.size + \"%\";\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tif (this.options.rtl) {\r\n\t\t\t\t\t\t\t\t\tthis.rangeHighlightElements[_i].style.right = currentRange.start + \"%\";\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tthis.rangeHighlightElements[_i].style.left = currentRange.start + \"%\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tthis.rangeHighlightElements[_i].style.width = currentRange.size + \"%\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.rangeHighlightElements[_i].style.display = \"none\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Position ticks and labels */\r\n\t\t\t\tif (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\r\n\r\n\t\t\t\t\tvar styleSize = this.options.orientation === 'vertical' ? 'height' : 'width';\r\n\t\t\t\t\tvar styleMargin;\r\n\t\t\t\t\tif (this.options.orientation === 'vertical') {\r\n\t\t\t\t\t\tstyleMargin = 'marginTop';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (this.options.rtl) {\r\n\t\t\t\t\t\t\tstyleMargin = 'marginRight';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tstyleMargin = 'marginLeft';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar labelSize = this._state.size / (this.options.ticks.length - 1);\r\n\r\n\t\t\t\t\tif (this.tickLabelContainer) {\r\n\t\t\t\t\t\tvar extraMargin = 0;\r\n\t\t\t\t\t\tif (this.options.ticks_positions.length === 0) {\r\n\t\t\t\t\t\t\tif (this.options.orientation !== 'vertical') {\r\n\t\t\t\t\t\t\t\tthis.tickLabelContainer.style[styleMargin] = -labelSize / 2 + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\textraMargin = this.tickLabelContainer.offsetHeight;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t/* Chidren are position absolute, calculate height by finding the max offsetHeight of a child */\r\n\t\t\t\t\t\t\tfor (i = 0; i < this.tickLabelContainer.childNodes.length; i++) {\r\n\t\t\t\t\t\t\t\tif (this.tickLabelContainer.childNodes[i].offsetHeight > extraMargin) {\r\n\t\t\t\t\t\t\t\t\textraMargin = this.tickLabelContainer.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (this.options.orientation === 'horizontal') {\r\n\t\t\t\t\t\t\tthis.sliderElem.style.marginBottom = extraMargin + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (var i = 0; i < this.options.ticks.length; i++) {\r\n\r\n\t\t\t\t\t\tvar percentage = this.options.ticks_positions[i] || this._toPercentage(this.options.ticks[i]);\r\n\r\n\t\t\t\t\t\tif (this.options.reversed) {\r\n\t\t\t\t\t\t\tpercentage = 100 - percentage;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.ticks[i].style[this.stylePos] = percentage + \"%\";\r\n\r\n\t\t\t\t\t\t/* Set class labels to denote whether ticks are in the selection */\r\n\t\t\t\t\t\tthis._removeClass(this.ticks[i], 'in-selection');\r\n\t\t\t\t\t\tif (!this.options.range) {\r\n\t\t\t\t\t\t\tif (this.options.selection === 'after' && percentage >= positionPercentages[0]) {\r\n\t\t\t\t\t\t\t\tthis._addClass(this.ticks[i], 'in-selection');\r\n\t\t\t\t\t\t\t} else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) {\r\n\t\t\t\t\t\t\t\tthis._addClass(this.ticks[i], 'in-selection');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) {\r\n\t\t\t\t\t\t\tthis._addClass(this.ticks[i], 'in-selection');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.tickLabels[i]) {\r\n\t\t\t\t\t\t\tthis.tickLabels[i].style[styleSize] = labelSize + \"px\";\r\n\r\n\t\t\t\t\t\t\tif (this.options.orientation !== 'vertical' && this.options.ticks_positions[i] !== undefined) {\r\n\t\t\t\t\t\t\t\tthis.tickLabels[i].style.position = 'absolute';\r\n\t\t\t\t\t\t\t\tthis.tickLabels[i].style[this.stylePos] = percentage + \"%\";\r\n\t\t\t\t\t\t\t\tthis.tickLabels[i].style[styleMargin] = -labelSize / 2 + 'px';\r\n\t\t\t\t\t\t\t} else if (this.options.orientation === 'vertical') {\r\n\t\t\t\t\t\t\t\tif (this.options.rtl) {\r\n\t\t\t\t\t\t\t\t\tthis.tickLabels[i].style['marginRight'] = this.sliderElem.offsetWidth + \"px\";\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tthis.tickLabels[i].style['marginLeft'] = this.sliderElem.offsetWidth + \"px\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tthis.tickLabelContainer.style[styleMargin] = this.sliderElem.offsetWidth / 2 * -1 + 'px';\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Set class labels to indicate tick labels are in the selection or selected */\r\n\t\t\t\t\t\t\tthis._removeClass(this.tickLabels[i], 'label-in-selection label-is-selection');\r\n\t\t\t\t\t\t\tif (!this.options.range) {\r\n\t\t\t\t\t\t\t\tif (this.options.selection === 'after' && percentage >= positionPercentages[0]) {\r\n\t\t\t\t\t\t\t\t\tthis._addClass(this.tickLabels[i], 'label-in-selection');\r\n\t\t\t\t\t\t\t\t} else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) {\r\n\t\t\t\t\t\t\t\t\tthis._addClass(this.tickLabels[i], 'label-in-selection');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (percentage === positionPercentages[0]) {\r\n\t\t\t\t\t\t\t\t\tthis._addClass(this.tickLabels[i], 'label-is-selection');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) {\r\n\t\t\t\t\t\t\t\tthis._addClass(this.tickLabels[i], 'label-in-selection');\r\n\t\t\t\t\t\t\t\tif (percentage === positionPercentages[0] || positionPercentages[1]) {\r\n\t\t\t\t\t\t\t\t\tthis._addClass(this.tickLabels[i], 'label-is-selection');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar formattedTooltipVal;\r\n\r\n\t\t\t\tif (this.options.range) {\r\n\t\t\t\t\tformattedTooltipVal = this.options.formatter(this._state.value);\r\n\t\t\t\t\tthis._setText(this.tooltipInner, formattedTooltipVal);\r\n\t\t\t\t\tthis.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0]) / 2 + \"%\";\r\n\r\n\t\t\t\t\tvar innerTooltipMinText = this.options.formatter(this._state.value[0]);\r\n\t\t\t\t\tthis._setText(this.tooltipInner_min, innerTooltipMinText);\r\n\r\n\t\t\t\t\tvar innerTooltipMaxText = this.options.formatter(this._state.value[1]);\r\n\t\t\t\t\tthis._setText(this.tooltipInner_max, innerTooltipMaxText);\r\n\r\n\t\t\t\t\tthis.tooltip_min.style[this.stylePos] = positionPercentages[0] + \"%\";\r\n\r\n\t\t\t\t\tthis.tooltip_max.style[this.stylePos] = positionPercentages[1] + \"%\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tformattedTooltipVal = this.options.formatter(this._state.value[0]);\r\n\t\t\t\t\tthis._setText(this.tooltipInner, formattedTooltipVal);\r\n\r\n\t\t\t\t\tthis.tooltip.style[this.stylePos] = positionPercentages[0] + \"%\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.options.orientation === 'vertical') {\r\n\t\t\t\t\tthis.trackLow.style.top = '0';\r\n\t\t\t\t\tthis.trackLow.style.height = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\r\n\r\n\t\t\t\t\tthis.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\r\n\t\t\t\t\tthis.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) + '%';\r\n\r\n\t\t\t\t\tthis.trackHigh.style.bottom = '0';\r\n\t\t\t\t\tthis.trackHigh.style.height = 100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1]) + '%';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.stylePos === 'right') {\r\n\t\t\t\t\t\tthis.trackLow.style.right = '0';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.trackLow.style.left = '0';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.trackLow.style.width = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\r\n\r\n\t\t\t\t\tif (this.stylePos === 'right') {\r\n\t\t\t\t\t\tthis.trackSelection.style.right = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) + '%';\r\n\r\n\t\t\t\t\tif (this.stylePos === 'right') {\r\n\t\t\t\t\t\tthis.trackHigh.style.left = '0';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.trackHigh.style.right = '0';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.trackHigh.style.width = 100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1]) + '%';\r\n\r\n\t\t\t\t\tvar offset_min = this.tooltip_min.getBoundingClientRect();\r\n\t\t\t\t\tvar offset_max = this.tooltip_max.getBoundingClientRect();\r\n\r\n\t\t\t\t\tif (this.options.tooltip_position === 'bottom') {\r\n\t\t\t\t\t\tif (offset_min.right > offset_max.left) {\r\n\t\t\t\t\t\t\tthis._removeClass(this.tooltip_max, 'bs-tooltip-bottom');\r\n\t\t\t\t\t\t\tthis._addClass(this.tooltip_max, 'bs-tooltip-top');\r\n\t\t\t\t\t\t\tthis.tooltip_max.style.top = '';\r\n\t\t\t\t\t\t\tthis.tooltip_max.style.bottom = 22 + 'px';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis._removeClass(this.tooltip_max, 'bs-tooltip-top');\r\n\t\t\t\t\t\t\tthis._addClass(this.tooltip_max, 'bs-tooltip-bottom');\r\n\t\t\t\t\t\t\tthis.tooltip_max.style.top = this.tooltip_min.style.top;\r\n\t\t\t\t\t\t\tthis.tooltip_max.style.bottom = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (offset_min.right > offset_max.left) {\r\n\t\t\t\t\t\t\tthis._removeClass(this.tooltip_max, 'bs-tooltip-top');\r\n\t\t\t\t\t\t\tthis._addClass(this.tooltip_max, 'bs-tooltip-bottom');\r\n\t\t\t\t\t\t\tthis.tooltip_max.style.top = 18 + 'px';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis._removeClass(this.tooltip_max, 'bs-tooltip-bottom');\r\n\t\t\t\t\t\t\tthis._addClass(this.tooltip_max, 'bs-tooltip-top');\r\n\t\t\t\t\t\t\tthis.tooltip_max.style.top = this.tooltip_min.style.top;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_createHighlightRange: function _createHighlightRange(start, end) {\r\n\t\t\t\tif (this._isHighlightRange(start, end)) {\r\n\t\t\t\t\tif (start > end) {\r\n\t\t\t\t\t\treturn { 'start': end, 'size': start - end };\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn { 'start': start, 'size': end - start };\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t_isHighlightRange: function _isHighlightRange(start, end) {\r\n\t\t\t\tif (0 <= start && start <= 100 && 0 <= end && end <= 100) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_resize: function _resize(ev) {\r\n\t\t\t\t/*jshint unused:false*/\r\n\t\t\t\tthis._state.offset = this._offset(this.sliderElem);\r\n\t\t\t\tthis._state.size = this.sliderElem[this.sizePos];\r\n\t\t\t\tthis._layout();\r\n\t\t\t},\r\n\t\t\t_removeProperty: function _removeProperty(element, prop) {\r\n\t\t\t\tif (element.style.removeProperty) {\r\n\t\t\t\t\telement.style.removeProperty(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\telement.style.removeAttribute(prop);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_mousedown: function _mousedown(ev) {\r\n\t\t\t\tif (!this._state.enabled) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (ev.preventDefault) {\r\n\t\t\t\t\tev.preventDefault();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._state.offset = this._offset(this.sliderElem);\r\n\t\t\t\tthis._state.size = this.sliderElem[this.sizePos];\r\n\r\n\t\t\t\tvar percentage = this._getPercentage(ev);\r\n\r\n\t\t\t\tif (this.options.range) {\r\n\t\t\t\t\tvar diff1 = Math.abs(this._state.percentage[0] - percentage);\r\n\t\t\t\t\tvar diff2 = Math.abs(this._state.percentage[1] - percentage);\r\n\t\t\t\t\tthis._state.dragged = diff1 < diff2 ? 0 : 1;\r\n\t\t\t\t\tthis._adjustPercentageForRangeSliders(percentage);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._state.dragged = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._state.percentage[this._state.dragged] = percentage;\r\n\r\n\t\t\t\tif (this.touchCapable) {\r\n\t\t\t\t\tdocument.removeEventListener(\"touchmove\", this.mousemove, false);\r\n\t\t\t\t\tdocument.removeEventListener(\"touchend\", this.mouseup, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.mousemove) {\r\n\t\t\t\t\tdocument.removeEventListener(\"mousemove\", this.mousemove, false);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.mouseup) {\r\n\t\t\t\t\tdocument.removeEventListener(\"mouseup\", this.mouseup, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.mousemove = this._mousemove.bind(this);\r\n\t\t\t\tthis.mouseup = this._mouseup.bind(this);\r\n\r\n\t\t\t\tif (this.touchCapable) {\r\n\t\t\t\t\t// Touch: Bind touch events:\r\n\t\t\t\t\tdocument.addEventListener(\"touchmove\", this.mousemove, false);\r\n\t\t\t\t\tdocument.addEventListener(\"touchend\", this.mouseup, false);\r\n\t\t\t\t}\r\n\t\t\t\t// Bind mouse events:\r\n\t\t\t\tdocument.addEventListener(\"mousemove\", this.mousemove, false);\r\n\t\t\t\tdocument.addEventListener(\"mouseup\", this.mouseup, false);\r\n\r\n\t\t\t\tthis._state.inDrag = true;\r\n\t\t\t\tvar newValue = this._calculateValue();\r\n\r\n\t\t\t\tthis._trigger('slideStart', newValue);\r\n\r\n\t\t\t\tthis.setValue(newValue, false, true);\r\n\r\n\t\t\t\tev.returnValue = false;\r\n\r\n\t\t\t\tif (this.options.focus) {\r\n\t\t\t\t\tthis._triggerFocusOnHandle(this._state.dragged);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t},\r\n\t\t\t_touchstart: function _touchstart(ev) {\r\n\t\t\t\tthis._mousedown(ev);\r\n\t\t\t},\r\n\t\t\t_triggerFocusOnHandle: function _triggerFocusOnHandle(handleIdx) {\r\n\t\t\t\tif (handleIdx === 0) {\r\n\t\t\t\t\tthis.handle1.focus();\r\n\t\t\t\t}\r\n\t\t\t\tif (handleIdx === 1) {\r\n\t\t\t\t\tthis.handle2.focus();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_keydown: function _keydown(handleIdx, ev) {\r\n\t\t\t\tif (!this._state.enabled) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar dir;\r\n\t\t\t\tswitch (ev.keyCode) {\r\n\t\t\t\t\tcase 37: // left\r\n\t\t\t\t\tcase 40:\r\n\t\t\t\t\t\t// down\r\n\t\t\t\t\t\tdir = -1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 39: // right\r\n\t\t\t\t\tcase 38:\r\n\t\t\t\t\t\t// up\r\n\t\t\t\t\t\tdir = 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (!dir) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// use natural arrow keys instead of from min to max\r\n\t\t\t\tif (this.options.natural_arrow_keys) {\r\n\t\t\t\t\tvar isHorizontal = this.options.orientation === 'horizontal';\r\n\t\t\t\t\tvar isVertical = this.options.orientation === 'vertical';\r\n\t\t\t\t\tvar isRTL = this.options.rtl;\r\n\t\t\t\t\tvar isReversed = this.options.reversed;\r\n\r\n\t\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\t\tif (isRTL) {\r\n\t\t\t\t\t\t\tif (!isReversed) {\r\n\t\t\t\t\t\t\t\tdir = -dir;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (isReversed) {\r\n\t\t\t\t\t\t\t\tdir = -dir;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (isVertical) {\r\n\t\t\t\t\t\tif (!isReversed) {\r\n\t\t\t\t\t\t\tdir = -dir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar val;\r\n\t\t\t\tif (this.ticksAreValid && this.options.lock_to_ticks) {\r\n\t\t\t\t\tvar index = void 0;\r\n\t\t\t\t\t// Find tick index that handle 1/2 is currently on\r\n\t\t\t\t\tindex = this.options.ticks.indexOf(this._state.value[handleIdx]);\r\n\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t// Set default to first tick\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t\twindow.console.warn('(lock_to_ticks) _keydown: index should not be -1');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tindex += dir;\r\n\t\t\t\t\tindex = Math.max(0, Math.min(this.options.ticks.length - 1, index));\r\n\t\t\t\t\tval = this.options.ticks[index];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tval = this._state.value[handleIdx] + dir * this.options.step;\r\n\t\t\t\t}\r\n\t\t\t\tvar percentage = this._toPercentage(val);\r\n\t\t\t\tthis._state.keyCtrl = handleIdx;\r\n\t\t\t\tif (this.options.range) {\r\n\t\t\t\t\tthis._adjustPercentageForRangeSliders(percentage);\r\n\t\t\t\t\tvar val1 = !this._state.keyCtrl ? val : this._state.value[0];\r\n\t\t\t\t\tvar val2 = this._state.keyCtrl ? val : this._state.value[1];\r\n\t\t\t\t\t// Restrict values within limits\r\n\t\t\t\t\tval = [Math.max(this.options.min, Math.min(this.options.max, val1)), Math.max(this.options.min, Math.min(this.options.max, val2))];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tval = Math.max(this.options.min, Math.min(this.options.max, val));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._trigger('slideStart', val);\r\n\r\n\t\t\t\tthis.setValue(val, true, true);\r\n\r\n\t\t\t\tthis._trigger('slideStop', val);\r\n\r\n\t\t\t\tthis._pauseEvent(ev);\r\n\t\t\t\tdelete this._state.keyCtrl;\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t},\r\n\t\t\t_pauseEvent: function _pauseEvent(ev) {\r\n\t\t\t\tif (ev.stopPropagation) {\r\n\t\t\t\t\tev.stopPropagation();\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.preventDefault) {\r\n\t\t\t\t\tev.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\tev.cancelBubble = true;\r\n\t\t\t\tev.returnValue = false;\r\n\t\t\t},\r\n\t\t\t_mousemove: function _mousemove(ev) {\r\n\t\t\t\tif (!this._state.enabled) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar percentage = this._getPercentage(ev);\r\n\t\t\t\tthis._adjustPercentageForRangeSliders(percentage);\r\n\t\t\t\tthis._state.percentage[this._state.dragged] = percentage;\r\n\r\n\t\t\t\tvar val = this._calculateValue(true);\r\n\t\t\t\tthis.setValue(val, true, true);\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t},\r\n\t\t\t_touchmove: function _touchmove(ev) {\r\n\t\t\t\tif (ev.changedTouches === undefined) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Prevent page from scrolling and only drag the slider\r\n\t\t\t\tif (ev.preventDefault) {\r\n\t\t\t\t\tev.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_adjustPercentageForRangeSliders: function _adjustPercentageForRangeSliders(percentage) {\r\n\t\t\t\tif (this.options.range) {\r\n\t\t\t\t\tvar precision = this._getNumDigitsAfterDecimalPlace(percentage);\r\n\t\t\t\t\tprecision = precision ? precision - 1 : 0;\r\n\t\t\t\t\tvar percentageWithAdjustedPrecision = this._applyToFixedAndParseFloat(percentage, precision);\r\n\t\t\t\t\tif (this._state.dragged === 0 && this._applyToFixedAndParseFloat(this._state.percentage[1], precision) < percentageWithAdjustedPrecision) {\r\n\t\t\t\t\t\tthis._state.percentage[0] = this._state.percentage[1];\r\n\t\t\t\t\t\tthis._state.dragged = 1;\r\n\t\t\t\t\t} else if (this._state.dragged === 1 && this._applyToFixedAndParseFloat(this._state.percentage[0], precision) > percentageWithAdjustedPrecision) {\r\n\t\t\t\t\t\tthis._state.percentage[1] = this._state.percentage[0];\r\n\t\t\t\t\t\tthis._state.dragged = 0;\r\n\t\t\t\t\t} else if (this._state.keyCtrl === 0 && this._toPercentage(this._state.value[1]) < percentage) {\r\n\t\t\t\t\t\tthis._state.percentage[0] = this._state.percentage[1];\r\n\t\t\t\t\t\tthis._state.keyCtrl = 1;\r\n\t\t\t\t\t\tthis.handle2.focus();\r\n\t\t\t\t\t} else if (this._state.keyCtrl === 1 && this._toPercentage(this._state.value[0]) > percentage) {\r\n\t\t\t\t\t\tthis._state.percentage[1] = this._state.percentage[0];\r\n\t\t\t\t\t\tthis._state.keyCtrl = 0;\r\n\t\t\t\t\t\tthis.handle1.focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_mouseup: function _mouseup(ev) {\r\n\t\t\t\tif (!this._state.enabled) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar percentage = this._getPercentage(ev);\r\n\t\t\t\tthis._adjustPercentageForRangeSliders(percentage);\r\n\t\t\t\tthis._state.percentage[this._state.dragged] = percentage;\r\n\r\n\t\t\t\tif (this.touchCapable) {\r\n\t\t\t\t\t// Touch: Unbind touch event handlers:\r\n\t\t\t\t\tdocument.removeEventListener(\"touchmove\", this.mousemove, false);\r\n\t\t\t\t\tdocument.removeEventListener(\"touchend\", this.mouseup, false);\r\n\t\t\t\t}\r\n\t\t\t\t// Unbind mouse event handlers:\r\n\t\t\t\tdocument.removeEventListener(\"mousemove\", this.mousemove, false);\r\n\t\t\t\tdocument.removeEventListener(\"mouseup\", this.mouseup, false);\r\n\r\n\t\t\t\tthis._state.inDrag = false;\r\n\t\t\t\tif (this._state.over === false) {\r\n\t\t\t\t\tthis._hideTooltip();\r\n\t\t\t\t}\r\n\t\t\t\tvar val = this._calculateValue(true);\r\n\r\n\t\t\t\tthis.setValue(val, false, true);\r\n\t\t\t\tthis._trigger('slideStop', val);\r\n\r\n\t\t\t\t// No longer need 'dragged' after mouse up\r\n\t\t\t\tthis._state.dragged = null;\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t},\r\n\t\t\t_setValues: function _setValues(index, val) {\r\n\t\t\t\tvar comp = 0 === index ? 0 : 100;\r\n\t\t\t\tif (this._state.percentage[index] !== comp) {\r\n\t\t\t\t\tval.data[index] = this._toValue(this._state.percentage[index]);\r\n\t\t\t\t\tval.data[index] = this._applyPrecision(val.data[index]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_calculateValue: function _calculateValue(snapToClosestTick) {\r\n\t\t\t\tvar val = {};\r\n\t\t\t\tif (this.options.range) {\r\n\t\t\t\t\tval.data = [this.options.min, this.options.max];\r\n\t\t\t\t\tthis._setValues(0, val);\r\n\t\t\t\t\tthis._setValues(1, val);\r\n\t\t\t\t\tif (snapToClosestTick) {\r\n\t\t\t\t\t\tval.data[0] = this._snapToClosestTick(val.data[0]);\r\n\t\t\t\t\t\tval.data[1] = this._snapToClosestTick(val.data[1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tval.data = this._toValue(this._state.percentage[0]);\r\n\t\t\t\t\tval.data = parseFloat(val.data);\r\n\t\t\t\t\tval.data = this._applyPrecision(val.data);\r\n\t\t\t\t\tif (snapToClosestTick) {\r\n\t\t\t\t\t\tval.data = this._snapToClosestTick(val.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn val.data;\r\n\t\t\t},\r\n\t\t\t_snapToClosestTick: function _snapToClosestTick(val) {\r\n\t\t\t\tvar min = [val, Infinity];\r\n\t\t\t\tfor (var i = 0; i < this.options.ticks.length; i++) {\r\n\t\t\t\t\tvar diff = Math.abs(this.options.ticks[i] - val);\r\n\t\t\t\t\tif (diff <= min[1]) {\r\n\t\t\t\t\t\tmin = [this.options.ticks[i], diff];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (min[1] <= this.options.ticks_snap_bounds) {\r\n\t\t\t\t\treturn min[0];\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t},\r\n\r\n\t\t\t_applyPrecision: function _applyPrecision(val) {\r\n\t\t\t\tvar precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step);\r\n\t\t\t\treturn this._applyToFixedAndParseFloat(val, precision);\r\n\t\t\t},\r\n\t\t\t_getNumDigitsAfterDecimalPlace: function _getNumDigitsAfterDecimalPlace(num) {\r\n\t\t\t\tvar match = ('' + num).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\r\n\t\t\t\tif (!match) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\r\n\t\t\t},\r\n\t\t\t_applyToFixedAndParseFloat: function _applyToFixedAndParseFloat(num, toFixedInput) {\r\n\t\t\t\tvar truncatedNum = num.toFixed(toFixedInput);\r\n\t\t\t\treturn parseFloat(truncatedNum);\r\n\t\t\t},\r\n\t\t\t/*\r\n \tCredits to Mike Samuel for the following method!\r\n \tSource: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number\r\n */\r\n\t\t\t_getPercentage: function _getPercentage(ev) {\r\n\t\t\t\tif (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove' || ev.type === 'touchend')) {\r\n\t\t\t\t\tev = ev.changedTouches[0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar eventPosition = ev[this.mousePos];\r\n\t\t\t\tvar sliderOffset = this._state.offset[this.stylePos];\r\n\t\t\t\tvar distanceToSlide = eventPosition - sliderOffset;\r\n\t\t\t\tif (this.stylePos === 'right') {\r\n\t\t\t\t\tdistanceToSlide = -distanceToSlide;\r\n\t\t\t\t}\r\n\t\t\t\t// Calculate what percent of the length the slider handle has slid\r\n\t\t\t\tvar percentage = distanceToSlide / this._state.size * 100;\r\n\t\t\t\tpercentage = Math.round(percentage / this._state.percentage[2]) * this._state.percentage[2];\r\n\t\t\t\tif (this.options.reversed) {\r\n\t\t\t\t\tpercentage = 100 - percentage;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Make sure the percent is within the bounds of the slider.\r\n\t\t\t\t// 0% corresponds to the 'min' value of the slide\r\n\t\t\t\t// 100% corresponds to the 'max' value of the slide\r\n\t\t\t\treturn Math.max(0, Math.min(100, percentage));\r\n\t\t\t},\r\n\t\t\t_validateInputValue: function _validateInputValue(val) {\r\n\t\t\t\tif (!isNaN(+val)) {\r\n\t\t\t\t\treturn +val;\r\n\t\t\t\t} else if (Array.isArray(val)) {\r\n\t\t\t\t\tthis._validateArray(val);\r\n\t\t\t\t\treturn val;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(ErrorMsgs.formatInvalidInputErrorMsg(val));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_validateArray: function _validateArray(val) {\r\n\t\t\t\tfor (var i = 0; i < val.length; i++) {\r\n\t\t\t\t\tvar input = val[i];\r\n\t\t\t\t\tif (typeof input !== 'number') {\r\n\t\t\t\t\t\tthrow new Error(ErrorMsgs.formatInvalidInputErrorMsg(input));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_setDataVal: function _setDataVal(val) {\r\n\t\t\t\tthis.element.setAttribute('data-value', val);\r\n\t\t\t\tthis.element.setAttribute('value', val);\r\n\t\t\t\tthis.element.value = val;\r\n\t\t\t},\r\n\t\t\t_trigger: function _trigger(evt, val) {\r\n\t\t\t\tval = val || val === 0 ? val : undefined;\r\n\r\n\t\t\t\tvar callbackFnArray = this.eventToCallbackMap[evt];\r\n\t\t\t\tif (callbackFnArray && callbackFnArray.length) {\r\n\t\t\t\t\tfor (var i = 0; i < callbackFnArray.length; i++) {\r\n\t\t\t\t\t\tvar callbackFn = callbackFnArray[i];\r\n\t\t\t\t\t\tcallbackFn(val);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If JQuery exists, trigger JQuery events */\r\n\t\t\t\tif ($) {\r\n\t\t\t\t\tthis._triggerJQueryEvent(evt, val);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_triggerJQueryEvent: function _triggerJQueryEvent(evt, val) {\r\n\t\t\t\tvar eventData = {\r\n\t\t\t\t\ttype: evt,\r\n\t\t\t\t\tvalue: val\r\n\t\t\t\t};\r\n\t\t\t\tthis.$element.trigger(eventData);\r\n\t\t\t\tthis.$sliderElem.trigger(eventData);\r\n\t\t\t},\r\n\t\t\t_unbindJQueryEventHandlers: function _unbindJQueryEventHandlers() {\r\n\t\t\t\tthis.$element.off();\r\n\t\t\t\tthis.$sliderElem.off();\r\n\t\t\t},\r\n\t\t\t_setText: function _setText(element, text) {\r\n\t\t\t\tif (typeof element.textContent !== \"undefined\") {\r\n\t\t\t\t\telement.textContent = text;\r\n\t\t\t\t} else if (typeof element.innerText !== \"undefined\") {\r\n\t\t\t\t\telement.innerText = text;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_removeClass: function _removeClass(element, classString) {\r\n\t\t\t\tvar classes = classString.split(\" \");\r\n\t\t\t\tvar newClasses = element.className;\r\n\r\n\t\t\t\tfor (var i = 0; i < classes.length; i++) {\r\n\t\t\t\t\tvar classTag = classes[i];\r\n\t\t\t\t\tvar regex = new RegExp(\"(?:\\\\s|^)\" + classTag + \"(?:\\\\s|$)\");\r\n\t\t\t\t\tnewClasses = newClasses.replace(regex, \" \");\r\n\t\t\t\t}\r\n\r\n\t\t\t\telement.className = newClasses.trim();\r\n\t\t\t},\r\n\t\t\t_addClass: function _addClass(element, classString) {\r\n\t\t\t\tvar classes = classString.split(\" \");\r\n\t\t\t\tvar newClasses = element.className;\r\n\r\n\t\t\t\tfor (var i = 0; i < classes.length; i++) {\r\n\t\t\t\t\tvar classTag = classes[i];\r\n\t\t\t\t\tvar regex = new RegExp(\"(?:\\\\s|^)\" + classTag + \"(?:\\\\s|$)\");\r\n\t\t\t\t\tvar ifClassExists = regex.test(newClasses);\r\n\r\n\t\t\t\t\tif (!ifClassExists) {\r\n\t\t\t\t\t\tnewClasses += \" \" + classTag;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\telement.className = newClasses.trim();\r\n\t\t\t},\r\n\t\t\t_offsetLeft: function _offsetLeft(obj) {\r\n\t\t\t\treturn obj.getBoundingClientRect().left;\r\n\t\t\t},\r\n\t\t\t_offsetRight: function _offsetRight(obj) {\r\n\t\t\t\treturn obj.getBoundingClientRect().right;\r\n\t\t\t},\r\n\t\t\t_offsetTop: function _offsetTop(obj) {\r\n\t\t\t\tvar offsetTop = obj.offsetTop;\r\n\t\t\t\twhile ((obj = obj.offsetParent) && !isNaN(obj.offsetTop)) {\r\n\t\t\t\t\toffsetTop += obj.offsetTop;\r\n\t\t\t\t\tif (obj.tagName !== 'BODY') {\r\n\t\t\t\t\t\toffsetTop -= obj.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn offsetTop;\r\n\t\t\t},\r\n\t\t\t_offset: function _offset(obj) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tleft: this._offsetLeft(obj),\r\n\t\t\t\t\tright: this._offsetRight(obj),\r\n\t\t\t\t\ttop: this._offsetTop(obj)\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\t_css: function _css(elementRef, styleName, value) {\r\n\t\t\t\tif ($) {\r\n\t\t\t\t\t$.style(elementRef, styleName, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar style = styleName.replace(/^-ms-/, \"ms-\").replace(/-([\\da-z])/gi, function (all, letter) {\r\n\t\t\t\t\t\treturn letter.toUpperCase();\r\n\t\t\t\t\t});\r\n\t\t\t\t\telementRef.style[style] = value;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_toValue: function _toValue(percentage) {\r\n\t\t\t\treturn this.options.scale.toValue.apply(this, [percentage]);\r\n\t\t\t},\r\n\t\t\t_toPercentage: function _toPercentage(value) {\r\n\t\t\t\treturn this.options.scale.toPercentage.apply(this, [value]);\r\n\t\t\t},\r\n\t\t\t_setTooltipPosition: function _setTooltipPosition() {\r\n\t\t\t\tvar tooltips = [this.tooltip, this.tooltip_min, this.tooltip_max];\r\n\t\t\t\tif (this.options.orientation === 'vertical') {\r\n\t\t\t\t\tvar tooltipPos;\r\n\t\t\t\t\tif (this.options.tooltip_position) {\r\n\t\t\t\t\t\ttooltipPos = this.options.tooltip_position;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (this.options.rtl) {\r\n\t\t\t\t\t\t\ttooltipPos = 'left';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttooltipPos = 'right';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar oppositeSide = tooltipPos === 'left' ? 'right' : 'left';\r\n\t\t\t\t\ttooltips.forEach(function (tooltip) {\r\n\t\t\t\t\t\tthis._addClass(tooltip, 'bs-tooltip-' + tooltipPos);\r\n\t\t\t\t\t\ttooltip.style[oppositeSide] = '100%';\r\n\t\t\t\t\t}.bind(this));\r\n\t\t\t\t} else if (this.options.tooltip_position === 'bottom') {\r\n\t\t\t\t\ttooltips.forEach(function (tooltip) {\r\n\t\t\t\t\t\tthis._addClass(tooltip, 'bs-tooltip-bottom');\r\n\t\t\t\t\t\ttooltip.style.top = 22 + 'px';\r\n\t\t\t\t\t}.bind(this));\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttooltips.forEach(function (tooltip) {\r\n\t\t\t\t\t\tthis._addClass(tooltip, 'bs-tooltip-top');\r\n\t\t\t\t\t\ttooltip.style.top = -this.tooltip.outerHeight - 14 + 'px';\r\n\t\t\t\t\t}.bind(this));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t_getClosestTickIndex: function _getClosestTickIndex(val) {\r\n\t\t\t\tvar difference = Math.abs(val - this.options.ticks[0]);\r\n\t\t\t\tvar index = 0;\r\n\t\t\t\tfor (var i = 0; i < this.options.ticks.length; ++i) {\r\n\t\t\t\t\tvar d = Math.abs(val - this.options.ticks[i]);\r\n\t\t\t\t\tif (d < difference) {\r\n\t\t\t\t\t\tdifference = d;\r\n\t\t\t\t\t\tindex = i;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn index;\r\n\t\t\t},\r\n\t\t\t/**\r\n * Attempts to find the index in `ticks[]` the slider values are set at.\r\n * The indexes can be -1 to indicate the slider value is not set at a value in `ticks[]`.\r\n */\r\n\t\t\t_setTickIndex: function _setTickIndex() {\r\n\t\t\t\tif (this.ticksAreValid) {\r\n\t\t\t\t\tthis._state.tickIndex = [this.options.ticks.indexOf(this._state.value[0]), this.options.ticks.indexOf(this._state.value[1])];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/*********************************\r\n \t\tAttach to global namespace\r\n \t*********************************/\r\n\t\tif ($ && $.fn) {\r\n\t\t\tif (!$.fn.slider) {\r\n\t\t\t\t$.bridget(NAMESPACE_MAIN, Slider);\r\n\t\t\t\tautoRegisterNamespace = NAMESPACE_MAIN;\r\n\t\t\t} else {\r\n\t\t\t\tif (windowIsDefined) {\r\n\t\t\t\t\twindow.console.warn(\"bootstrap-slider.js - WARNING: $.fn.slider namespace is already bound. Use the $.fn.bootstrapSlider namespace instead.\");\r\n\t\t\t\t}\r\n\t\t\t\tautoRegisterNamespace = NAMESPACE_ALTERNATE;\r\n\t\t\t}\r\n\t\t\t$.bridget(NAMESPACE_ALTERNATE, Slider);\r\n\r\n\t\t\t// Auto-Register data-provide=\"slider\" Elements\r\n\t\t\t$(function () {\r\n\t\t\t\t$(\"input[data-provide=slider]\")[autoRegisterNamespace]();\r\n\t\t\t});\r\n\t\t}\r\n\t})($);\r\n\r\n\treturn Slider;\r\n});\r\n"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","windowIsDefined","window","factory","define","amd","module","exports","jQuery","require","err","Slider","$","logError","slice","autoRegisterNamespace","ErrorMsgs","SliderScale","NAMESPACE_MAIN","NAMESPACE_ALTERNATE","noop","createNewSlider","element","options","this","_state","value","enabled","offset","size","percentage","inDrag","over","tickIndex","ticksCallbackMap","handleCallbackMap","document","querySelector","HTMLElement","optionTypes","Object","keys","defaultOptions","isMinSet","hasOwnProperty","isMaxSet","i","length","optName","val","dataName","replace","dataValString","getAttribute","JSON","parse","ticksAreValid","Array","isArray","ticks","lock_to_ticks","rtl","computedStyle","getComputedStyle","direction","style","orientation","tooltip_position","sliderTrackSelection","sliderTrackLow","sliderTrackHigh","sliderMinHandle","sliderMaxHandle","origWidth","width","updateSlider","parent","parentNode","sliderElem","createElement","className","sliderTrack","rangeHighlightsOpts","setAttribute","min","max","appendChild","rangeHighlightElements","rangeHighlights","j","rangeHighlightElement","customClassString","class","push","isLabelledbyArray","labelledby","ticksContainer","enterCallback","leaveCallback","tick","ticks_tooltip","tickListenerReference","_addTickListener","addMouseEnter","addMouseLeave","mouseEnter","mouseLeave","tickLabels","ticks_labels","tickLabelContainer","label","noTickPositionsSpecified","ticks_positions","tickLabelsIndex","reversed","innerHTML","createAndAppendTooltipSubElements","tooltipElem","arrow","inner","sliderTooltip","sliderTooltipMin","sliderTooltipMax","insertBefore","display","$element","$sliderElem","eventToCallbackMap","id","touchCapable","DocumentTouch","touchX","touchY","tooltip","tooltipInner","tooltip_min","tooltipInner_min","tooltip_max","tooltipInner_max","scale","_removeClass","forEach","prop","_removeProperty","trackLow","trackSelection","trackHigh","handle1","handle2","handle","_addClass","stylePos","mousePos","sizePos","_setTooltipPosition","Math","apply","range","selection","indexOf","_offset","setValue","handle1Keydown","_keydown","bind","addEventListener","handle2Keydown","mousedown","_mousedown","touchstart","_touchstart","touchmove","_touchmove","resize","_resize","_showTooltip","_alwaysShowTooltip","showTooltip","hideTooltip","_hideTooltip","callbackHandle","enable","disable","console","log","warn","message","error","bridget","namespace","PluginClass","option","opts","isPlainObject","extend","fn","objects","map","instance","data","_init","args","call","arguments","len","elem","isFunction","charAt","returnValue","undefined","input","linear","getValue","toValue","rawValue","shouldAdjustWithBase","minv","maxv","minp","maxp","round","step","toPercentage","logarithmic","exp","precision","tooltip_split","formatter","natural_arrow_keys","ticks_snap_bounds","focus","getElement","triggerSlideEvent","triggerChangeEvent","oldValue","applyPrecision","_validateInputValue","_applyPrecision","newValue","_getClosestTickIndex","_setTickIndex","_toPercentage","_layout","_setDataVal","_trigger","destroy","_removeSliderEventHandlers","removeChild","_cleanUpEventCallbacksMap","removeAttribute","_unbindJQueryEventHandlers","removeData","toggle","isEnabled","on","evt","callback","_bindNonQueryEventHandler","off","_unbindNonQueryEventHandler","attribute","refresh","currentValue","useCurrentValue","relayout","_removeTooltipListener","event","handler","removeEventListener","getElementsByClassName","callbacks","splice","eventNames","eventName","_setToolTipOnMouseOver","tempState","self","formattedTooltipVal","positionPercentages","getPositionPercentages","state","_setText","_copyState","dragged","keyCtrl","reference","index","enter","per","leave","offset_min","offset_max","formattedValue","isNaN","_i","startPercent","start","endPercent","end","currentRange","sp","_createHighlightRange","top","height","right","left","styleSize","styleMargin","labelSize","extraMargin","offsetHeight","childNodes","marginBottom","position","offsetWidth","innerTooltipMinText","innerTooltipMaxText","abs","bottom","getBoundingClientRect","_isHighlightRange","ev","removeProperty","preventDefault","diff2","_getPercentage","diff1","_adjustPercentageForRangeSliders","mousemove","mouseup","_mousemove","_mouseup","_calculateValue","_triggerFocusOnHandle","handleIdx","dir","val1","val2","keyCode","isHorizontal","isVertical","isRTL","isReversed","_pauseEvent","stopPropagation","cancelBubble","changedTouches","percentageWithAdjustedPrecision","_getNumDigitsAfterDecimalPlace","_applyToFixedAndParseFloat","_setValues","_toValue","snapToClosestTick","_snapToClosestTick","parseFloat","Infinity","diff","num","match","toFixedInput","truncatedNum","toFixed","distanceToSlide","type","_validateArray","Error","callbackFnArray","callbackFn","_triggerJQueryEvent","eventData","trigger","text","textContent","innerText","classString","classes","split","newClasses","classTag","regex","RegExp","trim","test","_offsetLeft","_offsetRight","_offsetTop","offsetTop","offsetParent","tagName","scrollTop","_css","elementRef","styleName","all","letter","toUpperCase","tooltipPos","oppositeSide","tooltips","outerHeight","difference","d","slider"],"mappings":"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"}