open Brr open Brr_note open Note module Js = Js_of_ocaml.Js type t = { title : Jstr.t } type Events.kind += | AddPage of t [@@unboxed] let create : unit -> Events.t = fun () -> (* The element which contains the information *) let input = El.input () ~at:At.[type' (Jstr.v "text")] in let state = S.hold (AddPage { title = Jstr.empty }) @@ Evr.on_el (Ev.input) (fun _ -> AddPage { title = El.prop El.Prop.value input } ) input in ( state , El.div [ El.div ~at:At.[class' (Jstr.v "row")] [ El.div ~at:At.[class' (Jstr.v "col-25")] [ El.label [ El.txt' "Titre"] ~at:[At.for' (Jstr.v "title")] ] ; El.div ~at:At.[class' (Jstr.v "col-75")] [ input ] ] ] ) let key_of_title : Jstr.t -> Jstr.t = fun title -> title let on_close : t -> State.t -> State.t = fun {title} state -> let page_id = key_of_title title in let new_date = (new%js Js.date_now)##getTime in let content_obj = object%js val content = Js.null val title = Js.some title val date = Js.some new_date end in State.load_page (Some page_id) state content_obj