{"version":3,"file":"ngx-number-to-words.mjs","sources":["../../../projects/number-to-words/src/lib/pipes/number-to-words.pipe.ts","../../../projects/number-to-words/src/lib/ngx-number-to-words.module.ts","../../../projects/number-to-words/src/public-api.ts","../../../projects/number-to-words/src/ngx-number-to-words.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'numberToWords'\r\n})\r\nexport class NumberToWordsPipe implements PipeTransform {\r\n\r\n  private readonly smallNumbers: string[] = [\r\n    'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine',\r\n    'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'\r\n  ];\r\n\r\n  private readonly tensNumbers: string[] = [\r\n    '', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'\r\n  ];\r\n\r\n  private readonly largeNumbers: string[] = [\r\n    '', 'thousand', 'million', 'billion', 'trillion'\r\n  ];\r\n\r\n  transform(value: number): string {\r\n    if (typeof value !== 'number' || isNaN(value)) {\r\n      return 'Invalid number';\r\n    }\r\n\r\n    if (value === 0) {\r\n      return 'zero';\r\n    }\r\n\r\n    let words = '';\r\n    let unit = 0;\r\n\r\n    while (value > 0) {\r\n      if (value % 1000 !== 0) {\r\n        words = this.convertChunk(value % 1000) + (this.largeNumbers[unit] ? ' ' + this.largeNumbers[unit] : '') + ' ' + words;\r\n      }\r\n      value = Math.floor(value / 1000);\r\n      unit++;\r\n    }\r\n\r\n    return this.capitalizeFirstLetter(words.trim());\r\n  }\r\n\r\n  private convertChunk(chunk: number): string {\r\n    let result = '';\r\n\r\n    if (chunk >= 100) {\r\n      result += this.smallNumbers[Math.floor(chunk / 100)] + ' hundred ';\r\n      chunk %= 100;\r\n    }\r\n\r\n    if (chunk >= 20) {\r\n      result += this.tensNumbers[Math.floor(chunk / 10)] + ' ';\r\n      chunk %= 10;\r\n    }\r\n\r\n    if (chunk > 0) {\r\n      result += this.smallNumbers[chunk] + ' ';\r\n    }\r\n\r\n    return result.trim();\r\n  }\r\n\r\n  private capitalizeFirstLetter(text: string): string {\r\n    return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\r\n  }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NumberToWordsPipe } from './pipes/number-to-words.pipe';\r\n\r\n@NgModule({\r\n    declarations: [NumberToWordsPipe],\r\n    exports: [NumberToWordsPipe]\r\n})\r\nexport class NgxNumberToWordsPipe { }\r\n","/*\r\n * Public API Surface of number-to-words\r\n */\r\n\r\nexport * from './lib/ngx-number-to-words.module';\r\nexport * from './lib/pipes/number-to-words.pipe';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}