# SPDX-FileCopyrightText: 2020 Zach Daniel # SPDX-FileCopyrightText: 2020 ash_admin contributors # # SPDX-License-Identifier: MIT defmodule AshAdmin.Web do @moduledoc false def static_paths, do: ~w(assets fonts images favicon.ico robots.txt) def router do quote do use Phoenix.Router, helpers: false # Import common connection and controller functions to use in pipelines import Plug.Conn import Phoenix.Controller import Phoenix.LiveView.Router end end def channel do quote do use Phoenix.Channel end end def live_view do quote do use Phoenix.LiveView, layout: {AshAdmin.Layouts, :app} unquote(html_helpers()) end end def live_component do quote do use Phoenix.LiveComponent unquote(html_helpers()) 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 Gettext, backend: AshAdmin.Gettext # HTML escaping functionality import Phoenix.HTML # Core UI components and translation import AshAdmin.CoreComponents # Shortcut for generating JS commands alias Phoenix.LiveView.JS # Routes generation with the ~p sigil unquote(verified_routes()) end end def verified_routes do quote do use Phoenix.VerifiedRoutes, router: AshAdmin.Router, statics: AshAdmin.Web.static_paths() end end @doc """ When used, dispatch to the appropriate controller/view/etc. """ defmacro __using__(which) when is_atom(which) do apply(__MODULE__, which, []) end end