{"version":3,"sources":["../../src/formatters/phone.ts","../../src/formatters/currency.ts","../../src/formatters/cin.ts","../../src/formatters/iban.ts"],"names":["ARABIC_DIGITS","toArabicDigits"],"mappings":"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","file":"index.cjs","sourcesContent":["const ARABIC_DIGITS = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];\n\n/** Convert ASCII digits in a string to Arabic-Indic digits. */\nfunction toArabicDigits(input: string): string {\n  return input.replace(/\\d/g, (d) => ARABIC_DIGITS[Number(d)]);\n}\n\n/**\n * Formats a phone number in local Tunisian format.\n * Example: 22555111 → \"22 555 111\"\n */\nexport function formatPhone(phone: string): string {\n  const cleaned = extractLocalNumber(phone);\n  if (cleaned.length !== 8) return phone;\n\n  return `${cleaned.slice(0, 2)} ${cleaned.slice(2, 5)} ${cleaned.slice(5)}`;\n}\n\n/**\n * Formats a phone number in local Tunisian format using Arabic-Indic digits.\n * Example: 22555111 → \"٢٢ ٥٥٥ ١١١\"\n */\nexport function formatPhoneAr(phone: string): string {\n  const cleaned = extractLocalNumber(phone);\n  if (cleaned.length !== 8) return phone;\n\n  return toArabicDigits(`${cleaned.slice(0, 2)} ${cleaned.slice(2, 5)} ${cleaned.slice(5)}`);\n}\n\n/**\n * Formats a phone number in international format.\n * Example: 22555111 → \"+216 22 555 111\"\n */\nexport function formatPhoneIntl(phone: string): string {\n  const cleaned = extractLocalNumber(phone);\n  if (cleaned.length !== 8) return phone;\n\n  return `+216 ${cleaned.slice(0, 2)} ${cleaned.slice(2, 5)} ${cleaned.slice(5)}`;\n}\n\n/**\n * Formats a landline number in local Tunisian format.\n * Example: 71234567 → \"71 234 567\"\n */\nexport function formatLandline(phone: string): string {\n  const cleaned = extractLocalNumber(phone);\n  if (cleaned.length !== 8) return phone;\n\n  return `${cleaned.slice(0, 2)} ${cleaned.slice(2, 5)} ${cleaned.slice(5)}`;\n}\n\n/**\n * Formats a landline number in international format.\n * Example: 71234567 → \"+216 71 234 567\"\n */\nexport function formatLandlineIntl(phone: string): string {\n  const cleaned = extractLocalNumber(phone);\n  if (cleaned.length !== 8) return phone;\n\n  return `+216 ${cleaned.slice(0, 2)} ${cleaned.slice(2, 5)} ${cleaned.slice(5)}`;\n}\n\n/**\n * Extract the 8-digit local number from various formats\n */\nfunction extractLocalNumber(phone: string): string {\n  const cleaned = phone.replace(/[\\s-]/g, '');\n\n  if (cleaned.startsWith('+216')) {\n    return cleaned.slice(4);\n  } else if (cleaned.startsWith('00216')) {\n    return cleaned.slice(5);\n  }\n  return cleaned;\n}\n","const ARABIC_DIGITS = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];\n\n/** Convert ASCII digits in a string to Arabic-Indic digits. */\nfunction toArabicDigits(input: string): string {\n  return input.replace(/\\d/g, (d) => ARABIC_DIGITS[Number(d)]);\n}\n\n/**\n * Formats a number as Tunisian currency (TND).\n * - Uses space as thousands separator\n * - Uses comma as decimal separator\n * - Shows 3 decimal places (millimes)\n *\n * Example: 1250.5 → \"1 250,500 TND\"\n */\nexport function formatCurrency(amount: number): string {\n  if (typeof amount !== 'number' || isNaN(amount)) {\n    return '0,000 TND';\n  }\n\n  // Guard against non-finite values (Infinity, -Infinity) which would\n  // otherwise produce output like \"Infinity,undefined TND\".\n  if (!Number.isFinite(amount)) return '0,000 TND';\n\n  // Round to 3 decimal places (millimes)\n  const fixed = amount.toFixed(3);\n\n  // Split integer and decimal parts\n  const [intPart, decPart] = fixed.split('.');\n\n  // Add thousands separator (space)\n  const withSeparator = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n  return `${withSeparator},${decPart} TND`;\n}\n\n/**\n * Formats a number as Tunisian currency using Arabic-Indic digits.\n * - Uses space as thousands separator and Arabic comma (،) as decimal separator\n * - Shows 3 decimal places (millimes)\n * - Uses the Arabic \"د.ت\" (dinar tunisien) symbol\n *\n * Example: 1250.5 → \"١ ٢٥٠،٥٠٠ د.ت\"\n */\nexport function formatCurrencyAr(amount: number): string {\n  if (typeof amount !== 'number' || isNaN(amount)) {\n    return '٠،٠٠٠ د.ت';\n  }\n\n  if (!Number.isFinite(amount)) return '٠،٠٠٠ د.ت';\n\n  // Round to 3 decimal places (millimes)\n  const fixed = amount.toFixed(3);\n\n  // Split integer and decimal parts\n  const [intPart, decPart] = fixed.split('.');\n\n  // Add thousands separator (space)\n  const withSeparator = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n  const arInt = toArabicDigits(withSeparator);\n  const arDec = toArabicDigits(decPart);\n\n  return `${arInt}،${arDec} د.ت`;\n}\n","/**\n * Formats a CIN by ensuring it's 8 digits with leading zeros.\n * Example: \"4555666\" → \"04555666\"\n */\nexport function formatCIN(cin: string): string {\n  // Remove non-digits\n  const digits = cin.replace(/\\D/g, '');\n\n  // Pad to 8 digits\n  return digits.padStart(8, '0').slice(-8);\n}\n","/**\n * Formats a Tunisian IBAN for display.\n *\n * @param iban - The IBAN string to format\n * @returns Formatted IBAN in groups of 4, or the original string if invalid length\n *\n * @example\n * formatIBAN('TN5910006035183598478831')\n * // Returns: 'TN59 1000 6035 1835 9847 8831'\n */\nexport function formatIBAN(iban: string): string {\n  if (typeof iban !== 'string') return '';\n\n  // Remove existing spaces and convert to uppercase\n  const cleaned = iban.replace(/\\s/g, '').toUpperCase();\n\n  // Format in groups of 4 characters\n  return cleaned.match(/.{1,4}/g)?.join(' ') || cleaned;\n}\n"]}