casc-cesium
Version:
Vue 3.x components for CesiumJS.
38 lines (35 loc) • 1.18 kB
JavaScript
import { ref, watch, onBeforeUnmount } from 'vue';
import { listenOpts } from '../../utils/private/event.mjs';
function useScrollTarget(props, configureScrollTarget) {
const localScrollTarget = ref(null);
let scrollFn;
function changeScrollEvent(scrollTarget, fn) {
const fnProp = `${fn !== void 0 ? "add" : "remove"}EventListener`;
const fnHandler = fn !== void 0 ? fn : scrollFn;
if (scrollTarget !== window) {
scrollTarget[fnProp]("scroll", fnHandler, listenOpts.passive);
}
window[fnProp]("scroll", fnHandler, listenOpts.passive);
scrollFn = fn;
}
function unconfigureScrollTarget() {
if (localScrollTarget.value !== null) {
changeScrollEvent(localScrollTarget.value);
localScrollTarget.value = null;
}
}
const noParentEventWatcher = watch(() => props.noParentEvent, () => {
if (localScrollTarget.value !== null) {
unconfigureScrollTarget();
configureScrollTarget();
}
});
onBeforeUnmount(noParentEventWatcher);
return {
localScrollTarget,
unconfigureScrollTarget,
changeScrollEvent
};
}
export { useScrollTarget as default };
//# sourceMappingURL=use-scroll-target.mjs.map