~singpolyma/post-part

74fca7b07fae6a8e3453bf0e2c52978bf3e5a78d — Stephen Paul Weber 2 years ago 60abf93
Initial circle interaction
2 files changed, 32 insertions(+), 4 deletions(-)

M Main.purs
M spago.dhall
M Main.purs => Main.purs +30 -2
@@ 16,6 16,34 @@
module Main where

import Prelude
import Effect.Console (log)
import Data.Maybe
import Debug.Trace
import Web.DOM.ParentNode (querySelector, QuerySelector(..))
import Web.DOM.Document as DOMDocument
import Web.HTML.HTMLDocument as HTMLDocument
import Web.HTML.HTMLElement as HTMLElement
import Web.HTML (window)
import Web.HTML.Event.EventTypes (load)
import Web.UIEvent.MouseEvent as MouseEvent
import Web.UIEvent.MouseEvent.EventTypes (mousemove)
import Web.HTML.Window as Window
import Web.DOM.Element as Element
import Web.Event.EventTarget (addEventListener, eventListener)
import Partial.Unsafe (unsafePartial)
import Web.CSSOM.ElementCSSInlineStyle as Style
import Web.CSSOM.CSSStyleDeclaration as Style

main = log "hai"
addEventListener' eventType eventTarget cb = do
  listener <- eventListener cb
  addEventListener eventType listener false eventTarget

main = unsafePartial $ do
  win <- window
  doc <- HTMLDocument.toParentNode <$> Window.document win
  addEventListener' load (Window.toEventTarget win) $ \_ -> do
    Just wallpaper <- querySelector (QuerySelector "#wallpaper") doc
    Just img <- (HTMLElement.fromElement =<< _) <$> querySelector (QuerySelector "#wallpaper > img") doc
    addEventListener' mousemove (Element.toEventTarget wallpaper) $ \e -> do
      let Just mouseEvent = MouseEvent.fromEvent e
      style <- Style.style $ Style.fromHTMLElement img
      Style.setProperty style "clip-path" ("circle(100px at " <> (show $ MouseEvent.offsetX mouseEvent) <> "px " <> (show $ MouseEvent.offsetY mouseEvent) <> "px)")

M spago.dhall => spago.dhall +2 -2
@@ 1,5 1,5 @@
{ name = "post-part"
, dependencies = [ "prelude", "console" ]
, dependencies = [ "prelude", "debug", "web-dom", "web-html", "web-events", "partial" ]
, packages = ./packages.dhall
, sources = [ "*.purs" ]
, sources = [ "*.purs", "Web/**/*.purs" ]
}