@@ -116,18 +116,45 @@ export interface VersionFilterData {
116116 let versionFilter: VersionFilterData = {
117117 versions: [], range: 'strict', type: 'any',
118118 };
119- let returnTypeFilter: string | null = null ;
119+ let returnTypeFilter = '' ;
120120 let addonFilter = new Set<string>();
121121
122122 let hasSearch = false;
123123 let searchCache: Map<string, number> = new Map<string, number>();
124124
125125 // get what VirtualItems should actually "exist" based on the filters
126126 function getFilteredItems(): VirtualItem[] {
127+ // Prepare elements
128+ let filtered = [...allItems];
129+
130+ // Addon filter
131+ if (addonFilter.size !== 0) {
132+ filtered = filtered.filter(item => {
133+ const itemAddon = item.element.dataset.syntaxAddon;
134+ if (itemAddon) {
135+ return addonFilter.has(itemAddon);
136+ }
137+ // no addon means it is from Skript
138+ return addonFilter.has("Skript");
139+ });
140+ }
141+
127142 // Type filter
128- let filtered = typeFilter.size === 0
129- ? [...allItems]
130- : allItems.filter(item => typeFilter.has(item.syntaxType));
143+ if (typeFilter.size !== 0) {
144+ filtered = filtered.filter(item => typeFilter.has(item.syntaxType));
145+ }
146+
147+ // Return type filter
148+ if (returnTypeFilter.length > 0) {
149+ filtered = filtered.filter(item => {
150+ if (item.element.dataset.syntaxReturns) {
151+ const candidate = (item.element.dataset.syntaxReturns as string).toLowerCase();
152+ // TODO inheritance mapping?
153+ return candidate.includes(returnTypeFilter);
154+ }
155+ return false;
156+ })
157+ }
131158
132159 // Version filter
133160 if (versionFilter.versions.length > 0) {
@@ -169,30 +196,6 @@ export interface VersionFilterData {
169196 });
170197 }
171198
172- // return type filter
173- if (returnTypeFilter) {
174- const target = returnTypeFilter.toLowerCase();
175- filtered = filtered.filter(item => {
176- if (item.element.dataset.syntaxReturns) {
177- const candidate = (item.element.dataset.syntaxReturns as string).toLowerCase();
178- // todo: inheritance mapping?
179- return candidate.includes(target);
180- }
181- return false;
182- })
183- }
184-
185- if (addonFilter.size != 0) {
186- filtered = filtered.filter(item => {
187- const itemAddon = item.element.dataset.syntaxAddon;
188- if (itemAddon) {
189- return addonFilter.has(itemAddon);
190- }
191- // no addon means it is from Skript
192- return addonFilter.has("Skript");
193- });
194- }
195-
196199 if (hasSearch) { // need to filter and sort based on search cache
197200 return filtered
198201 .filter(item => searchCache.has(item.syntaxId))
@@ -577,7 +580,7 @@ export interface VersionFilterData {
577580 fullRender();
578581 },
579582 updateReturnTypeFilter: (type: string) => {
580- returnTypeFilter = type;
583+ returnTypeFilter = type.toLowerCase() ;
581584 fullRender();
582585 },
583586 updateAddonFilter: (addons: Set<string>) => {
0 commit comments