UNPKG

@wordpress/components

Version:
75 lines (70 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ensureNumber = void 0; exports.getDefinedValue = getDefinedValue; exports.isValueDefined = isValueDefined; exports.isValueEmpty = isValueEmpty; exports.stringToNumber = void 0; /* eslint-disable jsdoc/valid-types */ /** * Determines if a value is null or undefined. * * @template T * * @param {T} value The value to check. * @return {value is Exclude<T, null | undefined>} Whether value is not null or undefined. */ function isValueDefined(value) { return value !== undefined && value !== null; } /* eslint-enable jsdoc/valid-types */ /* eslint-disable jsdoc/valid-types */ /** * Determines if a value is empty, null, or undefined. * * @param {string | number | null | undefined} value The value to check. * @return {value is ("" | null | undefined)} Whether value is empty. */ function isValueEmpty(value) { const isEmptyString = value === ''; return !isValueDefined(value) || isEmptyString; } /* eslint-enable jsdoc/valid-types */ /** * Get the first defined/non-null value from an array. * * @template T * * @param {Array<T | null | undefined>} values Values to derive from. * @param {T} fallbackValue Fallback value if there are no defined values. * @return {T} A defined value or the fallback value. */ function getDefinedValue(values = [], fallbackValue) { var _values$find; return (_values$find = values.find(isValueDefined)) !== null && _values$find !== void 0 ? _values$find : fallbackValue; } /** * Converts a string to a number. * * @param {string} value * @return {number} String as a number. */ const stringToNumber = value => { return parseFloat(value); }; /** * Regardless of the input being a string or a number, returns a number. * * Returns `undefined` in case the string is `undefined` or not a valid numeric value. * * @param {string | number} value * @return {number} The parsed number. */ exports.stringToNumber = stringToNumber; const ensureNumber = value => { return typeof value === 'string' ? stringToNumber(value) : value; }; exports.ensureNumber = ensureNumber; //# sourceMappingURL=values.js.map