Source file resizeObserver.ml
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
open! Import
class type resizeObserverSize =
object
method inlineSize : float Js.readonly_prop
method blockSize : float Js.readonly_prop
end
class type resizeObserverEntry =
object
method target : Dom.node Js.t Js.readonly_prop
method contentRect : Dom_html.clientRect Js.t Js.readonly_prop
method borderBoxSize : resizeObserverSize Js.t Js.js_array Js.t Js.readonly_prop
method contentBoxSize : resizeObserverSize Js.t Js.js_array Js.t Js.readonly_prop
end
class type resizeObserverOptions =
object
method box : Js.js_string Js.t Js.writeonly_prop
end
class type resizeObserver =
object
method observe : #Dom.node Js.t -> unit Js.meth
method observe_withOptions :
#Dom.node Js.t -> resizeObserverOptions Js.t -> unit Js.meth
method unobserve : #Dom.node Js.t -> unit Js.meth
method disconnect : unit Js.meth
end
let empty_resize_observer_options () : resizeObserverOptions Js.t = Js.Unsafe.obj [||]
let resizeObserver = Js.Unsafe.global##._ResizeObserver
let is_supported () = Js.Optdef.test resizeObserver
let resizeObserver :
( (resizeObserverEntry Js.t Js.js_array Js.t -> resizeObserver Js.t -> unit)
Js.callback
-> resizeObserver Js.t)
Js.constr =
resizeObserver
let observe
~(node : #Dom.node Js.t)
~(f : resizeObserverEntry Js.t Js.js_array Js.t -> resizeObserver Js.t -> unit)
?(box : Js.js_string Js.t option)
() : resizeObserver Js.t =
let obs = new%js resizeObserver (Js.wrap_callback f) in
(match box with
| None -> obs##observe node
| Some box ->
let opts = empty_resize_observer_options () in
opts##.box := box;
obs##observe_withOptions node opts);
obs