This commit is contained in:
Aaron Smith 2023-09-13 13:11:38 +01:00
parent d353f71619
commit 0d542c66a6
10 changed files with 76 additions and 105 deletions

View file

@ -6,26 +6,17 @@ local create_node = graph.create_node
local set_owner = graph.set_owner
local track = graph.track
local get_scope = graph.get_scope
local open_scope = graph.open_scope
local close_scope = graph.close_scope
local evaluate_node = graph.evaluate_node
local function derive<T>(fn: () -> T): () -> T
local owner = get_scope()
if not owner then throw("cannot derive in non-reactive scope") end
assert(owner)
local node = create_node((false :: any) :: T)
node.effect = function()
return fn()
end
local node = create_node(false :: any, fn)
set_owner(node, owner)
open_scope(node)
node.cache = fn()
close_scope()
evaluate_node(node)
return function()
track(node)