@@ -68,54 +68,47 @@ document.addEventListener('DOMContentLoaded', () => {
6868 terminalObserver . observe ( terminalFluid ) ;
6969 }
7070
71- function startTerminalSequence ( ) {
72- const type1 = document . querySelector ( '.typing-1' ) ;
73- const text1 = type1 . textContent ;
74- type1 . textContent = '' ;
75-
76- let charIndex = 0 ;
77- const typeInterval = setInterval ( ( ) => {
78- if ( charIndex < text1 . length ) {
79- type1 . textContent += text1 . charAt ( charIndex ) ;
80- charIndex ++ ;
81- } else {
82- clearInterval ( typeInterval ) ;
83- setTimeout ( ( ) => {
84- document . querySelectorAll ( '.response-1' ) . forEach ( el => el . classList . remove ( 'hidden' ) ) ;
85- setTimeout ( ( ) => {
86- document . querySelector ( '.cmd-2' ) . classList . remove ( 'hidden' ) ;
87- typeSecondCommand ( ) ;
88- } , 600 ) ;
89- } , 300 ) ;
90- }
91- } , 40 ) ;
71+ function typeCommand ( el , speed ) {
72+ return new Promise ( resolve => {
73+ const text = el . textContent ;
74+ el . textContent = '' ;
75+ let i = 0 ;
76+ const iv = setInterval ( ( ) => {
77+ if ( i < text . length ) {
78+ el . textContent += text . charAt ( i ++ ) ;
79+ } else {
80+ clearInterval ( iv ) ;
81+ resolve ( ) ;
82+ }
83+ } , speed ) ;
84+ } ) ;
9285 }
9386
94- function typeSecondCommand ( ) {
95- const type2 = document . querySelector ( '.typing-2' ) ;
96- const text2 = type2 . textContent ;
97- type2 . textContent = '' ;
98-
99- let charIndex = 0 ;
100- const typeInterval = setInterval ( ( ) => {
101- if ( charIndex < text2 . length ) {
102- type2 . textContent += text2 . charAt ( charIndex ) ;
103- charIndex ++ ;
104- } else {
105- clearInterval ( typeInterval ) ;
106- setTimeout ( ( ) => {
107- const responses = document . querySelectorAll ( '.response-2' ) ;
108- let delay = 0 ;
109- responses . forEach ( el => {
110- setTimeout ( ( ) => el . classList . remove ( 'hidden' ) , delay ) ;
111- delay += 400 ;
112- } ) ;
113- setTimeout ( ( ) => {
114- document . querySelector ( '.cmd-3' ) . classList . remove ( 'hidden' ) ;
115- } , delay + 200 ) ;
116- } , 300 ) ;
117- }
118- } , 50 ) ;
87+ function showResponses ( selector , stagger ) {
88+ return new Promise ( resolve => {
89+ const els = document . querySelectorAll ( selector ) ;
90+ let delay = 0 ;
91+ els . forEach ( el => {
92+ setTimeout ( ( ) => el . classList . remove ( 'hidden' ) , delay ) ;
93+ delay += stagger ;
94+ } ) ;
95+ setTimeout ( resolve , delay + 200 ) ;
96+ } ) ;
97+ }
98+
99+ async function startTerminalSequence ( ) {
100+ await typeCommand ( document . querySelector ( '.typing-1' ) , 30 ) ;
101+ await showResponses ( '.response-1' , 400 ) ;
102+
103+ document . querySelector ( '.cmd-2' ) . classList . remove ( 'hidden' ) ;
104+ await typeCommand ( document . querySelector ( '.typing-2' ) , 35 ) ;
105+ await showResponses ( '.response-2' , 300 ) ;
106+
107+ document . querySelector ( '.cmd-3' ) . classList . remove ( 'hidden' ) ;
108+ await typeCommand ( document . querySelector ( '.typing-3' ) , 40 ) ;
109+ await showResponses ( '.response-3' , 400 ) ;
110+
111+ document . querySelector ( '.cmd-4' ) . classList . remove ( 'hidden' ) ;
119112 }
120113
121114 // 5. Neural Network / Particle Canvas Background
0 commit comments