(function(){
"use strict";
const MODULE="#portfolio-projets";
const PARAM="categorie";
let applicationEnCours=false;
let initialisationFaite=false;
function normaliser(texte){
return texte.trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/&/g," ").replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");
}
function obtenirFiltres(){
const module=document.querySelector(MODULE);
return module?Array.from(module.querySelectorAll(".et_pb_portfolio_filters li a")):[];
}
function estTous(lien,index){
return index===0||["tous","tout","all"].includes(normaliser(lien.textContent));
}
function slug(lien,index){
return estTous(lien,index)?"tous":normaliser(lien.textContent);
}
function lireCategorie(){
return normaliser(new URL(window.location.href).searchParams.get(PARAM)||"tous");
}
function changerURL(categorie,remplacer){
const url=new URL(window.location.href);
if(categorie==="tous"){url.searchParams.delete(PARAM);}else{url.searchParams.set(PARAM,categorie);}
const nouvelleURL=url.pathname+url.search+url.hash;
const actuelle=window.location.pathname+window.location.search+window.location.hash;
if(remplacer){
window.history.replaceState(window.history.state,"",nouvelleURL);
}else if(nouvelleURL!==actuelle){
window.history.pushState({categorie:categorie},"",nouvelleURL);
}
}
function activerCategorie(categorie){
const filtres=obtenirFiltres();
if(!filtres.length)return false;
const filtre=filtres.find((lien,index)=slug(lien,index)===categorie);
if(!filtre)return false;
const actif=filtres.find(lien=lien.classList.contains("active"));
if(actif!==filtre){
applicationEnCours=true;
filtre.click();
window.setTimeout(()={applicationEnCours=false;},500);
}
return true;
}
function initialiser(){
if(initialisationFaite)return;
const filtres=obtenirFiltres();
if(!filtres.length)return;
initialisationFaite=true;
const demandee=lireCategorie();
const connue=filtres.some((lien,index)=slug(lien,index)===demandee);
if(connue){
activerCategorie(demandee);
}else{
const actif=filtres.find(lien=lien.classList.contains("active"));
if(actif)changerURL(slug(actif,filtres.indexOf(actif)),true);
}
}
document.addEventListener("click",function(event){
const lien=event.target.closest(MODULE+" .et_pb_portfolio_filters li a");
if(!lien||applicationEnCours)return;
const filtres=obtenirFiltres();
const index=filtres.indexOf(lien);
if(index0)return;
const categorie=slug(lien,index);
window.setTimeout(()={changerURL(categorie,false);},0);
});
window.addEventListener("popstate",function(){
activerCategorie(lireCategorie());
});
function demarrer(){
initialiser();
if(!initialisationFaite){
const observateur=new MutationObserver(()={
initialiser();
if(initialisationFaite)observateur.disconnect();
});
observateur.observe(document.body,{childList:true,subtree:true});
}
}
if(document.readyState==="loading"){
document.addEventListener("DOMContentLoaded",demarrer);
}else{
demarrer();
}
})();