UNPKG

@zag-js/svelte

Version:

The svelte wrapper for zag

29 lines (28 loc) 732 B
import { isEqual } from "@zag-js/utils"; const access = (value) => { if (typeof value === "function") return value(); return value; }; export const track = (deps, effect) => { let prevDeps = []; let isFirstRun = true; $effect(() => { if (isFirstRun) { prevDeps = deps.map((d) => access(d)); isFirstRun = false; return; } let changed = false; for (let i = 0; i < deps.length; i++) { if (!isEqual(prevDeps[i], access(deps[i]))) { changed = true; break; } } if (changed) { prevDeps = deps.map((d) => access(d)); effect(); } }); };