This will keep browsers from caching files that have changed. I've also added SRI information to the <script> and <link> elements for browsers to verify resources. Squashed commit of the following: commitf3fcb16388
Author: Eryn Wells <eryn@erynwells.me> Date: Tue Nov 8 17:47:42 2022 -0800 Remove static/styles/root.css commit53a30624a0
Author: Eryn Wells <eryn@erynwells.me> Date: Tue Nov 8 17:47:26 2022 -0800 Add back the basic table styles that got ditched when root.css was moved to assets/styles commit294fa8343b
Author: Eryn Wells <eryn@erynwells.me> Date: Tue Nov 8 17:45:38 2022 -0800 Get all the fingerprinting done! - Add partials in the resources folder for each of the major resources of my site - Consolidate .css and .js files via resources.Concat where possible commitd0b223fa33
Author: Eryn Wells <eryn@erynwells.me> Date: Mon Nov 7 08:36:39 2022 -0800 All the template updates for fingerprinting commit1751abadac
Author: Eryn Wells <eryn@erynwells.me> Date: Mon Nov 7 08:36:27 2022 -0800 Add secure_asset.html template commit94ea8068c9
Author: Eryn Wells <eryn@erynwells.me> Date: Mon Nov 7 08:35:48 2022 -0800 Move a bunch of scripts and CSS to assets so they can be processed with Hugo Pipes Use Pipes to fingerprint and add SLI information to <script> and <link> tags.
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
{{ with resources.Get "scripts/lib/railroad.js" | fingerprint "sha512" }}
|
|
import rr from "{{ .RelPermalink }}";
|
|
{{ else }}
|
|
{{ errorf "Unable to get railroad.js resource" }}
|
|
{{ end }}
|
|
|
|
class RailroadDiagramManager {
|
|
constructor() {
|
|
this.figures = new Map();
|
|
this.isCurrentlyNarrow = undefined;
|
|
|
|
this.diagramBreakpoint = window.matchMedia("(max-width: 450px)");
|
|
this.diagramBreakpoint.addEventListener("change", () => {
|
|
this.updateVisiblity();
|
|
});
|
|
}
|
|
|
|
add(svg) {
|
|
const parent = svg.parentElement;
|
|
if (!this.figures.has(parent)) {
|
|
this.figures.set(parent, []);
|
|
}
|
|
|
|
this.figures.get(parent).push(svg);
|
|
|
|
parent.removeChild(svg);
|
|
}
|
|
|
|
updateVisiblity() {
|
|
const isNarrow = this.diagramBreakpoint.matches;
|
|
|
|
if (isNarrow === this.isCurrentlyNarrow) {
|
|
return;
|
|
}
|
|
|
|
this.isCurrentlyNarrow = isNarrow;
|
|
|
|
for (let [figure, svgs] of this.figures.entries()) {
|
|
for (let svg of svgs) {
|
|
const svgHasNarrowClass = svg.classList.contains("narrow");
|
|
if (isNarrow && svgHasNarrowClass)
|
|
figure.appendChild(svg);
|
|
else if (!isNarrow && !svgHasNarrowClass)
|
|
figure.appendChild(svg);
|
|
else if (svg.parentElement === figure)
|
|
figure.removeChild(svg);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
let railroadDiagramManager = new RailroadDiagramManager();
|
|
|
|
export function railroadDiagram(builder, elementID, isNarrow) {
|
|
const diagram = builder(rr);
|
|
const svg = diagram.addTo(document.getElementById(elementID));
|
|
|
|
if (isNarrow) {
|
|
svg.classList.add("narrow");
|
|
}
|
|
|
|
railroadDiagramManager.add(svg);
|
|
}
|
|
|
|
window.addEventListener("DOMContentLoaded", () => {
|
|
railroadDiagramManager.updateVisiblity();
|
|
});
|