Spaces:
Runtime error
Runtime error
function inputAccordionChecked(id, checked) { | |
var accordion = gradioApp().getElementById(id); | |
accordion.visibleCheckbox.checked = checked; | |
accordion.onVisibleCheckboxChange(); | |
} | |
function setupAccordion(accordion) { | |
var labelWrap = accordion.querySelector('.label-wrap'); | |
var gradioCheckbox = gradioApp().querySelector('#' + accordion.id + "-checkbox input"); | |
var extra = gradioApp().querySelector('#' + accordion.id + "-extra"); | |
var span = labelWrap.querySelector('span'); | |
var linked = true; | |
var isOpen = function() { | |
return labelWrap.classList.contains('open'); | |
}; | |
var observerAccordionOpen = new MutationObserver(function(mutations) { | |
mutations.forEach(function(mutationRecord) { | |
accordion.classList.toggle('input-accordion-open', isOpen()); | |
if (linked) { | |
accordion.visibleCheckbox.checked = isOpen(); | |
accordion.onVisibleCheckboxChange(); | |
} | |
}); | |
}); | |
observerAccordionOpen.observe(labelWrap, {attributes: true, attributeFilter: ['class']}); | |
if (extra) { | |
labelWrap.insertBefore(extra, labelWrap.lastElementChild); | |
} | |
accordion.onChecked = function(checked) { | |
if (isOpen() != checked) { | |
labelWrap.click(); | |
} | |
}; | |
var visibleCheckbox = document.createElement('INPUT'); | |
visibleCheckbox.type = 'checkbox'; | |
visibleCheckbox.checked = isOpen(); | |
visibleCheckbox.id = accordion.id + "-visible-checkbox"; | |
visibleCheckbox.className = gradioCheckbox.className + " input-accordion-checkbox"; | |
span.insertBefore(visibleCheckbox, span.firstChild); | |
accordion.visibleCheckbox = visibleCheckbox; | |
accordion.onVisibleCheckboxChange = function() { | |
if (linked && isOpen() != visibleCheckbox.checked) { | |
labelWrap.click(); | |
} | |
gradioCheckbox.checked = visibleCheckbox.checked; | |
updateInput(gradioCheckbox); | |
}; | |
visibleCheckbox.addEventListener('click', function(event) { | |
linked = false; | |
event.stopPropagation(); | |
}); | |
visibleCheckbox.addEventListener('input', accordion.onVisibleCheckboxChange); | |
} | |
onUiLoaded(function() { | |
for (var accordion of gradioApp().querySelectorAll('.input-accordion')) { | |
setupAccordion(accordion); | |
} | |
}); | |