package incr_dom

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file helpers.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
open! Core
open! Import
open Vdom_helpers
include Helpers_intf

let make (type model action state) driver
  : (module S with type model = model and type action = action and type state = state)
  =
  let view_obs = Incr.observe (Driver.view_incr driver) in
  Incr.stabilize ();
  (module struct
    type nonrec model = model
    type nonrec action = action
    type nonrec state = state

    let show_view ?selector () =
      let node = view_obs |> Incr.Observer.value_exn |> Node_helpers.unsafe_convert_exn in
      let node =
        match selector with
        | None -> node
        | Some selector -> Node_helpers.select_first_exn node ~selector
      in
      node |> Node_helpers.to_string_html |> print_endline
    ;;

    let show_model () =
      driver
      |> Driver.model_var
      |> Incr.Var.value
      |> Driver.sexp_of_model driver
      |> print_s
    ;;

    let do_actions actions = Queue.enqueue_all (Driver.action_queue driver) actions
    let set_model model = Incr.Var.set (Driver.model_var driver) model
    let perform_update () = Driver.perform_update driver

    let get_element ~selector =
      let node = view_obs |> Incr.Observer.value_exn |> Node_helpers.unsafe_convert_exn in
      Node_helpers.select_first_exn node ~selector
    ;;

    let click_on ~selector =
      let element = get_element ~selector in
      Node_helpers.User_actions.click_on element
    ;;

    let input_text ~selector ~text =
      let element = get_element ~selector in
      Node_helpers.User_actions.input_text element ~text
    ;;
  end)
;;
OCaml

Innovation. Community. Security.