{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}
module Miso.Native.Element.Text.Method
(
setTextSelection
, getTextBoundingRect
, getSelectedText
, SetTextSelection (..)
, GetTextBoundingRect (GetTextBoundingRect)
, defaultGetTextBoundingRect
) where
import Miso
import Miso.Native.FFI (invokeExec)
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 -> IO 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 <- IO 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 context props model action
setTextSelection :: forall action context props model.
Text
-> SetTextSelection
-> action
-> (Text -> action)
-> Effect context props model action
setTextSelection Text
selector SetTextSelection
params action
action =
Text
-> Text
-> SetTextSelection
-> (() -> action)
-> (Text -> action)
-> Effect context props model action
forall params argument action context props model.
(ToJSVal params, FromJSVal argument) =>
Text
-> Text
-> params
-> (argument -> action)
-> (Text -> action)
-> Effect context props model action
invokeExec Text
"setTextSelection" Text
selector SetTextSelection
params (\() -> action
action)
data GetTextBoundingRect
= GetTextBoundingRect
{ GetTextBoundingRect -> Double
start, GetTextBoundingRect -> Double
end :: Double
}
instance ToJSVal GetTextBoundingRect where
toJSVal :: GetTextBoundingRect -> IO JSVal
toJSVal GetTextBoundingRect {Double
start :: GetTextBoundingRect -> Double
end :: GetTextBoundingRect -> Double
start :: Double
end :: Double
..} = do
o <- IO 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 context props model action
getTextBoundingRect :: forall action context props model.
Text
-> GetTextBoundingRect
-> (JSVal -> action)
-> (Text -> action)
-> Effect context props model action
getTextBoundingRect = Text
-> Text
-> GetTextBoundingRect
-> (JSVal -> action)
-> (Text -> action)
-> Effect context props model action
forall params argument action context props model.
(ToJSVal params, FromJSVal argument) =>
Text
-> Text
-> params
-> (argument -> action)
-> (Text -> action)
-> Effect context props model action
invokeExec Text
"getTextBoundingRect"
getSelectedText
:: MisoString
-> (MisoString -> action)
-> (MisoString -> action)
-> Effect context props model action
getSelectedText :: forall action context props model.
Text
-> (Text -> action)
-> (Text -> action)
-> Effect context props model action
getSelectedText Text
selector = Text
-> Text
-> ()
-> (Text -> action)
-> (Text -> action)
-> Effect context props model action
forall params argument action context props model.
(ToJSVal params, FromJSVal argument) =>
Text
-> Text
-> params
-> (argument -> action)
-> (Text -> action)
-> Effect context props model action
invokeExec Text
"getSelectedText" Text
selector ()