Skip to content

Commit d96bf12

Browse files
committed
adts for some attrs + sizes exports
1 parent d3f263e commit d96bf12

File tree

5 files changed

+153
-38
lines changed

5 files changed

+153
-38
lines changed

src/Web/HTML/HTMLImageElement.js

+12-30
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,12 @@ exports.currentSrc = function (image) {
8989

9090
// ----------------------------------------------------------------------------
9191

92-
exports.crossOrigin = function (image) {
93-
return function () {
94-
return image.crossOrigin;
95-
};
92+
exports._crossOrigin = function (image) {
93+
return image.crossOrigin;
9694
};
9795

98-
exports.setCrossOrigin = function (crossOrigin) {
99-
return function (image) {
100-
return function () {
101-
image.crossOrigin = crossOrigin;
102-
};
103-
};
96+
exports._setCrossOrigin = function (crossOrigin, image) {
97+
image.crossOrigin = crossOrigin;
10498
};
10599

106100
// ----------------------------------------------------------------------------
@@ -200,34 +194,22 @@ exports.setReferrerPolicy = function (referrerPolicy) {
200194

201195
// ----------------------------------------------------------------------------
202196

203-
exports.decoding = function (image) {
204-
return function () {
205-
return image.decoding;
206-
};
197+
exports._decoding = function (image) {
198+
return image.decoding;
207199
};
208200

209-
exports.setDecoding = function (decoding) {
210-
return function (image) {
211-
return function () {
212-
image.decoding = decoding;
213-
};
214-
};
201+
exports._setDecoding = function (decoding, image) {
202+
image.decoding = decoding;
215203
};
216204

217205
// ----------------------------------------------------------------------------
218206

219-
exports.loading = function (image) {
220-
return function () {
221-
return image.loading;
222-
};
207+
exports._loading = function (image) {
208+
return image.loading;
223209
};
224210

225-
exports.setLoading = function (loading) {
226-
return function (image) {
227-
return function () {
228-
image.loading = loading;
229-
};
230-
};
211+
exports._setLoading = function (loading, image) {
212+
image.loading = loading;
231213
};
232214

233215
// ----------------------------------------------------------------------------

src/Web/HTML/HTMLImageElement.purs

+40-8
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ module Web.HTML.HTMLImageElement
2323
, srcset
2424
, setSrcset
2525
, currentSrc
26+
, sizes
27+
, setSizes
2628
, crossOrigin
2729
, setCrossOrigin
2830
, useMap
@@ -44,13 +46,22 @@ module Web.HTML.HTMLImageElement
4446
, complete
4547
) where
4648

47-
import Data.Maybe (Maybe)
49+
import Data.Nullable (Nullable)
50+
import Data.Nullable as Nullable
51+
import Data.Maybe (Maybe, fromMaybe)
4852
import Effect (Effect)
49-
import Prelude (Unit)
53+
import Effect.Uncurried (EffectFn1, EffectFn2, runEffectFn1, runEffectFn2)
54+
import Prelude (Unit, map, (<<<), (<=<))
5055
import Unsafe.Coerce (unsafeCoerce)
5156
import Web.DOM (ChildNode, Element, Node, NonDocumentTypeChildNode, ParentNode)
5257
import Web.Event.EventTarget (EventTarget)
5358
import Web.HTML.HTMLElement (HTMLElement)
59+
import Web.HTML.HTMLImageElement.CORSMode (CORSMode)
60+
import Web.HTML.HTMLImageElement.CORSMode as CORSMode
61+
import Web.HTML.HTMLImageElement.DecodingHint (DecodingHint)
62+
import Web.HTML.HTMLImageElement.DecodingHint as DecodingHint
63+
import Web.HTML.HTMLImageElement.Laziness (Laziness)
64+
import Web.HTML.HTMLImageElement.Laziness as Laziness
5465
import Web.Internal.FFI (unsafeReadProtoTagged)
5566

5667
foreign import data HTMLImageElement :: Type
@@ -118,8 +129,15 @@ foreign import currentSrc :: HTMLImageElement -> Effect String
118129
foreign import sizes :: HTMLImageElement -> Effect String
119130
foreign import setSizes :: String -> HTMLImageElement -> Effect Unit
120131

121-
foreign import crossOrigin :: HTMLImageElement -> Effect String
122-
foreign import setCrossOrigin :: String -> HTMLImageElement -> Effect Unit
132+
foreign import _crossOrigin :: EffectFn1 HTMLImageElement (Nullable String)
133+
134+
crossOrigin :: HTMLImageElement -> Effect (Maybe CORSMode)
135+
crossOrigin = map (CORSMode.parse <=< Nullable.toMaybe) <<< runEffectFn1 _crossOrigin
136+
137+
foreign import _setCrossOrigin :: EffectFn2 String HTMLImageElement Unit
138+
139+
setCrossOrigin :: CORSMode -> HTMLImageElement -> Effect Unit
140+
setCrossOrigin mode = runEffectFn2 _setCrossOrigin (CORSMode.print mode)
123141

124142
foreign import useMap :: HTMLImageElement -> Effect String
125143
foreign import setUseMap :: String -> HTMLImageElement -> Effect Unit
@@ -139,10 +157,24 @@ foreign import naturalHeight :: HTMLImageElement -> Effect Int
139157
foreign import referrerPolicy :: HTMLImageElement -> Effect String
140158
foreign import setReferrerPolicy :: String -> HTMLImageElement -> Effect Unit
141159

142-
foreign import decoding :: HTMLImageElement -> Effect String
143-
foreign import setDecoding :: String -> HTMLImageElement -> Effect Unit
160+
foreign import _decoding :: EffectFn1 HTMLImageElement String
161+
162+
decoding :: HTMLImageElement -> Effect DecodingHint
163+
decoding = map (fromMaybe DecodingHint.Auto <<< DecodingHint.parse) <<< runEffectFn1 _decoding
164+
165+
foreign import _setDecoding :: EffectFn2 String HTMLImageElement Unit
166+
167+
setDecoding :: DecodingHint -> HTMLImageElement -> Effect Unit
168+
setDecoding hint = runEffectFn2 _setDecoding (DecodingHint.print hint)
169+
170+
foreign import _loading :: EffectFn1 HTMLImageElement String
171+
172+
loading :: HTMLImageElement -> Effect Laziness
173+
loading = map (fromMaybe Laziness.Eager <<< Laziness.parse) <<< runEffectFn1 _loading
174+
175+
foreign import _setLoading :: EffectFn2 String HTMLImageElement Unit
144176

145-
foreign import loading :: HTMLImageElement -> Effect String
146-
foreign import setLoading :: String -> HTMLImageElement -> Effect Unit
177+
setLoading :: Laziness -> HTMLImageElement -> Effect Unit
178+
setLoading laziness = runEffectFn2 _setLoading (Laziness.print laziness)
147179

148180
foreign import complete :: HTMLImageElement -> Effect Boolean
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
module Web.HTML.HTMLImageElement.CORSMode
2+
( CORSMode(..)
3+
, parse
4+
, print
5+
) where
6+
7+
import Data.Maybe (Maybe(..))
8+
import Prelude (class Eq, class Ord, class Show)
9+
10+
data CORSMode
11+
= Anonymous
12+
| UseCredentials
13+
14+
derive instance eqCORSMode :: Eq CORSMode
15+
derive instance ordCORSMode :: Ord CORSMode
16+
17+
instance showDecodingHint :: Show CORSMode where
18+
show = case _ of
19+
Anonymous -> "Anonymous"
20+
UseCredentials -> "UseCredentials"
21+
22+
parse :: String -> Maybe CORSMode
23+
parse = case _ of
24+
"" -> Just Anonymous
25+
"anonymous" -> Just Anonymous
26+
"use-credentials" -> Just UseCredentials
27+
_ -> Nothing
28+
29+
print :: CORSMode -> String
30+
print = case _ of
31+
Anonymous -> "anonymous"
32+
UseCredentials -> "use-credentials"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
module Web.HTML.HTMLImageElement.DecodingHint
2+
( DecodingHint(..)
3+
, parse
4+
, print
5+
) where
6+
7+
import Data.Maybe (Maybe(..))
8+
import Prelude (class Eq, class Ord, class Show)
9+
10+
data DecodingHint
11+
= Sync
12+
| Async
13+
| Auto
14+
15+
derive instance eqDecodingHint :: Eq DecodingHint
16+
derive instance ordDecodingHint :: Ord DecodingHint
17+
18+
instance showDecodingHint :: Show DecodingHint where
19+
show = case _ of
20+
Sync -> "Sync"
21+
Async -> "Async"
22+
Auto -> "Auto"
23+
24+
parse :: String -> Maybe DecodingHint
25+
parse = case _ of
26+
"" -> Just Auto
27+
"sync" -> Just Sync
28+
"async" -> Just Async
29+
"auto" -> Just Auto
30+
_ -> Nothing
31+
32+
print :: DecodingHint -> String
33+
print = case _ of
34+
Sync -> "sync"
35+
Async -> "async"
36+
Auto -> "auto"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
module Web.HTML.HTMLImageElement.Laziness
2+
( Laziness(..)
3+
, parse
4+
, print
5+
) where
6+
7+
import Data.Maybe (Maybe(..))
8+
import Prelude (class Eq, class Ord, class Show)
9+
10+
data Laziness
11+
= Eager
12+
| Lazy
13+
14+
derive instance eqDecodingHint :: Eq Laziness
15+
derive instance ordDecodingHint :: Ord Laziness
16+
17+
instance showDecodingHint :: Show Laziness where
18+
show = case _ of
19+
Eager -> "Eager"
20+
Lazy -> "Lazy"
21+
22+
parse :: String -> Maybe Laziness
23+
parse = case _ of
24+
"" -> Just Eager
25+
"eager" -> Just Eager
26+
"lazy" -> Just Lazy
27+
_ -> Nothing
28+
29+
30+
print :: Laziness -> String
31+
print = case _ of
32+
Eager -> "eager"
33+
Lazy -> "lazy"

0 commit comments

Comments
 (0)