summaryrefslogtreecommitdiff
path: root/editor/forms/add_page.ml
diff options
context:
space:
mode:
Diffstat (limited to 'editor/forms/add_page.ml')
-rwxr-xr-xeditor/forms/add_page.ml53
1 files changed, 31 insertions, 22 deletions
diff --git a/editor/forms/add_page.ml b/editor/forms/add_page.ml
index ac45824..9786f47 100755
--- a/editor/forms/add_page.ml
+++ b/editor/forms/add_page.ml
@@ -3,10 +3,29 @@ open Brr_note
open Note
module Js = Js_of_ocaml.Js
-type t = { title : Jstr.t }
-type Events.kind +=
- | AddPage of t [@@unboxed]
+module Handler = struct
+
+ type t = { title : Jstr.t }
+
+ 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
+
+end
let create
: unit -> Events.t
@@ -17,13 +36,19 @@ let create
~at:At.[type' (Jstr.v "text")]
in
+ let init =
+ Events.Event
+ ( Handler.{ title = Jstr.empty }
+ , (module Handler : Events.Handler with type t = Handler.t)) in
+
let state =
- S.hold (AddPage { title = Jstr.empty })
+ S.hold init
@@ Evr.on_el
(Ev.input)
(fun _ ->
- AddPage { title = El.prop El.Prop.value input }
- )
+ Events.Event
+ ( Handler.{ title = El.prop El.Prop.value input }
+ , (module Handler : Events.Handler with type t = Handler.t)) )
input in
( state
@@ -38,19 +63,3 @@ let create
]
] )
-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