module Web.HTML.HTMLImageElement
( HTMLImageElement
, fromHTMLElement
, fromElement
, fromNode
, fromChildNode
, fromNonDocumentTypeChildNode
, fromParentNode
, fromEventTarget
, toHTMLElement
, toElement
, toNode
, toChildNode
, toNonDocumentTypeChildNode
, toParentNode
, toEventTarget
, create
, create'
, alt
, setAlt
, src
, setSrc
, srcset
, setSrcset
, currentSrc
, sizes
, setSizes
, crossOrigin
, setCrossOrigin
, useMap
, setUseMap
, isMap
, setIsMap
, width
, setWidth
, height
, setHeight
, naturalWidth
, naturalHeight
, referrerPolicy
, setReferrerPolicy
, decoding
, setDecoding
, loading
, setLoading
, complete
) where
import Data.Maybe (Maybe, fromMaybe)
import Data.Nullable (Nullable)
import Data.Nullable as Nullable
import Effect (Effect)
import Effect.Uncurried (EffectFn1, EffectFn2, runEffectFn1, runEffectFn2)
import Prelude (Unit, map, (<<<), (<=<))
import Unsafe.Coerce (unsafeCoerce)
import Web.DOM (ChildNode, Element, Node, NonDocumentTypeChildNode, ParentNode)
import Web.Event.EventTarget (EventTarget)
import Web.HTML.HTMLElement (HTMLElement)
import Web.HTML.HTMLImageElement.CORSMode (CORSMode)
import Web.HTML.HTMLImageElement.CORSMode as CORSMode
import Web.HTML.HTMLImageElement.DecodingHint (DecodingHint)
import Web.HTML.HTMLImageElement.DecodingHint as DecodingHint
import Web.HTML.HTMLImageElement.Laziness (Laziness)
import Web.HTML.HTMLImageElement.Laziness as Laziness
import Web.Internal.FFI (unsafeReadProtoTagged)
foreign import data HTMLImageElement :: Type
fromHTMLElement :: HTMLElement -> Maybe HTMLImageElement
fromHTMLElement = unsafeReadProtoTagged "HTMLImageElement"
fromElement :: Element -> Maybe HTMLImageElement
fromElement = unsafeReadProtoTagged "HTMLImageElement"
fromNode :: Node -> Maybe HTMLImageElement
fromNode = unsafeReadProtoTagged "HTMLImageElement"
fromChildNode :: ChildNode -> Maybe HTMLImageElement
fromChildNode = unsafeReadProtoTagged "HTMLImageElement"
fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe HTMLImageElement
fromNonDocumentTypeChildNode = unsafeReadProtoTagged "HTMLImageElement"
fromParentNode :: ParentNode -> Maybe HTMLImageElement
fromParentNode = unsafeReadProtoTagged "HTMLImageElement"
fromEventTarget :: EventTarget -> Maybe HTMLImageElement
fromEventTarget = unsafeReadProtoTagged "HTMLImageElement"
toHTMLElement :: HTMLImageElement -> HTMLElement
toHTMLElement = unsafeCoerce
toElement :: HTMLImageElement -> Element
toElement = unsafeCoerce
toNode :: HTMLImageElement -> Node
toNode = unsafeCoerce
toChildNode :: HTMLImageElement -> ChildNode
toChildNode = unsafeCoerce
toNonDocumentTypeChildNode :: HTMLImageElement -> NonDocumentTypeChildNode
toNonDocumentTypeChildNode = unsafeCoerce
toParentNode :: HTMLImageElement -> ParentNode
toParentNode = unsafeCoerce
toEventTarget :: HTMLImageElement -> EventTarget
toEventTarget = unsafeCoerce
foreign import create :: Effect HTMLImageElement
foreign import createWithDimensions :: Int -> Int -> Effect HTMLImageElement
create' :: Int -> Int -> Effect HTMLImageElement
create' = createWithDimensions
foreign import alt :: HTMLImageElement -> Effect String
foreign import setAlt :: String -> HTMLImageElement -> Effect Unit
foreign import src :: HTMLImageElement -> Effect String
foreign import setSrc :: String -> HTMLImageElement -> Effect Unit
foreign import srcset :: HTMLImageElement -> Effect String
foreign import setSrcset :: String -> HTMLImageElement -> Effect Unit
foreign import currentSrc :: HTMLImageElement -> Effect String
foreign import sizes :: HTMLImageElement -> Effect String
foreign import setSizes :: String -> HTMLImageElement -> Effect Unit
foreign import _crossOrigin :: EffectFn1 HTMLImageElement (Nullable String)
crossOrigin :: HTMLImageElement -> Effect (Maybe CORSMode)
crossOrigin = map (CORSMode.parse <=< Nullable.toMaybe) <<< runEffectFn1 _crossOrigin
foreign import _setCrossOrigin :: EffectFn2 String HTMLImageElement Unit
setCrossOrigin :: CORSMode -> HTMLImageElement -> Effect Unit
setCrossOrigin mode = runEffectFn2 _setCrossOrigin (CORSMode.print mode)
foreign import useMap :: HTMLImageElement -> Effect String
foreign import setUseMap :: String -> HTMLImageElement -> Effect Unit
foreign import isMap :: HTMLImageElement -> Effect Boolean
foreign import setIsMap :: Boolean -> HTMLImageElement -> Effect Unit
foreign import width :: HTMLImageElement -> Effect Int
foreign import setWidth :: Int -> HTMLImageElement -> Effect Unit
foreign import height :: HTMLImageElement -> Effect Int
foreign import setHeight :: Int -> HTMLImageElement -> Effect Unit
foreign import naturalWidth :: HTMLImageElement -> Effect Int
foreign import naturalHeight :: HTMLImageElement -> Effect Int
foreign import referrerPolicy :: HTMLImageElement -> Effect String
foreign import setReferrerPolicy :: String -> HTMLImageElement -> Effect Unit
foreign import _decoding :: EffectFn1 HTMLImageElement String
decoding :: HTMLImageElement -> Effect DecodingHint
decoding = map (fromMaybe DecodingHint.Auto <<< DecodingHint.parse) <<< runEffectFn1 _decoding
foreign import _setDecoding :: EffectFn2 String HTMLImageElement Unit
setDecoding :: DecodingHint -> HTMLImageElement -> Effect Unit
setDecoding hint = runEffectFn2 _setDecoding (DecodingHint.print hint)
foreign import _loading :: EffectFn1 HTMLImageElement String
loading :: HTMLImageElement -> Effect Laziness
loading = map (fromMaybe Laziness.Eager <<< Laziness.parse) <<< runEffectFn1 _loading
foreign import _setLoading :: EffectFn2 String HTMLImageElement Unit
setLoading :: Laziness -> HTMLImageElement -> Effect Unit
setLoading laziness = runEffectFn2 _setLoading (Laziness.print laziness)
foreign import complete :: HTMLImageElement -> Effect Boolean