34 lines
890 B
JavaScript
34 lines
890 B
JavaScript
import { PhoneUtilManager } from './PhoneUtilManager.js';
|
|
|
|
/**
|
|
* @typedef {import('../types').RegionCode} RegionCode
|
|
* @typedef {* & import('awesome-phonenumber').default} AwesomePhoneNumber
|
|
*/
|
|
|
|
/**
|
|
* @param {string} viewValue
|
|
* @param {{regionCode:RegionCode}} options
|
|
* @returns {string}
|
|
*/
|
|
export function parsePhoneNumber(viewValue, { regionCode }) {
|
|
// Do not format when not loaded
|
|
if (!PhoneUtilManager.isLoaded) {
|
|
return viewValue;
|
|
}
|
|
|
|
// eslint-disable-next-line prefer-destructuring
|
|
const PhoneNumber = /** @type {AwesomePhoneNumber} */ (PhoneUtilManager.PhoneUtil);
|
|
const regex = /[+0-9]+/gi;
|
|
const strippedViewValue = viewValue.match(regex)?.join('');
|
|
let pn;
|
|
try {
|
|
pn = PhoneNumber(strippedViewValue, regionCode);
|
|
// eslint-disable-next-line no-empty
|
|
} catch (_) {}
|
|
|
|
if (pn) {
|
|
return pn.getNumber('e164');
|
|
}
|
|
|
|
return viewValue;
|
|
}
|