function applyVariant(select) {
const owner = select.getAttribute('data-variant-select');
if (!owner) return;
const root = select.form || document;
root.querySelectorAll('[data-variant-of]').forEach((group) => {
if (group.getAttribute('data-variant-of') !== owner) return;
const hidden = group.getAttribute('data-variant') !== select.value;
if (group.hidden !== hidden) group.hidden = hidden;
});
}
function applyVariants(root) {
(root || document).querySelectorAll('[data-variant-select]').forEach(applyVariant);
}
function install() {
document.addEventListener('change', (event) => {
const target = event.target;
const select = target.closest && target.closest('[data-variant-select]');
if (select) applyVariant(select);
});
applyVariants();
if (typeof MutationObserver !== 'undefined' && document.documentElement) {
new MutationObserver(() => applyVariants()).observe(document.documentElement, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['hidden', 'selected'],
});
}
}
if (typeof document !== 'undefined') install();