packages feed

miso-examples 1.8.5.0 → 1.8.6.0

raw patch · 4 files changed

+140/−34 lines, 4 files

Files

canvas2d/Main.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE OverloadedStrings #-} module Main where@@ -19,9 +20,9 @@ main :: IO () main = do   [sun, moon, earth] <- replicateM 3 newImage-  setSrc sun "https://mdn.mozillademos.org/files/1456/Canvas_sun.png"-  setSrc moon "https://mdn.mozillademos.org/files/1443/Canvas_moon.png"-  setSrc earth "https://mdn.mozillademos.org/files/1429/Canvas_earth.png"+  setSrc sun "https://7b40c187-5088-4a99-9118-37d20a2f875e.mdnplay.dev/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations/canvas_sun.png"+  setSrc moon "https://7b40c187-5088-4a99-9118-37d20a2f875e.mdnplay.dev/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations/canvas_moon.png"+  setSrc earth "https://7b40c187-5088-4a99-9118-37d20a2f875e.mdnplay.dev/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations/canvas_earth.png"   startApp App { initialAction = GetTime                , update = updateModel (sun,moon,earth)                , ..@@ -70,6 +71,31 @@   drawImage sun 0 0 300 300 ctx   pure GetTime +#ifndef ghcjs_HOST_OS+foreign import javascript unsafe "((x) => { x.globalCompositeOperation = 'destination-over'; })"+  setGlobalCompositeOperation :: Context -> IO ()++foreign import javascript unsafe "((x, y, z, w) => { w.drawImage(x,y,z); })"+  drawImage' :: Image -> Double -> Double -> Context -> IO ()++foreign import javascript unsafe "(() => { return document.getElementById('canvas').getContext('2d'); })"+  getCtx :: IO Context++foreign import javascript unsafe "(() => { return new Image(); })"+  newImage :: IO Image++foreign import javascript unsafe "((x, y) => { x.src = y; })"+  setSrc :: Image -> MisoString -> IO ()++foreign import javascript unsafe "(() => { return new Date(); })"+  newDate :: IO JSVal++foreign import javascript unsafe "((x) => { return x.getSeconds(); })"+  getSecs :: JSVal -> IO Double++foreign import javascript unsafe "((x) => { return x.getMilliseconds(); })"+  getMillis :: JSVal -> IO Double+#else foreign import javascript unsafe "$1.globalCompositeOperation = 'destination-over';"   setGlobalCompositeOperation :: Context -> IO () @@ -93,4 +119,5 @@  foreign import javascript unsafe "$r = $1.getMilliseconds();"   getMillis :: JSVal -> IO Double+#endif 
file-reader/Main.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP                 #-} {-# LANGUAGE DeriveGeneric       #-} {-# LANGUAGE OverloadedStrings   #-} {-# LANGUAGE ScopedTypeVariables #-}@@ -12,7 +13,11 @@ import           Control.Concurrent.MVar  import GHCJS.Types+#ifndef ghcjs_HOST_OS+import GHC.JS.Foreign.Callback+#else import GHCJS.Foreign.Callback+#endif  -- | Model data Model@@ -71,6 +76,22 @@       , div_ [] [ text info ]       ] +#ifndef ghcjs_HOST_OS+foreign import javascript unsafe "(() => { return new FileReader(); })"+  newReader :: IO JSVal++foreign import javascript unsafe "((x) => { return x.files[0]; })"+  getFile :: JSVal -> IO JSVal++foreign import javascript unsafe "((x, y) => { x.onload = y; })"+  setOnLoad :: JSVal -> Callback (IO ()) -> IO ()++foreign import javascript unsafe "((x) => { return x.result; })"+  getResult :: JSVal -> IO MisoString++foreign import javascript unsafe "((x, y) => { x.readAsText(y); })"+  readText :: JSVal -> JSVal -> IO ()+#else foreign import javascript unsafe "$r = new FileReader();"   newReader :: IO JSVal @@ -85,3 +106,4 @@  foreign import javascript unsafe "$1.readAsText($2);"   readText :: JSVal -> JSVal -> IO ()+#endif
miso-examples.cabal view
@@ -1,16 +1,16 @@+cabal-version:       2.2 name:                miso-examples-version:             1.8.5.0+version:             1.8.6.0 category:            Web, Miso, Data Structures-author:              David M. Johnson <djohnson.m@gmail.com>-maintainer:          David M. Johnson <djohnson.m@gmail.com>+author:              David M. Johnson <code@dmj.io>+maintainer:          David M. Johnson <code@dmj.io> homepage:            http://github.com/dmjio/miso-copyright:           Copyright (c) 2017-2020 David M. Johnson+copyright:           Copyright (c) 2016-2025 David M. Johnson bug-reports:         https://github.com/dmjio/miso/issues build-type:          Simple-cabal-version:       1.22-synopsis:            A tasty Haskell front-end framework+synopsis:            A tasty Haskell front-end web framework description:         Examples for miso-license:             BSD3+license:             BSD-3-Clause license-file:        LICENSE  extra-source-files:@@ -31,6 +31,8 @@     Cross compile to iOS  executable simple+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !flag(jsaddle)@@ -48,8 +50,6 @@       containers,       miso,       transformers-    default-language:-      Haskell2010     if flag(ios)       cpp-options:         -DIOS@@ -62,6 +62,8 @@         jsaddle-warp  executable todo-mvc+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript) && !flag(jsaddle)@@ -82,8 +84,6 @@       containers,       miso,       transformers-    default-language:-      Haskell2010     if flag(ios)       cpp-options:         -DIOS@@ -96,6 +96,8 @@         jsaddle-warp  executable threejs+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript)@@ -113,10 +115,10 @@       ghcjs-base,       containers,       miso-    default-language:-      Haskell2010  executable file-reader+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript)@@ -134,10 +136,10 @@       containers,       ghcjs-base,       miso-    default-language:-      Haskell2010  executable xhr+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript)@@ -155,10 +157,10 @@       containers,       ghcjs-base,       miso-    default-language:-      Haskell2010  executable canvas2d+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript)@@ -175,10 +177,10 @@       base < 5,       ghcjs-base,       miso-    default-language:-      Haskell2010  executable router+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript) && !flag(jsaddle)@@ -200,8 +202,6 @@       miso,       servant,       transformers-    default-language:-      Haskell2010     if flag(ios)       cpp-options:         -DIOS@@ -214,6 +214,8 @@         jsaddle-warp  executable websocket+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript) && !flag(jsaddle)@@ -234,8 +236,6 @@       containers,       miso,       transformers-    default-language:-      Haskell2010     if flag(ios)       cpp-options:        -DIOS@@ -248,6 +248,8 @@         jsaddle-warp  executable mario+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript) && !flag(jsaddle)@@ -282,10 +284,10 @@     if !flag(ios)       build-depends:         jsaddle-warp-    default-language:-      Haskell2010  executable svg+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript)@@ -304,10 +306,10 @@       containers,       aeson,       miso-    default-language:-      Haskell2010  executable compose-update+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript)@@ -322,10 +324,10 @@     build-depends:       base < 5,       miso-    default-language:-      Haskell2010  executable mathml+  default-language:+    Haskell2010   main-is:     Main.hs   if !impl(ghcjs) && !arch(javascript)@@ -340,5 +342,3 @@     build-depends:       base < 5,       miso-    default-language:-      Haskell2010
three/Main.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP               #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards   #-} module Main where@@ -97,6 +98,61 @@ updateModel _ (SetTime m) _ =   m <# pure GetTime +#ifndef ghcjs_HOST_OS+foreign import javascript unsafe "(() => { return new Stats(); })"+  newStats :: IO JSVal++foreign import javascript unsafe "((x) => { x.begin(); })"+  statsBegin :: JSVal -> IO ()++foreign import javascript unsafe "((x) => { x.end(); })"+  statsEnd :: JSVal -> IO ()++foreign import javascript unsafe "((x) => { x.showPanel(0); })"+  showPanel :: JSVal -> IO ()++foreign import javascript unsafe "(() => { return new THREE.Scene();})"+  newScene :: IO JSVal++foreign import javascript unsafe "((x,y,z) => { return new THREE.BoxGeometry(x,y,z); })"+  newBoxGeometry :: Int -> Int -> Int -> IO JSVal++foreign import javascript unsafe "(() => { return new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); })"+  newCamera :: IO JSVal++foreign import javascript unsafe "((x,y) => { return new THREE.Mesh( x, y ); })"+  newMesh :: JSVal -> JSVal -> IO JSVal++foreign import javascript unsafe "(() => { return new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); })"+  newMeshBasicMaterial :: IO JSVal++foreign import javascript unsafe "((x) => { return new THREE.WebGLRenderer({canvas:x, antialias : true}); })"+  newRenderer :: JSVal -> IO JSVal++foreign import javascript unsafe "((x) => { x.setSize( window.innerWidth, window.innerHeight ); })"+  setSize :: JSVal -> IO ()++foreign import javascript unsafe "((x, y) => { x.add(y); })"+  addToScene :: JSVal -> JSVal -> IO ()++foreign import javascript unsafe "((x, y) => { x.position.z = y; })"+  cameraZ :: JSVal -> Int -> IO ()++foreign import javascript unsafe "((a, y) => { a.rotation.x += y; })"+  rotateX :: JSVal -> Double -> IO ()++foreign import javascript unsafe "((x, a) => { x.rotation.y += a; })"+  rotateY :: JSVal -> Double -> IO ()++foreign import javascript unsafe "((x, y, z) => { x.render(y, z); })"+  render :: JSVal -> JSVal -> JSVal -> IO ()++foreign import javascript unsafe "((x, y) => { x.position.z = y; })"+  positionCamera :: JSVal -> Double -> IO ()++foreign import javascript unsafe "((x, y) => { x.appendChild( y.domElement ); })"+  addStatsToDOM :: JSVal -> JSVal -> IO ()+#else foreign import javascript unsafe "$r = new Stats();"   newStats :: IO JSVal @@ -150,3 +206,4 @@  foreign import javascript unsafe "$1.appendChild( $2.domElement );"   addStatsToDOM :: JSVal -> JSVal -> IO ()+#endif