packages feed

miso 1.8.0.0 → 1.8.1.0

raw patch · 6 files changed

+45/−133 lines, 6 filesdep −jsaddle-warpdep −jsaddle-wkwebviewPVP ok

version bump matches the API change (PVP)

Dependencies removed: jsaddle-warp, jsaddle-wkwebview

API changes (from Hackage documentation)

Files

README.md view
@@ -130,9 +130,9 @@ Write a `default.nix` (this will fetch a recent version of `miso`). `miso` will provide you with a working `nixpkgs` named `pkgs`. `callCabal2nix` will automatically produce a nix expression that builds your cabal file.  ```nix-with (import (builtins.fetchTarball {-  url = "https://github.com/dmjio/miso/archive/ea25964565074e73d4052b56b60b6e101fa08bc5.tar.gz";-  sha256 = "1yb9yvc0ln4yn1jk2k5kwwa1s32310abawz40yd8cqqkm1z7w6wg";+with (import (builtins.fetchGit {+  url = "https://github.com/dmjio/miso";+  ref = "refs/tags/1.8"; }) {}); pkgs.haskell.packages.ghcjs.callCabal2nix "app" ./. {} ```
− exe/Main.hs
@@ -1,66 +0,0 @@--- | Haskell language pragma-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE CPP #-}---- | Haskell module declaration-module Main where---- | Miso framework import-import Miso-import Miso.String--import Control.Monad.IO.Class--#ifdef IOS-import Language.Javascript.JSaddle.WKWebView as JSaddle--runApp :: JSM () -> IO ()-runApp = JSaddle.run-#else-import Language.Javascript.JSaddle.Warp as JSaddle--runApp :: JSM () -> IO ()-runApp = JSaddle.run 8080-#endif---- | Type synonym for an application model-type Model = Int---- | Sum type for application events-data Action-  = AddOne-  | SubtractOne-  | NoOp-  | SayHelloWorld-  deriving (Show, Eq)---- | Entry point for a miso application-main :: IO ()-main = runApp $ miso $ \_ -> App {..}-  where-    initialAction = SayHelloWorld -- initial action to be executed on application load-    model  = 0                    -- initial model-    update = updateModel          -- update function-    view   = viewModel            -- view function-    events = defaultEvents        -- default delegated events-    subs   = []                   -- empty subscription list-    mountPoint = Nothing          -- mount point for application (Nothing defaults to 'body')-    logLevel = Off                -- Used to copy DOM into VDOM, applies only to `miso` function---- | Updates model, optionally introduces side effects-updateModel :: Action -> Model -> Effect Action Model-updateModel AddOne m = noEff (m + 1)-updateModel SubtractOne m = noEff (m - 1)-updateModel NoOp m = noEff m-updateModel SayHelloWorld m = m <# do-  liftIO (putStrLn "Hello World") >> pure NoOp---- | Constructs a virtual DOM from a model-viewModel :: Model -> View Action-viewModel x = div_ [] [-   button_ [ onClick AddOne ] [ text "+" ]- , text (ms x)- , button_ [ onClick SubtractOne ] [ text "-" ]- , rawHtml "<div><p>hey expandable!</div></p>"- ]
jsbits/delegate.js view
@@ -106,7 +106,7 @@    /* If obj is a list-like object */   var newObj;-  if (obj instanceof Array) {+  if (obj instanceof Array || ('length' in obj && obj['localName'] !== 'select')) {     newObj = [];     for (var i = 0; i < obj.length; i++)       newObj.push(window['objectToJSON']([], obj[i]));@@ -115,15 +115,26 @@    /* If obj is a non-list-like object */   newObj = {};-  var isInput = obj['localName'] === 'input';-  for (var i in obj){+  for (var i in getAllPropertyNames(obj)){     /* bug in safari, throws TypeError if the following fields are referenced on a checkbox */     /* https://stackoverflow.com/a/25569117/453261 */     /* https://html.spec.whatwg.org/multipage/input.html#do-not-apply */-    if (isInput && (i === 'selectionDirection' || i === 'selectionStart' || i === 'selectionEnd'))+    if ((obj['localName'] === 'input') && (i === 'selectionDirection' || i === 'selectionStart' || i === 'selectionEnd'))       continue;     if (typeof obj[i] == 'string' || typeof obj[i] == 'number' || typeof obj[i] == 'boolean')       newObj[i] = obj[i];   }   return newObj;+};++/* get static and dynamic properties */+function getAllPropertyNames(obj) {+    var props = {}, i = 0;+    do {+	var names = Object.getOwnPropertyNames(obj);+	for (i = 0; i < names.length; i++) {+	  props [names[i]] = null;+	}+    } while (obj = Object.getPrototypeOf(obj));+  return props; };
miso.cabal view
@@ -1,5 +1,5 @@ name:                miso-version:             1.8.0.0+version:             1.8.1.0 category:            Web, Miso, Data Structures license:             BSD3 license-file:        LICENSE@@ -38,37 +38,6 @@   description:     Cross compile to iOS -executable simple-  main-is:-    Main.hs-  if !impl(ghcjs) && !flag(jsaddle)-    buildable: False-  else-    ghcjs-options:-      -dedupe-    cpp-options:-      -DGHCJS_BROWSER-    hs-source-dirs:-      exe-    build-depends:-      aeson,-      base < 5,-      containers,-      miso,-      transformers-    default-language:-      Haskell2010-    if flag(ios)-      cpp-options:-        -DIOS-      ghc-options:-        -threaded-      build-depends:-        jsaddle-wkwebview-    else-      build-depends:-        jsaddle-warp- executable tests   main-is:     Main.hs@@ -140,18 +109,26 @@     Miso.Svg.Attribute     Miso.Svg.Element     Miso.Svg.Event-    Miso.TypeLevel     Miso.Types     Miso.Mathml     Miso.Mathml.Element     Miso.String     Miso.WebSocket+  if !impl(ghcjs)+    exposed-modules:+      Miso.TypeLevel   other-modules:     Miso.Concurrent   ghc-options:     -Wall   hs-source-dirs:     src+  if impl(ghcjs)+    hs-source-dirs:+      ghcjs-src+  else+    hs-source-dirs:+      ghc-src   build-depends:     aeson,     base < 5,@@ -164,39 +141,25 @@     lucid,     network-uri,     servant,-    servant-lucid,     tagsoup,     text,     transformers-  if impl(ghcjs) || flag (jsaddle)-    if impl(ghcjs)-      build-depends:-        ghcjs-base-    if flag(jsaddle)-      if flag (ios)-        cpp-options:-          -DIOS-    else-      js-sources:-        jsbits/diff.js-        jsbits/delegate.js-        jsbits/isomorphic.js-        jsbits/util.js+  if impl(ghcjs)     build-depends:-      containers,-      scientific,-      unordered-containers,-      transformers,-      vector+      ghcjs-base   else     build-depends:-      vector+      servant-lucid+  if impl(ghcjs) || flag (jsaddle)+    if flag (ios)+      cpp-options:+        -DIOS   if impl(ghcjs)-    hs-source-dirs:-      ghcjs-src-  else-    hs-source-dirs:-      ghc-src+    js-sources:+      jsbits/diff.js+      jsbits/delegate.js+      jsbits/isomorphic.js+      jsbits/util.js  source-repository head    type: git
src/Miso.hs view
@@ -26,7 +26,9 @@   , module Miso.Event   , module Miso.Html   , module Miso.Subscription+#ifndef __GHCJS__   , module Miso.TypeLevel+#endif   , module Miso.Types   , module Miso.Router   , module Miso.Util@@ -65,7 +67,9 @@ import           Miso.Html import           Miso.Router import           Miso.Subscription+#ifndef __GHCJS__ import           Miso.TypeLevel+#endif import           Miso.Types import           Miso.Util import           Miso.WebSocket
src/Miso/Html/Types.hs view
@@ -40,7 +40,7 @@     , onBeforeDestroyed     ) where -import           Control.Monad              (forM_, (<=<), guard)+import           Control.Monad              (forM_, (<=<)) import           Control.Monad.IO.Class     (liftIO) import           Data.Aeson                 (ToJSON, Value, toJSON) import qualified Data.Aeson                 as A