{"version":3,"file":"main.min.js","sources":["main.min.js"],"sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(factory) :\n factory();\n}((function () { 'use strict';\n\n var Menu = function Menu() {\n this.burgerMenu = document.getElementById('burgerMenu');\n this.megamenu = document.getElementById('megamenu');\n this.logoHeader = document.getElementById('logoHeader');\n this.shortMenu = document.getElementById('short-menu');\n this.header = document.getElementById('header');\n\n // Initialisation de l'état du menu\n this.isOpen = false;\n\n // Bind des méthodes pour garantir le bon contexte\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n\n // Initialisation des événements\n this.initializeEvents();\n };\n\n Menu.prototype.initializeEvents = function initializeEvents () {\n // Gestion du clic sur le menu burger\n this.burgerMenu.addEventListener('click', this.toggleMenu);\n\n // Gestion de l'interaction clavier (Entrée ou Espace)\n this.burgerMenu.addEventListener('keydown', this.handleKeydown);\n };\n\n // Méthode pour basculer l'état du menu (ouvert/fermé)\n Menu.prototype.toggleMenu = function toggleMenu () {\n // Basculer l'état ouvert/fermé\n this.isOpen = !this.isOpen;\n\n // Toggle des classes pour les animations/transformations\n this.burgerMenu.classList.toggle('active', this.isOpen);\n this.logoHeader.classList.toggle('is-hidden', this.isOpen);\n this.shortMenu.classList.toggle('is-hidden', this.isOpen);\n this.header.classList.toggle('is-fixed', this.isOpen);\n this.megamenu.classList.toggle('open', this.isOpen);\n\n // Mise à jour des attributs aria\n this.megamenu.setAttribute('aria-hidden', !this.isOpen);\n this.burgerMenu.setAttribute('aria-expanded', this.isOpen);\n };\n\n // Gestion des interactions clavier\n Menu.prototype.handleKeydown = function handleKeydown (event) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault(); // Empêcher les comportements par défaut comme le défilement avec Espace\n this.toggleMenu();\n }\n };\n\n var Theme = function Theme() {\n this.currentFontSizePercent = 62.5;\n this.minFontSizePercent = 32.5;\n this.maxFontSizePercent = 92.5;\n\n this.initializeEvents();\n this.initializeTheme();\n\n this.article = document.querySelector('.article');\n this.author = document.querySelector('.article-container__author');\n this.baseColumnSize = 25;\n };\n\n Theme.prototype.initializeEvents = function initializeEvents () {\n var this$1 = this;\n\n var themeButton = document.querySelector('.theme__color-btn');\n themeButton.addEventListener(\"click\", function (event) {\n event.preventDefault();\n this$1.changeThemeColors();\n });\n\n var themeFontDecrease = document.querySelector('.theme__font-btn-decrease');\n themeFontDecrease.addEventListener(\"click\", function (event) {\n event.preventDefault();\n this$1.decreaseFontSize();\n });\n\n var themeFontIncrease = document.querySelector('.theme__font-btn-increase');\n themeFontIncrease.addEventListener(\"click\", function (event) {\n event.preventDefault();\n this$1.increaseFontSize();\n });\n };\n\n Theme.prototype.initializeTheme = function initializeTheme () {\n var savedMode = localStorage.getItem('themeMode') || 'dark';\n this.applyTheme(savedMode);\n };\n\n Theme.prototype.applyTheme = function applyTheme (mode) {\n var body = document.body;\n body.classList.toggle('light-mode', mode === 'light');\n\n // = Effects\n // -----------------------------\n document.querySelectorAll('.glitch img').forEach(function (element) {\n element.classList.toggle('img-light-mode', mode === 'light');\n });\n };\n\n Theme.prototype.changeThemeColors = function changeThemeColors () {\n var currentMode = localStorage.getItem('themeMode') || 'dark';\n var newMode = currentMode === 'dark' ? 'light' : 'dark';\n localStorage.setItem('themeMode', newMode);\n this.applyTheme(newMode);\n };\n\n Theme.prototype.increaseFontSize = function increaseFontSize () {\n if (this.currentFontSizePercent + 10 <= this.maxFontSizePercent) {\n this.currentFontSizePercent += 10;\n this.applyFontSize();\n this.adjustGridColumns();\n }\n };\n\n Theme.prototype.decreaseFontSize = function decreaseFontSize () {\n if (this.currentFontSizePercent - 10 >= this.minFontSizePercent) {\n this.currentFontSizePercent -= 10;\n this.applyFontSize();\n this.adjustGridColumns();\n }\n };\n\n Theme.prototype.applyFontSize = function applyFontSize () {\n document.body.style.fontSize = (this.currentFontSizePercent) + \"%\";\n document.documentElement.style.fontSize = (this.currentFontSizePercent) + \"%\";\n };\n\n var Ecoindex = function Ecoindex() {\n this.SCROLL_THRESHOLD_START = 1000;\n this.SCROLL_THRESHOLD_END = 1200;\n this.initializeEvents();\n };\n\n Ecoindex.prototype.initializeEvents = function initializeEvents () {\n var this$1 = this;\n\n window.addEventListener('scroll', function () {\n var ecoindexBadge = document.getElementById('ecoindex-badge');\n var opacity = 1;\n var scrollPosition = window.pageYOffset || document.documentElement.scrollTop;\n\n if (scrollPosition >= this$1.SCROLL_THRESHOLD_START && scrollPosition <= this$1.SCROLL_THRESHOLD_END) {\n opacity = 1 - ((scrollPosition - this$1.SCROLL_THRESHOLD_START) / (this$1.SCROLL_THRESHOLD_END - this$1.SCROLL_THRESHOLD_START));\n } else if (scrollPosition > this$1.SCROLL_THRESHOLD_END) {\n opacity = 0;\n }\n\n if (ecoindexBadge) {\n ecoindexBadge.style.opacity = opacity;\n ecoindexBadge.style.pointerEvents = opacity === 0 ? 'none' : 'auto';\n }\n });\n };\n\n var Social = function Social() {\n this.initializeEvents();\n };\n\n Social.prototype.initializeEvents = function initializeEvents () {\n var copyUrlButton = document.querySelector('.social-logo .link');\n var tooltip = document.querySelector(\".tooltiptext\");\n if (copyUrlButton) {\n copyUrlButton.addEventListener(\"click\", function (event) {\n event.preventDefault();\n var urlStr = window.location.href.toString();\n navigator.clipboard.writeText(urlStr);\n tooltip.innerHTML = \"URL copied\";\n });\n copyUrlButton.addEventListener(\"mouseout\", function (event) {\n event.preventDefault();\n tooltip.innerHTML = \"Copy URL link\";\n });\n }\n };\n\n var Formation = function Formation() {\n this.scrollY = 0;\n this.initializeEvents();\n };\n\n Formation.prototype.initializeEvents = function initializeEvents () {\n var self = this;\n var actionBanner = document.querySelector('.detailed-template-action');\n var footerContainer = document.querySelector('footer .container--full');\n window.onscroll = function () {\n self.scrollY = window.scrollY;\n var cssClass = 'is-displayed';\n var scrollLength = 700;\n if (self.scrollY >= scrollLength && actionBanner && !actionBanner.classList.contains(cssClass)) {\n actionBanner.classList.add(cssClass);\n footerContainer.style.marginBottom = \"7rem\";\n } else if (self.scrollY < scrollLength && actionBanner && actionBanner.classList.contains(cssClass)) {\n actionBanner.classList.remove(cssClass);\n footerContainer.style.marginBottom = \"0\";\n }\n };\n\n // Subscribe formation buttons\n document.querySelectorAll('button.register-formation').forEach(function (element) {\n element.addEventListener(\"click\", function (event) {\n event.preventDefault();\n window.open(\"/contact?form=form4&formation=\" + element.getAttribute('data-formation'), '_self');\n });\n });\n };\n\n var Contact = function Contact() {\n this.initializeEvents();\n };\n\n Contact.prototype.initializeEvents = function initializeEvents () {\n var this$1 = this;\n\n var meetingBtns = document.querySelectorAll('.meeting');\n meetingBtns.forEach(function (btn) {\n btn.addEventListener('click', this$1.toggleMeeting);\n });\n\n document.querySelectorAll('textarea').forEach(function (textarea) {\n var label = textarea.nextElementSibling;\n\n if (textarea.value.trim() !== '') {\n label.classList.add('active');\n }\n\n textarea.addEventListener('input', function () {\n if (textarea.value.trim() !== '') {\n label.classList.add('active');\n } else {\n label.classList.remove('active');\n }\n });\n });\n\n };\n\n Contact.prototype.toggleMeeting = function toggleMeeting () {\n var meetingBlock = document.querySelector('.meeting-block');\n meetingBlock.scrollIntoView({ behavior: 'smooth', block: 'start' });\n };\n\n var Home = function Home() {\n this.initializeEvents();\n };\n\n Home.prototype.initializeEvents = function initializeEvents () {\n if (window.innerWidth > 768) {\n // If touch-screen (mobile) device, create double tap event on homepage blocs\n if (\"ontouchstart\" in document.documentElement) {\n var knowMoreLink = '.discover__grid a.know-more';\n var classVisible = 'is-visible';\n document.querySelectorAll('.discover__grid a.discover').forEach(function (element) {\n element.addEventListener('click', function (event) {\n event.preventDefault();\n document.querySelectorAll(knowMoreLink).forEach(function (more) {\n more.classList.remove(classVisible);\n });\n element.nextSibling.nextSibling.classList.add(classVisible);\n });\n });\n document.querySelectorAll(knowMoreLink).forEach(function (more) {\n more.addEventListener('click', function (event) {\n more.classList.remove(classVisible);\n });\n });\n\n // Ajoute un gestionnaire d'événements sur le document pour gérer les clics en dehors des éléments 'discover'\n document.addEventListener('click', function (event) {\n var target = event.target; // L'élément qui a été cliqué\n var isDiscoverElementClicked = target.closest('.discover__grid a.discover') || target.closest(knowMoreLink);\n\n // Si l'élément cliqué n'est pas un élément 'discover' ni un lien 'en savoir plus'\n if (!isDiscoverElementClicked) {\n // Retire la classe 'is-visible' de tous les éléments 'en savoir plus'\n document.querySelectorAll(knowMoreLink).forEach(function (more) {\n more.classList.remove(classVisible);\n });\n }\n });\n }\n }\n };\n\n var Accessibility = function Accessibility() {\n this.initializeEvents();\n };\n\n Accessibility.prototype.initializeEvents = function initializeEvents () {\n\n };\n\n\n var toggleDyslexic = document.getElementById('toggleDyslexic');\n var toggleColor = document.getElementById('toggleColor');\n var bodyElement = document.body;\n\n // Fonction pour appliquer la police en fonction de l'état\n function applyFont(isOn) {\n if (isOn) {\n bodyElement.classList.add('dyslexic-font');\n toggleDyslexic.checked = true;\n } else {\n bodyElement.classList.remove('dyslexic-font');\n toggleDyslexic.checked = false;\n }\n }\n\n // Vérifier si une valeur est déjà stockée dans le localStorage\n var savedFontPreference = localStorage.getItem('fontPreference');\n if (savedFontPreference) {\n applyFont(savedFontPreference === 'true');\n }\n\n // Ajout d'un événement clavier pour activer/désactiver la police\n toggleDyslexic.addEventListener('change', function () {\n var isOn = this.checked;\n applyFont(isOn);\n localStorage.setItem('fontPreference', isOn);\n });\n\n toggleDyslexic.addEventListener('keydown', function (event) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault(); // Empêche le comportement par défaut de \"Espace\"\n this.checked = !this.checked; // Inverse l'état du bouton\n var isOn = this.checked;\n applyFont(isOn);\n localStorage.setItem('fontPreference', isOn);\n }\n });\n\n // Fonction pour appliquer la couleur en fonction de l'état\n function applyColor(isOn) {\n if (isOn) {\n bodyElement.classList.add('color-contrast');\n toggleColor.checked = true;\n } else {\n bodyElement.classList.remove('color-contrast');\n toggleColor.checked = false;\n }\n }\n\n var savedColorPreference = localStorage.getItem('colorPreference');\n if (savedColorPreference) {\n applyColor(savedColorPreference === 'true');\n }\n\n // Ajout d'un événement clavier pour activer/désactiver le contraste\n toggleColor.addEventListener('change', function () {\n var isOn = this.checked;\n applyColor(isOn);\n localStorage.setItem('colorPreference', isOn);\n });\n\n toggleColor.addEventListener('keydown', function (event) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault(); // Empêche le comportement par défaut de \"Espace\"\n this.checked = !this.checked; // Inverse l'état du bouton\n var isOn = this.checked;\n applyColor(isOn);\n localStorage.setItem('colorPreference', isOn);\n }\n });\n\n var toggleAccessibility = document.getElementById('toggleAccessibility');\n var menuVisible = true;\n\n\n // Fonction pour faire apparaitre le menu d'accessibilité\n\n toggleAccessibility.addEventListener('click', toggleMenu);\n toggleAccessibility.addEventListener('keydown', function (event) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggleMenu();\n }\n });\n\n function toggleMenu() {\n if (menuVisible) {\n bodyElement.classList.add('accessibility--open');\n menuVisible = false;\n } else {\n bodyElement.classList.remove('accessibility--open');\n menuVisible = true;\n }\n }\n\n var ShortMenu = function ShortMenu() {\n this.body = document.body;\n this.triggerMenu = document.querySelector(\".header\");\n this.scrollUp = \"scroll-up\";\n this.scrollDown = \"scroll-down\";\n this.lastScroll = 0;\n this.scrollThreshold = 80; // Seuil en pixels avant de déclencher les événements\n\n // Initialisation des événements\n this.initializeEvents();\n };\n\n ShortMenu.prototype.initializeEvents = function initializeEvents () {\n var this$1 = this;\n\n window.addEventListener(\"scroll\", function () { return this$1.handleScroll(); });\n };\n\n ShortMenu.prototype.handleScroll = function handleScroll () {\n var currentScroll = window.scrollY;\n\n // Vérifier si la classe \"is-fixed\" est présente sur la div \"header\"\n if (this.triggerMenu.classList.contains(\"is-fixed\")) {\n // Si \"is-fixed\" est présent, ne pas exécuter les actions\n return;\n }\n\n // Ne rien faire si le défilement est inférieur au seuil\n if (currentScroll < this.scrollThreshold) {\n this.body.classList.remove(this.scrollUp, this.scrollDown);\n return;\n }\n\n if (currentScroll > this.lastScroll && !this.body.classList.contains(this.scrollDown)) {\n // Scrolling down\n this.body.classList.remove(this.scrollUp);\n this.body.classList.add(this.scrollDown);\n } else if (\n currentScroll < this.lastScroll &&\n this.body.classList.contains(this.scrollDown)\n ) {\n // Scrolling up\n this.body.classList.remove(this.scrollDown);\n this.body.classList.add(this.scrollUp);\n }\n\n this.lastScroll = currentScroll;\n };\n\n document.addEventListener('DOMContentLoaded', function () {\n new Menu();\n new Theme();\n new Home();\n new Ecoindex();\n new Social();\n new Formation();\n new Accessibility();\n new ShortMenu();\n // Vérifiez si l'URL contient 'contact'\n var isContactUrl = window.location.href.includes('contact');\n\n // Vérifiez si un élément avec la classe 'contact' existe sur la page\n var contactElementExists = document.querySelector('.contact') !== null;\n\n // Si l'une des conditions est vraie, créez une nouvelle instance de Contact\n if (isContactUrl || contactElementExists) {\n new Contact();\n }\n });\n\n})));\n//# sourceMappingURL=main.min.js.map\n"],"names":["factory","define","amd","Menu","this","burgerMenu","document","getElementById","megamenu","logoHeader","shortMenu","header","isOpen","toggleMenu","bind","handleKeydown","initializeEvents","Theme","currentFontSizePercent","minFontSizePercent","maxFontSizePercent","initializeTheme","article","querySelector","author","baseColumnSize","Ecoindex","SCROLL_THRESHOLD_START","SCROLL_THRESHOLD_END","Social","Formation","scrollY","Contact","Home","Accessibility","prototype","addEventListener","classList","toggle","setAttribute","event","key","preventDefault","this$1","changeThemeColors","decreaseFontSize","increaseFontSize","savedMode","localStorage","getItem","applyTheme","mode","body","querySelectorAll","forEach","element","newMode","setItem","applyFontSize","adjustGridColumns","style","fontSize","documentElement","window","ecoindexBadge","opacity","scrollPosition","pageYOffset","scrollTop","pointerEvents","copyUrlButton","tooltip","urlStr","location","href","toString","navigator","clipboard","writeText","innerHTML","self","actionBanner","footerContainer","onscroll","cssClass","contains","add","marginBottom","remove","open","getAttribute","btn","toggleMeeting","textarea","label","nextElementSibling","value","trim","scrollIntoView","behavior","block","knowMoreLink","classVisible","innerWidth","more","nextSibling","target","closest","toggleDyslexic","toggleColor","bodyElement","applyFont","isOn","checked","savedFontPreference","applyColor","savedColorPreference","toggleAccessibility","menuVisible","ShortMenu","triggerMenu","scrollUp","scrollDown","lastScroll","scrollThreshold","handleScroll","currentScroll","isContactUrl","includes","contactElementExists"],"mappings":"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"}