package virtual_dom

  1. Overview
  2. Docs
module Element : sig ... end

The values associated with an Element and element like nodes. (that is in practice all nodes that aren't just text).

module Widget : Base.T
type t =
  1. | None
  2. | Text of Base.string
  3. | Element of Element.t
  4. | Widget of Widget.t
type node_creator = ?key:Base.string -> Virtual_dom__.Attr.t Base.list -> t Base.list -> t
type node_creator_childless = ?key:Base.string -> Virtual_dom__.Attr.t Base.list -> t
val none : t
val text : Base.string -> t
val textf : ('a, Base.unit, Base.string, t) Base.format4 -> 'a
val a : node_creator
val body : node_creator
val button : node_creator
val code : node_creator
val div : node_creator
val h1 : node_creator
val h2 : node_creator
val h3 : node_creator
val h4 : node_creator
val h5 : node_creator
val h6 : node_creator
val header : node_creator
val html : node_creator
val input : node_creator
val textarea : node_creator
val select : node_creator
val option : node_creator
val label : node_creator
val li : node_creator
val p : node_creator
val pre : node_creator
val section : node_creator
val span : node_creator
val strong : node_creator
val table : node_creator
val tbody : node_creator
val td : node_creator
val th : node_creator
val thead : node_creator
val tr : node_creator
val ul : node_creator
val ol : node_creator
val create : Base.string -> ?key:Base.string -> Virtual_dom__.Attr.t Base.list -> t Base.list -> t

key is used by Virtual_dom as a hint during diffing/patching

val create_svg : Base.string -> ?key:Base.string -> Virtual_dom__.Attr.t Base.list -> t Base.list -> t

Like create but for svg nodes (i.e. all to be placed inside <svg> tag). This is needed as browsers maintain separate namespaces for html and svg, and failing to use the correct one may result in delayed redraws.

val unsafe_to_js : t -> Js_of_ocaml.Js.Unsafe.any
val widget : ?destroy: ('s -> Js_of_ocaml.Dom_html.element as 'e Js_of_ocaml.Js.t -> Base.unit) -> ?update:('s -> 'e Js_of_ocaml.Js.t -> 's * 'e Js_of_ocaml.Js.t) -> id:('s * 'e Js_of_ocaml.Js.t) Base.Type_equal.Id.t -> init:(Base.unit -> 's * 'e Js_of_ocaml.Js.t) -> Base.unit -> t

Creates a Node.t that has fine-grained control over the Browser DOM node.

Callbacks =========

init: Returns a Browser DOM Node and a widget state object. The Browser DOM node is mounted into the dom in the location where the Node.t object would otherwise be.

update: Given the previous Browser DOM Node and state, makes any changes necessary to either and returns a new state and Browser DOM Node.

destroy: Called when this Node.t is removed from the Virtual_dom. Performs any necessary cleanup.

Other =====

The id is used to compare widgets, and is used to make sure that the state from one widget doesn't get interpreted as the state for another. Otherwise, you would be able to implement Obj.magic using this API.

WARNING: While other Virtual_dom APIs shield the application from script injection attacks, the Widget.create function allows a developer to bypass these safeguards and manually create DOM nodes which could allow an attacker to change the behavior of the application or exfiltrate data.

In using this API, you are being trusted to understand and follow security best-practices.

module Patch : sig ... end