Packages
live_svelte
0.4.1-rc0
0.18.0
0.18.0-rc0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.0
0.15.0-rc.6
0.15.0-rc.5
0.15.0-rc.4
0.15.0-rc.3
0.15.0-rc.2
0.15.0-rc.1
0.14.1
0.14.0
0.13.3
0.13.3-rc.1
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.2
0.10.1
0.10.0
0.9.0
0.9.0-rc2
0.9.0-rc1
0.9.0-rc0
0.8.0
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.5.0-rc0
0.4.2
0.4.2-rc0
0.4.1
0.4.1-rc0
0.4.0
0.3.5
0.3.5-rc1
0.3.5-rc0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.3.0-rc1
0.3.0-rc0
0.2.0
0.2.0-rc1
0.2.0-rc0
0.1.0
0.1.0-rc5
0.1.0-rc4
0.1.0-rc3
0.1.0-rc2
0.1.0-rc1
0.1.0-rc0
E2E reactivity for Svelte and LiveView
Current section
Files
Jump to
Current section
Files
lib/slots.ex
defmodule LiveSvelte.Slots do
@moduledoc false
import Phoenix.Component
@doc false
def rendered_slot_map(assigns) do
assigns
|> filter_slots_from_assigns()
|> render_slots()
end
@doc false
def js_process(assigns) do
assigns
|> Enum.map(fn
{:inner_block, value} -> {:default, value}
key_value -> key_value
end)
|> Enum.into(%{})
end
@doc false
def base_encode_64(assigns) do
assigns
|> Enum.map(fn {key, value} -> {key, Base.encode64(value)} end)
|> Enum.into(%{})
end
@doc false
defp filter_slots_from_assigns(assigns) do
assigns
|> Enum.filter(fn
{_key, [%{__slot__: _}]} -> true
_ -> false
end)
|> Enum.into(%{})
end
@doc false
defp render_slots(assigns) do
Enum.reduce(assigns, %{}, fn
{key, value}, acc -> Map.put(acc, key, render(%{slot: value}))
end)
end
@doc false
defp render(assigns) do
~H"""
<%= if assigns[:slot] do %>
<%= render_slot(@slot) %>
<% end %>
"""
|> Phoenix.HTML.Safe.to_iodata()
|> List.to_string()
|> String.trim()
end
end