miso 1.8.4.0 → 1.8.5.0
raw patch · 3 files changed
+22/−8 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Miso: sink :: Sink action
Files
- README.md +2/−2
- miso.cabal +1/−1
- src/Miso.hs +19/−5
README.md view
@@ -229,7 +229,7 @@ - [Link](http://fizruk.github.io/fpconf-2017-talk/miso-aframe-demo/dist/demo.jsexe/index.html) / [Source](https://github.com/fizruk/miso-aframe) ### Pixel Card Wars- - [Link](https://www.schplaf.org/hgames/darkcraw/) / [Source](https://github.com/smelc/miso-darkcraw)+ - [Link](https://smelc3.itch.io/pixel-card-wars) / [Source](https://github.com/smelc/miso-darkcraw) ### Currency Converter - [Link](https://functora.github.io/apps/currency-converter) / [Source](https://github.com/functora/functora.github.io/tree/master/ghcjs/currency-converter)@@ -442,7 +442,7 @@ ## Pinning nixpkgs -By default `miso` uses a known-to-work, pinned version of [`nixpkgs`](https://github.com/dmjio/miso/blob/master/nixpkgs.json).+By default `miso` uses a known-to-work, pinned version of [`nixpkgs`](https://github.com/dmjio/miso/blob/master/nix/nixpkgs.json). ## Binary cache
miso.cabal view
@@ -1,5 +1,5 @@ name: miso-version: 1.8.4.0+version: 1.8.5.0 category: Web, Miso, Data Structures license: BSD3 license-file: LICENSE
src/Miso.hs view
@@ -22,6 +22,7 @@ module Miso ( miso , startApp+ , sink , module Miso.Effect , module Miso.Event , module Miso.Html@@ -41,17 +42,18 @@ import Control.Monad.IO.Class import Data.IORef import Data.List-import Data.Sequence ((|>))+import Data.Sequence ((|>))+import qualified Data.Sequence as S+import qualified JavaScript.Object.Internal as OI+import System.IO.Unsafe import System.Mem.StableName-import qualified Data.Sequence as S-import qualified JavaScript.Object.Internal as OI #ifndef ghcjs_HOST_OS-import Language.Javascript.JSaddle (eval, waitForAnimationFrame)+import Language.Javascript.JSaddle (eval, waitForAnimationFrame) #ifdef IOS import Miso.JSBits #else-import GHCJS.Types (JSString)+import GHCJS.Types (JSString) import Data.FileEmbed #endif #else@@ -99,6 +101,8 @@ let writeEvent a = void . liftIO . forkIO $ do atomicModifyIORef' actionsRef $ \as -> (as |> a, ()) notify+ -- init global sink+ liftIO (writeIORef sinkRef writeEvent) -- init Subs forM_ subs $ \sub -> sub writeEvent@@ -151,6 +155,16 @@ let initialVTree = VTree (OI.Object iv) -- Create virtual dom, perform initial diff liftIO (newIORef initialVTree)++sinkRef :: IORef (Sink action)+{-# NOINLINE sinkRef #-}+sinkRef = unsafePerformIO $ newIORef (\_ -> pure ())++-- | Global sink exposed as a backdoor+-- Meant for usage in long running IO actions, or custom callbacks+-- Good for integrating with third-party components.+sink :: Sink action+sink = unsafePerformIO (readIORef sinkRef) -- | Runs a miso application startApp :: Eq model => App model action -> JSM ()