1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*!
- * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
- * v1.0.0-beta.82
- */
- function isActivationKey(key) {
- return key === "Enter" || key === " ";
- }
- const numberKeys = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
- function isValidNumber(numberString) {
- return !(!numberString || isNaN(Number(numberString)));
- }
- function parseNumberString(numberString) {
- if (!numberString || !stringContainsNumbers(numberString)) {
- return "";
- }
- return sanitizeExponentialNumberString(numberString, (nonExpoNumString) => {
- let containsDecimal = false;
- const result = nonExpoNumString
- .split("")
- .filter((value, i) => {
- if (value.match(/\./g) && !containsDecimal) {
- containsDecimal = true;
- return true;
- }
- if (value.match(/\-/g) && i === 0) {
- return true;
- }
- return numberKeys.includes(value);
- })
- .reduce((string, part) => string + part);
- return isValidNumber(result) ? Number(result).toString() : "";
- });
- }
- function sanitizeDecimalString(decimalString) {
- const decimalAtEndOfStringButNotStart = /(?!^\.)\.$/;
- return decimalString.replace(decimalAtEndOfStringButNotStart, "");
- }
- function sanitizeNegativeString(negativeString) {
- const allHyphensExceptTheStart = /(?!^-)-/g;
- return negativeString.replace(allHyphensExceptTheStart, "");
- }
- function sanitizeLeadingZeroString(zeroString) {
- const allLeadingZerosOptionallyNegative = /^([-0])0+(?=\d)/;
- return zeroString.replace(allLeadingZerosOptionallyNegative, "$1");
- }
- function sanitizeNumberString(numberString) {
- return sanitizeExponentialNumberString(numberString, (nonExpoNumString) => {
- const sanitizedValue = sanitizeNegativeString(sanitizeDecimalString(sanitizeLeadingZeroString(nonExpoNumString)));
- const isNegativeDecimalOnlyZeros = /^-\b0\b\.?0*$/;
- return isValidNumber(sanitizedValue)
- ? isNegativeDecimalOnlyZeros.test(sanitizedValue)
- ? sanitizedValue
- : Number(sanitizedValue).toString()
- : nonExpoNumString;
- });
- }
- function sanitizeExponentialNumberString(numberString, func) {
- if (!numberString) {
- return numberString;
- }
- const firstE = numberString.toLowerCase().indexOf("e") + 1;
- return numberString
- .replace(/[eE]*$/g, "")
- .substring(0, firstE)
- .concat(numberString.slice(firstE).replace(/[eE]/g, ""))
- .split(/[eE]/)
- .map((section, i) => (i === 1 ? func(section.replace(/\./g, "")) : func(section)))
- .join("e")
- .replace(/^e/, "1e");
- }
- function stringContainsNumbers(string) {
- return numberKeys.some((number) => string.includes(number));
- }
- export { sanitizeExponentialNumberString as a, sanitizeDecimalString as b, isActivationKey as c, isValidNumber as i, numberKeys as n, parseNumberString as p, sanitizeNumberString as s };
|