View Source Inertia.ScrollMetadata protocol (Inertia v2.6.0)

Protocol for extracting scroll metadata from paginated data structures.

This protocol allows different pagination libraries to provide their own implementation for extracting metadata needed by the InfiniteScroll component.

Required Metadata

Implementations should return a map with the following keys:

  • :page_name - The query parameter name for pagination (e.g., "page")
  • :current_page - The current page number
  • :previous_page - The previous page number, or nil if on first page
  • :next_page - The next page number, or nil if on last page

Example Implementation

defimpl Inertia.ScrollMetadata, for: Scrivener.Page do
  def to_scroll_metadata(page) do
    %{
      page_name: "page",
      current_page: page.page_number,
      previous_page: if(page.page_number > 1, do: page.page_number - 1),
      next_page: if(page.page_number < page.total_pages, do: page.page_number + 1)
    }
  end
end

Summary

Types

t()

All the types that implement this protocol.

Functions

Extracts scroll metadata from paginated data.

Types

t()

@type t() :: term()

All the types that implement this protocol.

Functions

to_scroll_metadata(data)

@spec to_scroll_metadata(t()) :: %{
  page_name: String.t(),
  current_page: integer() | String.t() | nil,
  previous_page: integer() | String.t() | nil,
  next_page: integer() | String.t() | nil
}

Extracts scroll metadata from paginated data.

Returns a map with :page_name, :current_page, :previous_page, and :next_page.