charm/src/effect.luau
2024-03-29 11:47:46 -07:00

22 lines
406 B
Lua

local capture = require(script.Parent.capture)
local store = require(script.Parent.store)
local function effect(molecule: () -> nil): () -> ()
local atoms = capture(molecule)
local function listener()
molecule()
end
for atom in atoms do
store.listeners[atom][listener] = true
end
return function()
for atom in atoms do
store.listeners[atom][listener] = nil
end
end
end
return effect