@@ -17,7 +17,10 @@ import { useTypedSelector } from "@theme/ApiItem/hooks";
17
17
import merge from "lodash/merge" ;
18
18
19
19
import { CodeSample , Language } from "./code-snippets-types" ;
20
- import { mergeCodeSampleLanguage } from "./languages" ;
20
+ import {
21
+ getCodeSampleSourceFromLanguage ,
22
+ mergeCodeSampleLanguage ,
23
+ } from "./languages" ;
21
24
22
25
export const languageSet : Language [ ] = [
23
26
{
@@ -179,13 +182,13 @@ function CodeSnippets({ postman, codeSamples }: Props) {
179
182
// Merge user-defined langs into languageSet
180
183
const mergedLangs = mergeCodeSampleLanguage (
181
184
merge ( filteredLanguageSet , langs ) ,
182
- codeSamples
185
+ codeSamples ,
183
186
) ;
184
187
185
188
// Read defaultLang from localStorage
186
189
const defaultLang : Language [ ] = mergedLangs . filter (
187
190
( lang ) =>
188
- lang . language === localStorage . getItem ( "docusaurus.tab.code-samples" )
191
+ lang . language === localStorage . getItem ( "docusaurus.tab.code-samples" ) ,
189
192
) ;
190
193
const [ selectedVariant , setSelectedVariant ] = useState < string | undefined > ( ) ;
191
194
const [ selectedSample , setSelectedSample ] = useState < string | undefined > ( ) ;
@@ -198,20 +201,13 @@ function CodeSnippets({ postman, codeSamples }: Props) {
198
201
return defaultLang [ 0 ] ?? mergedLangs [ 0 ] ;
199
202
} ) ;
200
203
const [ codeText , setCodeText ] = useState < string > ( "" ) ;
201
- const [ codeSampleCodeText , setCodeSampleCodeText ] = useState < string > ( "" ) ;
204
+ const [ codeSampleCodeText , setCodeSampleCodeText ] = useState <
205
+ string | ( ( ) => string )
206
+ > ( ( ) => getCodeSampleSourceFromLanguage ( language ) ) ;
202
207
203
208
useEffect ( ( ) => {
204
- // initial active language is custom code sample
205
- if (
206
- language &&
207
- language . sample &&
208
- language . samples &&
209
- language . samplesSources
210
- ) {
211
- const sampleIndex = language . samples . findIndex (
212
- ( smp ) => smp === language . sample
213
- ) ;
214
- setCodeSampleCodeText ( language . samplesSources [ sampleIndex ] ) ;
209
+ if ( language && ! ! language . sample ) {
210
+ setCodeSampleCodeText ( getCodeSampleSourceFromLanguage ( language ) ) ;
215
211
}
216
212
217
213
if ( language && ! ! language . options ) {
@@ -236,11 +232,11 @@ function CodeSnippets({ postman, codeSamples }: Props) {
236
232
return ;
237
233
}
238
234
setCodeText ( snippet ) ;
239
- }
235
+ } ,
240
236
) ;
241
237
} else if ( language && ! language . options ) {
242
238
const langSource = mergedLangs . filter (
243
- ( lang ) => lang . language === language . language
239
+ ( lang ) => lang . language === language . language ,
244
240
) ;
245
241
246
242
// Merges user-defined language with default languageSet
@@ -269,7 +265,7 @@ function CodeSnippets({ postman, codeSamples }: Props) {
269
265
return ;
270
266
}
271
267
setCodeText ( snippet ) ;
272
- }
268
+ } ,
273
269
) ;
274
270
} else {
275
271
setCodeText ( "" ) ;
@@ -312,7 +308,7 @@ function CodeSnippets({ postman, codeSamples }: Props) {
312
308
return ;
313
309
}
314
310
setCodeText ( snippet ) ;
315
- }
311
+ } ,
316
312
) ;
317
313
}
318
314
} ) ;
@@ -327,7 +323,7 @@ function CodeSnippets({ postman, codeSamples }: Props) {
327
323
selectedSample !== language . sample
328
324
) {
329
325
const sampleIndex = language . samples . findIndex (
330
- ( smp ) => smp === selectedSample
326
+ ( smp ) => smp === selectedSample ,
331
327
) ;
332
328
setCodeSampleCodeText ( language . samplesSources [ sampleIndex ] ) ;
333
329
}
0 commit comments