Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1x 8x 8x 3x 3x 3x 1x 2x | import { memoize } from 'lodash'; import { uuids } from './uuids'; export const create = memoize((options = {}) => { const id = uuids()[0]; return { id, observer: new IntersectionObserver((entries) => { entries.forEach((entry) => { entry.target.dispatchEvent( new CustomEvent(`IntersectionUpdate`, { detail: { entry, observer: id } }), ); if (entry.isIntersecting) { entry.target.dispatchEvent( new CustomEvent(`IntersectionAppear`, { detail: { observer: id } }), ); } else { entry.target.dispatchEvent( new CustomEvent(`IntersectionDisappear`, { detail: { observer: id } }), ); } }); }, options), }; }); |