Files
svelte-carousel/src/utils/event.js
2021-08-12 22:07:01 +03:00

44 lines
1020 B
JavaScript

// resize event
export function addResizeEventListener(cb) {
window.addEventListener('resize', cb)
}
export function removeResizeEventListener(cb) {
window.removeEventListener('resize', cb)
}
export function createDispatcher(source) {
return function (event, data) {
source.dispatchEvent(
new CustomEvent(event, {
detail: data,
})
)
}
}
export function getIsTouchable() {
return (
// ('ontouchstart' in window) || // not changing value during browser view switching (mobile <-> desktop)
(navigator.maxTouchPoints > 0) ||
(navigator.msMaxTouchPoints > 0)
)
}
export function addTouchableChangeEventListener(cb) {
let isTouchable = getIsTouchable();
cb(isTouchable)
function handleResize() {
const isTouchableNext = getIsTouchable();
if (isTouchable !== isTouchableNext) {
cb(isTouchableNext)
isTouchable = isTouchableNext
}
}
addResizeEventListener(handleResize)
return () => {
removeResizeEventListener(handleResize)
}
}