| var observerAccordionOpen = new MutationObserver(function(mutations) { | |
| mutations.forEach(function(mutationRecord) { | |
| var elem = mutationRecord.target; | |
| var open = elem.classList.contains('open'); | |
| var accordion = elem.parentNode; | |
| accordion.classList.toggle('input-accordion-open', open); | |
| var checkbox = gradioApp().querySelector('#' + accordion.id + "-checkbox input"); | |
| checkbox.checked = open; | |
| updateInput(checkbox); | |
| var extra = gradioApp().querySelector('#' + accordion.id + "-extra"); | |
| if (extra) { | |
| extra.style.display = open ? "" : "none"; | |
| } | |
| }); | |
| }); | |
| function inputAccordionChecked(id, checked) { | |
| var label = gradioApp().querySelector('#' + id + " .label-wrap"); | |
| if (label.classList.contains('open') != checked) { | |
| label.click(); | |
| } | |
| } | |
| onUiLoaded(function() { | |
| for (var accordion of gradioApp().querySelectorAll('.input-accordion')) { | |
| var labelWrap = accordion.querySelector('.label-wrap'); | |
| observerAccordionOpen.observe(labelWrap, {attributes: true, attributeFilter: ['class']}); | |
| var extra = gradioApp().querySelector('#' + accordion.id + "-extra"); | |
| if (extra) { | |
| labelWrap.insertBefore(extra, labelWrap.lastElementChild); | |
| } | |
| } | |
| }); | |