2021-02-11 19:42:17 +08:00
|
|
|
defmodule LiveBookWeb.Helpers do
|
|
|
|
import Phoenix.LiveView.Helpers
|
|
|
|
|
|
|
|
@doc """
|
|
|
|
Renders a component inside the `LiveBook.ModalComponent` component.
|
|
|
|
|
|
|
|
The rendered modal receives a `:return_to` option to properly update
|
|
|
|
the URL when the modal is closed.
|
|
|
|
"""
|
|
|
|
def live_modal(socket, component, opts) do
|
|
|
|
path = Keyword.fetch!(opts, :return_to)
|
|
|
|
modal_opts = [id: :modal, return_to: path, component: component, opts: opts]
|
|
|
|
live_component(socket, LiveBookWeb.ModalComponent, modal_opts)
|
|
|
|
end
|
2021-02-18 20:14:09 +08:00
|
|
|
|
|
|
|
@doc """
|
|
|
|
Determines user platform based on the given *User-Agent* header.
|
|
|
|
"""
|
|
|
|
@spec platform_from_user_agent(Sting.t()) :: :linux | :mac | :windows | :other
|
|
|
|
def platform_from_user_agent(user_agent) when is_binary(user_agent) do
|
|
|
|
cond do
|
|
|
|
linux?(user_agent) -> :linux
|
|
|
|
mac?(user_agent) -> :mac
|
|
|
|
windows?(user_agent) -> :windows
|
|
|
|
true -> :other
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
defp linux?(user_agent), do: String.match?(user_agent, ~r/Linux/)
|
|
|
|
defp mac?(user_agent), do: String.match?(user_agent, ~r/Mac OS X/)
|
|
|
|
defp windows?(user_agent), do: String.match?(user_agent, ~r/Windows/)
|
2021-02-23 05:08:02 +08:00
|
|
|
|
2021-03-03 21:22:49 +08:00
|
|
|
defdelegate ansi_string_to_html(string), to: LiveBookWeb.ANSI
|
2021-02-03 20:13:56 +08:00
|
|
|
end
|