-- Compiled with roblox-ts v3.0.0 local TS = _G[script] local Phantom = TS.import(script, TS.getModule(script, "@rbxts", "phantom").src) local useHookState = TS.import(script, script.Parent.Parent, "topo").useHookState --[[ * * * @param callback - The function to memoize. * @param dependencies - An array of values to compare against the previous dependencies. * @param discriminator - An optional value to additionally key by. * @param key - An automatically generated key to store the memoized value. * @returns The memoized value. * @metadata macro ]] local function useMemo(callback, dependencies, discriminator, key) local _key = key assert(_key ~= "" and _key, "Attempted to use useMemo without a key.") local storage = useHookState(key, discriminator) if not dependencies or not storage.dependencies or not Phantom.Array.equals(storage.dependencies, dependencies) then storage.value = callback() storage.dependencies = dependencies end return storage.value end return { useMemo = useMemo, }