{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Miso.Event.Types where
import qualified Data.Map as M
import GHC.Generics
import GHCJS.Marshal (ToJSVal)
import Miso.String
import Data.Aeson (FromJSON)
data KeyInfo
= KeyInfo
{ KeyInfo -> KeyCode
keyCode :: !KeyCode
, KeyInfo -> Bool
shiftKey, KeyInfo -> Bool
metaKey, KeyInfo -> Bool
ctrlKey, KeyInfo -> Bool
altKey :: !Bool
} deriving (Int -> KeyInfo -> ShowS
[KeyInfo] -> ShowS
KeyInfo -> String
(Int -> KeyInfo -> ShowS)
-> (KeyInfo -> String) -> ([KeyInfo] -> ShowS) -> Show KeyInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyInfo] -> ShowS
$cshowList :: [KeyInfo] -> ShowS
show :: KeyInfo -> String
$cshow :: KeyInfo -> String
showsPrec :: Int -> KeyInfo -> ShowS
$cshowsPrec :: Int -> KeyInfo -> ShowS
Show, KeyInfo -> KeyInfo -> Bool
(KeyInfo -> KeyInfo -> Bool)
-> (KeyInfo -> KeyInfo -> Bool) -> Eq KeyInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyInfo -> KeyInfo -> Bool
$c/= :: KeyInfo -> KeyInfo -> Bool
== :: KeyInfo -> KeyInfo -> Bool
$c== :: KeyInfo -> KeyInfo -> Bool
Eq)
newtype KeyCode = KeyCode Int
deriving (Int -> KeyCode -> ShowS
[KeyCode] -> ShowS
KeyCode -> String
(Int -> KeyCode -> ShowS)
-> (KeyCode -> String) -> ([KeyCode] -> ShowS) -> Show KeyCode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyCode] -> ShowS
$cshowList :: [KeyCode] -> ShowS
show :: KeyCode -> String
$cshow :: KeyCode -> String
showsPrec :: Int -> KeyCode -> ShowS
$cshowsPrec :: Int -> KeyCode -> ShowS
Show, KeyCode -> KeyCode -> Bool
(KeyCode -> KeyCode -> Bool)
-> (KeyCode -> KeyCode -> Bool) -> Eq KeyCode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyCode -> KeyCode -> Bool
$c/= :: KeyCode -> KeyCode -> Bool
== :: KeyCode -> KeyCode -> Bool
$c== :: KeyCode -> KeyCode -> Bool
Eq, Eq KeyCode
Eq KeyCode
-> (KeyCode -> KeyCode -> Ordering)
-> (KeyCode -> KeyCode -> Bool)
-> (KeyCode -> KeyCode -> Bool)
-> (KeyCode -> KeyCode -> Bool)
-> (KeyCode -> KeyCode -> Bool)
-> (KeyCode -> KeyCode -> KeyCode)
-> (KeyCode -> KeyCode -> KeyCode)
-> Ord KeyCode
KeyCode -> KeyCode -> Bool
KeyCode -> KeyCode -> Ordering
KeyCode -> KeyCode -> KeyCode
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: KeyCode -> KeyCode -> KeyCode
$cmin :: KeyCode -> KeyCode -> KeyCode
max :: KeyCode -> KeyCode -> KeyCode
$cmax :: KeyCode -> KeyCode -> KeyCode
>= :: KeyCode -> KeyCode -> Bool
$c>= :: KeyCode -> KeyCode -> Bool
> :: KeyCode -> KeyCode -> Bool
$c> :: KeyCode -> KeyCode -> Bool
<= :: KeyCode -> KeyCode -> Bool
$c<= :: KeyCode -> KeyCode -> Bool
< :: KeyCode -> KeyCode -> Bool
$c< :: KeyCode -> KeyCode -> Bool
compare :: KeyCode -> KeyCode -> Ordering
$ccompare :: KeyCode -> KeyCode -> Ordering
$cp1Ord :: Eq KeyCode
Ord, Value -> Parser [KeyCode]
Value -> Parser KeyCode
(Value -> Parser KeyCode)
-> (Value -> Parser [KeyCode]) -> FromJSON KeyCode
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [KeyCode]
$cparseJSONList :: Value -> Parser [KeyCode]
parseJSON :: Value -> Parser KeyCode
$cparseJSON :: Value -> Parser KeyCode
FromJSON)
newtype Checked = Checked Bool
deriving (Int -> Checked -> ShowS
[Checked] -> ShowS
Checked -> String
(Int -> Checked -> ShowS)
-> (Checked -> String) -> ([Checked] -> ShowS) -> Show Checked
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Checked] -> ShowS
$cshowList :: [Checked] -> ShowS
show :: Checked -> String
$cshow :: Checked -> String
showsPrec :: Int -> Checked -> ShowS
$cshowsPrec :: Int -> Checked -> ShowS
Show, Checked -> Checked -> Bool
(Checked -> Checked -> Bool)
-> (Checked -> Checked -> Bool) -> Eq Checked
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Checked -> Checked -> Bool
$c/= :: Checked -> Checked -> Bool
== :: Checked -> Checked -> Bool
$c== :: Checked -> Checked -> Bool
Eq, Eq Checked
Eq Checked
-> (Checked -> Checked -> Ordering)
-> (Checked -> Checked -> Bool)
-> (Checked -> Checked -> Bool)
-> (Checked -> Checked -> Bool)
-> (Checked -> Checked -> Bool)
-> (Checked -> Checked -> Checked)
-> (Checked -> Checked -> Checked)
-> Ord Checked
Checked -> Checked -> Bool
Checked -> Checked -> Ordering
Checked -> Checked -> Checked
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Checked -> Checked -> Checked
$cmin :: Checked -> Checked -> Checked
max :: Checked -> Checked -> Checked
$cmax :: Checked -> Checked -> Checked
>= :: Checked -> Checked -> Bool
$c>= :: Checked -> Checked -> Bool
> :: Checked -> Checked -> Bool
$c> :: Checked -> Checked -> Bool
<= :: Checked -> Checked -> Bool
$c<= :: Checked -> Checked -> Bool
< :: Checked -> Checked -> Bool
$c< :: Checked -> Checked -> Bool
compare :: Checked -> Checked -> Ordering
$ccompare :: Checked -> Checked -> Ordering
$cp1Ord :: Eq Checked
Ord, Value -> Parser [Checked]
Value -> Parser Checked
(Value -> Parser Checked)
-> (Value -> Parser [Checked]) -> FromJSON Checked
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [Checked]
$cparseJSONList :: Value -> Parser [Checked]
parseJSON :: Value -> Parser Checked
$cparseJSON :: Value -> Parser Checked
FromJSON)
data Options = Options {
Options -> Bool
preventDefault :: Bool
, Options -> Bool
stopPropagation :: Bool
} deriving (Int -> Options -> ShowS
[Options] -> ShowS
Options -> String
(Int -> Options -> ShowS)
-> (Options -> String) -> ([Options] -> ShowS) -> Show Options
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Options] -> ShowS
$cshowList :: [Options] -> ShowS
show :: Options -> String
$cshow :: Options -> String
showsPrec :: Int -> Options -> ShowS
$cshowsPrec :: Int -> Options -> ShowS
Show, Options -> Options -> Bool
(Options -> Options -> Bool)
-> (Options -> Options -> Bool) -> Eq Options
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Options -> Options -> Bool
$c/= :: Options -> Options -> Bool
== :: Options -> Options -> Bool
$c== :: Options -> Options -> Bool
Eq, (forall x. Options -> Rep Options x)
-> (forall x. Rep Options x -> Options) -> Generic Options
forall x. Rep Options x -> Options
forall x. Options -> Rep Options x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Options x -> Options
$cfrom :: forall x. Options -> Rep Options x
Generic)
instance ToJSVal Options
defaultOptions :: Options
defaultOptions :: Options
defaultOptions = Bool -> Bool -> Options
Options Bool
False Bool
False
newtype AllowDrop = AllowDrop Bool
deriving (Int -> AllowDrop -> ShowS
[AllowDrop] -> ShowS
AllowDrop -> String
(Int -> AllowDrop -> ShowS)
-> (AllowDrop -> String)
-> ([AllowDrop] -> ShowS)
-> Show AllowDrop
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AllowDrop] -> ShowS
$cshowList :: [AllowDrop] -> ShowS
show :: AllowDrop -> String
$cshow :: AllowDrop -> String
showsPrec :: Int -> AllowDrop -> ShowS
$cshowsPrec :: Int -> AllowDrop -> ShowS
Show, AllowDrop -> AllowDrop -> Bool
(AllowDrop -> AllowDrop -> Bool)
-> (AllowDrop -> AllowDrop -> Bool) -> Eq AllowDrop
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AllowDrop -> AllowDrop -> Bool
$c/= :: AllowDrop -> AllowDrop -> Bool
== :: AllowDrop -> AllowDrop -> Bool
$c== :: AllowDrop -> AllowDrop -> Bool
Eq, Value -> Parser [AllowDrop]
Value -> Parser AllowDrop
(Value -> Parser AllowDrop)
-> (Value -> Parser [AllowDrop]) -> FromJSON AllowDrop
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [AllowDrop]
$cparseJSONList :: Value -> Parser [AllowDrop]
parseJSON :: Value -> Parser AllowDrop
$cparseJSON :: Value -> Parser AllowDrop
FromJSON)
defaultEvents :: M.Map MisoString Bool
defaultEvents :: Map MisoString Bool
defaultEvents = [(MisoString, Bool)] -> Map MisoString Bool
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList [
(MisoString
"blur", Bool
True)
, (MisoString
"change", Bool
False)
, (MisoString
"click", Bool
False)
, (MisoString
"dblclick", Bool
False)
, (MisoString
"focus", Bool
False)
, (MisoString
"input", Bool
False)
, (MisoString
"keydown", Bool
False)
, (MisoString
"keypress", Bool
False)
, (MisoString
"keyup", Bool
False)
, (MisoString
"mouseup", Bool
False)
, (MisoString
"mousedown", Bool
False)
, (MisoString
"mouseenter", Bool
True)
, (MisoString
"mouseleave", Bool
False)
, (MisoString
"mouseover", Bool
False)
, (MisoString
"mouseout", Bool
False)
, (MisoString
"dragstart", Bool
False)
, (MisoString
"dragover", Bool
False)
, (MisoString
"dragend", Bool
False)
, (MisoString
"dragenter", Bool
False)
, (MisoString
"dragleave", Bool
False)
, (MisoString
"drag", Bool
False)
, (MisoString
"drop", Bool
False)
, (MisoString
"submit", Bool
False)
]