Source file keyboard_scope.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
open! Core
open Bonsai_web
type t =
{ view : Vdom.Node.t
; key_help : Vdom_keyboard.Help_text.t
}
let wrap ~view ~key_handler =
let open Vdom in
let on_keydown event =
match Vdom_keyboard.Keyboard_event_handler.handle_event key_handler event with
| Some action -> Effect.Many [ action; Effect.Stop_propagation ]
| None -> Effect.Ignore
in
let view =
Node.div
~attrs:
[ Attr.many_without_merge
[ Attr.tabindex (-1); Attr.on_keydown on_keydown ]
]
[ view ]
in
let key_help = Vdom_keyboard.Keyboard_event_handler.get_help_text key_handler in
{ view; key_help }
;;