UNPKG

@zag-js/core

Version:

A minimal implementation of xstate fsm for UI machines

19 lines (18 loc) 467 B
// src/memo.ts import { isEqual } from "@zag-js/utils"; function memo(getDeps, fn, opts) { let deps = []; let result; return (depArgs) => { const newDeps = getDeps(depArgs); const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => !isEqual(deps[index], dep)); if (!depsChanged) return result; deps = newDeps; result = fn(newDeps, depArgs); opts?.onChange?.(result); return result; }; } export { memo };