-----------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
-----------------------------------------------------------------------------
-- |
-- Module      :  Miso.Native.X.Element.Webview.Method
-- Copyright   :  (C) 2016-2026 David M. Johnson
-- License     :  BSD3-style (see the file LICENSE)
-- Maintainer  :  David M. Johnson <code@dmj.io>
-- Stability   :  experimental
-- Portability :  non-portable
--
-- __N.B.__ The Desktop-only @cookies.*@ methods
-- (@cookies.get@ / @cookies.set@ / @cookies.remove@ / @cookies.flushStore@)
-- are not modelled here. They can be invoked directly with
-- 'Miso.Native.FFI.invokeExec' if required.
--
----------------------------------------------------------------------------
module Miso.Native.X.Element.Webview.Method
  ( -- *** Methods
    reload
  , eval
  ) where
-----------------------------------------------------------------------------
import           Miso hiding (eval, reload)
import           Miso.Native.FFI (invokeExec)
-----------------------------------------------------------------------------
-- | Params object for 'eval'.
newtype Eval = Eval MisoString
-----------------------------------------------------------------------------
instance ToJSVal Eval where
  toJSVal :: Eval -> IO JSVal
toJSVal (Eval MisoString
func) = do
    o <- IO Object
create
    set "func" func o
    toJSVal o
-----------------------------------------------------------------------------
-- | https://lynxjs.org/api/elements/built-in/webview.html#reload
--
-- Reloads the selected \<webview\>.
--
-- > reload "#myWebview" Reloaded ReloadFailed
--
reload
  :: MisoString
  -> action
  -> (MisoString -> action)
  -> Effect context props model action
reload :: forall action context props model.
MisoString
-> action
-> (MisoString -> action)
-> Effect context props model action
reload MisoString
selector action
action = MisoString
-> MisoString
-> ()
-> (() -> action)
-> (MisoString -> action)
-> Effect context props model action
forall params argument action context props model.
(ToJSVal params, FromJSVal argument) =>
MisoString
-> MisoString
-> params
-> (argument -> action)
-> (MisoString -> action)
-> Effect context props model action
invokeExec MisoString
"reload" MisoString
selector () (\() -> action
action)
-----------------------------------------------------------------------------
-- | https://lynxjs.org/api/elements/built-in/webview.html#eval
--
-- Calls a JavaScript function inside the selected \<webview\>.
--
-- > eval "#myWebview" "alert('hi')" Evaluated EvalFailed
--
eval
  :: MisoString
  -> MisoString
  -- ^ JavaScript function to evaluate
  -> action
  -> (MisoString -> action)
  -> Effect context props model action
eval :: forall action context props model.
MisoString
-> MisoString
-> action
-> (MisoString -> action)
-> Effect context props model action
eval MisoString
selector MisoString
func action
action =
  MisoString
-> MisoString
-> Eval
-> (() -> action)
-> (MisoString -> action)
-> Effect context props model action
forall params argument action context props model.
(ToJSVal params, FromJSVal argument) =>
MisoString
-> MisoString
-> params
-> (argument -> action)
-> (MisoString -> action)
-> Effect context props model action
invokeExec MisoString
"eval" MisoString
selector (MisoString -> Eval
Eval MisoString
func) (\() -> action
action)
-----------------------------------------------------------------------------