{"version":3,"sources":["jsdelivr-header.js","/npm/@caselawanalytics/jquery-range@1.0.0/jquery.range.js"],"names":[],"mappings":"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","file":"/npm/@caselawanalytics/jquery-range@1.0.0/jquery.range.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@caselawanalytics/jquery-range@1.0.0/jquery.range.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*jshint multistr:true, curly: false */\n/*global jQuery:false, define: false */\n/**\n * jRange - Awesome range control\n *\n * Written by\n * ----------\n * Nitin Hayaran (nitinhayaran@gmail.com)\n *\n * Licensed under the MIT (MIT-LICENSE.txt).\n *\n * @author Nitin Hayaran\n * @version 0.1-RELEASE\n *\n * Dependencies\n * ------------\n * jQuery (http://jquery.com)\n *\n **/\n;\n\n// Uses CommonJS, AMD or browser globals to create a jQuery plugin.\n\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof module === 'object' && module.exports) {\n\t\t// Node/CommonJS\n\t\tmodule.exports = function( root, jQuery ) {\n\t\t\tif ( jQuery === undefined ) {\n\t\t\t\t// require('jQuery') returns a factory that requires window to\n\t\t\t\t// build a jQuery instance, we normalize how we use modules\n\t\t\t\t// that require this pattern but the window provided is a noop\n\t\t\t\t// if it's defined (how jquery works)\n\t\t\t\tif ( typeof window !== 'undefined' ) {\n\t\t\t\t\tjQuery = require('jquery');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tjQuery = require('jquery')(root);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfactory(jQuery);\n\t\t\treturn jQuery;\n\t\t};\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\t'use strict';\n\n\tvar jRange = function() {\n\t\treturn this.init.apply(this, arguments);\n\t};\n\t$.fn.jRange = jRange;\n\n\tjRange.prototype = {\n\t\tdefaults: {\n\t\t\tonstatechange: function() {},\n      ondragend: function() {},\n      onbarclicked: function() {},\n\t\t\tisRange: false,\n\t\t\tshowLabels: true,\n\t\t\tshowScale: true,\n\t\t\tstep: 1,\n\t\t\tformat: '%s',\n\t\t\ttheme: 'theme-green',\n\t\t\twidth: 300,\n\t\t\tdisable: false,\n\t\t\tsnap: false\n\t\t},\n\t\ttemplate: '<div class=\"slider-container\">\\\n\t\t\t<div class=\"back-bar\">\\\n                <div class=\"selected-bar\"></div>\\\n                <div class=\"pointer low\"></div><div class=\"pointer-label low\">123456</div>\\\n                <div class=\"pointer high\"></div><div class=\"pointer-label high\">456789</div>\\\n                <div class=\"clickable-dummy\"></div>\\\n            </div>\\\n            <div class=\"scale\"></div>\\\n\t\t</div>',\n\t\tinit: function(node, options) {\n\t\t\tthis.options       = $.extend({}, this.defaults, options);\n\t\t\tthis.inputNode     = $(node);\n\t\t\tthis.options.value = this.inputNode.val() || (this.options.isRange ? this.options.from + ',' + this.options.from : '' + this.options.from);\n\t\t\tthis.domNode       = $(this.template);\n\t\t\tthis.domNode.addClass(this.options.theme);\n\t\t\tthis.inputNode.after(this.domNode);\n\t\t\tthis.domNode.on('change', this.onChange);\n\t\t\tthis.pointers      = $('.pointer', this.domNode);\n\t\t\tthis.lowPointer    = this.pointers.first();\n\t\t\tthis.highPointer   = this.pointers.last();\n\t\t\tthis.labels        = $('.pointer-label', this.domNode);\n\t\t\tthis.lowLabel      = this.labels.first();\n\t\t\tthis.highLabel     = this.labels.last();\n\t\t\tthis.scale         = $('.scale', this.domNode);\n\t\t\tthis.bar           = $('.selected-bar', this.domNode);\n\t\t\tthis.clickableBar  = this.domNode.find('.clickable-dummy');\n\t\t\tthis.interval      = this.options.to - this.options.from;\n\t\t\tthis.render();\n\t\t},\n\t\trender: function() {\n\t\t\t// Check if inputNode is visible, and have some width, so that we can set slider width accordingly.\n\t\t\tif (this.inputNode.width() === 0 && !this.options.width) {\n\t\t\t\tconsole.log('jRange : no width found, returning');\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tthis.options.width = this.options.width || this.inputNode.width();\n\t\t\t\tthis.domNode.width(this.options.width);\n\t\t\t\tthis.inputNode.hide();\n\t\t\t}\n\n\t\t\tif (this.isSingle()) {\n\t\t\t\tthis.lowPointer.hide();\n\t\t\t\tthis.lowLabel.hide();\n\t\t\t}\n\t\t\tif (!this.options.showLabels) {\n\t\t\t\tthis.labels.hide();\n\t\t\t}\n\t\t\tthis.attachEvents();\n\t\t\tif (this.options.showScale) {\n\t\t\t\tthis.renderScale();\n\t\t\t}\n\t\t\tthis.setValue(this.options.value);\n\t\t},\n\t\tisSingle: function() {\n\t\t\tif (typeof(this.options.value) === 'number') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn (this.options.value.indexOf(',') !== -1 || this.options.isRange) ?\n\t\t\t\tfalse : true;\n\t\t},\n\t\tattachEvents: function() {\n\t\t\tthis.clickableBar.click($.proxy(this.barClicked, this));\n\t\t\tthis.pointers.on('mousedown touchstart', $.proxy(this.onDragStart, this));\n\t\t\tthis.pointers.bind('dragstart', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t\t},\n\t\tonDragStart: function(e) {\n\t\t\tif ( this.options.disable || (e.type === 'mousedown' && e.which !== 1)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tvar pointer = $(e.target);\n\t\t\tthis.pointers.removeClass('last-active');\n\t\t\tpointer.addClass('focused last-active');\n\t\t\tthis[(pointer.hasClass('low') ? 'low' : 'high') + 'Label'].addClass('focused');\n\t\t\t$(document).on('mousemove.slider touchmove.slider', $.proxy(this.onDrag, this, pointer));\n\t\t\t$(document).on('mouseup.slider touchend.slider touchcancel.slider', $.proxy(this.onDragEnd, this));\n\t\t},\n\t\tonDrag: function(pointer, e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\tif (e.originalEvent.touches && e.originalEvent.touches.length) {\n\t\t\t\te = e.originalEvent.touches[0];\n\t\t\t} else if (e.originalEvent.changedTouches && e.originalEvent.changedTouches.length) {\n\t\t\t\te = e.originalEvent.changedTouches[0];\n\t\t\t}\n\n\t\t\tvar position = e.clientX - this.domNode.offset().left;\n\t\t\tthis.domNode.trigger('change', [this, pointer, position]);\n\t\t},\n\t\tonDragEnd: function(e) {\n\t\t\tthis.pointers.removeClass('focused')\n\t\t\t\t.trigger('rangeslideend');\n\t\t\tthis.labels.removeClass('focused');\n\t\t\t$(document).off('.slider');\n\t\t  this.options.ondragend.call(this, this.options.value);\n\t\t},\n\t\tbarClicked: function(e) {\n\t\t\tif(this.options.disable) return;\n\t\t\tvar x = e.pageX - this.clickableBar.offset().left;\n\t\t\tif (this.isSingle())\n\t\t\t\tthis.setPosition(this.pointers.last(), x, true, true);\n\t\t\telse {\n\t\t\t\tvar firstLeft      \t= Math.abs(parseFloat(this.pointers.first().css('left'), 10)),\n\t\t\t\t\t\tfirstHalfWidth \t= this.pointers.first().width() / 2,\n\t\t\t\t\t\tlastLeft \t\t\t \t= Math.abs(parseFloat(this.pointers.last().css('left'), 10)),\n\t\t\t\t\t\tlastHalfWidth  \t= this.pointers.first().width() / 2,\n\t\t\t\t\t\tleftSide        = Math.abs(firstLeft - x + firstHalfWidth),\n\t\t\t\t\t\trightSide       = Math.abs(lastLeft - x + lastHalfWidth),\n\t\t\t\t\t\tpointer;\n\n\t\t\t\tif(leftSide == rightSide) {\n\t\t\t\t\tpointer = x < firstLeft ? this.pointers.first() : this.pointers.last();\n\t\t\t\t} else {\n\t\t\t\t\tpointer = leftSide < rightSide ? this.pointers.first() : this.pointers.last();\n\t\t\t\t}\n\t\t\t\tthis.setPosition(pointer, x, true, true);\n\t\t\t}\n\t\t\tthis.options.onbarclicked.call(this, this.options.value);\n\t\t},\n\t\tonChange: function(e, self, pointer, position) {\n\t\t\tvar min, max;\n\t\t\tmin = 0;\n\t\t\tmax = self.domNode.width();\n\n\t\t\tif (!self.isSingle()) {\n\t\t\t\tmin = pointer.hasClass('high') ? parseFloat(self.lowPointer.css(\"left\")) + (self.lowPointer.width() / 2) : 0;\n\t\t\t\tmax = pointer.hasClass('low') ? parseFloat(self.highPointer.css(\"left\")) + (self.highPointer.width() / 2) : self.domNode.width();\n\t\t\t}\n\n\t\t\tvar value = Math.min(Math.max(position, min), max);\n\t\t\tself.setPosition(pointer, value, true);\n\t\t},\n\t\tsetPosition: function(pointer, position, isPx, animate) {\n\t\t\tvar leftPos, rightPos,\n\t\t\t\tlowPos = parseFloat(this.lowPointer.css(\"left\")),\n\t\t\t\thighPos = parseFloat(this.highPointer.css(\"left\")) || 0,\n\t\t\t\tcircleWidth = this.highPointer.width() / 2;\n\t\t\tif (!isPx) {\n\t\t\t\tposition = this.prcToPx(position);\n\t\t\t}\n\t\t\tif(this.options.snap){\n\t\t\t\tvar expPos = this.correctPositionForSnap(position);\n\t\t\t\tif(expPos === -1){\n\t\t\t\t\treturn;\n\t\t\t\t}else{\n\t\t\t\t\tposition = expPos;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pointer[0] === this.highPointer[0]) {\n\t\t\t\thighPos = Math.round(position - circleWidth);\n\t\t\t} else {\n\t\t\t\tlowPos = Math.round(position - circleWidth);\n\t\t\t}\n\t\t\tpointer[animate ? 'animate' : 'css']({\n\t\t\t\t'left': Math.round(position - circleWidth)\n\t\t\t});\n\t\t\tif (this.isSingle()) {\n\t\t\t\tleftPos = 0;\n\t\t\t} else {\n\t\t\t\tleftPos = lowPos + circleWidth;\n\t\t\t\trightPos = highPos + circleWidth;\n\t\t\t}\n\t\t\tvar w = Math.round(highPos + circleWidth - leftPos);\n\t\t\tthis.bar[animate ? 'animate' : 'css']({\n\t\t\t\t'width': Math.abs(w),\n\t\t\t\t'left': (w>0) ? leftPos : leftPos + w\n\t\t\t});\n\t\t\tthis.showPointerValue(pointer, position, animate);\n\t\t\tthis.isReadonly();\n\t\t},\n\t\tcorrectPositionForSnap: function(position){\n\t\t\tvar currentValue = this.positionToValue(position) - this.options.from;\n\t\t\tvar diff = this.options.width / (this.interval / this.options.step),\n\t\t\t\texpectedPosition = (currentValue / this.options.step) * diff;\n\t\t\tif( position <= expectedPosition + diff / 2 && position >= expectedPosition - diff / 2){\n\t\t\t\treturn expectedPosition;\n\t\t\t}else{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t},\n\t\t// will be called from outside\n\t\tsetValue: function(value) {\n\t\t\tvar values = value.toString().split(',');\n\t\t\tvalues[0] = Math.min(Math.max(values[0], this.options.from), this.options.to) + '';\n\t\t\tif (values.length > 1){\n\t\t\t\tvalues[1] = Math.min(Math.max(values[1], this.options.from), this.options.to) + '';\n\t\t\t}\n\t\t\tthis.options.value = value;\n\t\t\tvar prc = this.valuesToPrc(values.length === 2 ? values : [0, values[0]]);\n\t\t\tif (this.isSingle()) {\n\t\t\t\tthis.setPosition(this.highPointer, prc[1]);\n\t\t\t} else {\n\t\t\t\tthis.setPosition(this.lowPointer, prc[0]);\n\t\t\t\tthis.setPosition(this.highPointer, prc[1]);\n\t\t\t}\n\t\t},\n\t\trenderScale: function() {\n\t\t\tvar s = this.options.scale || [this.options.from, this.options.to];\n\t\t\tvar prc = Math.round((100 / (s.length - 1)) * 10) / 10;\n\t\t\tvar str = '';\n\t\t\tfor (var i = 0; i < s.length; i++) {\n\t\t\t\tstr += '<span style=\"left: ' + i * prc + '%\">' + (s[i] != '|' ? '<ins>' + s[i] + '</ins>' : '') + '</span>';\n\t\t\t}\n\t\t\tthis.scale.html(str);\n\n\t\t\t$('ins', this.scale).each(function() {\n\t\t\t\t$(this).css({\n\t\t\t\t\tmarginLeft: -$(this).outerWidth() / 2\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetBarWidth: function() {\n\t\t\tvar values = this.options.value.split(',');\n\t\t\tif (values.length > 1) {\n\t\t\t\treturn parseFloat(values[1]) - parseFloat(values[0]);\n\t\t\t} else {\n\t\t\t\treturn parseFloat(values[0]);\n\t\t\t}\n\t\t},\n\t\tshowPointerValue: function(pointer, position, animate) {\n\t\t\tvar label = $('.pointer-label', this.domNode)[pointer.hasClass('low') ? 'first' : 'last']();\n\t\t\tvar text;\n\t\t\tvar value = this.positionToValue(position);\n\t\t\t// Is it higer or lower than it should be?\n\n\t\t\tif ($.isFunction(this.options.format)) {\n\t\t\t\tvar type = this.isSingle() ? undefined : (pointer.hasClass('low') ? 'low' : 'high');\n\t\t\t\ttext = this.options.format(value, type);\n\t\t\t} else {\n\t\t\t\ttext = this.options.format.replace('%s', value);\n\t\t\t}\n\n\t\t\tvar width = label.html(text).width(),\n\t\t\t\tleft = position - width / 2;\n\t\t\tleft = Math.min(Math.max(left, 0), this.options.width - width);\n\t\t\tlabel[animate ? 'animate' : 'css']({\n\t\t\t\tleft: left\n\t\t\t});\n\t\t\tthis.setInputValue(pointer, value);\n\t\t},\n\t\tvaluesToPrc: function(values) {\n\t\t\tvar lowPrc = ((parseFloat(values[0]) - parseFloat(this.options.from)) * 100 / this.interval),\n\t\t\t\thighPrc = ((parseFloat(values[1]) - parseFloat(this.options.from)) * 100 / this.interval);\n\t\t\treturn [lowPrc, highPrc];\n\t\t},\n\t\tprcToPx: function(prc) {\n\t\t\treturn (this.domNode.width() * prc) / 100;\n\t\t},\n\t\tisDecimal: function() {\n\t\t\treturn ((this.options.value + this.options.from + this.options.to).indexOf(\".\")===-1) ? false : true;\n\t\t},\n\t\tpositionToValue: function(pos) {\n\t\t\tvar value = (pos / this.domNode.width()) * this.interval;\n\t\t\tvalue = parseFloat(value, 10) + parseFloat(this.options.from, 10);\n\t\t\tif (this.isDecimal()) {\n\t\t\t\tvar final = Math.round(Math.round(value / this.options.step) * this.options.step *100)/100;\n\t\t\t\tif (final!==0.0) {\n\t\t\t\t\tfinal = '' + final;\n\t\t\t\t\tif (final.indexOf(\".\")===-1) {\n\t\t\t\t\t\tfinal = final + \".\";\n\t\t\t\t\t}\n\t\t\t\t\twhile (final.length - final.indexOf('.')<3) {\n\t\t\t\t\t\tfinal = final + \"0\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfinal = \"0.00\";\n\t\t\t\t}\n\t\t\t\treturn final;\n\t\t\t} else {\n\t\t\t\treturn Math.round(value / this.options.step) * this.options.step;\n\t\t\t}\n\t\t},\n\t\tsetInputValue: function(pointer, v) {\n\t\t\t// if(!isChanged) return;\n\t\t\tif (this.isSingle()) {\n\t\t\t\tthis.options.value = v.toString();\n\t\t\t} else {\n\t\t\t\tvar values = this.options.value.split(',');\n\t\t\t\tif (pointer.hasClass('low')) {\n\t\t\t\t\tthis.options.value = v + ',' + values[1];\n\t\t\t\t} else {\n\t\t\t\t\tthis.options.value = values[0] + ',' + v;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.inputNode.val() !== this.options.value) {\n\t\t\t\tthis.inputNode.val(this.options.value)\n\t\t\t\t\t.trigger('change');\n\t\t\t\tthis.options.onstatechange.call(this, this.options.value);\n\t\t\t}\n\t\t},\n\t\tgetValue: function() {\n\t\t\treturn this.options.value;\n\t\t},\n\t\tgetOptions: function() {\n\t\t\treturn this.options;\n\t\t},\n\t\tgetRange: function() {\n\t\t\treturn this.options.from + \",\" + this.options.to;\n\t\t},\n\t\tisReadonly: function(){\n\t\t\tthis.domNode.toggleClass('slider-readonly', this.options.disable);\n\t\t},\n\t\tdisable: function(){\n\t\t\tthis.options.disable = true;\n\t\t\tthis.isReadonly();\n\t\t},\n\t\tenable: function(){\n\t\t\tthis.options.disable = false;\n\t\t\tthis.isReadonly();\n\t\t},\n\t\ttoggleDisable: function(){\n\t\t\tthis.options.disable = !this.options.disable;\n\t\t\tthis.isReadonly();\n\t\t},\n\t\tupdateRange: function(range, value) {\n\t\t\tvar values = range.toString().split(',');\n\t\t\tthis.interval = parseInt(values[1]) - parseInt(values[0]);\n\t\t\tif(value){\n\t\t\t\tthis.setValue(value);\n\t\t\t}else{\n\t\t\t\tthis.setValue(this.getValue());\n\t\t\t}\n\t\t}\n\t};\n\n\tvar pluginName = 'jRange';\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function(option) {\n\t\tvar args = arguments,\n\t\t\tresult;\n\n\t\tthis.each(function() {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $.data(this, 'plugin_' + pluginName),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\t$this.data('plugin_' + pluginName, (data = new jRange(this, options)));\n\t\t\t\t$(window).resize(function() {\n\t\t\t\t\tdata.setValue(data.getValue());\n\t\t\t\t}); // Update slider position when window is resized to keep it in sync with scale\n\t\t\t}\n\t\t\t// if first argument is a string, call silimarly named function\n\t\t\t// this gives flexibility to call functions of the plugin e.g.\n\t\t\t//   - $('.dial').plugin('destroy');\n\t\t\t//   - $('.dial').plugin('render', $('.new-child'));\n\t\t\tif (typeof option === 'string') {\n\t\t\t\tresult = data[option].apply(data, Array.prototype.slice.call(args, 1));\n\t\t\t}\n\t\t});\n\n\t\t// To enable plugin returns values\n\t\treturn result || this;\n\t};\n}));\n"]}