mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-09-06 04:54:29 +08:00
69 lines
2.6 KiB
Text
69 lines
2.6 KiB
Text
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<meta name="csrf-token" content={get_csrf_token()} />
|
|
<link rel="icon" type="image/svg+xml" href={~p"/favicon.svg"} />
|
|
<link rel="alternate icon" type="image/png" href={~p"/favicon.png"} />
|
|
<.live_title>
|
|
<%= assigns[:page_title] || "Livebook" %>
|
|
</.live_title>
|
|
<link phx-track-static rel="stylesheet" href={~p"/assets/app.css"} />
|
|
<script>
|
|
window.LIVEBOOK_BASE_URL_PATH = "<%= Livebook.Config.base_url_path() %>";
|
|
</script>
|
|
<!--
|
|
The main JS file is loaded asynchronously as a module, so we inline
|
|
the live reloader listener here to make sure it is already registered
|
|
when the event is dispatched.
|
|
-->
|
|
<script :if={Mix.env() == :dev} type="text/javascript">
|
|
window.addEventListener(
|
|
"phx:live_reload:attached",
|
|
({ detail: reloader }) => {
|
|
// Enable server log streaming to client. Disable with reloader.disableServerLogs()
|
|
reloader.enableServerLogs();
|
|
|
|
// Open configured PLUG_EDITOR at file:line of the clicked element's HEEx component
|
|
//
|
|
// * click with "c" key pressed to open at caller location
|
|
// * click with "d" key pressed to open at function component definition location
|
|
//
|
|
let keyDown;
|
|
window.addEventListener("keydown", (event) => (keyDown = event.key));
|
|
window.addEventListener("keyup", (event) => (keyDown = null));
|
|
window.addEventListener(
|
|
"click",
|
|
(event) => {
|
|
if (keyDown === "c") {
|
|
event.preventDefault();
|
|
event.stopImmediatePropagation();
|
|
reloader.openEditorAtCaller(e.target);
|
|
} else if (keyDown === "d") {
|
|
event.preventDefault();
|
|
event.stopImmediatePropagation();
|
|
reloader.openEditorAtDef(event.target);
|
|
}
|
|
},
|
|
true,
|
|
);
|
|
|
|
window.liveReloader = reloader;
|
|
},
|
|
);
|
|
</script>
|
|
<%!-- This prevents the script to be loaded twice in Chrome --%>
|
|
<link rel="modulepreload" href={~p"/assets/app.js"} />
|
|
<script phx-track-static type="module" src={~p"/assets/app.js"}>
|
|
</script>
|
|
</head>
|
|
<body
|
|
class="bg-white"
|
|
data-feature-flags={Livebook.Config.enabled_feature_flags() |> Enum.join(",")}
|
|
data-within-iframe={Livebook.Config.within_iframe?()}
|
|
>
|
|
<%= @inner_content %>
|
|
</body>
|
|
</html>
|