lib/live_view_native_swift_ui/modifiers/modal_presentations/presentation_detents.ex

defmodule LiveViewNativeSwiftUi.Modifiers.PresentationDetents do
  use LiveViewNativePlatform.Modifier

  alias LiveViewNativeSwiftUi.Types.{PresentationDetent}

  modifier_schema "presentation_detents" do
    field :detents, {:array, PresentationDetent}
    field :selection, :integer, default: nil

    change_event()
  end

  def params(detents, [selection: selection]), do: [detents: detents, selection: selection]
  def params([detent | _] = params) do
    with {:ok, _} <- PresentationDetent.cast(detent) do
      [detents: params]
    else
      _ ->
        params
    end
  end
  def params(params), do: params
end