pub const DEFAULT_HISTORY_TEMPLATE: &str = "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>{% if site_title %}History: {{ title }} \u{2014} {{ site_title }}{% else %}History: {{ title }}{% endif %}</title>\n <script>(function(){try{\n var s=localStorage.getItem(\'doc-theme\');\n var t=s||(matchMedia(\'(prefers-color-scheme: light)\').matches?\'light\':\'dark\');\n document.documentElement.setAttribute(\'data-theme\',t);\n var w=parseInt(localStorage.getItem(\'doc-left-rail-width\'),10);\n if(w>=180&&w<=560)document.documentElement.style.setProperty(\'--left-rail-width\',w+\'px\');\n}catch(e){}})();</script>\n <link rel=\"stylesheet\" href=\"{{ base | safe }}/docgen.css\" />\n <link rel=\"stylesheet\" href=\"{{ base | safe }}/code.css\" />\n</head>\n{% macro render_nodes(nodes, depth) %}\n<ul class=\"docgen-tree\" data-depth=\"{{ depth }}\">\n {% for node in nodes %}\n {% if node.kind == \"dir\" %}\n <li class=\"docgen-tree__group\">\n <details class=\"docgen-tree__details\" open>\n <summary class=\"docgen-tree__summary\"><span class=\"docgen-tree__chev\" aria-hidden=\"true\"></span>{{ node.name }}</summary>\n {{ render_nodes(node.children, depth + 1) }}\n </details>\n </li>\n {% else %}\n <li class=\"docgen-tree__item{% if node.slug == slug %} is-active{% endif %}\">\n <a class=\"docgen-tree__link\" href=\"{{ base | safe }}/{{ node.slug | safe }}\"{% if node.slug == slug %} aria-current=\"page\"{% endif %}>{{ node.title }}</a>\n </li>\n {% endif %}\n {% endfor %}\n</ul>\n{% endmacro %}\n<body class=\"docgen-app\" x-data=\"{ navOpen: false }\" @keydown.escape.window=\"navOpen=false\">\n <a class=\"docgen-skip-link\" href=\"#docgen-main\">Skip to content</a>\n <header class=\"docgen-topbar\">\n <a class=\"docgen-topbar__brand\" href=\"{{ base | safe }}/\">\n <span class=\"docgen-brand-mark\" aria-hidden=\"true\"></span>\n <span class=\"docgen-brand-name\">{% if site_title %}{{ site_title }}{% else %}Docs{% endif %}</span>\n </a>\n <div class=\"docgen-topbar__main\">\n {% if search_enabled %}\n <button class=\"docgen-search-trigger\" data-docgen-search>\n <svg class=\"docgen-search-trigger__icon\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"M21 21l-4.3-4.3\"/></svg>\n <span class=\"docgen-search-trigger__label\">Search pages, headings, Rust refs\u{2026}</span>\n <kbd class=\"docgen-kbd\">\u{2318}K</kbd>\n </button>\n {% endif %}\n <div class=\"docgen-topbar__actions\">\n <div class=\"docgen-btn-strip\" role=\"group\" aria-label=\"Layout\">\n <button type=\"button\" class=\"docgen-ctl--fullwidth icon-only\" aria-pressed=\"false\" aria-label=\"Toggle full page width\" title=\"Toggle full page width\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 3H3v5M16 3h5v5M21 16v5h-5M3 16v5h5\"/></svg>\n </button>\n <button type=\"button\" class=\"docgen-ctl--rail icon-only\" aria-pressed=\"true\" aria-label=\"Toggle page info\" title=\"Toggle page info\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M4 6h16M4 12h16M4 18h16\"/></svg>\n </button>\n </div>\n <div class=\"docgen-theme-toggle\" x-data=\"docgenThemeToggle\" role=\"tablist\" aria-label=\"Theme\">\n <button type=\"button\" class=\"docgen-theme-toggle__btn\" :class=\"{ \'is-active\': theme===\'dark\' }\" :aria-pressed=\"theme===\'dark\'\" @click=\"set(\'dark\')\" aria-label=\"Dark\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z\"/></svg>\n </button>\n <button type=\"button\" class=\"docgen-theme-toggle__btn\" :class=\"{ \'is-active\': theme===\'light\' }\" :aria-pressed=\"theme===\'light\'\" @click=\"set(\'light\')\" aria-label=\"Light\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4\"/></svg>\n </button>\n </div>\n <button class=\"docgen-sidebar-toggle\" aria-label=\"Toggle navigation\" aria-controls=\"docgen-sidebar\" :aria-expanded=\"navOpen ? \'true\' : \'false\'\" @click=\"navOpen=!navOpen\">\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M3 6h18M3 12h18M3 18h18\"/></svg>\n </button>\n </div>\n </div>\n </header>\n <div class=\"docgen-sidebar-backdrop\" x-show=\"navOpen\" @click=\"navOpen=false\" x-cloak></div>\n <div class=\"docgen-layout\">\n <nav class=\"docgen-sidebar\" id=\"docgen-sidebar\" :class=\"{ \'is-open\': navOpen }\">\n {{ render_nodes(tree, 0) }}\n </nav>\n <div class=\"docgen-rail-resizer\" role=\"separator\" aria-orientation=\"vertical\" aria-label=\"Resize sidebar\" tabindex=\"-1\"></div>\n <main class=\"docgen-content docgen-history\" id=\"docgen-main\" tabindex=\"-1\">\n <article class=\"docgen-doc-content\">\n <p><a href=\"{{ base | safe }}/{{ slug | safe }}\">← Back to {{ title }}</a></p>\n <h1>History: {{ title }}</h1>\n {% for bucket in buckets %}\n <section class=\"docgen-timeline-bucket\">\n <h2>{{ bucket.label }}</h2>\n {% for p in bucket.points %}\n <article class=\"docgen-commit\">\n <header>\n <code class=\"docgen-commit__hash\">{{ p.short_hash }}</code>\n <span class=\"docgen-commit__subject\">{{ p.subject }}</span>\n {% if p.author %}<span class=\"docgen-commit__author\">{{ p.author }}</span>{% endif %}\n {% if p.date %}<time>{{ p.date }}</time>{% endif %}\n <span class=\"docgen-commit__stat\">+{{ p.added_lines }} −{{ p.removed_lines }}</span>\n </header>\n {% for f in p.files %}\n <div class=\"docgen-diff-file\">\n <div class=\"docgen-diff-file__path docgen-diff-file--{{ f.status }}\">{{ f.path }}</div>\n {% for h in f.hunks %}<pre class=\"docgen-diff-hunk\">{% for line in h.lines %}<span class=\"docgen-diff-line docgen-diff-line--{{ line.kind }}\">{{ line.text }}</span>\n{% endfor %}</pre>{% endfor %}\n </div>\n {% endfor %}\n </article>\n {% endfor %}\n </section>\n {% endfor %}\n </article>\n </main>\n <aside class=\"docgen-rail\"></aside>\n </div>\n <!-- island infra: bootstrap defines the registry; theme-toggle self-registers; Alpine starts last -->\n <script>window.DOCGEN_BASE = {{ base | tojson | safe }};</script>\n <script src=\"{{ base | safe }}/bootstrap.js\"></script>\n <script src=\"{{ base | safe }}/islands/theme-toggle.js\"></script>\n <script src=\"{{ base | safe }}/islands/layout.js\"></script>\n <script src=\"{{ base | safe }}/islands/wikilink.js\"></script>\n {% if search_enabled %}<script src=\"{{ base | safe }}/search.js\" defer></script>{% endif %}\n <script src=\"{{ base | safe }}/vendor/alpine/alpine.min.js\" defer></script>\n</body>\n</html>\n";Expand description
The built-in per-doc history-timeline template, embedded at compile time.