Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
48 lines
1.6 KiB
/* |
|
* https://github.com/morethanwords/tweb |
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE |
|
*/ |
|
|
|
import type ListenerSetter from "../listenerSetter"; |
|
import { IS_TOUCH_SUPPORTED } from "../../environment/touchSupport"; |
|
|
|
export default function handleScrollSideEvent(elem: HTMLElement, side: 'top' | 'bottom', callback: () => void, listenerSetter: ListenerSetter) { |
|
if(IS_TOUCH_SUPPORTED) { |
|
let lastY: number; |
|
const options = {passive: true}; |
|
listenerSetter.add(elem)('touchstart', (e) => { |
|
if(e.touches.length > 1) { |
|
onTouchEnd(); |
|
return; |
|
} |
|
|
|
lastY = e.touches[0].clientY; |
|
|
|
listenerSetter.add(elem)('touchmove', onTouchMove, options); |
|
listenerSetter.add(elem)('touchend', onTouchEnd, options); |
|
}, options); |
|
|
|
const onTouchMove = (e: TouchEvent) => { |
|
const clientY = e.touches[0].clientY; |
|
|
|
const isDown = clientY < lastY; |
|
if(side === 'bottom' && isDown) callback(); |
|
else if(side === 'top' && !isDown) callback(); |
|
lastY = clientY; |
|
//alert('isDown: ' + !!isDown); |
|
}; |
|
|
|
const onTouchEnd = () => { |
|
listenerSetter.removeManual(elem, 'touchmove', onTouchMove, options); |
|
listenerSetter.removeManual(elem, 'touchend', onTouchEnd, options); |
|
}; |
|
} else { |
|
listenerSetter.add(elem)('wheel', (e) => { |
|
const isDown = e.deltaY > 0; |
|
//this.log('wheel', e, isDown); |
|
if(side === 'bottom' && isDown) callback(); |
|
else if(side === 'top' && !isDown) callback(); |
|
}, {passive: true}); |
|
} |
|
}
|
|
|