glazier-react-1.0.0.0: src/Glazier/React/NativeEvent/Internal.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-- | This module based on React/Flux/PropertiesAndEvents.hs.
module Glazier.React.NativeEvent.Internal
( NativeEvent(..)
, )
where
import Control.DeepSeq
import Data.String
import qualified GHC.Generics as G
import qualified GHCJS.Marshal.Pure as J
import qualified GHCJS.Types as J
import qualified JavaScript.Extras as JE
-- | The native event
-- https://developer.mozilla.org/en-US/docs/Web/API/Event
newtype NativeEvent =
NativeEvent JE.JSRep -- not J.JSVal so the show instance is more useful
deriving (G.Generic, Show, J.IsJSVal, J.PToJSVal, JE.ToJS, IsString, NFData)
instance JE.FromJS NativeEvent where
fromJS a | js_isNativeEvent a = Just $ NativeEvent $ JE.JSRep a
fromJS _ = Nothing
#ifdef __GHCJS__
foreign import javascript unsafe
"$1 instanceof Event"
js_isNativeEvent :: J.JSVal -> Bool
#else
js_isNativeEvent :: J.JSVal -> Bool
js_isNativeEvent _ = False
#endif