@@ -192,6 +192,7 @@ import qualified GHCJS.DOM.TouchEvent as TouchEvent
192192import qualified GHCJS.DOM.TouchList as TouchList
193193import qualified GHCJS.DOM.Types as DOM
194194import qualified GHCJS.DOM.Window as Window
195+import qualified GHCJS.DOM.WheelEvent as WheelEvent
195196import qualified Reflex.Patch.DMap as PatchDMap
196197import qualified Reflex.Patch.DMapWithMove as PatchDMapWithMove
197198import qualified Reflex.Patch.MapWithMove as PatchMapWithMove
@@ -2249,7 +2250,7 @@ defaultDomEventHandler e evt = fmap (Just . EventResult) $ case evt of
22492250 Touchend -> getTouchEvent
22502251 Touchcancel -> getTouchEvent
22512252 Mousewheel -> return ()
2252− Wheel -> return ()
2253+ Wheel -> getWheelEvent
22532254
22542255{-# INLINABLE defaultDomWindowEventHandler #-}
22552256defaultDomWindowEventHandler :: DOM.Window -> EventName en -> EventM DOM.Window (EventType en) (Maybe (EventResult en))
@@ -2299,7 +2300,7 @@ defaultDomWindowEventHandler w evt = fmap (Just . EventResult) $ case evt of
22992300 Touchend -> getTouchEvent
23002301 Touchcancel -> getTouchEvent
23012302 Mousewheel -> return ()
2302− Wheel -> return ()
2303+ Wheel -> getWheelEvent
23032304
23042305{-# INLINABLE withIsEvent #-}
23052306withIsEvent :: EventName en -> (IsEvent (EventType en) => r) -> r
@@ -2608,6 +2609,26 @@ getTouchEvent = do
26082609 , _touchEventResult_touches = touches
26092610 }
26102611
2612+{-# INLINABLE getWheelEvent #-}
2613+getWheelEvent :: EventM e WheelEvent WheelEventResult
2614+getWheelEvent = do
2615+ e <- event
2616+ dx :: Double <- WheelEvent.getDeltaX e
2617+ dy :: Double <- WheelEvent.getDeltaY e
2618+ dz :: Double <- WheelEvent.getDeltaZ e
2619+ deltaMode :: Word <- WheelEvent.getDeltaMode e
2620+ return $ WheelEventResult
2621+ { _wheelEventResult_deltaX = dx
2622+ , _wheelEventResult_deltaY = dy
2623+ , _wheelEventResult_deltaZ = dz
2624+ , _wheelEventResult_deltaMode = case deltaMode of
2625+ 0 -> DeltaPixel
2626+ 1 -> DeltaLine
2627+ 2 -> DeltaPage
2628+ -- See https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaMode
2629+ _ -> error "getWheelEvent: impossible encoding"
2630+ }
2631+
26112632instance MonadSample t m => MonadSample t (HydrationDomBuilderT s t m) where
26122633 {-# INLINABLE sample #-}
26132634 sample = lift . sample