{"version":3,"file":"kara-ui-alfa-components-amount.mjs","sources":["../../../libs/kara-ui/components/amount/helpers/amount.utils.ts","../../../libs/kara-ui/components/amount/amount.component.ts","../../../libs/kara-ui/components/amount/amount.component.html","../../../libs/kara-ui/components/amount/kara-ui-alfa-components-amount.ts"],"sourcesContent":["import { NARROW_SPACE } from 'kara-ui-alfa/constants';\n\nexport const AMOUNT_SEPARATOR = ',';\n\nexport function formatAmount(integer: string): string {\n  const number = Number.parseInt(integer, 10).toString();\n  const remainder = number.length % 3;\n  let result = number.charAt(0);\n\n  for (let i = 1; i < number.length; i++) {\n    if (i % 3 === remainder && number.length > 3) {\n      result += NARROW_SPACE;\n    }\n\n    result += number.charAt(i);\n  }\n\n  return result;\n}\n\nexport function getFormattedValue(enteredValue: string, precision: number): string {\n  const [integer, tail] = enteredValue.split(AMOUNT_SEPARATOR);\n  const formattedInteger = formatAmount(integer);\n\n  if (!enteredValue) {\n    return enteredValue;\n  }\n\n  if (precision && !tail && enteredValue.includes(AMOUNT_SEPARATOR)) {\n    return formattedInteger.concat(AMOUNT_SEPARATOR);\n  }\n\n  if (tail) {\n    return formattedInteger.concat(AMOUNT_SEPARATOR, tail.slice(0, precision));\n  }\n\n  return formattedInteger;\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n  OnChanges,\n  booleanAttribute,\n  input,\n  numberAttribute,\n} from '@angular/core';\n\nimport type { CurrencyCodes } from 'kara-ui-alfa/pipes';\nimport { KCurrencyPipe } from 'kara-ui-alfa/pipes';\nimport { formatAmount } from './helpers/amount.utils';\n\n@Component({\n  selector: 'k-amount',\n  templateUrl: './amount.component.html',\n  styleUrls: ['./amount.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [KCurrencyPipe],\n})\nexport class KAmountComponent implements OnChanges {\n  /** Amount of money to be formatted */\n  @Input({ transform: numberAttribute }) value!: number;\n\n  /** Currency of money as example `KZT` */\n  @Input() currency?: CurrencyCodes | string;\n\n  /**\n   * `always` — always shows pennies\n   * `default` — show pennies only when more than zero\n   * `dynamic` — show pennies only when more than zero and removed extra zero\n   * `never` — never shows pennies (do not show them without rounding)\n   */\n  @Input() decimal: 'default' | 'never' | 'dynamic' | 'always' = 'default';\n\n  /** How much number of digits after comma */\n  @Input({ transform: numberAttribute }) precision: 2 | 3 | 4 = 2;\n\n  /** Use the same color for all amount view */\n  @HostBinding('class.k-amount-inherit-color') @Input({ transform: booleanAttribute }) singleColor: boolean = false;\n  /** Currency of money as example `KZT` */\n  @Input({ transform: booleanAttribute }) colored: boolean = false;\n  /** Show '+' for positive numbers */\n  readonly showSign = input<boolean>();\n\n  public integer?: string;\n  public fractional?: string;\n\n  @HostBinding('class') get coloredData(): string | undefined {\n    if (!this.colored) {\n      return undefined;\n    }\n\n    return this.value > 0 ? 'k-colored-positive' : 'k-colored-negative';\n  }\n\n  ngOnChanges(): void {\n    if (Number.isFinite(this.value)) {\n      const [integer, fractional] = this.value.toString().split('.');\n\n      this.integer = formatAmount(integer);\n\n      if (this.decimal === 'default' && !fractional) {\n        this.fractional = undefined;\n      } else {\n        this.fractional = (fractional ?? '').slice(0, this.precision);\n        if (this.decimal !== 'dynamic') {\n          this.fractional = this.fractional?.padEnd(this.precision, '0');\n        }\n      }\n    }\n  }\n}\n","@if (showSign() && value > 0) {\n  <span class=\"k-amount-integer\">+</span>\n}\n<span class=\"k-amount-integer\">{{ integer }}</span>\n<span class=\"k-amount-fractional\">\n  @if (decimal !== 'never' && fractional) {\n    <span>,{{ fractional }}</span>\n  }\n  @if (currency) {\n    <span>&#8239;{{ currency | kCurrency }}</span>\n  }\n</span>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}