/** * Where a widget put its overlay, when it did not put it inside itself. * * A portalled popup is the one part legitimately outside its field's root, so it cannot be found by * containment. Two ways to look for it that do not work: * * - **By class, across the document.** Returns whichever field rendered first, so a page with two * selects reports one of them twice and the other never. * - **By the id the opener names, and no further.** A trigger names the *listbox*; the popup that * holds it is that element's ancestor. Scoping the search to the named element finds no popup, * reports it absent, and then reads `aria-expanded="true"` beside a missing popup as an incoherent * state — a violation reported against a widget that was behaving correctly. * * The right way is the relationship the widget itself declared, followed all the way out: take the * element the opener's `aria-controls` names, then walk up to the outermost ancestor that is still * outside the field. That is the portalled tree, and every part inside it belongs to this widget. */ /** * The portalled subtree belonging to `widgetRoot`, or `null` when the widget keeps its overlay * inside itself — which is equally conforming, and the reason this returns `null` rather than * throwing. */ export declare function portalRootFor(widgetRoot: Element): Element | null;