(function ($) {
document.addEventListener('DOMContentLoaded', function () {
const content = document.getElementById('o_content');
let imageModalId = 0;
content.querySelectorAll('img').forEach(image => {
// Enforce the presence of the `img-fluid` class on all images.
image.classList.add('img-fluid', 'img-thumbnail');
// Add a modal to each image that does not explicitly block it and has no target.
if (!image.classList.contains('o-no-modal') && image.parentElement.tagName !== 'A') {
const modalContainer = document.createElement('div');
modalContainer.innerHTML = `
`;
image.parentNode.append(modalContainer);
image.setAttribute('data-bs-toggle', 'modal');
image.setAttribute('data-bs-target', `#modal-${imageModalId}`);
imageModalId++;
}
});
// Make all external links open in a new tab by default.
content.querySelectorAll('a.external').forEach(externalLink => {
externalLink.setAttribute('target', '_blank');
});
let canAccessAllL1Toctrees = true; // Whether all direct children have a ref.
const toctreeWrapper = document.querySelector('.toctree-wrapper');
toctreeWrapper?.querySelectorAll('.toctree-l1').forEach(l1Toctree => {
// Flag L2 toctrees that have L3 children.
if (l1Toctree.querySelector('.toctree-l3')) {
l1Toctree.querySelectorAll('.toctree-l2').forEach (l2Toctree => {
l2Toctree.classList.add('o_toc_contains_l3');
});
}
if (l1Toctree.querySelector('a').getAttribute('href') === '#') {
canAccessAllL1Toctrees = false;
}
});
if (canAccessAllL1Toctrees) {
// Use the style of L2 toctrees on L1 toctrees.
toctreeWrapper?.classList.add('o_toc_l1_to_l2');
}
});
})();