{"version":3,"file":"taiga-ui-addon-commerce-utils.mjs","sources":["../../../projects/addon-commerce/utils/get-currency-symbol.ts","../../../projects/addon-commerce/utils/format-currency.ts","../../../projects/addon-commerce/utils/get-code-by-currency.ts","../../../projects/addon-commerce/utils/get-currency-by-code.ts","../../../projects/addon-commerce/utils/get-payment-system.ts","../../../projects/addon-commerce/utils/is-card-length-valid.ts","../../../projects/addon-commerce/utils/is-card-number-valid.ts","../../../projects/addon-commerce/utils/is-expire-valid.ts","../../../projects/addon-commerce/utils/taiga-ui-addon-commerce-utils.ts"],"sourcesContent":["import {\n    TuiCurrency,\n    TuiCurrencyCode,\n    type TuiCurrencyVariants,\n} from '@taiga-ui/addon-commerce/types';\n\nexport function tuiGetCurrencySymbol(currency: TuiCurrencyVariants): string | null {\n    switch (currency) {\n        case TuiCurrency.ArmenianDram:\n        case TuiCurrencyCode.ArmenianDram:\n            return '֏';\n        case TuiCurrency.AustralianDollar:\n        case TuiCurrencyCode.AustralianDollar:\n            return 'A$';\n        case TuiCurrency.AzerbaijaniManat:\n        case TuiCurrencyCode.AzerbaijaniManat:\n            return '₼';\n        case TuiCurrency.BahrainiDinar:\n        case TuiCurrencyCode.BahrainiDinar:\n            return 'BD';\n        case TuiCurrency.Baht:\n        case TuiCurrencyCode.Baht:\n            return '฿';\n        case TuiCurrency.BelarusianRuble:\n        case TuiCurrencyCode.BelarusianRuble:\n            return 'Br';\n        case TuiCurrency.BrazilianReal:\n        case TuiCurrencyCode.BrazilianReal:\n            return 'R$';\n        case TuiCurrency.CanadianDollar:\n        case TuiCurrencyCode.CanadianDollar:\n            return 'C$';\n        case TuiCurrency.CzechKoruna:\n        case TuiCurrencyCode.CzechKoruna:\n            return 'Kč';\n        case TuiCurrency.Dirham:\n        case TuiCurrencyCode.Dirham:\n            return 'Dh';\n        case TuiCurrency.Dollar:\n        case TuiCurrency.MexicanPeso:\n        case TuiCurrencyCode.Dollar:\n        case TuiCurrencyCode.MexicanPeso:\n            return '$';\n        case TuiCurrency.EastCaribbeanDollar:\n        case TuiCurrencyCode.EastCaribbeanDollar:\n            return 'EC$';\n        case TuiCurrency.Euro:\n        case TuiCurrencyCode.Euro:\n            return '€';\n        case TuiCurrency.Forint:\n        case TuiCurrencyCode.Forint:\n            return 'Ft';\n        case TuiCurrency.GeorgianLari:\n        case TuiCurrencyCode.GeorgianLari:\n            return '₾';\n        case TuiCurrency.HongKongDollar:\n        case TuiCurrencyCode.HongKongDollar:\n            return 'HK$';\n        case TuiCurrency.Hryvnia:\n        case TuiCurrencyCode.Hryvnia:\n            return '₴';\n        case TuiCurrency.IndianRupee:\n        case TuiCurrencyCode.IndianRupee:\n            return '₹';\n        case TuiCurrency.IndonesianRupiah:\n        case TuiCurrencyCode.IndonesianRupiah:\n            return 'Rp';\n        case TuiCurrency.IranianRial:\n        case TuiCurrencyCode.IranianRial:\n            return 'IR';\n        case TuiCurrency.IsraeliShekel:\n        case TuiCurrencyCode.IsraeliShekel:\n            return '₪';\n        case TuiCurrency.KyrgyzstanSom:\n        case TuiCurrencyCode.KyrgyzstanSom:\n            return 'c';\n        case TuiCurrency.MalaysianRinggit:\n        case TuiCurrencyCode.MalaysianRinggit:\n            return 'RM';\n        case TuiCurrency.MoldovanLeu:\n        case TuiCurrencyCode.MoldovanLeu:\n            return 'L';\n        case TuiCurrency.MongolianTugrik:\n        case TuiCurrencyCode.MongolianTugrik:\n            return '₮';\n        case TuiCurrency.NewTurkmenManat:\n        case TuiCurrencyCode.NewTurkmenManat:\n            return 'TMT';\n        case TuiCurrency.PolandZloty:\n        case TuiCurrencyCode.PolandZloty:\n            return 'zł';\n        case TuiCurrency.Pound:\n        case TuiCurrencyCode.Pound:\n            return '£';\n        case TuiCurrency.Ruble:\n        case TuiCurrencyCode.Ruble:\n            return '₽';\n        case TuiCurrency.SaudiRiyal:\n        case TuiCurrencyCode.SaudiRiyal:\n            return 'SR';\n        case TuiCurrency.SerbianDinar:\n        case TuiCurrencyCode.SerbianDinar:\n            return 'DIN';\n        case TuiCurrency.SingaporeDollar:\n        case TuiCurrencyCode.SingaporeDollar:\n            return 'S$';\n        case TuiCurrency.SouthAfricanRand:\n        case TuiCurrencyCode.SouthAfricanRand:\n            return 'R';\n        case TuiCurrency.SriLankanRupee:\n        case TuiCurrencyCode.SriLankanRupee:\n            return 'Rs.';\n        case TuiCurrency.SwissFranc:\n        case TuiCurrencyCode.SwissFranc:\n            return '₣';\n        case TuiCurrency.TajikistaniSomoni:\n        case TuiCurrencyCode.TajikistaniSomoni:\n            return 'SM';\n        case TuiCurrency.Tenge:\n        case TuiCurrencyCode.Tenge:\n            return '₸';\n        case TuiCurrency.TurkishLira:\n        case TuiCurrencyCode.TurkishLira:\n            return '₺';\n        case TuiCurrency.UzbekSum:\n        case TuiCurrencyCode.UzbekSum:\n            return \"So'm\";\n        case TuiCurrency.VietnameseDong:\n        case TuiCurrencyCode.VietnameseDong:\n            return 'đ';\n        case TuiCurrency.Won:\n        case TuiCurrencyCode.Won:\n            return '₩';\n        case TuiCurrency.Yen:\n        case TuiCurrencyCode.Yen:\n            return '¥';\n        case TuiCurrency.YuanRenminbi:\n        case TuiCurrencyCode.YuanRenminbi:\n            return 'CN¥';\n        default:\n            return null;\n    }\n}\n","import {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {tuiGetCurrencySymbol} from './get-currency-symbol';\n\nfunction stringifyCurrency(currency: TuiCurrencyVariants): string {\n    return currency === null || tuiIsString(currency)\n        ? currency || ''\n        : String(currency).padStart(3, '0');\n}\n\nexport function tuiFormatCurrency(currency: TuiCurrencyVariants): string {\n    const stringifiedCurrency = stringifyCurrency(currency);\n\n    return tuiGetCurrencySymbol(stringifiedCurrency) || stringifiedCurrency;\n}\n","// cspell:disable\nimport {TuiCurrency, TuiCurrencyCode} from '@taiga-ui/addon-commerce/types';\n\nexport const TUI_CODE_DICTIONARY: Record<TuiCurrency, TuiCurrencyCode> = {\n    [TuiCurrency.Ruble]: TuiCurrencyCode.Ruble,\n    [TuiCurrency.Dollar]: TuiCurrencyCode.Dollar,\n    [TuiCurrency.MexicanPeso]: TuiCurrencyCode.MexicanPeso,\n    [TuiCurrency.MoldovanLeu]: TuiCurrencyCode.MoldovanLeu,\n    [TuiCurrency.PolandZloty]: TuiCurrencyCode.PolandZloty,\n    [TuiCurrency.SingaporeDollar]: TuiCurrencyCode.SingaporeDollar,\n    [TuiCurrency.AustralianDollar]: TuiCurrencyCode.AustralianDollar,\n    [TuiCurrency.HongKongDollar]: TuiCurrencyCode.HongKongDollar,\n    [TuiCurrency.CanadianDollar]: TuiCurrencyCode.CanadianDollar,\n    [TuiCurrency.CzechKoruna]: TuiCurrencyCode.CzechKoruna,\n    [TuiCurrency.EastCaribbeanDollar]: TuiCurrencyCode.EastCaribbeanDollar,\n    [TuiCurrency.Euro]: TuiCurrencyCode.Euro,\n    [TuiCurrency.Forint]: TuiCurrencyCode.Forint,\n    [TuiCurrency.Pound]: TuiCurrencyCode.Pound,\n    [TuiCurrency.Baht]: TuiCurrencyCode.Baht,\n    [TuiCurrency.BahrainiDinar]: TuiCurrencyCode.BahrainiDinar,\n    [TuiCurrency.TurkishLira]: TuiCurrencyCode.TurkishLira,\n    [TuiCurrency.YuanRenminbi]: TuiCurrencyCode.YuanRenminbi,\n    [TuiCurrency.Yen]: TuiCurrencyCode.Yen,\n    [TuiCurrency.IsraeliShekel]: TuiCurrencyCode.IsraeliShekel,\n    [TuiCurrency.IndianRupee]: TuiCurrencyCode.IndianRupee,\n    [TuiCurrency.SwissFranc]: TuiCurrencyCode.SwissFranc,\n    [TuiCurrency.ArmenianDram]: TuiCurrencyCode.ArmenianDram,\n    [TuiCurrency.Won]: TuiCurrencyCode.Won,\n    [TuiCurrency.Tenge]: TuiCurrencyCode.Tenge,\n    [TuiCurrency.Hryvnia]: TuiCurrencyCode.Hryvnia,\n    [TuiCurrency.UzbekSum]: TuiCurrencyCode.UzbekSum,\n    [TuiCurrency.KyrgyzstanSom]: TuiCurrencyCode.KyrgyzstanSom,\n    [TuiCurrency.Dirham]: TuiCurrencyCode.Dirham,\n    [TuiCurrency.TajikistaniSomoni]: TuiCurrencyCode.TajikistaniSomoni,\n    [TuiCurrency.MalaysianRinggit]: TuiCurrencyCode.MalaysianRinggit,\n    [TuiCurrency.BelarusianRuble]: TuiCurrencyCode.BelarusianRuble,\n    [TuiCurrency.GeorgianLari]: TuiCurrencyCode.GeorgianLari,\n    [TuiCurrency.AzerbaijaniManat]: TuiCurrencyCode.AzerbaijaniManat,\n    [TuiCurrency.SriLankanRupee]: TuiCurrencyCode.SriLankanRupee,\n    [TuiCurrency.SerbianDinar]: TuiCurrencyCode.SerbianDinar,\n    [TuiCurrency.SaudiRiyal]: TuiCurrencyCode.SaudiRiyal,\n    [TuiCurrency.MongolianTugrik]: TuiCurrencyCode.MongolianTugrik,\n    [TuiCurrency.SouthAfricanRand]: TuiCurrencyCode.SouthAfricanRand,\n    [TuiCurrency.IranianRial]: TuiCurrencyCode.IranianRial,\n    [TuiCurrency.IndonesianRupiah]: TuiCurrencyCode.IndonesianRupiah,\n    [TuiCurrency.VietnameseDong]: TuiCurrencyCode.VietnameseDong,\n    [TuiCurrency.NewTurkmenManat]: TuiCurrencyCode.NewTurkmenManat,\n    [TuiCurrency.BrazilianReal]: TuiCurrencyCode.BrazilianReal,\n};\n\nexport function tuiGetCodeByCurrency(code: TuiCurrency): TuiCurrencyCode | null {\n    return TUI_CODE_DICTIONARY[code] ?? null;\n}\n","// cspell:disable\nimport {TuiCurrency, TuiCurrencyCode} from '@taiga-ui/addon-commerce/types';\n\nexport const TUI_CURRENCY_DICTIONARY: Record<TuiCurrencyCode, TuiCurrency> = {\n    [TuiCurrencyCode.Ruble]: TuiCurrency.Ruble,\n    [TuiCurrencyCode.Dollar]: TuiCurrency.Dollar,\n    [TuiCurrencyCode.MexicanPeso]: TuiCurrency.MexicanPeso,\n    [TuiCurrencyCode.MoldovanLeu]: TuiCurrency.MoldovanLeu,\n    [TuiCurrencyCode.PolandZloty]: TuiCurrency.PolandZloty,\n    [TuiCurrencyCode.SingaporeDollar]: TuiCurrency.SingaporeDollar,\n    [TuiCurrencyCode.AustralianDollar]: TuiCurrency.AustralianDollar,\n    [TuiCurrencyCode.HongKongDollar]: TuiCurrency.HongKongDollar,\n    [TuiCurrencyCode.CanadianDollar]: TuiCurrency.CanadianDollar,\n    [TuiCurrencyCode.CzechKoruna]: TuiCurrency.CzechKoruna,\n    [TuiCurrencyCode.EastCaribbeanDollar]: TuiCurrency.EastCaribbeanDollar,\n    [TuiCurrencyCode.Euro]: TuiCurrency.Euro,\n    [TuiCurrencyCode.Forint]: TuiCurrency.Forint,\n    [TuiCurrencyCode.Pound]: TuiCurrency.Pound,\n    [TuiCurrencyCode.Baht]: TuiCurrency.Baht,\n    [TuiCurrencyCode.BahrainiDinar]: TuiCurrency.BahrainiDinar,\n    [TuiCurrencyCode.TurkishLira]: TuiCurrency.TurkishLira,\n    [TuiCurrencyCode.YuanRenminbi]: TuiCurrency.YuanRenminbi,\n    [TuiCurrencyCode.Yen]: TuiCurrency.Yen,\n    [TuiCurrencyCode.IsraeliShekel]: TuiCurrency.IsraeliShekel,\n    [TuiCurrencyCode.IndianRupee]: TuiCurrency.IndianRupee,\n    [TuiCurrencyCode.SwissFranc]: TuiCurrency.SwissFranc,\n    [TuiCurrencyCode.ArmenianDram]: TuiCurrency.ArmenianDram,\n    [TuiCurrencyCode.Won]: TuiCurrency.Won,\n    [TuiCurrencyCode.Tenge]: TuiCurrency.Tenge,\n    [TuiCurrencyCode.Hryvnia]: TuiCurrency.Hryvnia,\n    [TuiCurrencyCode.UzbekSum]: TuiCurrency.UzbekSum,\n    [TuiCurrencyCode.KyrgyzstanSom]: TuiCurrency.KyrgyzstanSom,\n    [TuiCurrencyCode.Dirham]: TuiCurrency.Dirham,\n    [TuiCurrencyCode.TajikistaniSomoni]: TuiCurrency.TajikistaniSomoni,\n    [TuiCurrencyCode.MalaysianRinggit]: TuiCurrency.MalaysianRinggit,\n    [TuiCurrencyCode.BelarusianRuble]: TuiCurrency.BelarusianRuble,\n    [TuiCurrencyCode.GeorgianLari]: TuiCurrency.GeorgianLari,\n    [TuiCurrencyCode.AzerbaijaniManat]: TuiCurrency.AzerbaijaniManat,\n    [TuiCurrencyCode.SriLankanRupee]: TuiCurrency.SriLankanRupee,\n    [TuiCurrencyCode.SerbianDinar]: TuiCurrency.SerbianDinar,\n    [TuiCurrencyCode.SaudiRiyal]: TuiCurrency.SaudiRiyal,\n    [TuiCurrencyCode.MongolianTugrik]: TuiCurrency.MongolianTugrik,\n    [TuiCurrencyCode.SouthAfricanRand]: TuiCurrency.SouthAfricanRand,\n    [TuiCurrencyCode.IranianRial]: TuiCurrency.IranianRial,\n    [TuiCurrencyCode.IndonesianRupiah]: TuiCurrency.IndonesianRupiah,\n    [TuiCurrencyCode.VietnameseDong]: TuiCurrency.VietnameseDong,\n    [TuiCurrencyCode.NewTurkmenManat]: TuiCurrency.NewTurkmenManat,\n    [TuiCurrencyCode.BrazilianReal]: TuiCurrency.BrazilianReal,\n};\n\nexport function tuiGetCurrencyByCode(currency: TuiCurrencyCode): TuiCurrency | null {\n    return TUI_CURRENCY_DICTIONARY[currency] ?? null;\n}\n","import {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\n\n// https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_(IIN)\nexport const TUI_BIN_TABLE: ReadonlyArray<\n    [paymentSystem: TuiPaymentSystem, start: number, end?: number]\n> = [\n    ['mir', 2200, 2204],\n    ['mastercard', 2221, 2720],\n    ['jcb', 3528, 3589],\n    ['amex', 34],\n    ['amex', 37],\n    ['dinersclub', 36],\n    ['electron', 4026],\n    ['electron', 4175],\n    ['electron', 4405],\n    ['electron', 4508],\n    ['electron', 4844],\n    ['electron', 4913],\n    ['electron', 4917],\n    ['visa', 4],\n    ['verve', 506099, 506198],\n    ['verve', 507865, 507964],\n    ['maestro', 5018],\n    ['maestro', 5020],\n    ['maestro', 5038],\n    ['maestro', 5090],\n    ['maestro', 5890],\n    ['maestro', 5893],\n    ['rupay', 508],\n    ['maestro', 50],\n    ['mastercard', 51, 55],\n    ['maestro', 56],\n    ['maestro', 58],\n    ['mastercard', 5],\n    ['maestro', 6000],\n    ['maestro', 6304],\n    ['maestro', 6759, 6763],\n    ['verve', 650002, 650027],\n    ['maestro', 676770],\n    ['maestro', 676774],\n    ['discover', 644, 649],\n    ['discover', 6011],\n    ['rupay', 60],\n    ['unionpay', 62],\n    ['discover', 65],\n    ['maestro', 6],\n    ['rupay', 81, 82],\n    ['uzcard', 8600],\n    ['humo', 9860],\n];\n\nexport function tuiGetPaymentSystem(\n    cardNumber?: string | null,\n    supported?: TuiPaymentSystem[],\n): TuiPaymentSystem | null {\n    if (!cardNumber) {\n        return null;\n    }\n\n    const row = TUI_BIN_TABLE.find(([paymentSystem, start, end = start]) => {\n        const cardNumberNumeric = Number.parseInt(\n            cardNumber.slice(0, String(start).length),\n            10,\n        );\n\n        const match = cardNumberNumeric >= start && cardNumberNumeric <= end;\n\n        return match && (!supported?.length || supported.includes(paymentSystem));\n    });\n\n    return row?.[0] ?? null;\n}\n\nexport function tuiIsMaestro(three: number, two: number, one: number): boolean {\n    if (one === 6 || two === 50 || (two > 55 && two < 59)) {\n        return true;\n    }\n\n    return three < 500 ? false : three < 510;\n}\n\nexport function tuiIsMastercard(four: number, two: number, one: number): boolean {\n    if (one === 5) {\n        return true;\n    }\n\n    if (two < 10) {\n        return false;\n    }\n\n    if (two > 50 && two < 56) {\n        return true;\n    }\n\n    return four < 1000 ? false : four > 2220 && four < 2721;\n}\n\nexport function tuiIsMir(four: number): boolean {\n    return four > 2199 && four < 2205;\n}\n\nexport function tuiIsElectron(four: number): boolean {\n    switch (four) {\n        case 4026:\n        case 4175:\n        case 4405:\n        case 4508:\n        case 4844:\n        case 4913:\n        case 4917:\n            return true;\n        default:\n            return false;\n    }\n}\n\nexport function tuiIsVisa(one: number): boolean {\n    return one === 4;\n}\n","import {tuiGetPaymentSystem} from './get-payment-system';\n\n/**\n * Validates card number length using payment system dictionary\n */\nexport function tuiIsCardLengthValid(cardNumber: string): boolean {\n    const {length} = cardNumber;\n    const paymentSystem = tuiGetPaymentSystem(cardNumber);\n\n    switch (paymentSystem) {\n        case 'electron':\n            return length === 16;\n        case 'maestro':\n            return length > 11 && length < 20;\n        case 'mastercard':\n        case 'mir':\n            return length > 15 && length < 20;\n        case 'visa':\n            return length > 12 && length < 20;\n        default:\n            return length > 8 && length < 20;\n    }\n}\n","import {TUI_NON_DIGITS_REGEXP} from '@taiga-ui/cdk/constants';\n\n/**\n * Validates card number using Luhn algorithm\n */\nexport function tuiIsCardNumberValid(value: number | string): boolean {\n    const cardNumber = String(value).replace(TUI_NON_DIGITS_REGEXP, '');\n    const {length} = cardNumber;\n\n    const arr = cardNumber.split('').map((char, index) => {\n        const digit = Number.parseInt(char, 10);\n\n        if ((index + length) % 2 === 0) {\n            const digitX2 = digit * 2;\n\n            return digitX2 > 9 ? digitX2 - 9 : digitX2;\n        }\n\n        return digit;\n    });\n\n    return !(arr.reduce((a, b) => a + b, 0) % 10);\n}\n","import {tuiClamp} from '@taiga-ui/cdk/utils/math';\n\nexport function tuiIsExpireValid(expire: string, today = new Date()): boolean {\n    const currentMonth = today.getMonth() + 1;\n    const currentYear = today.getFullYear() - 2000;\n    const expireMonth = tuiClamp(Number.parseInt(expire.slice(0, 2), 10), 1, 12);\n    const expireYear = tuiClamp(Number.parseInt(expire.slice(-2), 10), 0, 99);\n\n    return (\n        expireYear > currentYear ||\n        (currentYear === expireYear && expireMonth >= currentMonth)\n    );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}