defmodule Observer.Web do @moduledoc """ The entrypoint for defining your web interface, such as controllers, components, channels, and so on. """ def live_view do quote do use Phoenix.LiveView, layout: {Observer.Web.Layouts, :live} unquote(html_helpers()) end end def live_component do quote do use Phoenix.LiveComponent unquote(html_helpers()) defguard is_connected?(socket) when socket.transport_pid != nil end end def html do quote do use Phoenix.Component # Import convenience functions from controllers import Phoenix.Controller, only: [get_csrf_token: 0, view_module: 1, view_template: 1] # Include general helpers for rendering HTML unquote(html_helpers()) end end defp html_helpers do quote do use Phoenix.Component import Phoenix.HTML import Phoenix.LiveView.Helpers import Observer.Web.Helpers alias Observer.Web.Components.Core alias Phoenix.LiveView.JS end end @doc """ When used, dispatch to the appropriate controller/live_view/etc. """ defmacro __using__(which) when is_atom(which) do apply(__MODULE__, which, []) end end