{"version":3,"file":"sebgroup-green-angular-src-v-angular-account-number.mjs","sources":["../../../../libs/angular/src/v-angular/account-number/account-number.pipe.ts","../../../../libs/angular/src/v-angular/account-number/account-number.module.ts","../../../../libs/angular/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core'\n\nexport const enum SchemaType {\n  IBAN = 'iban',\n  BBAN = 'bban',\n}\n\nexport type AccountNumberSchema = 'iban' | 'bban'\n\nconst evaluateValueSchema = (value: string): AccountNumberSchema => {\n  const countryCodePattern = /^[a-zA-Z]{2}/\n  const hasCountryCode = countryCodePattern.test(value)\n  return hasCountryCode ? SchemaType.IBAN : SchemaType.BBAN\n}\n\nexport const bbanPattern = /(\\d{4})(\\d{2})(\\d{3})/\nexport const ibanPattern = /[a-zA-Z0-9]{1,4}/g\n\n/**\n * Formats account number according to bban or iban standard, and adds non-breakable whitespace (\\u00A0) between number groups.\n *\n * Example:\n * BBAN format: 'XXXX XX XXX <XXXX>'\n * IBAN format: 'SEXX XXXX XXXX XXXX <XXXX>'\n *\n * @param value - account number value to format.\n * @param schema - accepts either 'iban' or 'bban'. If undefined, schema will be evaluated to 'iban' if value starts with 2 letters.\n * @returns - formatted value, or original value if schema could not be determined\n */\nexport const formatAccountNumber = (\n  value: string,\n  schema?: AccountNumberSchema,\n): string => {\n  // evalue value schema to 'iban' or 'bban'\n  if (!schema) schema = evaluateValueSchema(value)\n\n  // if schema 'iban', return formatted value\n  if (schema === SchemaType.BBAN)\n    return value.replace(bbanPattern, '$1\\u00A0$2\\u00A0$3\\u00A0')\n\n  // if schema 'iban', remove all white-spaces and other separators from the value\n  const trimmedValue = value.replace(/\\s|-/g, '')\n  if (schema === SchemaType.IBAN)\n    return trimmedValue.replace(ibanPattern, (match: string, offset: number) =>\n      offset ? `\\u00A0${match}` : match,\n    )\n\n  // return untouched value if unable to determine schema\n  return value\n}\n\n/**\n * Pipe for formatting account number according to bban or iban standard, and adds non-breakable whitespace (\\u00A0) between number groups.\n *\n * BBAN format: 'XXXX XX XXX <XXXX>'\n * IBAN format: 'SEXX XXXX XXXX XXXX <XXXX>'\n */\n@Pipe({\n  name: 'accountNumber',\n  standalone: true,\n})\nexport class AccountNumberPipe implements PipeTransform {\n  transform = (value: string, schema?: AccountNumberSchema): string =>\n    formatAccountNumber(value, schema)\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { AccountNumberPipe } from './account-number.pipe'\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule, AccountNumberPipe],\n  exports: [AccountNumberPipe],\n})\nexport class NggvAccountNumberPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AASA,MAAM,mBAAmB,GAAG,CAAC,KAAa,KAAyB;IACjE,MAAM,kBAAkB,GAAG,cAAc;IACzC,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,IAAA,OAAO,cAAc,GAAE,MAAA;AACzB,CAAC;AAEM,MAAM,WAAW,GAAG;AACpB,MAAM,WAAW,GAAG;AAE3B;;;;;;;;;;AAUG;MACU,mBAAmB,GAAG,CACjC,KAAa,EACb,MAA4B,KAClB;;AAEV,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC;;AAGhD,IAAA,IAAI,MAAM,KAAA,MAAA;QACR,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,0BAA0B,CAAC;;IAG/D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AAC/C,IAAA,IAAI,MAAM,KAAA,MAAA;QACR,OAAO,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAa,EAAE,MAAc,KACrE,MAAM,GAAG,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,GAAG,KAAK,CAClC;;AAGH,IAAA,OAAO,KAAK;AACd;AAEA;;;;;AAKG;MAKU,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;AAKE,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAa,EAAE,MAA4B,KACtD,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC;AACrC,IAAA;+GAHY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MClDY,2BAA2B,CAAA;+GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,OAAA,EAAA,CAH5B,YAAY,EAAE,iBAAiB,aAC/B,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAH5B,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;oBAC1C,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA;;;ACTD;;AAEG;;;;"}