-- 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 local function useInstance(creator, dependencies, discriminator, key) local _key = key assert(_key ~= "" and _key, "Attempted to use useInstance without a key.") local storage = useHookState(key, discriminator, function(storage) if storage.instance then storage.instance:Destroy() end return true end) if not storage.instance or not dependencies or not storage.dependencies or not Phantom.Array.equals(storage.dependencies, dependencies) then storage.instance = creator() storage.dependencies = dependencies end return storage.instance end return { useInstance = useInstance, }