import RevealAttributes from "./RevealAttributes.js"; const reveal = new IntersectionObserver((entries) => { if(document.body.hasAttribute("for-preview")) { return; } const now = Date.now(); for (const iterator of entries) { const { target } = iterator; if(iterator.isIntersecting) { RevealAttributes.add(target as HTMLElement, now); } else { RevealAttributes.remove(target as HTMLElement, now); } } }); const revealAdded = Symbol("revealAdded"); export default class RevealObserver { static observe(element: HTMLElement) { if (element[revealAdded]) { return; } // carousel must observer it's own children... if (element.matches("carousel-slider *")) { return; } element[revealAdded] = true; reveal.observe(element); } static unobserve(element: HTMLElement) { delete element[revealAdded]; reveal.unobserve(element); } }