Files
2026-05-20 18:08:10 +02:00

28 lines
1.1 KiB
TypeScript

import { gradioApp } from './script';
export function uiOpenSubmenus() {
const accordions = Array.from<HTMLElement>(gradioApp().querySelectorAll('.gradio-accordion'));
const states: Record<string, boolean> = {};
accordions.forEach((el) => {
const labelEl = el.querySelector<HTMLSpanElement>('.label-wrap > span:not(.icon)');
const name = labelEl instanceof HTMLElement ? labelEl.innerText.trim() : '';
if (!name) return;
const children = Array.from<ChildNode>(el.childNodes);
const open = children.filter((c) => c instanceof HTMLElement && c.style.display === 'block');
if (states[name] === undefined) states[name] = open.length > 0;
});
return states;
}
export async function getUIDefaults() {
const btn = gradioApp().getElementById('ui_defaults_view');
if (!btn) return;
const intersectionObserver = new IntersectionObserver((entries) => {
if (entries[0].intersectionRatio <= 0) { /* Pass */ }
if (entries[0].intersectionRatio > 0) btn.click();
});
intersectionObserver.observe(btn); // monitor visibility of tab
}
window.uiOpenSubmenus = uiOpenSubmenus;