* feat: Use bs5 for htmlized doc (#4082) Co-authored-by: Martin Thomson <mt@lowentropy.net> * fix: Various fixes to HTMLized document view (#4501) * fix: Pref labels were switched * fix: Fix ToC for htmlized docs * Replace datatracker button with document name link to datatracker * ui: Make fonts even larger on larger window widths * fix: Document format buttons open new tabs * fix: Various suggestions from Jay * fix: Don't show "htmlized" self-link under formats * ui: Font size fix for iOS * ui: More little tweaks * feat/htmlize fixes and improvements (#4506) * fix: Don't open htmlized view in new tab * fix: Tests were failing * feat: Add pref settings to cap max font size * feat: Add ability to hide side panel * fix: And more `feat/htmlize` fixes (#4511) * fix: Remove superfluous scrollbars * fix: Show email links for authors * fix: Only show "email authors" button for latest reversion * fix: Remove duplicate code, fix nav scrolling * feat: Add RFCs to revision lists * feat: Add pref option to control dependency inlining * fix: Add analytical tags * feat: Notify user of rendering inconsistencies * feat: Split out bootstrap-icons when not inlining dependencies * fix: Revision list and minor other fixes * feat: Show stream logo when possible (#4516) * fix: Remove superfluous scrollbars * fix: Show email links for authors * fix: Only show "email authors" button for latest reversion * fix: Remove duplicate code, fix nav scrolling * feat: Add RFCs to revision lists * feat: Add pref option to control dependency inlining * fix: Add analytical tags * feat: Notify user of rendering inconsistencies * feat: Split out bootstrap-icons when not inlining dependencies * fix: Revision list and minor other fixes * feat: Show stream logos when possible * fix: Pick up CSS changes from https://github.com/martinthomson/rfc-txt-html (#4520) * fix: Remove superfluous scrollbars * fix: Show email links for authors * fix: Only show "email authors" button for latest reversion * fix: Remove duplicate code, fix nav scrolling * feat: Add RFCs to revision lists * feat: Add pref option to control dependency inlining * fix: Add analytical tags * feat: Notify user of rendering inconsistencies * feat: Split out bootstrap-icons when not inlining dependencies * fix: Revision list and minor other fixes * feat: Show stream logos when possible * fix: Pick up CSS changes from https://github.com/martinthomson/rfc-txt-html * chore: add debug script to replicate GitHub Actions test environment * chore: cleanup from merge of main * fix: Fix PDFixation crash due to referencing renamed CSS asset (#4665) * fix: Rename some CSS classes to handle recent xml2rfc changes (#4791) * Merge main * fix: Rename some CSS classes to handle recent xml2rfc changes Fixes #4784. * chore: repair merge damage * chore: more merge corrections * chore: one more merge correction * fix: npm dependencies * fix: Change default font size (#4817) * Fix dependency issues * Cap fontsize at 12pt by default Co-authored-by: Nicolas Giard <github@ngpixel.com> Co-authored-by: Lars Eggert <lars@eggert.org> Co-authored-by: Martin Thomson <mt@lowentropy.net> Co-authored-by: Nicolas Giard <github@ngpixel.com>
87 lines
2.8 KiB
JavaScript
87 lines
2.8 KiB
JavaScript
import {
|
|
Tooltip as Tooltip,
|
|
// Button as Button,
|
|
// Collapse as Collapse,
|
|
// ScrollSpy as ScrollSpy,
|
|
Tab as Tab
|
|
} from "bootstrap";
|
|
|
|
import Cookies from "js-cookie";
|
|
import { populate_nav } from "./nav.js";
|
|
|
|
const cookies = Cookies.withAttributes({ sameSite: "strict" });
|
|
|
|
document.addEventListener("DOMContentLoaded", function (event) {
|
|
// handle point size slider
|
|
const cookie = "doc-ptsize-max";
|
|
|
|
function change_ptsize(ptsize) {
|
|
document.documentElement.style.setProperty(`--${cookie}`,
|
|
`${ptsize}pt`);
|
|
cookies.set(cookie, ptsize);
|
|
}
|
|
|
|
document.getElementById("ptsize")
|
|
.oninput = function () { change_ptsize(this.value) };
|
|
|
|
const ptsize = cookies.get(cookie);
|
|
change_ptsize(ptsize ? Math.min(Math.max(7, ptsize), 16) : 12);
|
|
|
|
// Use the Bootstrap tooltip plugin for all elements with a title attribute
|
|
const tt_triggers = document.querySelectorAll(
|
|
"[title]:not([title=''])");
|
|
[...tt_triggers].map(tt_el => {
|
|
const tooltip = Tooltip.getOrCreateInstance(tt_el);
|
|
tt_el.addEventListener("click", el => {
|
|
tooltip.hide();
|
|
tt_el.blur();
|
|
});
|
|
});
|
|
|
|
// Rewrite ids and hrefs to not contains dots (bug in bs5.2 scrollspy)
|
|
// See https://github.com/twbs/bootstrap/issues/34381
|
|
// TODO: check if this can be removed when bs5 is updated
|
|
const ids = document.querySelectorAll(
|
|
"#content [id^=section-], #content [id^=appendix-]");
|
|
[...ids].map(id_el => id_el.id = id_el.id.replaceAll(/\./g, "-"));
|
|
const hrefs = document.querySelectorAll(
|
|
"#content [href*='#section-'], #content [href*='#appendix-']"
|
|
);
|
|
[...hrefs].map(id_el => {
|
|
const href = new URL(id_el.href);
|
|
href.hash = href.hash.replaceAll(/\./g, "-");
|
|
id_el.href = href.href;
|
|
});
|
|
|
|
// Set up a nav pane
|
|
const toc_pane = document.getElementById("toc-nav");
|
|
populate_nav(toc_pane,
|
|
`#content h2, #content h3, #content h4, #content h5, #content h6
|
|
#content .h1, #content .h2, #content .h3, #content .h4, #content .h5, #content .h6`,
|
|
["py-0"]);
|
|
|
|
// activate pref buttons selected by pref cookies
|
|
document.querySelectorAll(".btn-check")
|
|
.forEach(btn => {
|
|
const id = btn.id.replace("-radio", "");
|
|
if (cookies.get(btn.name) == id) {
|
|
btn.checked = true;
|
|
}
|
|
btn.addEventListener("click", el => {
|
|
cookies.set(btn.name, id);
|
|
window.location.reload();
|
|
});
|
|
});
|
|
|
|
// activate tab selected in prefs
|
|
let defpane;
|
|
try {
|
|
defpane = Tab.getOrCreateInstance(
|
|
`#${cookies.get("deftab")}-tab`);
|
|
} catch (err) {
|
|
defpane = Tab.getOrCreateInstance("#docinfo-tab");
|
|
};
|
|
defpane.show();
|
|
document.activeElement.blur();
|
|
});
|