Public
Edited
Jul 8, 2024
Fork of Substratum
1 fork
Importers
2 stars
Insert cell
Insert cell
Insert cell
Insert cell
function substratum({
debug = false,
invalidation,
messageWhenInactive = md`⏸️ _Substratum styles are not loaded._`,
messageWhenActive = md`✅ _Substratum styles are loaded._`
} = {}) {
if (invalidation == null) {
throw new Error(
"invalidation is not provided. See: https://github.com/observablehq/stdlib/#invalidation"
);
}

if (!isRunningStandalone && !debug) return messageWhenInactive;

installStyles({ invalidation });

return messageWhenActive;
}
Insert cell
function installStyles({ invalidation }) {
let elements = new Set();

function detach(elements) {
for (let n of elements) {
n.remove();
elements.delete(n);
}
}

function attach(nodes) {
for (let n of nodes) {
document.head.prepend(n);
elements.add(n);
}
}

invalidation.then(() => detach(elements));

detach(elements);

const newStyleElements = new Set(
[html`<style>${reset}`, html`<style>${main}`].reverse()
);

attach(newStyleElements);
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
substratum({ debug, invalidation })
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more