@@ -52,17 +52,19 @@ const handleScroll = (): void => {
5252const fullText = ' Gõ không gạch chân cực mượt' ;
5353const displayText = ref <string >(' ' );
5454const typingSpeed = 100 ;
55+ let typingTimer: ReturnType <typeof setInterval >;
56+ let resetTimer: ReturnType <typeof setTimeout >;
5557
5658const startTyping = () => {
5759 let i = 0 ;
5860 displayText .value = ' ' ;
59- const timer = setInterval (() => {
61+ typingTimer = setInterval (() => {
6062 if (i < fullText .length ) {
6163 displayText .value += fullText .charAt (i );
6264 i ++ ;
6365 } else {
64- clearInterval (timer );
65- setTimeout (startTyping , 3000 );
66+ clearInterval (typingTimer );
67+ resetTimer = setTimeout (startTyping , 3000 );
6668 }
6769 }, typingSpeed );
6870};
@@ -118,7 +120,11 @@ onMounted(() => {
118120 fetchGithubStars ();
119121});
120122
121- onUnmounted (() => window .removeEventListener (' scroll' , handleScroll ));
123+ onUnmounted (() => {
124+ window .removeEventListener (' scroll' , handleScroll );
125+ clearInterval (typingTimer );
126+ clearTimeout (resetTimer );
127+ });
122128
123129// --- DATA ---
124130interface PackageInfo {
@@ -521,7 +527,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
521527
522528 <div class =" custom-card setup-wrapper" >
523529 <el-tabs v-model =" activeOS" >
524- <el-tab-pane name =" arch" >
530+ <el-tab-pane lazy name =" arch" >
525531 <template #label
526532 ><div class =" tab-label" >
527533 <v-icon name =" si-archlinux" /> Arch Linux
@@ -551,7 +557,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
551557 </div >
552558 </el-tab-pane >
553559
554- <el-tab-pane name =" debian" >
560+ <el-tab-pane lazy name =" debian" >
555561 <template #label
556562 ><div class =" tab-label" >
557563 <v-icon name =" si-debian" /> Debian
@@ -577,7 +583,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
577583 </div >
578584 </el-tab-pane >
579585
580- <el-tab-pane name =" ubuntu" >
586+ <el-tab-pane lazy name =" ubuntu" >
581587 <template #label
582588 ><div class =" tab-label" >
583589 <v-icon name =" si-ubuntu" /> Ubuntu
@@ -603,7 +609,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
603609 </div >
604610 </el-tab-pane >
605611
606- <el-tab-pane name =" fedora" >
612+ <el-tab-pane lazy name =" fedora" >
607613 <template #label
608614 ><div class =" tab-label" >
609615 <v-icon name =" si-fedora" /> Fedora
@@ -622,7 +628,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
622628 </div >
623629 </el-tab-pane >
624630
625- <el-tab-pane name =" opensuse" >
631+ <el-tab-pane lazy name =" opensuse" >
626632 <template #label
627633 ><div class =" tab-label" >
628634 <v-icon name =" si-opensuse" /> openSUSE
@@ -641,7 +647,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
641647 </div >
642648 </el-tab-pane >
643649
644- <el-tab-pane name =" nixos" >
650+ <el-tab-pane lazy name =" nixos" >
645651 <template #label
646652 ><div class =" tab-label" >
647653 <v-icon name =" si-nixos" /> NixOS
@@ -663,7 +669,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
663669 </div >
664670 </el-tab-pane >
665671
666- <el-tab-pane name =" github" >
672+ <el-tab-pane lazy name =" github" >
667673 <template #label
668674 ><div class =" tab-label" >
669675 <v-icon name =" si-github" /> Releases
0 commit comments