Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var provide_1 = require("../util/provide");
var nm = provide_1.default('domUtil');
var mouseIn = false;
var mouseDown = false;
var timeout = null;
var dragged = false;
var lastVal;
/**
* Created by gavorhes on 11/2/2015.
*/
function triggerCallback(callback, evt) {
"use strict";
var val = parseFloat(this.value);
var min = parseFloat(this.min);
var max = parseFloat(this.max);
var step = parseFloat(this.step);
if (max - val < step) {
val = max;
}
var percent = (val - min) / (max - min);
if (typeof lastVal == 'number' && val == lastVal) {
return;
}
lastVal = val;
callback(val, percent, evt);
}
/**
* Add a variety of listeners for range inputs applied to a common callback
* @param $slider - jquery reference to the slider
* @param {rangeChangeCallback} callback - the callback
* @param {number} [changeTimeout=75] before the callback is called
* @this {jQuery}
* @returns {jQuery} the jQuery object
*/
function rangeChange($slider, callback, changeTimeout) {
changeTimeout = typeof changeTimeout == 'number' ? changeTimeout : 75;
$slider.mouseenter(function () {
mouseIn = true;
});
$slider.mouseleave(function () {
mouseIn = false;
mouseDown = false;
});
$slider.mousedown(function () {
mouseDown = true;
});
$slider.mouseup(function () {
mouseDown = false;
});
$slider.mousemove(
/**
*
* @param {object} evt - event properties
* @this {HTMLElement}
*/
function (evt) {
if (!(mouseIn && mouseDown)) {
return;
}
dragged = true;
if (lastVal == this['value']) {
return;
}
lastVal = this['value'];
if (timeout != null) {
clearTimeout(timeout);
}
var _this = this;
timeout = setTimeout(function () {
triggerCallback.call(_this, callback, evt);
timeout = null;
}, changeTimeout);
});
$slider.keyup(
/**
*
* @param {object} evt - event properties
*/
function (evt) {
if (evt.keyCode == 37 || evt.keyCode == 39) {
triggerCallback.call(this, callback, evt);
}
});
$slider.change(function (evt) {
if (dragged) {
dragged = false;
return;
}
triggerCallback.call(this, callback, evt);
});
return this;
}
exports.rangeChange = rangeChange;
nm.rangeChange = rangeChange;
//# sourceMappingURL=range-change.js.map