()
| 5149 | } |
| 5150 | |
| 5151 | function populateSearchEverywhereSources() { |
| 5152 | if (!searchEverywhereSourceEl) return; |
| 5153 | const sources = getSearchEverywhereSources(); |
| 5154 | const wrap = searchEverywhereSourceEl.closest('.search-everywhere-source-wrap'); |
| 5155 | searchEverywhereSourceEl.innerHTML = ''; |
| 5156 | |
| 5157 | const multiple = sources.length > 1; |
| 5158 | if (multiple) { |
| 5159 | const opt = document.createElement('option'); |
| 5160 | opt.value = 'all'; |
| 5161 | opt.textContent = t('search_everywhere_source_all') || 'All sources'; |
| 5162 | searchEverywhereSourceEl.appendChild(opt); |
| 5163 | } |
| 5164 | |
| 5165 | sources.forEach(src => { |
| 5166 | const id = String(src.id || '').trim(); |
| 5167 | if (!id) return; |
| 5168 | const opt = document.createElement('option'); |
| 5169 | opt.value = id; |
| 5170 | const label = formatSourceBadgeText(src) || id; |
| 5171 | const lockMark = src.readOnly ? ` \uD83D\uDD12 ${t('read_only') || 'Read-only'}` : ''; |
| 5172 | opt.textContent = `${label}${lockMark}`; |
| 5173 | searchEverywhereSourceEl.appendChild(opt); |
| 5174 | }); |
| 5175 | |
| 5176 | if (wrap) { |
| 5177 | wrap.style.display = (multiple || sources.length > 0) ? '' : 'none'; |
| 5178 | } |
| 5179 | searchEverywhereSourceEl.disabled = sources.length <= 1; |
| 5180 | |
| 5181 | const prev = searchEverywhereSourceEl.getAttribute('data-prev') || ''; |
| 5182 | const hasPrev = Array.from(searchEverywhereSourceEl.options).some(opt => opt.value === prev); |
| 5183 | if (hasPrev) { |
| 5184 | searchEverywhereSourceEl.value = prev; |
| 5185 | } else if (multiple) { |
| 5186 | searchEverywhereSourceEl.value = 'all'; |
| 5187 | } else if (searchEverywhereSourceEl.options.length) { |
| 5188 | searchEverywhereSourceEl.value = searchEverywhereSourceEl.options[0].value; |
| 5189 | } |
| 5190 | searchEverywhereSourceEl.setAttribute('data-prev', searchEverywhereSourceEl.value || ''); |
| 5191 | |
| 5192 | if (!searchEverywhereSourceEl.__wired) { |
| 5193 | searchEverywhereSourceEl.__wired = true; |
| 5194 | searchEverywhereSourceEl.addEventListener('change', () => { |
| 5195 | searchEverywhereSourceEl.setAttribute('data-prev', searchEverywhereSourceEl.value || ''); |
| 5196 | }); |
| 5197 | } |
| 5198 | } |
| 5199 | |
| 5200 | function ensureSearchEverywhereModal() { |
| 5201 | if (searchEverywhereModal) return searchEverywhereModal; |
no test coverage detected