11module Web.HTML.HTMLImageElement
22 ( HTMLImageElement
3+ , CORSMode (..)
4+ , DecodingHint (..)
5+ , Laziness (..)
36 , fromHTMLElement
47 , fromElement
58 , fromNode
@@ -23,6 +26,8 @@ module Web.HTML.HTMLImageElement
2326 , srcset
2427 , setSrcset
2528 , currentSrc
29+ , sizes
30+ , setSizes
2631 , crossOrigin
2732 , setCrossOrigin
2833 , useMap
@@ -44,13 +49,22 @@ module Web.HTML.HTMLImageElement
4449 , complete
4550 ) where
4651
47- import Data.Maybe (Maybe )
52+ import Data.Nullable (Nullable )
53+ import Data.Nullable as Nullable
54+ import Data.Maybe (Maybe , fromMaybe )
4855import Effect (Effect )
49- import Prelude (Unit )
56+ import Effect.Uncurried (EffectFn1 , EffectFn2 , runEffectFn1 , runEffectFn2 )
57+ import Prelude (Unit , map , (<<<), (<=<))
5058import Unsafe.Coerce (unsafeCoerce )
5159import Web.DOM (ChildNode , Element , Node , NonDocumentTypeChildNode , ParentNode )
5260import Web.Event.EventTarget (EventTarget )
5361import Web.HTML.HTMLElement (HTMLElement )
62+ import Web.HTML.HTMLImageElement.CORSMode (CORSMode )
63+ import Web.HTML.HTMLImageElement.CORSMode as CORSMode
64+ import Web.HTML.HTMLImageElement.DecodingHint (DecodingHint )
65+ import Web.HTML.HTMLImageElement.DecodingHint as DecodingHint
66+ import Web.HTML.HTMLImageElement.Laziness (Laziness )
67+ import Web.HTML.HTMLImageElement.Laziness as Laziness
5468import Web.Internal.FFI (unsafeReadProtoTagged )
5569
5670foreign import data HTMLImageElement :: Type
@@ -118,8 +132,15 @@ foreign import currentSrc :: HTMLImageElement -> Effect String
118132foreign import sizes :: HTMLImageElement -> Effect String
119133foreign import setSizes :: String -> HTMLImageElement -> Effect Unit
120134
121- foreign import crossOrigin :: HTMLImageElement -> Effect String
122- foreign import setCrossOrigin :: String -> HTMLImageElement -> Effect Unit
135+ foreign import crossOriginImpl :: EffectFn1 HTMLImageElement (Nullable String )
136+
137+ crossOrigin :: HTMLImageElement -> Effect (Maybe CORSMode )
138+ crossOrigin = map (CORSMode .parse <=< Nullable .toMaybe) (runEffectFn1 crossOriginImpl)
139+
140+ foreign import setCrossOriginImpl :: EffectFn2 String HTMLImageElement Unit
141+
142+ setCrossOrigin :: CORSMode -> HTMLImageElement -> Effect Unit
143+ setCrossOrigin mode = runEffectFn2 setCrossOriginImpl (CORSMode .print mode)
123144
124145foreign import useMap :: HTMLImageElement -> Effect String
125146foreign import setUseMap :: String -> HTMLImageElement -> Effect Unit
@@ -139,10 +160,24 @@ foreign import naturalHeight :: HTMLImageElement -> Effect Int
139160foreign import referrerPolicy :: HTMLImageElement -> Effect String
140161foreign import setReferrerPolicy :: String -> HTMLImageElement -> Effect Unit
141162
142- foreign import decoding :: HTMLImageElement -> Effect String
143- foreign import setDecoding :: String -> HTMLImageElement -> Effect Unit
163+ foreign import decodingImpl :: EffectFn1 HTMLImageElement DecodingHint
164+
165+ decoding :: HTMLImageElement -> Effect DecodingHint
166+ decoding = map (fromMaybe DecodingHint.Auto <<< DecodingHint .parse) (runEffectFn1 decodingImpl)
167+
168+ foreign import setDecodingImpl :: EffectFn2 String HTMLImageElement Unit
169+
170+ setDecoding :: DecodingHint -> HTMLImageElement -> Effect Unit
171+ setDecoding hint = runEffectFn2 setDecodingImpl (DecodingHint .print hint)
172+
173+ foreign import loadingImpl :: EffectFn1 HTMLImageElement String
174+
175+ loading :: HTMLImageElement -> Effect Laziness
176+ loading = map (fromMaybe Laziness.Eager <<< Laziness .parse) (runEffectFn1 loadingImpl)
177+
178+ foreign import setLoadingImpl :: EffectFn2 String HTMLImageElement Unit
144179
145- foreign import loading :: HTMLImageElement -> Effect String
146- foreign import setLoading :: String -> HTMLImageElement -> Effect Unit
180+ setLoading :: Laziness -> HTMLImageElement -> Effect Unit
181+ setLoading laziness = runEffectFn2 setLoadingImpl ( Laziness .print laziness)
147182
148183foreign import complete :: HTMLImageElement -> Effect Boolean
0 commit comments