function createCustomerTableSearch({ environment }) { function createSearch({ label, onSearch, getValues }) { const input = environment.document.createElement("input"); input.type = "search"; input.className = "opportunities-extension-customer-table-search"; input.placeholder = label; input.setAttribute("aria-label", label); input.addEventListener("input", onSearch); const normalize = value => String(value ?? "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase(); let index = new WeakMap(); return { input, reset() { index = new WeakMap(); }, filter(items) { const terms = normalize(input.value).trim().split(/\s+/).filter(Boolean); if (!terms.length) return items; return items.filter(item => { if (!index.has(item)) index.set(item, getValues(item).map(normalize)); return terms.every(term => index.get(item).some(value => value.includes(term))); }); } }; } return { createSearch }; }