defmodule LivebookWeb.SessionLive.ExportElixirComponent do use LivebookWeb, :live_component alias Livebook.Session @impl true def update(assigns, socket) do socket = assign(socket, assigns) source = Livebook.Notebook.Export.Elixir.notebook_to_elixir(socket.assigns.notebook) socket = assign(socket, :source, source) {:ok, socket} end @impl true def render(assigns) do ~H"""
<%= Session.file_name_for_download(@session) <> ".exs" %>
<.icon_button aria-label="copy source" phx-click={JS.dispatch("lb:clipcopy", to: "#export-notebook-source")} > <.remix_icon icon="clipboard-line" /> <.icon_button aria-label="download source" href={~p"/sessions/#{@session.id}/download/export/exs"} download > <.remix_icon icon="download-2-line" />
<.code_preview source_id="export-notebook-source" language="elixir" source={@source} />
""" end end