UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

40 lines (39 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = detectCountryCode; var _includes = _interopRequireDefault(require("core-js-pure/stable/instance/includes.js")); var _countryCodes = _interopRequireDefault(require("./constants/countryCodes.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const strippedCodes = Array.from(new Set(_countryCodes.default.map(c => c.replace(/-/g, '')))).sort((a, b) => b.length - a.length || a.localeCompare(b)); const cdcFormatMap = Object.fromEntries(_countryCodes.default.map(c => [c.replace(/-/g, ''), c])); function detectCountryCode(value) { var _context; if (typeof value !== 'string') { return undefined; } if (value.startsWith('00')) { value = `+${value.slice(2)}`; } if (!value.startsWith('+')) { return undefined; } const digits = value.slice(1); if (cdcFormatMap[digits] && (0, _includes.default)(_context = cdcFormatMap[digits]).call(_context, '-')) { return { countryCode: `+${cdcFormatMap[digits]}`, phoneNumber: '' }; } for (const code of strippedCodes) { if (digits.startsWith(code) && digits.length > code.length) { return { countryCode: `+${cdcFormatMap[code] || code}`, phoneNumber: digits.slice(code.length) }; } } return undefined; } //# sourceMappingURL=detectCountryCode.js.map