{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}
module Miso.Lynx.Element.ScrollView.Method
(
scrollTo
, autoScroll
, scrollIntoView
, scrollBy
, ScrollTo (..)
, AutoScroll (..)
, ScrollIntoView (..)
, ScrollBy (..)
, defaultScrollTo
, defaultAutoScroll
, defaultScrollIntoView
, defaultScrollBy
) where
import Miso
import Miso.Lynx.FFI
import Language.Javascript.JSaddle
data ScrollTo
= ScrollTo
{ ScrollTo -> Double
offset :: Double
, ScrollTo -> Double
index :: Double
, ScrollTo -> Bool
smooth :: Bool
} deriving (Int -> ScrollTo -> ShowS
[ScrollTo] -> ShowS
ScrollTo -> String
(Int -> ScrollTo -> ShowS)
-> (ScrollTo -> String) -> ([ScrollTo] -> ShowS) -> Show ScrollTo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ScrollTo -> ShowS
showsPrec :: Int -> ScrollTo -> ShowS
$cshow :: ScrollTo -> String
show :: ScrollTo -> String
$cshowList :: [ScrollTo] -> ShowS
showList :: [ScrollTo] -> ShowS
Show, ScrollTo -> ScrollTo -> Bool
(ScrollTo -> ScrollTo -> Bool)
-> (ScrollTo -> ScrollTo -> Bool) -> Eq ScrollTo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ScrollTo -> ScrollTo -> Bool
== :: ScrollTo -> ScrollTo -> Bool
$c/= :: ScrollTo -> ScrollTo -> Bool
/= :: ScrollTo -> ScrollTo -> Bool
Eq)
instance ToJSVal ScrollTo where
toJSVal :: ScrollTo -> JSM JSVal
toJSVal ScrollTo {Bool
Double
offset :: ScrollTo -> Double
index :: ScrollTo -> Double
smooth :: ScrollTo -> Bool
offset :: Double
index :: Double
smooth :: Bool
..} = do
object <- JSM Object
create
set "offset" offset object
set "index" index object
set "smooth" smooth object
toJSVal object
defaultScrollTo :: ScrollTo
defaultScrollTo :: ScrollTo
defaultScrollTo = Double -> Double -> Bool -> ScrollTo
ScrollTo Double
0 Double
1 Bool
True
scrollTo
:: MisoString
-> ScrollTo
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
scrollTo :: forall action parent model.
MisoString
-> ScrollTo
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
scrollTo = MisoString
-> MisoString
-> ScrollTo
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
forall params argument action parent model.
(ToJSVal params, FromJSVal argument) =>
MisoString
-> MisoString
-> params
-> (argument -> action)
-> (MisoString -> action)
-> Effect parent model action
invokeExec MisoString
"scrollTo"
data AutoScroll
= AutoScroll
{ AutoScroll -> Double
rate :: Double
, AutoScroll -> Bool
start :: Bool
} deriving (Int -> AutoScroll -> ShowS
[AutoScroll] -> ShowS
AutoScroll -> String
(Int -> AutoScroll -> ShowS)
-> (AutoScroll -> String)
-> ([AutoScroll] -> ShowS)
-> Show AutoScroll
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AutoScroll -> ShowS
showsPrec :: Int -> AutoScroll -> ShowS
$cshow :: AutoScroll -> String
show :: AutoScroll -> String
$cshowList :: [AutoScroll] -> ShowS
showList :: [AutoScroll] -> ShowS
Show, AutoScroll -> AutoScroll -> Bool
(AutoScroll -> AutoScroll -> Bool)
-> (AutoScroll -> AutoScroll -> Bool) -> Eq AutoScroll
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AutoScroll -> AutoScroll -> Bool
== :: AutoScroll -> AutoScroll -> Bool
$c/= :: AutoScroll -> AutoScroll -> Bool
/= :: AutoScroll -> AutoScroll -> Bool
Eq)
instance ToJSVal AutoScroll where
toJSVal :: AutoScroll -> JSM JSVal
toJSVal AutoScroll {Bool
Double
rate :: AutoScroll -> Double
start :: AutoScroll -> Bool
rate :: Double
start :: Bool
..} = do
object <- JSM Object
create
set "rate" rate object
set "start" start object
toJSVal object
defaultAutoScroll :: AutoScroll
defaultAutoScroll :: AutoScroll
defaultAutoScroll = Double -> Bool -> AutoScroll
AutoScroll Double
120 Bool
True
autoScroll
:: MisoString
-> AutoScroll
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
autoScroll :: forall action parent model.
MisoString
-> AutoScroll
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
autoScroll = MisoString
-> MisoString
-> AutoScroll
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
forall params argument action parent model.
(ToJSVal params, FromJSVal argument) =>
MisoString
-> MisoString
-> params
-> (argument -> action)
-> (MisoString -> action)
-> Effect parent model action
invokeExec MisoString
"autoScroll"
data ScrollIntoView
= ScrollIntoView
{ ScrollIntoView -> MisoString
block :: MisoString
, ScrollIntoView -> MisoString
inline :: MisoString
, ScrollIntoView -> MisoString
behavior :: MisoString
} deriving (Int -> ScrollIntoView -> ShowS
[ScrollIntoView] -> ShowS
ScrollIntoView -> String
(Int -> ScrollIntoView -> ShowS)
-> (ScrollIntoView -> String)
-> ([ScrollIntoView] -> ShowS)
-> Show ScrollIntoView
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ScrollIntoView -> ShowS
showsPrec :: Int -> ScrollIntoView -> ShowS
$cshow :: ScrollIntoView -> String
show :: ScrollIntoView -> String
$cshowList :: [ScrollIntoView] -> ShowS
showList :: [ScrollIntoView] -> ShowS
Show, ScrollIntoView -> ScrollIntoView -> Bool
(ScrollIntoView -> ScrollIntoView -> Bool)
-> (ScrollIntoView -> ScrollIntoView -> Bool) -> Eq ScrollIntoView
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ScrollIntoView -> ScrollIntoView -> Bool
== :: ScrollIntoView -> ScrollIntoView -> Bool
$c/= :: ScrollIntoView -> ScrollIntoView -> Bool
/= :: ScrollIntoView -> ScrollIntoView -> Bool
Eq)
instance ToJSVal ScrollIntoView where
toJSVal :: ScrollIntoView -> JSM JSVal
toJSVal ScrollIntoView {MisoString
block :: ScrollIntoView -> MisoString
inline :: ScrollIntoView -> MisoString
behavior :: ScrollIntoView -> MisoString
block :: MisoString
inline :: MisoString
behavior :: MisoString
..} = do
object <- JSM Object
create
set "block" block object
set "inline" inline object
set "behavior" behavior object
scrollIntoViewOptions <- create
set "scrollIntoViewOptions" object scrollIntoViewOptions
toJSVal scrollIntoViewOptions
defaultScrollIntoView :: ScrollIntoView
defaultScrollIntoView :: ScrollIntoView
defaultScrollIntoView
= ScrollIntoView
{ block :: MisoString
block = MisoString
"center"
, inline :: MisoString
inline = MisoString
"start"
, behavior :: MisoString
behavior = MisoString
"smooth"
}
scrollIntoView
:: MisoString
-> ScrollIntoView
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
scrollIntoView :: forall action parent model.
MisoString
-> ScrollIntoView
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
scrollIntoView = MisoString
-> MisoString
-> ScrollIntoView
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
forall params argument action parent model.
(ToJSVal params, FromJSVal argument) =>
MisoString
-> MisoString
-> params
-> (argument -> action)
-> (MisoString -> action)
-> Effect parent model action
invokeExec MisoString
"scrollIntoView"
newtype ScrollBy
= ScrollBy
{ ScrollBy -> Double
scrollByOffset :: Double
} deriving (Int -> ScrollBy -> ShowS
[ScrollBy] -> ShowS
ScrollBy -> String
(Int -> ScrollBy -> ShowS)
-> (ScrollBy -> String) -> ([ScrollBy] -> ShowS) -> Show ScrollBy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ScrollBy -> ShowS
showsPrec :: Int -> ScrollBy -> ShowS
$cshow :: ScrollBy -> String
show :: ScrollBy -> String
$cshowList :: [ScrollBy] -> ShowS
showList :: [ScrollBy] -> ShowS
Show, ScrollBy -> ScrollBy -> Bool
(ScrollBy -> ScrollBy -> Bool)
-> (ScrollBy -> ScrollBy -> Bool) -> Eq ScrollBy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ScrollBy -> ScrollBy -> Bool
== :: ScrollBy -> ScrollBy -> Bool
$c/= :: ScrollBy -> ScrollBy -> Bool
/= :: ScrollBy -> ScrollBy -> Bool
Eq)
instance ToJSVal ScrollBy where
toJSVal :: ScrollBy -> JSM JSVal
toJSVal ScrollBy {Double
scrollByOffset :: ScrollBy -> Double
scrollByOffset :: Double
..} = do
object <- JSM Object
create
set "offset" scrollByOffset object
toJSVal object
defaultScrollBy :: ScrollBy
defaultScrollBy :: ScrollBy
defaultScrollBy = ScrollBy
{ scrollByOffset :: Double
scrollByOffset = Double
0
}
scrollBy
:: MisoString
-> ScrollBy
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
scrollBy :: forall action parent model.
MisoString
-> ScrollBy
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
scrollBy = MisoString
-> MisoString
-> ScrollBy
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
forall params argument action parent model.
(ToJSVal params, FromJSVal argument) =>
MisoString
-> MisoString
-> params
-> (argument -> action)
-> (MisoString -> action)
-> Effect parent model action
invokeExec MisoString
"scrollBy"