DaxDuckDex - enhance search function

When searching, match also accented letter

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         DaxDuckDex - enhance search function
// @namespace    https://github.com/Procyon-b
// @version      0.9.1
// @description  When searching, match also accented letter
// @author       Achernar
// @match        https://makdulac.com/daxduckdex*
// @grant        none
// @run-at  document-end
// ==/UserScript==

(function() {

function new_filterAndSortCharacters() {
  const searchTerm = this.dom.searchInput.value.toLowerCase();
  this.currentPage = 1;
  let RE=new RegExp(searchTerm.trim().replace(/([\\\.\?\[\]\(\)])/g, '\\$1' ).replace(/[aäâáàã]/g,'[aäâáàã]').replace(/[eëêéè]/g,'[eëêéè]').replace(/[iìíîï]/g,'[iìíîï]').replace(/[oôöóòõ]/g,'[oôöóòõ]').replace(/[uûüúù]/g,'[uûüúù]').replace(/[yÿý]/g,'[yÿý]').replace(/[nñ]/g,'[nñ]'), 'i');

  let filtered = this.allCharacters.filter(character => {
    const nameMatch = RE.test(character.name);
    const discovererMatch = character.discoverer && RE.test(character.discoverer);
    const tagsMatch = character.tags && character.tags.some(tag => RE.test(tag));
    return nameMatch || discovererMatch || tagsMatch;
    });

  this.filteredCharacters = this.sortCharacters(filtered);

  // Track search for analytics (privacy-first)
  if (searchTerm.length > 0 && window.daxAnalytics) {
    window.daxAnalytics.trackSearch(searchTerm, this.filteredCharacters.length);
    }

  this.displayCharacters();
  this.updateStats();
  this.toggleClearButton();
  this.addDiscovererSearchFeedback(searchTerm);
}


DaxDuckDex.prototype.filterAndSortCharacters = new_filterAndSortCharacters;

})();