{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}
module Miso.Lynx.Element.Text.Method
(
setTextSelection
, getTextBoundingRect
, getSelectedText
, SetTextSelection (..)
, defaultGetTextBoundingRect
) where
import Miso
import Miso.Lynx.FFI (invokeExec)
import Language.Javascript.JSaddle
data SetTextSelection
= SetTextSelection
{ SetTextSelection -> Double
startX, SetTextSelection -> Double
startY :: Double
, SetTextSelection -> Double
endX, SetTextSelection -> Double
endY :: Double
, SetTextSelection -> Bool
showStartHandle, SetTextSelection -> Bool
showEndHandle :: Bool
}
instance ToJSVal SetTextSelection where
toJSVal :: SetTextSelection -> JSM JSVal
toJSVal SetTextSelection {Bool
Double
startX :: SetTextSelection -> Double
startY :: SetTextSelection -> Double
endX :: SetTextSelection -> Double
endY :: SetTextSelection -> Double
showStartHandle :: SetTextSelection -> Bool
showEndHandle :: SetTextSelection -> Bool
startX :: Double
startY :: Double
endX :: Double
endY :: Double
showStartHandle :: Bool
showEndHandle :: Bool
..} = do
o <- JSM Object
create
set "startX" startX o
set "startY" startY o
set "endX" endX o
set "endY" endY o
set "showStartHandle" showStartHandle o
set "showEndHandle" showEndHandle o
toJSVal o
setTextSelection
:: MisoString
-> SetTextSelection
-> action
-> (MisoString -> action)
-> Effect parent model action
setTextSelection :: forall action parent model.
MisoString
-> SetTextSelection
-> action
-> (MisoString -> action)
-> Effect parent model action
setTextSelection MisoString
selector SetTextSelection
params action
action =
MisoString
-> MisoString
-> SetTextSelection
-> (() -> 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
"setTextSelection" MisoString
selector SetTextSelection
params (\() -> action
action)
data GetTextBoundingRect
= GetTextBoundingRect
{ GetTextBoundingRect -> Double
start, GetTextBoundingRect -> Double
end :: Double
}
instance ToJSVal GetTextBoundingRect where
toJSVal :: GetTextBoundingRect -> JSM JSVal
toJSVal GetTextBoundingRect {Double
start :: GetTextBoundingRect -> Double
end :: GetTextBoundingRect -> Double
start :: Double
end :: Double
..} = do
o <- JSM Object
create
set "start" start o
set "end" end o
toJSVal o
defaultGetTextBoundingRect :: GetTextBoundingRect
defaultGetTextBoundingRect :: GetTextBoundingRect
defaultGetTextBoundingRect = Double -> Double -> GetTextBoundingRect
GetTextBoundingRect Double
0 Double
0
getTextBoundingRect
:: MisoString
-> GetTextBoundingRect
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
getTextBoundingRect :: forall action parent model.
MisoString
-> GetTextBoundingRect
-> (JSVal -> action)
-> (MisoString -> action)
-> Effect parent model action
getTextBoundingRect = MisoString
-> MisoString
-> GetTextBoundingRect
-> (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
"getTextBoundingRect"
getSelectedText
:: MisoString
-> (MisoString -> action)
-> (MisoString -> action)
-> Effect parent model action
getSelectedText :: forall action parent model.
MisoString
-> (MisoString -> action)
-> (MisoString -> action)
-> Effect parent model action
getSelectedText MisoString
selector = MisoString
-> MisoString
-> ()
-> (MisoString -> 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
"getSelectedText" MisoString
selector ()