1const waitForElm = (selector) => { 2 return new Promise((resolve) => { 3 if (document.querySelector(selector)) { 4 return resolve(document.querySelector(selector)); 5 } 6 7 const observer = new MutationObserver(() => { 8 if (document.querySelector(selector)) { 9 observer.disconnect(); 10 11 resolve(document.querySelector(selector)); 12 } 13 }); 14 15 observer.observe(document.body, { 16 childList: true, 17 18 subtree: true, 19 }); 20 }); 21}; 22 23export default function GDMMoveCheckedFiltersToTop(selectors) { 24 // const moveFilterToTop = (e) => { 25 26 setTimeout(() => { 27 waitForElm("#search-filter-container").then(() => { 28 const uls = document.querySelectorAll(selectors); 29 30 [...uls].forEach((ul) => { 31 const pseudoSelects = ul.querySelectorAll(".select_opt"); 32 33 [...pseudoSelects].forEach((select) => { 34 if (select.classList.contains("checked")) { 35 select.parentElement.style.backgroundColor = "blue"; 36 37 select.parentElement.style.backgroundColor = "purple"; 38 39 select.classList.contains("checked") && 40 pseudoSelects[0].insertAdjacentElement( 41 "beforebegin", 42 43 select.parentNode.cloneNode(true) 44 ); 45 46 [...pseudoSelects].unshift(select.parentElement); 47 48 select.parentElement.remove(); 49 } 50 }); 51 }); 52 }); 53 }, 4000); 54 55 // }; 56 57 // try { 58 59 // // alert("you clicked"); 60 61 // document 62 63 // .querySelector("#search-filter-container") 64 65 // .addEventListener("load", () => { 66 67 // alert("ul loaded"); 68 69 // [...pseudoSelects].forEach((select) => { 70 71 // select.classList.contains("checked") && 72 73 // pseudoSelects[0].insertAdjacentElement( 74 75 // "beforebegin", 76 77 // select.cloneNode(true) 78 79 // ); 80 81 // select.remove(); 82 83 // }); 84 85 // }); 86 87 // }); 88 89 // } catch {} 90}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.