mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-15 20:54:59 +08:00
Improve QueryMatcher TypeScript definition (#7555)
This commit is contained in:
parent
42adedc468
commit
5c44cb5cc6
@ -23,3 +23,14 @@ export type Writeable<T> = { -readonly [P in keyof T]: T[P] };
|
||||
|
||||
export type ComponentClass = keyof JSX.IntrinsicElements | JSXElementConstructor<any>;
|
||||
export type ReactAnyComponent = React.Component | React.ExoticComponent;
|
||||
|
||||
// Based on https://stackoverflow.com/a/58436959
|
||||
type Join<K, P> = K extends string | number ?
|
||||
P extends string | number ?
|
||||
`${K}${"" extends P ? "" : "."}${P}`
|
||||
: never : never;
|
||||
|
||||
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...0[]];
|
||||
|
||||
export type Leaves<T, D extends number = 5> = [D] extends [never] ? never : T extends object ?
|
||||
{ [K in keyof T]-?: Join<K, Leaves<T[K], Prev[D]>> }[keyof T] : "";
|
||||
|
@ -20,10 +20,11 @@ import { at, uniq } from 'lodash';
|
||||
import { removeHiddenChars } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { TimelineRenderingType } from '../contexts/RoomContext';
|
||||
import { Leaves } from "../@types/common";
|
||||
|
||||
interface IOptions<T extends {}> {
|
||||
keys: Array<string | keyof T>;
|
||||
funcs?: Array<(T) => string | string[]>;
|
||||
keys: Array<Leaves<T>>;
|
||||
funcs?: Array<(o: T) => string | string[]>;
|
||||
shouldMatchWordsOnly?: boolean;
|
||||
// whether to apply unhomoglyph and strip diacritics to fuzz up the search. Defaults to true
|
||||
fuzzy?: boolean;
|
||||
|
Loading…
Reference in New Issue
Block a user