// // Show/hide some sections by clicking on the title. // // Can be replaced by
, once it is supported by most browsers. // function saveStatus(id, shown) { if (typeof(Storage) !== "undefined") { localStorage.setItem("yfold-shown-" + id, shown); } } // record : (when clicked), record the status in local storage function setStatus(id, shown, content, record) { // console.log ("setStatus (" + id + ", " + shown + ")") ; var span = document.getElementById("arrow-" + id); if (shown) { content.classList.remove("anim-hide"); content.classList.remove("hidden"); span.innerHTML = "▾"; if (record) { content.classList.add("anim-show"); } else { content.classList.add("shown"); } } else { content.classList.remove("anim-show"); content.classList.remove("shown"); span.innerHTML = "▸"; if (record) { content.classList.add("anim-hide"); } else { content.classList.add("hidden"); } } if (record) { saveStatus(id, shown); } } // Invoked at load-time once for every yfold section. function initYfold(id) { // console.log ("initYfold (" + id + ")") ; // console.log ("unknown " + id) var shown = true; var content = document.getElementById("content-" + id); // Sets the state according to local storage or default value. if (typeof(Storage) !== "undefined") { var local = localStorage.getItem("yfold-shown-" + id); // console.log ("using storage value = " + local) if (local === 'true') { shown = true; } else if (local === 'false') { shown = false; } else { // Get default value var defv = content.getAttribute("data-yfold-default"); if (defv === 'hide') { shown = false; } // console.log ("using default value = " + shown) } } setStatus(id, shown, content, false); } // Function invoked when the title is clicked. function toggleYfold(id) { // console.log ("toggleYfold (" + id + ")") ; var content = document.getElementById("content-" + id); var expand = content.classList.contains("anim-hide") || content.classList.contains("hidden"); setStatus(id, expand, content, true); } /********************************* Du js pour les codes snippets ! - theme sombre/clair - copier le texte **********************************/ window.onload = function() { console.log("DOM loaded.") var snippets = document.getElementsByTagName("code"); for (var snippet of snippets) { if ((snippet.classList.value.includes("page")) || (snippet.classList.value.includes("block"))) { console.log(snippet); let img = document.createElement('div'); img.innerHTML = ''; img.addEventListener('click', function() { console.log(snippet.innerText); navigator.clipboard.writeText(snippet.innerText).then(function() { console.log("copiĆ© !"); img.classList = "valid" }, function() { console.log("pas copiĆ© !"); img.classList = "not-valid" }); }); let theme = document.createElement('div'); theme.setAttribute("class", "theme"); theme.innerHTML = ''; theme.addEventListener('click', function() { snippet.classList.toggle("light"); console.log("theme switched !"); if (theme.classList == "theme darken") { theme.classList = "theme lighten"; } else { theme.classList = "theme darken"; } }); snippet.appendChild(img) snippet.appendChild(theme) } else { console.log(snippet.classList); } } if (typeof(Storage) !== "undefined") { var theme = localStorage.getItem("theme"); console.log("theme : " + theme) if (theme === "/Y/ystyle.css") { css_url = "/Y/ystyle.css"; } else if (theme === "/Y/ystyle2.css") { css_url = "/Y/ystyle2.css"; changeCSS(css_url, 0) } else { // Get default value css_url = "/Y/ystyle.css"; } } var toggler = document.createElement("a") toggler.setAttribute("id", "toggler") toggler.style.position = "absolute" toggler.style.top = "12px" toggler.style.right = "12px" toggler.style.padding = "10px" toggler.style.borderRadius = "7px" toggler.style.background = "#335" toggler.style.color = "#eee" toggler.style.zIndex = "12" toggler.innerHTML = "theme" toggler.style.cursor = "pointer" toggler.addEventListener("click", function() { if (css_url == "/Y/ystyle.css") { css_url = "/Y/ystyle2.css"; } else { css_url = "/Y/ystyle.css"; } changeCSS(css_url, 0) }) document.body.appendChild(toggler) } function changeCSS(css_file, cssLinkIndex) { if (typeof(Storage) !== "undefined") { localStorage.setItem("theme", css_file); } console.log("changing css") var oldlink = document.getElementsByTagName("link").item(cssLinkIndex); var newlink = document.createElement("link"); newlink.setAttribute("rel", "stylesheet"); newlink.setAttribute("type", "text/css"); newlink.setAttribute("href", css_file); document.getElementsByTagName("head").item(cssLinkIndex).replaceChild(newlink, oldlink); }