Breeze.Viewport (Breeze v0.4.0)

Copy Markdown View Source

Helpers for working with scrollable viewport metrics.

Implicit event payloads include an %Breeze.Viewport{} struct in the "element" key.

Summary

Types

t()

Dimensions and scroll metrics for a rendered viewport.

Functions

Clamps a horizontal scroll offset to the viewport's valid range.

Clamps a vertical scroll offset to the viewport's valid range.

Returns the vertical scroll offset needed to reveal a range of rows.

Returns the vertical scroll offset needed to reveal a row.

Builds viewport metrics from a dimensions map.

Returns the largest valid horizontal scroll offset.

Returns the largest valid vertical scroll offset.

Types

t()

@type t() :: %Breeze.Viewport{
  content_height: non_neg_integer(),
  content_width: non_neg_integer() | nil,
  height: non_neg_integer(),
  left: integer(),
  top: integer(),
  viewport_height: non_neg_integer(),
  viewport_width: non_neg_integer() | nil,
  width: non_neg_integer() | nil
}

Dimensions and scroll metrics for a rendered viewport.

Functions

clamp_scroll_x(scroll_x, viewport)

@spec clamp_scroll_x(integer(), t() | map()) :: non_neg_integer()

Clamps a horizontal scroll offset to the viewport's valid range.

clamp_scroll_y(scroll_y, viewport)

@spec clamp_scroll_y(integer(), t() | map()) :: non_neg_integer()

Clamps a vertical scroll offset to the viewport's valid range.

ensure_range_visible(scroll_y, first_row, last_row, viewport, opts \\ [])

@spec ensure_range_visible(integer(), integer(), integer(), t() | map(), keyword()) ::
  non_neg_integer()

Returns the vertical scroll offset needed to reveal a range of rows.

Set :padding to keep additional rows visible above and below the range.

ensure_row_visible(scroll_y, row, viewport, opts \\ [])

@spec ensure_row_visible(integer(), integer(), t() | map(), keyword()) ::
  non_neg_integer()

Returns the vertical scroll offset needed to reveal a row.

from_dimensions(dimensions)

@spec from_dimensions(map() | nil) :: t()

Builds viewport metrics from a dimensions map.

max_scroll_x(viewport)

@spec max_scroll_x(t() | map()) :: non_neg_integer()

Returns the largest valid horizontal scroll offset.

max_scroll_y(viewport)

@spec max_scroll_y(t() | map()) :: non_neg_integer()

Returns the largest valid vertical scroll offset.