", gray: true, indent: 1 }, { text: "", gray: true } ];let i = 0; const grayLines = [];function typeLine(line, onComplete) { const lineEl = document.createElement("div"); lineEl.classList.add("code-line");document.querySelectorAll('.cursor').forEach(c => { c.classList.remove('cursor'); c.classList.add('cursor-inactive'); });if (line.html) { lineEl.classList.add("line-white"); if (line.fadeIn) lineEl.classList.add("fade-in-line"); lineEl.innerHTML = indent(line.indent || 0) + line.html; container.appendChild(lineEl); if (line.fadeIn) { requestAnimationFrame(() => { const delay = line.delayAfter ? 1200 : 400; setTimeout(() => { lineEl.classList.add("visible"); document.querySelector('.shop-button')?.classList.add('visible'); if (line.delayAfter) { setTimeout(() => { grayLines.forEach(el => { if (el.textContent.trim() !== "") { el.classList.add('fade-out'); } }); }, 300); } }, delay); }); } onComplete(); return; }lineEl.classList.add(line.gray ? "line-gray" : "line-white"); if (line.first) lineEl.classList.add("first-gray"); lineEl.innerHTML = indent(line.indent || 0) + ""; container.appendChild(lineEl); if (line.gray) grayLines.push(lineEl);const typingSpan = lineEl.querySelector('.typing-text'); let j = 0; function typeChar() { if (j < line.text.length) { typingSpan.textContent += line.text.charAt(j); j++; setTimeout(typeChar, line.gray ? 3 : 15); } else { onComplete(); } } typeChar(); }function type() { if (i >= lines.length) return;const pauseMap = { 9: 800, 10: 1200, 13: 600, };typeLine(lines[i], () => { i++; const pause = pauseMap[i - 1] || 80; setTimeout(type, pause); }); }setTimeout(() => { type(); }, 2000); });
Visiter la boutique Onceforlife

Des [fonctionnalités] à acquérir pour la vie