Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 1x 1x 126x 126x 1x 1x 126x 1x 1x 256x 256x 640x 534x 534x 1335x 1x 1x 267x 267x 128x 128x 128x | // Functions to prevent ghost clicks following a touch
// Since the event lifecycle is touchstart, mousedown, touchend, mouseup
// we want to prevent mousedown and mouseup events after touch events
// All credit to @kosich
// https://gist.github.com/kosich/23188dd86633b6c2efb7
const antiGhostDelay = 2000,
pointerType = {
mouse: 0,
touch: 1,
};
let lastInteractionType, lastInteractionTime;
function handleTap(type, e) {
const now = Date.now();
if (type !== lastInteractionType) {
Iif (now - lastInteractionTime <= antiGhostDelay) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
}
lastInteractionType = type;
}
lastInteractionTime = now;
}
// Cacheing the function references
// Necessary because a new function reference is created after .bind() is called
// http://stackoverflow.com/questions/11565471/removing-event-listener-which-was-added-with-bind
const handleTapMouse = handleTap.bind(null, pointerType.mouse);
const handleTapTouch = handleTap.bind(null, pointerType.touch);
function attachEvents(element, eventList, interactionType) {
const tapHandler = interactionType ? handleTapMouse : handleTapTouch;
eventList.forEach(function (eventName) {
element.addEventListener(eventName, tapHandler, { passive: false });
});
}
function removeEvents(element, eventList, interactionType) {
const tapHandler = interactionType ? handleTapMouse : handleTapTouch;
eventList.forEach(function (eventName) {
element.removeEventListener(eventName, tapHandler);
});
}
const mouseEvents = ['mousedown', 'mouseup', 'mousemove'];
const touchEvents = ['touchstart', 'touchend'];
function disable(element) {
removeEvents(element, mouseEvents, pointerType.mouse);
removeEvents(element, touchEvents, pointerType.touch);
}
function enable(element) {
disable(element);
attachEvents(element, mouseEvents, pointerType.mouse);
attachEvents(element, touchEvents, pointerType.touch);
}
export default {
enable,
disable,
};
|