import {arr} from './arr.js'; //abbrev for wait for attribute change export function wfac(el: Element, attributeNameOrNames: string | Array, test?: (mr: MutationRecord, el: Element, attributeNameOrNames: string | Array) => boolean){ //kind of limited, promises only seem to support one time only events. const attrNames = arr(attributeNameOrNames); return new Promise((resolve, reject) =>{ const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { const {attributeName} = mutation; if(attributeName === null) return; if(attrNames.includes(attributeName)){ if(test){ if(test(mutation, el, attributeNameOrNames)){ observer.disconnect(); resolve(mutation); } }else{ observer.disconnect(); resolve(mutation); } } }); }); const observerConfig = { attributes: true, attributeFilter: attrNames, } as MutationObserverInit; observer.observe(el, observerConfig); }); }