{# Renders Bokeh models into a basic .html file. :param title: value for ```` tags :type title: str :param plot_resources: typically the output of RESOURCES :type plot_resources: str :param plot_script: typically the output of PLOT_SCRIPT :type plot_script: str :param meta: mapping of metadata to render as ``<meta>`` tags, supporting the title, name, description, keywords, author, refresh and viewport keys :type meta: dict :param theme_managed: whether the design system manages theming itself, exposed to the client as the data-theme-managed attribute :type theme_managed: bool :param material_ui: set by the Material UI design, styles the document from its CSS variables :type material_ui: bool :param resources: extra css, raw_css, js and js_modules to load, as resolved by a component rendering its own page :type resources: dict ``favicon``, ``apple_touch_icon`` and ``is_page`` are accepted as aliases of ``app_favicon``, ``apple_icon`` and ``theme_managed``. Users can customize the file output by providing their own Jinja2 template that accepts these same parameters. #} {% from macros import embed %} <!DOCTYPE html> <html lang="en" {{ html_attrs | default("", true) }} data-theme-managed="{{ 'true' if theme_managed or is_page else 'false' }}"> {% block head %} <head> {% block inner_head %} <meta charset="utf-8"> <title>{% block title %}{{ title | e if title else "Panel App" }}{% endblock %} {% if apple_icon is not defined and not apple_touch_icon -%} {%- endif %} {% if app_favicon is not defined and not favicon -%} {%- endif %} {% if manifest_url %}{% endif %} {% block meta %} {% if meta is defined and meta %} {% if meta.title %} {% endif %} {% if meta.name %} {% endif %} {% if meta.description %} {% endif %} {% if meta.keywords %} {% endif %} {% if meta.author %} {% endif %} {% if meta.refresh %} {% endif %} {% if meta.viewport %} {% endif %} {% endif %} {% endblock meta %} {% block preamble %} {% if apple_touch_icon or apple_icon %} {% endif %} {% if favicon or app_favicon %} {% endif %} {% endblock preamble %} {% block resources %} {% if material_ui and not (theme_managed or is_page) %} {% endif %} {% block css_resources -%} {{- bokeh_css if bokeh_css }} {%- endblock css_resources %} {% block js_resources -%} {{ bokeh_js if bokeh_js }} {%- endblock js_resources %} {% endblock resources %} {% block postamble %} {% if resources %} {% for css in resources.css.values() %} {% endfor %} {% block custom_css %}{% endblock %} {% for raw_css in resources.raw_css %} {% endfor %} {% for src in resources.js.values() %} {% endfor %} {% for src in resources.js_modules.values() %} {% endfor %} {% endif %} {% endblock postamble %} {% if material_ui %} {% endif %} {% endblock inner_head %} {% endblock head%} {% block body %} {% block inner_body %} {% block loader %}
{% endblock loader %} {% block contents %} {% for doc in docs %} {{ embed(doc) if doc.elementid }} {%- for root in doc.roots %} {% block root scoped %} {{ embed(root) }} {% endblock %} {% endfor %} {% endfor %} {% endblock contents %} {% block connection_script %} {% endblock connection_script %} {{ plot_script | indent(4) }} {% block loader_script %} {% endblock loader_script %} {% endblock inner_body %} {% endblock body%}