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" ]
}