31 lines
635 B
TypeScript
31 lines
635 B
TypeScript
export type TeamSearchTarget =
|
|
| "all"
|
|
| "team"
|
|
| "character"
|
|
| "weapon"
|
|
| "artifact";
|
|
|
|
export interface TeamSearchValues {
|
|
team: string[];
|
|
character: string[];
|
|
weapon: string[];
|
|
artifact: string[];
|
|
}
|
|
|
|
export function matchesTeamSearch(
|
|
values: TeamSearchValues,
|
|
query: string,
|
|
target: TeamSearchTarget,
|
|
): boolean {
|
|
const normalizedQuery = query.trim().toLocaleLowerCase();
|
|
if (!normalizedQuery) return true;
|
|
|
|
const candidates = target === "all"
|
|
? Object.values(values).flat()
|
|
: values[target];
|
|
|
|
return candidates.some((value) =>
|
|
value.toLocaleLowerCase().includes(normalizedQuery),
|
|
);
|
|
}
|