module Gargantext.Hooks.StateRecord.Behaviors ( setter , binder , TwoWayBinding ) where import Gargantext.Prelude import Effect (Effect) import Record.Unsafe (unsafeGet, unsafeSet) import Toestand as T type TwoWayBinding a = ( callback :: a -> Effect Unit , value :: a ) -- | ```purescript -- | formInput -- | { callback: setter stateBox "label" } -- | ``` setter :: forall box r a. T.ReadWrite box (Record r) => box -> String -> a -> Effect Unit setter stateBox field value = T.modify_ (\prev -> unsafeSet field value prev) stateBox -- | ```purescript -- | formInput -- | (binder stateBox state "label" } -- | ``` binder :: forall box r a. T.ReadWrite box (Record r) => box -> Record r -> String -> Record (TwoWayBinding a) binder stateBox state field = { callback: \value -> setter stateBox field value , value: unsafeGet field state }