charm/packages/vide-charm/src/init.luau
2026-04-02 06:49:54 -07:00

22 lines
530 B
Text

local Charm = require("./Charm")
local Vide = require("./Vide")
--[[
Returns a reactive source that subscribes to the current value of the given
signal or getter function.
@param getter The getter function to subscribe to.
@return The reactive source.
]]
local function useSignalState<State>(getter: () -> State): () -> State
local state = Vide.source(getter())
Vide.cleanup(Charm.listen(getter, state :: (State, State?) -> ()))
return state
end
return {
useSignalState = useSignalState,
useAtom = useSignalState,
}