Projets
À propos
Contact
Select Page
Green Got
by
admin9786
|
Oct 20, 2026
Search
Search
Recent Posts
Hello world!
Recent Comments
(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(); } })();