Spaces:
Paused
Paused
| 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); | |
| } | |
| }); | |