1 | import {
|
2 | __,
|
3 | is,
|
4 | compose,
|
5 | gt,
|
6 | gte,
|
7 | test,
|
8 | join,
|
9 | curry,
|
10 | both,
|
11 | complement,
|
12 | isEmpty,
|
13 | equals,
|
14 | values,
|
15 | contains,
|
16 | flip,
|
17 | all,
|
18 | } from 'ramda';
|
19 |
|
20 | import { numericPartOfUnitedNumber } from './units';
|
21 | import { DIMENSIONS_UNITS, RESOLUTION_UNIT, MEDIA_TYPES } from '../const';
|
22 |
|
23 | export const isBoolean = is(Boolean);
|
24 | export const isNumber = both(is(Number), complement(equals(NaN)));
|
25 | export const isObject = is(Object);
|
26 | export const isString = is(String);
|
27 | export const isArray = is(Array);
|
28 | export const isNull = value => value === null;
|
29 | export const isUndefined = value => value === undefined;
|
30 |
|
31 | export const isPopulatedObject = both(complement(isEmpty), isObject);
|
32 | export const isRatioString = test(/^[1-9]+[0-9]* ?\/ ?[1-9]+[0-9]*$/);
|
33 | export const isPositiveNumber = both(isNumber, gt(__, 0));
|
34 | export const isPositiveNumberOrZero = both(isNumber, gte(__, 0));
|
35 | export const isPositiveInteger = both(isPositiveNumber, Number.isInteger);
|
36 | export const isPositiveIntegerOrZero = both(
|
37 | isPositiveNumberOrZero,
|
38 | Number.isInteger
|
39 | );
|
40 | export const isNumberWithUnit = curry((units, value) => {
|
41 | const regex = `^-?\\d+(?:.\\d+)?(?:${join('|', units)})$`;
|
42 | return new RegExp(regex).test(value);
|
43 | });
|
44 | export const isNumericPartOfUnitValuePositive = compose(
|
45 | isPositiveNumber,
|
46 | numericPartOfUnitedNumber
|
47 | );
|
48 | export const isPositiveNumberWithPixelUnit = both(
|
49 | isNumberWithUnit([DIMENSIONS_UNITS.PX]),
|
50 | isNumericPartOfUnitValuePositive
|
51 | );
|
52 | export const isNumberWithDimensionsUnit = isNumberWithUnit(
|
53 | values(DIMENSIONS_UNITS)
|
54 | );
|
55 | export const isNumberWithResolutionUnit = isNumberWithUnit([RESOLUTION_UNIT]);
|
56 | export const isPositiveNumberWithResolutionUnit = both(
|
57 | isNumberWithResolutionUnit,
|
58 | isNumericPartOfUnitValuePositive
|
59 | );
|
60 | export const isPositiveNumberWithDimensionsUnit = both(
|
61 | isNumberWithDimensionsUnit,
|
62 | isNumericPartOfUnitValuePositive
|
63 | );
|
64 | export const doesListIncludeValue = list => contains(__, values(list));
|
65 | export const isDimensionsUnitValid = contains(__, values(DIMENSIONS_UNITS));
|
66 | export const isMediaTypeValid = flip(contains)(values(MEDIA_TYPES));
|
67 | export const areMediaTypesValid = both(
|
68 | all(isMediaTypeValid),
|
69 | complement(isEmpty)
|
70 | );
|