mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2025-03-25 23:29:17 +03:00
24 lines
733 B
TypeScript
24 lines
733 B
TypeScript
|
import { isEmpty, isNil, range } from 'ramda';
|
||
|
|
||
|
export type OrderDir = 'ASC' | 'DESC' | undefined;
|
||
|
|
||
|
export const determineOrderDir = (currentField: string, newField: string, currentOrderDir: OrderDir): OrderDir => {
|
||
|
if (currentField !== newField) {
|
||
|
return 'ASC';
|
||
|
}
|
||
|
|
||
|
const newOrderMap: Record<'ASC' | 'DESC', OrderDir> = {
|
||
|
ASC: 'DESC',
|
||
|
DESC: undefined,
|
||
|
};
|
||
|
|
||
|
return currentOrderDir ? newOrderMap[currentOrderDir] : 'ASC';
|
||
|
};
|
||
|
|
||
|
export const rangeOf = <T>(size: number, mappingFn: (value: number) => T, startAt = 1): T[] =>
|
||
|
range(startAt, size + 1).map(mappingFn);
|
||
|
|
||
|
export type Empty = null | undefined | '' | never[];
|
||
|
|
||
|
export const hasValue = <T>(value: T | Empty): value is T => !isNil(value) && !isEmpty(value);
|