vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 10 kB
Source Map (JSON)
{"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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"}