123456789101112131415161718192021 |
- export default function (Alpine) {
- Alpine.directive('intersect', (el, { expression, modifiers }, { evaluateLater, cleanup }) => {
- let evaluate = evaluateLater(expression)
- let observer = new IntersectionObserver(entries => {
- entries.forEach(entry => {
- if (entry.intersectionRatio === 0) return
- evaluate()
- modifiers.includes('once') && observer.disconnect()
- })
- })
- observer.observe(el)
- cleanup(() => {
- observer.disconnect()
- })
- })
- }
|