mdbook-trunk 0.2.1

mdBook plugin which bundles packages using Trunk and includes them as iframes.
Documentation
/**
 * 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);
        });
    }
});