defmodule Phoenix.LiveEditable.Helpers do
def ple(assigns) when is_map(assigns) do
id = assigns[:id]
module = assigns[:ple_handler] || Phoenix.LiveEditable.Handler.Default
assigns = assigns |> Map.delete(:__changed__)
if module == nil or not is_atom(module) do
raise ArgumentError,
".ple expects module={...} to be given and to be an atom, " <>
"got: #{inspect(module)}"
end
if id == nil do
raise ArgumentError, ".ple expects id={...} to be given, got: nil"
end
case module.__live__() do
%{kind: :component} ->
%Phoenix.LiveView.Component{id: id, assigns: assigns, component: module}
%{kind: kind} ->
raise ArgumentError, "expected #{inspect(module)} to be a component, but it is a #{kind}"
end
end
def live_editable(assigns) do
ple(assigns)
end
end