livebook/lib/live_book_web/helpers.ex

35 lines
1.1 KiB
Elixir
Raw Normal View History

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
@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/)
defdelegate ansi_string_to_html(string), to: LiveBookWeb.ANSI
end