diff --git a/example_project/lib/example_web/live/live_json.ex b/example_project/lib/example_web/live/live_json.ex index 88b3792..a5fb6bd 100644 --- a/example_project/lib/example_web/live/live_json.ex +++ b/example_project/lib/example_web/live/live_json.ex @@ -3,7 +3,16 @@ defmodule ExampleWeb.LiveJson do def render(assigns) do ~H""" - <.svelte name="LiveJson" live_json_props={%{big_data_set: @ljbig_data_set}} /> +
+
+ SSR: + <.svelte name="LiveJson" live_json_props={%{big_data_set: @ljbig_data_set}} /> +
+
+ No SSR: + <.svelte name="LiveJson" live_json_props={%{big_data_set: @ljbig_data_set}} ssr={false} /> +
+
""" end diff --git a/lib/component.ex b/lib/component.ex index cef9066..c655c9e 100644 --- a/lib/component.ex +++ b/lib/component.ex @@ -78,6 +78,7 @@ defmodule LiveSvelte do assigns = assigns + |> assign(:init, init) |> assign(:slots, slots) |> assign(:ssr_render, ssr_code) @@ -88,7 +89,7 @@ defmodule LiveSvelte do id={id(@name)} data-name={@name} data-props={json(@props)} - data-live-json={render_live_json(@live_json_props, @ssr_render)} + data-live-json={if @init, do: json(@live_json_props), else: @live_json_props |> Map.keys() |> json()} data-slots={Slots.base_encode_64(@slots) |> json} phx-update="ignore" phx-hook="SvelteHook" @@ -119,9 +120,6 @@ defmodule LiveSvelte do end end - def render_live_json(data, nil), do: json(Map.keys(data)) - def render_live_json(data, _ssr_render), do: json(data) - defp id(name), do: "#{name}-#{System.unique_integer([:positive])}" @doc false diff --git a/lib/live_json.ex b/lib/live_json.ex index c76d9e0..de51788 100644 --- a/lib/live_json.ex +++ b/lib/live_json.ex @@ -5,7 +5,7 @@ defmodule LiveSvelte.LiveJson do :live_json_props, :map, default: %{}, - doc: "LiveJson props to pass to the Svelte component" + doc: "LiveJSON props to pass to the svelte component" ) slot(:inner_block) @@ -13,12 +13,11 @@ defmodule LiveSvelte.LiveJson do def live_json(assigns) do ~H""" <%= if @live_json_props != %{} do %> -
- <%= render_slot(@inner_block) %> -
- <% else %> - <%= render_slot(@inner_block) %> +
<% end %> + <%= render_slot(@inner_block) %> """ end + + defp id(name), do: "#{name}-#{System.unique_integer([:positive])}" end