UNPKG

@dvcol/common-utils

Version:

Typescript library for common utility functions and constants

46 lines (42 loc) 1.74 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// lib/common/utils/mobile.utils.ts var useMobileScrollLock = (target = document.body, container = window) => { return { lock: () => { const locked = Number(target.dataset.locked) || 0; target.dataset.locked = (locked + 1).toString(); if (locked) return false; target.dataset.offsetX = window.pageXOffset.toString(); target.dataset.offsetY = window.pageYOffset.toString(); target.style.setProperty("--neo-dialog-scroll-offset-x", `-${window.pageXOffset}px`); target.style.setProperty("--neo-dialog-scroll-offset-y", `-${window.pageYOffset}px`); target.classList.add("neo-scroll-lock"); return true; }, unlock: () => { if (!target.dataset.locked) return false; if (Number(target.dataset.locked) > 1) console.warn("NeoDialog: Multiple locks are active, scroll lock may not work as expected"); target.classList.remove("neo-scroll-lock"); target.style.removeProperty("--neo-dialog-scroll-offset-x"); target.style.removeProperty("--neo-dialog-scroll-offset-y"); const { offsetX, offsetY } = target.dataset; container.scrollTo(Number(offsetX), Number(offsetY)); delete target.dataset.locked; delete target.dataset.offsetX; delete target.dataset.offsetY; return true; }, get target() { return target; }, get count() { return Number(target.dataset.locked) || 0; }, get locked() { return !!Number(target.dataset.locked); }, get offset() { return { x: Number(target.dataset.offsetX), y: Number(target.dataset.offsetY) }; } }; }; exports.useMobileScrollLock = useMobileScrollLock;