Packages
livebook
0.17.1
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook_web/live/session_live/export_component.ex
defmodule LivebookWeb.SessionLive.ExportComponent do
use LivebookWeb, :live_component
alias Livebook.Session
@impl true
def update(assigns, socket) do
{any_stale_cell?, assigns} = Map.pop!(assigns, :any_stale_cell?)
socket = assign(socket, assigns)
{:ok,
socket
# Note: we need to load the notebook, because the local data
# has cell contents stripped out
|> assign_new(:notebook, fn -> Session.get_notebook(socket.assigns.session.pid) end)
|> assign_new(:any_stale_cell?, fn -> any_stale_cell? end)}
end
@impl true
def render(assigns) do
~H"""
<div class="flex flex-col space-y-3">
<h3 class="text-2xl font-semibold text-gray-800">
Export
</h3>
<div class="w-full flex-col space-y-5">
<p class="text-gray-700">
Here you can preview and directly export the notebook source.
</p>
<div class="tabs">
<.link
patch={~p"/sessions/#{@session.id}/export/livemd"}
class={["tab", @tab == "livemd" && "active"]}
>
<span class="font-medium">
Live Markdown
</span>
</.link>
<.link
patch={~p"/sessions/#{@session.id}/export/exs"}
class={["tab", @tab == "exs" && "active"]}
>
<span class="font-medium">
IEx session
</span>
</.link>
</div>
<div>
<.live_component
module={component_for_tab(@tab)}
id={"export-notebook-#{@tab}"}
session={@session}
notebook={@notebook}
any_stale_cell?={@any_stale_cell?}
/>
</div>
</div>
</div>
"""
end
defp component_for_tab("livemd"), do: LivebookWeb.SessionLive.ExportLiveMarkdownComponent
defp component_for_tab("exs"), do: LivebookWeb.SessionLive.ExportElixirComponent
end