PageSourceSearch

https://www.theatredubeauvaisis.com/site/content/cache/autoptimize…ptimize_231add03d3d5ae927d7f2e18979b146f.js

js theatredubeauvaisis.com collected 2026-09-28 09:29:10 UTC 172,420 bytes, 67 lines download raw bytes

1(function(){'use strict';window.PROJECT_NAME='TDB';const CONFIG_NAME=window.PROJECT_NAME+'_CONFIG';window[CONFIG_NAME]={core:{debug:false,version:'1.0.0',dataAttribute:'data-'+window.PROJECT_NAME.toLowerCase(),transitionDuration:250},modules:{mediaplayer:{libraries:{core:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite.js',providers:{youtube:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite-youtube.js',vimeo:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite-vimeo.js',dailymotion:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite-dailymotion.js'},plugins:{volumeBar:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite-volume-bar.js'}}},forms:{library:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/choices.min.js',choices:{searchEnabled:false,allowHTML:true,shouldSort:false,itemSelectText:'',loadingText:'Chargement...',noResultsText:'Aucun résultat trouvé',noChoicesText:'Aucun choix disponible'},timing:{resize:100,observerDelay:100,selectDelay:200},observeDynamic:true,additionalRefreshSelectors:['[data-grid-active-filters]'],debug:false},overlays:{dynamic:{enabled:true,autoCleanup:true},dynamicTemplates:{newsletter:`
2						<div class="overlay modal short" id="{id}" data-overlay-ajax="true">
3							<div class="overlay-container">
4								<a href="#" rel="nofollow noopener" title="Fermer" class="overlay-close"><span class="icon-close"></span><span class="label">Fermer</span></a>
5								<div class="overlay-content"></div>
6							</div>
7						</div>
8					`,viewer:`
9						<div class="overlay viewer" id="{id}" data-overlay-ajax="true">
10							<div class="overlay-container">
11								<a href="#" rel="nofollow noopener" title="Fermer" class="overlay-close">
12									<span class="icon-close"></span>
13									<span class="label">Fermer</span>
14								</a>
15								<div class="overlay-content"></div>
16							</div>
17						</div>
18					`,},types:{newsletter:{action:'newsletter_fetch',parameters:[],optionalParameters:[]},viewer:{action:'viewer_fetch',parameters:['imageIds'],optionalParameters:['viewerIndex']},},ajax:{url:window.THEME_AJAX_CONFIG?.ajax_url||'/wp-admin/admin-ajax.php',timeout:10000},debug:false},swiper:{library:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/swiper-bundle.min.js',timing:{transition:500,},debug:false},gridFilter:{ajax:{url:window.THEME_AJAX_CONFIG?.ajax_url||'/wp-admin/admin-ajax.php',timeout:10000},storage:{prefix:window.THEME_AJAX_CONFIG?.cookie_prefix||'tdb_',default_mode:'browser',},types:{events:{action:'grid_items_fetch',persistence:{mode:'browser'}},},debug:true},scrollTimeline:{gsap:{localPath:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/gsap.min.js',scrollTriggerPath:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/gsap.scrolltrigger.min.js'},animations:[{selector:'.scrolltime-revealed',timeline:'view',range:'cover -25% cover 25%',keyframes:{from:{opacity:0.25,translateY:'25%'},to:{opacity:1,translateY:'0'}},easing:'ease-in-out'},{selector:'.scrolltime-parallax img',timeline:'scroll',range:'0vh 100vh',keyframes:{from:{translateY:'0%'},to:{translateY:'50%'}},easing:'linear'}],debug:false},scrollTo:{debug:false,defaultOffset:20,topThreshold:150},goBack:{debug:false},helpers:{debounceDelay:300,throttleDelay:300}},urls:{ajax:window.THEME_AJAX_CONFIG?.ajax_url||'/wp-admin/admin-ajax.php',rest:window.THEME_AJAX_CONFIG?.rest_url||'/wp-json/wp/v2/',uploads:window.THEME_AJAX_CONFIG?.uploads_url||'/wp-content/uploads/',theme:window.THEME_AJAX_CONFIG?.theme_url||''},breakpoints:{mobile:480,tablet:768,desktop:1024,widescreen:1280,ultrawide:1600}};if(window.PROJECT_NAME){if(!window[window.PROJECT_NAME]){window[window.PROJECT_NAME]={};}
19window[window.PROJECT_NAME].config=window[CONFIG_NAME];}})();
20
21!function(){"use strict";const e=window.PROJECT_NAME||Object.keys(window).find(e=>e.endsWith("_CONFIG"))?.replace("_CONFIG","")||"FRAMEWORK",o=window[e+"_CONFIG"]||window[e]?.config||{};window[e]=window[e]||{};const t={version:"1.4.0",config:o,status:{initialized:!1,pageLoaded:!1,modules:{}},components:{},modules:{},registerModule(e,o){return e&&"object"==typeof o?(this.modules[e]=o,this.status.modules[e]=!1,this.status.initialized&&"function"==typeof o.init&&this.initModule(e,document),o):null},init(){const o=window.performance,t=this.config?.core?.debug||!1;o?.mark&&o.mark(`${e}-init-start`),t&&console.log(`${e} initializing...`);for(const e in this.modules)this.initModule(e,document);if(this.modules.helpers?.lazyLoading)try{this.modules.helpers.lazyLoading(),this.modules.helpers.setupLazyLoadingObserver&&this.modules.helpers.setupLazyLoadingObserver()}catch(e){console.error("Error initializing lazy loading:",e)}this.status.initialized=!0,this.setupModuleCoordination(),o?.mark?(o.mark(`${e}-init-end`),o.measure(`${e}-init`,`${e}-init-start`,`${e}-init-end`),t&&console.log(`${e} initialized`)):t&&console.log(`${e} initialized`)},setupModuleCoordination(){const o=this.config?.core?.debug||!1;
21if(this._moduleCoordinationSetup)return;this._moduleCoordinationSetup=!0;const t=t=>{t.type.replace(":ready","");o&&console.log(`${e} received ${t.type} event, triggering refresh`,t.detail);const i=t.detail?.element||t.detail?.instance?.element||t.detail?.context||document;this.refresh(i)};["geolocation:ready","grid:ready","swiper:ready","form:ready","media:ready","gallery:ready","carousel:ready","filter:ready","search:ready"].forEach(e=>{document.addEventListener(e,t,{passive:!0})}),document.addEventListener("module:ready",t=>{o&&console.log(`${e} received module:ready event`,t.detail);const{module:i,context:n}=t.detail||{};if(!i)return void console.warn(`${e} module:ready event missing module name`);const s=n||document;this.refresh(s)},{passive:!0}),o&&console.log(`${e} module coordination system active`)},initModule(e,o=document){const t=this.modules[e];if(!t?.init)return!1;try{const i=t.init(o);return i instanceof Promise?(i.then(o=>this.status.modules[e]=!!o).catch(o=>{this.status.modules[e]=!1,console.error(`Error in async init of ${e}:`,o)}),!0):(this.status.modules[e]=!1!==i,!1!==i)}catch(o){return console.error(`Error initializing ${e}:`,o),!1}},siteInit(){this.config?.core?.debug&&console.log(`${e} site loaded`),document.body.classList.remove("onload","outload"),this.status.pageLoaded=!0;for(const e in this.modules){const o=this.modules[e];if(o?.onLoad)try{o.onLoad()}catch(o){console.error(`Error in ${e} onLoad:`,o)}}},refresh(o=document,t=!1){if(!o)return;const i=Object.keys(this.modules);if(i.length){this.config?.core?.debug&&console.log(`Refreshing ${e} modules`,{context:o===document?"document":o.tagName,asyncMode:t});for(let e=0,t=i.length;e<t;e++){const t=i[e],n=this.modules[t];if(n)try{"refresh"in n?n.refresh(o):"init"in n&&n.init(o)}catch(e){console.error(`Error refreshing ${t}:`,e)}}t?requestAnimationFrame(()=>{requestAnimationFrame(()=>{const o=document;for(let e=0,t=i.length;e<t;e++){const t=i[e],n=this.modules[t];if(n&&"refresh"in n)try{n.refresh(o)}catch(e){console.error(`Error in delayed refresh of ${t}:`,e)}}this.config?.core?.debug&&console.log(`${e} async refresh complete`)})}):this.config?.core?.debug&&console.log(`${e} refresh complete`)}},cleanup(){this.config?.core?.debug&&console.log(`Cleaning up ${e} modules`);for(const e in this.modules){const o=this.modules[e];if(o?.cleanup)try{o.cleanup()}catch(o){console.error(`Error cleaning up ${e}:`,o)}}}};Object.assign(window[e],t),document.addEventListener("DOMContentLoaded",()=>window[e].init(),{passive:!0}),window.addEventListener("load",()=>window[e].siteInit(),{passive:!0}),window.initAjaxContent=(o,t=!0)=>o&&window[e].refresh(o,t)}();
22(function(){'use strict';})();
23
24!function(e){"use strict";const t=document,r=window,o={trapFocus(e){if(!e)return;const r=e.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])');if(0===r.length)return;const o=r[0],n=r[r.length-1],s=function(e){("Tab"===e.key||9===e.keyCode)&&(e.shiftKey?t.activeElement===o&&(n.focus(),e.preventDefault()):t.activeElement===n&&(o.focus(),e.preventDefault()))};e.removeEventListener("keydown",e._trapFocusHandler),e._trapFocusHandler=s,e.addEventListener("keydown",s)},releaseFocus(e){e&&e._trapFocusHandler&&(e.removeEventListener("keydown",e._trapFocusHandler),delete e._trapFocusHandler)},safeJSONParse(e,t={}){try{return JSON.parse(e)}catch(e){return console.warn("Failed to parse JSON:",e),t}},isInViewport(e,t=0){if(!e)return!1;const o=e.getBoundingClientRect();return o.top<=r.innerHeight-t&&o.bottom>=t&&o.left<=r.innerWidth-t&&o.right>=t},debounce(e,t=300){let r=null;return function(...o){r&&clearTimeout(r),r=setTimeout(()=>{e.apply(this,o)},t)}},throttle(e,t=300){let r=0;return function(...o){const n=Date.now();if(!(n-r<t))return r=n,e.apply(this,o)}},preloadExternalResources({checkSelector:e,cssUrl:o,jsUrl:n,preloadOnly:s=!0}){if(!e||-1===t.documentElement.innerHTML.indexOf(e))return!1;if(r._resourcesLoaded=r._resourcesLoaded||{},o&&!r._resourcesLoaded[o]){const e=t.createElement("link");e.rel="stylesheet",e.href=o,t.head.appendChild(e),r._resourcesLoaded[o]=!0}if(n&&!r._resourcesLoaded[n]){if(s){const e=t.createElement("link");e.rel="preload",e.as="script",e.href=n,t.head.appendChild(e)}else{const e=t.createElement("script");e.src=n,t.body.appendChild(e)}r._resourcesLoaded[n]=!0}return!0},isScriptLoaded:e=>void 0!==r[e],loadScript:(e,o=null)=>o&&o()?Promise.resolve():(r._resourcesLoaded=r._resourcesLoaded||{},r._resourcesLoaded[e]?Promise.resolve():new Promise((o,n)=>{const s=t.createElement("script");s.src=e,s.onload=()=>{r._resourcesLoaded[e]=!0,o()},s.onerror=()=>{n(new Error(`Failed to load script: ${e}`))},t.body.appendChild(s)})),lazyLoading(){t.querySelectorAll("img[loading='lazy']").forEach(e
24=>{const t=e.closest("figure"),r=()=>{e.removeAttribute("loading"),t&&(t.dataset.loaded="true")};e.complete&&0!==e.naturalHeight?r():e.addEventListener("load",r,{once:!0})})},setupLazyLoadingObserver(){if(!r.MutationObserver)return null;const e=new MutationObserver(e=>{let t=!1;for(const r of e){if(r.addedNodes.length>0)for(const e of r.addedNodes)if(1===e.nodeType&&("IMG"===e.tagName||e.querySelector?.('img[loading="lazy"]'))){t=!0;break}if(t)break}t&&this.lazyLoading()});return e.observe(t.body,{childList:!0,subtree:!0}),e},createIcon(e,r){const o=t.createElementNS("http://www.w3.org/2000/svg","svg");o.classList.add("icon-"+e),r&&r.split(" ").forEach(e=>e&&o.classList.add(e)),o.setAttribute("aria-hidden","true");const n=t.createElementNS("http://www.w3.org/2000/svg","use");return n.setAttribute("href","#icon-"+e),o.appendChild(n),o}};r[e]?.registerModule?r[e].registerModule("helpers",o):r.Helpers=o}(window.PROJECT_NAME||"FRAMEWORK");
25
26!function(e){"use strict";const t=document,s=window,i="https://cdn.jsdelivr.net/npm/choices.js/public/assets/scripts/choices.min.js",n={config:{library:i,textareaClass:"form-textarea",pwToggleClass:"password-toggle",pwFieldClass:"form-password",pwFieldsetClass:"password-fieldset",numContainerClass:"number-container",numLessClass:"number-less",numMoreClass:"number-more",initClass:"forms-initialized",enhancedClass:"forms-enhanced",eyeOpenClass:"icon-eye-open",eyeCloseClass:"icon-eye-close",textareaInitAttr:"data-forms-textarea-init",passwordInitAttr:"data-forms-password-init",numberInitAttr:"data-forms-number-init",selectInitAttr:"data-forms-select-init",timing:{resize:100,observerDelay:100,selectDelay:200},choices:{searchEnabled:!1,allowHTML:!0,shouldSort:!1,itemSelectText:"",loadingText:"Chargement...",noResultsText:"Aucun résultat trouvé",noChoicesText:"Aucun choix disponible"},observeDynamic:!0,observerConfig:{childList:!0,subtree:!0,attributes:!1},additionalRefreshSelectors:[],hooks:{beforeInit:null,afterInit:null,onTextareaResize:null,onPasswordToggle:null,onNumberChange:null,onSelectInit:null}},selectors:{},state:{instances:[],choicesInstances:[],resizeTimer:null,observer:null,observerEnabled:!1},initialized:!1,ready:!1,_handlers:{},configure(e){e&&"object"==typeof e&&this.mergeConfig(this.config,e)},init(e=t){return this.ready&&e===t?Promise.resolve(!1):(this.loadConfig(),this.buildSelectors(),this.doInit(e))},doInit(e=t){return this.config.hooks.beforeInit&&this.config.hooks.beforeInit(e),this.setupResizeHandler(),this.initTextareas(e),this.initPasswordToggles(e),this.initNumberContainers(e),this.initSelects(e).then(()=>(e===t&&(this.ready=!0,this.startObserver()),this.markInit(e),this.config.hooks.afterInit&&this.config.hooks.afterInit(e),!0)).catch(s=>(console.warn("[Forms] Init partial failure:",s),e===t&&(this.ready=!0,this.startObserver()),this.markInit(e),this.config.hooks.afterInit&&this.config.hooks.afterInit(e),!1))},loadConfig(){const t=s[e]?.config?.modules?.forms;t&&(null!=t.library&&"string"==typeof t.library&&(this.config.library=t.library),this.mergeConfig(this.config,t))},mergeConfig(e,t){for(const s in t)null!=t[s]&&(t[s]instanceof Object&&!Array.isArray(t[s])?(e[s]&&"object"==typeof e[s]||(e[s]={}),this.mergeConfig(e[s],t[s])):e[s]=t[s])},buildSelectors(){const e=this.config,t=e.choices?.exclude?`:not(${e.choices.exclude})`:"";this.selectors={textarea:`textarea, .${e.textareaClass}`,pwToggle:`.${e.pwToggleClass}`,numContainer:`.${e.numContainerClass}`,select:`select:not([${e.selectInitAttr}]):not([data-no-choices])${t}`}},setupResizeHandler(){this._handlers.resize||(this._handlers.resize=()=>{this.updateAllChoicesWidths(),this.state.resizeTimer&&clearTimeout(this.state.resizeTimer),this.state.resizeTimer=setTimeout(()=>{this.updateAllTextareas(),this.state.resizeTimer=null},this.config.timing.resize)},s.addEventListener("resize",this._handlers.resize,{passive:!0}))},markInit(e){const s=e===t?t.body:e;s?.classList.add(this.config.initClass)},startObserver(){!this.state.observerEnabled&&this.config.observeDynamic&&(this.state.observer=new MutationObserver(e=>this.handleMutations(e)),this.state.observer.observe(t.body,this.config.observerConfig),this.state.observerEnabled=!0)},stopObserver(){this.state.observerEnabled&&this.state.observer&&(this.state.observer.disconnect(),this.state.observer=null,this.state.observerEnabled=!1)},handleMutations(e){let s=!1,i=!1;
26e.forEach(e=>{e.addedNodes.forEach(e=>{if(e.nodeType===Node.ELEMENT_NODE)return"SELECT"===e.tagName?(setTimeout(()=>this.enhanceSelects([e]),this.config.timing.observerDelay),s=!0,void(i=!0)):void(this.hasEnhanceableElements(e)&&(setTimeout(()=>this.enhanceContainer(e),this.config.timing.observerDelay),s=!0,e.querySelectorAll("select").length>0&&(i=!0)))}),e.removedNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&this.cleanupInstances(e)})}),s&&setTimeout(()=>this.updateAllTextareas(),50),i&&setTimeout(()=>this.initSelects(t),this.config.timing.selectDelay)},hasEnhanceableElements(e){if(!e.querySelectorAll)return!1;return["textarea",`.${this.config.textareaClass}`,`.${this.config.pwToggleClass}`,"select",`.${this.config.numContainerClass}`].some(t=>e.matches?.(t)||e.querySelectorAll(t).length>0)},enhanceContainer(e){this.initTextareas(e),this.initPasswordToggles(e),this.initNumberContainers(e),this.initSelects(e)},cleanupInstances(e){this.state.choicesInstances=this.state.choicesInstances.filter(e=>{if(t.contains(e.element))return!0;try{e.choices?.destroy?.()}catch(e){console.warn("[Forms] Choices cleanup error:",e)}return!1}),this.state.instances=this.state.instances.filter(e=>t.contains(e.element))},initTextareas(e=t){e.querySelectorAll(`${this.selectors.textarea}:not([${this.config.textareaInitAttr}])`).forEach(e=>{const t=this.textareaResize.bind(e);e.addEventListener("input",t,{passive:!0}),e.addEventListener("focus",t,{passive:!0}),requestAnimationFrame(()=>t()),e.setAttribute(this.config.textareaInitAttr,""),e.classList.add(this.config.enhancedClass),this.state.instances.push({type:"textarea",element:e,handler:t})})},textareaResize(){this.style.height="auto";const e=this._borderTop??(this._borderTop=parseInt(s.getComputedStyle(this).borderTopWidth,10)||0),t=this._borderBottom??(this._borderBottom=parseInt(s.getComputedStyle(this).borderBottomWidth,10)||0);this.style.height=this.scrollHeight+e+t+"px",n.config.hooks.onTextareaResize&&n.config.hooks.onTextareaResize(this)},updateAllTextareas(){this.state.instances.filter(e=>"textarea"===e.type).forEach(e=>{try{e.handler()}catch(e){console.warn("[Forms] Textarea update error:",e)}})},updateAllChoicesWidths(){this.state.choicesInstances.forEach(e=>{try{e.updateMinWidth?.()}catch(e){console.warn("[Forms] Choices width update error:",e)}})},initPasswordToggles(e=t){e.querySelectorAll(`${this.selectors.pwToggle}:not([${this.config.passwordInitAttr}])`).forEach(e=>{const t=t=>{t.preventDefault(),t.stopPropagation(),this.handlePasswordToggle(e)},s=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handlePasswordToggle(e))};e.addEventListener("click",t),e.addEventListener("keydown",s),e.hasAttribute("tabindex")||e.setAttribute("tabindex","0"),e.setAttribute(this.config.passwordInitAttr,""),e.classList.add(this.config.enhancedClass),this.state.instances.push({type:"password",element:e,clickHandler:t,keyHandler:s})})},handlePasswordToggle(e){const t=e.closest(`.${this.config.pwFieldsetClass}`)||e.closest("fieldset")||e.parentElement;if(!t)return;const s=t.querySelector(`.${this.config.pwFieldClass}`)||t.querySelector('input[type="password"], input[type="text"]');s&&this.togglePassword(s,e)},togglePassword(e,t){const s="password"===e.type;e.type=s?"text":"password";const i=t.querySelector(`.${this.config.eyeOpenClass}, .${this.config.eyeCloseClass}`);i&&(i.classList.toggle(this.config.eyeCloseClass,!s),i.classList.toggle(this.config.eyeOpenClass,s));const n=s?"Masquer le mot de passe":"Afficher le mot de passe";t.setAttribute("aria-pressed",s?"true":"false"),t.setAttribute("title",n),t.setAttribute("aria-label",n),this.config.hooks.onPasswordToggle&&this.config.hooks.onPasswordToggle(e,t,s)},initNumberContainers(e=t){e.querySelectorAll(`${this.selectors.numContainer}:not([${this.config.numberInitAttr}])`).forEach(e=>{const t=e.querySelector('input[type="number"]')||e.querySelector("input"),s=e.querySelector(`.${this.config.numLessClass}`),i=e.querySelector(`.${this.config.numMoreClass}`);if(!t||!s||!i)return;const n=e=>{e.preventDefault(),this.changeNumber(t,-1)},o=e=>{e.preventDefault(),this.changeNumber(t,1)};s.addEventListener("click",n),i.addEventListener("click",o),[s,i].forEac
26h(e=>{e.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.click())}),e.hasAttribute("tabindex")||e.setAttribute("tabindex","0")}),e.setAttribute(this.config.numberInitAttr,""),e.classList.add(this.config.enhancedClass),this.state.instances.push({type:"number",element:e,input:t,lessBtn:s,moreBtn:i,lessHandler:n,moreHandler:o})})},changeNumber(e,t){const s=parseFloat(e.value)||0,i=parseFloat(e.step)||1,n=""!==e.min?parseFloat(e.min):-1/0,o=""!==e.max?parseFloat(e.max):1/0;let r=Math.min(Math.max(s+i*t,n),o);e.value=r,requestAnimationFrame(()=>{["input","change"].forEach(t=>{e.dispatchEvent(new Event(t,{bubbles:!0,cancelable:!0}))})}),this.config.hooks.onNumberChange&&this.config.hooks.onNumberChange(e,r,t)},initSelects(e=t){const i=e.querySelectorAll(this.selectors.select);return i.length?"function"!=typeof s.Choices?this.loadChoices().then(()=>this.enhanceSelects(i)).catch(e=>(console.error("[Forms] Failed to load Choices.js:",e),!1)):this.enhanceSelects(i):Promise.resolve(!1)},enhanceSelects(e){const i=t.createElement("canvas").getContext("2d");return e.forEach(e=>{if(!e.hasAttribute(this.config.selectInitAttr))try{let n={};const o=e.getAttribute("data-choices-config");if(o)try{n=JSON.parse(o)}catch(e){console.warn("[Forms] Invalid Choices config:",o,e)}const r={...this.config.choices,...n};e.id?.includes("mec_field")&&(r.placeholderValue=e.querySelector('option[value=""]')?.textContent||"Choisir une option...");const a=s.getComputedStyle(e),c=parseFloat(s.getComputedStyle(e.parentElement).fontSize)||16;i.font=`${a.fontWeight} ${a.fontSize} ${a.fontFamily}`;const l=4*c,h=Array.from(e.options).reduce((e,t)=>{const s=i.measureText(t.text).width;return s>e?s:e},0),d=Math.ceil(h+l);e.style.minWidth=d+"px";const u=new s.Choices(e,r),f=e.closest('.choices[role="listbox"]')||e.closest(".choices");if(f){const s=e.id?t.querySelector(`label[for="${e.id}"]`):null;if(s)s.id||(s.id=`label-${e.id}`),f.setAttribute("aria-labelledby",s.id);else{const t=e.getAttribute("aria-label")||e.getAttribute("placeholder")||e.querySelector('option[value=""]')?.textContent?.trim()||"";t&&f.setAttribute("aria-label",t)}}const m=e.closest(".choices");e.style.minWidth="",m&&(m.style.minWidth=d+"px");const g=()=>{m&&(m.style.minWidth=d+"px")};e.addEventListener("addItem",()=>{e.dispatchEvent(new Event("change",{bubbles:!0}))}),e.setAttribute(this.config.selectInitAttr,""),e.classList.add(this.config.enhancedClass),this.state.choicesInstances.push({element:e,choices:u,updateMinWidth:g}),this.state.instances.push({type:"select",element:e,choices:u}),this.config.hooks.onSelectInit&&this.config.hooks.onSelectInit(e,u)}catch(t){console.error("[Forms] Choices.js initialization error:",t,e)}}),Promise.resolve(!0)},syncChoicesInContext(e){this.state.choicesInstances.length&&this.state.choicesInstances.forEach(({element:s,choices:i})=>{if(!e.contains(s)&&e!==t)return;const n=s.querySelector("option[selected]"),o=n?.value??"";if(i.getValue(!0)!==o)try{i.setChoiceByValue(o)}catch(e){}})},loadScript:e=>new Promise((i,n)=>{const o=t.createElement("script");o.src=e,o.async=!0,o.setAttribute("data-loaded-by","forms-module");const r=setTimeout(()=>{o.remove(),n(new Error("Timeout"))},15e3);o.onload=()=>{clearTimeout(r),"function"==typeof s.Choices?i(!0):(o.remove(),n(new Error("Unavailable")))},o.onerror=()=>{clearTimeout(r),o.remove(),n(new Error("Load failed"))},t.head.appendChild(o)}),async loadChoices(){if("function"==typeof s.Choices)return!0;if(s.__choicesLoading)return new Promise(e=>{const t=setInterval(()=>{"function"==typeof s.Choices&&(clearInterval(t),e(!0))},50);setTimeout(()=>{clearInterval(t),e("function"==typeof s.Choices)},1e4)});if(Array.from(t.querySelectorAll('script[src*="choices"]')).filter(e=>!e.src.includes("forms.js")&&!e.src.includes("forms.min.js")).length>0)return s.__choicesLoading=!0,new Promise(e=>{let t=0;const i=()=>(t++,"function"==typeof s.Choices?(s.__choicesLoading=!1,void e(!0)):t>=300?(s.__choicesLoading=!1,void e(!1)):void setTimeout(i,50));i()});s.__choicesLoading=!0;const e=this.config.library,n=e&&e!==i;try{await this.loadScript(e)}catch(e){if(!n)throw s.__choicesLoading=!1,e;console.warn("[Forms] Primary path failed, trying CDN fallback...",e.message);try{await this.loadScript(i)}catch(e){throw s.__choicesLoading=!1,e}}return s.__choicesLoading=!1,!0},refresh(i=t){const n=[i],o=s[e]?.config?.modules?.forms?.additionalRefreshSelectors??this.config.additionalRefreshSelectors??[];
26return i!==t&&o.length&&o.forEach(e=>{t.querySelectorAll(e).forEach(e=>{i.contains(e)||n.push(e)})}),n.forEach(e=>{this.initTextareas(e),this.initPasswordToggles(e),this.initNumberContainers(e),this.syncChoicesInContext(e)}),Promise.all(n.map(e=>this.initSelects(e))).then(()=>(this.updateAllTextareas(),this.updateAllChoicesWidths(),!0))},onLoad(){this.ready&&requestAnimationFrame(()=>this.updateAllTextareas())},getInstances(e){return e?this.state.instances.filter(t=>t.type===e):this.state.instances},getChoicesInstance(e){const s="string"==typeof e?t.querySelector(e):e;return s&&this.state.choicesInstances.find(e=>e.element===s)?.choices||null},cleanup(){this.stopObserver(),this.state.resizeTimer&&(clearTimeout(this.state.resizeTimer),this.state.resizeTimer=null),this.state.choicesInstances.forEach(e=>{try{e.choices?.destroy?.(),e.element&&(e.element.classList.remove(this.config.enhancedClass),e.element.removeAttribute(this.config.selectInitAttr))}catch(e){console.warn("[Forms] Choices cleanup error:",e)}});const e={textarea:this.config.textareaInitAttr,password:this.config.passwordInitAttr,number:this.config.numberInitAttr};this.state.instances.forEach(t=>{try{if(!t.element)return;t.element.classList.remove(this.config.enhancedClass),e[t.type]&&t.element.removeAttribute(e[t.type])}catch(e){console.warn("[Forms] Instance cleanup error:",e)}}),this._handlers.resize&&(s.removeEventListener("resize",this._handlers.resize),delete this._handlers.resize),t.body?.classList.remove(this.config.initClass),this.state={instances:[],choicesInstances:[],resizeTimer:null,observer:null,observerEnabled:!1},this._handlers={},this.initialized=!1,this.ready=!1}},o=s[e]?.config?.modules?.forms;if(o&&n.mergeConfig(n.config,o),s[e]?.registerModule)s[e].registerModule("forms",n);else{const e=()=>{n.init().catch(e=>console.warn("[Forms] Init error:",e))};"loading"===t.readyState?t.addEventListener("DOMContentLoaded",e):e(),s.FormsModule=n}}(window.PROJECT_NAME||"FRAMEWORK");
27
28!function(t){"use strict";const e=document,s=window,o={config:{sharebarClass:"sharebar",buttonClass:"share-button",toastClass:"copy-toast",initAttr:"data-sharebar-initialized",platformClasses:{facebook:"facebook",twitter:"twitter",linkedin:"linkedin",mail:"mail",url:"url"},mobileBreakpoint:768,shareWindow:{width:600,height:400},toast:{duration:2e3,successMessage:"Lien copié !",errorMessage:"Impossible de copier"},mobileShare:{enabled:!0,iconClass:"icon-share",linkIconClass:"icon-link",label:"Partager",title:"Partager la page"},hooks:{beforeShare:null,afterShare:null,onCopySuccess:null,onCopyError:null,onReady:null}},selectors:{},state:{shareButtons:new Set,isMobile:!1,hasWebShare:!1,toastElement:null},initialized:!1,ready:!1,_handlers:{},configure(t){t&&"object"==typeof t&&this.mergeConfig(this.config,t)},init(t=e){return this.ready?Promise.resolve(!1):(this.loadConfig(),this.buildSelectors(),this.detectCapabilities(),this.doInit(t))},doInit(t=e){this.initialized=!0;return t.querySelectorAll(this.selectors.sharebar).length?(this.setupShareButtons(t),this.ready=!0,this.config.hooks.onReady&&this.config.hooks.onReady(),Promise.resolve(!0)):(this.ready=!0,Promise.resolve(!1))},loadConfig(){const o=s[t]?.config?.modules?.sharebar;o&&this.mergeConfig(this.config,o);const i=s.getComputedStyle(e.documentElement).getPropertyValue("--transition-duration-slow");i&&(this.config.toast.duration=1e3*parseFloat(i)||2e3)},mergeConfig(t,e){for(const s in e)null!=e[s]&&(e[s]instanceof Object&&!Array.isArray(e[s])?(t[s]&&"object"==typeof t[s]||(t[s]={}),this.mergeConfig(t[s],e[s])):t[s]=e[s])},buildSelectors(){const t=this.config;this.selectors={sharebar:"."+t.sharebarClass,button:"."+t.buttonClass}},detectCapabilities(){this.state.isMobile=s.innerWidth<=this.config.mobileBreakpoint,this.state.hasWebShare=!(!navigator.share||!this.config.mobileShare.enabled)},setupShareButtons(t=e){t.querySelectorAll(this.selectors.sharebar+" "+this.selectors.button+":not(["+this.config.initAttr+"])").forEach(t=>{this.state.isMobile&&this.state.hasWebShare&&this.adaptMobileButton(t);const e=e=>this.handleShareClick.call(t,e,this);t.addEventListener("click",e),t._sharebarClickHandler=e,t.setAttribute(this.config.initAttr,""),this.state.shareButtons.add(t)})},adaptMobileButton(t){const e=this.config;if(t.classList.contains(e.platformClasses.url)){const s=t.querySelector('[class*="icon-"]'),o=t.querySelector(".label");s&&s.classList.contains(e.mobileShare.linkIconClass)&&(s.classList.remove(e.mobileShare.linkIconClass),s.classList.add(e.mobileShare.iconClass)),t.setAttribute("title",e.mobileShare.title),o&&(o.textContent=e.mobileShare.label)}},handleShareClick(t,e){if(this.classList.contains(e.config.platformClasses.mail))return!0;t.preventDefault();const s=this.closest(e.selectors.sharebar),o=e.getPostData(s);if(e.config.hooks.beforeShare&&e.config.hooks.beforeShare(this,o),e.state.hasWebShare&&this.classList.contains(e.config.platformClasses.url))return void e.shareWithWebAPI(o.url,o.title);const i=e.config.platformClasses;this.classList.contains(i.facebook)?e.shareOnFacebook(o.url,o.title):this.classList.contains(i.twitter)?e.shareOnTwitter(o.url,o.title):this.classList.contains(i.linkedin)?e.shareOnLinkedIn(o.url,o.title):this.classList.contains(i.url)&&e.copyToClipboard(o.url),e.config.hooks.afterShare&&e.config.hooks.afterShare(this,o)},getPostData:t=>({url:t?.dataset?.postUrl||s.location.href,title:t?.dataset?.postTitle||e.title}),async shareWithWebAPI(t,e){try{await navigator.share({title:e,text:e,url:t})}catch(e){"AbortError"!==e.name&&(console.error("Web Share failed:",e),this.copyToClipboard(t))}},shareOnFacebook(t,e){const s=`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(t)}`;this.openShareWindow(s,"Facebook")},shareOnTwitter(t,e){const s=`https://twitter.com/intent/tweet?url=${encodeURIComponent(t)}&text=${encodeURIComponent(e)}`;this.openShareWindow(s,"Twitter")},shareOnLinkedIn(t,e){const s=`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(t)}`;this.openShareWindow(s,"LinkedIn")},openShareWindow(t,e){const o=this.config.shareWindow,i=(s.innerWidth-o.width)/2,a=(s.innerHeight-o.height)/2;s.open(t,`share-${e}`,`width=${o.width},height=${o.height}
28,left=${i},top=${a},resizable=yes,scrollbars=yes`)},async copyToClipboard(t){try{navigator.clipboard&&s.isSecureContext?(await navigator.clipboard.writeText(t),this.showCopyFeedback(this.config.toast.successMessage),this.config.hooks.onCopySuccess&&this.config.hooks.onCopySuccess(t)):this.fallbackCopyToClipboard(t)}catch(e){console.error("Copy failed:",e),this.fallbackCopyToClipboard(t)}},fallbackCopyToClipboard(t){const s=e.createElement("textarea");s.value=t,s.style.position="fixed",s.style.left="-999999px",e.body.appendChild(s),s.focus(),s.select();try{e.execCommand("copy"),this.showCopyFeedback(this.config.toast.successMessage),this.config.hooks.onCopySuccess&&this.config.hooks.onCopySuccess(t)}catch(t){console.error("Fallback copy failed:",t),this.showCopyFeedback(this.config.toast.errorMessage,!0),this.config.hooks.onCopyError&&this.config.hooks.onCopyError(t)}e.body.removeChild(s)},showCopyFeedback(t,s=!1){let o=this.state.toastElement;o||(o=e.createElement("div"),o.className=this.config.toastClass,e.body.appendChild(o),this.state.toastElement=o),o.textContent=t,o.className=`${this.config.toastClass} ${s?"error":"success"} show`,setTimeout(()=>{o.classList.remove("show")},this.config.toast.duration)},refresh(t=e){return this.ready?(this.detectCapabilities(),this.setupShareButtons(t),Promise.resolve(!0)):this.init(t)},cleanup(){this.state.shareButtons.forEach(t=>{t._sharebarClickHandler&&(t.removeEventListener("click",t._sharebarClickHandler),delete t._sharebarClickHandler),t.removeAttribute(this.config.initAttr)}),this.state.toastElement&&(this.state.toastElement.remove(),this.state.toastElement=null),this.state={shareButtons:new Set,isMobile:!1,hasWebShare:!1,toastElement:null},this._handlers={},this.initialized=!1,this.ready=!1}},i=s[t]?.config?.modules?.sharebar;if(i&&Object.assign(o.config,i),s[t]?.registerModule)s[t].registerModule("sharebar",o);else{const t=()=>o.init().then(()=>{}).catch(()=>{});"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t):t(),s.Sharebar=o}}(window.PROJECT_NAME||"FRAMEWORK");
29
30!function(e){"use strict";const t=document,o=window,s=sessionStorage,i={config:{scrollDelay:100,includeSticky:!0,scrollOffset:0,buttonClass:"go-back",noScrollClass:"no-scroll",fallbackUrl:"/",debug:!1},state:{},selectors:{},initialized:!1,ready:!1,_handlers:{},init(e=t){return this.ready&&e===t?Promise.resolve(!1):(this.loadConfig(),this.buildSelectors(),this.log("🔙 Initializing..."),this.setupStorageHandlers(),this.setupLinkTracking(),this.attachButtons(),this.initialized=!0,this.ready=!0,this.log("✅ Initialized (v2.1.0)"),Promise.resolve(!0))},loadConfig(){const t=o[e]?.config?.modules?.goBack;t&&this.mergeConfig(this.config,t)},mergeConfig(e,t){for(const o in t)null!=t[o]&&(t[o]instanceof Object&&!Array.isArray(t[o])?(e[o]&&"object"==typeof e[o]||(e[o]={}),this.mergeConfig(e[o],t[o])):e[o]=t[o])},buildSelectors(){this.selectors={button:"."+this.config.buttonClass}},setupStorageHandlers(){this._handlers.beforeunload||(this._handlers.beforeunload=()=>{s.getItem("goBackClicked")||(s.setItem("scrollPosition",o.scrollY),s.setItem("pageReferer",o.location.href),this.log("💾 Stored:",o.scrollY))},this._handlers.load=()=>{const e=s.getItem("goBackClicked"),t=s.getItem("scrollPosition"),o=s.getItem("goBackNoScroll");this.log("🔄 Loaded - clicked:",e,"pos:",t,"noScroll:",o),"true"===e&&(t&&"true"!==o?setTimeout(()=>{this.scrollToPosition(parseInt(t)),this.log("✅ Restored:",t)},this.config.scrollDelay):this.log("⭐ Skipped scroll"),s.removeItem("goBackClicked"),s.removeItem("scrollPosition"),s.removeItem("goBackNoScroll"))},o.addEventListener("beforeunload",this._handlers.beforeunload),o.addEventListener("load",this._handlers.load,{once:!0}))},setupLinkTracking(){this._handlers.click||(this._handlers.click=e=>{const t=e.target.closest("a");t&&!t.classList.contains(this.config.buttonClass)&&o.location.pathname.includes("/page/")&&(s.setItem("pageReferer",o.location.href),this.log("💾 Paginated referer"))},t.addEventListener("click",this._handlers.click))},scrollToPosition(t){if((o[e]?.modules?.scrollTo||o.scrollToPosition)&&this.config.includeSticky){this.log("🎯 Using scrollTo module");(o.scrollToPosition||o[e].modules.scrollTo.scrollToPosition)(t,{behavior:"instant",includeSticky:!0,offset:this.config.scrollOffset})}else this.log("📜 Native scroll"),o.scrollTo(0,t)},handleClick(e){e.preventDefault(),e.stopPropagation(),this.log("🔙 Clicked");const i=e.target.closest(this.selectors.button);if(!i)return;const l=i.classList.contains(this.config.noScrollClass);o.__goBackNavigating=Date.now(),s.setItem("goBackClicked","true"),l&&(s.setItem("goBackNoScroll","true"),this.log("🚫 No scroll"));const r=s.getItem("pageReferer"),n=i.getAttribute("data-fallback-url")||this.config.fallbackUrl;this.log("🔍 Ref:",r,"FB:",n,"Hist:",o.history.length),r&&r!==o.location.href?(this.log("✅ Using ref"),o.location.href=r):o.history.length>1&&t.referrer&&t.referrer.includes(o.location.hostname)?(this.log("✅ Using history"),o.history.back()):n?(this.log("✅ Using fallback"),o.location.href=n):(this.log("⚠️ Using home"),o.location.href="/")},storeCurrentPage(){const e=o.location.href;t.body.classList.contains("single")||t.body.classList.contains("single-post")||(s.setItem("pageReferer",e),this.log("💾 Stored referer"))},attachButtons(){const e=t.querySelectorAll(this.selectors.button);this.log("🔍 Found",e.length,"button(s)"),this._handlers.buttonClick||(this._handlers.buttonClick=e=>{e.target.closest(this.selectors.button)&&this.handleClick(e)}),t.removeEventListener("click",this._handlers.buttonClick,!0),t.addEventListener("click",this._handlers.buttonClick,!0),this.storeCurrentPage(),this.log("✅ Attached")},refresh(e=t){return this.log("🔄 Refreshing..."),this.attachButtons(),Promise.resolve(!0)},cleanup(){this.log("🧹 Cleaning..."),this._handlers.beforeunload&&(o.removeEventListener("beforeunload",this._handlers.beforeunload),delete this._handlers.beforeunload),this._handlers.load&&(o.removeEventListener("load",this._handlers.load),delete this._handlers.load),this._handlers.click&&(t.removeEventListener("click",this._handlers.click),delete this._handlers.click),this._handlers.buttonClick&&(t.removeEventListener("click",this._handlers.buttonClick,!0),delete this._handlers.buttonClick),this.state={},this._handlers={},this.initialized=!1,this.ready=!1},enableDebug(){this.config.debug=!0,this.log("🐛 Debug enabled")},disableDebug(){this.config.debug=!1},log(...e){this.config.debug&&console.log("[GoBack]",...e)},goBack(e=null){o.__goBackNavigating=Date.now(),s.setItem("goBackClicked","true");const i=s.getItem("pageReferer"),l=e||this.config.fallbackUrl;i&&i!==o.location.href?o.location.href=i:o.history.length>1&&t.referrer&&t.referrer.includes(o.location.hostname)?o.history.back():o.location.href=l},clearStorage(){s.removeItem("goBackClicked"),s.removeItem("scrollPosition"),s.removeItem("pageReferer"),s.removeItem("goBackNoScroll"),this.log("🧹 Cleared storage")},getConfig(){return{...this.config}}},l=o[e]?.config?.modules?.goBack;if(l&&i.mergeConfig(i.config,l),o[e]?.registerModule)o[e].registerModule("goBack",i);else{const e=()=>i.init().then(()=>{}).catch(()=>{});"loading"===t.readyState?t.addEventListener("DOMContentLoaded",e):e(),o.GoBackModule=i}const r=()=>o[e]?.modules?.goBack||o.GoBackModule;o.goBack=e=>r()?.goBack(e),o.clearGoBackStorage=()=>r()?.clearStorage(),o.enableGoBackDebug=()=>r()?.enableDebug()}(window.PROJECT_NAME||"FRAMEWORK");
31
32!function(t){"use strict";const e=document,s=window;if("scrollRestoration"in history&&!s.__scrollRestorationFixed){s.__scrollRestorationFixed=!0,history.scrollRestoration="manual",s.addEventListener("beforeunload",()=>{const t=s.pageYOffset||e.documentElement.scrollTop,i=s.location.href;history.replaceState({...history.state,scroll:t,url:i},"")},{passive:!0});const t=()=>{const t=history.state,e=s.__goBackNavigating;e&&Date.now()-e<2e3||"true"===sessionStorage.getItem("goBackClicked")||null==t?.scroll||t?.url!==s.location.href||s.location.hash||requestAnimationFrame(()=>s.scrollTo({top:t.scroll,behavior:"instant"}))};"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t,{once:!0}):t(),s.addEventListener("popstate",t)}const i=s.scrollTo,o={config:{defaultOffset:20,cacheTimeout:1e3,debug:!1,topThreshold:150,_cachedHeight:null,_cacheTime:0,stickyClass:"sticky",stuckClass:"is-stuck",stickyPassiveClass:"passive",sectionLinkClass:"section-link",enableStickyStateTracking:!0,stickyStateCallback:null,patterns:[],bodyScrollClasses:!0,endThreshold:48,timing:{resizeDelay:250,refreshDelay:500}},selectors:{},state:{observer:null,resizeTimer:null,refreshTimer:null,stickyElements:new Map,rafPending:!1,lastScrollY:0},_handlers:{},initialized:!1,ready:!1,buildSelectors(){this.selectors={sticky:"."+this.config.stickyClass,stuck:"."+this.config.stuckClass}},setupStickyStateTracking(){if(!this.config.enableStickyStateTracking)return;const t=this.findCandidates().filter(t=>this.isValidSticky(t.el)).map(t=>t.el);this.log("Tracking",t.length,"sticky element(s)"),t.forEach(t=>this.trackStickyElement(t)),this.checkStickyStates()},trackStickyElement(t){const e=s.getComputedStyle(t),i=e.position;if("sticky"!==i&&"fixed"!==i)return;if("fixed"===i)return this.state.stickyElements.set(t,{position:"fixed",stickyTop:0}),void(t.classList.contains(this.config.stuckClass)||this.setStickyState(t,!0));const o=parseFloat(e.top)||0;this.state.stickyElements.set(t,{position:"sticky",stickyTop:o})},checkStickyStates(){this.config.enableStickyStateTracking&&this.state.stickyElements.forEac
32h((t,e)=>{if("fixed"===t.position)return void this.setStickyState(e,!0);const s=e.getBoundingClientRect(),i=Math.abs(s.top-t.stickyTop)<=2;this.setStickyState(e,i)})},setStickyState(t,e){if(t.classList.contains(this.config.stuckClass)!==e&&(t.classList.toggle(this.config.stuckClass,e),t.dispatchEvent(new CustomEvent("stickystatechange",{detail:{element:t,isStuck:e},bubbles:!0})),"function"==typeof this.config.stickyStateCallback))try{this.config.stickyStateCallback(t,e)}catch(t){this.log("stickyStateCallback error:",t)}},refreshStickyTracking(){if(!this.config.enableStickyStateTracking)return;const t=this.findCandidates().filter(t=>this.isValidSticky(t.el)).map(t=>t.el),e=new Set(t);this.state.stickyElements.forEach((t,s)=>{e.has(s)||this.state.stickyElements.delete(s)}),t.forEach(t=>this.trackStickyElement(t)),this.checkStickyStates()},getStickyHeight(t=!1){const e=Date.now();if(!t&&null!==this.config._cachedHeight&&e-this.config._cacheTime<this.config.cacheTimeout)return this.config._cachedHeight;const s=this.validateCandidates(this.findCandidates()),i=this.calculateHeight(s);return this.config._cachedHeight=i,this.config._cacheTime=e,this.log("Sticky height:",i+"px","from",s.length,"element(s)"),i},findCandidates(){const t=[],i=new Set;return e.querySelectorAll(this.selectors.sticky).forEach(e=>{const o=s.getComputedStyle(e).position;"sticky"!==o&&"fixed"!==o||(t.push({el:e,p:10,t:"class"}),i.add(e))}),this.config.patterns.forEach(o=>{try{e.querySelectorAll(o.s).forEach(e=>{if(i.has(e))return;const l=s.getComputedStyle(e).position;"sticky"!==l&&"fixed"!==l||(t.push({el:e,p:o.p,t:o.t}),i.add(e))})}catch(t){}}),t},validateCandidates(t){const e=t.filter(t=>this.isValidSticky(t.el)).filter(t=>!t.el.classList.contains(this.config.stickyPassiveClass)).map(t=>({...t,rect:t.el.getBoundingClientRect()})).filter(t=>t.rect.height>0&&t.rect.top<.5*s.innerHeight);return e.filter(t=>!e.some(e=>e.el!==t.el&&e.el.contains(t.el)))},calculateHeight(t){if(!t.length)return 0;const e=t.reduce((t,e)=>t+e.rect.height,0);return this.config.debug&&(t.forEach(t=>{const e=(t.el.id?"#"+t.el.id:"")||"."+t.el.className.split(" ")[0];this.log(" ",t.el.tagName+e,t.rect.height.toFixed(1)+"px")}),this.log("Total sticky height:",e.toFixed(1)+"px")),e},isValidSticky(t){if(!t?.offsetHeight)return!1;const e=s.getComputedStyle(t),i=t.getBoundingClientRect();if("none"===e.display||"hidden"===e.visibility||!+e.opacity)return!1;if(i.width<100||i.height<10)return!1;const o=e.position;return"sticky"===o||"fixed"===o},invalidateCache(){this.config._cachedHeight=null,this.config._cacheTime=0},updateBodyScrollClasses(){this.config.bodyScrollClasses&&!this.state.rafPending&&(this.state.rafPending=!0,requestAnimationFrame(()=>{this.state.rafPending=!1;const t=s.pageYOffset||e.documentElement.scrollTop,i=this.state.lastScrollY,o=e.body;t>0?(o.classList.add("scrolled"),o.classList.remove("top")):(o.classList.remove("scrolled","up","down"),o.classList.add("top")),t>i?(o.classList.add("down"),o.classList.remove("up")):t<i&&(o.classList.add("up"),o.classList.remove("down")),this.state.lastScrollY=Math.max(0,t);const l=s.scrollY+s.innerHeight+this.config.endThreshold>e.body.scrollHeight;o.classList.toggle("end",l),this.checkStickyStates()}))},scrollToElement(t,i={}){if(!t)return!1;const o=t.getBoundingClientRect(),l=s.pageYOffset||e.documentElement.scrollTop;return this.scrollToPosition(l+o.top,i)},scrollToPosition(t,e={}){const o=e.behavior||"smooth",l=e.offset??this.config.defaultOffset,n=!1!==e.includeSticky,c=e.forceRecalculate||!1;let a=t;return n&&(a-=this.getStickyHeight(c)),a=Math.max(0,a-l),this.log("Scrolling:",t,"->",a),i.call(s,{top:a,behavior:o}),!0},scrollToTop(t={}){return this.scrollToPosition(0,t)},getAdjustedScrollTop(){return(s.pageYOffset||e.documentElement.scrollTop)+this.getStickyHeight()},isElementInViewport(t,i={}){if(!t)return!1;const o=t.getBoundingClientRect(),l=!1!==i.includeSticky?this.getStickyHeight():0,n=i.threshold||0;return o.top>=l+n&&o.left>=0&&o.bottom<=(s.innerHeight||e.documentElement.clientHeight)&&o.right<=(s.innerWidth||e.documentElement.clientWidth)},enhanceScrollTo(){s.scrollTo=function(t,e){if("object"==typeof t&&void 0!==t?.top){const{top:e,behavior:s,...i}=t;return o.scrollToPosition(e,{behavior:s,...i})}return i.call(s,t,e)}},setupHashNavigation(){if(s.location.hash){const t=()=>setTimeout(()=>this.handleHashNavigation(),100);"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t,{once:!0}):t()}s.addEventListener("hashchange",()=>this.handleHashNavigation(),!1),e.addEventListener("click",t=>{const s=t.target.closest('a[href^="#"]');if(!s)return;const i=s.getAttribute("href");if(s.classList.contains(this.config.sectionLinkClass)){let o;if(t.preventDefault(),"#"===i||i.startsWith("#")){const t=s.closest("section");t&&(o=t.nextElementSibling)}else o=e.querySelector(i);return void(o&&this.scrollToElement(o,{behavior:"smooth",offset:0}))}const o=i&&"#"!==i?e.getElementById(i.substring(1)):null;o&&(t.preventDefault(),this.scrollToElement(o,{behavior:"smooth"}))},!1)},handleHashNavigation(){const t=s.location.hash,i=t&&"#"!==t?e.getElementById(t.substring(1)):null;i&&this.scrollToElement(i,{behavior:"instant",forceRecalculate:!0})},setupGlobalHandlers(){this._handlers.resize||(this._handlers.resize=()=>{clearTimeout(this.state.resizeTimer),this.state.resizeTimer=setTimeout(()=>{this.invalidateCache(),this.refreshStickyTracking(),this.state.resizeTimer=null},this.config.timing.resizeDelay)},this._handlers.scroll=()=>{this.updateBodyScrollClasses()},s.addEventListener("resize",this._handlers.resize,{passive:!0}),s.addEventListener("scroll",this._handlers.scroll,{passive:!0}),s.MutationObserver&&(this.state.observer=new MutationObserver(t=>{t.some(t=>"attributes"===t.type&&["style","class"].includes(t.attributeName)||"childList"===t.type&&(t.addedNodes.length||t.removedNodes.length))&&(this.invalidateCache(),clearTimeout(this.state.refreshTimer),this.state.refreshTimer=setTimeout(()=>{this.refreshStickyTracking(),this.state.refreshTimer=null},this.config.timing.refreshDelay))}),this.state.observer.observe(e.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class","data-sticky","data-fixed"]})),this.config.bodyScrollClasses&&this.updateBodyScrollClasses())}
32,log(...t){this.config.debug&&console.log("[ScrollTo]",...t)},refresh(){return this.invalidateCache(),this.refreshStickyTracking(),Promise.resolve(!0)},cleanup(){this.state.stickyElements.clear(),this.state.observer&&(this.state.observer.disconnect(),this.state.observer=null),["resizeTimer","refreshTimer"].forEach(t=>{this.state[t]&&(clearTimeout(this.state[t]),this.state[t]=null)}),this._handlers.resize&&s.removeEventListener("resize",this._handlers.resize),this._handlers.scroll&&s.removeEventListener("scroll",this._handlers.scroll),this._handlers={},this.config._cachedHeight=null,this.initialized=!1,this.ready=!1,s.scrollTo=i},mergeConfig(t,e){for(const s in e)null!=e[s]&&(e[s]instanceof Object&&!Array.isArray(e[s])?(t[s]&&"object"==typeof t[s]||(t[s]={}),this.mergeConfig(t[s],e[s])):t[s]=e[s])},init(){if(this.ready)return Promise.resolve(!1);const e=s[t]?.config?.modules?.scrollTo;return e&&this.mergeConfig(this.config,e),this.buildSelectors(),this.setupGlobalHandlers(),this.enhanceScrollTo(),this.setupHashNavigation(),this.setupStickyStateTracking(),this.log("Initialized v4.6.0"),this.ready=!0,Promise.resolve(!0)}},l=s[t]?.config?.modules?.scrollTo;if(l&&o.mergeConfig(o.config,l),s[t]?.registerModule)s[t].registerModule("scrollTo",o);else{const t=()=>o.init().catch(()=>{});"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t,{once:!0}):t()}s.scrollToElement=(t,e)=>o.scrollToElement(t,e),s.scrollToPosition=(t,e)=>o.scrollToPosition(t,e),s.scrollToTop=t=>o.scrollToTop(t),s.getStickyHeaderHeight=t=>o.getStickyHeight(t),s.isElementInViewport=(t,e)=>o.isElementInViewport(t,e),s.getAdjustedScrollTop=()=>o.getAdjustedScrollTop(),s.scrollUtility=o}(window.PROJECT_NAME||"FRAMEWORK");
33
34!function(e){"use strict";const s=document,t=window,i=requestAnimationFrame,n="classList",r="querySelector",a="querySelectorAll",o="getAttribute",l="setAttribute",c="removeAttribute",p="addEventListener",d="removeEventListener",h="data-swiper-init",u="data-swiper-pending",f="data-swiper-id",w="data-swiper-controller",g="data-swiper-target",m="data-swiper-slide",C="data-initial-slide",v=new WeakMap,b={config:{library:"https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.js",containerClass:"swiper-container",swiperableClass:"swiperable",wrapperClass:"swiper-wrapper",slideClass:"swiper-slide",initClass:"swiper-initialized",activeClass:"active",controlsClass:"swiper-controls",paginationClass:"swiper-pagination",scrollbarClass:"swiper-scrollbar",prevClass:"previous",nextClass:"next",fadeClass:"fade",verticalClass:"vertical",infiniteClass:"infinite",scrollableClass:"scrollable",gridClass:"grid",parallaxClass:"has-parallax",autoplayClass:"autoplay",autoHeightClass:"auto-height",viewerClass:"viewer",onloadClass:"onload",noTouchClass:"no-touch",noKeyboardClass:"no-keyboard",hasControlsClass:"has-controls",hasPaginationClass:"has-pagination",hasScrollbarClass:"has-scrollbar",hasFractionClass:"has-fraction",thumbsClass:"swiper-thumbs",timing:{transition:250,autoplay:2500,resize:250,controllerRetry:100},lazyInit:!0,visibilityThreshold:.2,breakpoints:{},elements:{grid:{container:"items",item:"item"},nav:{container:null,item:"a"}},templates:{nav:'<a href="#" rel="nofollow noopener" title="Précédent" class="{p}"><span class="icon-arrow-left"></span><span class="label">Précédent</span></a><a href="#" rel="nofollow noopener" title="Suivant" class="{n}"><span class="label">Suivant</span><span class="icon-arrow-right"></span></a>',page:'<a href="#" rel="nofollow noopener" class="{c}"><span class="label">{i}</span></a>'},swiperDefaults:{speed:250,keyboard:{enabled:!1},grabCursor:!0,slidesPerView:"auto",watchSlidesProgress:!0,observer:!0,observeParents:!0,preventClicks:!0,preventClicksPropagation:!0,threshold:5,allowTouchMove:!0,mousewheel:{enabled:!0,forceToAxis:!0}}},instances:[],templates:null,ready:!1,observer:null,mutationObserver:null,resizeTimer:null,instanceId:0,_globalInit:!1,_handlers:null,configure(e){e&&"object"==typeof e&&this.mergeConfig(this.config,e)},init(e=s){return this.ready?Promise.resolve(!1):(this.loadConfig(),this.templates=this.compileTemplates(),"function"==typeof t.Swiper?this.doInit(e):this.loadSwiper().then(()=>"function"!=typeof t.Swiper?(console.error("[Swiper] Failed to load"),!1):this.doInit(e)).catch(e=>(console.error("[Swiper] Load error:",e),!1)))}
34,async loadSwiper(){if("function"==typeof t.Swiper)return!0;if(t.__swiperLoading)return new Promise(e=>{const s=setInterval(()=>{"function"==typeof t.Swiper&&(clearInterval(s),e(!0))},50);setTimeout(()=>{clearInterval(s),e("function"==typeof t.Swiper)},1e4)});if(Array.from(s[a]('script[src*="swiper"]')).filter(e=>!e.src.includes("swipers.js")&&!e.src.includes("swipers.min.js")).length>0)return t.__swiperLoading=!0,new Promise(e=>{let s=0;const i=()=>{s++,"function"==typeof t.Swiper?(t.__swiperLoading=!1,e(!0)):s>=300?(t.__swiperLoading=!1,e(!1)):setTimeout(i,50)};i()});t.__swiperLoading=!0;const e=this.config.library,i="https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.js",n=e&&e!==i;return new Promise((r,a)=>{const o=(e,l=!1)=>{const c=s.createElement("script");c.src=e,c.async=!0,c.setAttribute("data-loaded-by","swipers-module");let p=!1;const d=setTimeout(()=>{p||(c.remove(),!l&&n?(console.warn("[Swiper] Local path failed, trying CDN fallback..."),o(i,!0)):(t.__swiperLoading=!1,p=!0,a(new Error("Timeout"))))},15e3);c.onload=()=>{clearTimeout(d),p||("function"==typeof t.Swiper?(t.__swiperLoading=!1,p=!0,r(!0)):(c.remove(),!l&&n?(console.warn("[Swiper] Local file loaded but Swiper unavailable, trying CDN..."),o(i,!0)):(t.__swiperLoading=!1,p=!0,a(new Error("Unavailable")))))},c.onerror=()=>{clearTimeout(d),p||(c.remove(),!l&&n?(console.warn("[Swiper] Failed to load from local path, trying CDN fallback..."),o(i,!0)):(t.__swiperLoading=!1,p=!0,a(new Error("Load failed"))))},s.head.appendChild(c)};o(e)}).catch(()=>(t.__swiperLoading=!1,!1))},doInit(e=s){this.setupGlobalEvents();const i=this.config,n=`.${i.containerClass}:not(.${i.initClass}),.${i.swiperableClass}:not(.${i.initClass})`,r=e[a](n);if(!r.length)return this.ready=!0,Promise.resolve(!1);i.lazyInit&&"IntersectionObserver"in t&&this.setupObserver();for(const e of r)e.hasAttribute(h)||e.hasAttribute(u)||(i.lazyInit&&this.observer?(this.observer.observe(e),e[l](u,"1")):this.initContainer(e));return this.ready=!0,Promise.resolve(!0)},compileTemplates(){const e=this.config.templates;return{nav:(s,t)=>e.nav.replace("{p}",s).replace("{n}",t),page:(s,t)=>e.page.replace("{c}",s).replace("{i}",t)}},loadConfig(){const s=t[e]?.config?.modules?.swiper;s&&(void 0!==s.library&&null!==s.library&&"string"==typeof s.library&&(this.config.library=s.library),s.containerSelector&&(this.config.containerClass=s.containerSelector.replace(/^\./,"")),s.containerClass&&(this.config.containerClass=s.containerClass),this.mergeConfig(this.config,s))},mergeConfig(e,s){for(const t in s)null!=s[t]&&"containerSelector"!==t&&(s[t]instanceof Object&&!Array.isArray(s[t])?(e[t]&&"object"==typeof e[t]||(e[t]={}),this.mergeConfig(e[t],s[t])):e[t]=s[t])},setupGlobalEvents(){if(this._globalInit)return;this._handlers={};const e=this.config;if("MutationObserver"in t){const t=s=>{if(1!==s.nodeType)return!1;const t=s[n];return t?.contains(e.containerClass)||t?.contains(e.swiperableClass)||s[r]?.(`.${e.containerClass},.${e.swiperableClass}`)};this.mutationObserver=new MutationObserver(e=>{let s=!1;e:for(const i of e)for(const e of i.addedNodes)if(t(e)){s=!0;break e}s&&this.ready&&i(()=>i(()=>{this.refresh(),i(()=>this.updateAllExternalNav())}))}),this.mutationObserver.observe(s.body,{childList:!0,subtree:!0})}this._handlers.resize=()=>{this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout(()=>this.updateAll(),e.timing.resize)},t[p]("resize",this._handlers.resize,{passive:!0});const a=(s,t)=>{if(t&&"Enter"!==s.key&&" "!==s.key)return;const i=s.target.closest(`[${g}]`);if(i){s.preventDefault(),s.stopPropagation();const t=i[o](g),r=i[o](m),a=t&&this.findInstance(t);return void(a?.swiper&&(this.flashActive(i),null!==r?this.navigateSwiper(a.swiper,"slide",+r):i[n].contains(e.prevClass)?this.navigateSwiper(a.swiper,"prev"):i[n].contains(e.nextClass)&&this.navigateSwiper(a.swiper,"next")))}const r=s.target.closest(`.${e.prevClass},.${e.nextClass}`);if(r){s.preventDefault(),s.stopPropagation(),s.stopImmediatePropagation();const t=r.closest(`.${e.containerClass}`),i=t&&this.instances.find(e=>e.container===t);i?.swiper&&(this.flashActive(r),this.handleAction(r,i.swiper,t))}};this._handlers.docKeydown=e=>{const s=e.key;if("Enter"===s||" "===s)return a(e,!0);if(!["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(s))return;if(["INPUT","TEXTAREA","SELECT"].includes(e.target.tagName))return;const t=this.findActiveContainer();if(!t)return;let i=this.instances.find(e=>e.container===t);if(!i?.swiper&&t.swiper&&(i={container:t,swiper:t.swiper}),!i?.swiper)return;e.preventDefault(),e.stopPropagation();const n="vertical"===i.swiper.params.direction?"ArrowUp"===s?"prev":"ArrowDown"===s?"next":null:"ArrowLeft"===s?"prev":"ArrowRight"===s?"next":null;n&&this.navigateSwiper(i.swiper,n)},this._handlers.docClick=e=>a(e,!1),s[p]("click",this._handlers.docClick,!0),s[p]("keydown",this._handlers.docKeydown,!0),this._globalInit=!0},findInstance(e){return this.instances.find(s=>s.swiper&&s.container?.[o](f)===e)},flashActive(e){e[n].add("is-active"),setTimeout(()=>e[n].remove("is-active"),100)},findActiveContainer(){const e=this.config;let i=null,n=0,r=-1/0;const o=s[a](`.${e.containerClass}.${e.initClass}:not(.${e.noKeyboardClass})`);for(const e of o){if(e.closest("figure"))continue;const a=e.getBoundingClientRect(),o=Math.max(0,Math.min(t.innerHe
34ight,a.bottom)-Math.max(0,a.top)),l=a.height>0?o/a.height:0;if(l<.1)continue;let c=0,p=e;for(;p&&p!==s.body;){const e=+t.getComputedStyle(p).zIndex;!isNaN(e)&&e>c&&(c=e),p=p.parentElement}(c>r||c===r&&l>n)&&(r=c,n=l,i=e)}return i},navigateSwiper(e,s,t){if(e&&!e.destroyed){if(e.params.autoHeight){const s=e.el.closest(".has-auto-height");if(s){const t=v.get(s)||{};t.unlockListener&&e.wrapperEl[d]("transitionend",t.unlockListener),t.unlockTimeout&&clearTimeout(t.unlockTimeout);const i=s.offsetWidth;if(i>0){s.style.minWidth=s.style.maxWidth=`${i}px`;const n=()=>{s.style.minWidth=s.style.maxWidth="",t.unlockTimeout&&clearTimeout(t.unlockTimeout),t.unlockListener=t.unlockTimeout=null};t.unlockListener=n,t.unlockTimeout=setTimeout(n,(e.params.speed||250)+50),v.set(s,t)}}}"number"==typeof t?e.slideTo(t):"prev"===s?e.slidePrev():"next"===s&&e.slideNext()}},handleAction(e,s,t){const i=this.config,r=e[n];r.contains(i.prevClass)?this.navigateSwiper(s,"prev"):r.contains(i.nextClass)&&this.navigateSwiper(s,"next")},setupObserver(){this.observer=new IntersectionObserver(e=>{for(const s of e)s.isIntersecting&&(this.initContainer(s.target),this.observer.unobserve(s.target))},{threshold:this.config.visibilityThreshold,rootMargin:"50px"})},initContainer(e){if(e[n].contains(this.config.initClass)||e.hasAttribute(h))return;e[n].contains(this.config.swiperableClass)&&this.convertToSwiper(e);if(!(e[a](`.${this.config.slideClass}`).length>1))return e[n].add(this.config.initClass),void e[c](u);this.initSwiper(e)},convertToSwiper(e){const t=this.config,i=e[n].contains(t.gridClass),o=t.elements[i?"grid":"NAV"===e.tagName?"nav":null];if(!o)return;let c;if("NAV"===e.tagName||!i){const s=e[r](`${o.item}.${t.activeClass}`);if(s){const t=e[a](o.item);c=Array.from(t).indexOf(s)}}if(null===o.container){const i=e[a](o.item);if(!i.length)return;if(void 0===c){const s=e[r](`${o.item}.${t.activeClass}`);s&&(c=Array.from(i).indexOf(s))}const n=s.createElement("div");n.className=t.wrapperClass;for(const e of i){const i=s.createElement("span");
34i.className=t.slideClass,i.appendChild(e.cloneNode(!0)),n.appendChild(i)}e.innerHTML="",e.appendChild(n)}else{const s=e[r](this.getSelector(o.container));if(!s)return;if(void 0===c&&"NAV"===e.tagName){const s=e[r](`${o.item}.${t.activeClass}`);if(s){const e=s.closest(this.getSelector(o.item));e&&(c=Array.from(e.parentNode.children).indexOf(e))}}s[n].add(t.wrapperClass);for(const s of e[a](this.getSelector(o.item)))s[n].add(t.slideClass)}e[n].add(t.containerClass),void 0!==c&&c>=0&&e[l](C,c)},getSelector:e=>e?e.startsWith(".")||e.includes(" ")||e.includes(">")?e:"."+e:"",initThumbsSwiper(e){const s=this.config;if(e[n].contains(s.initClass))return this.findInstance(e[o](f))?.swiper??null;const i=new t.Swiper(e,{slidesPerView:"auto",watchSlidesProgress:!0,observer:!0,observeParents:!0,grabCursor:!0,freeMode:{enabled:!0},slideToClickedSlide:!0});return e[n].add(s.initClass),e[n].remove(s.onloadClass),e[l](h,"1"),e[c](u),e[o](f)||e[l](f,this.generateId()),this.instances.push({container:e,swiper:i}),i},initSwiper(e){const i=this.config,a=e[o](w);let p=null;if(a){const e=s[r](`[${f}="${a}"]`);e&&e[n].contains(i.thumbsClass)&&(p=this.initThumbsSwiper(e))}const d=this.buildOptions(e);this.setupControls(e,d),p&&(d.thumbs={swiper:p}),e[o](f)||e[l](f,this.generateId());try{const s=new t.Swiper(e,d);return this.instances.push({container:e,swiper:s}),e[n].add(i.initClass),e[n].remove(i.onloadClass),e[c](u),e[l](h,"1"),p||this.scheduleControllerLink(e),s}catch(s){return console.error("[Swiper] Init error:",s),e[n].add(i.initClass),e[c](u),null}},scheduleControllerLink(e){const s=e[o](f),t=e[o](w);if(!s||!t)return;const n=t.split(",").map(e=>e.trim()).filter(Boolean);n.length&&i(()=>this.linkControllers(e,n))},linkControllers(e,t,i=0){const o=this.config.timing.controllerRetry||100,l=s[r](`[${f}="${t[0]}"]`);if(l&&l[n].contains(this.config.thumbsClass))return;const c=this.instances.find(s=>s.container===e);if(!c?.swiper)return void(i<20&&setTimeout(()=>this.linkControllers(e,t,i+1),o));const p=[];for(const e of t){const s=this.findInstance(e);s?.swiper&&!p.includes(s.swiper)&&p.push(s.swiper)}if(!p.length)return;c.swiper._originalControl=p;const d=e[a](`.${this.config.slideClass}`).length;if(c.swiper.params.loop&&2===d){if(c.swiper._controllerLinked)return;const e=[c.swiper,...p];e.forEach(e=>e._controllerLinked=!0),e.forEach((s,t)=>{const i=s.slideNext.bind(s),n=s.slidePrev.bind(s),r=(s,i)=>{for(let s=0;s<e.length;s++)if(s!==t){const t=e[s];t._isSyncing=!0,"next"===i?t.slideNext():t.slidePrev(),setTimeout(()=>{t._isSyncing=!1},50)}};s.slideNext=function(e,s){return this._isSyncing||r(0,"next"),i(e,s)},s.slidePrev=function(e,s){return this._isSyncing||r(0,"prev"),n(e,s)}})}else c.swiper.controller.control=p},buildOptions(e){const s=e[n],t=this.config,r={...t.swiperDefaults,speed:t.timing.transition};s.contains(t.noTouchClass)&&(r.allowTouchMove=!1,r.grabCursor=!1),r.keyboard={enabled:!1};const l=e[o]("data-swiper-speed");if(null!==l&&!isNaN(+l)&&+l>=0&&(r.speed=+l),s.contains(t.verticalClass)&&(r.direction="vertical"),s.contains(t.infiniteClass)&&(r.loop=!0),r.loop){const s=e[a](`.${t.slideClass}:not(.swiper-slide-duplicate)`).length;r.loopedSlides=s<=3?s:1}if(s.contains(t.parallaxClass)&&(r.parallax=!0),s.contains(t.scrollableClass)&&(r.freeMode={enabled:!0},r.mousewheel={enabled:!0}),s.contains(t.autoplayClass)){const s=e[o]("data-swiper-autoplay"),i=null!==s&&!isNaN(+s)&&+s>=0?+s:t.timing.autoplay;r.autoplay={delay:i,disableOnInteraction:!1,pauseOnMouseEnter:!0}}(s.contains(t.autoHeightClass)||e.hasAttribute("data-swiper-autoheight"))&&(r.autoHeight=!0),s.contains(t.fadeClass)&&(r.effect="fade",r.fadeEffect={crossFade:!0});for(const[e,i]of Object.entries(t.breakpoints))if(s.contains(e)){if(r.slidesPerView=i.default,i.points){r.breakpoints={};for(const[e,s]of Object.entries(i.points))r.breakpoints[e]={slidesPerView:s}}break}const c=e[o](C);if(null!==c){const e=+c;r.initialSlide=e,e>0&&(r.speed=0)}const p=s=>{const t=s.params.loop?s.realIndex:s.activeIndex;this.updateExternalNav(e,t)},d=e=>{const s=e.thumbs?.swiper;if(!s||s.destroyed)return;const t=e.params.loop?e.realIndex:e.activeIndex;s.slideTo(t)},h=e=>i(()=>{e.updateSize(),e.updateSlides(),e.params.autoHeight&&e.updateAutoHeight(),p(e)});return r.on={init:s=>{i(()=>
34{if(s.update(),null!==c&&+c>0){const i=e[o]("data-swiper-speed");s.params.speed=null!==i&&!isNaN(+i)&&+i>=0?+i:t.timing.transition}})},afterInit:e=>i(()=>i(()=>p(e))),slideChange:e=>{e.params.loop||h(e),d(e)},realIndexChange:e=>{e.params.loop&&h(e),d(e)}},r},setupControls(e,t){const i=this.config,a=e[n].contains(i.hasControlsClass),o=e[n].contains(i.hasPaginationClass),c=e[n].contains(i.hasScrollbarClass),p=e[n].contains(i.hasFractionClass);if(!(a||o||c||p))return;let d=e[r](`.${i.controlsClass}`);d||(d=s.createElement("nav"),d.className=i.controlsClass,e.appendChild(d));const h=this.generateId();if(a){d.innerHTML=this.templates.nav(i.prevClass,i.nextClass);const e=d[r](`.${i.prevClass}`),s=d[r](`.${i.nextClass}`);e&&s&&(e.id=`p${h}`,s.id=`n${h}`,e[l]("aria-label","Précédent"),e[l]("role","button"),s[l]("aria-label","Suivant"),s[l]("role","button"),t.navigation={prevEl:e,nextEl:s})}if(o){const e=s.createElement("div");e.className=i.paginationClass,e.id=`pg${h}`,d.appendChild(e),t.pagination={el:e,clickable:!0,renderBullet:(e,s)=>this.templates.page(s,e+1)}}if(p){const e=s.createElement("div");e.className=i.paginationClass,e.id=`pf${h}`,d.appendChild(e),t.pagination={el:e,type:"fraction"}}if(c){const e=s.createElement("div");e.className=i.scrollbarClass,e.id=`sb${h}`,d.appendChild(e),t.scrollbar={el:e,draggable:!0,hide:!0}}},generateId:()=>
34++b.instanceId+"-"+Date.now().toString(36),navigateToSlide(e,s){const t=this.findInstance(e);t?.swiper&&this.navigateSwiper(t.swiper,"slide",s)},navigatePrev(e){const s=this.findInstance(e);s?.swiper&&this.navigateSwiper(s.swiper,"prev")},navigateNext(e){const s=this.findInstance(e);s?.swiper&&this.navigateSwiper(s.swiper,"next")},updateExternalNav(e,t){const i=e[o](f);if(!i)return;const r=s[a](`[${g}="${i}"]`),l=this.config;for(const e of r){const s=e[o](m);null!==s&&(+s===t?e[n].add(l.activeClass):e[n].remove(l.activeClass))}},attachExternalSwipers(){const e=s[a](`.${this.config.containerClass}.${this.config.initClass}`);for(const s of e)!this.instances.some(e=>e.container===s)&&s.swiper&&(this.instances.push({container:s,swiper:s.swiper}),s[o](w)&&this.scheduleControllerLink(s))},cleanupStaleInstances(){this.instances=this.instances.filter(e=>e.swiper&&!e.swiper.destroyed&&e.container&&s.body.contains(e.container))},updateAllExternalNav(){for(const e of this.instances)if(e.swiper&&e.container&&!e.swiper.destroyed){const s=e.swiper.params.loop?e.swiper.realIndex:e.swiper.activeIndex;this.updateExternalNav(e.container,s)}},updateAll(){for(const e of this.instances)if(e.swiper?.update)try{i(()=>{e.swiper.update(),e.swiper.params.autoHeight&&e.swiper.updateAutoHeight()})}catch(e){}},refresh(e=s){if(!this.ready)return this.init(e);this.cleanupStaleInstances(),this.attachExternalSwipers();const t=this.config,n=`.${t.containerClass}:not(.${t.initClass}):not([${u}]),.${t.swiperableClass}:not(.${t.initClass}):not([${u}])`,r=e[a](n);for(const e of r)t.lazyInit&&this.observer?(this.observer.observe(e),e[l](u,"1")):this.initContainer(e);return i(()=>this.updateAll()),Promise.resolve(!0)},onLoad(){this.ready&&i(()=>this.updateAll())},cleanup(){if(this._handlers){try{this._handlers.resize&&t[d]("resize",this._handlers.resize,{passive:!0}),this._handlers.docClick&&s[d]("click",this._handlers.docClick,!0),this._handlers.docKeydown&&s[d]("keydown",this._handlers.docKeydown,!0)}catch(e){}this._handlers=null}this.observer&&(this.observer.disconnect(),this.observer=null),this.mutationObserver&&(this.mutationObserver.disconnect(),this.mutationObserver=null),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null);const e=this.config;for(const s of this.instances)try{if(s.swiper?.destroy&&s.swiper.destroy(!0,!0),s.container){s.container[n].remove(e.initClass),s.container[c](h),s.container[c](u),s.container[c](C),s.container[c](f);const t=s.container[r](`.${e.controlsClass}`);t&&t.remove()}}catch(e){}this.instances=[],this.ready=!1,this._globalInit=!1,this.instanceId=0}},y=t[e]?.config?.modules?.swiper;if(y&&b.mergeConfig(b.config,y),t[e]?.registerModule)t[e].registerModule("swiper",b);else{const e=()=>b.init().catch(()=>{});"loading"===s.readyState?s[p]("DOMContentLoaded",e):e(),t.SwiperModule=b}}(window.PROJECT_NAME||"FRAMEWORK");
35
36!function(t){"use strict";const e=document,i=window,n=i.requestAnimationFrame||(t=>i.setTimeout(t,16)),s=Object.freeze({OBSERVER:{rootMargin:"50px",threshold:0},CHUNK_SIZE:5,RESIZE_DEBOUNCE:250,WIDTH_THRESHOLD:10,EM_TO_PX:16,REM_TO_PX:16}),r={config:{container:"grid",fluid:"fluid",items:"items",item:"item",init:"grid-initialized",loading:"grid-loading"},grids:new WeakMap,ready:!1,observer:null,resizeTimer:null,_eventsInit:!1,selectors:{},init:function(t=e){if(this.ready)return Promise.resolve(!0);this.loadConfig(),this.buildSelectors();const i=this.findGrids(t);return i.length?(this.setupEvents(),this.processGrids(i),this.ready=!0,Promise.resolve(!0)):Promise.resolve(!1)},loadConfig:function(){const e=i[t]?.config?.modules?.grid;e&&this.mergeConfig(this.config,e)},mergeConfig:function(t,e){for(const i in e)null!=e[i]&&(e[i]instanceof Object&&!Array.isArray(e[i])?(t[i]&&"object"==typeof t[i]||(t[i]={}),this.mergeConfig(t[i],e[i])):t[i]=e[i])},buildSelectors:function(){const t=this.config;this.selectors={grid:`.${t.container}.${t.fluid}:not(.${t.init})`,item:`.${t.item}`,initialized:`.${t.container}.${t.fluid}.${t.init}`}},findGrids:function(t){return Array.from(t.querySelectorAll(this.selectors.grid))},processGrids:function(t){"IntersectionObserver"in i?this.observeGrids(t):this.processInChunks(t)},observeGrids:function(t){this.observer?.disconnect(),this.observer=new IntersectionObserver((t,e)=>{t.forEach(({isIntersecting:t,target:i})=>{t&&(this.initGrid(i),e.unobserve(i))})},s.OBSERVER),t.forEach(t=>this.observer.observe(t))},processInChunks:function(t){const e=i=>{const r=Math.min(i+s.CHUNK_SIZE,t.length);for(let e=i;e<r;e++)this.initGrid(t[e]);r<t.length&&n(()=>e(r))};e(0)},setupEvents:function(){this._eventsInit||(i.addEventListener("resize",()=>{clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout(()=>{this.updateAll()},s.RESIZE_DEBOUNCE)},{passive:!0}),e.addEventListener("load",t=>{if("IMG"===t.target.tagName&&!t.target.classList.contains("img-placeholder")){const e=t.target.closest(this.selectors.initialized);if(e){const i=t.target,s=parseInt(i.getAttribute("width"))||0,r=parseInt(i.getAttribute("height"))||0;
36(Math.abs(i.naturalWidth-s)>10||Math.abs(i.naturalHeight-r)>10)&&(i.setAttribute("width",i.naturalWidth),i.setAttribute("height",i.naturalHeight),n(()=>this.buildLayout(e)))}}},!0),this._eventsInit=!0)},initGrid:function(t){const e=this.config;if(t.classList.contains(e.init))return!1;const i=t.querySelector(`.${e.items}`);return!!i&&(this.grids.set(t,{container:i,lastWidth:0,items:[]}),t.classList.add(e.init),n(()=>{this.buildLayout(t),setTimeout(()=>t.classList.remove(e.loading),50)}),!0)},buildLayout:function(t){const e=this.grids.get(t);if(!e)return;const i=this.collectItems(e.container);if(!i.length)return;const n=t.clientWidth;if(Math.abs(n-e.lastWidth)<s.WIDTH_THRESHOLD)return;e.lastWidth=n;const r=this.getRowHeight(t),o=this.getGap(e.container),l=this.getGalleryMargin(),h=this.packRows(i,n,r,o,l);this.applyLayout(e.container,h),e.items=h},collectItems:function(t){const e=[];return t.querySelectorAll(this.selectors.item).forEach(t=>{const i=t.querySelector("img:not(.img-placeholder)");if(!i)return;let n=parseInt(i.getAttribute("width")),s=parseInt(i.getAttribute("height"));if((!n||0===n||!s||0===s)&&i.complete&&i.naturalWidth>0&&(n=i.naturalWidth,s=i.naturalHeight,i.setAttribute("width",n),i.setAttribute("height",s)),!n||0===n||!s||0===s){const t=n.getComputedStyle(i).aspectRatio;if(t&&"auto"!==t&&t.includes("/")){const[e,i]=t.split("/").map(t=>parseFloat(t.trim()));e&&i&&(n=n||800,s=Math.round(n*i/e))}}(!n||n<=0)&&(n=800),(!s||s<=0)&&(s=600),e.push({item:t,img:i,width:n,height:s})}),e},packRows:function(t,e,i,n,s){const r=[];let o=[],l=0;const h=2*s;for(const s of t){const t=(i-h)/s.height*s.width+h,a=t+(o.length?n:0);l+a>e&&o.length&&(this.normalizeRow(o,l-n*(o.length-1),e,n),r.push(...o),o=[],l=0),o.push({...s,width:t,height:i}),l+=a}return o.length&&(this.normalizeRow(o,l-n*(o.length-1),e,n),r.push(...o)),r},normalizeRow:function(t,e,i,n){if(!t.length||e<=0)return;const s=i-n*(t.length-1),r=s/e;let o=0;for(let e=0;e<t.length-1;e++){const i=t[e],n=Math.round(i.width*r);i.finalWidth=n,i.finalHeight=i.height*r,o+=n}if(t.length>0){const e=t[t.length-1];e.finalWidth=Math.max(1,s-o),e.finalHeight=e.height*r}}
36,applyLayout:function(t,e){e.forEach(({item:t,img:e,finalWidth:i,finalHeight:n})=>{t.style.width=`${i}px`,e.style.height=`${n}px`})},getRowHeight:function(t){const n=t.querySelector("img");if(n){const t=parseInt(i.getComputedStyle(n).minHeight);if(t>0)return t}const r=i.getComputedStyle(e.documentElement).getPropertyValue("--grid-fluid-height");if(r){const t=parseFloat(r);if(t)return t*s.EM_TO_PX}return 250},getGap:function(t){return parseInt(i.getComputedStyle(t).gap)||0},getGalleryMargin:function(){const t=i.getComputedStyle(e.documentElement).getPropertyValue("--gallery-margin");if(t){const e=parseFloat(t);if(e)return e*s.REM_TO_PX}return 0},updateAll:function(){e.querySelectorAll(this.selectors.initialized).forEach(t=>n(()=>this.buildLayout(t)))},refresh:function(t=e){const i=this.findGrids(t);return i.length&&this.processGrids(i),n(()=>this.updateAll()),Promise.resolve(!0)},update:function(t){t&&this.grids.has(t)&&n(()=>this.buildLayout(t))},getInstance:function(t){return this.grids.get(t)||null},onLoad:function(){this.ready&&n(()=>this.updateAll())},cleanup:function(){this.observer?.disconnect(),this.observer=null,clearTimeout(this.resizeTimer),this.resizeTimer=null,e.querySelectorAll(this.selectors.initialized).forEach(t=>{try{const e=this.grids.get(t);
36e?.items?.forEach(({item:t,img:e})=>{t&&(t.style.width=""),e&&(e.style.height="")}),t.classList.remove(this.config.init,this.config.loading),this.grids.delete(t)}catch(t){}}),this.ready=!1,this._eventsInit=!1}},o=i[t]?.config?.modules?.grid;if(o&&r.mergeConfig(r.config,o),i[t]?.registerModule)i[t].registerModule("grid",r);else{const t=()=>r.init().then(()=>{}).catch(()=>{});"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t,{once:!0}):t(),i.gridModule=r}}(window.PROJECT_NAME||"FRAMEWORK");
37
38!function(t){"use strict";window.location.search.includes("crosspage=")&&window.history.replaceState(null,"",window.location.href.split("?")[0]);const e=document,i=window,s={ajax:{url:"/wp-admin/admin-ajax.php",timeout:1e4},storage:{type:"cookie",prefix:"grid_",expires:7,default_mode:"browser"},classes:{loading:"is-loading",active:"active",disabled:"disabled",error:"grid-error"},labels:{loading:"Chargement...",error:"Erreur de chargement",noResults:"Aucun résultat"},attrs:{gridOrigin:"data-grid-origin",gridTarget:"data-grid-target",gridFilter:"data-grid-filter",gridChildren:"data-grid-children",gridIndex:"data-grid-index",gridSort:"data-grid-sort",gridSortBy:"data-grid-sort-by",gridSortOrder:"data-grid-sort-order",gridMode:"data-grid-mode",gridPage:"data-grid-page",gridPostType:"data-grid-post-type",filtersCount:"data-filters-count",activeFilters:"data-grid-active-filters"},timing:{cookieDebounce:50,searchDebounce:500,scrollOffset:20},types:{},debug:!1},o={filter:["filter"],sort:["sort","index"],index:["index"],mode:["mode"],postType:["postType"],keyword:["keyword"],searchMode:["searchMode"]};const r={config:{},instances:new Map,timeouts:new Map,customHandlers:new Map,state:{cookieCache:null,sessionCache:null,debouncedStoreTimer:null,pendingStores:new Map},_handlers:{},initialized:!1,ready:!1,storageAvailable:"cookie",init:function(t=e,i={}){return this.ready&&t===e||(this.loadConfig(i),this.buildSelectors(),this.initialized||(this.setupGlobalHandlers(),this.initialized=!0),this.discover(t),this.ready=!0),Promise.resolve(!0)},loadConfig:function(e={}){this.config=this.deepClone(s);const o=i[t]?.config?.modules?.gridFilter||{};this.mergeConfig(this.config,o),this.mergeConfig(this.config,e),this.storageAvailable="cookie";const r=i.THEME_AJAX_CONFIG||{};r.filterable_paths&&(this.config.filterablePaths=r.filterable_paths),r.pagination_base&&(this.config.paginationBase=r.pagination_base)},buildSelectors:function(){const t=this.config.attrs;this.selectors={origin:`[${t.gridOrigin}]`,target:`[${t.gridTarget}]`,filter:`[${t.gridFilter}]`,mode:`[${t.gridMode}]`,sort:`[${t.gridSort}]`,sortBy:`[${t.gridSortBy}]`,sortOrder:`[${t.gridSortOrder}]`,index:`[${t.gridIndex}]`,postType:`[${t.gridPostType}]`}},mergeConfig:function(t,e){for(const i in e)null!=e[i]&&(e[i]instanceof Object&&!Array.isArray(e[i])?(t[i]&&"object"==typeof t[i]||(t[i]={}),this.mergeConfig(t[i],e[i])):t[i]=e[i])},deepClone:function(t){if(null===t||"object"!=typeof t)return t;if(t instanceof Array)return t.map(t=>this.deepClone(t));const e={};for(const i in t)e[i]=this.deepClone(t[i]);return e},setupGlobalHandlers:function(){this._handlers.click||(this._handlers.click=t=>{const e=t.target.closest(`${this.selectors.filter}, ${this.selectors.index}, ${this.selectors.sort}, ${this.selectors.mode}, ${this.selectors.sortBy}, ${this.selectors.sortOrder}, ${this.selectors.postType}`);if(e){const s=e.getAttribute("data-grid-page"),o="A"===e.tagName?e.getAttribute("href"):null;if(s&&o&&"#"!==o){t.preventDefault();const r=this.writeCrossPagePayload(e,s);return void(i.location.href=r?o+r:o)}const r=this.getInstanceFromElement(e);return void(r&&r.ajaxEnabled&&("A"===e.tagName&&"#"===e.getAttribute("href")&&t.preventDefault(),this.handleFilter(e)))}if(t.target.classList.contains("reset-search")){const e=this.getInstanceFromElement(t.target);e&&e.ajaxEnabled&&this.handleReset(t)}},this._handlers.input=t=>{if(t.target.classList.contains("filter-search")&&"text"===t.target.type){const e=this.getInstanceFromElement(t.target);e&&e.ajaxEnabled&&this.handleSearch(t)}},this._handlers.change=t=>{const e=t.target;if("SELECT"===e.tagName&&e.classList.contains("grid-filter")){const t=this.getInstanceFromElement(e);return void(t&&t.ajaxEnabled&&this.handleSelectFilter(e))}if(e.classList.contains("filter-search")&&"radio"===e.type){const i=this.getInstanceFromElement(e);i&&i.ajaxEnabled&&this.handleSearch(t)}},this._handlers.keydown=t=>{if(t.target.classList.contains("filter-search")&&"text"===t.target.type){const e=this.getInstanceFromElement(t.target);e&&e.ajaxEnabled&&("Enter"===t.key?(t.preventDefault(),t.target.blur(),this.handleSearch(t,!0)):"Escape"===t.key&&(t.preventDefault(),t.target.blur()))}},this._handlers.touchstart=t=>{const e=t.target.closest("[data-grid-page][data-grid-filter]");if(!e)return;const s="A"===e.tagName?e.getAttribute("href"):null;if(!s||"#"===s)return;t.preventDefault();const o=this.writeCrossPagePayload(e,e.getAttribute("data-grid-page"));i.location.href=o?s+o:s},this._handlers.popstate=()=>{const t=i.location.pathname;
38this.instances.forEach(e=>{const i=this.getFilterablePathConfig(t,e);if(!i||"read"===i.sync)return;const s=this.resolveFiltersFromPath(t,i);s&&(s.taxonomies&&(e.filters.taxonomies=s.taxonomies),void 0!==s.index&&(e.filters.index=s.index,e.filters.dates=s.dates),this.update(e))})},e.addEventListener("click",this._handlers.click,!0),e.addEventListener("touchstart",this._handlers.touchstart,{capture:!0,passive:!1}),e.addEventListener("input",this._handlers.input),e.addEventListener("change",this._handlers.change),e.addEventListener("keydown",this._handlers.keydown),i.addEventListener("popstate",this._handlers.popstate))},writeCrossPagePayload:function(t,e){const i=this.config.attrs,s=t.getAttribute(i.gridFilter),o=t.getAttribute(i.gridSort),r=t.getAttribute(i.gridMode),n=[];return s&&n.push(s.replace(/\s*,\s*/g,",")),o&&n.push("sort:"+o),r&&n.push("mode:"+r),n.length?"?crosspage="+encodeURIComponent(n.join(",")):null},discover:function(t=e){t.querySelectorAll(this.selectors.origin).forEach(t=>{const e=t.getAttribute(this.config.attrs.gridOrigin);if(e&&!this.instances.has(e)){const i=this.extractConfig(t);i&&this.initGrid(t,e,i)}})},initGrid:function(t,e,i){const s="false"!==t.getAttribute("data-grid-ajax"),o=this.config.types[i.postType]||{},r=o?.persistence?.mode||this.config.storage?.default_mode||"browser",n={element:t,id:e,config:i,ajaxEnabled:s,storageMode:r,filters:{}};if(this.instances.set(e,n),!s)return;this.getCompositeKey(e,i.pageId);const a=this.loadStored(n);n.filters={taxonomies:a.taxonomies&&!Array.isArray(a.taxonomies)?a.taxonomies:{},dates:a.dates||null,mode:a.mode||i.mode||"",sort:void 0!==a.sort?a.sort:i.sort||"",index:a.index||i.index||"",keyword:a.keyword||"",searchMode:a.searchMode||"",options:a.options||{},hasOverlay:void 0!==a.hasOverlay&&a.hasOverlay,hasPagination:void 0!==a.hasPagination&&a.hasPagination,posts_per_page:void 0!==a.posts_per_page?a.posts_per_page:-1},a.postType&&(n.filters.postType=a.postType,n.config.postType=a.postType),this.initializeSelectStates(n),n.domTaxonomies=this.extractDomTaxonomies(e),this.hasActiveFilters(n.filters)&&(this.syncUI(n,null),"session"===r&&this.update(n,{silent:!0}))},initializeSelectStates:function(t){e.querySelectorAll(`[${this.config.attrs.gridTarget}="${t.id}"]`).forEach(e=>{e.querySelectorAll("select.grid-filter").forEach(e=>{setTimeout(()=>{const i=e.options[e.selectedIndex],s=String(i?.dataset?.gridFilter||"").trim(),o=`_lastFilter_${t.id}_${e.id}`;e[o]=s},0)})})},extractConfig:function(t){const e=t.dataset,i={postType:e.gridPostType||"",pageId:e.gridPage||this.getPageId()};return e.gridMode&&(i.mode=e.gridMode),e.gridSort&&(i.sort=e.gridSort),e.gridIndex&&(i.index=e.gridIndex),i},getInstanceFromElement:function(t){const e=t.closest(this.selectors.target);if(!e)return null;const i=e.getAttribute(this.config.attrs.gridTarget);return i?this.instances.get(i):null},extractFilterData:function(t){const e=this.config.attrs,i={},s=t.getAttribute(e.gridFilter),o=t.getAttribute(e.gridIndex),r=t.getAttribute(e.gridSort),n=t.getAttribute(e.gridMode),a=t.getAttribute(e.gridSortBy),l=t.getAttribute(e.gridSortOrder),c=t.getAttribute(e.gridPostType);if(null!==s&&(i.filter=""===s?"DEFAULT":s),null!==o&&(i.index=""===o?"DEFAULT":o),null!==r&&(i.sort=""===r?"DEFAULT":r),null!==n&&(i.mode=""===n?"DEFAULT":n),null!==c&&(i.postType=c),null!==a||null!==l){const e=this.getInstanceFromElement(t),s=e?.filters?.sort||"",o=s.includes("_")?s.split("_"):[s,"desc"],r=o[0]||"",n=o[1]||"desc",c=null!==a?a:r,d=null!==l?l:n;i.sort=c?`${c}_${d}`:""}return i},handleFilter:function(t){const e=this.getInstanceFromElement(t);if(!e||!e.ajaxEnabled)return;const i=this.extractFilterData(t),s=t.hasAttribute("data-grid-combined")||!!t.closest("[data-grid-combined]");if(!Object.keys(i).length)return;if("DEFAULT"===i.filter&&!this.hasActiveFilters(e.filters))return;const o=Object.keys(i);this.updateFilters(e,i,{combined:s}),this.syncUI(e,o)},handleSelectFilter:function(t){const e=this.getInstanceFromElement(t);if(!e||!e.ajaxEnabled)return;const i=`_selectDebounce_${e.id}_${t.id}`;t[i]&&clearTimeout(t[i]),t[i]=setTimeout(()=>
38{const s=t.options[t.selectedIndex],o=s?.dataset?.gridFilter||"",r=s?.dataset?.gridSort||"",n=String(o||r).trim(),a=`_lastFilter_${e.id}_${t.id}`;if(String(t[a]||"").trim()===n)return void delete t[i];let l;t[a]=n,r?(this.updateFilters(e,{sort:r}),l=["sort"]):(this.updateFilters(e,{filter:o}),l=["filter"]),this.syncUI(e,l),delete t[i]},100)},handleSearch:function(t,e=!1){const i=t.target;if("text"!==i.type&&"radio"!==i.type)return;const s=this.getInstanceFromElement(i);if(s&&s.ajaxEnabled)if("text"===i.type){const t=i.value,o=`${s.id}_search`;this.updateResetBtn(i),this.timeouts.has(o)&&clearTimeout(this.timeouts.get(o));const r=()=>{this.updateFilters(s,{keyword:t}),this.syncUIKeyword(s.id,t),this.timeouts.delete(o)};e?r():this.timeouts.set(o,setTimeout(r,this.config.timing.searchDebounce))}else{const t=i.value;s.filters.searchMode="default"===t?"":t,this.syncUISearchMode(s.id,t),s.filters.keyword?this.updateFilters(s,{searchMode:s.filters.searchMode}):s.filters.searchMode?this.storeDebouncedWrite(s.id,s.filters,s.config.pageId):this.clearStored(s.id,s.config.pageId)}},handleReset:function(t){t.preventDefault();const e=this.getInstanceFromElement(t.target);if(!e||!e.ajaxEnabled)return;const i=t.target.closest(".form-container"),s=i?.querySelector('.filter-search[type="text"]');s&&(s.value="",this.updateResetBtn(s)),t.target.classList.remove(this.config.classes.active),this.updateFilters(e,{keyword:""}),this.syncUIKeyword(e.id,"")},updateFilters:function(t,e,i={}){void 0!==e.filter&&("DEFAULT"===e.filter?t.filters.taxonomies={}:e.filter.includes("|")||/:[^|]*,/.test(e.filter)?this.processMultiFilter(t.filters,e.filter):this.processTaxonomy(t.filters,e.filter,i.combined||!1)),["mode","sort","index","keyword","searchMode"].forEach(i=>{void 0!==e[i]&&(t.filters[i]="DEFAULT"===e[i]?"":e[i])}),void 0!==e.postType&&(t.config.postType=e.postType,t.filters.postType=e.postType),this.cleanFilters(t.filters),this.hasActiveFilters(t.filters)?this.storeDebouncedWrite(t.id,t.filters,t.config.pageId):this.clearStored(t.id,t.config.pageId),this.update(t)},processTaxonomy:function(t,e,i=!1){if(!e)return;t.taxonomies||(t.taxonomies={});const[s,o]=e.split(":");if(s){if(o&&""!==o)if(t.taxonomies[s])if(i){const e=t.taxonomies[s].indexOf(o);-1===e?t.taxonomies[s].push(o):(t.taxonomies[s].splice(e,1),0===t.taxonomies[s].length&&delete t.taxonomies[s])}else t.taxonomies[s]=[o];else t.taxonomies[s]=[o];else delete t.taxonomies[s];0===Object.keys(t.taxonomies).length&&delete t.taxonomies}},parseFilterPairs:function(t){return t?t.split("|").reduce((t,e)=>{const i=e.indexOf(":");if(-1===i)return t;const s=e.slice(0,i).trim();if(!s)return t;const o=e.slice(i+1).trim(),r=o?o.split(",").map(t=>t.trim()).filter(Boolean):[];return t.push({taxonomy:s,terms:r}),t},[]):[]},sameTermSet:function(t,e){if(t.length!==e.length)return!1;const i=[...t].sort(),s=[...e].sort();return i.every((t,e)=>t===s[e])},processMultiFilter:function(t,e){e&&(t.taxonomies||(t.taxonomies={}),this.parseFilterPairs(e).forEach(({taxonomy:e,terms:i})=>{i.length>0?t.taxonomies[e]=i:delete t.taxonomies[e]}),0===Object.keys(t.taxonomies).length&&delete t.taxonomies)},cleanFilters:function(t){const e=["mode","sort","index","keyword","posts_per_page"];Object.keys(t).forEach(i=>{const s=t[i];null==s?delete t[i]:""!==s||"keyword"===i||e.includes(i)||delete t[i]})},hasActiveFilters:function(t){return!!(t.taxonomies&&Object.keys(t.taxonomies).length>0)||(!!(t.dates&&Object.keys(t.dates).length>0)||(!!(t.options&&Object.keys(t.options).length>0)||(!(!t.postType||""===t.postType)||["mode","sort","index","keyword","searchMode","posts_per_page"].some(e=>{const i=t[e];return null!=i&&""!==i}))))},storeDebouncedWrite:function(t,e,i){const s=this.instances.get(t),o=this.getCompositeKey(t,i);this.state.pendingStores.set(o,{filters:e,storageMode:s?.storageMode||"browser"}),this.state.debouncedStoreTimer&&clearTimeout(this.state.debouncedStoreTimer),this.state.debouncedStoreTimer=setTimeout(()=>{this.flushPendingStores()},this.config.timing.cookieDebounce)},flushPendingStores:function(){if(0===this.state.pendingStores.size)return;const t=new Map,e=new Map;
38if(this.state.pendingStores.forEach(({filters:i,storageMode:s},o)=>{("session"===s?e:t).set(o,i)}),t.size>0){const e=this.getGlobalCookieData();t.forEach((t,i)=>{e[i]=t}),this.setGlobalCookieData(e)}if(e.size>0){const t=this.getGlobalSessionData();e.forEach((e,i)=>{t[i]=e}),this.setGlobalSessionData(t)}this.state.pendingStores.clear(),this.state.debouncedStoreTimer=null},loadStored:function(t){const e=this.getCompositeKey(t.id,t.config.pageId);return"session"===t.storageMode?this.getGlobalSessionData()[e]||{}:this.getGlobalCookieData()[e]||{}},clearStored:function(t,e){const i=this.getCompositeKey(t,e),s=this.instances.get(t);if("session"===s?.storageMode){const t=this.getGlobalSessionData();return void(t[i]&&(delete t[i],this.setGlobalSessionData(t)))}const o=this.getGlobalCookieData();o[i]&&(delete o[i],this.setGlobalCookieData(o))},getCompositeKey:function(t,e){return`${e||this.getPageId()}_${t}`},getGlobalCookieName:function(){return this.config.storage.prefix+"filters"},getGlobalCookieData:function(){if(this.state.cookieCache)return this.state.cookieCache;let t={};const e=this.getCookie(this.getGlobalCookieName());if(e)try{t=JSON.parse(e)}catch(t){}return this.state.cookieCache=t,t},setGlobalCookieData:function(t){if(this.state.cookieCache=null,t&&0!==Object.keys(t).length){const e=JSON.stringify(t);e.length,this.setCookie(this.getGlobalCookieName(),e,{expires:this.config.storage.expires})}else this.setCookie(this.getGlobalCookieName(),"",{expires:-1})},setCookie:function(t,i,s={}){const o={expires:this.config.storage.expires,path:"/",secure:!1,sameSite:"lax",...s};let r=`${t}=${i.startsWith("{")||i.startsWith("[")?i.replace(/[;\r\n]/g,""):encodeURIComponent(i)}`;if(o.expires){const t=new Date;t.setTime(t.getTime()+864e5*o.expires),r+=`; expires=${t.toUTCString()}`}["path","domain","secure","sameSite"].forEach(t=>{o[t]&&(r+=`; ${t}${"secure"===t?"":`=${o[t]}`}`)}),e.cookie=r},getCookie:function(t){const i=t+"=";for(const t of e.cookie.split(";")){const e=t.trim();if(0===e.indexOf(i)){const t=e.substring(i.length);return t.startsWith("{")||t.startsWith("[")?t:decodeURIComponent(t)}}return null},getGlobalSessionKey:function(){return this.config.storage.prefix+"filters"},getGlobalSessionData:function(){if(this.state.sessionCache)return this.state.sessionCache;let t={};try{const e=sessionStorage.getItem(this.getGlobalSessionKey());e&&(t=JSON.parse(e))}catch(t){}return this.state.sessionCache=t,t},setGlobalSessionData:function(t){this.state.sessionCache=null;try{t&&0!==Object.keys(t).length?sessionStorage.setItem(this.getGlobalSessionKey(),JSON.stringify(t)):sessionStorage.removeItem(this.getGlobalSessionKey())}catch(t){}},update:function(t,e={}){this.setLoading(t.element,!0),this.customHandlers.has(t.config.postType)?this.customHandlers.get(t.config.postType)(t,this.config).then(i=>this.processResponse(t,{code:200,html:i},e)).catch(e=>this.handleError(t,e)):this.executeGenericAjax(t,e)},executeGenericAjax:function(t,e={}){const i=this.prepareAjaxData(t);fetch(this.config.ajax.url,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded","Cache-Control":"no-cache"},body:new URLSearchParams(i),signal:AbortSignal.timeout(this.config.ajax.timeout)}).then(t=>t.ok?t.json():Promise.reject(new Error(`HTTP ${t.status}`))).then(i=>this.processResponse(t,i,e)).catch(e=>this.handleError(t,e))},prepareAjaxData:function(t){const{config:s,filters:o}=t,r=this.config.types[s.postType],n=r?.action||"grid_items_fetch",a=e.querySelector(`[${this.config.attrs.gridOrigin}="${t.id}"]`);if(!a)return null;const l=this.config.paginationBase||"page",c=new RegExp("\\/"+l+"\\/\\d+\\/?");let d=String(i.location.href).replace(c,"/").split("?")[0];const h=i.location.pathname.replace(c,"/"),g=h.endsWith("/")?h:h+"/",u=this.getFilterablePathConfig(g);u&&u.sync&&"read"!==u.sync&&(d=i.location.origin+this.buildFilteredPath(t,u));const f={action:n,postType:s.postType,page:s.pageId,currentURL:d,gridOrigin:t.id,paged:1};void 0!==o.posts_per_page&&(f.posts_per_page=o.posts_per_page);const p=!o.taxonomies||Array.isArray(o.taxonomies)?{}:o.taxonomies;f.gridFilters=Object.keys(p).length>0?JSON.stringify(p):"{}",o.dates&&(f.dates=JSON.stringify(o.dates)),["mode","sort","index","keyword","searchMode"].forEach(t=>{void 0!==o[t]&&null!==o[t]&&(f[t]=o[t])}),o.postType&&""!==o.postType&&(f.postType=o.postType),["hasOverlay","hasPagination"].forEach(t=>{void 0!==o[t]&&(f[t]=o[t])}),o.options&&Object.keys(o.options).length>
380&&Object.entries(o.options).forEach(([t,e])=>{null!=e&&(f[t]="object"==typeof e?JSON.stringify(e):e)});const m=["gridOrigin","gridTarget","gridPage","gridPostType","gridMode","gridSort","gridIndex"];return Object.keys(a.dataset).forEach(t=>{if(m.includes(t))return;const e=a.dataset[t];"true"===e||"false"===e?f[t]="true"===e:e&&""!==e&&(f[t]=e)}),f},debugLog:function(...t){this.config.debug&&console.debug("[GridManager]",...t)},normalizeHtml:function(t){const i=e.createElement("div");return i.innerHTML=t,i.innerHTML},processResponse:function(s,o,r={}){if(200===o.code){this.debugLog("processResponse",{instId:s.id,hasHtml:"string"==typeof o.html,htmlLength:o.html?.length,activeFiltersHtmlPresent:void 0!==o.active_filters_html,activeFiltersHtmlLength:o.active_filters_html?.length}),this.syncUrl(s);const n=this.normalizeHtml(o.html)===s.element.innerHTML;this.debugLog("grid content",n?"unchanged — skipping write":"changed — writing innerHTML"),n||(s.element.innerHTML=o.html),this.updateContainerClasses(s,o),void 0!==o.active_filters_html?this.updateActiveFiltersZone(s.id,o.active_filters_html):this.debugLog("active_filters_html absent from response — updateActiveFiltersZone not called at all");const a=e.querySelectorAll(`[data-grid-scrollto="${s.id}"]`);if(a.length){const t=new Set([...s.element.querySelectorAll('[id^="filter-"]')].map(t=>t.id.replace("filter-","").toUpperCase())),e=null!==s.element.querySelector('[id^="filter-"]');a.forEach(i=>{i.querySelectorAll('a[href^="#filter-"]').forEach(i=>{const s=i.getAttribute("href").replace("#filter-","").toUpperCase();i.classList.toggle("disabled",!e||!t.has(s))})})}const l=e.querySelector(`[${this.config.attrs.gridOrigin}="${s.id}"]`);l&&(s.element=l),this.initializeSelectStates(s),s.domTaxonomies=this.extractDomTaxonomies(s.id),i[t]?.refresh&&i[t].refresh(s.element),r.silent||this.scrollToGrid(s.element)}else this.showError(s.element,o.message||this.config.labels.error);this.setLoading(s.element,!1)},updateActiveFiltersZone:function(t,i){const s=this.config.attrs.activeFilters,o=this.config.attrs.gridFilter,r=this.config.classes.active,n=e.querySelector(`[${s}="${t}"]`);if(this.debugLog("updateActiveFiltersZone",{id:t,zoneFound:!!n,htmlDefined:void 0!==i,htmlLength:i?.length}),!n)return void this.debugLog(`no element matches [${s}="${t}"] — nothing to update, check the selector/id`);if(void 0===i)return void this.debugLog("html is undefined — nothing to update");const a=i.trim();if(!a)return this.debugLog("html is empty — clearing zone"),void(""!==n.innerHTML&&(n.innerHTML=""));const l=e.createElement("div");l.innerHTML=a;const c=l.firstElementChild,d=!(!c||c.getAttribute(s)!==t),h=d?c.innerHTML:a;if(this.debugLog("hasOwnWrapper:",d,"| incoming root tag:",c?.tagName,"| root attr value:",c?.getAttribute(s)),h===n.innerHTML)return void this.debugLog("branch: NO-OP (byte-identical to current zone.innerHTML)");const g=t=>[...Array.from(t.querySelectorAll("a")).map(t=>[t.getAttribute(o)||"",t.getAttribute("href")||"",(t.getAttribute("title")||t.textContent||"").trim()].join("�")),...Array.from(t.querySelectorAll("select")).map(t=>[t.id||"",Array.from(t.options).map(t=>t.value).sort().join(",")].join("�"))].join("�"),u=e.createElement("div");u.innerHTML=h;const f=g(u),p=g(n),m=""!==f&&f===p;if(this.debugLog("skeleton match:",m),m||(this.debugLog("incoming signature:",f),this.debugLog("current  signature:",p)),m){this.debugLog("branch: PATCH (same pills/selects, only selection moved)");let t=0,e=0;return u.querySelectorAll(`[${o}]:not(option)`).forEach(i=>{const s=i.getAttribute(o),a=n.querySelector(`[${o}="${s}"]`);if(!a)return e++,void this.debugLog(`no matching element in zone for [${o}="${s}"] — this pill won't get its active state patched`);const l=i.classList.contains(r);a.classList.toggle(r,l),t++,l||a.className||a.removeAttribute("class")}),u.querySelectorAll("select").forEach(e=>{if(!e.id)return;const i=n.querySelector(`select#${CSS.escape(e.id)}`);if(!i)return;const s=new Map;let r="";for(const t of e.options)s.set(t.value,t),t.hasAttribute("selected")&&(r=t.value);
38Array.from(i.options).forEach(t=>{const e=s.get(t.value);if(e){const i=e.getAttribute(o);null!==i&&i!==t.getAttribute(o)&&t.setAttribute(o,i)}t.value===r?t.setAttribute("selected",""):t.removeAttribute("selected")}),t++}),void this.debugLog(`patched ${t} element(s), ${e} unmatched`)}this.debugLog("branch: REPLACE (structural difference — different set of pills)"),n.innerHTML=h},updateContainerClasses:function(t,e=null){if(e?.grid_class)return void(t.element.className=e.grid_class);const{filters:i,element:s}=t;s.classList.remove("grid","list","chronological"),s.classList.add("list"===(i.mode||"")?"list":"grid"),"chronological"===i.sort&&s.classList.add("chronological"),i.options?.type&&s.classList.add(i.options.type)},handleError:function(t,e){this.showError(t.element,"AbortError"===e.name?"Request timeout":this.config.labels.error),this.setLoading(t.element,!1)},setLoading:function(t,i){const s=i?"add":"remove";t.classList[s](this.config.classes.loading),e.body.classList[s](this.config.classes.loading)},showError:function(t,e){t.innerHTML=`<div class="${this.config.classes.error}">${e}</div>`},scrollToGrid:function(t){const e=this.config.timing.scrollOffset;if(i.scrollToElement)i.scrollToElement(t,{offset:e,behavior:"instant"});else{const s=t.getBoundingClientRect(),o=i.pageYOffset+s.top-e;i.scrollTo({top:Math.max(0,o),behavior:"instant"})}}};if(r.syncUI=function(t,i){const{id:s,filters:r}=t,n=this.config.classes.active,a=function(t){if(!t)return null;const e=new Set;return t.forEach(t=>{(o[t]||[t]).forEach(t=>e.add(t))}),e}(i),l=e.querySelectorAll(`[${this.config.attrs.gridTarget}="${s}"]:not([${this.config.attrs.activeFilters}])`),c=null===a,d=this.config.attrs.activeFilters,h=(t,e)=>t.querySelectorAll(`${e}:not([${d}] *)`);l.forEach(t=>{if(c||a.has("filter")){const e=this.config.attrs.gridFilter,i=this.config.attrs.gridChildren,s=h(t,`[${e}]`);let o=!1;s.forEach(t=>{const s=t.getAttribute(e);if(!s)return;const a=this.parseFilterPairs(s);if(!a.length)return;const l=s.includes("|")?a.filter(t=>t.terms.length>0):a;if(!l.length)return;const c=i?(t.getAttribute(i)||"").split(",").map(t=>t.trim()).filter(Boolean):[],d=l.every(t=>{const e=r.taxonomies?.[t.taxonomy]||[];return 0===t.terms.length?0===e.length:1===t.terms.length?e.includes(t.terms[0])||e.some(t=>c.includes(t)):this.sameTermSet(e,t.terms)});t.classList.toggle(n,d),d&&(o=!0)}),s.forEach(t=>{""===t.getAttribute(e)&&t.classList.toggle(n,!o)})}if(c||a.has("sort")){const e=this.config.attrs.gridSort,i=this.config.attrs.gridSortBy,s=this.config.attrs.gridSortOrder,o=r.sort||"";if(h(t,`[${e}], [${i}], [${s}]`).forEach(t=>t.classList.remove(n)),o&&(h(t,`[${e}="${o}"]`).forEach(t=>t.classList.add(n)),o.includes("_"))){const[e,r]=o.split("_");e&&h(t,`[${i}="${e}"]`).forEach(t=>t.classList.add(n)),r&&h(t,`[${s}="${r}"]`).forEach(t=>t.classList.add(n))}}if(c||a.has("index")){const e=this.config.attrs.gridIndex,i=r.index||"";h(t,`[${e}]`).forEach(t=>t.classList.remove(n)),i&&h(t,`[${e}="${i}"]`).forEach(t=>t.classList.add(n))}if(c||a.has("mode")){const e=this.config.attrs.gridMode,i=r.mode||"grid";h(t,`[${e}]`).forEach(t=>t.classList.remove(n)),h(t,`[${e}="${i}"]`).forEach(t=>t.classList.add(n))}if(c||a.has("postType")){const e=this.config.attrs.gridPostType,i=r.postType||"",s=h(t,`[${e}]`);s.length&&(s.forEach(t=>t.classList.remove(n)),i?h(t,`[${e}="${i}"]`).forEach(t=>t.classList.add(n)):s[0]&&s[0].classList.add(n))}if(c||a.has("keyword")){const e=r.keyword||"";t.querySelectorAll('.filter-search[type="text"]').forEach(t=>{t.value!==e&&(t.value=e,this.updateResetBtn(t))})}if(c||a.has("searchMode")){const e=r.searchMode||"";t.querySelectorAll('.filter-search[type="radio"]').forEach(t=>{t.checked=t.value===(e||"default")})}}),this.updateCount(s)},r.syncUIKeyword=function(t,i){e.querySelectorAll(`[${this.config.attrs.gridTarget}="${t}"]`).forEach(t=>{t.querySelectorAll('.filter-search[type="text"]').forEach(t=>{t.value!==i&&(t.value=i,this.updateResetBtn(t))})})},r.syncUISearchMode=function(t,i){const s=i||"default";e.querySelectorAll(`[${this.config.attrs.gridTarget}="${t}"]`).forEach(t=>{t.querySelectorAll('.filter-search[type="radio"]').forEach(t=>{t.checked=t.value===s})})},r.extractDomTaxonomies=function(t){const i={},s=e.querySelectorAll(`[${this.config.attrs.gridTarget}="${t}"]`);return s.length?(s.forEach(t=>{t.querySelectorAll(`[${this.config.attrs.gridFilter}]`).forEach(t=>{const e=t.getAttribute(this.config.attrs.gridFilter),s=e?e.indexOf(":"):-1;if(-1===s)return;const o=e.slice(0,s),r=e.slice(s+1).split(",")[0].trim();o&&r&&(i[o]=(i[o]||0)+1)})}),i):i},r.updateCount=function(t){const i=this.instances.get(t);if(!i)return;const s=i.filters.taxonomies||{},o=i.domTaxonomies||{};let r=0;
38Object.entries(s).forEach(([t,e])=>{const i=o[t];if(!i)return;const s=Array.isArray(e)?e.length:1;s>0&&s<i&&r++}),e.querySelectorAll(`[${this.config.attrs.gridTarget}="${t}"]`).forEach(t=>{const e=t.querySelector(`[${this.config.attrs.filtersCount}]`);e&&e.setAttribute(this.config.attrs.filtersCount,r)})},r.updateResetBtn=function(t){const e=t.closest(".form-container")?.querySelector(".reset-search");e&&e.classList.toggle(this.config.classes.active,!!t.value)},r.getPageId=function(){if(e.body.dataset.pageSlug)return e.body.dataset.pageSlug;if(e.body.dataset.pageId)return e.body.dataset.pageId;return i.location.pathname.replace(new RegExp("\\/"+(this.config.paginationBase||"page")+"\\/\\d+\\/?"),"/").split("/").filter(Boolean).pop()||"default"},r.refresh=function(t=e){return this.discover(t),Promise.resolve(!0)},r.cleanup=function(){this.state.debouncedStoreTimer&&(clearTimeout(this.state.debouncedStoreTimer),this.flushPendingStores()),this.timeouts.forEach(t=>clearTimeout(t)),this.timeouts.clear(),this.instances.forEach(t=>{t.element&&t.element.classList.remove(this.config.classes.loading)}),this.instances.clear(),this._handlers.click&&(e.removeEventListener("click",this._handlers.click,!0),e.removeEventListener("touchstart",this._handlers.touchstart,{capture:!0,passive:!1}),e.removeEventListener("input",this._handlers.input),e.removeEventListener("change",this._handlers.change),e.removeEventListener("keydown",this._handlers.keydown),this._handlers={}),this.state={cookieCache:null,sessionCache:null,debouncedStoreTimer:null,pendingStores:new Map},this.ready=!1,this.initialized=!1},r.registerHandler=function(t,e){this.customHandlers.set(t,e)},r.updateById=function(t,e={}){const i=this.instances.get(t);return!(!i||!i.ajaxEnabled)&&(this.updateFilters(i,e),!0)},r.getFilters=function(t){const e=this.instances.get(t);return e?{...e.filters}:{}},r.clearFilters=function(t){const e=this.instances.get(t);return!(!e||!e.ajaxEnabled)&&(e.filters={taxonomies:{},dates:null,mode:"",sort:"",index:"",keyword:"",searchMode:"",options:{},hasOverlay:!1,hasPagination:!1},this.clearStored(e.id,e.config.pageId),this.syncUI(e,null),this.update(e),!0)},r.getStats=function(){return{version:"12.6.1",grids:this.instances.size,ready:this.ready,storage:this.storageAvailable,config:this.config,customHandlers:Array.from(this.customHandlers.keys()),caches:{cookie:null!==this.state.cookieCache,session:null!==this.state.sessionCache,pendingStores:this.state.pendingStores.size}}},r.syncUrl=function(t){let e=i.location.pathname.replace(new RegExp("\\/"+(this.config.paginationBase||"page")+"\\/\\d+\\/?"),"/");e.endsWith("/")||(e+="/");const s=this.getFilterablePathConfig(e);if(!s){const t=i.location.origin+e;return void(i.location.href!==t&&i.history.replaceState(null,"",t))}const o=s.sync||!1;if(!o||"read"===o){const t=i.location.origin+s.path;return void(i.location.href!==t&&i.history.replaceState(null,"",t))}const r=this.buildFilteredPath(t,s),n=i.location.origin+r;i.location.href!==n&&i.history.pushState(null,"",n)},r.getFilterablePathConfig=function(t){const e=this.config.filterablePaths||[];for(const i of e)if(t===i.path||t.startsWith(i.path))return i;return null},r.buildFilteredPath=function(t,e){const i=t.filters,s=e.maps||{},o=[];if(i.postType&&s.post_type_map){const t=Object.keys(s.post_type_map).find(t=>s.post_type_map[t]===i.postType);t&&o.push(t)}if(i.index&&"all"!==i.index&&s.index_map&&"chronological"===i.sort){const t=s.index_map[String(i.index)];t&&o.push(t)}const r=new Set(Object.keys(s.post_type_map||{}));if(i.taxonomies&&s.taxonomies)for(const t of s.taxonomies||[]){const e=i.taxonomies[t];e&&1===e.length&&(r.has(e[0])||o.push(e[0]))}return o.length?e.path+o.join("/")+"/":e.path},r.resolveFiltersFromPath=function(t,e){const i=e.maps||{},s=t.slice(e.path.length).replace(/\/$/,"");if(!s)return null;const o=s.split("/").filter(Boolean),r={taxonomies:{},index:null,dates:null};for(const t of o)if(i.post_type_map?.[t])r.postType=i.post_type_map[t];else{if(i.index_slug_map?.[t]){const e=i.index_slug_map[t];r.index=parseInt(e,10),r.dates={date:parseInt(e,10)};continue}for(const e of i.taxonomies||[])if(i.term_slugs?.[e]?.includes(t)){r.taxonomies[e]=[t];break}}return r},i[t]?.registerModule)i[t].registerModule("gridFilter",r);else{const t=()=>
38r.init().catch(()=>{});"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t):t(),i.GridManager=r}const n=()=>i[t]?.modules?.gridFilter||i.GridManager;i.updateGrid=(t,e={})=>n()?.updateById(t,e)||!1,i.getGridFilters=t=>n()?.getFilters(t)||{},i.clearGridFilters=t=>n()?.clearFilters(t)||!1,i.registerGridHandler=(t,e)=>n()?.registerHandler(t,e),i.getGridStats=()=>n()?.getStats()||{}}(window.PROJECT_NAME||"FRAMEWORK");
39
40!function(e){"use strict";const t=document,s=window,i={config:{overlaysContainerId:"overlays",overlayClass:"overlay",triggerSelector:"[data-overlay]",closeClass:"overlay-close",backClass:"overlay-back",contentClass:"overlay-content",containerClass:"overlay-container",activeClass:"active",loadingClass:"is-loading",bodyOverlayedClass:"overlayed",temporaryClass:"temporary",pushingClass:"pushing",modifierClasses:{freeze:"freeze",instant:"instant",interactive:"interactive",left:"left",right:"right",pushed:"pushed",paused:"paused"},attributePrefix:"data-overlay",customEventName:"overlay:stateChanged",timing:{temporary:2e3,transition:500,fallbackTimeout:1e3,cleanupDelay:1e3,resizeDelay:100},dynamic:{enabled:!0,autoCleanup:!0},ajax:{url:null,timeout:1e4},types:{default:{action:"overlay_fetch",parameters:[],optionalParameters:["overlayID"]}},dynamicTemplates:{default:'\n\t\t\t\t\t<div class="overlay {classes}" id="{id}" data-overlay-ajax="true">\n\t\t\t\t\t\t<div class="overlay-container">\n\t\t\t\t\t\t\t<a href="#" class="overlay-close" title="{closeTitle}">×</a>\n\t\t\t\t\t\t\t<div class="overlay-content"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t'},labels:{close:"Close",closeTitle:"Close"},hooks:{beforeOpen:null,afterOpen:null,beforeClose:null,afterClose:null,beforeContentLoad:null,afterContentLoad:null}},selectors:{},activeSelector:"",state:{activeOverlays:new Set,resizeTimer:null},_handlers:{},initialized:!1,ready:!1,transitionDuration:500,configure(e){e&&"object"==typeof e&&this.mergeConfig(this.config,e)},init(e=t){return this.ready?Promise.resolve(!1):(this.loadConfig(),this.buildSelectors(),this.doInit(e))},doInit(e=t){this.activeSelector=`${this.selectors.overlay}.${this.config.activeClass}`,this.getTransitionDuration(),this.ensureOverlaysContainer();const s=e.querySelectorAll(this.selectors.trigger),i=e.querySelectorAll(this.selectors.overlay);return s.length||i.length?(this.setupGlobalHandlers(),this.initActiveOverlays(e),this.setupHandlers(e),this.initialized=!0,this.ready=!0,Promise.resolve(!0)):(this.ready=!0,Promise.resolve(!1))},loadConfig(){const t=s[e]?.config?.modules?.overlays;t&&(t.overlayClass&&(this.config.overlayClass=t.overlayClass),t.closeSelector&&(this.config.closeClass=t.closeSelector.replace(/^\./,"")),this.mergeConfig(this.config,t)),this.config.ajax.url||(this.config.ajax.url=s[e]?.config?.urls?.ajax||s.THEME_AJAX_CONFIG?.ajax_url||s.ajaxurl?.ajax_url||s.ajaxurl||"/wp-admin/admin-ajax.php")},mergeConfig(e,t){for(const s in t)null!=t[s]&&"closeSelector"!==s&&(t[s]instanceof Object&&!Array.isArray(t[s])&&"function"!=typeof t[s]?(e[s]&&"object"==typeof e[s]||(e[s]={}),this.mergeConfig(e[s],t[s])):e[s]=t[s])},buildSelectors(){this.selectors={overlay:"."+this.config.overlayClass,close:"."+this.config.closeClass,back:"."+this.config.backClass,content:"."+this.config.contentClass,container:"."+this.config.containerClass,trigger:this.config.triggerSelector}},getTransitionDuration(){try{let e=t.querySelector(this.selectors.overlay),i=!1;e||(i=!0,e=t.createElement("div"),e.className=this.config.overlayClass,e.style.cssText="visibility:hidden;position:absolute;pointer-events:none",t.body.appendChild(e));const r=s.getComputedStyle(e).transitionDuration;if(r){let e=0;const t=r.split(",");for(let s=0;s<t.length;s++){const i=parseFloat(t[s]);isNaN(i)||(e=Math.max(e,t[s].includes("ms")?i:1e3*i))}e>0&&(this.transitionDuration=e)}i&&e.parentNode&&t.body.removeChild(e)}catch(e){}},setupGlobalHandlers(){this._handlers.resize||(this._handlers.keyboard=e=>{if(("Escape"===e.key||"Esc"===e.key)&&t.body.classList.contains(this.config.bodyOverlayedClass)){e.preventDefault(),e.stopPropagation();const s=t.querySelectorAll(this.activeSelector);return s.length>0?this.closeOverlay(s[s.length-1]):t.body.classList.remove(this.config.bodyOverlayedClass),!1}},this._handlers.resize=()=>{this.state.resizeTimer&&clearTimeout(this.state.resizeTimer),this.state.resizeTimer=setTimeout(()=>{s.dispatchEvent(new CustomEvent(this.config.customEventName)),this.state.resizeTimer=null},this.config.timing.resizeDelay)}
40,this._handlers.closeButton=e=>{let s=e.target;for(;s&&s!==t;){if(s.matches&&s.matches(this.selectors.close)){e.preventDefault(),e.stopPropagation();const t=s.closest(this.selectors.overlay);return void(t&&this.closeOverlay(t))}s=s.parentNode}},t.addEventListener("keydown",this._handlers.keyboard,!0),s.addEventListener("resize",this._handlers.resize,{passive:!0}),t.addEventListener("click",this._handlers.closeButton))},ensureOverlaysContainer(){if(t.getElementById(this.config.overlaysContainerId))return;const e=t.querySelector("#wrapper")||t.body,s=t.createElement("div");s.id=this.config.overlaysContainerId,e.appendChild(s)},initActiveOverlays(e){const t=e.querySelectorAll(this.activeSelector);for(let e=0;e<t.length;e++){const s=t[e];this.updateOverlayState(s),this.state.activeOverlays.add(s),this.trapFocus(s)}},setupHandlers(e=t){const s=`${this.config.attributePrefix}-initialized`;e.querySelectorAll(`${this.selectors.trigger}:not([${s}])`).forEach(e=>{const t=t=>{t.preventDefault(),t.stopPropagation(),this.handleTriggerClick(e)};e.addEventListener("click",t),e._overlayClickHandler=t,e.setAttribute(s,"")});const i=`${this.config.attributePrefix}-clickoutside-initialized`;e.querySelectorAll(`${this.selectors.overlay}:not([${i}])`).forEach(e=>{if(e.classList.contains(this.config.modifierClasses.interactive))return void e.setAttribute(i,"");const t=e=>{e.target===e.currentTarget&&this.closeOverlay(e.currentTarget)};e.addEventListener("click",t,!1),e._overlayOutsideHandler=t,e.setAttribute(i,"")})},handleTriggerClick(e){const s=e.getAttribute(this.config.attributePrefix);if("dynamic"===s){if(this.config.dynamic.enabled){const t=this.createDynamicOverlay(e);t&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.openOverlay(t,e)})})}return}let i=null;i=s.startsWith("#")?t.getElementById(s.substring(1)):t.querySelector(s),i&&this.openOverlay(i,e)},createDynamicOverlay(e){const s=e.getAttribute("data-overlay-type")||"default",i=e.getAttribute("data-overlay-classes")||"",r=this.config.dynamicTemplates?.[s]||this.config.dynamicTemplates?.default;if(!r)return console.warn(`No template found for overlay type: ${s}`),null;const a=`overlay-${s}-${Date.now()}-${Math.random().toString(36).substr(2,5)}`,o={id:a,classes:i,closeTitle:this.config.labels.closeTitle||this.config.labels.close,closeLabel:this.config.labels.close};let n=r;for(const[e,t]of Object.entries(o))n=n.replace(new RegExp(`\\{${e}\\}`,"g"),t);const l=t.getElementById(this.config.overlaysContainerId);if(!l)return console.error("Overlays container not found"),null;l.insertAdjacentHTML("beforeend",n);const c=t.getElementById(a);if(!c)return console.error("Failed to create dynamic overlay"),null;Array.from(e.attributes).forEach(e=>{e.name.startsWith("data-")&&"data-overlay"!==e.name&&"data-overlay-type"!==e.name&&"data-overlay-classes"!==e.name&&c.setAttribute(e.name,e.value)}),this.config.dynamic.autoCleanup&&c.classList.add("dynamic-overlay");const d=`${this.config.attributePrefix}-clickoutside-initialized`;if(!c.hasAttribute(d)){if(!c.classList.contains(this.config.modifierClasses.interactive)){const e=e=>{e.target===e.currentTarget&&this.closeOverlay(e.currentTarget)};c.addEventListener("click",e,!1),c._overlayOutsideHandler=e}c.setAttribute(d,"")}return c},openOverlay(e,s){this.config.hooks.beforeOpen&&this.config.hooks.beforeOpen(e,s),t.body.classList.add(this.config.bodyOverlayedClass),this.updateOverlayState(e);const i=e.hasAttribute("data-overlay-ajax");i&&e.classList.add(this.config.loadingClass);const r=()=>{let t=!1,i=null;const r=()=>{if(t)return;t=!0,e.removeEventListener("transitionend",a),i&&clearTimeout(i);const r=e.querySelector(this.selectors.close);r&&r.focus(),this.trapFocus(e),e.classList.contains(this.config.temporaryClass)&&setTimeout(()=>this.closeOverlay(e),this.config.timing.temporary),this.config.hooks.afterOpen&&this.config.hooks.afterOpen(e,s
40)},a=t=>{t.target!==e||"opacity"!==t.propertyName&&"visibility"!==t.propertyName||r()};!e.classList.contains(this.config.modifierClasses.instant)&&this.transitionDuration>0?(e.addEventListener("transitionend",a),i=setTimeout(r,this.config.timing.fallbackTimeout)):requestAnimationFrame(r)};requestAnimationFrame(()=>{e.classList.add(this.config.activeClass),this.state.activeOverlays.add(e),r(),i&&this.loadOverlayContent(e,s)})},loadOverlayContent(e,t){const s=e.querySelector(".overlay-ajax"),i=e.querySelector(this.selectors.content);let r,a;if(s)r=s,a="replace";else{if(!i)return void console.error("No content container (.overlay-ajax or .overlay-content) found in overlay");r=i,a="inject"}e.dataset.injectionMode=a,this.config.hooks.beforeContentLoad&&this.config.hooks.beforeContentLoad(e,r,t),this.loadContentAjax(e,r,t).then(t=>this.processLoadedContent(e,r,t)).catch(t=>this.handleLoadError(e,r,t))},loadContentAjax(e,t,i){const r=i.getAttribute("data-overlay-type")||Array.from(e.classList).find(e=>this.config.types&&this.config.types[e])||"default";if(!this.config.types||!this.config.types[r])return Promise.reject(`Unknown overlay type: ${r}`);const a=this.config.types[r],o=this.config.ajax.url;if(!o)return Promise.reject("AJAX URL not configured");const n=new URLSearchParams;n.append("action",a.action),n.append("overlayID",e.id);for(const e of a.parameters){const t=`data-${e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}`;let s=i.getAttribute(t);if(!s)return Promise.reject(`Missing required parameter: ${e} (${t})`);s=this.parseParameterValue(s),Array.isArray(s)?n.append(e,JSON.stringify(s)):n.append(e,s)}if(a.optionalParameters)for(const e of a.optionalParameters){if("currentURL"===e)continue;const t=`data-${e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}`;let s=i.getAttribute(t);s&&(s=this.parseParameterValue(s),Array.isArray(s)?n.append(e,JSON.stringify(s)):n.append(e,s))}return n.append("currentURL",s.location.href),fetch(o,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded","Cache-Control":"no-cache"},body:n,signal:AbortSignal.timeout(this.config.ajax.timeout)}).then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}).then(e=>{if(200===e.code)return e.html;if(e.success)return e.data.html||e.data;throw new Error(e.message||e.data||"Server returned error")})},parseParameterValue(e){if("string"!=typeof e)return e;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch(t){return console.warn("Failed to parse JSON parameter:",e),e}if("true"===e)return!0;if("false"===e)return!1;if(/^\d+$/.test(e)&&e.length<15){const t=parseInt(e,10);if(!isNaN(t))return t}return e},executeScripts(e){e.querySelectorAll("script").forEach(e=>{const s=t.createElement("script");Array.from(e.attributes).forEach(e=>{"defer"!==e.name&&s.setAttribute(e.name,e.value)}),e.src?s.async=!0:s.textContent=e.textContent,e.replaceWith(s)})},processLoadedContent(t,i,r){const a=t.dataset.injectionMode||"inject";this.config.debug&&console.log("[Overlays] Processing content, mode:",a),"replace"===a?i.outerHTML=r:i.innerHTML=r,this.executeScripts("replace"===a?t:i),t.classList.remove(this.config.loadingClass),this.config.hooks.afterContentLoad&&this.config.hooks.afterContentLoad(t,i),this.config.debug&&console.log("[Overlays] Refreshing framework modules..."),s[e]?.refresh&&s[e].refresh(t.querySelector(".overlay-container")||t),this.config.debug&&console.log("[Overlays] Content processing complete")},handleLoadError(e,t,s){e.classList.remove(this.config.loadingClass);"replace"===(e.dataset.injectionMode||"inject")?t.outerHTML='<div class="overlay-content"><div class="overlay-error">Erreur de chargement</div></div>':t.innerHTML='<div class="overlay-error">Erreur de chargement</div>',console.error("Overlay content load error:",s)},closeOverlay(e){if(!e||!e.classList.contains(this.config.activeClass))return;this.config.hooks.beforeClose&&this.config.hooks.beforeClose(e),this.removeTrapFocus(e);e.classList.remove(this.config.activeClass),this.state.activeOverlays.delete(e),(()=>{let s=!1,i=null;const r=()=>{if(s)return;s=!0,e.removeEventListener("transitionend",a),i&&clearTimeout(i);const r=t.querySelectorAll(this.activeSelector);if(0===r.length)t.body.focus(),this.cleanupBodyClasses();else{const e=r[r.length-1];if(e){const t=e.querySelector(this.selectors.close);t&&t.focus(),this.trapFocus(e)}}this.config.dynamic.autoCleanup&&e.classList.contains("dynamic-overlay")&&setTimeout(()=>{e.parentNode&&e.parentNode.removeChild(e)},this.config.timing.cleanupDelay);const o=e.querySelector(this.selectors.back);if(o&&o.remove(),e.hasAttribute("data-overlay-ajax")){const t=e.dataset.injectionMode||"inject",s=e.querySelector(".overlay-ajax"),i=e.querySelector(this.selectors.content);"replace"===t&&s?s.innerHTML="":i&&(i.innerHTML=""),delete e.dataset.injectionMode}this.config.hooks.afterClose&&this.config.hooks.afterClose(e)},a=t=>{t.target!==e||"opacity"!==t.propertyName&&"visibility"!==t.propertyName||r()};!e.classList.contains(this.config.modifierClasses.instant)&&this.transitionDuration>0?(e.addEventListener("transitionend",a),i=setTimeout(r,this.config.timing.fallbackTimeout)):requestAnimationFrame(r)})()},updateOverlayState(e){t.body.classList.add(this.config.bodyOverlayedClass);const s=this.config.modifierClasses;for(const i in s)e.classList.contains(s[i])&&t.body.classList.add(s[i]);e.classList.contains(this.config.pushingClass)&&(t.body.classList.add(s.pushed),t.body.classList.add(e.classList.contains(s.left)?s.left:s.right))},cleanupBodyClasses(){const e=[this.config.bodyOverlayedClass];for(const t in this.config.modifierClasses)e.push(this.config.modifierClasses[t]);t.body.classList.remove(...e)},trapFocus(e){const s=e.querySelectorAll('a[href]:not([disabled]):not([tabindex="-1"]), button:not([disabled]):not([tabindex="-1"]), textarea:not([disabled]):not([tabindex="-1"]), input:not([disabled]):not([tabindex="-1"]), select:not([disabled]):not([tabindex="-1"]), [tabindex]:not
40([tabindex="-1"]), [contenteditable=true]'),i=Array.from(s);if(0===i.length)return;const r=i[0],a=i[i.length-1],o=e=>{"Tab"!==e.key&&9!==e.keyCode||(e.shiftKey?t.activeElement===r&&(a.focus(),e.preventDefault()):t.activeElement===a&&(r.focus(),e.preventDefault()))};if(e._trapFocusHandler&&e.removeEventListener("keydown",e._trapFocusHandler),e._trapFocusHandler=o,e.addEventListener("keydown",o),!i.includes(t.activeElement)){const t=e.querySelector(this.selectors.close);t&&i.includes(t)?t.focus():r.focus()}},removeTrapFocus(e){e._trapFocusHandler&&(e.removeEventListener("keydown",e._trapFocusHandler),delete e._trapFocusHandler)},openById(e){if(!e)return;let s=null;s=e.startsWith("#")?t.getElementById(e.substring(1)):"."===e.charAt(0)?t.querySelector(e):t.getElementById(e)||t.querySelector(`#${e}`),s&&s.matches(this.selectors.overlay)&&this.openOverlay(s)},closeAll(){const e=t.querySelectorAll(this.activeSelector);for(let t=0;t<e.length;t++)this.closeOverlay(e[t])},refresh(e=t){return this.ready?(this.setupHandlers(e),Promise.resolve(!0)):this.init(e)},cleanup(){this._handlers.keyboard&&(t.removeEventListener("keydown",this._handlers.keyboard,!0),delete this._handlers.keyboard),this._handlers.resize&&(s.removeEventListener("resize",this._handlers.resize),delete this._handlers.resize),this._handlers.closeButton&&(t.removeEventListener("click",this._handlers.closeButton),delete this._handlers.closeButton),this.state.resizeTimer&&(clearTimeout(this.state.resizeTimer),this.state.resizeTimer=null);const e=`${this.config.attributePrefix}-initialized`;t.querySelectorAll(`${this.selectors.trigger}[${e}]`).forEach(t=>{t._overlayClickHandler&&(t.removeEventListener("click",t._overlayClickHandler),delete t._overlayClickHandler),t.removeAttribute(e)});const i=`${this.config.attributePrefix}-clickoutside-initialized`;t.querySelectorAll(`${this.selectors.overlay}[${i}]`).forEach(e=>{e._overlayOutsideHandler&&(e.removeEventListener("click",e._overlayOutsideHandler),delete e._overlayOutsideHandler),e.removeAttribute(i),this.removeTrapFocus(e)}),this.state.activeOverlays.forEach(e=>this.closeOverlay(e)),this.state.activeOverlays.clear();t.querySelectorAll(".overlay.dynamic-overlay").forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),this.state={activeOverlays:new Set,resizeTimer:null},this._handlers={},this.initialized=!1,this.ready=!1},getStats(){return{version:"3.4.2",ready:this.ready,activeOverlays:this.state.activeOverlays.size,config:this.config,selectors:this.selectors}},getAvailableTypes(){return Object.keys(this.config.types||{})},hasType(e){return!(!this.config.types||!this.config.types[e])}},r=s[e]?.config?.modules?.overlays;if(r&&i.mergeConfig(i.config,r),s[e]?.registerModule)s[e].registerModule("overlays",i);else{const e=()=>i.init().then(()=>{}).catch(()=>{});"loading"===t.readyState?t.addEventListener("DOMContentLoaded",e):e(),s.Overlays=i}}(window.PROJECT_NAME||"FRAMEWORK");
41
42!function(t){"use strict";const e=document,s=window,i={config:{toggleClass:"collapsible-toggle",contentClass:"collapsible",activeClass:"active",openedClass:"opened",truncatedClass:"truncated",targetAttr:"data-collapsible-target",idAttr:"data-collapsible-id",initAttr:"data-collapsible-initialized",timing:{resizeDelay:100},truncated:{defaultMaxLines:3,defaultLineHeight:24,hiddenClass:"read-more-hidden",markerSelectors:".more-tag, .more-marker, [data-more]",breakpointClass:"truncate-after",buttonText:"Lire la suite"},hooks:{beforeToggle:null,afterToggle:null,beforeOpen:null,afterOpen:null,beforeClose:null,afterClose:null,onReady:null}},selectors:{},state:{toggleButtons:new Set,resizeTimer:null},_handlers:{},initialized:!1,ready:!1,buildSelectors(){const t=this.config;this.selectors={toggle:"."+t.toggleClass,content:"."+t.contentClass,truncated:"."+t.contentClass+"."+t.truncatedClass}},setupGlobalHandlers(){this._handlers.resize||(this._handlers.resize=()=>{clearTimeout(this.state.resizeTimer),this.state.resizeTimer=setTimeout(()=>{this.updateAllOpenCollapsibles(),this.updateAllTruncatedCollapsibles(),this.state.resizeTimer=null},this.config.timing.resizeDelay)},s.addEventListener("resize",this._handlers.resize,{passive:!0}))},setupToggles(t=e){const s=":not(["+this.config.initAttr+"])";
42t.querySelectorAll(this.selectors.toggle+s).forEach(t=>{const e=e=>{e.preventDefault(),this.toggle(t)};t.addEventListener("click",e),t._collapsibleClickHandler=e,t.setAttribute(this.config.initAttr,""),this.state.toggleButtons.add(t),this.updateButtonAria(t)})},initOpenCollapsibles(t=e){const s=this.selectors.content+"."+this.config.openedClass+":not(."+this.config.truncatedClass+")";t.querySelectorAll(s).forEach(t=>this.updateSize(t))},updateAllOpenCollapsibles(){const t=this.selectors.content+"."+this.config.openedClass;e.querySelectorAll(t).forEach(t=>this.updateSize(t))},updateButtonAria(t){const e=this.findTargets(t),s=e.some(t=>t.classList.contains(this.config.openedClass));t.setAttribute("aria-expanded",s?"true":"false"),e.length&&e[0].id&&t.setAttribute("aria-controls",e[0].id)},findTargets(t){const s=[];if(t.hasAttribute(this.config.targetAttr)){const i=t.getAttribute(this.config.targetAttr);if(i.startsWith("#")){const t=e.getElementById(i.substring(1));t?.classList.contains(this.config.contentClass)&&s.push(t)}else i.startsWith(".")?e.querySelectorAll(i).forEach(t=>{t.classList.contains(this.config.contentClass)&&s.push(t)}):e.querySelectorAll("["+this.config.idAttr+'="'+i+'"]').forEach(t=>{t.classList.contains(this.config.contentClass)&&s.push(t)})}if(!s.length){let e=t.nextElementSibling;for(;e;){if(e.classList.contains(this.config.contentClass)){s.push(e);break}e=e.nextElementSibling}}if(!s.length){let e=t.previousElementSibling;for(;e;){if(e.classList.contains(this.config.contentClass)){s.push(e);break}e=e.previousElementSibling}}return s},findButton(t){if(t.id){const s=e.querySelector(this.selectors.toggle+"["+this.config.targetAttr+'="#'+t.id+'"]');if(s)return s}const s=t.getAttribute(this.config.idAttr);
42if(s){const t=e.querySelector(this.selectors.toggle+"["+this.config.targetAttr+'="'+s+'"]');if(t)return t}for(const s of e.querySelectorAll(this.selectors.toggle)){let e=s.nextElementSibling;for(;e;){if(e===t)return s;e=e.nextElementSibling}}const i=t.nextElementSibling;return i?.classList.contains(this.config.toggleClass)?i:null},initTruncatedCollapsibles(t=e){t.querySelectorAll(this.selectors.truncated).forEach(t=>{this.setupTruncated(t);if(this.checkIfTruncationNeeded(t)){let e=this.findButton(t);e||(e=this.createAutoButton(t)),e&&!e.hasAttribute(this.config.initAttr)&&this.initializeButton(e)}else{const e=this.findButton(t);e&&(e.style.display="none",e.setAttribute("aria-hidden","true"))}})},updateAllTruncatedCollapsibles(){e.querySelectorAll(this.selectors.truncated).forEach(t=>{if(!t._hasMarker&&(t.offsetParent||0!==t.offsetHeight))if(t.classList.contains(this.config.openedClass))this.updateSize(t);else{this.setupTruncated(t);const e=this.findButton(t);if(e){const s=this.checkIfTruncationNeeded(t);e.style.display=s?"":"none",e.setAttribute("aria-hidden",s?"false":"true")}else if(this.checkIfTruncationNeeded(t)){const e=this.createAutoButton(t);this.initializeButton(e)}}})},setupTruncated(t){const e=this.config.truncated,i=t.querySelector(e.markerSelectors);if(i){let s=i.nextElementSibling;for(;s;)s.classList.add(e.hiddenClass),s=s.nextElementSibling;return i.remove(),t.style.maxHeight="none",requestAnimationFrame(()=>requestAnimationFrame(()=>{const e=t.scrollHeight;t._truncatedHeight=e,t.style.maxHeight=e+"px"})),void(t._hasMarker=!0)}const n=t.querySelector("."+e.breakpointClass);if(n){let s=n.nextElementSibling;for(;s;)s.classList.add(e.hiddenClass),s=s.nextElementSibling;return t._truncatedHeight=t.scrollHeight,void(t.style.maxHeight=t._truncatedHeight+"px")}if(t.hasAttribute("data-truncate-at")){const s=parseInt(t.getAttribute("data-truncate-at"));return Array.from(t.children).forEach((t,i)=>{t.classList.toggle(e.hiddenClass,i>s)}),t._truncatedHeight=t.scrollHeight,void(t.style.maxHeight=t._truncatedHeight+"px")}if(t.hasAttribute("data-show-elements")){const s=parseInt(t.getAttribute("data-show-elements"));return Array.from(t.children).forEach((t,i)=>{t.classList.toggle(e.hiddenClass,i>=s)}),t._truncatedHeight=t.scrollHeight,void(t.style.maxHeight=t._truncatedHeight+"px")}if(t.hasAttribute("data-max-height")){const e=t.getAttribute("data-max-height");return t._truncatedHeight=parseFloat(e),void(t.style.maxHeight=e)}const o=t.hasAttribute("data-max-lines")?parseInt(t.getAttribute("data-max-lines")):e.defaultMaxLines,l=t.children[0];if(l){const e=l.getBoundingClientRect().height,i=parseFloat(s.getComputedStyle(t).gap)||0;t._truncatedHeight=o*e+(o-1)*i}else{const i=parseFloat(s.getComputedStyle(t).lineHeight),n=isNaN(i)?e.defaultLineHeight:i;t._truncatedHeight=o*n}t.style.maxHeight=t._truncatedHeight+"px"},checkIfTruncationNeeded(t){const e=t.style.maxHeight,s=t.querySelectorAll("."+this.config.truncated.hiddenClass),i=[];s.forEach((t,e)=>{i[e]=t.style.display,t.style.display="block"}),t.style.maxHeight="none";const n=t.scrollHeight;return s.forEach((t,e)=>{i[e]?t.style.display=i[e]:t.removeAttribute("style")}),t.style.maxHeight=e,n>(t._truncatedHeight||0)+10},createAutoButton(t){const s=e.createElement("button");return s.className=this.config.toggleClass,s.textContent=t.getAttribute("data-collapsible-button")||this.config.truncated.buttonText,s.type="button",t.after(s),s},initializeButton(t){const e=e=>{e.preventDefault(),this.toggle(t)};t.addEventListener("click",e),t._collapsibleClickHandler=e,t.setAttribute(this.config.initAttr,""),this.state.toggleButtons.add(t),this.updateButtonAria(t)},toggle(t){this.config.hooks.beforeToggle&&this.config.hooks.beforeToggle(t),t.classList.toggle(this.config.activeClass);const e=this.findTargets(t);e.forEach(e=>{!e.classList.contains(this.config.openedClass)?(this.config.hooks.beforeOpen&&this.config.hooks.beforeOpen(e,t),this.openCollapsible(e,t)):(this.config.hooks.beforeClose&&this.config.hooks.beforeClose(e,t),this.closeCollapsible(e,t))}),this.updateButtonAria(t),this.config.hooks.afterToggle&&setTimeout(()=>this.config.hooks.afterToggle(t,e),50)},openCollapsible(t,e){const s=t.classList.contains(this.config.truncatedClass);requestAnimationFrame(()=>{s&&t.querySelectorAll("."+this.config.truncated.hiddenClass).forEac
42h(t=>{t.style.display="block"}),t.classList.add(this.config.openedClass);const i=t.scrollHeight;t.style.maxHeight=s&&t._truncatedHeight?t._truncatedHeight+"px":"0px",t.offsetHeight,t.style.maxHeight=i+"px",this.config.hooks.afterOpen&&this.onTransitionComplete(t,()=>this.config.hooks.afterOpen(t,e))})},closeCollapsible(t,e){const s=t.classList.contains(this.config.truncatedClass);requestAnimationFrame(()=>{t.style.maxHeight=t.scrollHeight+"px",t.offsetHeight,t.style.maxHeight=s&&t._truncatedHeight?t._truncatedHeight+"px":"0px",t.classList.remove(this.config.openedClass),this.config.hooks.afterClose&&this.onTransitionComplete(t,()=>this.config.hooks.afterClose(t,e))})},onTransitionComplete(t,e){if(!("0s"!==s.getComputedStyle(t).transitionDuration))return void e();const i=s=>{s.target===t&&(t.removeEventListener("transitionend",i),e())};t.addEventListener("transitionend",i)},updateSize(t){const e=t.classList.contains(this.config.openedClass),s=t.classList.contains(this.config.truncatedClass);e?(t.style.maxHeight="none",t.style.maxHeight=t.scrollHeight+"px"):s&&t._truncatedHeight?t.style.maxHeight=t._truncatedHeight+"px":t.style.maxHeight="0px"},mergeConfig(t,e){for(const s in e)null!=e[s]&&(e[s]instanceof Object&&!Array.isArray(e[s])?(t[s]&&"object"==typeof t[s]||(t[s]={}),this.mergeConfig(t[s],e[s])):t[s]=e[s])},log(...t){this.config.debug&&console.log("[Collapsible]",...t)},open(t){this.setState(t,!0)},close(t){this.setState(t,!1)},setState(t,s){let i=[];"string"==typeof t?i=t.startsWith("#")?e.getElementById(t.substring(1))?[e.getElementById(t.substring(1))]:[]:Array.from(e.querySelectorAll(t)):t instanceof Element&&(i=[t]),i.forEach(t=>{if(!t?.classList.contains(this.config.contentClass))return;const e=t.classList.contains(this.config.openedClass);if(s===e)return;const i=this.findButton(t);i?this.toggle(i):s?(this.config.hooks.beforeOpen&&this.config.hooks.beforeOpen(t,null),this.openCollapsible(t,null)):(this.config.hooks.beforeClose&&this.config.hooks.beforeClose(t,null),this.closeCollapsible(t,null))})},isOpen(t){const s="string"==typeof t?e.querySelector(t):t;return!!s&&s.classList.contains(this.config.openedClass)},refresh(t=e){return this.ready?(this.setupToggles(t),this.initOpenCollapsibles(t),this.initTruncatedCollapsibles(t),Promise.resolve(!0)):this.init(t)},cleanup(){this._handlers.resize&&s.removeEventListener("resize",this._handlers.resize),clearTimeout(this.state.resizeTimer),this.state.toggleButtons.forEach(t=>{t._collapsibleClickHandler&&(t.removeEventListener("click",t._collapsibleClickHandler),delete t._collapsibleClickHandler),t.removeAttribute(this.config.initAttr)}),this.state={toggleButtons:new Set,resizeTimer:null},this._handlers={},this.initialized=!1,this.ready=!1},init(i=e){if(this.ready)return Promise.resolve(!1);const n=s[t]?.config?.modules?.collapsible;n&&this.mergeConfig(this.config,n),this.buildSelectors();const o=":not(["+this.config.initAttr+"])",l=i.querySelectorAll(this.selectors.toggle+o),a=i.querySelectorAll(this.selectors.truncated);return l.length||a.length?(this.setupGlobalHandlers(),this.setupToggles(i),this.initOpenCollapsibles(i),this.initTruncatedCollapsibles(i),s.addEventListener("load",()=>this.updateAllTruncatedCollapsibles(),{once:!0}),this.config.hooks.onReady&&this.config.hooks.onReady(),this.log("Initialized v2.3.2"),this.ready=!0,Promise.resolve(!0)):(this.ready=!0,Promise.resolve(!1))}};if(s[t]?.registerModule)s[t].registerModule("collapsible",i);else{const t=()=>i.init().catch(()=>{});"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t):t(),s.collapsible=i}}(window.PROJECT_NAME||"FRAMEWORK");
43
44!function(t){"use strict";const e=document,s=window,i={config:{navigationTargetAttr:"data-navigation-target",expandedClass:"expanded",bodyExpandedClass:"expanded",scrollBehavior:"smooth",scrollOffset:0,hoverClass:"hover",goTopClass:"go-to-the-top",scrollToClass:"scroll-to",touchHoverDuration:300,focusableSelector:'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])',accessibility:{announceStateChanges:!0,autoFocus:!0,trapFocus:!0}},state:{isExpanded:!1,expandButton:null,targetNav:null,firstFocusableEl:null,lastFocusableEl:null,isMobile:!1},ready:!1,_handlers:{}
44,setupNavigationToggle(){this.state.expandButton.setAttribute("aria-expanded","false"),this.state.isMobile="none"!==s.getComputedStyle(this.state.expandButton).display,this.state.isMobile&&this.state.targetNav.setAttribute("inert",""),!this.state.targetNav.hasAttribute("aria-labelledby")&&this.state.expandButton.id&&this.state.targetNav.setAttribute("aria-labelledby",this.state.expandButton.id),this.cacheFocusableElements(),this._handlers.expandClick=t=>{t.preventDefault(),this.toggleNavigation()},this.state.expandButton.addEventListener("click",this._handlers.expandClick),this.setupKeyboardHandlers(),this.setupResizeHandler()},setupKeyboardHandlers(){this._handlers.globalKeydown=t=>{"Escape"===t.key&&this.state.isExpanded&&this.collapseNavigation()},e.addEventListener("keydown",this._handlers.globalKeydown),this.config.accessibility.trapFocus&&(this._handlers.focusTrap=t=>{this.state.isExpanded&&"Tab"===t.key&&(t.shiftKey?e.activeElement===this.state.firstFocusableEl&&(this.state.lastFocusableEl.focus(),t.preventDefault()):e.activeElement===this.state.lastFocusableEl&&(this.state.firstFocusableEl.focu
44s(),t.preventDefault()))},this.state.targetNav.addEventListener("keydown",this._handlers.focusTrap))},setupResizeHandler(){let t;this._handlers.resize=()=>{clearTimeout(t),t=setTimeout(()=>{const t=this.state.isMobile;this.state.isMobile="none"!==s.getComputedStyle(this.state.expandButton).display,t!==this.state.isMobile&&(this.state.isMobile?this.state.isExpanded||this.state.targetNav.setAttribute("inert",""):(this.state.targetNav.removeAttribute("inert"),this.state.isExpanded&&this.collapseNavigation()))},150)},s.addEventListener("resize",this._handlers.resize)},setupAnchorBehaviors(t){this._handlers.anchorClick=t=>{const e=t.target.closest("a");e&&this.handleAnchorClick(t,e)},this._handlers.anchorTouch=t=>{const e=t.target.closest("a");e&&(e.classList.add(this.config.hoverClass),setTimeout(()=>e.classList.remove(this.config.hoverClass),this.config.touchHoverDuration))},t.addEventListener("click",this._handlers.anchorClick),t.addEventListener("touchend",this._handlers.anchorTouch,{passive:!0})},handleAnchorClick(t,s){const i=s.getAttribute("href");if(s.classList.contains(this.config.goTopClass))return t.preventDefault(),void this.scrollToTop();if(s.classList.contains(this.config.scrollToClass))return t.preventDefault(),void this.handleScrollTo(s);if(i&&i.startsWith("#")&&"#"!==i&&!i.startsWith("#javascript")){const s=e.querySelector(i);s&&(t.preventDefault(),this.scrollToElement(s))}},cacheFocusableElements(){const t=Array.from(this.state.targetNav.querySelectorAll(this.config.focusableSelector));this.state.firstFocusableEl=t[0]||null,this.state.lastFocusableEl=t[t.length-1]||null},toggleNavigation(){this.state.isExpanded?this.collapseNavigation():this.expandNavigation()},expandNavigation(){this.state.isExpanded||(this.state.isExpanded=!0,e.body.classList.add(this.config.bodyExpandedClass),this.state.expandButton.classList.add(this.config.expandedClass),this.state.expandButton.setAttribute("aria-expanded","true"),this.state.targetNav.removeAttribute("inert"),this.config.accessibility.autoFocus&&this.state.expandButton.focus(),this.config.accessibility.announceStateChanges&&this.announce("Menu ouvert"))},collapseNavigation(){if(!this.state.isExpanded)return;this.state.isExpanded=!1,e.body.classList.remove(this.config.bodyExpandedClass),this.state.expandButton.classList.remove(this.config.expandedClass),this.state.expandButton.setAttribute("aria-expanded","false");"none"!==s.getComputedStyle(this.state.expandButton).display&&this.state.targetNav.setAttribute("inert",""),this.config.accessibility.autoFocus&&this.state.expandButton.focus(),this.config.accessibility.announceStateChanges&&this.announce("Menu fermé")},scrollToTop(){s.scrollTo({top:0,behavior:this.config.scrollBehavior})},handleScrollTo(t){const s=t.getAttribute("href");let i;if(s&&s.startsWith("#"))i=e.querySelector(s);else{const e=t.closest("section");e&&(i=this.getNextSibling(e,"section")||this.getNextSibling(e,"*"))}i&&this.scrollToElement(i)},scrollToElement(t){const e=Math.max(0,t.getBoundingClientRect().top+s.pageYOffset-this.config.scrollOffset);s.scrollTo({top:e,behavior:this.config.scrollBehavior})},getNextSibling(t,e){let s=t.nextElementSibling;for(;s;){if("*"===e||s.matches(e))return s;s=s.nextElementSibling}return null},announce(t){let s=e.getElementById("navigation-live-region");s||(s=e.createElement("div"),s.id="navigation-live-region",s.setAttribute("aria-live","polite"),s.setAttribute("aria-atomic","true"),s.style.cssText="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;",e.body.appendChild(s)),s.textContent=t,setTimeout(()=>{s.textContent=""},1e3)},expand(){this.expandNavigation()},collapse(){this.collapseNavigation()},toggle(){this.toggleNavigation()},isOpen(){return this.state.isExpanded},goToTop(){this.scrollToTop()},scrollTo(t){const s="string"==typeof t?e.querySelector(t):t;s&&this.scrollToElement(s)},cleanup(){this.state.expandButton&&this._handlers.expandClick&&this.state.expandButton.removeEventListener("click",this._handlers.expandClick),this._handlers.globalKeydown&&e.removeEventListener("keydown",this._handlers.globalKeydown),this.state.targetNav&&this._handlers.focusTrap&&this.state.targetNav.removeEventListener("keydown",this._handlers.focusTrap),this._handlers.resize&&s.removeEventListener("resize",this._handlers.resize),this._handlers.anchorClick&&(e.removeEventListener("click",this._handlers.anchorClick),e.removeEventListener("touchend",this._handlers.anchorTouch)),this.state.isExpanded&&this.collapseN
44avigation(),this.state.targetNav&&this.state.targetNav.removeAttribute("inert");const t=e.getElementById("navigation-live-region");t&&t.remove(),this.state={isExpanded:!1,expandButton:null,targetNav:null,firstFocusableEl:null,lastFocusableEl:null,isMobile:!1},this._handlers={},this.ready=!1},mergeConfig(t,e){for(const s in e)null!=e[s]&&(e[s]instanceof Object&&!Array.isArray(e[s])?(t[s]&&"object"==typeof t[s]||(t[s]={}),this.mergeConfig(t[s],e[s])):t[s]=e[s])},init(i=e){if(this.ready)return Promise.resolve(!1);const a=s[t]?.config?.modules?.navigations;if(a&&this.mergeConfig(this.config,a),this.state.expandButton=i.querySelector(`[${this.config.navigationTargetAttr}]`),this.state.expandButton){const t=this.state.expandButton.getAttribute(this.config.navigationTargetAttr);this.state.targetNav=i.querySelector(t),this.state.targetNav&&this.setupNavigationToggle()}return this.setupAnchorBehaviors(i),this.ready=!0,Promise.resolve(!0)}};if(s[t]?.registerModule)s[t].registerModule("navigations",i);else{const t=()=>i.init().catch(()=>{});"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t):t(),s.Navigation=i}}(window.PROJECT_NAME||"FRAMEWORK");
45
46!function(e){"use strict";const t=document,i=window;let s=!1,r=!1;const o={},n={core:"https://cdn.jsdelivr.net/npm/vlitejs/dist/vlite.js",providers:{youtube:"https://cdn.jsdelivr.net/npm/vlitejs/dist/providers/youtube.js",vimeo:"https://cdn.jsdelivr.net/npm/vlitejs/dist/providers/vimeo.js",dailymotion:"https://cdn.jsdelivr.net/npm/vlitejs/dist/providers/dailymotion.js"},plugins:{volumeBar:"https://cdn.jsdelivr.net/npm/vlitejs/dist/plugins/volume-bar.js"}},a={config:{libraries:{...n},containerClass:"mediaplayer",playerClass:"media",backgroundClass:"mediaplayer-background",vliteClasses:{container:"v-vlite",playing:"v-playing",paused:"v-paused",bigPlay:"v-bigPlay"},youtubeClass:"youtube",vimeoClass:"vimeo",dailymotionClass:"dailymotion",initAttr:"data-mp-init",pendingAttr:"data-mp-pending",deferredAttr:"data-mp-deferred",playedAttr:"data-has-played",timing:{playDelay:100,visibilityDelay:200,observerTimeout:5e3},lazyInit:!0,lazyIframe:!0,visibilityThreshold:.2,providerParams:{youtube:{iv_load_policy:3,rel:0,showinfo:0,related:0,origin:i.location.origin,widget_referrer:i.location.href},vimeo:{byline:0,portrait:0,title:0},dailymotion:{}},hooks:{beforePlay:null,afterPlay:null,beforePause:null,afterPause:null,onReady:null,onError:null},templates:{bigPlayButton:'<button type="button" title="{buttonText}" class="v-bigPlay" aria-label="{buttonText}" data-state="paused"><span class="icon-play animated"><i class="label"></i></span><span class="label" aria-hidden="true">{buttonText}</span></button>',liveRegion:'<div aria-live="polite" aria-atomic="false" class="sr-only mediaplayer-live-region"></div>'},accessibility:{announceStateChanges:!0,reducedMotion:!1}},selectors:{},instances:[],compiledTemplates:null,initialized:!1,ready:!1,observer:null,state:{globalInit:!1,interactionInit:!1},_handlers:{},init(e=t){return this.ready?Promise.resolve(!1):(this.loadConfig(),this.buildSelectors(),this.compiledTemplates=this.compileTemplates(),void 0===i.Vlitejs?this.loadVliteJS().then(()=>this.doInit(e)).catch(()=>!1):this.doInit(e))},loadVliteJS:async function(){try{const e=await this.loadScript(this.config.libraries.core,n.core,"Vlitejs");i.Vlitejs=e.default||e;const t=[];if(i.VlitejsYoutube||t.push(this.loadScript(this.config.libraries.providers.youtube,n.providers.youtube,"VlitejsYoutube").then(e=>{i.VlitejsYoutube=e.default||e})),i.VlitejsVimeo||t.push(this.loadScript(this.config.libraries.providers.vimeo,n.providers.vimeo,"VlitejsVimeo").then(e=>{i.VlitejsVimeo=e.default||e})),i.VlitejsDailymotion||t.push(this.loadScript(this.config.libraries.providers.dailymotion,n.providers.dailymotion,"VlitejsDailymotion").then(e=>{i.VlitejsDailymotion=e.default||e})),t.length&&await Promise.allSettled(t),!i.VlitejsVolumeBar){const e=await this.loadScript(this.config.libraries.plugins.volumeBar,n.plugins.volumeBar,"VlitejsVolumeBar").catch(()=>null);e&&(i.VlitejsVolumeBar=e.default||e)}return this.ensureProvidersRegistered(),!0}catch(e){throw e}},loadScript:async function(e,s,r){if(i[r])return i[r];if(o[r])return new Promise((e,t)=>
46{o[r].push({resolve:e,reject:t})});const n=Array.from(t.querySelectorAll(`script[src*="${r.toLowerCase()}"]`)).filter(e=>!e.src.includes("mediaplayer.js")&&!e.src.includes("mediaplayer.min.js"));o[r]=[];const a=(e,t)=>{const i=o[r]||[];delete o[r],i.forEach(i=>t?i.reject(t):i.resolve(e))};if(n.length>0)return new Promise((e,t)=>{const s=setInterval(()=>{i[r]&&(clearInterval(s),a(i[r],null),e(i[r]))},50);setTimeout(()=>{clearInterval(s);const t=i[r]||null;a(t,null),e(t)},1e4)});const l=[e,e!==s?s:null].filter(Boolean);let c=null;for(const e of l)try{const t=await import(e);return a(t,null),t}catch(t){c=t,e!==l[l.length-1]&&console.warn(`[MediaPlayer] ${r}: failed to load "${e}", trying fallback…`)}return a(null,c),null},doInit(e=t){this.initialized=!0,this.detectReducedMotion(),this.setupGlobalEventHandlers(),this.ensureProvidersRegistered();const s=e.querySelectorAll(this.selectors.container);return s.length?(this.config.lazyInit&&"IntersectionObserver"in i&&this.setupIntersectionObserver(),s.forEach(e=>{e.hasAttribute(this.config.initAttr)||e.hasAttribute(this.config.deferredAttr)||(this.config.lazyInit&&this.observer?(this.observer.observe(e),e.setAttribute(this.config.pendingAttr,"true")):this.initializeContainer(e))}),this.ready=!0,Promise.resolve(!0)):(this.ready=!0,Promise.resolve(!1))},detectReducedMotion(){if(!("matchMedia"in i))return;const e=i.matchMedia("(prefers-reduced-motion: reduce)"),t=e=>{this.config.accessibility.reducedMotion=e.matches};this.config.accessibility.reducedMotion=e.matches,e.addEventListener("change",t),this._handlers.reducedMotion={mediaQuery:e,handler:t}},compileTemplates(){return{bigPlayButton:(e="Voir la vidéo")=>this.config.templates.bigPlayButton.replace(/{buttonText}/g,e),liveRegion:()=>this.config.templates.liveRegion}},ensureProvidersRegistered(){if(r||!i.Vlitejs)return;const e=[["youtube",i.VlitejsYoutube],["vimeo",i.VlitejsVimeo],["dailymotion",i.VlitejsDailymotion]],t=[["volume-bar",i.VlitejsVolumeBar]];"function"==typeof i.Vlitejs.registerProvider&&e.forEach(([e,t])=>{t&&i.Vlitejs.registerProvider(e,t)}),"function"==typeof i.Vlitejs.registerPlugin&&t.forEach(([e,t])=>{t&&i.Vlitejs.registerPlugin(e,t)}),r=!0},getAttributes:(e,t)=>t.reduce((t,i)=>(t[i]=e.getAttribute("data-"+i),t),{}),buildSelectors(){this.selectors={container:"."+this.config.containerClass,player:"."+this.config.playerClass,background:"."+this.config.backgroundClass}},loadConfig(){const t=i[e]?.config?.modules?.mediaplayer;t&&(void 0!==t.libraries&&(void 0!==t.libraries.core&&(this.config.libraries.core=null!==t.libraries.core&&"string"==typeof t.libraries.core?t.libraries.core:n.core),t.libraries.providers&&["youtube","vimeo","dailymotion"].forEach(e=>{void 0!==t.libraries.providers[e]&&(this.config.libraries.providers[e]=null!==t.libraries.providers[e]&&"string"==typeof t.libraries.providers[e]?t.libraries.providers[e]:n.providers[e])}),void 0!==t.libraries.plugins?.volumeBar&&(this.config.libraries.plugins.volumeBar=null!==t.libraries.plugins.volumeBar&&"string"==typeof t.libraries.plugins.volumeBar?t.libraries.plugins.volumeBar:n.plugins.volumeBar)),t.containerSelector?this.config.containerClass=t.containerSelector.replace(/^\./,""):t.containerClass&&(this.config.containerClass=t.containerClass),t.playerSelector?this.config.playerClass=t.playerSelector.replace(/^\./,""):t.playerClass&&(this.config.playerClass=t.playerClass),this.mergeConfig(this.config,t))},mergeConfig(e,t){for(const i in t)null!=t[i]&&"containerSelector"!==i&&"playerSelector"!==i&&"libraries"!==i&&(t[i]instanceof Object&&!Array.isArray(t[i])?(e[i]&&"object"==typeof e[i]||(e[i]={}),this.mergeConfig(e[i],t[i])):e[i]=t[i])},setupUserInteractionTracking(){if(this.state.interactionInit)return;const e=()=>{s=!0},i=["click","touchstart","mousedown","keydown"];i.forEach(i=>t.addEventListener(i,e,{passive:!0,once:!0})),this._handlers.userInteraction={events:i,handler:e},this.state.interactionInit=!0},setupGlobalEventHandlers(){if(this.state.globalInit)return;this.setupUserInteractionTracking();const e=e=>{const t=e.target.closest("."+this.config.vliteClasses.bigPlay);if(!t)return;e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation();const i=t.closest(this.selectors.container);if(i)if(t.style.transform="scale(0.95)",t.style.transition="transform 0.1s ease",setTimeout(()=>{t.style.transform="",t.style.transition=""},100),i.hasAttribute(this.config.deferredAttr)){const e=i.querySelector("."+this.config.vliteClasses.bigPlay);e&&(e.style.transition="opacity .125s ease",e.style.opacity="0"),this.upgradeToRealPlayer(i)}
46else{i._hideTimers&&(i._hideTimers.forEach(e=>clearTimeout(e)),i._hideTimers=[]),i.removeAttribute("data-playing");const e=this.instances.find(e=>e.container===i);if(e&&e.player){const t=i.querySelector("."+this.config.vliteClasses.container),s=t&&t.classList.contains(this.config.vliteClasses.playing);s&&(i._userPausing=!0,setTimeout(()=>{i._userPausing=!1},200),setTimeout(()=>{i._hideTimers&&(i._hideTimers.forEach(e=>clearTimeout(e)),i._hideTimers=[]),i.removeAttribute("data-playing")},250)),this.updateButtonAccessibility(i,!s),this.togglePlayback(e.player,i)}}},i=t=>{"Enter"!==t.key&&" "!==t.key||e(t)};t.addEventListener("click",e,!0),t.addEventListener("keydown",i,!0),this._handlers.globalClick=e,this._handlers.globalKeydown=i,this.state.globalInit=!0},setupIntersectionObserver(){this.observer=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&(this.initializeContainer(e.target),this.observer.unobserve(e.target))})},{threshold:this.config.visibilityThreshold,rootMargin:"50px"})},initializeContainer(e){let i=e.querySelector(`${this.selectors.player}, video, audio`);if(!i){if(!(e.hasAttribute("data-youtube-id")||e.hasAttribute("data-vimeo-id")||e.hasAttribute("data-dailymotion-id")))return;i=t.createElement("div"),i.id=this.generateUniqueId(),i.className=this.config.playerClass,e.hasAttribute("data-youtube-id")?i.dataset.youtubeId=e.getAttribute("data-youtube-id"):e.hasAttribute("data-vimeo-id")?i.dataset.vimeoId=e.getAttribute("data-vimeo-id"):e.hasAttribute("data-dailymotion-id")&&(i.dataset.dailymotionId=e.getAttribute("data-dailymotion-id")),e.appendChild(i)}this.initSinglePlayer(e,i),e.removeAttribute(this.config.pendingAttr)},getMediaType(e){const t=e.getAttribute("data-type");return"audio"===t||"video"===t?t:"video"},initSinglePlayer(e,t){const s=t.id||this.generateUniqueId();t.id=s;const r=this.determineProvider(t,e);if("false"!==e.getAttribute("data-lazy-iframe")&&this.config.lazyIframe&&"html5"!==r)return this.initPlaceholderPlayer(e,t);const o=this.buildPlayerOptions(t,e);try{return new i.Vlitejs("#"+s,{options:o,provider:r,plugins:o.controls?["volume-bar"]:[],onReady:i=>{this.instances.push({container:e,element:t,player:i,provider:r,mediaType:this.getMediaType(e),initialized:!0}),this.setupPlayerUI(e,t,i,r),e.setAttribute(this.config.initAttr,"true"),this.config.hooks.onReady&&this.config.hooks.onReady(i,e)}})}catch(t){return this.config.hooks.onError&&this.config.hooks.onError(t,e),null}},initPlaceholderPlayer(e,t){const i=this.determineProvider(t,e),s={container:e,element:t,provider:i,options:this.buildPlayerOptions(t,e),mediaType:this.getMediaType(e),initialized:!1,player:null};return this.instances.push(s),this.createPlaceholderUI(e,t,i),e.setAttribute(this.config.deferredAttr,"true"),s},createPosterBackground(e,i,s){if(!i||e.querySelector(this.selectors.background))return;const r=t.createElement("img");r.className=this.config.backgroundClass,r.src=i,r.alt=e.getAttribute("data-poster-alt")||"Image de fond",r.width=1920,r.height=1080,e.insertBefore(r,s)},createLiveRegion(e){if(e.querySelector(".mediaplayer-live-region"))return;const i=t.createElement("div");i.innerHTML=this.compiledTemplates.liveRegion(),e.appendChild(i.firstChild)},announceToScreenReader(e,t){if(!this.config.accessibility.announceStateChanges)return;const i=e.querySelector(".mediaplayer-live-region");i&&(i.textContent=t,setTimeout(()=>{i.textContent=""},1e3))},updateButtonAccessibility(e,t){const i=e.querySelector(".v-bigPlay");if(!i)return;const s=`${t?"Mettre en pause":"Lire"} ${e.getAttribute("data-video-title")||"cette vidéo"}`;i.setAttribute("aria-label",s),i.setAttribute("title",s),i.setAttribute("aria-pressed",t?"true":"false"),i.setAttribute("data-state",t?"playing":"paused")},createPlaceholderUI(e,i,s){if("video"!==this.getMediaType(e))return;const r=e.getAttribute("data-poster");if(r&&this.createPosterBackground(e,r,i),!e.querySelector("."+this.config.vliteClasses.bigPlay)){const i=e.getAttribute("data-play-button-text")||"Voir la vidéo",s=t.createElement("div");s.innerHTML=this.compiledTemplates.bigPlayButton(i);const r=s.firstChild;r.classList.add("placeholder"),e.appendChild(r)}},upgradeToRealPlayer(e){const t=this.instances.find(t=>t.container===e);if(!t||t.initialized)return;this.ensureProvidersRegistered();const s=e.querySelector("."+this.config.vliteClasses.bigPlay);return s&&(s.style.transition="opacity .125s ease",s.style.opacity="0",setTimeout(()=>{s.parentNode&&s.remove()}
46,125)),new i.Vlitejs("#"+t.element.id,{options:t.options,provider:t.provider,plugins:t.options.controls?["volume-bar"]:[],onReady:i=>{t.player=i,t.initialized=!0,e.removeAttribute(this.config.deferredAttr),e.setAttribute(this.config.initAttr,"true"),this.setupPlayerUI(e,t.element,i,t.provider),setTimeout(()=>this.attemptPlay(i,e),100),this.config.hooks.onReady&&this.config.hooks.onReady(i,e)}})},buildPlayerOptions(e,t){const i=this.getAttributes(t,["controls","autoplay","loop","muted","passive","poster","type"]),s="false"!==i.controls,r="true"===i.autoplay,o="true"===i.loop,n="true"===i.muted,a="true"===i.passive,l="audio"===i.type||"video"===i.type?i.type:"video";return{controls:s,autoplay:r,playPause:s,progressBar:s,time:s,volume:s,fullscreen:s,poster:i.poster,bigPlay:!a&&"video"===l,playsinline:!0,loop:o,muted:n,autoHide:!0,providerParams:this.getProviderParams(e,t)}},getProviderParams(e,t){return this.config.providerParams[this.determineProvider(e,t)]||{}},determineProvider(e,t){const i=t?[t,e]:[e],s=[[e=>e.hasAttribute("data-youtube-id"),"youtube"],[e=>e.hasAttribute("data-vimeo-id"),"vimeo"],[e=>e.hasAttribute("data-dailymotion-id"),"dailymotion"],[e=>e.classList.contains(this.config.youtubeClass),"youtube"],[e=>e.classList.contains(this.config.vimeoClass),"vimeo"],[e=>e.classList.contains(this.config.dailymotionClass),"dailymotion"]];for(const e of i)for(const[t,i]of s)if(t(e))return i;return"html5"},setupPlayerUI(e,t,i,s){const r="html5"!==s;if("video"===this.getMediaType(e)){const i=e.getAttribute("data-poster");i&&this.createPosterBackground(e,i,t),this.createLiveRegion(e),this.replaceBigPlayButton(e,r),this.updateButtonAccessibility(e,!1)}if(!r){const t=e.querySelector("video, audio");t&&t.addEventListener("abort",e=>e.stopImmediatePropagation(),!0)}"true"===e.getAttribute("data-autoplay")&&setTimeout(()=>this.attemptPlay(i,e),this.config.timing.playDelay),"true"===e.getAttribute("data-autolaunch")&&this.setupVisibilityTracking(e,i),this.setupPlayerEvents(i,e,r)},replaceBigPlayButton(e,t){const i=e.querySelector("."+this.config.vliteClasses.bigPlay);if(i)this.doReplaceBigPlayButton(e,i,t);else{const i=new MutationObserver(s=>{for(const r of s)if("childList"===r.type&&r.addedNodes.length){const s=e.querySelector("."+this.config.vliteClasses.bigPlay);if(s){this.doReplaceBigPlayButton(e,s,t),i.disconnect();break}}});i.observe(e,{childList:!0,subtree:!0}),setTimeout(()=>i.disconnect(),this.config.timing.observerTimeout)}},doReplaceBigPlayButton(e,i,s){const r=e.getAttribute("data-play-button-text")||"Voir la vidéo",o=t.createElement("div");o.innerHTML=this.compiledTemplates.bigPlayButton(r);const n=o.firstChild;n.className=i.className,s&&n.classList.add("hidden"),i.parentNode.replaceChild(n,i)},setupVisibilityTracking(e,t){e._visObs&&e._visObs.disconnect();let s=null;const r=(e,t=this.config.timing.visibilityDelay)=>{s&&clearTimeout(s),s=setTimeout(e,t)};if(!("IntersectionObserver"in i))return;const o=new IntersectionObserver(i=>{i.forEach(i=>{const s=e.querySelector("."+this.config.vliteClasses.container),o=s&&s.classList.contains(this.config.vliteClasses.playing);r(()=>{i.isIntersecting&&!o?this.attemptPlay(t,e):!i.isIntersecting&&o&&this.attemptPause(t,e)})})},{threshold:this.config.visibilityThreshold});o.observe(e),e._visObs=o},setupPlayerEvents(e,t,i){if(!e||!e.on)return;const s=this.getMediaType(t);if(t._hideTimers=[],i){requestAnimationFrame(()=>{const e=t.querySelector(".v-bigPlay:not(.placeholder)");e&&!e.classList.contains("hidden")&&e.classList.add("hidden")})}e.on("pause",()=>{if(this.config.hooks.afterPause&&this.config.hooks.afterPause(e,t),i&&"video"===s&&t.hasAttribute(this.config.playedAttr)){const e=t.querySelector(".v-bigPlay:not(.placeholder)");e&&e.classList.remove("hidden")}"video"===s&&(this.updateButtonAccessibility(t,!1),this.announceToScreenReader(t,"Vidéo en pause"))}),e.on("play",()=>{if(t.setAttribute(this.config.playedAttr,"true"),i&&!t._userPausing){t._hideTimers&&(t._hideTimers.forEach(e=>clearTimeout(e)),t._hideTimers=[]);const e=t.querySelector(".v-bigPlay:not(.placeholder)");e&&(e.classList.remove("hidden"),t.setAttribute("data-playing","true"),t._hideTimers.push(setTimeout(()=>{e.classList.add("hidden"),t.removeAttribute("data-playing")},5e3)))}this.config.hooks.afterPlay&&this.config.hooks.afterPlay(e,t),"video"===s&&(this.updateButtonAccessibility(t,!0),this.announceToScreenReader(t,"Lecture de la vidéo"))}),e.on("ended",()=>{if(i){const e=t.querySelector(".v-bigPlay:not(.placeholder)");e&&e.classList.remove("hidden")}"video"===s&&(this.updateButtonAccessibility(t,!1),this.announceToScreenReader(t,"Vidéo terminée"))}),e.on("error",e=>{"video"===s&&(this.updateButtonAccessibility(t,!1),this.announceToScreenReader(t,"Erreur lors de la lecture de la vidéo")),this.config.hooks.onError&&this.config.hooks.onError(e,t)})},togglePlayback(e,t){if(!e)return;const i=t.querySelector("."+this.config.vliteClasses.container);i&&i.classList.contains(this.config.vliteClasses.playing)?this.attemptPause(e,t):this.attemptPlay(e,t)},attemptPlay(e,t){if(!e||!t)return;if(this.config.hooks.beforePlay&&this.config.hooks.beforePlay(e,t),"function"==typeof e.play){const t=e.play();return void(void 0!==t&&t.catch(()=>{}))}const i=t.querySelector("video, audio");i&&"function"==typeof i.play&&i.play().catch(()=>{})},attemptPause(e,t){if(!e||!t)return;if(this.config.hooks.beforePause&&this.config.hooks.beforePause(e,t),"function"==typeof e.pause)return void e.pause();const i=t.querySelector("video, audio");i&&"function"==typeof i.pause&&i.pause()},generateUniqueId:()=>"media-"+Math.random().toString(36).substring(2,9),play(e){this.setPlayState(e,!0)},pause(e){this.setPlayState(e,!1)},setPlayState(e,i){let s=[];if("string"==typeof e)if(e.startsWith("#")){const i=t.getElementById(e.substring(1));s=i?[i]:[]}else s=Array.from(t.querySelectorAll(e));else{if(!(e instanceof Element))return;s=[e]}
46s.forEach(e=>{const t=this.instances.find(t=>t.container===e||t.element===e);if(!t||!t.player)return;const s=t.container.querySelector("."+this.config.vliteClasses.container),r=s&&s.classList.contains(this.config.vliteClasses.playing);i&&r||!i&&!r||(i?this.attemptPlay(t.player,t.container):this.attemptPause(t.player,t.container))})},isPlaying(e){const i="string"==typeof e?t.querySelector(e):e;if(!i)return!1;const s=this.instances.find(e=>e.container===i||e.element===i);if(!s)return!1;const r=s.container.querySelector("."+this.config.vliteClasses.container);return r&&r.classList.contains(this.config.vliteClasses.playing)},refresh(e=t){if(this.ready){const t=`${this.selectors.container}:not([${this.config.initAttr}]):not([${this.config.pendingAttr}])`,i=`${this.selectors.container}[${this.config.deferredAttr}]`,s=e.querySelectorAll(t),r=e.querySelectorAll(i);return s.forEach(e=>{this.config.lazyInit&&this.observer?(this.observer.observe(e),e.setAttribute(this.config.pendingAttr,"true")):this.initializeContainer(e)}),r.forEach(e=>{this.instances.find(t=>t.container===e)||(e.removeAttribute(this.config.deferredAttr),this.initializeContainer(e))}),Promise.resolve(!0)}return this.init(e)},cleanup(){if(this.observer&&(this.observer.disconnect(),this.observer=null),this.instances.forEach(e=>{if(e.container&&e.container._visObs&&(e.container._visObs.disconnect(),delete e.container._visObs),e.player&&"function"==typeof e.player.destroy)try{e.player.destroy()}catch(e){}e.container&&(e.container.removeAttribute(this.config.initAttr),e.container.removeAttribute(this.config.pendingAttr),e.container.removeAttribute(this.config.deferredAttr),e.container.removeAttribute(this.config.playedAttr))}),this._handlers.globalClick&&(t.removeEventListener("click",this._handlers.globalClick,!0),delete this._handlers.globalClick),this._handlers.globalKeydown&&(t.removeEventListener("keydown",this._handlers.globalKeydown,!0),delete this._handlers.globalKeydown),this._handlers.reducedMotion){const{mediaQuery:e,handler:t}=this._handlers.reducedMotion;e.removeEventListener("change",t),delete this._handlers.reducedMotion}this.instances=[],this.initialized=!1,this.ready=!1,this.state={globalInit:!1,interactionInit:!1},this._handlers={},r=!1}};if(i.MediaPlayer=a,i[e]?.registerModule)i[e].registerModule("mediaplayer",a);else{const e=()=>a.init().then(()=>{}).catch(()=>{});"loading"===t.readyState?t.addEventListener("DOMContentLoaded",e):e()}}(window.PROJECT_NAME||"FRAMEWORK");
47
48!function(t){"use strict";const e=document,i=window,s=e.body,o={config:{containerID:"tooltipContainer",tooltipClass:"tooltip",triggerClass:"tooltip-toggle",closeClass:"tooltip-close",contentClass:"tooltip-content",activeClass:"active",loadingClass:"is-loading",bodyActiveClass:"tooltiped",clickableClass:"is-clickable",noMobileClass:"no-tooltip-mobile",forMobileClass:"for-mobile",forDesktopClass:"for-desktop",attributePrefix:"data-tooltip",customEventName:"tooltip:stateChanged",positioning:{offset:10,margin:20,followMouse:!0},mobileBreakpoint:1e3,timing:{transition:300,hideDelay:50,resizeDelay:100},hooks:{beforeShow:null,afterShow:null,beforeHide:null,afterHide:null}},selectors:{},state:{activeTooltip:null,isMobile:!1,resizeTimer:null,mouseMoveThrottled:!1},container:null,tooltip:null,transitionDuration:300,initialized:!1,ready:!1,_handlers:{},configure(t){t&&"object"==typeof t&&this.mergeConfig(this.config,t)},init(t=e){return this.ready?Promise.resolve(!1):(this.loadConfig(),this.buildSelectors(),this.doInit(t))},doInit(t=e){this.initialized=!0,this.detectMobile(),this.getTransitionDuration(),this.ensureContainer();return t.querySelectorAll(this.selectors.trigger+":not(["+this.config.attributePrefix+"-init])").length?(this.setupGlobalHandlers(),this.setupTriggers(t),this.ready=!0,Promise.resolve(!0)):(this.ready=!0,Promise.resolve(!1))},loadConfig(){const e=i[t]?.config?.modules?.tooltips;e&&this.mergeConfig(this.config,e)},mergeConfig(t,e){for(const i in e)null!=e[i]&&(e[i]instanceof Object&&!Array.isArray(e[i])?(t[i]&&"object"==typeof t[i]||(t[i]={}),this.mergeConfig(t[i],e[i])):t[i]=e[i])},buildSelectors(){const t=this.config;this.selectors={trigger:"."+t.triggerClass,tooltip:"."+t.tooltipClass,close:"."+t.closeClass}},detectMobile(){this.state.isMobile=i.innerWidth<=this.config.mobileBreakpoint||/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),s.classList.toggle("mobile",this.state.isMobile),s.classList.toggle("desktop",!this.state.isMobile)},getTransitionDuration(){try{let t=e.querySelector(this.selectors.tooltip),o=!1;t||(o=!0,t=e.createElement("div"),t.className=this.config.tooltipClass,t.style.cssText="visibility:hidden;position:absolute;pointer-events:none",s.appendChild(t));const n=i.getComputedStyle(t).transitionDuration;if(n){const t=parseFloat(n);isNaN(t)||(this.transitionDuration=n.includes("ms")?t:1e3*t)}o&&t.parentNode&&s.removeChild(t)}catch(t){console.warn("Could not read transition duration:",t)}},ensureContainer(){if(e.getElementById(this.config.containerID))return this.container=e.getElementById(this.config.containerID),void(this.tooltip=this.container.querySelector(this.selectors.tooltip));const t=e.querySelector("#overlays");t?(this.container=e.createElement("div"),this.container.id=this.config.containerID,t.appendChild(this.container),this.tooltip=e.createElement("div"),this.tooltip.className=this.config.tooltipClass,this.container.appendChild(this.tooltip)):console.warn("Cannot initialize tooltips: #overlays not found")},setupGlobalHandlers(){this._handlers.resize||(this._handlers.resize=()=>{this.detectMobile(),this.state.resizeTimer&&clearTimeout(this.state.resizeTimer),this.state.resizeTimer=setTimeout(()=>{this.state.activeTooltip&&this.hide(),i.dispatchEvent(new CustomEvent(this.config.customEventName)),this.state.resizeTimer=null},this.config.timing.resizeDelay)},this._handlers.documentClick=t=>{if(!s.classList.contains(this.config.bodyActiveClass))return;const e=this.container&&this.container.contains(t.target),i=t.target.closest(this.selectors.trigger);e||i||this.hide()},this._handlers.closeClick=t=>{let i=t.target;for(;i&&i!==e;){if(i.matches&&i.matches(this.selectors.close))return t.preventDefault(),t.stopPropagation(),void this.hide();i=i.parentNode}},this._handlers.keydown=t=>{if(("Escape"===t.key||"Esc"===t.key)&&s.classList.contains(this.config.bodyActiveClass))return t.preventDefault(),t.stopPropagation(),this.hide(),!1},i.addEventListener("resize",this._handlers.resize,{passive:!0}),e.addEventListener("click",this._handlers.documentClick),e.addEventListener("click",this._handlers.closeClick),e.addEventListener("keydown",this._handlers.keydown,!0))},setupTriggers(t=e){const i=this.config.attributePrefix+"-init";t.querySelectorAll(this.selectors.trigger+":not(["+i+"])").forEach(t=>{if(this.state.isMobile||t.classList.contains(this.config.clickableClass)){const e=e=>this.handleClick(e,t);t.addEventListener("click",e),t._tooltipClickHandler=e}else{const e=e=>this.handleMouseEnter(e,t),i=e=>this.handleMouseMove(e,t),s=e=>this.handleMouseLeave(e,t);t.addEventListener("mouseenter",e),t._tooltipEnterHandler=e,this.config.positioning.followMouse&&(t.addEventListener("mousemove",i),t._tooltipMoveHandler=i),t.addEventListener("mouseleave",s),t._tooltipLeaveHandler=s}t.setAttribute(i,"")})},handleMouseEnter(t,e){this.state.isMobile||e.classList.contains(this.config.clickableClass)||(this.state.activeTooltip&&this.state.activeTooltip!==e&&this.hide(),this.show(e,t))},handleMouseMove(t,e){this.state.isMobile||e.classList.contains(this.config.clickableClass)||(this.state.activeTooltip===e?this.state.mouseMoveThrottled||(this.state.mouseMoveThrottled=!0,requestAnimationFrame(()=>{this.state.activeTooltip===e&&this.updatePosition(t),this.state.mouseMoveThrottled=!1})):this.state.activeTooltip!==e&&this.show(e,t))},handleMouseLeave(t,e){this.state.isMobile||e.classList.contains(this.config.clickableClass)||this.state.activeTooltip===e&&setTimeout(()=>{this.state.activeTooltip===e&&this.hide()},this.config.timing.hideDelay)},handleClick(t,e){if(this.state.isMobile||e.classList.contains(this.config.clickableClass)){if(e.classList.contains(this.config.noMobileClass))return;e.querySelector("."+this.config.forMobileClass)&&this.state.isMobile&&(t.preventDefault(),t.stopPropagation()),this.state.activeTooltip===e?this.hide():(t.preventDefault(),t.stopPropagation(),this.show(e,t))}},show(t,e){if("function"==typeof this.config.hooks.beforeShow&&this.config.hooks.beforeShow(t,e),!this.tooltip)return;const i=t.querySelector(this.selectors.tooltip);i&&i.innerHTML.trim()?(this.state.activeTooltip=t,this.tooltip.classList.remove(this.config.activeClass),this.tooltip.innerHTML=i.innerHTML,this.tooltip.style.cssText="top:0;left:0",(this.state.isMobile||t.classList.contains(this.config.clickableClass))&&s.classList.add(this.config.bodyActiveClass),requestAnimationFrame(()=>{this.tooltip.classList.add(this.config.activeClass),requestAnimationFrame(()=>{this.updatePosition(e),setTimeout(()=>{"function"==typeof this.config.hooks.afterShow&&this.config.hooks.afterShow(t,this.tooltip,e)},this.transitionDuration)})})):console.warn("No tooltip content found")}
48,hide(){if(!this.state.activeTooltip)return;if("function"==typeof this.config.hooks.beforeHide&&this.config.hooks.beforeHide(this.state.activeTooltip,this.tooltip),!this.tooltip||!this.tooltip.classList.contains(this.config.activeClass))return this.state.activeTooltip=null,void s.classList.remove(this.config.bodyActiveClass);const t=this.state.activeTooltip;this.tooltip.classList.remove(this.config.activeClass),s.classList.remove(this.config.bodyActiveClass),this.state.activeTooltip=null,setTimeout(()=>{this.state.activeTooltip||(this.tooltip.innerHTML="",this.tooltip.style.cssText="top:0;left:0"),"function"==typeof this.config.hooks.afterHide&&this.config.hooks.afterHide(t,this.tooltip)},this.transitionDuration)},updatePosition(t){if(!this.tooltip||!this.tooltip.classList.contains(this.config.activeClass))return;const s=e.documentElement.scrollTop,o=i.innerWidth||e.documentElement.clientWidth,n=i.innerHeight||e.documentElement.clientHeight;let l=t.pageX||t.clientX||0,a=t.pageY||t.clientY||0;if(this.state.isMobile&&this.state.activeTooltip){const t=this.state.activeTooltip.getBoundingClientRect();l=t.left+t.width/2,a=t.top+i.pageYOffset}this.tooltip.style.visibility="hidden",this.tooltip.style.display="block";const r=this.tooltip.getBoundingClientRect(),c=r.width,h=r.height;this.tooltip.style.cssText="";let d=l-c/2,p=a-s-h-this.config.positioning.offset;const g=this.config.positioning.margin;d<g?d=g:d+c>o-g&&(d=o-c-g),p<g&&(p=a-s+this.config.positioning.offset),p+h>n-g&&(p=n-h-g),this.tooltip.style.cssText=`left:${Math.max(0,d)}px;top:${Math.max(0,p)}px`},hideAll(){this.hide()},showById(t,s){const o=e.querySelector(t);if(o&&o.matches(this.selectors.trigger)){if(!s){const t=o.getBoundingClientRect();s={pageX:t.left+t.width/2,pageY:t.top+i.pageYOffset,clientX:t.left+t.width/2,clientY:t.top}}this.show(o,s)}},refresh(t=e){return this.detectMobile(),this.setupTriggers(t),Promise.resolve(!0)},cleanup(){const t=this.config.attributePrefix+"-init";e.querySelectorAll(this.selectors.trigger+"["+t+"]").forEach(e=>{e._tooltipClickHandler&&(e.removeEventListener("click",e._tooltipClickHandler),delete e._tooltipClickHandler),e._tooltipEnterHandler&&(e.removeEventListener("mouseenter",e._tooltipEnterHandler),delete e._tooltipEnterHandler),e._tooltipMoveHandler&&(e.removeEventListener("mousemove",e._tooltipMoveHandler),delete e._tooltipMoveHandler),e._tooltipLeaveHandler&&(e.removeEventListener("mouseleave",e._tooltipLeaveHandler),delete e._tooltipLeaveHandler),e.removeAttribute(t)}),this._handlers.resize&&(i.removeEventListener("resize",this._handlers.resize),delete this._handlers.resize),this._handlers.documentClick&&(e.removeEventListener("click",this._handlers.documentClick),delete this._handlers.documentClick),this._handlers.closeClick&&(e.removeEventListener("click",this._handlers.closeClick),delete this._handlers.closeClick),this._handlers.keydown&&(e.removeEventListener("keydown",this._handlers.keydown,!0),delete this._handlers.keydown),this.state.resizeTimer&&(clearTimeout(this.state.resizeTimer),this.state.resizeTimer=null),this.hide(),this.state={activeTooltip:null,isMobile:!1,resizeTimer:null,mouseMoveThrottled:!1},this._handlers={},this.initialized=!1,this.ready=!1}},n=i[t]?.config?.modules?.tooltips;if(n&&o.mergeConfig(o.config,n),i[t]?.registerModule)i[t].registerModule("tooltips",o);else{const t=()=>o.init().then(()=>{}).catch(()=>{});"loading"===e.readyState?e.addEventListener("DOMContentLoaded",t):t(),i.TooltipModule=o}}(window.PROJECT_NAME||"FRAMEWORK");
49(function(){'use strict';window.PROJECT_NAME='TDB';const CONFIG_NAME=window.PROJECT_NAME+'_CONFIG';window[CONFIG_NAME]={core:{debug:false,version:'1.0.0',dataAttribute:'data-'+window.PROJECT_NAME.toLowerCase(),transitionDuration:250},modules:{mediaplayer:{libraries:{core:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite.js',providers:{youtube:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite-youtube.js',vimeo:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite-vimeo.js',dailymotion:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite-dailymotion.js'},plugins:{volumeBar:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/vlite-volume-bar.js'}}},forms:{library:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/choices.min.js',choices:{searchEnabled:false,allowHTML:true,shouldSort:false,itemSelectText:'',loadingText:'Chargement...',noResultsText:'Aucun résultat trouvé',noChoicesText:'Aucun choix disponible'},timing:{resize:100,observerDelay:100,selectDelay:200},observeDynamic:true,additionalRefreshSelectors:['[data-grid-active-filters]'],debug:false},overlays:{dynamic:{enabled:true,autoCleanup:true},dynamicTemplates:{newsletter:`
50						<div class="overlay modal short" id="{id}" data-overlay-ajax="true">
51							<div class="overlay-container">
52								<a href="#" rel="nofollow noopener" title="Fermer" class="overlay-close"><span class="icon-close"></span><span class="label">Fermer</span></a>
53								<div class="overlay-content"></div>
54							</div>
55						</div>
56					`,viewer:`
57						<div class="overlay viewer" id="{id}" data-overlay-ajax="true">
58							<div class="overlay-container">
59								<a href="#" rel="nofollow noopener" title="Fermer" class="overlay-close">
60									<span class="icon-close"></span>
61									<span class="label">Fermer</span>
62								</a>
63								<div class="overlay-content"></div>
64							</div>
65						</div>
66					`,},types:{newsletter:{action:'newsletter_fetch',parameters:[],optionalParameters:[]},viewer:{action:'viewer_fetch',parameters:['imageIds'],optionalParameters:['viewerIndex']},},ajax:{url:window.THEME_AJAX_CONFIG?.ajax_url||'/wp-admin/admin-ajax.php',timeout:10000},debug:false},swiper:{library:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/swiper-bundle.min.js',timing:{transition:500,},debug:false},gridFilter:{ajax:{url:window.THEME_AJAX_CONFIG?.ajax_url||'/wp-admin/admin-ajax.php',timeout:10000},storage:{prefix:window.THEME_AJAX_CONFIG?.cookie_prefix||'tdb_',default_mode:'browser',},types:{events:{action:'grid_items_fetch',persistence:{mode:'browser'}},},debug:true},scrollTimeline:{gsap:{localPath:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/gsap.min.js',scrollTriggerPath:window.THEME_AJAX_CONFIG?.theme_url+'/assets/libs/js/gsap.scrolltrigger.min.js'},animations:[{selector:'.scrolltime-revealed',timeline:'view',range:'cover -25% cover 25%',keyframes:{from:{opacity:0.25,translateY:'25%'},to:{opacity:1,translateY:'0'}},easing:'ease-in-out'},{selector:'.scrolltime-parallax img',timeline:'scroll',range:'0vh 100vh',keyframes:{from:{translateY:'0%'},to:{translateY:'50%'}},easing:'linear'}],debug:false},scrollTo:{debug:false,defaultOffset:20,topThreshold:150},goBack:{debug:false},helpers:{debounceDelay:300,throttleDelay:300}},urls:{ajax:window.THEME_AJAX_CONFIG?.ajax_url||'/wp-admin/admin-ajax.php',rest:window.THEME_AJAX_CONFIG?.rest_url||'/wp-json/wp/v2/',uploads:window.THEME_AJAX_CONFIG?.uploads_url||'/wp-content/uploads/',theme:window.THEME_AJAX_CONFIG?.theme_url||''},breakpoints:{mobile:480,tablet:768,desktop:1024,widescreen:1280,ultrawide:1600}};if(window.PROJECT_NAME){if(!window[window.PROJECT_NAME]){window[window.PROJECT_NAME]={};}
67window[window.PROJECT_NAME].config=window[CONFIG_NAME];}})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.