1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
let cdn_base = "https://unpkg.com"
let script_node src = JSX.node "script" [ ("src", `String src) ] []
let make ?(version = "2.0.4") ?integrity () =
let src = Printf.sprintf "%s/htmx.org@%s" cdn_base version in
match integrity with
| None -> script_node src
| Some hash ->
JSX.node "script"
[
("src", `String src);
("integrity", `String hash);
("crossorigin", `String "anonymous");
]
[]
module Extensions = struct
let extension_script ~package ?version () =
let src =
match version with
| Some v -> Printf.sprintf "%s/htmx-ext-%s@%s" cdn_base package v
| None -> Printf.sprintf "%s/htmx-ext-%s" cdn_base package
in
script_node src
module SSE = struct
let make ?version () = extension_script ~package:"sse" ?version ()
end
module WS = struct
let make ?version () = extension_script ~package:"ws" ?version ()
end
module Class_tools = struct
let make ?version () = extension_script ~package:"class-tools" ?version ()
end
module Preload = struct
let make ?version () = extension_script ~package:"preload" ?version ()
end
module Path_deps = struct
let make ?version () = extension_script ~package:"path-deps" ?version ()
end
module Loading_states = struct
let make ?version () =
extension_script ~package:"loading-states" ?version ()
end
module Response_targets = struct
let make ?version () =
extension_script ~package:"response-targets" ?version ()
end
module Head_support = struct
let make ?version () = extension_script ~package:"head-support" ?version ()
end
end