From 3c99fde45db83b531c41c350ed4d0ac2a3c40c62 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 14:45:13 +0200 Subject: Adding debian version 1.1.0-3. Signed-off-by: Daniel Baumann --- .../leaflet.js/dom/DomEvent.DoubleTap.js | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 debian/missing-sources/leaflet.js/dom/DomEvent.DoubleTap.js (limited to 'debian/missing-sources/leaflet.js/dom/DomEvent.DoubleTap.js') diff --git a/debian/missing-sources/leaflet.js/dom/DomEvent.DoubleTap.js b/debian/missing-sources/leaflet.js/dom/DomEvent.DoubleTap.js new file mode 100644 index 0000000..a5fb25d --- /dev/null +++ b/debian/missing-sources/leaflet.js/dom/DomEvent.DoubleTap.js @@ -0,0 +1,86 @@ +import * as Browser from '../core/Browser'; +import {_pointersCount} from './DomEvent.Pointer'; + +/* + * Extends the event handling code with double tap support for mobile browsers. + */ + +var _touchstart = Browser.msPointer ? 'MSPointerDown' : Browser.pointer ? 'pointerdown' : 'touchstart'; +var _touchend = Browser.msPointer ? 'MSPointerUp' : Browser.pointer ? 'pointerup' : 'touchend'; +var _pre = '_leaflet_'; + +// inspired by Zepto touch code by Thomas Fuchs +export function addDoubleTapListener(obj, handler, id) { + var last, touch, + doubleTap = false, + delay = 250; + + function onTouchStart(e) { + var count; + + if (Browser.pointer) { + if ((!Browser.edge) || e.pointerType === 'mouse') { return; } + count = _pointersCount; + } else { + count = e.touches.length; + } + + if (count > 1) { return; } + + var now = Date.now(), + delta = now - (last || now); + + touch = e.touches ? e.touches[0] : e; + doubleTap = (delta > 0 && delta <= delay); + last = now; + } + + function onTouchEnd(e) { + if (doubleTap && !touch.cancelBubble) { + if (Browser.pointer) { + if ((!Browser.edge) || e.pointerType === 'mouse') { return; } + // work around .type being readonly with MSPointer* events + var newTouch = {}, + prop, i; + + for (i in touch) { + prop = touch[i]; + newTouch[i] = prop && prop.bind ? prop.bind(touch) : prop; + } + touch = newTouch; + } + touch.type = 'dblclick'; + handler(touch); + last = null; + } + } + + obj[_pre + _touchstart + id] = onTouchStart; + obj[_pre + _touchend + id] = onTouchEnd; + obj[_pre + 'dblclick' + id] = handler; + + obj.addEventListener(_touchstart, onTouchStart, false); + obj.addEventListener(_touchend, onTouchEnd, false); + + // On some platforms (notably, chrome<55 on win10 + touchscreen + mouse), + // the browser doesn't fire touchend/pointerup events but does fire + // native dblclicks. See #4127. + // Edge 14 also fires native dblclicks, but only for pointerType mouse, see #5180. + obj.addEventListener('dblclick', handler, false); + + return this; +} + +export function removeDoubleTapListener(obj, id) { + var touchstart = obj[_pre + _touchstart + id], + touchend = obj[_pre + _touchend + id], + dblclick = obj[_pre + 'dblclick' + id]; + + obj.removeEventListener(_touchstart, touchstart, false); + obj.removeEventListener(_touchend, touchend, false); + if (!Browser.edge) { + obj.removeEventListener('dblclick', dblclick, false); + } + + return this; +} -- cgit v1.2.3