@terminus/ngx-tools
Version:
[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github
17 lines • 3.3 kB
JavaScript
export function coerceNumberProperty(value, fallbackValue = 0) {
return isNumberValue(value) ? Number(value) : fallbackValue;
}
/**
* Whether the provided value is considered a number.
*
* ParseFloat(value) handles most of the cases we're interested in (it treats null, empty string,
* and other non-number values as NaN, where Number just uses 0) but it considers the string
* '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.
* NOTE: TypeScript seems to consider `parseFloat(value)` unsafe. In my tests there are no values which `parseFloat`
* cannot handle safely.
*
* @private
* @param value
*/
export const isNumberValue = (value) => !isNaN(parseFloat(value)) && !isNaN(Number(value));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXByb3BlcnR5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRlcm1pbnVzL25neC10b29scy9jb2VyY2lvbi8iLCJzb3VyY2VzIjpbIm51bWJlci9udW1iZXItcHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQVUsRUFBRSxhQUFhLEdBQUcsQ0FBQztJQUNoRSxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBVSxFQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIGpzZG9jL3JlcXVpcmUtanNkb2MsIHByZWZlci1hcnJvdy9wcmVmZXItYXJyb3ctZnVuY3Rpb25zICovXG4vKipcbiAqIENvZXJjZXMgYSBkYXRhLWJvdW5kIHZhbHVlICh0eXBpY2FsbHkgYSBzdHJpbmcpIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb2VyY2UgdG8gYSBudW1iZXJcbiAqIEBwYXJhbSBmYWxsYmFja1ZhbHVlIC0gVGhlIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgdmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvZXJjZU51bWJlclByb3BlcnR5KCcxMicpOyAgICAgICAgICAgICAgICAgIC8vIFJldHVybnM6IDEyXG4gKiBjb2VyY2VOdW1iZXJQcm9wZXJ0eTxib29sZWFuPignZm9vJywgZmFsc2UpOyAvLyBSZXR1cm5zOiBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWU6IGFueSk6IG51bWJlcjtcbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VOdW1iZXJQcm9wZXJ0eTxEPih2YWx1ZTogYW55LCBmYWxsYmFjazogRCk6IG51bWJlciB8IEQ7XG5leHBvcnQgZnVuY3Rpb24gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWU6IGFueSwgZmFsbGJhY2tWYWx1ZSA9IDApIHtcbiAgcmV0dXJuIGlzTnVtYmVyVmFsdWUodmFsdWUpID8gTnVtYmVyKHZhbHVlKSA6IGZhbGxiYWNrVmFsdWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgY29uc2lkZXJlZCBhIG51bWJlci5cbiAqXG4gKiBQYXJzZUZsb2F0KHZhbHVlKSBoYW5kbGVzIG1vc3Qgb2YgdGhlIGNhc2VzIHdlJ3JlIGludGVyZXN0ZWQgaW4gKGl0IHRyZWF0cyBudWxsLCBlbXB0eSBzdHJpbmcsXG4gKiBhbmQgb3RoZXIgbm9uLW51bWJlciB2YWx1ZXMgYXMgTmFOLCB3aGVyZSBOdW1iZXIganVzdCB1c2VzIDApIGJ1dCBpdCBjb25zaWRlcnMgdGhlIHN0cmluZ1xuICogJzEyM2hlbGxvJyB0byBiZSBhIHZhbGlkIG51bWJlci4gVGhlcmVmb3JlIHdlIGFsc28gY2hlY2sgaWYgTnVtYmVyKHZhbHVlKSBpcyBOYU4uXG4gKiBOT1RFOiBUeXBlU2NyaXB0IHNlZW1zIHRvIGNvbnNpZGVyIGBwYXJzZUZsb2F0KHZhbHVlKWAgdW5zYWZlLiBJbiBteSB0ZXN0cyB0aGVyZSBhcmUgbm8gdmFsdWVzIHdoaWNoIGBwYXJzZUZsb2F0YFxuICogY2Fubm90IGhhbmRsZSBzYWZlbHkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgaXNOdW1iZXJWYWx1ZSA9ICh2YWx1ZTogYW55KTogYm9vbGVhbiA9PiAhaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpICYmICFpc05hTihOdW1iZXIodmFsdWUpKTtcbiJdfQ==