svelte-typewriter
Version:
A simple and reusable typewriter effect for your Svelte applications
19 lines (16 loc) • 529 B
JavaScript
/** @type {import(types').OnAnimationEnd} */
const onAnimationEnd = (element, callback) => {
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
const elementAttributeChanged = mutation.type === 'attributes'
const elementFinishedTyping = mutation.target.classList.contains('finished-typing')
if (elementAttributeChanged && elementFinishedTyping) callback()
})
})
observer.observe(element, {
attributes: true,
childList: true,
subtree: true
})
}
export { onAnimationEnd }