*
* @param selector Selector for child elements to be returned
* @param parentSelector Selector of DOM element to wait for
* (Optional, defaults to `'.CMSgoogledocembed'` matching an embedded
* Google Doc page)
* @returns An array of elements matching `selector`
*/
export default function waitForSelector(
selector: string
): Promise<HTMLElement[]> {
return new Promise((resolve) => {
const parent = document.querySelector(parentSelector) as HTMLElement;
if (parent) {
return resolve(process(parent, selector));
}
// FIXME detect framed document and abort waiting for embed
const observer = new MutationObserver(() => {
const parent = document.querySelector(parentSelector) as HTMLElement;
if (parent) {
https://api.github.com/groton-school/knowledgebase/blob/f1efea854263de3ed49a59cca3651200cca89e00/src/Helper/waitForSelector.ts#L28