@@ -4,47 +4,45 @@ import Prelude
44
55import CSS (Selector , fromString )
66import Clipboard as C
7- import Control.Monad.Eff (Eff )
8- import DOM (DOM )
9- import DOM.Event.EventTarget (addEventListener , eventListener )
10- import DOM.HTML (window )
11- import DOM.HTML.Event.EventTypes (load )
12- import DOM.HTML.Types (windowToEventTarget , htmlDocumentToDocument )
13- import DOM.HTML.Window (document )
14- import DOM.Node.Element (getAttribute )
15- import DOM.Node.NonElementParentNode (getElementById )
16- import DOM.Node.Types (Element , ElementId (ElementId), documentToNonElementParentNode )
177import Data.Maybe (fromJust , fromMaybe )
18- import Data.Newtype ( wrap )
8+ import Effect ( Effect )
199import Partial.Unsafe (unsafePartial )
20-
21- onLoad :: forall eff . (Eff (dom :: DOM | eff ) Unit ) -> Eff (dom :: DOM | eff ) Unit
22- onLoad action
23- = addEventListener load (eventListener (const action)) false
24- <<< windowToEventTarget
25- =<< window
26-
27- stringFromAttr :: forall eff . String -> Element -> Eff (dom :: DOM | eff ) String
28- stringFromAttr attr el = fromMaybe " " <$> getAttribute attr el
29-
30- testElement :: forall eff . Element -> Eff (dom :: DOM | eff ) Unit
10+ import Web.DOM.Element (Element )
11+ import Web.DOM.Element as Element
12+ import Web.DOM.NonElementParentNode (getElementById )
13+ import Web.Event.EventTarget (addEventListener , eventListener )
14+ import Web.HTML (window )
15+ import Web.HTML.Event.EventTypes (load )
16+ import Web.HTML.HTMLDocument as HTMLDocument
17+ import Web.HTML.Window as Window
18+
19+ onLoad :: Effect Unit -> Effect Unit -- forall eff. (Eff (dom :: DOM | eff) Unit) -> Eff (dom :: DOM | eff) Unit
20+ onLoad action = do
21+ listener <- eventListener $ const action
22+ win <- map Window .toEventTarget window
23+ addEventListener load listener false win
24+
25+ stringFromAttr :: String -> Element -> Effect String
26+ stringFromAttr attr el = fromMaybe " " <$> Element .getAttribute attr el
27+
28+ testElement :: Element -> Effect Unit
3129testElement el = void $ C .fromElement el $ stringFromAttr " data-copy-text" el
3230
33- testSelector :: forall eff . Selector -> Eff ( dom :: DOM | eff ) Unit
31+ testSelector :: Selector -> Effect Unit
3432testSelector sel = void $ C .fromCSSSelector sel $ stringFromAttr " data-copy-text"
3533
36- testInputSelector :: forall eff . Eff ( dom :: DOM | eff ) Unit
34+ testInputSelector :: Effect Unit
3735testInputSelector = do
38- doc <- documentToNonElementParentNode <<< htmlDocumentToDocument < $> (document =<< window)
39- let getInput = unsafePartial fromJust <$> getElementById (wrap " input-selector" ) doc
40- button <- unsafePartial fromJust <$> getElementById (wrap " input-button-selector" ) doc
36+ doc <- HTMLDocument .toNonElementParentNode < $> (Window . document =<< window)
37+ let getInput = unsafePartial fromJust <$> getElementById " input-selector" doc
38+ button <- unsafePartial fromJust <$> getElementById " input-button-selector" doc
4139 void $ C .fromElementWithTarget button getInput
4240
43- main :: forall eff . Eff ( dom :: DOM | eff ) Unit
41+ main :: Effect Unit
4442main = onLoad do
4543 win <- window
46- doc <- documentToNonElementParentNode <<< htmlDocumentToDocument < $> document win
47- element <- getElementById ( ElementId " test-element" ) doc
44+ doc <- HTMLDocument .toNonElementParentNode < $> Window . document win
45+ element <- getElementById " test-element" doc
4846 fromMaybe (pure unit) $ testElement <$> element
4947 testSelector $ fromString " .test-selector"
5048 testInputSelector
0 commit comments