@@ -70,6 +70,28 @@ async function buildMenuForVersion(version) {
7070 }
7171}
7272
73+ async function buildVersionsMenuList ( versions , currentVersion ) {
74+ let versionsMenuHtml = '' ;
75+
76+ versionsMenuHtml += '<div class="dropdown-block">' ;
77+ for ( const v of versions ) {
78+ if ( v === currentVersion ) {
79+ versionsMenuHtml += `<a href="/${ v } /docs/" class="active">${ v } </a>` ;
80+ } else {
81+ versionsMenuHtml += `<a href="/${ v } /docs/">${ v } </a>` ;
82+ }
83+ }
84+ versionsMenuHtml += '</div>' ;
85+
86+ return versionsMenuHtml ;
87+ }
88+
89+ async function buildVersionMenu ( versions , currentVersion ) {
90+ const innerMenu = await buildVersionsMenuList ( versions , currentVersion ) ;
91+
92+ return `<div class="dropdown versions-menu"><a href="#" class="current">${ currentVersion } </a>${ innerMenu } </div>` ;
93+ }
94+
7395async function build ( ) {
7496 const template = await fs . readFile ( templatePath , 'utf-8' ) ;
7597 let docsMenu = '' ;
@@ -100,7 +122,6 @@ async function build() {
100122
101123 const mdFiles = await getAllMdFiles ( docsDir ) ;
102124 const base = branch ? `/branches/${ branch } /` : '/' ;
103- let prevVersion = null ;
104125 // const base = '/core-js-v4/web/dist/';
105126 const versions = [ ] ;
106127 for ( const mdPath of mdFiles ) {
@@ -111,20 +132,25 @@ async function build() {
111132 versions . push ( defaultBranch ) ;
112133 }
113134 }
135+ const uniqueVersions = [ ...new Set ( versions ) ] ;
114136
137+ let prevVersion = null ;
138+ let version = '' ;
139+ let versionsMenu = '' ;
115140 for ( const i in mdFiles ) {
116141 const mdPath = mdFiles [ i ] ;
117142 const mdContent = await fs . readFile ( mdPath , 'utf-8' ) ;
118143 const content = mdContent . toString ( ) ;
119144 const isDocs = mdPath . indexOf ( '/docs' ) !== - 1 ;
120- let version = '' ;
121145 let mobileDocsMenu = '' ;
122- if ( isDocs ) {
146+
147+ if ( version !== versions [ i ] ) {
123148 prevVersion = version ;
124149 version = versions [ i ] ;
125- if ( prevVersion !== version ) {
126- docsMenu = await buildMenuForVersion ( version ) ;
127- }
150+ docsMenu = await buildMenuForVersion ( version ) ;
151+ versionsMenu = await buildVersionMenu ( uniqueVersions , version ) ;
152+ }
153+ if ( isDocs ) {
128154 mobileDocsMenu = docsMenu ;
129155 }
130156 htmlFileName = mdPath . replace ( docsDir , '' ) . replace ( / \. m d $ / i, '.html' ) ;
@@ -134,6 +160,8 @@ async function build() {
134160 let resultHtml = template . replace ( '{content}' , `${ htmlContent } ` ) ;
135161 resultHtml = resultHtml . replace ( '{docs-menu}' , `${ mobileDocsMenu } ` ) ;
136162 resultHtml = resultHtml . replace ( '{base}' , `${ base } ` ) ;
163+ resultHtml = resultHtml . replace ( '{versions-menu}' , `${ versionsMenu } ` ) ;
164+ resultHtml = resultHtml . replaceAll ( '{current-version}' , version ) ;
137165
138166 if ( branch ) {
139167 resultHtml = resultHtml . replaceAll ( '{default-version}' , '.' ) ;
0 commit comments