window.calendarSwipe = { register: function (element, dotnetHelper) { let startX = 0; let endX = 0; element.addEventListener('touchstart', (e) => { if (e.touches.length === 1) { startX = e.touches[0].clientX; } }); element.addEventListener('touchend', (e) => { if (e.changedTouches.length === 1) { endX = e.changedTouches[0].clientX; handle(); } }); // Per desktop: mouse drag let mouseDown = false; element.addEventListener('mousedown', (e) => { if (e.button !== 0) return; // solo left mouse mouseDown = true; startX = e.clientX; }); element.addEventListener('mouseup', (e) => { if (!mouseDown) return; mouseDown = false; endX = e.clientX; handle(); }); function handle() { let diff = endX - startX; if (Math.abs(diff) > 40) { if (diff < 0) dotnetHelper.invokeMethodAsync('OnSwipeLeft'); else dotnetHelper.invokeMethodAsync('OnSwipeRight'); } } } };