UNPKG

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