on develop help sign in
Use jsaddle 0.9 and ghcjs-dom 0.9
f001bb2Hamish Mackenzie
reflex-dom-core/reflex-dom-core.cabal+2−2
@@ -50,8 +50,8 @@ library
50 dependent-sum-template >= 0.0.0.4 && < 0.1,
50 dependent-sum-template >= 0.0.0.4 && < 0.1,
51 directory >= 1.2 && < 1.4,
51 directory >= 1.2 && < 1.4,
52 exception-transformers == 0.4.*,
52 exception-transformers == 0.4.*,
53− ghcjs-dom >= 0.8.0.0 && < 0.9,
53+ ghcjs-dom >= 0.9.0.0 && < 0.10,
54− jsaddle >=0.8.0.1 && <0.9,
54+ jsaddle >=0.9.0.0 && <0.10,
55 -- keycode-0.2 has a bug on firefox
55 -- keycode-0.2 has a bug on firefox
56 keycode >= 0.2.1 && < 0.3,
56 keycode >= 0.2.1 && < 0.3,
57 lens >= 4.7 && < 5,
57 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
129import qualified GHCJS.DOM.Element as Element
129import qualified GHCJS.DOM.Element as Element
130import qualified GHCJS.DOM.Event as Event
130import qualified GHCJS.DOM.Event as Event
131import qualified GHCJS.DOM.GlobalEventHandlers as Events
131import qualified GHCJS.DOM.GlobalEventHandlers as Events
132+import qualified GHCJS.DOM.DocumentAndElementEventHandlers as Events
132import GHCJS.DOM.EventM (EventM, event, on)
133import GHCJS.DOM.EventM (EventM, event, on)
133import qualified GHCJS.DOM.EventM as DOM
134import qualified GHCJS.DOM.EventM as DOM
134import qualified GHCJS.DOM.FileList as FileList
135import qualified GHCJS.DOM.FileList as FileList
@@ -449,7 +450,7 @@ instance er ~ EventResult => Default (GhcjsEventSpec er) where
449 def = GhcjsEventSpec
450 def = GhcjsEventSpec
450 { _ghcjsEventSpec_filters = mempty
451 { _ghcjsEventSpec_filters = mempty
451 , _ghcjsEventSpec_handler = GhcjsEventHandler $ \(en, GhcjsDomEvent evt) -> do
452 , _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
453 let e = uncheckedCastTo DOM.Element t
454 let e = uncheckedCastTo DOM.Element t
454 runReaderT (defaultDomEventHandler e en) evt
455 runReaderT (defaultDomEventHandler e en) evt
455 }
456 }
@@ -1180,6 +1181,7 @@ instance DOM.FromJSVal ElementEventTarget where
1180 fromJSVal = fmap (fmap ElementEventTarget) . DOM.fromJSVal
1181 fromJSVal = fmap (fmap ElementEventTarget) . DOM.fromJSVal
1181instance DOM.IsEventTarget ElementEventTarget
1182instance DOM.IsEventTarget ElementEventTarget
1182instance DOM.IsGlobalEventHandlers ElementEventTarget
1183instance DOM.IsGlobalEventHandlers ElementEventTarget
1184+instance DOM.IsDocumentAndElementEventHandlers ElementEventTarget
1183
1185
1184{-# INLINABLE elementOnEventName #-}
1186{-# INLINABLE elementOnEventName #-}
1185elementOnEventName :: IsElement e => EventName en -> e -> EventM e (EventType en) () -> JSM (JSM ())
1187elementOnEventName :: 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
1217 Select -> on e Events.select
1219 Select -> on e Events.select
1218 Submit -> on e Events.submit
1220 Submit -> on e Events.submit
1219 Wheel -> on e Events.wheel
1221 Wheel -> on e Events.wheel
1220− Beforecut -> on e Element.beforeCut
1222+ Beforecut -> on e Events.beforeCut
1221− Cut -> on e Element.cut
1223+ Cut -> on e Events.cut
1222− Beforecopy -> on e Element.beforeCopy
1224+ Beforecopy -> on e Events.beforeCopy
1223− Copy -> on e Element.copy
1225+ Copy -> on e Events.copy
1224− Beforepaste -> on e Element.beforePaste
1226+ Beforepaste -> on e Events.beforePaste
1225− Paste -> on e Element.paste
1227+ Paste -> on e Events.paste
1226 Reset -> on e Events.reset
1228 Reset -> on e Events.reset
1227 Search -> on e Events.search
1229 Search -> on e Events.search
1228 Selectstart -> on e Element.selectStart
1230 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
181runApp' app = withJSContextSingleton $ \jsSing -> do
181runApp' app = withJSContextSingleton $ \jsSing -> do
182 doc <- currentDocumentUnchecked
182 doc <- currentDocumentUnchecked
183 body <- getBodyUnchecked doc
183 body <- getBodyUnchecked doc
184− win <- getDefaultView doc
184+ win <- getDefaultViewUnchecked doc
185 rec o <- attachWidget body jsSing $ do
185 rec o <- attachWidget body jsSing $ do
186 w <- lift $ wrapWindow win $ _appOutput_windowConfig o
186 w <- lift $ wrapWindow win $ _appOutput_windowConfig o
187 app $ AppInput
187 app $ AppInput
reflex-dom-core/src/Reflex/Dom/Widget/Input.hs+2−2
@@ -287,7 +287,7 @@ checkboxView dAttrs dValue = do
287 postBuild <- getPostBuild
287 postBuild <- getPostBuild
288 let filters :: DMap EventName (GhcjsEventFilter CheckboxViewEventResult)
288 let filters :: DMap EventName (GhcjsEventFilter CheckboxViewEventResult)
289 filters = DMap.singleton Click $ GhcjsEventFilter $ \(GhcjsDomEvent evt) -> do
289 filters = DMap.singleton Click $ GhcjsEventFilter $ \(GhcjsDomEvent evt) -> do
290− t <- Event.getTarget evt
290+ t <- Event.getTargetUnchecked evt
291 b <- Input.getChecked $ uncheckedCastTo Input.HTMLInputElement t
291 b <- Input.getChecked $ uncheckedCastTo Input.HTMLInputElement t
292 return $ (,) preventDefault $ return $ Just $ CheckboxViewEventResult b
292 return $ (,) preventDefault $ return $ Just $ CheckboxViewEventResult b
293 elementConfig :: ElementConfig CheckboxViewEventResult t (DomBuilderSpace m)
293 elementConfig :: ElementConfig CheckboxViewEventResult t (DomBuilderSpace m)
@@ -299,7 +299,7 @@ checkboxView dAttrs dValue = do
299 , _ghcjsEventSpec_handler = GhcjsEventHandler $ \(en, GhcjsDomEvent evt) -> case en of
299 , _ghcjsEventSpec_handler = GhcjsEventHandler $ \(en, GhcjsDomEvent evt) -> case en of
300 Click -> error "impossible"
300 Click -> error "impossible"
301 _ -> do
301 _ -> do
302− e :: DOM.EventTarget <- withIsEvent en $ Event.getTarget evt
302+ e :: DOM.EventTarget <- withIsEvent en $ Event.getTargetUnchecked evt
303 let myElement = uncheckedCastTo DOM.HTMLElement e
303 let myElement = uncheckedCastTo DOM.HTMLElement e
304 mr <- runReaderT (defaultDomEventHandler myElement en) evt
304 mr <- runReaderT (defaultDomEventHandler myElement en) evt
305 return $ ffor mr $ \(EventResult r) -> CheckboxViewEventResult $ regularToCheckboxViewEventType en r
305 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
27import GHCJS.DOM.Element
27import GHCJS.DOM.Element
28import GHCJS.DOM.EventM (on)
28import GHCJS.DOM.EventM (on)
29import qualified GHCJS.DOM.GlobalEventHandlers as Events (scroll)
29import 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)
31import qualified GHCJS.DOM.Types as DOM
32import qualified GHCJS.DOM.Types as DOM
32
33
33-- | A widget that wraps the given widget in a div and fires an event when resized.
34-- | A widget that wraps the given widget in a div and fires an event when resized.
@@ -54,8 +55,9 @@ resizeDetectorWithAttrs attrs w = do
54 (expand, (expandChild, _)) <- elAttr' "div" containerAttrs $ elAttr' "div" ("style" =: childStyle) $ return ()
55 (expand, (expandChild, _)) <- elAttr' "div" containerAttrs $ elAttr' "div" ("style" =: childStyle) $ return ()
55 (shrink, _) <- elAttr' "div" containerAttrs $ elAttr "div" ("style" =: (childStyle <> "width: 200%; height: 200%;")) $ return ()
56 (shrink, _) <- elAttr' "div" containerAttrs $ elAttr "div" ("style" =: (childStyle <> "width: 200%; height: 200%;")) $ return ()
56 return (expand, expandChild, shrink, w')
57 return (expand, expandChild, shrink, w')
58+ let p = uncheckedCastTo HTMLElement $ _element_raw parent
57− let reset = do
59+ reset = do
58− let e = _element_raw expand
60+ let e = uncheckedCastTo HTMLElement $ _element_raw expand
59 s = _element_raw shrink
61 s = _element_raw shrink
60 eow <- getOffsetWidth e
62 eow <- getOffsetWidth e
61 eoh <- getOffsetHeight e
63 eoh <- getOffsetHeight e
@@ -70,12 +72,12 @@ resizeDetectorWithAttrs attrs w = do
70 setScrollLeft s ssw
72 setScrollLeft s ssw
71 ssh <- getScrollHeight s
73 ssh <- getScrollHeight s
72 setScrollTop s ssh
74 setScrollTop s ssh
73− lastWidth <- getOffsetWidth (_element_raw parent)
75+ lastWidth <- getOffsetWidth p
74− lastHeight <- getOffsetHeight (_element_raw parent)
76+ lastHeight <- getOffsetHeight p
75 return (Just lastWidth, Just lastHeight)
77 return (Just lastWidth, Just lastHeight)
76 resetIfChanged ds = do
78 resetIfChanged ds = do
77− pow <- getOffsetWidth (_element_raw parent)
79+ pow <- getOffsetWidth p
78− poh <- getOffsetHeight (_element_raw parent)
80+ poh <- getOffsetHeight p
79 if ds == (Just pow, Just poh)
81 if ds == (Just pow, Just poh)
80 then return Nothing
82 then return Nothing
81 else fmap Just reset
83 else fmap Just reset