aboutsummaryrefslogtreecommitdiff
path: root/lib/elements/input.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/elements/input.ml')
-rwxr-xr-xlib/elements/input.ml88
1 files changed, 41 insertions, 47 deletions
diff --git a/lib/elements/input.ml b/lib/elements/input.ml
index 62175d5..5def7d4 100755
--- a/lib/elements/input.ml
+++ b/lib/elements/input.ml
@@ -2,25 +2,26 @@ open Brr
open Brr_note
open Note
-(** Create a slider element, and a signal with the value *)
-let slider
- : at:Brr.At.t list -> Brr.El.t * float S.t
-
- = fun ~at ->
- let slider =
- El.input ~at () in
-
- let init_value = (Jstr.to_float (El.prop El.Prop.value slider)) in
-
- let event =
- Evr.on_el
- Ev.input (fun _ ->
- let raw_value = El.prop El.Prop.value slider in
- Jstr.to_float raw_value)
- slider
- |> S.hold init_value
- in
- slider, event
+(** Create a slider element, and a signal with the value.
+
+ [at] is the attribute list given to the element *)
+let slider : at:Brr.At.t list -> Brr.El.t * float S.t =
+ fun ~at ->
+ let slider = El.input ~at () in
+
+ let init_value = Jstr.to_float (El.prop El.Prop.value slider) in
+
+ let event =
+ Evr.on_el
+ Ev.input
+ (fun _ ->
+ let raw_value = El.prop El.Prop.value slider in
+ Jstr.to_float raw_value )
+ slider
+ |> S.hold init_value
+ in
+ (slider, event)
+
type file =
{ file : File.t
@@ -28,15 +29,13 @@ type file =
}
(** Read the content from the file *)
-let file_loader
- : file Note.E.send -> File.t -> unit
- = fun event file ->
- let blob = File.as_blob file in
- Fut.await
- (Blob.text blob)
- (Result.iter
- (fun content ->
- event ({file; content}) ))
+let file_loader : file Note.E.send -> File.t -> unit =
+ fun event file ->
+ let blob = File.as_blob file in
+ Fut.await
+ (Blob.text blob)
+ (Result.iter (fun content -> event { file; content }))
+
(** Create an imput which load a file.
@@ -44,27 +43,22 @@ let file_loader
files, and an event which gives access to the file.
*)
-let file_loader
- : Jstr.t -> Brr.El.t * file Note.event
- = fun selector ->
-
- let add_file_event, add_file_sender = Note.E.create () in
+let file_loader : Jstr.t -> Brr.El.t * file Note.event =
+ fun selector ->
+ let add_file_event, add_file_sender = Note.E.create () in
- let i = El.input ()
- ~at:[ At.type' (Jstr.v "file")
- ; (At.v (Jstr.v "accept")) selector
- ] in
+ let i =
+ El.input
+ ()
+ ~at:[ At.type' (Jstr.v "file"); (At.v (Jstr.v "accept")) selector ]
+ in
- (* The event return a list of files.
+ (* The event return a list of files.
- We are only interested by a single on, and keep only the first from the
- list. *)
- let on_change files =
- file_loader add_file_sender (List.hd files) in
+ We are only interested by a single on, and keep only the first from the
+ list. *)
+ let on_change files = file_loader add_file_sender (List.hd files) in
- Ev.listen
- Ev.change
- (fun _e -> on_change (El.Input.files i)) (El.as_target i);
+ Ev.listen Ev.change (fun _e -> on_change (El.Input.files i)) (El.as_target i);
- ( i
- , add_file_event )
+ (i, add_file_event)