Module
Impulse.DOM.Util  
- Package
 - purescript-impulse
 - Repository
 - mitchdzugan/purescript-impulse
 
#getEnv Source
getEnv :: forall l r2 r1 a c. IsSymbol l => Cons l a r1 r2 => SProxy l -> DOM (Record r2) c agetEnv p
pulls the value at p out of the current environment
  p_test = (SProxy :: SProxy "test")
  displayFromEnv :: forall e c. DOM { test :: String | e } c Unit
  displayFromEnv = do
    test <- getEnv p_test    --  <-- Usage here
    div_ anil $ text test
  test :: forall e c. DOM e c Unit
  test = do
    upsertEnv p_test "Hello World!" do
      displayFromEnv
results in
  <div>Hello World!</div>
#upsertEnv Source
upsertEnv :: forall c rOSymless rO rSym rI sym a res. IsSymbol sym => Lacks sym () => Cons sym a () rSym => Cons sym a rOSymless rO => Union rSym rI rO => SProxy sym -> a -> DOM (Record rO) c res -> DOM (Record rI) c resupsertEnv p value inner
runs inner with value added to the environment at p
  p_test = (SProxy :: SProxy "test")
  displayFromEnv :: forall e c. DOM { test :: String | e } c Unit
  displayFromEnv = do
    test <- getEnv p_test
    div_ anil $ text test
  test :: forall e c. DOM e c Unit
  test = do
    upsertEnv p_test "Hello World!" do     --  <-- Usage here
      displayFromEnv
results in
  <div>Hello World!</div>
#e_collectAndReduce Source
e_collectAndReduce :: forall cOSymless cO cSym cI eOSymless eO eSym eI sym b a res. IsSymbol sym => Lacks sym () => Cons sym (Collector a) () cSym => Cons sym (Collector a) cOSymless cO => Union cSym cI cO => Cons sym (Signal b) () eSym => Cons sym (Signal b) eOSymless eO => Union eSym eI eO => SProxy sym -> (b -> a -> b) -> b -> DOM (Record eO) (Record cO) res -> DOM (Record eI) (Record cI) rese_collectAndReduce p reducer init inner
Creates a signal from the supplied reducer and initial value.
inner is then run with the created signal injected into the
environment at p. The event used to drive the reducer is the
combination of all events e_emited to p while running inner.
   p_score = (SProxy :: SProxy "score")
   scoreButton ::
     forall e c.
     Int ->
     String ->
     DOM e { score :: Collector Int | c } Unit
   scoreButton change message = do
     d_button <- button anil $ text message
     e_emit p_score $ onClick d_button <#> const change
   displayScore ::
     forall e c.
     DOM { score :: Signal Int | e } c Unit
   displayScore = do
     s_score <- getEnv p_score
     s_bindDOM_ s_score \score -> do
       span_ anil $ text $ "Score: " <> show score
   test :: forall e c. DOM e c Unit
   test = do
     e_collectAndReduce p_score (\agg change -> agg + change) 0 do
       scoreButton (-1) "Decrement Score"
       displayScore
       scoreButton (1) "Increment Score"
results in
  <button>Decrement Score</button>
  <span>Score: 0</span>
  <button>Increment Score</button>
with the score text changing as expected
#d_clone Source
d_clone :: forall a c e. ImpulseStash a -> DOM e c (ImpulseStash a)#s_extract Source
s_extract :: forall a c e. Signal (ImpulseStash a) -> DOM e c (ImpulseStash (Signal a))#s_extract_ Source
s_extract_ :: forall a c e. Signal (ImpulseStash a) -> DOM e c (ImpulseStash Unit)