Skip to content

Commit 74ce06d

Browse files
committed
fix: CSP support for lazy functions
Fixes #593
1 parent 551376d commit 74ce06d

File tree

2 files changed

+128
-3
lines changed

2 files changed

+128
-3
lines changed

src/Html/Styled/Lazy.elm

+50-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
module Html.Styled.Lazy exposing (lazy, lazy2, lazy3, lazy4, lazy5, lazy6, lazy7)
1+
module Html.Styled.Lazy exposing
2+
( lazy, lazy2, lazy3, lazy4, lazy5, lazy6, lazy7
3+
, lazyWithNonce, lazy2WithNonce, lazy3WithNonce, lazy4WithNonce, lazy5WithNonce, lazy6WithNonce
4+
)
25

3-
{-| **NOTE:** `Html.Lazy` goes up to `lazy8`, but `Html.Styled.Lazy` can only go
4-
up to `lazy7` because it uses one of the arguments to track styling info.
6+
{-| **NOTE:** `Html.Lazy` goes up to `lazy8` and `lazy7WithNonce`, but
7+
`Html.Styled.Lazy` can only go up to `lazy7` and `lazy6WithNonce` because it
8+
uses one of the arguments to track styling info.
59
610
Since all Elm functions are pure we have a guarantee that the same input
711
@@ -17,6 +21,7 @@ This is a really cheap test and often makes things a lot faster, but definitely
1721
benchmark to be sure!
1822
1923
@docs lazy, lazy2, lazy3, lazy4, lazy5, lazy6, lazy7
24+
@docs lazyWithNonce, lazy2WithNonce, lazy3WithNonce, lazy4WithNonce, lazy5WithNonce, lazy6WithNonce
2025
2126
-}
2227

@@ -78,3 +83,45 @@ lazy6 =
7883
lazy7 : (a -> b -> c -> d -> e -> f -> g -> Html msg) -> a -> b -> c -> d -> e -> f -> g -> Html msg
7984
lazy7 =
8085
VirtualDom.Styled.lazy7
86+
87+
88+
{-| Same as `lazy` but takes a nonce string argument.
89+
-}
90+
lazyWithNonce : String -> (a -> Html msg) -> a -> Html msg
91+
lazyWithNonce =
92+
VirtualDom.Styled.lazyWithNonce
93+
94+
95+
{-| Same as `lazy2` but takes a nonce string argument.
96+
-}
97+
lazy2WithNonce : String -> (a -> b -> Html msg) -> a -> b -> Html msg
98+
lazy2WithNonce =
99+
VirtualDom.Styled.lazy2WithNonce
100+
101+
102+
{-| Same as `lazy3` but takes a nonce string argument.
103+
-}
104+
lazy3WithNonce : String -> (a -> b -> c -> Html msg) -> a -> b -> c -> Html msg
105+
lazy3WithNonce =
106+
VirtualDom.Styled.lazy3WithNonce
107+
108+
109+
{-| Same as `lazy4` but takes a nonce string argument.
110+
-}
111+
lazy4WithNonce : String -> (a -> b -> c -> d -> Html msg) -> a -> b -> c -> d -> Html msg
112+
lazy4WithNonce =
113+
VirtualDom.Styled.lazy4WithNonce
114+
115+
116+
{-| Same as `lazy5` but takes a nonce string argument.
117+
-}
118+
lazy5WithNonce : String -> (a -> b -> c -> d -> e -> Html msg) -> a -> b -> c -> d -> e -> Html msg
119+
lazy5WithNonce =
120+
VirtualDom.Styled.lazy5WithNonce
121+
122+
123+
{-| Same as `lazy6` but takes a nonce string argument.
124+
-}
125+
lazy6WithNonce : String -> (a -> b -> c -> d -> e -> f -> Html msg) -> a -> b -> c -> d -> e -> f -> Html msg
126+
lazy6WithNonce =
127+
VirtualDom.Styled.lazy6WithNonce

src/VirtualDom/Styled.elm

+78
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,17 @@ module VirtualDom.Styled exposing
1717
, keyedNodeNS
1818
, lazy
1919
, lazy2
20+
, lazy2WithNonce
2021
, lazy3
22+
, lazy3WithNonce
2123
, lazy4
24+
, lazy4WithNonce
2225
, lazy5
26+
, lazy5WithNonce
2327
, lazy6
28+
, lazy6WithNonce
2429
, lazy7
30+
, lazyWithNonce
2531
, makeSnippet
2632
, map
2733
, mapAttribute
@@ -256,6 +262,78 @@ lazyHelp7 fn arg1 arg2 arg3 arg4 arg5 arg6 arg7 =
256262
|> toUnstyled
257263

258264

265+
lazyWithNonce : String -> (a -> Node msg) -> a -> Node msg
266+
lazyWithNonce nonce fn arg =
267+
VirtualDom.lazy3 lazyHelpWithNonce nonce fn arg
268+
|> Unstyled
269+
270+
271+
lazyHelpWithNonce : String -> (a -> Node msg) -> a -> VirtualDom.Node msg
272+
lazyHelpWithNonce nonce fn arg =
273+
fn arg
274+
|> toNonceUnstyled nonce
275+
276+
277+
lazy2WithNonce : String -> (a -> b -> Node msg) -> a -> b -> Node msg
278+
lazy2WithNonce nonce fn arg1 arg2 =
279+
VirtualDom.lazy4 lazyHelp2WithNonce nonce fn arg1 arg2
280+
|> Unstyled
281+
282+
283+
lazyHelp2WithNonce : String -> (a -> b -> Node msg) -> a -> b -> VirtualDom.Node msg
284+
lazyHelp2WithNonce nonce fn arg1 arg2 =
285+
fn arg1 arg2
286+
|> toNonceUnstyled nonce
287+
288+
289+
lazy3WithNonce : String -> (a -> b -> c -> Node msg) -> a -> b -> c -> Node msg
290+
lazy3WithNonce nonce fn arg1 arg2 arg3 =
291+
VirtualDom.lazy5 lazyHelp3WithNonce nonce fn arg1 arg2 arg3
292+
|> Unstyled
293+
294+
295+
lazyHelp3WithNonce : String -> (a -> b -> c -> Node msg) -> a -> b -> c -> VirtualDom.Node msg
296+
lazyHelp3WithNonce nonce fn arg1 arg2 arg3 =
297+
fn arg1 arg2 arg3
298+
|> toNonceUnstyled nonce
299+
300+
301+
lazy4WithNonce : String -> (a -> b -> c -> d -> Node msg) -> a -> b -> c -> d -> Node msg
302+
lazy4WithNonce nonce fn arg1 arg2 arg3 arg4 =
303+
VirtualDom.lazy6 lazyHelp4WithNonce nonce fn arg1 arg2 arg3 arg4
304+
|> Unstyled
305+
306+
307+
lazyHelp4WithNonce : String -> (a -> b -> c -> d -> Node msg) -> a -> b -> c -> d -> VirtualDom.Node msg
308+
lazyHelp4WithNonce nonce fn arg1 arg2 arg3 arg4 =
309+
fn arg1 arg2 arg3 arg4
310+
|> toNonceUnstyled nonce
311+
312+
313+
lazy5WithNonce : String -> (a -> b -> c -> d -> e -> Node msg) -> a -> b -> c -> d -> e -> Node msg
314+
lazy5WithNonce nonce fn arg1 arg2 arg3 arg4 arg5 =
315+
VirtualDom.lazy7 lazyHelp5WithNonce nonce fn arg1 arg2 arg3 arg4 arg5
316+
|> Unstyled
317+
318+
319+
lazyHelp5WithNonce : String -> (a -> b -> c -> d -> e -> Node msg) -> a -> b -> c -> d -> e -> VirtualDom.Node msg
320+
lazyHelp5WithNonce nonce fn arg1 arg2 arg3 arg4 arg5 =
321+
fn arg1 arg2 arg3 arg4 arg5
322+
|> toNonceUnstyled nonce
323+
324+
325+
lazy6WithNonce : String -> (a -> b -> c -> d -> e -> f -> Node msg) -> a -> b -> c -> d -> e -> f -> Node msg
326+
lazy6WithNonce nonce fn arg1 arg2 arg3 arg4 arg5 arg6 =
327+
VirtualDom.lazy8 lazyHelp6WithNonce nonce fn arg1 arg2 arg3 arg4 arg5 arg6
328+
|> Unstyled
329+
330+
331+
lazyHelp6WithNonce : String -> (a -> b -> c -> d -> e -> f -> Node msg) -> a -> b -> c -> d -> e -> f -> VirtualDom.Node msg
332+
lazyHelp6WithNonce nonce fn arg1 arg2 arg3 arg4 arg5 arg6 =
333+
fn arg1 arg2 arg3 arg4 arg5 arg6
334+
|> toNonceUnstyled nonce
335+
336+
259337
type Scope
260338
= Scope String
261339

0 commit comments

Comments
 (0)