lib/live_view_native_swift_ui/modifiers/view_styles/content_shape.ex

defmodule LiveViewNativeSwiftUi.Modifiers.ContentShape do
  use LiveViewNativePlatform.Modifier

  alias LiveViewNativeSwiftUi.Types.{Shape, ContentShapeKind}

  modifier_schema "content_shape" do
    field :kind, ContentShapeKind
    field :shape, Shape
    field :eo_fill, :boolean
  end

  def params(kind, shape, params) when is_list(params), do: [{:shape, shape}, {:kind, kind} | params]
  def params(params) do
    with {:ok, _} <- ContentShapeKind.cast(params) do
      [kind: params]
    else
      _ ->
        with {:ok, _} <- Shape.cast(params) do
          [shape: params]
        else
          _ ->
            params
        end
    end
  end
end