@zag-js/solid
Version:
The solid.js wrapper for zag
33 lines (32 loc) • 693 B
JavaScript
// 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
};