class FuturismElement extends HTMLElement {
connectedCallback () {
const options = {}
this.observer = new IntersectionObserver((entries, observer) => {
entries.forEach(
(entry => {
if (entry.isIntersecting) {
this.dispatchAppearEvent(entry, observer)
}
}).bind(this)
)
}, options)
this.observer.observe(this)
}
dispatchAppearEvent (entry, observer) {
if (window.Futurism) {
const evt = new CustomEvent('futurism:appear', {
bubbles: true,
detail: {
target: entry.target,
observer
}
})
this.dispatchEvent(evt)
} else {
setTimeout(
(() => {
this.dispatchAppearEvent(entry, observer)
}).bind(this),
1
)
}
}
}
customElements.define('futurism-element', FuturismElement)