Skip to content

Instantly share code, notes, and snippets.

View ali-abrar's full-sized avatar
⛰️

Ali Abrar ali-abrar

⛰️
View GitHub Profile
@ali-abrar
ali-abrar / gist:a389e614e1e0ec3785f3
Created July 27, 2015 22:37
Reflex.Dom Counter Example
import Reflex.Dom
main :: IO ()
main = mainWidget $ el "div" $ display =<< count =<< button "Click Me!"
-- Cf: https://github.com/ghcjs/ghcjs-examples/blob/master/weblog/counter/counter.hs
@ali-abrar
ali-abrar / so30885883.hs
Created July 28, 2015 19:01
SO 30885883 - Why does this Reflex code result in Dynamics firing indefinitely with the same value?
-- http://stackoverflow.com/questions/30885883/why-does-this-reflex-code-result-in-dynamics-firing-indefinitely-with-the-same-v
{-# LANGUAGE RecursiveDo, ScopedTypeVariables #-}
import Reflex
import Reflex.Dom
import qualified Data.Map as Map
dynButton
:: MonadWidget t m
@ali-abrar
ali-abrar / selfRemovingElements.hs
Last active October 21, 2015 21:04
Reflex.Dom List with Removable Elements
{-# LANGUAGE ScopedTypeVariables, RecursiveDo #-}
import Control.Monad
import Reflex.Dom
import qualified Data.Map as Map
import Data.Map (Map)
main :: IO ()
main = mainWidget test
test :: MonadWidget t m => m ()
{-# LANGUAGE RecursiveDo #-}
import Reflex
import Reflex.Dom
import qualified Data.Map as Map
import Safe (readMay)
import Control.Applicative ((<*>), (<$>))
main = mainWidget $ el "div" $ do
nx <- numberInput
d <- dropdown "*" (constDyn ops) def
@ali-abrar
ali-abrar / recText.hs
Created November 25, 2015 19:01
Show results of textInput before textInput in DOM
{-# LANGUAGE RecursiveDo #-}
import Reflex.Dom
main :: IO ()
main = mainWidget $ el "div" $ do
rec _ <- dynText $ _textInput_value t
t <- textInput def
return ()
@ali-abrar
ali-abrar / localStorageTest.hs
Created March 1, 2016 01:43
LocalStorage in GHCJS
import Reflex.Dom
import GHCJS.DOM.Window (getLocalStorage)
import GHCJS.DOM.Storage (setItem, getItem)
import Control.Monad.IO.Class
import Data.JSString (unpack)
main :: IO ()
main = mainWidget localStorageTest
localStorageTest :: MonadWidget t m => m ()
@ali-abrar
ali-abrar / WiktionaryLookup.hs
Last active September 27, 2016 00:55
Text selection and iFrame with Reflex.Dom
{-# LANGUAGE JavaScriptFFI #-}
import Reflex.Dom
import qualified Data.Text as T
import Data.Monoid
import GHCJS.Types
import GHCJS.Foreign
import Control.Monad.IO.Class
import Control.Monad
import Data.Maybe
@ali-abrar
ali-abrar / somesquares.hs
Created January 30, 2016 19:36
Simple Canvas Example
{-# LANGUAGE ScopedTypeVariables #-}
import Reflex.Dom
import GHCJS.DOM.CanvasRenderingContext2D (putImageData, setFillStyle, fillRect)
import GHCJS.DOM.HTMLCanvasElement (getContext)
import GHCJS.DOM.ImageData (newImageData')
import Control.Monad.IO.Class (liftIO)
import GHCJS.DOM.Types (CanvasStyle(..), CanvasRenderingContext2D(..), toJSString, castToHTMLCanvasElement)
import GHCJS.Marshal (toJSVal)
import Data.Time (getCurrentTime)
@ali-abrar
ali-abrar / reflex-dom-issue-208.hs
Created March 7, 2018 22:43
reflex-dom issue #208
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections #-}
import Control.Arrow ((&&&))
import Control.Monad.IO.Class (liftIO)
import qualified Data.Map as Map
import Data.Text (Text)
import qualified Data.Text as T
import Reflex.Dom
main :: IO ()
@ali-abrar
ali-abrar / reflex-dom-issue-208.hs
Created March 7, 2018 22:43
reflex-dom issue #208
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections #-}
import Control.Arrow ((&&&))
import Control.Monad.IO.Class (liftIO)
import qualified Data.Map as Map
import Data.Text (Text)
import qualified Data.Text as T
import Reflex.Dom
main :: IO ()