mirror of
https://github.com/littensy/charm.git
synced 2026-10-21 03:36:11 +00:00
22 lines
406 B
Lua
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
|