lucide/book/theme/trunk.js
Daniëlle Huisman 49a2c4915b Add book
2024-11-24 13:03:20 +01:00

53 lines
1.6 KiB
JavaScript

/**
* Change active file of files.
*
* @param {Element} container
* @param {string | null} name
*/
const changeTrunkFile = (container, name) => {
for (const child of container.children) {
if (!(child instanceof HTMLElement)) {
continue;
}
if (child.classList.contains('mdbook-trunk-files')) {
for (const file of child.children) {
if (!(file instanceof HTMLElement)) {
continue;
}
if (file.dataset.file === name) {
file.classList.add('active');
} else {
file.classList.remove('active');
}
}
} else if (child.classList.contains('mdbook-trunk-file-content')) {
if (child.dataset.file === name) {
child.classList.remove('hidden');
} else {
child.classList.add('hidden');
}
}
}
};
document.addEventListener('DOMContentLoaded', () => {
const files = document.querySelectorAll('.mdbook-trunk-file');
for (const file of files) {
file.addEventListener('click', () => {
if (!(file instanceof HTMLElement)) {
return;
}
if (!file.parentElement || !file.parentElement.parentElement) {
return;
}
const container = file.parentElement.parentElement;
const name = file.dataset.file;
changeTrunkFile(container, file.classList.contains('active') ? null : name);
});
}
});