package incr_dom

  1. Overview
  2. Docs

This module has a small collection of helpful bits of javascript that have no other obvious home.

module Rect : sig ... end
val round_float_rect : ?round:(float -> int) -> float Rect.t -> int Rect.t
val viewport_rect : unit -> int Rect.t

viewport_rect () gives you the rectangle that corresponds to the size of the entire browser window

val viewport_rect_of_element : Js_of_ocaml.Dom_html.element Js_of_ocaml.Js.t -> float Rect.t

viewport_rect_of_element el gives you the bounding box rectangle for a single element

val client_rect : unit -> int Rect.t

client_rect () gives you the rectangle that corresponds to the size of the entire browser window without the scroll bars.

val client_rect_of_element : Js_of_ocaml.Dom_html.element Js_of_ocaml.Js.t -> float Rect.t

client_rect_of_element el gives you the inner box rectangle for a single element, not including its scroll bars if it has any.

val element_is_in_viewport : Js_of_ocaml.Dom_html.element Js_of_ocaml.Js.t -> bool

Returns true iff the element in question is in view.

val scroll : ?id:string -> unit -> unit

Find an element with an id (default as "keep-in-view"), and, if it exists, scrolls the UI so that that element is in view.

type rows_or_columns =
  1. | Rows
  2. | Columns
val sexp_of_rows_or_columns : rows_or_columns -> Sexplib0.Sexp.t
val rows_or_columns_of_sexp : Sexplib0.Sexp.t -> rows_or_columns
val bin_shape_rows_or_columns : Core.Bin_prot.Shape.t
val bin_size_rows_or_columns : rows_or_columns Core.Bin_prot.Size.sizer
val bin_write_rows_or_columns : rows_or_columns Core.Bin_prot.Write.writer
val bin_writer_rows_or_columns : rows_or_columns Core.Bin_prot.Type_class.writer
val bin_read_rows_or_columns : rows_or_columns Core.Bin_prot.Read.reader
val __bin_read_rows_or_columns__ : (int -> rows_or_columns) Core.Bin_prot.Read.reader
val bin_reader_rows_or_columns : rows_or_columns Core.Bin_prot.Type_class.reader
val bin_rows_or_columns : rows_or_columns Core.Bin_prot.Type_class.t
val rows : rows_or_columns
val columns : rows_or_columns
val is_rows : rows_or_columns -> bool
val is_columns : rows_or_columns -> bool
val rows_val : rows_or_columns -> unit option
val columns_val : rows_or_columns -> unit option
module Variants_of_rows_or_columns : sig ... end
val compare_rows_or_columns : rows_or_columns -> rows_or_columns -> int
val find_visible_range : length:int -> nth_element_id:(int -> string) -> rows_or_columns -> (int * int) option

find_visible_range ~length ~nth_element_id layout is useful to find visible rows or columns of a table. The time cost is O(log(length)). It assumes the rows/columns are non-overlapping and arranged monotonically, though the order doesn't matter. It's assumed that the rows are laid out from 0 to length - 1.

If no row is visible, then None is returned. Otherwise, the inclusive upper and lower bounds of the visible rows are returned.

scroll_container node finds the closest scrollable ancestor in the DOM tree. If there is no scrollable element above the node passed in, then the document will be returned

OCaml

Innovation. Community. Security.