on develop help sign in
Use jsaddle 0.9 and ghcjs-dom 0.9
commitf001bb254680781dfb310da5f9704591f27ffb99 authorHamish Mackenzie <Hamish.K.Mackenzie@googlemail.com> dateFri 19 May 2017, 21:34 (9 years ago) parent706ab47
5 files changed+23−19
reflex-dom-core/reflex-dom-core.cabal+2−2 reflex-dom-core/src/Reflex/Dom/Builder/Immediate.hs+9−7 reflex-dom-core/src/Reflex/Dom/Main.hs+1−1 reflex-dom-core/src/Reflex/Dom/Widget/Input.hs+2−2 reflex-dom-core/src/Reflex/Dom/Widget/Resize.hs+9−7
reflex-dom-core/reflex-dom-core.cabal+2−2
@@ -50,8 +50,8 @@ library
5050 dependent-sum-template >= 0.0.0.4 && < 0.1,
5151 directory >= 1.2 && < 1.4,
5252 exception-transformers == 0.4.*,
53− ghcjs-dom >= 0.8.0.0 && < 0.9,
54− jsaddle >=0.8.0.1 && <0.9,
53+ ghcjs-dom >= 0.9.0.0 && < 0.10,
54+ jsaddle >=0.9.0.0 && <0.10,
5555 -- keycode-0.2 has a bug on firefox
5656 keycode >= 0.2.1 && < 0.3,
5757 lens >= 4.7 && < 5,
reflex-dom-core/src/Reflex/Dom/Builder/Immediate.hs+9−7
@@ -129,6 +129,7 @@ import GHCJS.DOM.Element (getScrollTop, removeAttribute, removeAttributeNS, setA
129129import qualified GHCJS.DOM.Element as Element
130130import qualified GHCJS.DOM.Event as Event
131131import qualified GHCJS.DOM.GlobalEventHandlers as Events
132+import qualified GHCJS.DOM.DocumentAndElementEventHandlers as Events
132133import GHCJS.DOM.EventM (EventM, event, on)
133134import qualified GHCJS.DOM.EventM as DOM
134135import qualified GHCJS.DOM.FileList as FileList
@@ -449,7 +450,7 @@ instance er ~ EventResult => Default (GhcjsEventSpec er) where
449450 def = GhcjsEventSpec
450451 { _ghcjsEventSpec_filters = mempty
451452 , _ghcjsEventSpec_handler = GhcjsEventHandler $ \(en, GhcjsDomEvent evt) -> do
452− t :: DOM.EventTarget <- withIsEvent en $ Event.getTarget evt --TODO: Rework this; defaultDomEventHandler shouldn't need to take this as an argument
453+ t :: DOM.EventTarget <- withIsEvent en $ Event.getTargetUnchecked evt --TODO: Rework this; defaultDomEventHandler shouldn't need to take this as an argument
453454 let e = uncheckedCastTo DOM.Element t
454455 runReaderT (defaultDomEventHandler e en) evt
455456 }
@@ -1180,6 +1181,7 @@ instance DOM.FromJSVal ElementEventTarget where
11801181 fromJSVal = fmap (fmap ElementEventTarget) . DOM.fromJSVal
11811182instance DOM.IsEventTarget ElementEventTarget
11821183instance DOM.IsGlobalEventHandlers ElementEventTarget
1184+instance DOM.IsDocumentAndElementEventHandlers ElementEventTarget
11831185
11841186{-# INLINABLE elementOnEventName #-}
11851187elementOnEventName :: IsElement e => EventName en -> e -> EventM e (EventType en) () -> JSM (JSM ())
@@ -1217,12 +1219,12 @@ elementOnEventName en e_ = let e = ElementEventTarget (DOM.toElement e_) in case
12171219 Select -> on e Events.select
12181220 Submit -> on e Events.submit
12191221 Wheel -> on e Events.wheel
1220− Beforecut -> on e Element.beforeCut
1221− Cut -> on e Element.cut
1222− Beforecopy -> on e Element.beforeCopy
1223− Copy -> on e Element.copy
1224− Beforepaste -> on e Element.beforePaste
1225− Paste -> on e Element.paste
1222+ Beforecut -> on e Events.beforeCut
1223+ Cut -> on e Events.cut
1224+ Beforecopy -> on e Events.beforeCopy
1225+ Copy -> on e Events.copy
1226+ Beforepaste -> on e Events.beforePaste
1227+ Paste -> on e Events.paste
12261228 Reset -> on e Events.reset
12271229 Search -> on e Events.search
12281230 Selectstart -> on e Element.selectStart
reflex-dom-core/src/Reflex/Dom/Main.hs+1−1
@@ -181,7 +181,7 @@ runApp' :: (t ~ Spider) => (forall x. AppInput t -> Widget x (AppOutput t)) -> J
181181runApp' app = withJSContextSingleton $ \jsSing -> do
182182 doc <- currentDocumentUnchecked
183183 body <- getBodyUnchecked doc
184− win <- getDefaultView doc
184+ win <- getDefaultViewUnchecked doc
185185 rec o <- attachWidget body jsSing $ do
186186 w <- lift $ wrapWindow win $ _appOutput_windowConfig o
187187 app $ AppInput
reflex-dom-core/src/Reflex/Dom/Widget/Input.hs+2−2
@@ -287,7 +287,7 @@ checkboxView dAttrs dValue = do
287287 postBuild <- getPostBuild
288288 let filters :: DMap EventName (GhcjsEventFilter CheckboxViewEventResult)
289289 filters = DMap.singleton Click $ GhcjsEventFilter $ \(GhcjsDomEvent evt) -> do
290− t <- Event.getTarget evt
290+ t <- Event.getTargetUnchecked evt
291291 b <- Input.getChecked $ uncheckedCastTo Input.HTMLInputElement t
292292 return $ (,) preventDefault $ return $ Just $ CheckboxViewEventResult b
293293 elementConfig :: ElementConfig CheckboxViewEventResult t (DomBuilderSpace m)
@@ -299,7 +299,7 @@ checkboxView dAttrs dValue = do
299299 , _ghcjsEventSpec_handler = GhcjsEventHandler $ \(en, GhcjsDomEvent evt) -> case en of
300300 Click -> error "impossible"
301301 _ -> do
302− e :: DOM.EventTarget <- withIsEvent en $ Event.getTarget evt
302+ e :: DOM.EventTarget <- withIsEvent en $ Event.getTargetUnchecked evt
303303 let myElement = uncheckedCastTo DOM.HTMLElement e
304304 mr <- runReaderT (defaultDomEventHandler myElement en) evt
305305 return $ ffor mr $ \(EventResult r) -> CheckboxViewEventResult $ regularToCheckboxViewEventType en r
reflex-dom-core/src/Reflex/Dom/Widget/Resize.hs+9−7
@@ -27,7 +27,8 @@ import qualified Data.Text as T
2727import GHCJS.DOM.Element
2828import GHCJS.DOM.EventM (on)
2929import qualified GHCJS.DOM.GlobalEventHandlers as Events (scroll)
30−import GHCJS.DOM.Types (MonadJSM, liftJSM)
30+import GHCJS.DOM.Types (MonadJSM, liftJSM, uncheckedCastTo, HTMLElement(..))
31+import GHCJS.DOM.HTMLElement (getOffsetWidth, getOffsetHeight)
3132import qualified GHCJS.DOM.Types as DOM
3233
3334-- | A widget that wraps the given widget in a div and fires an event when resized.
@@ -54,8 +55,9 @@ resizeDetectorWithAttrs attrs w = do
5455 (expand, (expandChild, _)) <- elAttr' "div" containerAttrs $ elAttr' "div" ("style" =: childStyle) $ return ()
5556 (shrink, _) <- elAttr' "div" containerAttrs $ elAttr "div" ("style" =: (childStyle <> "width: 200%; height: 200%;")) $ return ()
5657 return (expand, expandChild, shrink, w')
57− let reset = do
58− let e = _element_raw expand
58+ let p = uncheckedCastTo HTMLElement $ _element_raw parent
59+ reset = do
60+ let e = uncheckedCastTo HTMLElement $ _element_raw expand
5961 s = _element_raw shrink
6062 eow <- getOffsetWidth e
6163 eoh <- getOffsetHeight e
@@ -70,12 +72,12 @@ resizeDetectorWithAttrs attrs w = do
7072 setScrollLeft s ssw
7173 ssh <- getScrollHeight s
7274 setScrollTop s ssh
73− lastWidth <- getOffsetWidth (_element_raw parent)
74− lastHeight <- getOffsetHeight (_element_raw parent)
75+ lastWidth <- getOffsetWidth p
76+ lastHeight <- getOffsetHeight p
7577 return (Just lastWidth, Just lastHeight)
7678 resetIfChanged ds = do
77− pow <- getOffsetWidth (_element_raw parent)
78− poh <- getOffsetHeight (_element_raw parent)
79+ pow <- getOffsetWidth p
80+ poh <- getOffsetHeight p
7981 if ds == (Just pow, Just poh)
8082 then return Nothing
8183 else fmap Just reset