UNPKG

svelte-ux

Version:

- Increment version in `package.json` and commit as `Version bump to x.y.z` - `npm run publish`

48 lines (47 loc) 1.54 kB
export function resize(node) { let observer = new ResizeObserver((entries, observer) => { entries.forEach((entry) => { node.dispatchEvent(new CustomEvent('resize', { detail: entry })); }); }); observer.observe(node); return { destroy() { observer.disconnect(); }, }; } export function intersection(node, options = undefined) { // TODO: Support definiinting `options.root = node.parentNode` easily let observer = new IntersectionObserver((entries, observer) => { const entry = entries[0]; node.dispatchEvent(new CustomEvent('intersecting', { detail: entry })); // if (entry.intersectionRatio > 0) { // node.dispatchEvent(new CustomEvent('visible', { detail: entry })); // } else { // node.dispatchEvent(new CustomEvent('invisible', { detail: entry })); // } }, options); observer.observe(node); return { destroy() { observer.disconnect(); }, }; } export function mutate(node, options) { let observer = null; function update(options) { destroy(); observer = new MutationObserver((mutations) => { node.dispatchEvent(new CustomEvent('mutate', { detail: mutations })); }); observer.observe(node, options); } function destroy() { observer === null || observer === void 0 ? void 0 : observer.disconnect(); observer = null; } update(options); return { update, destroy }; }