UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

1 lines 10.3 kB
{"version":3,"file":"scroll.mjs","sources":["../../../../../packages/utils/private/scroll.ts"],"sourcesContent":["import { css, getElement } from './dom'\n\nconst scrollTargets = [null, document, document.body, document.scrollingElement, document.documentElement]\n\nexport function getScrollTarget(el, targetEl) {\n let target = getElement(targetEl)\n\n if (target === void 0) {\n if (el === void 0 || el === null) {\n return window\n }\n\n target = el.closest('.scroll,.scroll-y,.overflow-auto')\n }\n\n return scrollTargets.includes(target) ? window : target\n}\n\nexport function getScrollHeight(el) {\n return (el === window ? document.body : el).scrollHeight\n}\n\nexport function getScrollWidth(el) {\n return (el === window ? document.body : el).scrollWidth\n}\n\nexport function getVerticalScrollPosition(scrollTarget) {\n return scrollTarget === window ? window.pageYOffset || window.scrollY || document.body.scrollTop || 0 : scrollTarget.scrollTop\n}\n\nexport function getHorizontalScrollPosition(scrollTarget) {\n return scrollTarget === window ? window.pageXOffset || window.scrollX || document.body.scrollLeft || 0 : scrollTarget.scrollLeft\n}\n\nexport function animVerticalScrollTo(el, to, duration = 0, prevTime?) {\n prevTime = prevTime || performance.now()\n const pos = getVerticalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + ((to - pos) / Math.max(frameTime, duration)) * frameTime\n setScroll(el, newPos)\n if (newPos !== to) {\n animVerticalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nexport function animHorizontalScrollTo(el, to, duration = 0, prevTime?) {\n prevTime = prevTime || performance.now()\n const pos = getHorizontalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setHorizontalScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + ((to - pos) / Math.max(frameTime, duration)) * frameTime\n setHorizontalScroll(el, newPos)\n if (newPos !== to) {\n animHorizontalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nfunction setScroll(scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, offset)\n return\n }\n scrollTarget.scrollTop = offset\n}\n\nfunction setHorizontalScroll(scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(offset, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n return\n }\n scrollTarget.scrollLeft = offset\n}\n\nexport function setVerticalScrollPosition(scrollTarget, offset, duration) {\n if (duration) {\n animVerticalScrollTo(scrollTarget, offset, duration)\n return\n }\n setScroll(scrollTarget, offset)\n}\n\nexport function setHorizontalScrollPosition(scrollTarget, offset, duration) {\n if (duration) {\n animHorizontalScrollTo(scrollTarget, offset, duration)\n return\n }\n setHorizontalScroll(scrollTarget, offset)\n}\n\nlet size\nexport function getScrollbarWidth() {\n if (size !== undefined) {\n return size\n }\n\n const inner = document.createElement('p'),\n outer = document.createElement('div')\n\n css(inner, {\n width: '100%',\n height: '200px'\n })\n css(outer, {\n position: 'absolute',\n top: '0px',\n left: '0px',\n visibility: 'hidden',\n width: '200px',\n height: '150px',\n overflow: 'hidden'\n })\n\n outer.appendChild(inner)\n\n document.body.appendChild(outer)\n\n const w1 = inner.offsetWidth\n outer.style.overflow = 'scroll'\n let w2 = inner.offsetWidth\n\n if (w1 === w2) {\n w2 = outer.clientWidth\n }\n\n outer.remove()\n size = w1 - w2\n\n return size\n}\n\nexport function hasScrollbar(el, onY = true) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n return onY\n ? el.scrollHeight > el.clientHeight &&\n (el.classList.contains('scroll') ||\n el.classList.contains('overflow-auto') ||\n ['auto', 'scroll'].includes(window.getComputedStyle(el)['overflow-y']))\n : el.scrollWidth > el.clientWidth &&\n (el.classList.contains('scroll') ||\n el.classList.contains('overflow-auto') ||\n ['auto', 'scroll'].includes(window.getComputedStyle(el)['overflow-x']))\n}\n\nexport default {\n getScrollTarget,\n\n getScrollHeight,\n getScrollWidth,\n\n getVerticalScrollPosition,\n getHorizontalScrollPosition,\n\n animVerticalScrollTo,\n animHorizontalScrollTo,\n\n setVerticalScrollPosition,\n setHorizontalScrollPosition,\n\n getScrollbarWidth,\n hasScrollbar\n}\n"],"names":[],"mappings":"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"}