Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import uniq from "lodash/uniq"; import { useEffect, useState } from "react"; import { useAppSelector } from "store/hooks"; import l10n, { L10NKey } from "shared/lib/lang/l10n"; import { EngineFieldSchema } from "store/features/engine/engineState"; export type EngineFieldGroup = { name: string; searchMatches: string[]; fields: EngineFieldSchema[]; }; export const useGroupedEngineFields = () => { const fields = useAppSelector((state) => state.engine.fields); const [groupedFields, setGroupedFields] = useState<EngineFieldGroup[]>([]); useEffect(() => { const groups = uniq(fields.map((f) => f.group)); setGroupedFields( groups.map((g) => { const groupFields = fields.filter((f) => f.group === g); return { name: g, searchMatches: ([] as string[]).concat( l10n(g as L10NKey), groupFields.map((field) => field.key), groupFields.map((field) => l10n(field.label as L10NKey)) ), fields: groupFields, }; }) ); }, [fields]); return groupedFields; }; |