mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 08:25:19 +01:00
40 lines
No EOL
836 B
JavaScript
40 lines
No EOL
836 B
JavaScript
|
|
|
|
export default class PickControl {
|
|
constructor(bus) {
|
|
this.bus = bus;
|
|
}
|
|
}
|
|
|
|
export function initPickControl(domElement, onPick) {
|
|
let mouseState = {
|
|
startX: 0,
|
|
startY: 0
|
|
};
|
|
|
|
//fix for FireFox
|
|
function fixOffsetAPI(event) {
|
|
if (event.offsetX === undefined) {
|
|
event.offsetX = event.layerX;
|
|
event.offsetY = event.layerY;
|
|
}
|
|
}
|
|
|
|
domElement.addEventListener('mousedown',
|
|
function (e) {
|
|
fixOffsetAPI(e);
|
|
mouseState.startX = e.offsetX;
|
|
mouseState.startY = e.offsetY;
|
|
}, false);
|
|
|
|
domElement.addEventListener('mouseup',
|
|
function (e) {
|
|
fixOffsetAPI(e);
|
|
let dx = Math.abs(mouseState.startX - e.offsetX);
|
|
let dy = Math.abs(mouseState.startY - e.offsetY);
|
|
let TOL = 1;
|
|
if (dx < TOL && dy < TOL) {
|
|
onPick(e);
|
|
}
|
|
}, false);
|
|
} |