on develop help sign in
Merge branch 'develop' of github.com:ryantrinkle/reflex-dom into develop
commit5255c748305e37e58e9215208d1d4d65651a3af5 authorRyan Trinkle <ryan.trinkle@gmail.com> dateWed 29 Apr 2015, 16:51 (11 years ago) parente6346437a51f89
7 files changed+41−26
reflex-dom.cabal+21−21 src-ghcjs/Reflex/Dom/Xhr/Foreign.hs+1 src/Reflex/Dom/Internal.hs+1 src/Reflex/Dom/Time.hs+5 src/Reflex/Dom/Widget/Basic.hs+10−3 src/Reflex/Dom/Widget/Input.hs+1−1 src/Reflex/Dom/Xhr.hs+2−1
reflex-dom.cabal+21−21
@@ -14,24 +14,24 @@ Cabal-version: >=1.2
1414library
1515 hs-source-dirs: src
1616 build-depends:
17− base >=4.8.0.0 && <4.9,
18− reflex >=0.1.0 && <0.2,
19− dependent-map >=0.1.1.2 && <0.2,
20− dependent-sum >=0.2.1.0 && <0.3,
21− mtl >=2.2.1 && <2.3,
22− transformers >=0.4.2.0 && <0.4.3,
23− containers >=0.5.6.2 && <0.6,
24− these >=0.4.2 && <0.5,
25− lens >=4.7 && <4.10,
26− ghcjs-dom >=0.1.1.3 && <0.2,
27− safe >=0.3.8 && <0.4,
28− text >=1.2 && <1.3,
29− bytestring >=0.10.6.0 && <0.11,
30− data-default >=0.5.3 && <0.6,
31− semigroups >=0.16.1 && <0.17,
17+ base >= 4.7 && < 4.9,
18+ reflex == 0.2.*,
19+ dependent-sum == 0.2.*,
20+ dependent-map == 0.1.*,
21+ semigroups == 0.16.*,
22+ mtl >= 2.1 && < 2.3,
23+ containers == 0.5.*,
24+ these == 0.4.*,
3225 ref-tf == 0.4.*,
33− aeson >=0.8.0.2 && <0.9,
34− time >=1.5.0.1 && <1.6
26+ transformers == 0.4.*,
27+ lens >= 4.7 && < 4.10,
28+ ghcjs-dom >= 0.1.1.3 && < 0.2,
29+ safe == 0.3.*,
30+ text == 1.2.*,
31+ bytestring == 0.10.*,
32+ data-default == 0.5.*,
33+ aeson == 0.8.*,
34+ time == 1.5.*
3535
3636 if impl(ghcjs)
3737 hs-source-dirs: src-ghcjs
@@ -41,10 +41,10 @@ library
4141 else
4242 hs-source-dirs: src-ghc
4343 build-depends:
44− glib >=0.13.0.0 && <0.14,
45− gtk3 >=0.13.0.0 && <0.14,
46− webkitgtk3 >=0.13.0.0 && <0.14,
47− webkitgtk3-javascriptcore >=0.13.0.4 && <0.14
44+ glib == 0.13.*,
45+ gtk3 == 0.13.*,
46+ webkitgtk3 == 0.13.*,
47+ webkitgtk3-javascriptcore == 0.13.*
4848
4949 exposed-modules:
5050 Reflex.Dom
src-ghcjs/Reflex/Dom/Xhr/Foreign.hs+1
@@ -7,6 +7,7 @@ import GHCJS.Foreign
77import GHCJS.Marshal
88import qualified Data.Text as T
99import Data.Text (Text)
10+import Data.Word
1011import GHCJS.DOM.Types hiding (Text)
1112import Control.Applicative ((<$>))
1213import GHCJS.DOM.EventM
src/Reflex/Dom/Internal.hs+1
@@ -20,6 +20,7 @@ import Control.Monad.Reader hiding (mapM, mapM_, forM, forM_, sequence, sequence
2020import Control.Monad.Ref
2121import Control.Monad.State.Strict hiding (mapM, mapM_, forM, forM_, sequence, sequence_, get)
2222import Control.Concurrent
23+import Control.Applicative
2324import Data.ByteString (ByteString)
2425import Data.Dependent.Sum (DSum (..))
2526import Data.Foldable
src/Reflex/Dom/Time.hs+5
@@ -43,3 +43,8 @@ tickLossyFrom dt t0 e = performEventAsync $ fmap callAtNextInterval e
4343 (n, alreadyElapsed) = offset `divMod'` dt
4444 threadDelay $ ceiling $ (dt - alreadyElapsed) * 1000000
4545 cb $ TickInfo t n alreadyElapsed
46+
47+delay :: MonadWidget t m => NominalDiffTime -> Event t a -> m (Event t a)
48+delay dt e = performEventAsync $ ffor e $ \a cb -> liftIO $ void $ forkIO $ do
49+ threadDelay $ ceiling $ dt * 1000000
50+ cb a
src/Reflex/Dom/Widget/Basic.hs+10−3
@@ -4,6 +4,7 @@ module Reflex.Dom.Widget.Basic where
44
55import Reflex.Dom.Class
66
7+import Prelude hiding (mapM, mapM_, sequence, sequence_)
78import Reflex
89import Reflex.Host.Class
910import Data.Functor.Misc
@@ -12,9 +13,11 @@ import qualified Data.Map as Map
1213import Data.Set (Set)
1314import qualified Data.Set as Set
1415import Data.Dependent.Sum (DSum (..))
16+import Data.Foldable
17+import Data.Traversable
1518import Control.Monad.Trans
16−import Control.Monad.Reader
17−import Control.Monad.State hiding (state)
19+import Control.Monad.Reader hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
20+import Control.Monad.State hiding (state, mapM, mapM_, forM, forM_, sequence, sequence_)
1821import GHCJS.DOM.Node
1922import GHCJS.DOM.UIEvent
2023import GHCJS.DOM.EventM (event, EventM)
@@ -490,11 +493,15 @@ button s = do
490493
491494newtype Workflow t m a = Workflow { unWorkflow :: m (a, Event t (Workflow t m a)) }
492495
496+workflow :: forall t m a. MonadWidget t m => Workflow t m a -> m (Dynamic t a)
497+workflow w0 = do
498+ rec eResult <- widgetHold (unWorkflow w0) $ fmap unWorkflow $ switch $ fmap snd $ current eResult
499+ mapDyn fst eResult
500+
493501workflowView :: forall t m a. MonadWidget t m => Workflow t m a -> m (Event t a)
494502workflowView w0 = do
495503 rec eResult <- dyn =<< mapDyn unWorkflow =<< holdDyn w0 eReplace
496504 eReplace <- liftM switch $ hold never $ fmap snd eResult
497− eResult `seq` eReplace `seq` return ()
498505 return $ fmap fst eResult
499506
500507divClass :: forall t m a. MonadWidget t m => String -> m a -> m a
src/Reflex/Dom/Widget/Input.hs+1−1
@@ -105,7 +105,7 @@ textArea (TextAreaConfig initial eSet attrs) = do
105105 performEvent_ $ fmap (liftIO . htmlTextAreaElementSetValue e) eSet
106106 f <- holdDyn False eChangeFocus
107107 ev <- wrapDomEvent e elementOninput $ liftIO $ htmlTextAreaElementGetValue e
108− v <- holdDyn "" $ leftmost [eSet, ev]
108+ v <- holdDyn initial $ leftmost [eSet, ev]
109109 eKeypress <- wrapDomEvent e elementOnkeypress getKeyEvent
110110 return $ TextArea v e f eKeypress
111111
src/Reflex/Dom/Xhr.hs+2−1
@@ -17,7 +17,7 @@ where
1717
1818import Control.Concurrent
1919import Control.Lens
20−import Control.Monad
20+import Control.Monad hiding (forM)
2121import Control.Monad.IO.Class
2222import Data.Aeson
2323import qualified Data.ByteString.Lazy as BL
@@ -27,6 +27,7 @@ import qualified Data.Map as Map
2727import Data.Maybe
2828import Data.Text (Text)
2929import Data.Text.Encoding
30+import Data.Traversable
3031import Reflex
3132import Reflex.Dom.Class
3233import Reflex.Dom.Xhr.Foreign