View Source Yex.SharedType (y_ex v0.7.1)

The SharedType protocol defines the behavior of shared types in Yex.

Summary

Functions

Registers a change observer that will be message every time this shared type is modified.

Registers a change observer that will be message every time this shared type or any of its children is modified.

Unobserve the shared type for changes.

Unobserve the shared type for changes.

Types

t()

@type t() ::
  %Yex.Array{doc: term(), reference: term()}
  | %Yex.Map{doc: term(), reference: term()}
  | %Yex.Text{doc: term(), reference: term()}
  | %Yex.XmlElement{doc: term(), reference: term()}
  | %Yex.XmlText{doc: term(), reference: term()}
  | %Yex.XmlFragment{doc: term(), reference: term()}

Functions

observe(shared_type, opt \\ [])

@spec observe(
  t(),
  keyword()
) :: reference()

Registers a change observer that will be message every time this shared type is modified.

If the shared type changes, a message is delivered to the monitoring process in the shape of:

{:observe_event, ref, event, origin, metadata}

where:

  • ref is a monitor reference returned by this function;
  • event is a struct that describes the change;
  • origin is the origin passed to the Yex.Doc.transaction() function.
  • metadata is the metadata passed to the observe function.

Options

  • :metadata - provides metadata to be attached to this observe.

observe_deep(shared_type, opt \\ [])

@spec observe_deep(
  t(),
  keyword()
) :: reference()

Registers a change observer that will be message every time this shared type or any of its children is modified.

If the shared type changes, a message is delivered to the monitoring process in the shape of:

{:observe_deep_event, ref, events, origin, metadata}

where:

  • ref is a monitor reference returned by this function;
  • events is a array of event struct that describes the change;
  • origin is the origin passed to the Yex.Doc.transaction() function.
  • metadata is the metadata passed to the observe_deep function.

Options

  • :metadata - provides metadata to be attached to this observe.

unobserve(observe_ref)

@spec unobserve(reference()) :: :ok

Unobserve the shared type for changes.

unobserve_deep(observe_ref)

@spec unobserve_deep(reference()) :: :ok

Unobserve the shared type for changes.