@@ -40,6 +40,7 @@ export default function Libraries({
4040 searchParams ?: {
4141 programming_language ?: string ;
4242 algorithm ?: keyof LibraryModel [ "support" ] ;
43+ support ?: keyof LibraryModel [ "support" ]
4344 } ;
4445} ) {
4546 const librariesDictionary = getLibrariesDictionary ( languageCode ) ;
@@ -49,10 +50,15 @@ export default function Libraries({
4950 encoding : "utf-8" ,
5051 } ) ;
5152
52- const programmingLanguage = searchParams ?. programming_language ?? "" ;
53+ const programmingLanguage = searchParams ?. programming_language ;
5354 const algorithm = searchParams ?. algorithm ;
54- const query = programmingLanguage !== "" ? programmingLanguage : algorithm ?? "" ;
55+ const support = searchParams ?. support ;
56+ const query = programmingLanguage ?? algorithm ?? support ?? "" ;
5557 const dictionary = JSON . parse ( source ) as LibraryDictionaryModel ;
58+ const allOptions = Object . keys ( Object . values ( dictionary ) [ 0 ] . libs [ 0 ] . support ) ;
59+ const indexAlgorithmStart = allOptions . findIndex (
60+ ( option ) => option == "hs256"
61+ ) ;
5662
5763 const categoryOptions : { id : string ; name : string } [ ] = Object . values (
5864 dictionary
@@ -61,21 +67,30 @@ export default function Libraries({
6167 name : library . name ,
6268 } ) ) ;
6369
64- const algorithmOptions : { value : string ; label : string } [ ] = Object . keys ( Object . values (
65- dictionary
66- ) [ 0 ] . libs [ 0 ] . support ) . map ( key => ( {
67- value : key ,
68- label : key . toUpperCase ( )
69- } ) )
70+ const supportOptions : { value : string ; label : string } [ ] = allOptions
71+ . slice ( 0 , indexAlgorithmStart )
72+ . map ( ( key ) => ( {
73+ value : key ,
74+ label : key . toUpperCase ( ) ,
75+ } ) ) ;
7076
71- const categories : LibraryCategoryModel [ ] = dictionary [ programmingLanguage ]
77+ const algorithmOptions : { value : string ; label : string } [ ] = allOptions
78+ . slice ( indexAlgorithmStart )
79+ . map ( ( key ) => ( {
80+ value : key ,
81+ label : key . toUpperCase ( ) ,
82+ } ) ) ;
83+
84+ const categories : LibraryCategoryModel [ ] = programmingLanguage
7285 ? [ dictionary [ programmingLanguage ] ]
7386 : Object . values ( dictionary ) ;
7487
75- const filteredCategories = algorithm
88+ const categoryToFilter = algorithm ?? support
89+
90+ const filteredCategories = categoryToFilter
7691 ? categories . map ( ( category ) => {
7792 const filteredLibs = category . libs . filter (
78- ( lib ) => lib . support [ algorithm ]
93+ ( lib ) => lib . support [ categoryToFilter ]
7994 ) ;
8095 return {
8196 ...category ,
@@ -190,6 +205,7 @@ export default function Libraries({
190205 query = { query || librariesDictionary . filterPicker . defaultValue . value }
191206 categoryOptions = { categoryOptions }
192207 algorithmOptions = { algorithmOptions }
208+ supportOptions = { supportOptions }
193209 dictionary = { librariesDictionary }
194210 />
195211 < LibraryResultsComponent
0 commit comments