UNPKG

@zag-js/solid

Version:

The solid.js wrapper for zag

33 lines (32 loc) 693 B
// src/track.ts import { isEqual, isFunction } from "@zag-js/utils"; import { createEffect } from "solid-js"; function access(v) { if (isFunction(v)) return v(); return v; } var createTrack = (deps, effect) => { let prevDeps = []; let isFirstRun = true; createEffect(() => { 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(); } }); }; export { createTrack };