View Source Kino.Frame (Kino v0.9.0)

A placeholder for outputs.

A frame wraps outputs that can be dynamically updated at any time.

Also see Kino.animate/3 which offers a convenience on top of this kino.

examples

Examples

frame = Kino.Frame.new() |> Kino.render()

for i <- 1..100 do
  Kino.Frame.render(frame, i)
  Process.sleep(50)
end

Or with a scheduled task in the background.

frame = Kino.Frame.new() |> Kino.render()

Kino.Frame.periodically(frame, 50, 0, fn i ->
  Kino.Frame.render(frame, i)
  {:cont, i + 1}
end)

Link to this section Summary

Functions

Renders and appends the given term to the frame.

Removes all outputs within the given frame.

Creates a new frame.

Registers a callback to run periodically in the frame process.

Renders the given term within the frame.

Link to this section Types

@opaque t()

Link to this section Functions

Link to this function

append(frame, term, opts \\ [])

View Source
@spec append(t(), term(), keyword()) :: :ok

Renders and appends the given term to the frame.

options

Options

  • :to - the client id to whom the update is directed. This option is useful when updating frame in response to client events, such as form submission
Link to this function

clear(frame, opts \\ [])

View Source
@spec clear(
  t(),
  keyword()
) :: :ok

Removes all outputs within the given frame.

options

Options

  • :to - the client id to whom the update is directed. This option is useful when updating frame in response to client events, such as form submission
@spec new() :: t()

Creates a new frame.

Link to this function

periodically(frame, interval_ms, acc, fun)

View Source
@spec periodically(t(), pos_integer(), term(), (term() -> {:cont, term()} | :halt)) ::
  :ok

Registers a callback to run periodically in the frame process.

The callback is run every interval_ms milliseconds and receives the accumulated value. The callback should return either of:

  • {:cont, acc} - the continue with the new accumulated value

  • :halt - to no longer schedule callback evaluation

The callback is run for the first time immediately upon registration.

Link to this function

render(frame, term, opts \\ [])

View Source
@spec render(t(), term(), keyword()) :: :ok

Renders the given term within the frame.

This works similarly to Kino.render/1, but the rendered output replaces existing frame contents.

options

Options

  • :to - the client id to whom the update is directed. This option is useful when updating frame in response to client events, such as form submission