defmodule LivebookWeb do @moduledoc false def controller do quote do use Phoenix.Controller, namespace: LivebookWeb import Plug.Conn alias LivebookWeb.Router.Helpers, as: Routes end end def view do quote do use Phoenix.View, root: "lib/livebook_web/templates", namespace: LivebookWeb # Bring component functionality use Phoenix.Component # Import convenience functions from controllers import Phoenix.Controller, only: [get_csrf_token: 0, view_module: 1, view_template: 1] # Include shared imports and aliases for views unquote(view_helpers()) end end def live_view do quote do use Phoenix.LiveView, layout: {LivebookWeb.LayoutView, "live.html"} unquote(view_helpers()) end end def live_component do quote do use Phoenix.LiveComponent unquote(view_helpers()) end end def router do quote do use Phoenix.Router import Plug.Conn import Phoenix.Controller import Phoenix.LiveView.Router end end defp view_helpers do quote do # Use all HTML functionality (forms, tags, etc) import Phoenix.HTML import Phoenix.HTML.Form # TODO: Remove me once all deprecated helpers have been removed # Import LiveView helpers (live_render, live_component, live_patch, etc) import Phoenix.LiveView.Helpers # Import basic rendering functionality (render, render_layout, etc) import Phoenix.View alias Phoenix.LiveView.JS alias LivebookWeb.Router.Helpers, as: Routes # Custom helpers import LivebookWeb.Helpers import LivebookWeb.FormHelpers import LivebookWeb.LiveHelpers 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