Files
classquiz-ai/frontend/src/lib/dashboard/useViewportAction.js
T
2023-06-30 13:16:12 +02:00

31 lines
740 B
JavaScript

// SPDX-FileCopyrightText: 2023 Marlon W (Mawoka)
//
// SPDX-License-Identifier: MPL-2.0
// Stolen from https://svelte.dev/repl/c6a402704224403f96a3db56c2f48dfc?version=3.55.0
// skipcq: JS-0119
let intersectionObserver;
function ensureIntersectionObserver() {
if (intersectionObserver) return;
intersectionObserver = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
const eventName = entry.isIntersecting ? 'enterViewport' : 'exitViewport';
entry.target.dispatchEvent(new CustomEvent(eventName));
});
});
}
export default function viewport(element) {
ensureIntersectionObserver();
intersectionObserver.observe(element);
return {
destroy() {
intersectionObserver.unobserve(element);
}
};
}