{"version":3,"file":"text-input.DzJZnuIM.js","sources":["../../../../../node_modules/cleave.js/dist/cleave-esm.js","../../../../../packages/web-components/src/lib/components/text-input/text-input.ts"],"sourcesContent":["var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar NumeralFormatter = function (numeralDecimalMark,\n numeralIntegerScale,\n numeralDecimalScale,\n numeralThousandsGroupStyle,\n numeralPositiveOnly,\n stripLeadingZeroes,\n prefix,\n signBeforePrefix,\n tailPrefix,\n delimiter) {\n var owner = this;\n\n owner.numeralDecimalMark = numeralDecimalMark || '.';\n owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;\n owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;\n owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;\n owner.numeralPositiveOnly = !!numeralPositiveOnly;\n owner.stripLeadingZeroes = stripLeadingZeroes !== false;\n owner.prefix = (prefix || prefix === '') ? prefix : '';\n owner.signBeforePrefix = !!signBeforePrefix;\n owner.tailPrefix = !!tailPrefix;\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n};\n\nNumeralFormatter.groupStyle = {\n thousand: 'thousand',\n lakh: 'lakh',\n wan: 'wan',\n none: 'none' \n};\n\nNumeralFormatter.prototype = {\n getRawValue: function (value) {\n return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');\n },\n\n format: function (value) {\n var owner = this, parts, partSign, partSignAndPrefix, partInteger, partDecimal = '';\n\n // strip alphabet letters\n value = value.replace(/[A-Za-z]/g, '')\n // replace the first decimal mark with reserved placeholder\n .replace(owner.numeralDecimalMark, 'M')\n\n // strip non numeric letters except minus and \"M\"\n // this is to ensure prefix has been stripped\n .replace(/[^\\dM-]/g, '')\n\n // replace the leading minus with reserved placeholder\n .replace(/^\\-/, 'N')\n\n // strip the other minus sign (if present)\n .replace(/\\-/g, '')\n\n // replace the minus sign (if present)\n .replace('N', owner.numeralPositiveOnly ? '' : '-')\n\n // replace decimal mark\n .replace('M', owner.numeralDecimalMark);\n\n // strip any leading zeros\n if (owner.stripLeadingZeroes) {\n value = value.replace(/^(-)?0+(?=\\d)/, '$1');\n }\n\n partSign = value.slice(0, 1) === '-' ? '-' : '';\n if (typeof owner.prefix != 'undefined') {\n if (owner.signBeforePrefix) {\n partSignAndPrefix = partSign + owner.prefix;\n } else {\n partSignAndPrefix = owner.prefix + partSign;\n }\n } else {\n partSignAndPrefix = partSign;\n }\n \n partInteger = value;\n\n if (value.indexOf(owner.numeralDecimalMark) >= 0) {\n parts = value.split(owner.numeralDecimalMark);\n partInteger = parts[0];\n partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);\n }\n\n if(partSign === '-') {\n partInteger = partInteger.slice(1);\n }\n\n if (owner.numeralIntegerScale > 0) {\n partInteger = partInteger.slice(0, owner.numeralIntegerScale);\n }\n\n switch (owner.numeralThousandsGroupStyle) {\n case NumeralFormatter.groupStyle.lakh:\n partInteger = partInteger.replace(/(\\d)(?=(\\d\\d)+\\d$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.wan:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{4})+$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.thousand:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{3})+$)/g, '$1' + owner.delimiter);\n\n break;\n }\n\n if (owner.tailPrefix) {\n return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;\n }\n\n return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');\n }\n};\n\nvar NumeralFormatter_1 = NumeralFormatter;\n\nvar DateFormatter = function (datePattern, dateMin, dateMax) {\n var owner = this;\n\n owner.date = [];\n owner.blocks = [];\n owner.datePattern = datePattern;\n owner.dateMin = dateMin\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMin.length === 2) owner.dateMin.unshift(0);\n\n owner.dateMax = dateMax\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMax.length === 2) owner.dateMax.unshift(0);\n \n owner.initBlocks();\n};\n\nDateFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.datePattern.forEach(function (value) {\n if (value === 'Y') {\n owner.blocks.push(4);\n } else {\n owner.blocks.push(2);\n }\n });\n },\n\n getISOFormatDate: function () {\n var owner = this,\n date = owner.date;\n\n return date[2] ? (\n date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getValidatedDate: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.datePattern[index]) {\n case 'd':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 3) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 31) {\n sub = '31';\n }\n\n break;\n\n case 'm':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 1) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 12) {\n sub = '12';\n }\n\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedDateString(result);\n },\n\n getFixedDateString: function (value) {\n var owner = this, datePattern = owner.datePattern, date = [],\n dayIndex = 0, monthIndex = 0, yearIndex = 0,\n dayStartIndex = 0, monthStartIndex = 0, yearStartIndex = 0,\n day, month, year, fullYearDone = false;\n\n // mm-dd || dd-mm\n if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {\n dayStartIndex = datePattern[0] === 'd' ? 0 : 2;\n monthStartIndex = 2 - dayStartIndex;\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\n date = this.getFixedDate(day, month, 0);\n }\n\n // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd\n if (value.length === 8) {\n datePattern.forEach(function (type, index) {\n switch (type) {\n case 'd':\n dayIndex = index;\n break;\n case 'm':\n monthIndex = index;\n break;\n default:\n yearIndex = index;\n break;\n }\n });\n\n yearStartIndex = yearIndex * 2;\n dayStartIndex = (dayIndex <= yearIndex) ? dayIndex * 2 : (dayIndex * 2 + 2);\n monthStartIndex = (monthIndex <= yearIndex) ? monthIndex * 2 : (monthIndex * 2 + 2);\n\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = this.getFixedDate(day, month, year);\n }\n\n // mm-yy || yy-mm\n if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 2;\n yearStartIndex = 2 - monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2;\n\n date = [0, month, year];\n }\n\n // mm-yyyy || yyyy-mm\n if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 4;\n yearStartIndex = 2 - 0.5 * monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = [0, month, year];\n }\n\n date = owner.getRangeFixedDate(date);\n owner.date = date;\n\n var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) {\n switch (current) {\n case 'd':\n return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0]));\n case 'm':\n return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1]));\n case 'y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : '');\n case 'Y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : '');\n }\n }, '');\n\n return result;\n },\n\n getRangeFixedDate: function (date) {\n var owner = this,\n datePattern = owner.datePattern,\n dateMin = owner.dateMin || [],\n dateMax = owner.dateMax || [];\n\n if (!date.length || (dateMin.length < 3 && dateMax.length < 3)) return date;\n\n if (\n datePattern.find(function(x) {\n return x.toLowerCase() === 'y';\n }) &&\n date[2] === 0\n ) return date;\n\n if (dateMax.length && (dateMax[2] < date[2] || (\n dateMax[2] === date[2] && (dateMax[1] < date[1] || (\n dateMax[1] === date[1] && dateMax[0] < date[0]\n ))\n ))) return dateMax;\n\n if (dateMin.length && (dateMin[2] > date[2] || (\n dateMin[2] === date[2] && (dateMin[1] > date[1] || (\n dateMin[1] === date[1] && dateMin[0] > date[0]\n ))\n ))) return dateMin;\n\n return date;\n },\n\n getFixedDate: function (day, month, year) {\n day = Math.min(day, 31);\n month = Math.min(month, 12);\n year = parseInt((year || 0), 10);\n\n if ((month < 7 && month % 2 === 0) || (month > 8 && month % 2 === 1)) {\n day = Math.min(day, month === 2 ? (this.isLeapYear(year) ? 29 : 28) : 30);\n }\n\n return [day, month, year];\n },\n\n isLeapYear: function (year) {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n },\n\n addLeadingZeroForYear: function (number, fullYearMode) {\n if (fullYearMode) {\n return (number < 10 ? '000' : (number < 100 ? '00' : (number < 1000 ? '0' : ''))) + number;\n }\n\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar DateFormatter_1 = DateFormatter;\n\nvar TimeFormatter = function (timePattern, timeFormat) {\n var owner = this;\n\n owner.time = [];\n owner.blocks = [];\n owner.timePattern = timePattern;\n owner.timeFormat = timeFormat;\n owner.initBlocks();\n};\n\nTimeFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.timePattern.forEach(function () {\n owner.blocks.push(2);\n });\n },\n\n getISOFormatTime: function () {\n var owner = this,\n time = owner.time;\n\n return time[2] ? (\n owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getTimeFormatOptions: function () {\n var owner = this;\n if (String(owner.timeFormat) === '12') {\n return {\n maxHourFirstDigit: 1,\n maxHours: 12,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n }\n\n return {\n maxHourFirstDigit: 2,\n maxHours: 23,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n },\n\n getValidatedTime: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n var timeFormatOptions = owner.getTimeFormatOptions();\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.timePattern[index]) {\n\n case 'h':\n if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {\n sub = timeFormatOptions.maxHours + '';\n }\n\n break;\n\n case 'm':\n case 's':\n if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {\n sub = timeFormatOptions.maxMinutes + '';\n }\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedTimeString(result);\n },\n\n getFixedTimeString: function (value) {\n var owner = this, timePattern = owner.timePattern, time = [],\n secondIndex = 0, minuteIndex = 0, hourIndex = 0,\n secondStartIndex = 0, minuteStartIndex = 0, hourStartIndex = 0,\n second, minute, hour;\n\n if (value.length === 6) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 's':\n secondIndex = index * 2;\n break;\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n secondStartIndex = secondIndex;\n\n second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n\n second = 0;\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n owner.time = time;\n\n return time.length === 0 ? value : timePattern.reduce(function (previous, current) {\n switch (current) {\n case 's':\n return previous + owner.addLeadingZero(time[2]);\n case 'm':\n return previous + owner.addLeadingZero(time[1]);\n case 'h':\n return previous + owner.addLeadingZero(time[0]);\n }\n }, '');\n },\n\n getFixedTime: function (hour, minute, second) {\n second = Math.min(parseInt(second || 0, 10), 60);\n minute = Math.min(minute, 60);\n hour = Math.min(hour, 60);\n\n return [hour, minute, second];\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar TimeFormatter_1 = TimeFormatter;\n\nvar PhoneFormatter = function (formatter, delimiter) {\n var owner = this;\n\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\n owner.formatter = formatter;\n};\n\nPhoneFormatter.prototype = {\n setFormatter: function (formatter) {\n this.formatter = formatter;\n },\n\n format: function (phoneNumber) {\n var owner = this;\n\n owner.formatter.clear();\n\n // only keep number and +\n phoneNumber = phoneNumber.replace(/[^\\d+]/g, '');\n\n // strip non-leading +\n phoneNumber = phoneNumber.replace(/^\\+/, 'B').replace(/\\+/g, '').replace('B', '+');\n\n // strip delimiter\n phoneNumber = phoneNumber.replace(owner.delimiterRE, '');\n\n var result = '', current, validated = false;\n\n for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {\n current = owner.formatter.inputDigit(phoneNumber.charAt(i));\n\n // has ()- or space inside\n if (/[\\s()-]/g.test(current)) {\n result = current;\n\n validated = true;\n } else {\n if (!validated) {\n result = current;\n }\n // else: over length input\n // it turns to invalid number again\n }\n }\n\n // strip ()\n // e.g. US: 7161234567 returns (716) 123-4567\n result = result.replace(/[()]/g, '');\n // replace library delimiter with user customized delimiter\n result = result.replace(/[\\s-]/g, owner.delimiter);\n\n return result;\n }\n};\n\nvar PhoneFormatter_1 = PhoneFormatter;\n\nvar CreditCardDetector = {\n blocks: {\n uatp: [4, 5, 6],\n amex: [4, 6, 5],\n diners: [4, 6, 4],\n discover: [4, 4, 4, 4],\n mastercard: [4, 4, 4, 4],\n dankort: [4, 4, 4, 4],\n instapayment: [4, 4, 4, 4],\n jcb15: [4, 6, 5],\n jcb: [4, 4, 4, 4],\n maestro: [4, 4, 4, 4],\n visa: [4, 4, 4, 4],\n mir: [4, 4, 4, 4],\n unionPay: [4, 4, 4, 4],\n general: [4, 4, 4, 4]\n },\n\n re: {\n // starts with 1; 15 digits, not starts with 1800 (jcb card)\n uatp: /^(?!1800)1\\d{0,14}/,\n\n // starts with 34/37; 15 digits\n amex: /^3[47]\\d{0,13}/,\n\n // starts with 6011/65/644-649; 16 digits\n discover: /^(?:6011|65\\d{0,2}|64[4-9]\\d?)\\d{0,12}/,\n\n // starts with 300-305/309 or 36/38/39; 14 digits\n diners: /^3(?:0([0-5]|9)|[689]\\d?)\\d{0,11}/,\n\n // starts with 51-55/2221–2720; 16 digits\n mastercard: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}/,\n\n // starts with 5019/4175/4571; 16 digits\n dankort: /^(5019|4175|4571)\\d{0,12}/,\n\n // starts with 637-639; 16 digits\n instapayment: /^63[7-9]\\d{0,13}/,\n\n // starts with 2131/1800; 15 digits\n jcb15: /^(?:2131|1800)\\d{0,11}/,\n\n // starts with 2131/1800/35; 16 digits\n jcb: /^(?:35\\d{0,2})\\d{0,12}/,\n\n // starts with 50/56-58/6304/67; 16 digits\n maestro: /^(?:5[0678]\\d{0,2}|6304|67\\d{0,2})\\d{0,12}/,\n\n // starts with 22; 16 digits\n mir: /^220[0-4]\\d{0,12}/,\n\n // starts with 4; 16 digits\n visa: /^4\\d{0,15}/,\n\n // starts with 62/81; 16 digits\n unionPay: /^(62|81)\\d{0,14}/\n },\n\n getStrictBlocks: function (block) {\n var total = block.reduce(function (prev, current) {\n return prev + current;\n }, 0);\n\n return block.concat(19 - total);\n },\n\n getInfo: function (value, strictMode) {\n var blocks = CreditCardDetector.blocks,\n re = CreditCardDetector.re;\n\n // Some credit card can have up to 19 digits number.\n // Set strictMode to true will remove the 16 max-length restrain,\n // however, I never found any website validate card number like\n // this, hence probably you don't want to enable this option.\n strictMode = !!strictMode;\n\n for (var key in re) {\n if (re[key].test(value)) {\n var matchedBlocks = blocks[key];\n return {\n type: key,\n blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks\n };\n }\n }\n\n return {\n type: 'unknown',\n blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general\n };\n }\n};\n\nvar CreditCardDetector_1 = CreditCardDetector;\n\nvar Util = {\n noop: function () {\n },\n\n strip: function (value, re) {\n return value.replace(re, '');\n },\n\n getPostDelimiter: function (value, delimiter, delimiters) {\n // single delimiter\n if (delimiters.length === 0) {\n return value.slice(-delimiter.length) === delimiter ? delimiter : '';\n }\n\n // multiple delimiters\n var matchedDelimiter = '';\n delimiters.forEach(function (current) {\n if (value.slice(-current.length) === current) {\n matchedDelimiter = current;\n }\n });\n\n return matchedDelimiter;\n },\n\n getDelimiterREByDelimiter: function (delimiter) {\n return new RegExp(delimiter.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1'), 'g');\n },\n\n getNextCursorPosition: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n // If cursor was at the end of value, just place it back.\n // Because new value could contain additional chars.\n if (oldValue.length === prevPos) {\n return newValue.length;\n }\n\n return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter ,delimiters);\n },\n\n getPositionOffset: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n var oldRawValue, newRawValue, lengthOffset;\n\n oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);\n newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);\n lengthOffset = oldRawValue.length - newRawValue.length;\n\n return (lengthOffset !== 0) ? (lengthOffset / Math.abs(lengthOffset)) : 0;\n },\n\n stripDelimiters: function (value, delimiter, delimiters) {\n var owner = this;\n\n // single delimiter\n if (delimiters.length === 0) {\n var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';\n\n return value.replace(delimiterRE, '');\n }\n\n // multiple delimiters\n delimiters.forEach(function (current) {\n current.split('').forEach(function (letter) {\n value = value.replace(owner.getDelimiterREByDelimiter(letter), '');\n });\n });\n\n return value;\n },\n\n headStr: function (str, length) {\n return str.slice(0, length);\n },\n\n getMaxLength: function (blocks) {\n return blocks.reduce(function (previous, current) {\n return previous + current;\n }, 0);\n },\n\n // strip prefix\n // Before type | After type | Return value\n // PEFIX-... | PEFIX-... | ''\n // PREFIX-123 | PEFIX-123 | 123\n // PREFIX-123 | PREFIX-23 | 23\n // PREFIX-123 | PREFIX-1234 | 1234\n getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) {\n // No prefix\n if (prefixLength === 0) {\n return value;\n }\n\n // Value is prefix\n if (value === prefix && value !== '') {\n return '';\n }\n\n if (signBeforePrefix && (value.slice(0, 1) == '-')) {\n var prev = (prevResult.slice(0, 1) == '-') ? prevResult.slice(1) : prevResult;\n return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix);\n }\n\n // Pre result prefix string does not match pre-defined prefix\n if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n }\n\n var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);\n\n // New value has issue, someone typed in between prefix letters\n // Revert to pre value\n if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {\n return prevValue.slice(prefixLength);\n } else if (value.slice(-prefixLength) !== prefix && tailPrefix) {\n return prevValue.slice(0, -prefixLength - 1);\n }\n\n // No issue, strip prefix for new value\n return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);\n },\n\n getFirstDiffIndex: function (prev, current) {\n var index = 0;\n\n while (prev.charAt(index) === current.charAt(index)) {\n if (prev.charAt(index++) === '') {\n return -1;\n }\n }\n\n return index;\n },\n\n getFormattedValue: function (value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {\n var result = '',\n multipleDelimiters = delimiters.length > 0,\n currentDelimiter = '';\n\n // no options, normal input\n if (blocksLength === 0) {\n return value;\n }\n\n blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n rest = value.slice(length);\n\n if (multipleDelimiters) {\n currentDelimiter = delimiters[delimiterLazyShow ? (index - 1) : index] || currentDelimiter;\n } else {\n currentDelimiter = delimiter;\n }\n\n if (delimiterLazyShow) {\n if (index > 0) {\n result += currentDelimiter;\n }\n\n result += sub;\n } else {\n result += sub;\n\n if (sub.length === length && index < blocksLength - 1) {\n result += currentDelimiter;\n }\n }\n\n // update remaining string\n value = rest;\n }\n });\n\n return result;\n },\n\n // move cursor to the end\n // the first time user focuses on an input with prefix\n fixPrefixCursor: function (el, prefix, delimiter, delimiters) {\n if (!el) {\n return;\n }\n\n var val = el.value,\n appendix = delimiter || (delimiters[0] || ' ');\n\n if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) <= val.length) {\n return;\n }\n\n var len = val.length * 2;\n\n // set timeout to avoid blink\n setTimeout(function () {\n el.setSelectionRange(len, len);\n }, 1);\n },\n\n // Check if input field is fully selected\n checkFullSelection: function(value) {\n try {\n var selection = window.getSelection() || document.getSelection() || {};\n return selection.toString().length === value.length;\n } catch (ex) {\n // Ignore\n }\n\n return false;\n },\n\n setSelection: function (element, position, doc) {\n if (element !== this.getActiveElement(doc)) {\n return;\n }\n\n // cursor is already in the end\n if (element && element.value.length <= position) {\n return;\n }\n\n if (element.createTextRange) {\n var range = element.createTextRange();\n\n range.move('character', position);\n range.select();\n } else {\n try {\n element.setSelectionRange(position, position);\n } catch (e) {\n // eslint-disable-next-line\n console.warn('The input element type does not support selection');\n }\n }\n },\n\n getActiveElement: function(parent) {\n var activeElement = parent.activeElement;\n if (activeElement && activeElement.shadowRoot) {\n return this.getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n },\n\n isAndroid: function () {\n return navigator && /android/i.test(navigator.userAgent);\n },\n\n // On Android chrome, the keyup and keydown events\n // always return key code 229 as a composition that\n // buffers the user’s keystrokes\n // see https://github.com/nosir/cleave.js/issues/147\n isAndroidBackspaceKeydown: function (lastInputValue, currentInputValue) {\n if (!this.isAndroid() || !lastInputValue || !currentInputValue) {\n return false;\n }\n\n return currentInputValue === lastInputValue.slice(0, -1);\n }\n};\n\nvar Util_1 = Util;\n\n/**\n * Props Assignment\n *\n * Separate this, so react module can share the usage\n */\nvar DefaultProperties = {\n // Maybe change to object-assign\n // for now just keep it as simple\n assign: function (target, opts) {\n target = target || {};\n opts = opts || {};\n\n // credit card\n target.creditCard = !!opts.creditCard;\n target.creditCardStrictMode = !!opts.creditCardStrictMode;\n target.creditCardType = '';\n target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || (function () {});\n\n // phone\n target.phone = !!opts.phone;\n target.phoneRegionCode = opts.phoneRegionCode || 'AU';\n target.phoneFormatter = {};\n\n // time\n target.time = !!opts.time;\n target.timePattern = opts.timePattern || ['h', 'm', 's'];\n target.timeFormat = opts.timeFormat || '24';\n target.timeFormatter = {};\n\n // date\n target.date = !!opts.date;\n target.datePattern = opts.datePattern || ['d', 'm', 'Y'];\n target.dateMin = opts.dateMin || '';\n target.dateMax = opts.dateMax || '';\n target.dateFormatter = {};\n\n // numeral\n target.numeral = !!opts.numeral;\n target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;\n target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;\n target.numeralDecimalMark = opts.numeralDecimalMark || '.';\n target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';\n target.numeralPositiveOnly = !!opts.numeralPositiveOnly;\n target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;\n target.signBeforePrefix = !!opts.signBeforePrefix;\n target.tailPrefix = !!opts.tailPrefix;\n\n // others\n target.swapHiddenInput = !!opts.swapHiddenInput;\n \n target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;\n\n target.uppercase = !!opts.uppercase;\n target.lowercase = !!opts.lowercase;\n\n target.prefix = (target.creditCard || target.date) ? '' : (opts.prefix || '');\n target.noImmediatePrefix = !!opts.noImmediatePrefix;\n target.prefixLength = target.prefix.length;\n target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;\n target.copyDelimiter = !!opts.copyDelimiter;\n\n target.initValue = (opts.initValue !== undefined && opts.initValue !== null) ? opts.initValue.toString() : '';\n\n target.delimiter =\n (opts.delimiter || opts.delimiter === '') ? opts.delimiter :\n (opts.date ? '/' :\n (opts.time ? ':' :\n (opts.numeral ? ',' :\n (opts.phone ? ' ' :\n ' '))));\n target.delimiterLength = target.delimiter.length;\n target.delimiterLazyShow = !!opts.delimiterLazyShow;\n target.delimiters = opts.delimiters || [];\n\n target.blocks = opts.blocks || [];\n target.blocksLength = target.blocks.length;\n\n target.root = (typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window;\n target.document = opts.document || target.root.document;\n\n target.maxLength = 0;\n\n target.backspace = false;\n target.result = '';\n\n target.onValueChanged = opts.onValueChanged || (function () {});\n\n return target;\n }\n};\n\nvar DefaultProperties_1 = DefaultProperties;\n\n/**\n * Construct a new Cleave instance by passing the configuration object\n *\n * @param {String | HTMLElement} element\n * @param {Object} opts\n */\nvar Cleave = function (element, opts) {\n var owner = this;\n var hasMultipleElements = false;\n\n if (typeof element === 'string') {\n owner.element = document.querySelector(element);\n hasMultipleElements = document.querySelectorAll(element).length > 1;\n } else {\n if (typeof element.length !== 'undefined' && element.length > 0) {\n owner.element = element[0];\n hasMultipleElements = element.length > 1;\n } else {\n owner.element = element;\n }\n }\n\n if (!owner.element) {\n throw new Error('[cleave.js] Please check the element');\n }\n\n if (hasMultipleElements) {\n try {\n // eslint-disable-next-line\n console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');\n } catch (e) {\n // Old IE\n }\n }\n\n opts.initValue = owner.element.value;\n\n owner.properties = Cleave.DefaultProperties.assign({}, opts);\n\n owner.init();\n};\n\nCleave.prototype = {\n init: function () {\n var owner = this, pps = owner.properties;\n\n // no need to use this lib\n if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && (pps.blocksLength === 0 && !pps.prefix)) {\n owner.onInput(pps.initValue);\n\n return;\n }\n\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n\n owner.isAndroid = Cleave.Util.isAndroid();\n owner.lastInputValue = '';\n owner.isBackward = '';\n\n owner.onChangeListener = owner.onChange.bind(owner);\n owner.onKeyDownListener = owner.onKeyDown.bind(owner);\n owner.onFocusListener = owner.onFocus.bind(owner);\n owner.onCutListener = owner.onCut.bind(owner);\n owner.onCopyListener = owner.onCopy.bind(owner);\n\n owner.initSwapHiddenInput();\n\n owner.element.addEventListener('input', owner.onChangeListener);\n owner.element.addEventListener('keydown', owner.onKeyDownListener);\n owner.element.addEventListener('focus', owner.onFocusListener);\n owner.element.addEventListener('cut', owner.onCutListener);\n owner.element.addEventListener('copy', owner.onCopyListener);\n\n\n owner.initPhoneFormatter();\n owner.initDateFormatter();\n owner.initTimeFormatter();\n owner.initNumeralFormatter();\n\n // avoid touch input field if value is null\n // otherwise Firefox will add red box-shadow for \n if (pps.initValue || (pps.prefix && !pps.noImmediatePrefix)) {\n owner.onInput(pps.initValue);\n }\n },\n\n initSwapHiddenInput: function () {\n var owner = this, pps = owner.properties;\n if (!pps.swapHiddenInput) return;\n\n var inputFormatter = owner.element.cloneNode(true);\n owner.element.parentNode.insertBefore(inputFormatter, owner.element);\n\n owner.elementSwapHidden = owner.element;\n owner.elementSwapHidden.type = 'hidden';\n\n owner.element = inputFormatter;\n owner.element.id = '';\n },\n\n initNumeralFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.numeral) {\n return;\n }\n\n pps.numeralFormatter = new Cleave.NumeralFormatter(\n pps.numeralDecimalMark,\n pps.numeralIntegerScale,\n pps.numeralDecimalScale,\n pps.numeralThousandsGroupStyle,\n pps.numeralPositiveOnly,\n pps.stripLeadingZeroes,\n pps.prefix,\n pps.signBeforePrefix,\n pps.tailPrefix,\n pps.delimiter\n );\n },\n\n initTimeFormatter: function() {\n var owner = this, pps = owner.properties;\n\n if (!pps.time) {\n return;\n }\n\n pps.timeFormatter = new Cleave.TimeFormatter(pps.timePattern, pps.timeFormat);\n pps.blocks = pps.timeFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initDateFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.date) {\n return;\n }\n\n pps.dateFormatter = new Cleave.DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax);\n pps.blocks = pps.dateFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initPhoneFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.phone) {\n return;\n }\n\n // Cleave.AsYouTypeFormatter should be provided by\n // external google closure lib\n try {\n pps.phoneFormatter = new Cleave.PhoneFormatter(\n new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode),\n pps.delimiter\n );\n } catch (ex) {\n throw new Error('[cleave.js] Please include phone-type-formatter.{country}.js lib');\n }\n },\n\n onKeyDown: function (event) {\n var owner = this,\n charCode = event.which || event.keyCode;\n\n owner.lastInputValue = owner.element.value;\n owner.isBackward = charCode === 8;\n },\n\n onChange: function (event) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward';\n\n var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);\n\n if (owner.isBackward && postDelimiter) {\n pps.postDelimiterBackspace = postDelimiter;\n } else {\n pps.postDelimiterBackspace = false;\n }\n\n this.onInput(this.element.value);\n },\n\n onFocus: function () {\n var owner = this,\n pps = owner.properties;\n owner.lastInputValue = owner.element.value;\n\n if (pps.prefix && pps.noImmediatePrefix && !owner.element.value) {\n this.onInput(pps.prefix);\n }\n\n Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);\n },\n\n onCut: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n this.onInput('');\n },\n\n onCopy: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n },\n\n copyClipboardData: function (e) {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n inputValue = owner.element.value,\n textToCopy = '';\n\n if (!pps.copyDelimiter) {\n textToCopy = Util.stripDelimiters(inputValue, pps.delimiter, pps.delimiters);\n } else {\n textToCopy = inputValue;\n }\n\n try {\n if (e.clipboardData) {\n e.clipboardData.setData('Text', textToCopy);\n } else {\n window.clipboardData.setData('Text', textToCopy);\n }\n\n e.preventDefault();\n } catch (ex) {\n // empty\n }\n },\n\n onInput: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n // case 1: delete one more character \"4\"\n // 1234*| -> hit backspace -> 123|\n // case 2: last character is not delimiter which is:\n // 12|34* -> hit backspace -> 1|34*\n // note: no need to apply this for numeral mode\n var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);\n if (!pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {\n value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);\n }\n\n // phone formatter\n if (pps.phone) {\n if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {\n pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);\n } else {\n pps.result = pps.phoneFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // numeral formatter\n if (pps.numeral) {\n // Do not show prefix when noImmediatePrefix is specified\n // This mostly because we need to show user the native input placeholder\n if (pps.prefix && pps.noImmediatePrefix && value.length === 0) {\n pps.result = '';\n } else {\n pps.result = pps.numeralFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // date\n if (pps.date) {\n value = pps.dateFormatter.getValidatedDate(value);\n }\n\n // time\n if (pps.time) {\n value = pps.timeFormatter.getValidatedTime(value);\n }\n\n // strip delimiters\n value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);\n\n // strip prefix\n value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\n // strip non-numeric characters\n value = pps.numericOnly ? Util.strip(value, /[^\\d]/g) : value;\n\n // convert case\n value = pps.uppercase ? value.toUpperCase() : value;\n value = pps.lowercase ? value.toLowerCase() : value;\n\n // prevent from showing prefix when no immediate option enabled with empty input value\n if (pps.prefix) {\n if (pps.tailPrefix) {\n value = value + pps.prefix;\n } else {\n value = pps.prefix + value;\n }\n\n\n // no blocks specified, no need to do formatting\n if (pps.blocksLength === 0) {\n pps.result = value;\n owner.updateValueState();\n\n return;\n }\n }\n\n // update credit card props\n if (pps.creditCard) {\n owner.updateCreditCardPropsByValue(value);\n }\n\n // strip over length characters\n value = Util.headStr(value, pps.maxLength);\n\n // apply blocks\n pps.result = Util.getFormattedValue(\n value,\n pps.blocks, pps.blocksLength,\n pps.delimiter, pps.delimiters, pps.delimiterLazyShow\n );\n\n owner.updateValueState();\n },\n\n updateCreditCardPropsByValue: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util,\n creditCardInfo;\n\n // At least one of the first 4 characters has changed\n if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {\n return;\n }\n\n creditCardInfo = Cleave.CreditCardDetector.getInfo(value, pps.creditCardStrictMode);\n\n pps.blocks = creditCardInfo.blocks;\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Util.getMaxLength(pps.blocks);\n\n // credit card type changed\n if (pps.creditCardType !== creditCardInfo.type) {\n pps.creditCardType = creditCardInfo.type;\n\n pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);\n }\n },\n\n updateValueState: function () {\n var owner = this,\n Util = Cleave.Util,\n pps = owner.properties;\n\n if (!owner.element) {\n return;\n }\n\n var endPos = owner.element.selectionEnd;\n var oldValue = owner.element.value;\n var newValue = pps.result;\n\n endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);\n\n // fix Android browser type=\"text\" input field\n // cursor not jumping issue\n if (owner.isAndroid) {\n window.setTimeout(function () {\n owner.element.value = newValue;\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n }, 1);\n\n return;\n }\n\n owner.element.value = newValue;\n if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();\n\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n },\n\n callOnValueChanged: function () {\n var owner = this,\n pps = owner.properties;\n\n pps.onValueChanged.call(owner, {\n target: {\n name: owner.element.name,\n value: pps.result,\n rawValue: owner.getRawValue()\n }\n });\n },\n\n setPhoneRegionCode: function (phoneRegionCode) {\n var owner = this, pps = owner.properties;\n\n pps.phoneRegionCode = phoneRegionCode;\n owner.initPhoneFormatter();\n owner.onChange();\n },\n\n setRawValue: function (value) {\n var owner = this, pps = owner.properties;\n\n value = value !== undefined && value !== null ? value.toString() : '';\n\n if (pps.numeral) {\n value = value.replace('.', pps.numeralDecimalMark);\n }\n\n pps.postDelimiterBackspace = false;\n\n owner.element.value = value;\n owner.onInput(value);\n },\n\n getRawValue: function () {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n rawValue = owner.element.value;\n\n if (pps.rawValueTrimPrefix) {\n rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n }\n\n if (pps.numeral) {\n rawValue = pps.numeralFormatter.getRawValue(rawValue);\n } else {\n rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);\n }\n\n return rawValue;\n },\n\n getISOFormatDate: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.date ? pps.dateFormatter.getISOFormatDate() : '';\n },\n\n getISOFormatTime: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.time ? pps.timeFormatter.getISOFormatTime() : '';\n },\n\n getFormattedValue: function () {\n return this.element.value;\n },\n\n destroy: function () {\n var owner = this;\n\n owner.element.removeEventListener('input', owner.onChangeListener);\n owner.element.removeEventListener('keydown', owner.onKeyDownListener);\n owner.element.removeEventListener('focus', owner.onFocusListener);\n owner.element.removeEventListener('cut', owner.onCutListener);\n owner.element.removeEventListener('copy', owner.onCopyListener);\n },\n\n toString: function () {\n return '[Cleave Object]';\n }\n};\n\nCleave.NumeralFormatter = NumeralFormatter_1;\nCleave.DateFormatter = DateFormatter_1;\nCleave.TimeFormatter = TimeFormatter_1;\nCleave.PhoneFormatter = PhoneFormatter_1;\nCleave.CreditCardDetector = CreditCardDetector_1;\nCleave.Util = Util_1;\nCleave.DefaultProperties = DefaultProperties_1;\n\n// for angular directive\n((typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window)['Cleave'] = Cleave;\n\n// CommonJS\nvar Cleave_1 = Cleave;\n\nexport default Cleave_1;\n","import Cleave from 'cleave.js';\nimport { PropertyValueMap, html, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { pdsCustomElement as customElement } from '../../decorators/pds-custom-element';\nimport { PdsButton } from '../button/button';\nimport { PdsFormElement } from '../pds-form-element/PdsFormElement';\n\nimport '@principal/design-system-icons-web/search';\nimport styles from './text-input.scss?inline';\n\nconst submittable = ['pds-button[type=\"submit\"]:not([disabled])'];\n\nconst blocking = ['pds-text-input'];\n\n/**\n * @summary The 51³Ô¹ÏºÚÁÏ text input component\n *\n * @fires pds-text-input-input an event dispatched on input\n * @fires pds-text-input-change an event dispatched on change\n * @fires pds-text-input-blur an event dispatched on blur\n * @fires pds-text-input-focus an event dispatched on focus\n * @slot label Optional: Use this slot instead of the label property, if the label requires additonal markup.\n * @slot help-text Optional: Use this slot instead of the helpText property, if the help text requires additonal markup.\n * @slot prefix Optional: Use this slot to add an element to the beginning of the input field.\n * @slot suffix Optional: Use this slot to add an element to the end of the input field.\n */\n@customElement('pds-text-input', {\n category: 'component',\n type: 'component',\n state: 'stable',\n styles,\n})\nexport class PdsTextInput extends PdsFormElement {\n /**\n * Style variant\n * - **default** renders the standard text-input color variant\n * - **inverted** renders the inverted text-input color variant\n */\n @property()\n variant: 'default' | 'inverted' = 'default';\n\n set value(newValue) {\n const oldValue = this.value;\n\n // store the value so it can be retrieved by the getter\n this.internalValue = newValue;\n\n // sets the current value of the control\n this.internals.setFormValue(newValue);\n\n // set the value on the field\n if (this.field && this.field.value !== newValue) {\n this.field.value = newValue;\n }\n\n // rerender the component\n this.requestUpdate('value', oldValue);\n }\n\n /**\n * The value of the form field.\n */\n @property()\n get value() {\n return this.internalValue;\n }\n\n /**\n * The size of the component.\n *\n * - **default**\n * - **sm** renders a the small version of the input\n *\n * NOTE: This is NOT the HTML size attribute that controls the width of the input.\n */\n @property()\n size: 'sm' | 'default' = 'default';\n\n /**\n * Standard input type attribute.\n * See [HTML attribute: type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)\n *\n * - **email** - use for inputs that take an email\n * - **number** - use for inputs that take number values\n * - **password** - use for inputs that take passwords\n * - **search** - use for inputs used for searches\n * - **text** - use for inputs that take alphanumeric text\n * - **url** - use for inputs that take urls\n *\n * Explicitly exclude the following input types:\n *\n * - **button** - use PdsButton component with `type=\"button\"`\n * - **checkbox** - use the PdsCheckbox component\n * - **color**\n * - **date**\n * - **datetime-local**\n * - **file**\n * - **hidden** - not needed for a design system\n * - **tel** - use the PDSPhoneNumberInput instead\n * - **image**\n * - **month**\n * - **radio** - use the PdsRadioGroup component\n * - **range**\n * - **reset** - use the PdsButton component with `type=\"reset\"`\n * - **submit** - use the PdsButton component with `type=\"submit\"`\n * - **time**\n * - **week**\n */\n @property({ reflect: true })\n type: 'email' | 'number' | 'password' | 'search' | 'text' | 'url' = 'text';\n\n /**\n * Standard input min attribute.\n * See [HTML attribute: min](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/min)\n */\n @property()\n min?: string | number;\n\n /**\n * Standard input max attribute.\n * See [HTML attribute: max](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/max)\n */\n @property()\n max?: string | number;\n\n /**\n * Standard input minlength attribute.\n * See [HTML attribute: minlength](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/minlength)\n */\n @property()\n minLength?: string | number;\n\n /**\n * Standard input maxlength attribute.\n * See [HTML attribute: maxlength](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/maxlength)\n */\n @property()\n maxLength?: string | number;\n\n /**\n * Standard input pattern attribute.\n * See [HTML attribute: pattern](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern)\n */\n @property()\n pattern?: string;\n\n /**\n * Standard input step attribute.\n * See [HTML attribute: step](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/step)\n */\n @property()\n step?: string | number;\n\n /**\n * Standard input inputmode attribute.\n * See [HTML attribute: inputmode](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/inputmode)\n */\n @property()\n inputmode?:\n | 'none'\n | 'text'\n | 'decimal'\n | 'numeric'\n | 'tel'\n | 'search'\n | 'email'\n | 'url';\n\n /**\n * Standard input autocomplete attribute.\n * See [HTML attribute: autocomplete](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete)\n *\n * Note: this explicitly excludes the tel autocomplete values since type tel is not a valid option for this component.\n */\n @property()\n autocomplete:\n | 'off'\n | 'on'\n | 'name'\n | 'honorific-prefix'\n | 'given-name'\n | 'additional-name'\n | 'family-name'\n | 'honorific-suffix'\n | 'nickname'\n | 'email'\n | 'username'\n | 'new-password'\n | 'current-password'\n | 'one-time-code'\n | 'organization-title'\n | 'organization'\n | 'street-address'\n | 'address-line1'\n | 'address-line2'\n | 'address-line3'\n | 'address-level4'\n | 'address-level3'\n | 'address-level2'\n | 'address-level1'\n | 'country'\n | 'country-name'\n | 'postal-code'\n | 'cc-name'\n | 'cc-given-name'\n | 'cc-additional-name'\n | 'cc-family-name'\n | 'cc-number'\n | 'cc-exp'\n | 'cc-exp-month'\n | 'cc-exp-year'\n | 'cc-csc'\n | 'cc-type'\n | 'transaction-currency'\n | 'transaction-amount'\n | 'language'\n | 'bday'\n | 'bday-day'\n | 'bday-month'\n | 'bday-year'\n | 'sex'\n | 'impp'\n | 'url'\n | 'photo';\n\n /**\n * The masking pattern to apply to the input field.\n *\n * - **ssn**\n * - **tax-id**\n *\n * If using `maskType`, then `type` property must be set to \"text\".\n */\n @property()\n maskType?: 'ssn' | 'tax-id';\n\n /** @internal */\n @query('input')\n field: HTMLInputElement;\n\n protected updateField() {\n // set the value on the field\n // when the field exists and there is an internalValue\n if (\n this.field &&\n typeof this.internalValue !== 'undefined' &&\n this.field.value !== this.internalValue\n ) {\n this.field.value = this.internalValue;\n }\n }\n\n private handleChange() {\n this.value = this.field.value;\n\n if (this.value === 'undefined') {\n this.value = '';\n }\n\n this.dispatchEvent(\n new Event('pds-text-input-change', { bubbles: true, composed: true }),\n );\n }\n\n private handleInput() {\n this.value = this.field.value;\n this.dispatchEvent(\n new Event('pds-text-input-input', { bubbles: true, composed: true }),\n );\n }\n\n private handleBlur() {\n this.dispatchEvent(\n new Event('pds-text-input-blur', { bubbles: false, composed: true }),\n );\n }\n\n private handleFocus() {\n this.dispatchEvent(\n new Event('pds-text-input-focus', { bubbles: false, composed: true }),\n );\n }\n\n private handleKeydown(e: KeyboardEvent): void {\n if (e.key === 'Enter') {\n const { form } = this.internals;\n const submitElement: PdsButton | undefined | null = form?.querySelector(\n submittable.join(','),\n );\n\n if (form) {\n // not testable in Jest\n /* istanbul ignore next */\n if (submitElement) {\n const clickEvent = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n composed: true,\n });\n submitElement.button.dispatchEvent(clickEvent);\n } else {\n const blockingElements = form?.querySelectorAll(blocking.join(','));\n if (blockingElements && blockingElements.length <= 1) {\n // Older versions of Safari don't support the requestSubmit method\n if (form.requestSubmit) {\n form.requestSubmit();\n } else {\n form.submit();\n }\n }\n }\n }\n }\n }\n\n private createMask(maskType: string): void {\n let mask;\n\n if (maskType === 'ssn') {\n mask = new Cleave(this.field, {\n numericOnly: true,\n delimiters: ['-', '-'],\n blocks: [3, 2, 4],\n });\n }\n\n if (maskType === 'tax-id') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n mask = new Cleave(this.field, {\n numericOnly: true,\n delimiters: ['-'],\n blocks: [2, 7],\n });\n }\n }\n\n /** @internal */\n get classNames() {\n return {\n sm: this.size === 'sm',\n 'is-error': !!this.errorMessage,\n 'is-disabled': this.disabled,\n 'hidden-label': this.hideLabel,\n prefixed: !!this.slotNotEmpty('prefix'),\n suffixed: !!this.slotNotEmpty('suffix'),\n [this.variant]: !!this.variant,\n };\n }\n\n protected override firstUpdated() {\n super.firstUpdated();\n\n this.updateField();\n\n if (this.maskType) {\n this.createMask(this.maskType);\n }\n }\n\n protected updated(\n changedProperties: PropertyValueMap | Map,\n ) {\n if (changedProperties.has('value')) {\n this.handleChange();\n }\n }\n\n render() {\n if (!this.verifyLabel()) {\n return nothing;\n }\n\n return html`
\n ${this.labelTemplate()} ${this.helpTextTemplate()}\n
\n ${this.slotNotEmpty('prefix')\n ? html`\n \n `\n : nothing}\n \n\n ${this.slotNotEmpty('suffix')\n ? html`\n \n `\n : nothing}\n
\n ${this.errorMessageTemplate()}\n
`;\n }\n}\n"],"names":["commonjsGlobal","NumeralFormatter","numeralDecimalMark","numeralIntegerScale","numeralDecimalScale","numeralThousandsGroupStyle","numeralPositiveOnly","stripLeadingZeroes","prefix","signBeforePrefix","tailPrefix","delimiter","owner","value","parts","partSign","partSignAndPrefix","partInteger","partDecimal","NumeralFormatter_1","DateFormatter","datePattern","dateMin","dateMax","x","date","result","length","index","sub","sub0","rest","dayIndex","monthIndex","yearIndex","dayStartIndex","monthStartIndex","yearStartIndex","day","month","year","fullYearDone","type","previous","current","number","fullYearMode","DateFormatter_1","TimeFormatter","timePattern","timeFormat","time","timeFormatOptions","secondIndex","minuteIndex","hourIndex","secondStartIndex","minuteStartIndex","hourStartIndex","second","minute","hour","TimeFormatter_1","PhoneFormatter","formatter","phoneNumber","validated","i","iMax","PhoneFormatter_1","CreditCardDetector","block","total","prev","strictMode","blocks","re","key","matchedBlocks","CreditCardDetector_1","Util","delimiters","matchedDelimiter","prevPos","oldValue","newValue","oldRawValue","newRawValue","lengthOffset","delimiterRE","letter","str","prefixLength","prevResult","noImmediatePrefix","prevValue","blocksLength","delimiterLazyShow","multipleDelimiters","currentDelimiter","el","val","appendix","len","selection","element","position","doc","range","parent","activeElement","lastInputValue","currentInputValue","Util_1","DefaultProperties","target","opts","DefaultProperties_1","Cleave","hasMultipleElements","pps","inputFormatter","event","charCode","postDelimiter","inputValue","textToCopy","postDelimiterAfter","creditCardInfo","endPos","phoneRegionCode","rawValue","Cleave_1","submittable","blocking","PdsTextInput","PdsFormElement","form","submitElement","clickEvent","blockingElements","maskType","changedProperties","html","nothing","ifDefined","__decorateClass","property","query","customElement","styles"],"mappings":"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","x_google_ignoreList":[0]}