mirror of
https://github.com/dataarts/dat.gui.git
synced 2024-12-12 04:08:27 +00:00
Updated dom.bind to allow usage of passive events
Updated all calls to dom.bind to use passive if preventDefault isn't used
This commit is contained in:
parent
c2edd82e39
commit
f7d33e472f
@ -36,7 +36,7 @@ class BooleanController extends Controller {
|
|||||||
_this.setValue(!_this.__prev);
|
_this.setValue(!_this.__prev);
|
||||||
}
|
}
|
||||||
|
|
||||||
dom.bind(this.__checkbox, 'change', onChange, false);
|
dom.bind(this.__checkbox, 'change', onChange, false, true);
|
||||||
|
|
||||||
this.domElement.appendChild(this.__checkbox);
|
this.domElement.appendChild(this.__checkbox);
|
||||||
|
|
||||||
|
@ -59,9 +59,9 @@ class ColorController extends Controller {
|
|||||||
if (e.keyCode === 13) { // on enter
|
if (e.keyCode === 13) { // on enter
|
||||||
onBlur.call(this);
|
onBlur.call(this);
|
||||||
}
|
}
|
||||||
});
|
}, false, true);
|
||||||
|
|
||||||
dom.bind(this.__input, 'blur', onBlur);
|
dom.bind(this.__input, 'blur', onBlur, false, true);
|
||||||
|
|
||||||
dom.bind(this.__selector, 'mousedown', function(/* e */) {
|
dom.bind(this.__selector, 'mousedown', function(/* e */) {
|
||||||
dom
|
dom
|
||||||
@ -69,15 +69,15 @@ class ColorController extends Controller {
|
|||||||
.bind(window, 'mouseup', function(/* e */) {
|
.bind(window, 'mouseup', function(/* e */) {
|
||||||
dom.removeClass(_this.__selector, 'drag');
|
dom.removeClass(_this.__selector, 'drag');
|
||||||
});
|
});
|
||||||
});
|
}, false, true);
|
||||||
|
|
||||||
dom.bind(this.__selector, 'touchstart', function(/* e */) {
|
dom.bind(this.__selector, 'touchstart', function(/* e */) {
|
||||||
dom
|
dom
|
||||||
.addClass(this, 'drag')
|
.addClass(this, 'drag')
|
||||||
.bind(window, 'touchend', function(/* e */) {
|
.bind(window, 'touchend', function(/* e */) {
|
||||||
dom.removeClass(_this.__selector, 'drag');
|
dom.removeClass(_this.__selector, 'drag');
|
||||||
});
|
}, false, true);
|
||||||
});
|
}, false, true);
|
||||||
|
|
||||||
const valueField = document.createElement('div');
|
const valueField = document.createElement('div');
|
||||||
|
|
||||||
@ -161,16 +161,16 @@ class ColorController extends Controller {
|
|||||||
setSV(e);
|
setSV(e);
|
||||||
dom.bind(window, 'mousemove', setSV);
|
dom.bind(window, 'mousemove', setSV);
|
||||||
dom.bind(window, 'touchmove', setSV);
|
dom.bind(window, 'touchmove', setSV);
|
||||||
dom.bind(window, 'mouseup', fieldUpSV);
|
dom.bind(window, 'mouseup', fieldUpSV, false, true);
|
||||||
dom.bind(window, 'touchend', fieldUpSV);
|
dom.bind(window, 'touchend', fieldUpSV, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function fieldDownH(e) {
|
function fieldDownH(e) {
|
||||||
setH(e);
|
setH(e);
|
||||||
dom.bind(window, 'mousemove', setH);
|
dom.bind(window, 'mousemove', setH);
|
||||||
dom.bind(window, 'touchmove', setH);
|
dom.bind(window, 'touchmove', setH);
|
||||||
dom.bind(window, 'mouseup', fieldUpH);
|
dom.bind(window, 'mouseup', fieldUpH, false, true);
|
||||||
dom.bind(window, 'touchend', fieldUpH);
|
dom.bind(window, 'touchend', fieldUpH, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function fieldUpSV() {
|
function fieldUpSV() {
|
||||||
|
@ -79,8 +79,8 @@ class NumberControllerBox extends NumberController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onMouseDown(e) {
|
function onMouseDown(e) {
|
||||||
dom.bind(window, 'mousemove', onMouseDrag);
|
dom.bind(window, 'mousemove', onMouseDrag, false, true);
|
||||||
dom.bind(window, 'mouseup', onMouseUp);
|
dom.bind(window, 'mouseup', onMouseUp, false, true);
|
||||||
prevY = e.clientY;
|
prevY = e.clientY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,9 +89,9 @@ class NumberControllerBox extends NumberController {
|
|||||||
|
|
||||||
// Makes it so manually specified values are not truncated.
|
// Makes it so manually specified values are not truncated.
|
||||||
|
|
||||||
dom.bind(this.__input, 'change', onChange);
|
dom.bind(this.__input, 'change', onChange, false, true);
|
||||||
dom.bind(this.__input, 'blur', onBlur);
|
dom.bind(this.__input, 'blur', onBlur, false, true);
|
||||||
dom.bind(this.__input, 'mousedown', onMouseDown);
|
dom.bind(this.__input, 'mousedown', onMouseDown, false, true);
|
||||||
dom.bind(this.__input, 'keydown', function(e) {
|
dom.bind(this.__input, 'keydown', function(e) {
|
||||||
// When pressing enter, you can be as precise as you want.
|
// When pressing enter, you can be as precise as you want.
|
||||||
if (e.keyCode === 13) {
|
if (e.keyCode === 13) {
|
||||||
@ -100,7 +100,7 @@ class NumberControllerBox extends NumberController {
|
|||||||
_this.__truncationSuspended = false;
|
_this.__truncationSuspended = false;
|
||||||
onFinish();
|
onFinish();
|
||||||
}
|
}
|
||||||
});
|
}, false, true);
|
||||||
|
|
||||||
this.updateDisplay();
|
this.updateDisplay();
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ class NumberControllerSlider extends NumberController {
|
|||||||
this.__foreground = document.createElement('div');
|
this.__foreground = document.createElement('div');
|
||||||
|
|
||||||
dom.bind(this.__background, 'mousedown', onMouseDown);
|
dom.bind(this.__background, 'mousedown', onMouseDown);
|
||||||
dom.bind(this.__background, 'touchstart', onTouchStart);
|
dom.bind(this.__background, 'touchstart', onTouchStart, false, true);
|
||||||
|
|
||||||
dom.addClass(this.__background, 'slider');
|
dom.addClass(this.__background, 'slider');
|
||||||
dom.addClass(this.__foreground, 'slider-fg');
|
dom.addClass(this.__foreground, 'slider-fg');
|
||||||
@ -53,7 +53,7 @@ class NumberControllerSlider extends NumberController {
|
|||||||
document.activeElement.blur();
|
document.activeElement.blur();
|
||||||
|
|
||||||
dom.bind(window, 'mousemove', onMouseDrag);
|
dom.bind(window, 'mousemove', onMouseDrag);
|
||||||
dom.bind(window, 'mouseup', onMouseUp);
|
dom.bind(window, 'mouseup', onMouseUp, false, true);
|
||||||
|
|
||||||
onMouseDrag(e);
|
onMouseDrag(e);
|
||||||
}
|
}
|
||||||
@ -80,8 +80,8 @@ class NumberControllerSlider extends NumberController {
|
|||||||
|
|
||||||
function onTouchStart(e) {
|
function onTouchStart(e) {
|
||||||
if (e.touches.length !== 1) { return; }
|
if (e.touches.length !== 1) { return; }
|
||||||
dom.bind(window, 'touchmove', onTouchMove);
|
dom.bind(window, 'touchmove', onTouchMove, false, true);
|
||||||
dom.bind(window, 'touchend', onTouchEnd);
|
dom.bind(window, 'touchend', onTouchEnd, false, true);
|
||||||
onTouchMove(e);
|
onTouchMove(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ class OptionController extends Controller {
|
|||||||
dom.bind(this.__select, 'change', function() {
|
dom.bind(this.__select, 'change', function() {
|
||||||
const desiredValue = this.options[this.selectedIndex].value;
|
const desiredValue = this.options[this.selectedIndex].value;
|
||||||
_this.setValue(desiredValue);
|
_this.setValue(desiredValue);
|
||||||
});
|
}, false, true);
|
||||||
|
|
||||||
this.domElement.appendChild(this.__select);
|
this.domElement.appendChild(this.__select);
|
||||||
}
|
}
|
||||||
|
@ -41,14 +41,14 @@ class StringController extends Controller {
|
|||||||
this.__input = document.createElement('input');
|
this.__input = document.createElement('input');
|
||||||
this.__input.setAttribute('type', 'text');
|
this.__input.setAttribute('type', 'text');
|
||||||
|
|
||||||
dom.bind(this.__input, 'keyup', onChange);
|
dom.bind(this.__input, 'keyup', onChange, false, true);
|
||||||
dom.bind(this.__input, 'change', onChange);
|
dom.bind(this.__input, 'change', onChange, false, true);
|
||||||
dom.bind(this.__input, 'blur', onBlur);
|
dom.bind(this.__input, 'blur', onBlur, false, true);
|
||||||
dom.bind(this.__input, 'keydown', function(e) {
|
dom.bind(this.__input, 'keydown', function(e) {
|
||||||
if (e.keyCode === 13) {
|
if (e.keyCode === 13) {
|
||||||
this.blur();
|
this.blur();
|
||||||
}
|
}
|
||||||
});
|
}, false, true);
|
||||||
|
|
||||||
this.updateDisplay();
|
this.updateDisplay();
|
||||||
|
|
||||||
|
@ -161,10 +161,12 @@ const dom = {
|
|||||||
* @param func
|
* @param func
|
||||||
* @param bool
|
* @param bool
|
||||||
*/
|
*/
|
||||||
bind: function(elem, event, func, newBool) {
|
bind: function(elem, event, func, newBool, newPassive) {
|
||||||
const bool = newBool || false;
|
const bool = newBool || false;
|
||||||
|
const passive = newPassive || false;
|
||||||
if (elem.addEventListener) {
|
if (elem.addEventListener) {
|
||||||
elem.addEventListener(event, func, bool);
|
const listenerArg = (common.supportsPassive()) ? { capture: bool, passive: passive } : bool;
|
||||||
|
elem.addEventListener(event, func, listenerArg);
|
||||||
} else if (elem.attachEvent) {
|
} else if (elem.attachEvent) {
|
||||||
elem.attachEvent('on' + event, func);
|
elem.attachEvent('on' + event, func);
|
||||||
}
|
}
|
||||||
|
@ -150,6 +150,22 @@ const Common = {
|
|||||||
|
|
||||||
isFunction: function(obj) {
|
isFunction: function(obj) {
|
||||||
return Object.prototype.toString.call(obj) === '[object Function]';
|
return Object.prototype.toString.call(obj) === '[object Function]';
|
||||||
|
},
|
||||||
|
|
||||||
|
supportsPassive: function() {
|
||||||
|
let supportsPassive = false;
|
||||||
|
try {
|
||||||
|
const opts = Object.defineProperty({}, 'passive', {
|
||||||
|
get: function() {
|
||||||
|
supportsPassive = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
window.addEventListener('testPassive', null, opts);
|
||||||
|
window.removeEventListener('testPassive', null, opts);
|
||||||
|
} catch (e) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
return supportsPassive;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user