Packages
livebook
0.9.3
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/open_live/source_component.ex
defmodule LivebookWeb.OpenLive.SourceComponent do
use LivebookWeb, :live_component
@impl true
def mount(socket) do
{:ok, assign(socket, source: "")}
end
@impl true
def render(assigns) do
~H"""
<div class="flex-col space-y-5">
<p class="text-gray-700" id="import-from-source">
Import notebook by directly pasting the <span class="font-semibold">live markdown</span>
source.
</p>
<.form
:let={f}
for={%{"source" => @source}}
as={:data}
id="import-source"
phx-submit="import"
phx-change="validate"
phx-target={@myself}
autocomplete="off"
>
<.textarea_field
type="textarea"
field={f[:source]}
label="Notebook source"
resizable={false}
autofocus
aria-labelledby="import-from-source"
spellcheck="false"
rows="5"
/>
<button class="mt-5 button-base button-blue" type="submit" disabled={@source == ""}>
Import
</button>
</.form>
</div>
"""
end
@impl true
def handle_event("validate", %{"data" => %{"source" => source}}, socket) do
{:noreply, assign(socket, source: source)}
end
def handle_event("import", %{"data" => %{"source" => source}}, socket) do
send(self(), {:import_source, source, []})
{:noreply, socket}
end
end