{"version":3,"file":"sempli-website-lib.mjs","sources":["../../../projects/sempli-website-lib/src/lib/components/simulator-wrapper/models/simulator.model.ts","../../../projects/sempli-website-lib/src/lib/components/simulator-wrapper/services/simulators.service.ts","../../../projects/sempli-website-lib/src/lib/components/simulator-wrapper/simulator-wrapper.component.ts","../../../projects/sempli-website-lib/src/lib/components/simulator-wrapper/simulator-wrapper.component.html","../../../projects/sempli-website-lib/src/lib/components/risk-tooltip/risk-tooltip.component.ts","../../../projects/sempli-website-lib/src/lib/components/risk-tooltip/risk-tooltip.component.html","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/shared/fixed-purpose-loan-calc/fixed-purpose-loan-calc.component.ts","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/shared/fixed-purpose-loan-calc/fixed-purpose-loan-calc.component.html","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/shared/roi-result/roi-result.component.ts","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/shared/roi-result/roi-result.component.html","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/shared/roi-description/roi-description.component.ts","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/shared/roi-description/roi-description.component.html","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/inventory/inventory.component.ts","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/inventory/inventory.component.html","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/equipment/equipment.component.ts","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/equipment/equipment.component.html","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/marketing/marketing.component.ts","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/marketing/marketing.component.html","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/human-talent/human-talent.component.ts","../../../projects/sempli-website-lib/src/lib/components/roi-simulator/human-talent/human-talent.component.html","../../../projects/sempli-website-lib/src/lib/sempli-website-lib.module.ts","../../../projects/sempli-website-lib/src/public-api.ts","../../../projects/sempli-website-lib/src/sempli-website-lib.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface SimulatorInteractionEvent {\n  action: 'amount_change' | 'term_change' | 'credit_line_change' | 'calculation_run';\n  amount: number;\n  term?: string;\n  lineOfCredit?: string;\n  result?: ICreditSimulatorResult;\n}\n\nexport interface RepaymentScheduleItem {\n  installmentNumber: number;\n  installmentInterestAmount: number;\n  installmentPrincipalAmount: number;\n  installmentAmount: number;\n  principalBalance: number;\n}\n\nexport interface ICreditSimulatorResult {\n  interestRate: number;\n  interestRateString: string;\n  term?: number;\n  numberOfInstallments?: string;\n  installmentAmount: number;\n  totalCreditCost: number;\n  principal?: number;\n  interestAmount?: number;\n  repaymentSchedule?: RepaymentScheduleItem[];\n}\n\nexport interface ISempliLibConfig {\n  serverUrl?: string;\n  minLoanAmount?: number;\n  maxLoanAmount?: number;\n  flexiMinLoanAmount?: number;\n  flexiMaxLoanAmount?: number;\n  vehicleMinLoanAmount?: number;\n  vehicleMaxLoanAmount?: number;\n  creditLineLabels?: Record<string, string>;\n  creditLinePurposes?: Record<string, { value: string; label: string }[]>;\n  defaultCreditLines?: CreditLineConfig[];\n}\n\nexport const SEMPLI_LIB_CONFIG = new InjectionToken<ISempliLibConfig>('SEMPLI_LIB_CONFIG');\n\nexport interface CreditLineConfig {\n  creditLineName: string;\n  label: string;\n  minLoanAmount: number;\n  maxLoanAmount: number;\n  minLoanTerm: number;\n  maxLoanTerm: number;\n  rateFrom: number;\n  rateUpTo?: number;\n  currentIbrRate?: number;\n  purposes?: { value: string; label: string }[];\n}\n\nexport enum CreditLineName {\n  FIXED_LOAN_TERM_IBR = 'FIXED_LOAN_TERM_IBR',\n  FIXED_LOAN_TERM_CURRENT_CLIENT_IBR = 'FIXED_LOAN_TERM_CURRENT_CLIENT_IBR',\n  FLEXI_LOAN = 'FLEXI_LOAN',\n  VEHICLE_LOAN = 'VEHICLE_LOAN'\n}\n\nexport { CreditLineName as CreditLineNameEnum };\n\nexport enum InitialLine {\n  LIGHT_VEHICLES = 'LIGHT_VEHICLES',\n  HEAVY_VEHICLES = 'HEAVY_VEHICLES',\n  WORKING_CAPITAL = 'WORKING_CAPITAL',\n  EXPANSION = 'EXPANSION',\n  OPERATING_ASSETS = 'OPERATING_ASSETS',\n  SUBSTITUTION_OF_LIABILITIES = 'SUBSTITUTION_OF_LIABILITIES',\n  THIRD_PARTY_PAYMENTS = 'THIRD_PARTY_PAYMENTS',\n  IMMEDIATE_LIQUIDITY = 'IMMEDIATE_LIQUIDITY',\n  COMMERCIAL_VEHICLES = 'COMMERCIAL_VEHICLES'\n}\n\nexport { InitialLine as InitialLineEnum };\n\n\n\n\n\n","import { Injectable, inject } from '@angular/core';\nimport { ICreditSimulatorResult, RepaymentScheduleItem, SEMPLI_LIB_CONFIG } from '../models/simulator.model';\n\nexport const CURRENT_IBR_RATE_DEFAULT = 8.00;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SimulatorsService {\n  minimumLoanAmount: number;\n  maximumLoanAmount: number;\n\n  private libConfig = inject(SEMPLI_LIB_CONFIG, { optional: true });\n\n  constructor() {\n    this.minimumLoanAmount = this.libConfig?.minLoanAmount ?? 20000000;\n    this.maximumLoanAmount = this.libConfig?.maxLoanAmount ?? 300000000;\n  }\n\n  getIbrCreditSimulation(\n      spreadFrom: number,\n      term: string | number,\n      amount: number,\n      currentIbrRate: number = CURRENT_IBR_RATE_DEFAULT\n  ): ICreditSimulatorResult {\n    const nominalAnnual = (currentIbrRate ?? CURRENT_IBR_RATE_DEFAULT) + (spreadFrom ?? 0);\n    const monthlyRate = (nominalAnnual / 100) / 12;\n    return this.getCreditSimulation(monthlyRate, term.toString(), amount);\n  }\n\n  calculateIbrInstallmentAmount(\n      amount: number,\n      term: number,\n      spreadFrom: number,\n      currentIbrRate: number = CURRENT_IBR_RATE_DEFAULT\n  ): number {\n    const nominalAnnual = (currentIbrRate ?? CURRENT_IBR_RATE_DEFAULT) + (spreadFrom ?? 0);\n    const i = +((nominalAnnual / 100) / 12).toFixed(5);\n    const pow = Math.pow(1 + i, term);\n    const installment = amount * ((i * pow) / (pow - 1));\n    return Math.floor(installment);\n  }\n\n  setAmountWithinLimits(amount: number, minAmount?: number, maxAmount?: number): any {\n    let amountChanged = false;\n    let newAmount = amount;\n    let message: string;\n    const minLimit = minAmount ?? this.minimumLoanAmount;\n    const maxLimit = maxAmount ?? this.maximumLoanAmount;\n\n    if (amount < minLimit) {\n      newAmount = minLimit;\n      amountChanged = true;\n      message = `Mínimo $${minLimit / 1000000} millones`;\n    } else if (amount > maxLimit) {\n      newAmount = maxLimit;\n      amountChanged = true;\n      message = `Máximo $${maxLimit / 1000000} millones`;\n    }\n    return { newAmount, amountChanged, message };\n  }\n\n  private creditTermsList = [\n    { value: 1, label: '1 mes' },\n    { value: 2, label: '2 meses' },\n    { value: 3, label: '3 meses' },\n    { value: 6, label: '6 meses' },\n    { value: 12, label: '12 meses' },\n    { value: 18, label: '18 meses' },\n    { value: 24, label: '24 meses' },\n    { value: 36, label: '36 meses' },\n    { value: 48, label: '48 meses' },\n    { value: 60, label: '60 meses' }\n  ];\n\n  private riskLevelsList = [\n    { value: 1, label: '1', baseInterestRate: 1.6 },\n    { value: 2, label: '2', baseInterestRate: 1.83 },\n    { value: 3, label: '3', baseInterestRate: 2.05 },\n    { value: 4, label: '4', baseInterestRate: 2.28 },\n    { value: 5, label: '5', baseInterestRate: 2.5 }\n  ];\n\n  getCreditTermsByPurpose(purpose: string): any[] {\n    const termsMap: Record<string, number[]> = {\n      INVENTORY: [6, 12, 18, 24, 36],\n      ASSETS: [6, 12, 18, 24, 36],\n      MARKETING: [6, 12, 18, 24, 36],\n      HUMAN_TALENT: [6, 12, 18, 24, 36]\n    };\n    const keys = termsMap[purpose] || [6, 12, 18, 24, 36];\n    return keys.map((key) =>\n      this.creditTermsList.find((term) => term.value === key) || { value: key, label: `${key} meses` }\n    );\n  }\n\n  getAvailableRiskLevels(): any[] {\n    return this.riskLevelsList;\n  }\n\n  getCreditSimulation(\n      monthlyRateOrRisk: number,\n      term: string,\n      amount: number\n  ): ICreditSimulatorResult {\n    let monthlyRate = monthlyRateOrRisk;\n    if (monthlyRateOrRisk >= 1 && monthlyRateOrRisk <= 5) {\n      const riskObj = this.riskLevelsList.find((r) => r.value === monthlyRateOrRisk);\n      const baseRatePercent = riskObj ? riskObj.baseInterestRate : 2.05;\n      monthlyRate = baseRatePercent / 100;\n    } else if (monthlyRateOrRisk > 1) {\n      monthlyRate = monthlyRateOrRisk / 100;\n    }\n    const n = parseInt(term, 10);\n    const i = +monthlyRate.toFixed(5);\n    const installmentValue =\n      i === 0\n        ? amount / n\n        : amount * ((i * Math.pow(1 + i, n)) / (Math.pow(1 + i, n) - 1));\n    const totalCreditCost = Math.round(installmentValue * n);\n    return {\n      interestRate: i,\n      interestRateString: (i * 100).toFixed(2) + '%',\n      term: n,\n      numberOfInstallments: n + ' meses',\n      installmentAmount: Math.round(installmentValue),\n      totalCreditCost,\n      principal: amount,\n      interestAmount: totalCreditCost - amount\n    };\n  }\n\n  resetCreditSimulator(): ICreditSimulatorResult {\n    return {\n      interestRate: 0,\n      interestRateString: '-',\n      term: 0,\n      numberOfInstallments: '',\n      installmentAmount: 0,\n      totalCreditCost: 0,\n      principal: 0,\n      interestAmount: 0\n    };\n  }\n\n  buildRepaymentSchedule(\n      amount: number,\n      term: number,\n      interestRate: number,\n      installmentAmount: number\n  ): RepaymentScheduleItem[] {\n    const repaymentSchedule: RepaymentScheduleItem[] = [];\n    let principalBalance = amount;\n    for (let j = 0; j < term; j++) {\n      const installmentInterestAmount = Math.round(\n        principalBalance * interestRate\n      );\n      const installmentPrincipalAmount =\n        installmentAmount - installmentInterestAmount;\n\n      repaymentSchedule.push({\n        installmentNumber: j + 1,\n        installmentInterestAmount,\n        installmentPrincipalAmount,\n        installmentAmount,\n        principalBalance\n      });\n\n      principalBalance -= installmentPrincipalAmount;\n    }\n    return repaymentSchedule;\n  }\n\n\n  getFlexiRate(): number {\n    return 0.0175; // 1.75% MV default\n  }\n\n  getFlexiCreditSimulation(\n      term: string,\n      amount: number,\n      rate: number = 0.0175\n  ): ICreditSimulatorResult {\n    const n = parseInt(term, 10);\n    const i = rate;\n    const gracePeriod = n === 3 ? 2 : (n === 2 ? 1 : 0);\n    const repaymentSchedule: RepaymentScheduleItem[] = [];\n    let principalBalance = amount;\n    let totalInterest = 0;\n\n    for (let j = 0; j < n; j++) {\n      const isGrace = j < gracePeriod;\n      const interest = Math.round(principalBalance * i);\n      const principal = isGrace ? 0 : amount;\n      const total = principal + interest;\n      totalInterest += interest;\n\n      repaymentSchedule.push({\n        installmentNumber: j + 1,\n        installmentInterestAmount: interest,\n        installmentPrincipalAmount: principal,\n        installmentAmount: total,\n        principalBalance\n      });\n\n      principalBalance -= principal;\n    }\n\n    const installmentAmount = Math.round(amount * i);\n\n    return {\n      interestRate: i,\n      interestRateString: (i * 100).toFixed(2) + '%',\n      term: n,\n      numberOfInstallments: n + ' meses',\n      installmentAmount,\n      totalCreditCost: amount + totalInterest,\n      principal: amount,\n      interestAmount: totalInterest,\n      repaymentSchedule\n    };\n  }\n}\n","import {\n  Component,\n  OnInit,\n  Renderer2,\n  ElementRef,\n  inject,\n  viewChild,\n  ChangeDetectionStrategy,\n  input,\n  output,\n  effect\n} from '@angular/core';\nimport { SimulatorsService } from './services/simulators.service';\nimport {\n  CreditLineConfig,\n  CreditLineName,\n  ICreditSimulatorResult,\n  InitialLine,\n  SEMPLI_LIB_CONFIG,\n  SimulatorInteractionEvent\n} from './models/simulator.model';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'app-simulator-wrapper',\n  templateUrl: './simulator-wrapper.component.html',\n  styleUrls: ['./simulator-wrapper.component.scss'],\n  standalone: false\n})\nexport class SimulatorWrapperComponent implements OnInit {\n  readonly creditLinesConfig = input<CreditLineConfig[]>([]);\n  readonly initialAmount = input<number>();\n  readonly initialLineOfCredit = input<string>();\n  readonly initialTerm = input<string>();\n  readonly registerBaseUrl = input<string>();\n  readonly transparentBackground = input<boolean>(false);\n\n  readonly applicationRequested = output<ICreditSimulatorResult>();\n  readonly simulatorInteracted = output<SimulatorInteractionEvent>();\n\n  readonly amountInputWrapper = viewChild<ElementRef>('amountInputWrapper');\n  linesOfCredit: any[] = [];\n  creditTerms: any[] = [];\n  repaymentSchedule: any[] = [];\n  repaymentScheduleCopy: any[] = [];\n  scheduleTotals: {\n    principal?: number;\n    interestAmount?: number;\n    totalCreditCost?: number;\n  } = {};\n  calculatorResult: ICreditSimulatorResult;\n  amount: number;\n  lineOfCredit: string;\n  term: string;\n  prepaymentInstallment: number;\n  prepaymentSavings: number;\n  registerUrl: string;\n  showResults = false;\n  debtPrepayed = false;\n  amountErrorMessage: string;\n\n  private simulatorsService = inject(SimulatorsService);\n  private renderer = inject(Renderer2);\n  private libConfig = inject(SEMPLI_LIB_CONFIG, { optional: true });\n\n  constructor() {\n    effect(() => {\n      const config = this.creditLinesConfig();\n      if (config && config.length > 0) {\n        this.initLinesOfCredit();\n        if (this.lineOfCredit) {\n          this.updateCreditTerms();\n        }\n      }\n    });\n  }\n\n  ngOnInit() {\n    this.initLinesOfCredit();\n    this.lineOfCredit = '';\n    this.resetCalculatorResults();\n\n    let initialTermToSet = '';\n\n    const initialLine = this.initialLineOfCredit();\n    const initialAmt = this.initialAmount();\n    const initialTrm = this.initialTerm();\n\n    if (initialLine) {\n      const lineOfCreditObj = this.linesOfCredit.find(\n        (opt) =>\n          opt.label === decodeURIComponent(initialLine) ||\n          opt.value === initialLine ||\n          (opt.creditLine === CreditLineName.VEHICLE_LOAN &&\n            (initialLine === InitialLine.LIGHT_VEHICLES ||\n              initialLine === InitialLine.HEAVY_VEHICLES ||\n              initialLine === CreditLineName.VEHICLE_LOAN))\n      );\n      if (lineOfCreditObj) {\n        this.lineOfCredit = lineOfCreditObj.value;\n      }\n    }\n    if (initialAmt) {\n      this.amount = Number(initialAmt);\n    }\n    if (initialTrm) {\n      initialTermToSet = String(initialTrm);\n    }\n\n    if (this.lineOfCredit && this.amount && initialTermToSet) {\n      this.updateCreditTerms();\n      if (\n        this.creditTerms &&\n        this.creditTerms.some(\n          (element) => element.value === parseInt(initialTermToSet, 10)\n        )\n      ) {\n        this.term = initialTermToSet;\n        this.runCalculator();\n      }\n    }\n  }\n\n  private initLinesOfCredit() {\n    let configList = this.creditLinesConfig();\n    if (!configList || configList.length === 0) {\n      configList = this.getDefaultCreditLinesConfig();\n    }\n\n    const allLines: any[] = [];\n    configList.forEach((config) => {\n      const termsKeys: number[] = [];\n      const minTerm = config.minLoanTerm || 1;\n      const maxTerm = config.maxLoanTerm || 60;\n\n      if (config.creditLineName === CreditLineName.FLEXI_LOAN) {\n        for (let i = minTerm; i <= maxTerm; i++) {\n          termsKeys.push(i);\n        }\n      } else {\n        for (let i = minTerm; i <= maxTerm; i += i >= 36 ? 12 : 6) {\n          termsKeys.push(i);\n        }\n      }\n\n      const creditTerms = termsKeys.map((termVal) => ({\n        value: termVal,\n        label: termVal === 1 ? '1 mes' : `${termVal} meses`\n      }));\n\n      const purposes = (config.purposes && config.purposes.length > 0)\n        ? config.purposes\n        : this.getPurposesForCreditLine(config.creditLineName);\n      purposes.forEach((p) => {\n        allLines.push({\n          value: p.value,\n          label: p.label,\n          creditLine: config.creditLineName,\n          creditLineLabel: config.label || this.getLabelForCreditLine(config.creditLineName),\n          minLoanAmount: config.minLoanAmount,\n          maxLoanAmount: config.maxLoanAmount,\n          rateFrom: config.rateFrom ?? (config as any).ibrSpreadFrom,\n          rateUpTo: config.rateUpTo,\n          currentIbrRate: config.currentIbrRate ?? (config as any).estimatedIbrNamv,\n          creditTerms\n        });\n      });\n    });\n\n    const seenValues = new Set<string>();\n    const uniqueLines: any[] = [];\n    allLines.forEach((line) => {\n      if (!seenValues.has(line.value)) {\n        seenValues.add(line.value);\n        uniqueLines.push(line);\n      }\n    });\n    this.linesOfCredit = uniqueLines;\n  }\n\n  private getDefaultCreditLinesConfig(): CreditLineConfig[] {\n    if (this.libConfig?.defaultCreditLines && this.libConfig.defaultCreditLines.length > 0) {\n      return this.libConfig.defaultCreditLines;\n    }\n    return [\n      {\n        creditLineName: CreditLineName.FIXED_LOAN_TERM_IBR,\n        label: this.getLabelForCreditLine(CreditLineName.FIXED_LOAN_TERM_IBR),\n        minLoanAmount: this.libConfig?.minLoanAmount ?? 20000000,\n        maxLoanAmount: this.libConfig?.maxLoanAmount ?? 300000000,\n        minLoanTerm: 6,\n        maxLoanTerm: 36,\n        rateFrom: 1.6,\n        rateUpTo: 2.5\n      },\n      {\n        creditLineName: CreditLineName.FLEXI_LOAN,\n        label: this.getLabelForCreditLine(CreditLineName.FLEXI_LOAN),\n        minLoanAmount: this.libConfig?.flexiMinLoanAmount ?? 20000000,\n        maxLoanAmount: this.libConfig?.flexiMaxLoanAmount ?? 100000000,\n        minLoanTerm: 1,\n        maxLoanTerm: 3,\n        rateFrom: 1.75,\n        rateUpTo: 1.75\n      },\n      {\n        creditLineName: CreditLineName.VEHICLE_LOAN,\n        label: this.getLabelForCreditLine(CreditLineName.VEHICLE_LOAN),\n        minLoanAmount: this.libConfig?.vehicleMinLoanAmount ?? 50000000,\n        maxLoanAmount: this.libConfig?.vehicleMaxLoanAmount ?? 500000000,\n        minLoanTerm: 12,\n        maxLoanTerm: 60,\n        rateFrom: 1.5,\n        rateUpTo: 2.5\n      }\n    ];\n  }\n\n  private getPurposesForCreditLine(creditLineName: string): { value: string; label: string }[] {\n    if (this.libConfig?.creditLinePurposes && this.libConfig.creditLinePurposes[creditLineName]) {\n      return this.libConfig.creditLinePurposes[creditLineName];\n    }\n    switch (creditLineName) {\n      case CreditLineName.FIXED_LOAN_TERM_IBR:\n      case CreditLineName.FIXED_LOAN_TERM_CURRENT_CLIENT_IBR:\n        return [\n          { value: InitialLine.WORKING_CAPITAL, label: 'Capital de trabajo' },\n          { value: InitialLine.EXPANSION, label: 'Proyecto de expansión' },\n          { value: InitialLine.OPERATING_ASSETS, label: 'Activos operativos' },\n          { value: InitialLine.SUBSTITUTION_OF_LIABILITIES, label: 'Sustitución de pasivos' }\n        ];\n      case CreditLineName.FLEXI_LOAN:\n        return [\n          { value: InitialLine.THIRD_PARTY_PAYMENTS, label: 'Pagos a terceros' },\n          { value: InitialLine.IMMEDIATE_LIQUIDITY, label: 'Liquidez inmediata' }\n        ];\n      case CreditLineName.VEHICLE_LOAN:\n        return [\n          { value: InitialLine.COMMERCIAL_VEHICLES, label: 'Compra de vehículo empresarial' }\n        ];\n      default:\n        return [\n          { value: creditLineName, label: this.getLabelForCreditLine(creditLineName) }\n        ];\n    }\n  }\n\n  private getLabelForCreditLine(creditLineName: string): string {\n    if (this.libConfig?.creditLineLabels && this.libConfig.creditLineLabels[creditLineName]) {\n      return this.libConfig.creditLineLabels[creditLineName];\n    }\n    switch (creditLineName) {\n      case CreditLineName.FIXED_LOAN_TERM_IBR:\n      case CreditLineName.FIXED_LOAN_TERM_CURRENT_CLIENT_IBR:\n        return 'Crédito a término';\n      case CreditLineName.FLEXI_LOAN:\n        return 'Crédito flexi';\n      case CreditLineName.VEHICLE_LOAN:\n        return 'Crédito vehículos';\n      default:\n        return creditLineName;\n    }\n  }\n\n  resetCalculatorResults() {\n    this.showResults = false;\n    this.term = '';\n    this.calculatorResult = this.simulatorsService.resetCreditSimulator();\n    const serverUrl = this.libConfig?.serverUrl ?? 'https://sempli.co/';\n    this.registerUrl = `${serverUrl}sucursal/solicitar-credito/`;\n  }\n\n  updateCreditTerms() {\n    const selectedOpt = this.linesOfCredit.find((opt) => opt.value === this.lineOfCredit);\n    this.creditTerms = selectedOpt?.creditTerms || [];\n  }\n\n  isAmountValid(): boolean {\n    if (!this.lineOfCredit || !this.amount) {\n      return false;\n    }\n    const numericAmount = typeof this.amount === 'string' ? Number(String(this.amount).replace(/,/g, '')) : Number(this.amount);\n    return !isNaN(numericAmount) && numericAmount > 0 && !this.amountErrorMessage;\n  }\n\n  onLineOfCreditChange() {\n    this.updateCreditTerms();\n    this.resetCalculatorResults();\n  }\n\n  isFlexiLine(): boolean {\n    const selectedOpt = this.linesOfCredit.find((opt) => opt.value === this.lineOfCredit);\n    return selectedOpt?.creditLine === CreditLineName.FLEXI_LOAN;\n  }\n\n  getRecommendedCreditLine(): string {\n    const selectedOpt = this.linesOfCredit.find((opt) => opt.value === this.lineOfCredit);\n    if (!selectedOpt) {return '';}\n    return selectedOpt.creditLineLabel || this.getLabelForCreditLine(selectedOpt.creditLine) || '';\n  }\n\n  runCalculator() {\n    this.debtPrepayed = false;\n    if (this.term && this.amount) {\n      const selectedOpt = this.linesOfCredit.find((opt) => opt.value === this.lineOfCredit);\n      const creditLine = selectedOpt?.creditLine || CreditLineName.FIXED_LOAN_TERM_IBR;\n\n      if (creditLine === CreditLineName.FLEXI_LOAN) {\n        const gracePeriod = parseInt(this.term, 10) === 3 ? 2 : parseInt(this.term, 10) === 2 ? 1 : 0;\n        this.runLocalFlexiSimulation(gracePeriod, selectedOpt?.rateFrom);\n        return;\n      }\n\n      // For IBR loans: rateFrom is the Spread (Nominal Annual).\n      // We calculate the IBR simulation using SimulatorsService with dynamic estimatedIbrNamv if available.\n      const spreadFrom = selectedOpt?.rateFrom ?? 0;\n      const currentIbrRate = selectedOpt?.currentIbrRate;\n\n      this.calculatorResult = this.simulatorsService.getIbrCreditSimulation(\n        spreadFrom,\n        this.term,\n        this.amount,\n        currentIbrRate\n      );\n\n      this.repaymentSchedule = this.simulatorsService.buildRepaymentSchedule(\n        this.amount,\n        this.calculatorResult.term,\n        this.calculatorResult.interestRate,\n        this.calculatorResult.installmentAmount\n      );\n\n      this.scheduleTotals = {\n        principal: this.amount,\n        interestAmount: this.calculatorResult.interestAmount,\n        totalCreditCost: this.calculatorResult.totalCreditCost\n      };\n\n      this.redefineRegisterCtaUrl();\n\n      this.showResults = true;\n      this.trackSimulatorUsage();\n    }\n  }\n\n  private runLocalFlexiSimulation(gracePeriod: number, rateFrom?: number) {\n    const rate = rateFrom ? rateFrom / 100 : 0.0175;\n    this.calculatorResult = this.simulatorsService.getFlexiCreditSimulation(\n      this.term,\n      this.amount,\n      rate\n    );\n    this.repaymentSchedule = this.calculatorResult.repaymentSchedule || [];\n    this.scheduleTotals = {\n      principal: this.amount,\n      interestAmount: this.calculatorResult.interestAmount,\n      totalCreditCost: this.calculatorResult.totalCreditCost\n    };\n    this.redefineRegisterCtaUrl();\n    this.showResults = true;\n    this.trackSimulatorUsage();\n  }\n\n  payRemainingBalance(repaymentNumber: number) {\n    this.prepaymentInstallment = repaymentNumber;\n    this.repaymentScheduleCopy = this.repaymentSchedule;\n    this.repaymentSchedule = this.repaymentSchedule.slice(\n      0,\n      repaymentNumber - 1\n    );\n    const principalBalance =\n      this.repaymentScheduleCopy[repaymentNumber - 1].principalBalance;\n    const installmentInterestAmount =\n      this.repaymentScheduleCopy[repaymentNumber - 1].installmentInterestAmount;\n    const installmentAmount = principalBalance + installmentInterestAmount;\n\n    this.repaymentSchedule.push({\n      installmentNumber: repaymentNumber,\n      installmentInterestAmount,\n      installmentPrincipalAmount: principalBalance,\n      installmentAmount,\n      principalBalance,\n      lastRepayment: true\n    });\n\n    this.prepaymentSavings = 0;\n    for (let j = repaymentNumber; j < this.repaymentScheduleCopy.length; j++) {\n      this.prepaymentSavings +=\n        this.repaymentScheduleCopy[j].installmentInterestAmount;\n    }\n\n    this.scheduleTotals['interestAmount'] -= this.prepaymentSavings;\n    this.scheduleTotals['totalCreditCost'] -= this.prepaymentSavings;\n\n    this.debtPrepayed = true;\n  }\n\n  disablePrepayment() {\n    this.runCalculator();\n    this.debtPrepayed = false;\n  }\n\n  onAmountFocusOut(): void {\n    const selectedOpt = this.linesOfCredit.find((opt) => opt.value === this.lineOfCredit);\n    const processedAmount = this.simulatorsService.setAmountWithinLimits(\n      this.amount,\n      selectedOpt?.minLoanAmount,\n      selectedOpt?.maxLoanAmount\n    );\n    this.amount = processedAmount.newAmount;\n    if (processedAmount.amountChanged) {\n      this.renderer.addClass(\n        this.amountInputWrapper().nativeElement,\n        'has-error'\n      );\n      this.amountErrorMessage = processedAmount.message;\n    } else {\n      this.renderer.removeClass(\n        this.amountInputWrapper().nativeElement,\n        'has-error'\n      );\n      this.amountErrorMessage = '';\n    }\n    this.runCalculator();\n  }\n\n  redefineRegisterCtaUrl() {\n    const lineCreditSelected = this.linesOfCredit.find(\n      (value) => value.value === this.lineOfCredit\n    );\n    const purpose = lineCreditSelected ? lineCreditSelected.label.toString().trim() : '';\n    const defaultServerUrl = this.libConfig?.serverUrl ?? 'https://sempli.co/';\n    const baseUrl = this.registerBaseUrl() ?? `${defaultServerUrl}sucursal/solicitar-credito/`;\n    const separator = baseUrl.includes('?') ? '&' : '?';\n    this.registerUrl =\n      `${baseUrl}${separator}purpose=${purpose}` +\n      `&amount=${this.amount.toString().trim()}&term=${this.term.toString().trim()}`;\n  }\n\n  trackSimulatorUsage() {\n    this.simulatorInteracted.emit({\n      action: 'calculation_run',\n      amount: this.amount,\n      term: this.term,\n      lineOfCredit: this.lineOfCredit,\n      result: this.calculatorResult\n    });\n  }\n\n  onCtaClick(event?: MouseEvent) {\n    if (event) {\n      event.preventDefault();\n    }\n    this.applicationRequested.emit(this.calculatorResult);\n  }\n}\n","<!-- Section Wrapper Starts -->\n<section class=\"section-wrapper simulators simulators-wrapper\" [class.transparent-bg]=\"transparentBackground()\">\n  <div class=\"container loan-calculator\">\n    <div class=\"main-inputs\">\n      <div class=\"container simulator-two-col\">\n        <!-- Left Column: Inputs stacked vertically -->\n        <div class=\"inputs-column\">\n          <!-- 1. Select Line of Credit -->\n          <div class=\"input-wrapper\">\n            <label for=\"line-of-credit\"\n              >¿En qué vas a invertir tu crédito?</label\n            >\n            <div class=\"select-wrapper\">\n              <select\n                id=\"line-of-credit\"\n                name=\"line-of-credit\"\n                [(ngModel)]=\"lineOfCredit\"\n                (change)=\"onLineOfCreditChange()\"\n                aria-label=\"Línea de crédito\"\n              >\n                <option value=\"\" disabled=\"disabled\" selected=\"selected\">\n                  Selecciona una opción\n                </option>\n                @for (\n                  lineOfCreditOption of linesOfCredit;\n                  track lineOfCreditOption\n                ) {\n                  <option [value]=\"lineOfCreditOption.value\">\n                    {{ lineOfCreditOption.label }}\n                  </option>\n                }\n              </select>\n            </div>\n          </div>\n\n          <!-- 2. Amount Input -->\n          <div #amountInputWrapper class=\"input-wrapper has-addon preppend\">\n            <label for=\"amount\">¿Cuánto dinero necesitas?</label>\n            <input\n              type=\"text\"\n              id=\"amount\"\n              name=\"amount\"\n              placeholder=\"0\"\n              [disabled]=\"!lineOfCredit\"\n              [(ngModel)]=\"amount\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              (focusout)=\"onAmountFocusOut()\"\n              autocomplete=\"off\"\n              aria-label=\"Monto del crédito\"\n            />\n            <div class=\"input-addon\">$</div>\n            <span class=\"error-msg\">{{ amountErrorMessage }}</span>\n          </div>\n\n          <!-- 3. Term Select -->\n          <div class=\"input-wrapper\">\n            <label for=\"term\">¿A qué plazo de pago?</label>\n            <div class=\"select-wrapper\">\n              <select\n                id=\"term\"\n                name=\"term\"\n                [disabled]=\"!isAmountValid() || !creditTerms || creditTerms.length === 0\"\n                [(ngModel)]=\"term\"\n                (change)=\"runCalculator()\"\n                aria-label=\"Plazo de pago\"\n              >\n                <option value=\"\" disabled=\"disabled\" selected=\"selected\">\n                  Selecciona una opción\n                </option>\n                @for (termOption of creditTerms; track termOption) {\n                  <option [value]=\"termOption.value\">\n                    {{ termOption.label }}\n                  </option>\n                }\n              </select>\n            </div>\n          </div>\n        </div>\n\n        <!-- Right Column: Unified Result Panel -->\n        <div class=\"results-column\">\n          <div class=\"result-panel\" [class.result-panel--active]=\"showResults\">\n            @if (showResults && lineOfCredit) {\n              <div class=\"result-panel-header\">\n                <i class=\"ri-lightbulb-line recommendation-icon\"></i>\n                <span class=\"recommendation-text\">\n                  Crédito recomendado: <strong>{{ getRecommendedCreditLine() }}</strong>\n                </span>\n              </div>\n            }\n\n            @if (!showResults) {\n              <div class=\"result-panel-body result-panel-body--idle\">\n                <picture class=\"calculator-illustration-idle\" aria-hidden=\"true\">\n                  <source srcset=\"assets/swl/interface/illustration-d7.webp\" type=\"image/webp\">\n                  <img src=\"assets/swl/interface/illustration-d7.png\" width=\"100\" height=\"86\" alt=\"\" />\n                </picture>\n                <div class=\"idle-text-container\">\n                  <p class=\"idle-title\">Simula tu próximo crédito</p>\n                  <p class=\"idle-hint\">Selecciona el propósito, el monto y el plazo que necesitas para ver tu cuota mensual estimada al instante.</p>\n                </div>\n              </div>\n            }\n\n            @if (showResults) {\n              <div class=\"result-panel-body\">\n                <div class=\"calculator-content\">\n                  @if (!isFlexiLine()) {\n                    <div class=\"label\">Cuota mensual estimada</div>\n                    <div class=\"value\">\n                      $ {{ calculatorResult.installmentAmount | number:'1.0-0' }}\n                    </div>\n                    <div class=\"hint\">\n                      Según el monto y el plazo seleccionados, este valor es aproximado y puede variar según evaluación crediticia.\n                    </div>\n                  } @else {\n                    <div class=\"label\">Interés mensual estimado</div>\n                    <div class=\"value\">\n                      $ {{ calculatorResult.installmentAmount | number:'1.0-0' }}\n                    </div>\n                    <div class=\"hint\">\n                      Según el monto y el plazo seleccionados, el valor estimado a pagar de la última cuota sería<br>\n                      <span class=\"flexy-simulated-value\">\n                        $ {{ calculatorResult.totalCreditCost | number:'1.0-0' }}\n                      </span>\n                    </div>\n                  }\n                </div>\n                <picture class=\"calculator-illustration\" aria-hidden=\"true\">\n                  <source srcset=\"assets/swl/interface/illustration-faces.webp\" type=\"image/webp\">\n                  <img src=\"assets/swl/interface/illustration-faces.png\" width=\"116\" height=\"100\" alt=\"\" />\n                </picture>\n              </div>\n\n              <div class=\"result-panel-footer\">\n                La tasa de interés es una aproximación de mercado y no refleja los términos finales de una aprobación de tu crédito con Sempli; para conocerlos\n                <a [href]=\"registerUrl\" (click)=\"onCtaClick($event)\">¡Solicita tu crédito ahora!</a>\n              </div>\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  @if (showResults) {\n    <div class=\"container loan-simulation\">\n      <div class=\"loan-calculator-panel panel primary-dark\">\n        <div class=\"grid text-centered\">\n          <div class=\"col sm12 md2\">\n            <h6>Total capital</h6>\n            <p>${{ calculatorResult.principal | number }}</p>\n          </div>\n          <div class=\"col sm12 md3\">\n            <h6>Plazo</h6>\n            <p>{{ calculatorResult.numberOfInstallments }}</p>\n          </div>\n          <div class=\"col sm12 md2\">\n            <h6>\n              Tasa de interés\n              <a\n                class=\"has-tooltip cursor-pointer\"\n                data-tooltip=\"Tasa aproximada, mes efectivo\"\n                data-tooltip-position=\"top\"\n              >\n                <img\n                  src=\"assets/swl/interface/icons/question-sign-white.svg\"\n                  class=\"icon question-sign\"\n                  alt=\"Interrogación\"\n                />\n              </a>\n            </h6>\n            <p>{{ calculatorResult.interestRateString }}</p>\n          </div>\n          <div class=\"col sm12 md3\">\n            <h6>Total intereses</h6>\n            <p>${{ calculatorResult.interestAmount | number }}</p>\n          </div>\n          <div class=\"col sm12 md2\">\n            <h6>Total a pagar</h6>\n            <p>\n              <span>${{ calculatorResult.totalCreditCost | number }}</span>\n            </p>\n          </div>\n        </div>\n      </div>\n      <div class=\"loan-calculator-table\">\n        <h4>Simulación de cuotas</h4>\n        <div class=\"table-responsive-wrapper\">\n          <div class=\"table-header\">\n            <div class=\"table-row\">\n              <div class=\"table-cell\">Cuota No.</div>\n              <div class=\"table-cell\"></div>\n              <div class=\"table-cell\">Saldo capital</div>\n              <div class=\"table-cell\">Capital</div>\n              <div class=\"table-cell\">Interés</div>\n              <div class=\"table-cell\">\n                Valor cuota\n                <a\n                  class=\"has-tooltip cursor-pointer\"\n                  data-tooltip=\"Capital + interés\"\n                  data-tooltip-position=\"right\"\n                >\n                  <img\n                    src=\"assets/swl/interface/icons/question-sign.svg\"\n                    class=\"icon question-sign\"\n                    alt=\"Interrogación\"\n                  />\n                </a>\n              </div>\n            </div>\n          </div>\n          <div class=\"table-body\">\n            @for (repayment of repaymentSchedule; track repayment) {\n              <div class=\"table-row\">\n                <div class=\"table-cell\">\n                  <span class=\"installment-num\">{{\n                    repayment.installmentNumber\n                  }}</span>\n                </div>\n                <div class=\"table-cell\">\n                  @if (!debtPrepayed && repayment.installmentNumber != term) {\n                    <div>\n                      <a\n                        class=\"payment cursor-pointer\"\n                        (click)=\"payRemainingBalance(repayment.installmentNumber)\"\n                      >\n                        <img\n                          alt=\"Pagar deuda total\"\n                          class=\"icon\"\n                          src=\"assets/swl/interface/icons/plus-circle.svg\"\n                        />\n                        Pagar deuda total\n                      </a>\n                    </div>\n                  }\n                  @if (debtPrepayed) {\n                    <div>\n                      @if (repayment.lastRepayment) {\n                        <a\n                          class=\"payment cursor-pointer\"\n                          (click)=\"disablePrepayment()\"\n                        >\n                          <img\n                            alt=\"Deshabilitar pago\"\n                            class=\"icon\"\n                            src=\"assets/swl/interface/icons/x-circle.svg\"\n                          />\n                          Deshabilitar pago\n                        </a>\n                      }\n                      @if (!repayment.lastRepayment) {\n                        <span>-</span>\n                      }\n                    </div>\n                  }\n                </div>\n                <div class=\"table-cell\">\n                  ${{ repayment.principalBalance | number }}\n                </div>\n                <div class=\"table-cell\">\n                  ${{ repayment.installmentPrincipalAmount | number }}\n                </div>\n                <div class=\"table-cell\">\n                  ${{ repayment.installmentInterestAmount | number }}\n                </div>\n                <div class=\"table-cell\">\n                  <span class=\"payment-total\"\n                    >${{ repayment.installmentAmount | number }}</span\n                  >\n                </div>\n              </div>\n            }\n          </div>\n          <div class=\"table-footer\">\n            <div class=\"table-row\">\n              <div class=\"table-cell\"></div>\n              <div class=\"table-cell\"></div>\n              <div class=\"table-cell\"></div>\n              <div class=\"table-cell\">\n                ${{ scheduleTotals.principal | number }}\n              </div>\n              <div class=\"table-cell\">\n                ${{ scheduleTotals.interestAmount | number }}\n              </div>\n              <div class=\"table-cell\">\n                <span class=\"payment-total\"\n                  >${{ scheduleTotals.totalCreditCost | number }}</span\n                >\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class=\"floating-scroll-indicator mobile-only\">\n          <i class=\"ri-arrow-right-line\"></i>\n        </div>\n      </div>\n      @if (debtPrepayed) {\n        <div class=\"loan-calculator-panel panel warning\">\n          <p>\n            Haciendo un pago total de tu deuda a capital en la cuota\n            {{ prepaymentInstallment }}, tendrías un ahorro de ${{\n              prepaymentSavings | number\n            }}\n            en interéses.\n          </p>\n        </div>\n      }\n    </div>\n  }\n</section>\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'app-risk-tooltip',\n  templateUrl: './risk-tooltip.component.html',\n  styleUrls: ['./risk-tooltip.component.scss'],\n  standalone: false\n})\nexport class RiskTooltipComponent implements OnInit {\n  constructor() {}\n\n  ngOnInit() {}\n}\n","<a\n  class=\"has-tooltip cursor-pointer\"\n  data-tooltip=\"Selecciona el nivel de riesgo que mejor se aproxima al de tu empresa,\n                siendo 1 el de menor nivel. Para esto ten presente factores como crecimiento,\n                comportamientos de pago, rentabilidad del negocio, experiencia del talento humano\n                y en general, aquellos elementos que hacen de tu empresa ¡un jugador diferente!\"\n  data-tooltip-position=\"top\"\n>\n  <img\n    src=\"assets/swl/interface/icons/question-sign.svg\"\n    class=\"icon question-sign\"\n    alt=\"Interrogación\"\n  />\n</a>\n","import {\n  Component,\n  OnInit,\n  inject,\n  input,\n  output,\n  signal,\n  effect,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { ICreditSimulatorResult } from '../../../simulator-wrapper/models/simulator.model';\nimport { SimulatorsService } from '../../../simulator-wrapper/services/simulators.service';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'app-fixed-purpose-loan-calc',\n  templateUrl: './fixed-purpose-loan-calc.component.html',\n  styleUrls: ['./fixed-purpose-loan-calc.component.scss'],\n  standalone: false\n})\nexport class FixedPurposeLoanCalcComponent implements OnInit {\n  readonly amount = input<number>(0);\n  readonly riskLevel = input<number>(3);\n  readonly creditTerms = input<any[]>(undefined);\n\n  readonly simulatorResultsChange = output<ICreditSimulatorResult>();\n\n  private simulatorsService = inject(SimulatorsService);\n\n  minimumAmount: number;\n  minimumAmountWarning = signal<boolean>(false);\n  calculatorResult = signal<ICreditSimulatorResult>(undefined);\n  term = signal<string>('');\n\n  constructor() {\n    effect(() => {\n      const currentAmount = this.amount();\n      const currentRisk = this.riskLevel();\n      this.runCalculator(currentAmount, currentRisk);\n    });\n  }\n\n  ngOnInit() {\n    this.minimumAmount = this.simulatorsService.minimumLoanAmount;\n    this.calculatorResult.set(this.simulatorsService.resetCreditSimulator());\n  }\n\n  runCalculator(amount: number = this.amount(), riskLevel: number = this.riskLevel()) {\n    const selectedTerm = this.term();\n    let result: ICreditSimulatorResult;\n\n    if (selectedTerm && amount) {\n      if (amount >= this.minimumAmount) {\n        this.minimumAmountWarning.set(false);\n        result = this.simulatorsService.getCreditSimulation(\n          riskLevel,\n          selectedTerm,\n          amount\n        );\n      } else {\n        this.minimumAmountWarning.set(true);\n        result = this.simulatorsService.resetCreditSimulator();\n      }\n    } else {\n      this.minimumAmountWarning.set(false);\n      result = this.simulatorsService.resetCreditSimulator();\n    }\n\n    this.calculatorResult.set(result);\n    this.simulatorResultsChange.emit(result);\n  }\n}\n\n","<h4>Costo del crédito</h4>\n<div class=\"container grid\">\n  <div class=\"col sm12\">\n    <div class=\"input-wrapper\">\n      <label for=\"term\">¿A qué plazo deseas pagar?</label>\n      <div class=\"select-wrapper\">\n        <select\n          id=\"term\"\n          name=\"term\"\n          [disabled]=\"!creditTerms()\"\n          [ngModel]=\"term()\"\n          (ngModelChange)=\"term.set($event); runCalculator()\"\n          aria-label=\"Plazo de pago\"\n        >\n          <option value=\"\" disabled=\"disabled\" selected=\"selected\">\n            Selecciona una opción\n          </option>\n          @for (termOption of creditTerms(); track termOption) {\n            <option [value]=\"termOption.value\">\n              {{ termOption.label }}\n            </option>\n          }\n        </select>\n      </div>\n    </div>\n  </div>\n  @if (minimumAmountWarning()) {\n    <div class=\"col sm12 panel warning mt-0\">\n      Nuestro producto de crédito empresarial Sempli comienza a partir de ${{\n        minimumAmount | number\n      }}\n      de pesos; con la información suministrada de tu inversión no se alcanza\n      este monto mínimo requerido. Revisa nuevamente los costos asociados y\n      verifica si es el momento adecuado para solicitar tu crédito con Sempli.\n    </div>\n  }\n  <div class=\"col sm12\">\n    <ul class=\"results-table\">\n      <li>\n        <span class=\"results-table-item-title\"> Monto del crédito </span>\n        <span class=\"results-table-item-value\">${{ amount() | number }}</span>\n      </li>\n      <li>\n        <span class=\"results-table-item-title\">\n          Tasa de interés aproximada\n          <a\n            class=\"has-tooltip cursor-pointer\"\n            data-tooltip-position=\"right\"\n            data-tooltip=\"Mes efectivo\"\n          >\n            <img\n              class=\"icon question-sign\"\n              src=\"assets/swl/interface/icons/question-sign.svg\"\n              alt=\"Interrogación\"\n            />\n          </a>\n        </span>\n        <span class=\"results-table-item-value\">\n          {{ calculatorResult()?.interestRateString }}\n          @if (calculatorResult()?.interestRateString !== \"-\") {\n            <a\n              class=\"has-tooltip cursor-pointer\"\n              data-tooltip-position=\"right\"\n              data-tooltip=\"La tasa de interés es una aproximación de mercado y no refleja los términos finales de una aprobación de tu crédito con Sempli\"\n            >\n              <img\n                class=\"icon question-sign\"\n                src=\"assets/swl/interface/icons/question-sign.svg\"\n                alt=\"Interrogación\"\n              />\n            </a>\n          }\n        </span>\n      </li>\n      <li>\n        <span class=\"results-table-item-title\">Total intereses</span>\n        <span class=\"results-table-item-value\"\n          >${{ calculatorResult()?.interestAmount | number }}</span\n        >\n      </li>\n      <li class=\"table-total table-separator\">\n        <span class=\"results-table-item-title\">Costo total del crédito</span>\n        <span class=\"results-table-item-value\"\n          >${{ calculatorResult()?.totalCreditCost | number }}</span\n        >\n      </li>\n    </ul>\n  </div>\n</div>\n\n","import {\n  Component,\n  inject,\n  input,\n  output,\n  computed,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { SafeUrl, DomSanitizer } from '@angular/platform-browser';\nimport { ICreditSimulatorResult } from '../../../simulator-wrapper/models/simulator.model';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'app-roi-result',\n  templateUrl: './roi-result.component.html',\n  styleUrls: ['./roi-result.component.scss'],\n  standalone: false\n})\nexport class RoiResultComponent {\n  readonly income = input<number>(0);\n  readonly registerBaseUrl = input<string>('https://sempli.co/sucursal/solicitar-credito/');\n  readonly calculatorResult = input<ICreditSimulatorResult>(undefined);\n  readonly loanPurpose = input<string>(undefined);\n\n  readonly applicationRequested = output<ICreditSimulatorResult>();\n\n  private sanitizer = inject(DomSanitizer);\n\n  readonly investmentAmount = computed(() => this.calculatorResult()?.totalCreditCost ?? 0);\n  readonly loanTerm = computed(() => this.calculatorResult()?.term ?? 0);\n\n  readonly roiData = computed(() => {\n    const calcResult = this.calculatorResult();\n    const invAmount = this.investmentAmount();\n    const inc = this.income();\n\n    if (!calcResult || invAmount === 0 || inc === undefined || inc === null) {\n      return {\n        roiAmount: 0,\n        roiRate: '-',\n        roiPositive: false,\n        registerUrl: null as SafeUrl | null\n      };\n    }\n\n    const roiAmount = inc - invAmount;\n    const roiRate = ((roiAmount * 100) / invAmount).toFixed(2) + '%';\n    const roiPositive = roiAmount > 0;\n\n    let registerUrl: SafeUrl | null = null;\n    if (roiPositive) {\n      const baseUrl = this.registerBaseUrl() || 'https://sempli.co/sucursal/solicitar-credito/';\n      const purpose = this.loanPurpose() ? this.loanPurpose().toString().trim() : '';\n      const amount = calcResult.principal ? calcResult.principal.toString().trim() : '';\n      const term = this.loanTerm() ? this.loanTerm().toString().trim() : '';\n\n      const registerUnSanitizedUrl = `${baseUrl}?purpose=${purpose}&amount=${amount}&term=${term}`;\n      registerUrl = this.sanitizer.bypassSecurityTrustResourceUrl(registerUnSanitizedUrl);\n    }\n\n    return {\n      roiAmount,\n      roiRate,\n      roiPositive,\n      registerUrl\n    };\n  });\n\n  onCtaClick(event?: MouseEvent) {\n    if (event) {\n      event.preventDefault();\n    }\n    this.applicationRequested.emit(this.calculatorResult());\n  }\n\n  trackSimulatorUsage() {\n    // Analytics tracking hooks\n  }\n}\n\n\n","<h4>Cálculo del ROI</h4>\n<ul class=\"results-table\">\n  <li>\n    <span class=\"results-table-item-title\"> Ingresos </span>\n    <span class=\"results-table-item-value\">${{ income() | number }}</span>\n  </li>\n  <li>\n    <span class=\"results-table-item-title\">Inversión</span>\n    <span class=\"results-table-item-value\"\n      >${{ investmentAmount() | number }}</span\n    >\n  </li>\n  <li class=\"table-total table-separator\">\n    <span class=\"results-table-item-title\"> ROI $ </span>\n    <span\n      class=\"results-table-item-value\"\n      [class.positive]=\"investmentAmount() !== 0 && roiData().roiPositive\"\n      [class.negative]=\"investmentAmount() !== 0 && !roiData().roiPositive\"\n      >${{ roiData().roiAmount | number }}</span\n    >\n  </li>\n  <li class=\"table-total\">\n    <span class=\"results-table-item-title\">\n      ROI %\n      <a\n        class=\"has-tooltip cursor-pointer\"\n        data-tooltip-position=\"right\"\n        data-tooltip=\"(ROI / Inversión) * 100\"\n      >\n        <img\n          class=\"icon question-sign\"\n          src=\"assets/swl/interface/icons/question-sign.svg\"\n          alt=\"Interrogacion\"\n        />\n      </a>\n    </span>\n    <span\n      class=\"results-table-item-value\"\n      [class.positive]=\"investmentAmount() !== 0 && roiData().roiPositive\"\n      [class.negative]=\"investmentAmount() !== 0 && !roiData().roiPositive\"\n      >{{ roiData().roiRate }}</span\n    >\n  </li>\n</ul>\n@if (investmentAmount() !== 0 && roiData().roiPositive) {\n  <div class=\"panel success\">\n    ¡Excelente! con los datos que ingresaste el retorno de la inversión sería\n    positivo. Si la tasa de retorno está en línea con tus expectativas de\n    rentabilidad ¡es momento de solicitar tu crédito con Sempli!\n    <a [href]=\"roiData().registerUrl\" (click)=\"onCtaClick($event)\">Solicita ahora</a>\n  </div>\n}\n@if (investmentAmount() !== 0 && !roiData().roiPositive) {\n  <div class=\"panel warning\">\n    Algo no está bien. Acorde con la información que ingresaste, el retorno de\n    la inversión sería negativo. Evalúa nuevamente los costos asociados y el\n    ingreso esperado de tu inversión para que tomes la mejor decisión.\n  </div>\n}\n\n","import {\n  Component,\n  inject,\n  input,\n  output,\n  computed,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'app-roi-description',\n  templateUrl: './roi-description.component.html',\n  styleUrls: ['./roi-description.component.scss'],\n  standalone: false\n})\nexport class RoiDescriptionComponent {\n  readonly registerBaseUrl = input<string>('https://sempli.co/sucursal/solicitar-credito/');\n  readonly applicationRequested = output<void>();\n\n  private sanitizer = inject(DomSanitizer);\n\n  readonly registerUrl = computed(() => {\n    const baseUrl = this.registerBaseUrl() || 'https://sempli.co/sucursal/solicitar-credito/';\n    return this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl);\n  });\n\n  onCtaClick(event?: MouseEvent) {\n    if (event) {\n      event.preventDefault();\n    }\n    this.applicationRequested.emit();\n  }\n}\n\n\n","<p class=\"section-description\">\n  Este cálculo de Retorno de la Inversión (ROI) tiene un propósito de\n  demostración únicamente. El cálculo final del retorno puede variar en función\n  de múltiples factores externos que pueden no estar contemplados en estos\n  cálculos. Para obtener una tasa final y ajustada de financiación\n  <a [href]=\"registerUrl()\" (click)=\"onCtaClick($event)\">¡Solicita tu crédito ahora!</a>.\n</p>\n\n","import {\n  Component,\n  OnInit,\n  inject,\n  input,\n  output,\n  signal,\n  computed,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { SimulatorsService } from '../../simulator-wrapper/services/simulators.service';\nimport { ICreditSimulatorResult } from '../../simulator-wrapper/models/simulator.model';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'lib-inventory',\n  templateUrl: './inventory.component.html',\n  styleUrls: ['./inventory.component.scss'],\n  standalone: false\n})\nexport class InventoryComponent implements OnInit {\n  readonly registerBaseUrl = input<string>('https://sempli.co/sucursal/solicitar-credito/');\n  readonly transparentBackground = input<boolean>(false);\n  readonly applicationRequested = output<ICreditSimulatorResult>();\n\n  unitCost = signal<number | null>(null);\n  units = signal<number | null>(null);\n  price = signal<number | null>(null);\n  calculatorResult = signal<ICreditSimulatorResult>(undefined);\n\n  readonly amount = computed(() => (this.unitCost() || 0) * (this.units() || 0));\n  readonly income = computed(() => (this.price() || 0) * (this.units() || 0));\n\n  creditTerms: any[];\n  riskLevels: any[];\n\n  private simulatorsService = inject(SimulatorsService);\n\n  ngOnInit() {\n    this.creditTerms =\n      this.simulatorsService.getCreditTermsByPurpose('INVENTORY');\n    this.riskLevels = this.simulatorsService.getAvailableRiskLevels();\n  }\n\n  updateRoi(calculatorResult: ICreditSimulatorResult) {\n    this.calculatorResult.set(calculatorResult);\n  }\n}\n\n","<!-- Section Wrapper Starts -->\n<section class=\"section-wrapper simulators simulators-wrapper\" [class.transparent-bg]=\"transparentBackground()\">\n  <div class=\"container roi-section-header\">\n    <h1>Calcula el retorno de tu inversión en Inventario</h1>\n    <app-roi-description [registerBaseUrl]=\"registerBaseUrl()\" (applicationRequested)=\"applicationRequested.emit($event)\"></app-roi-description>\n  </div>\n  <div class=\"container roi-calculator\">\n    <div class=\"investment\">\n      <h4>Inversión</h4>\n      <div class=\"container grid\">\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper has-addon preppend\">\n            <label for=\"unit-cost\">Costo unitario</label>\n            <input\n              id=\"unit-cost\"\n              name=\"unit-cost\"\n              placeholder=\"0\"\n              type=\"text\"\n              [ngModel]=\"unitCost()\"\n              (ngModelChange)=\"unitCost.set($event)\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              aria-label=\"Costo unitario\"\n            />\n            <div class=\"input-addon\">$</div>\n          </div>\n        </div>\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper\">\n            <label for=\"units\">Número de unidades</label>\n            <input\n              id=\"units\"\n              name=\"units\"\n              placeholder=\"0\"\n              type=\"number\"\n              [ngModel]=\"units()\"\n              (ngModelChange)=\"units.set($event)\"\n              aria-label=\"Número de unidades\"\n            />\n          </div>\n        </div>\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper has-addon preppend\">\n            <label for=\"price\">Precio unitario de venta</label>\n            <input\n              id=\"price\"\n              name=\"price\"\n              placeholder=\"0\"\n              type=\"text\"\n              [ngModel]=\"price()\"\n              (ngModelChange)=\"price.set($event)\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              aria-label=\"Precio unitario de venta\"\n            />\n            <div class=\"input-addon\">$</div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"loan\">\n      <app-fixed-purpose-loan-calc\n        [creditTerms]=\"creditTerms\"\n        [amount]=\"amount()\"\n        (simulatorResultsChange)=\"updateRoi($event)\"\n      ></app-fixed-purpose-loan-calc>\n    </div>\n    <div class=\"roi\">\n      <app-roi-result\n        [income]=\"income()\"\n        [calculatorResult]=\"calculatorResult()\"\n        [registerBaseUrl]=\"registerBaseUrl()\"\n        loanPurpose=\"inventario\"\n        (applicationRequested)=\"applicationRequested.emit($event)\"\n      ></app-roi-result>\n    </div>\n  </div>\n</section>\n\n","import {\n  Component,\n  OnInit,\n  inject,\n  input,\n  output,\n  signal,\n  computed,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { SimulatorsService } from '../../simulator-wrapper/services/simulators.service';\nimport { ICreditSimulatorResult } from '../../simulator-wrapper/models/simulator.model';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'lib-equipment',\n  templateUrl: './equipment.component.html',\n  styleUrls: ['./equipment.component.scss'],\n  standalone: false\n})\nexport class EquipmentComponent implements OnInit {\n  readonly registerBaseUrl = input<string>('https://sempli.co/sucursal/solicitar-credito/');\n  readonly transparentBackground = input<boolean>(false);\n  readonly applicationRequested = output<ICreditSimulatorResult>();\n\n  assetCost = signal<number | null>(null);\n  monthIncome = signal<number | null>(null);\n  serviceYears = signal<number | null>(null);\n  calculatorResult = signal<ICreditSimulatorResult>(undefined);\n\n  readonly amount = computed(() => this.assetCost() || 0);\n  readonly income = computed(() => (this.monthIncome() || 0) * 12 * (this.serviceYears() || 0));\n\n  creditTerms: any[];\n  riskLevels: any[];\n\n  private simulatorsService = inject(SimulatorsService);\n\n  ngOnInit() {\n    this.creditTerms = this.simulatorsService.getCreditTermsByPurpose('ASSETS');\n    this.riskLevels = this.simulatorsService.getAvailableRiskLevels();\n  }\n\n  updateRoi(calculatorResult: ICreditSimulatorResult) {\n    this.calculatorResult.set(calculatorResult);\n  }\n}\n\n","<!-- Section Wrapper Starts -->\n<section class=\"section-wrapper simulators simulators-wrapper\" [class.transparent-bg]=\"transparentBackground()\">\n  <div class=\"container roi-section-header\">\n    <h1>Calcula el retorno de tu inversión en Equipos y/o Maquinaria</h1>\n    <app-roi-description [registerBaseUrl]=\"registerBaseUrl()\" (applicationRequested)=\"applicationRequested.emit($event)\"></app-roi-description>\n  </div>\n  <div class=\"container roi-calculator\">\n    <div class=\"investment\">\n      <h4>Inversión</h4>\n      <div class=\"container grid\">\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper has-addon preppend\">\n            <label for=\"asset-cost\">Costo del nuevo equipo</label>\n            <input\n              id=\"asset-cost\"\n              name=\"asset-cost\"\n              placeholder=\"0\"\n              type=\"text\"\n              [ngModel]=\"assetCost()\"\n              (ngModelChange)=\"assetCost.set($event)\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              aria-label=\"Costo del nuevo equipo\"\n            />\n            <div class=\"input-addon\">$</div>\n          </div>\n        </div>\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper has-addon preppend\">\n            <label for=\"month-income\"\n              >Ingreso mensual por activo productivo</label\n            >\n            <input\n              id=\"month-income\"\n              name=\"month-income\"\n              placeholder=\"0\"\n              type=\"text\"\n              [ngModel]=\"monthIncome()\"\n              (ngModelChange)=\"monthIncome.set($event)\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              aria-label=\"Ingreso mensual por activo productivo\"\n            />\n            <div class=\"input-addon\">$</div>\n          </div>\n        </div>\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper\">\n            <label for=\"service-years\"\n              >Años estimados del activo en servicio</label\n            >\n            <input\n              id=\"service-years\"\n              name=\"service-years\"\n              placeholder=\"0\"\n              type=\"number\"\n              [ngModel]=\"serviceYears()\"\n              (ngModelChange)=\"serviceYears.set($event)\"\n              aria-label=\"Años estimados del activo en servicio\"\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"loan\">\n      <app-fixed-purpose-loan-calc\n        [creditTerms]=\"creditTerms\"\n        [amount]=\"amount()\"\n        (simulatorResultsChange)=\"updateRoi($event)\"\n      ></app-fixed-purpose-loan-calc>\n    </div>\n    <div class=\"roi\">\n      <app-roi-result\n        [income]=\"income()\"\n        [calculatorResult]=\"calculatorResult()\"\n        [registerBaseUrl]=\"registerBaseUrl()\"\n        loanPurpose=\"maquinaria-equipo\"\n        (applicationRequested)=\"applicationRequested.emit($event)\"\n      ></app-roi-result>\n    </div>\n  </div>\n</section>\n","import {\n  Component,\n  OnInit,\n  inject,\n  input,\n  output,\n  signal,\n  computed,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { SimulatorsService } from '../../simulator-wrapper/services/simulators.service';\nimport { ICreditSimulatorResult } from '../../simulator-wrapper/models/simulator.model';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'lib-marketing',\n  templateUrl: './marketing.component.html',\n  styleUrls: ['./marketing.component.scss'],\n  standalone: false\n})\nexport class MarketingComponent implements OnInit {\n  readonly registerBaseUrl = input<string>('https://sempli.co/sucursal/solicitar-credito/');\n  readonly transparentBackground = input<boolean>(false);\n  readonly applicationRequested = output<ICreditSimulatorResult>();\n\n  campaignCost = signal<number | null>(null);\n  clientProfit = signal<number | null>(null);\n  newClients = signal<number | null>(null);\n  calculatorResult = signal<ICreditSimulatorResult>(undefined);\n\n  readonly amount = computed(() => this.campaignCost() || 0);\n  readonly income = computed(() => (this.clientProfit() || 0) * (this.newClients() || 0));\n\n  creditTerms: any[];\n  riskLevels: any[];\n\n  private simulatorsService = inject(SimulatorsService);\n\n  ngOnInit() {\n    this.creditTerms =\n      this.simulatorsService.getCreditTermsByPurpose('MARKETING');\n    this.riskLevels = this.simulatorsService.getAvailableRiskLevels();\n  }\n\n  updateRoi(calculatorResult: ICreditSimulatorResult) {\n    this.calculatorResult.set(calculatorResult);\n  }\n}\n\n","<!-- Section Wrapper Starts -->\n<section class=\"section-wrapper simulators simulators-wrapper\" [class.transparent-bg]=\"transparentBackground()\">\n  <div class=\"container roi-section-header\">\n    <h1>Calcula el retorno de tu inversión en Mercadeo</h1>\n    <app-roi-description [registerBaseUrl]=\"registerBaseUrl()\" (applicationRequested)=\"applicationRequested.emit($event)\"></app-roi-description>\n  </div>\n  <div class=\"container roi-calculator\">\n    <div class=\"investment\">\n      <h4>Inversión</h4>\n      <div class=\"container grid\">\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper has-addon preppend\">\n            <label for=\"campaign-cost\">Costo de la campaña</label>\n            <input\n              id=\"campaign-cost\"\n              name=\"campaign-cost\"\n              placeholder=\"0\"\n              type=\"text\"\n              [ngModel]=\"campaignCost()\"\n              (ngModelChange)=\"campaignCost.set($event)\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              aria-label=\"Costo de la campaña\"\n            />\n            <div class=\"input-addon\">$</div>\n          </div>\n        </div>\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper has-addon preppend\">\n            <label for=\"client-profit\"\n              >Utilidad estimada de un nuevo cliente</label\n            >\n            <input\n              id=\"client-profit\"\n              name=\"client-profit\"\n              placeholder=\"0\"\n              type=\"text\"\n              [ngModel]=\"clientProfit()\"\n              (ngModelChange)=\"clientProfit.set($event)\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              aria-label=\"Utilidad estimada de un nuevo cliente\"\n            />\n            <div class=\"input-addon\">$</div>\n          </div>\n        </div>\n        <div class=\"col sm12 md4\">\n          <div class=\"input-wrapper\">\n            <label for=\"new-clients\"\n              >Número de nuevos clientes (estimado)</label\n            >\n            <input\n              id=\"new-clients\"\n              name=\"new-clients\"\n              placeholder=\"0\"\n              type=\"number\"\n              [ngModel]=\"newClients()\"\n              (ngModelChange)=\"newClients.set($event)\"\n              aria-label=\"Número de nuevos clientes\"\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"loan\">\n      <app-fixed-purpose-loan-calc\n        [creditTerms]=\"creditTerms\"\n        [amount]=\"amount()\"\n        (simulatorResultsChange)=\"updateRoi($event)\"\n      ></app-fixed-purpose-loan-calc>\n    </div>\n    <div class=\"roi\">\n      <app-roi-result\n        [income]=\"income()\"\n        [calculatorResult]=\"calculatorResult()\"\n        [registerBaseUrl]=\"registerBaseUrl()\"\n        loanPurpose=\"mercadeo-ventas\"\n        (applicationRequested)=\"applicationRequested.emit($event)\"\n      ></app-roi-result>\n    </div>\n  </div>\n</section>\n","import {\n  Component,\n  OnInit,\n  inject,\n  input,\n  output,\n  signal,\n  computed,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { SimulatorsService } from '../../simulator-wrapper/services/simulators.service';\nimport { ICreditSimulatorResult } from '../../simulator-wrapper/models/simulator.model';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'lib-human-talent',\n  templateUrl: './human-talent.component.html',\n  styleUrls: ['./human-talent.component.scss'],\n  standalone: false\n})\nexport class HumanTalentComponent implements OnInit {\n  readonly registerBaseUrl = input<string>('https://sempli.co/sucursal/solicitar-credito/');\n  readonly transparentBackground = input<boolean>(false);\n  readonly applicationRequested = output<ICreditSimulatorResult>();\n\n  newEmployees = signal<number | null>(null);\n  salaryAverage = signal<number | null>(null);\n  projectDuration = signal<number | null>(null);\n  projectIncome = signal<number | null>(null);\n  calculatorResult = signal<ICreditSimulatorResult>(undefined);\n\n  readonly amount = computed(\n    () => (this.newEmployees() || 0) * (this.salaryAverage() || 0) * (this.projectDuration() || 0)\n  );\n  readonly income = computed(() => this.projectIncome() || 0);\n\n  creditTerms: any[];\n  riskLevels: any[];\n\n  private simulatorsService = inject(SimulatorsService);\n\n  ngOnInit() {\n    this.creditTerms =\n      this.simulatorsService.getCreditTermsByPurpose('HUMAN_TALENT');\n    this.riskLevels = this.simulatorsService.getAvailableRiskLevels();\n  }\n\n  updateRoi(calculatorResult: ICreditSimulatorResult) {\n    this.calculatorResult.set(calculatorResult);\n  }\n}\n\n","<!-- Section Wrapper Starts -->\n<section class=\"section-wrapper simulators simulators-wrapper\" [class.transparent-bg]=\"transparentBackground()\">\n  <div class=\"container roi-section-header\">\n    <h1>Calcula el retorno de tu inversión en Talento Humano</h1>\n    <app-roi-description [registerBaseUrl]=\"registerBaseUrl()\" (applicationRequested)=\"applicationRequested.emit($event)\"></app-roi-description>\n  </div>\n  <div class=\"container roi-calculator\">\n    <div class=\"investment\">\n      <h4>Inversión</h4>\n      <div class=\"container grid\">\n        <div class=\"col sm12 md3\">\n          <div class=\"input-wrapper\">\n            <label for=\"new-employees\">Número de empleados a contratar</label>\n            <input\n              id=\"new-employees\"\n              name=\"new-employees\"\n              placeholder=\"0\"\n              type=\"number\"\n              [ngModel]=\"newEmployees()\"\n              (ngModelChange)=\"newEmployees.set($event)\"\n              aria-label=\"Número de empleados a contratar\"\n            />\n          </div>\n        </div>\n        <div class=\"col sm12 md3\">\n          <div class=\"input-wrapper has-addon preppend\">\n            <label for=\"salary-average\">Salario promedio nuevo empleado</label>\n            <input\n              id=\"salary-average\"\n              name=\"salary-average\"\n              placeholder=\"0\"\n              type=\"text\"\n              [ngModel]=\"salaryAverage()\"\n              (ngModelChange)=\"salaryAverage.set($event)\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              aria-label=\"Salario promedio nuevo empleado\"\n            />\n            <div class=\"input-addon\">$</div>\n          </div>\n        </div>\n        <div class=\"col sm12 md3\">\n          <div class=\"input-wrapper\">\n            <label for=\"project-duration\">Tiempo estimado del proyecto</label>\n            <input\n              id=\"project-duration\"\n              name=\"project-duration\"\n              placeholder=\"Meses\"\n              type=\"number\"\n              [ngModel]=\"projectDuration()\"\n              (ngModelChange)=\"projectDuration.set($event)\"\n              aria-label=\"Tiempo estimado del proyecto\"\n            />\n          </div>\n        </div>\n        <div class=\"col sm12 md3\">\n          <div class=\"input-wrapper has-addon preppend\">\n            <label for=\"project-income\">Ingresos esperados del proyecto</label>\n            <input\n              id=\"project-income\"\n              name=\"project-income\"\n              placeholder=\"0\"\n              type=\"text\"\n              [ngModel]=\"projectIncome()\"\n              (ngModelChange)=\"projectIncome.set($event)\"\n              mask=\"separator.0\"\n              thousandSeparator=\",\"\n              aria-label=\"Ingresos esperados del proyecto\"\n            />\n            <div class=\"input-addon\">$</div>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"loan\">\n      <app-fixed-purpose-loan-calc\n        [creditTerms]=\"creditTerms\"\n        [amount]=\"amount()\"\n        (simulatorResultsChange)=\"updateRoi($event)\"\n      ></app-fixed-purpose-loan-calc>\n    </div>\n    <div class=\"roi\">\n      <app-roi-result\n        [income]=\"income()\"\n        [calculatorResult]=\"calculatorResult()\"\n        [registerBaseUrl]=\"registerBaseUrl()\"\n        loanPurpose=\"talento-humano\"\n        (applicationRequested)=\"applicationRequested.emit($event)\"\n      ></app-roi-result>\n    </div>\n  </div>\n</section>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';\n\nimport { SimulatorWrapperComponent } from './components/simulator-wrapper/simulator-wrapper.component';\nimport { RiskTooltipComponent } from './components/risk-tooltip/risk-tooltip.component';\n\nimport { InventoryComponent } from './components/roi-simulator/inventory/inventory.component';\nimport { EquipmentComponent } from './components/roi-simulator/equipment/equipment.component';\nimport { MarketingComponent } from './components/roi-simulator/marketing/marketing.component';\nimport { HumanTalentComponent } from './components/roi-simulator/human-talent/human-talent.component';\nimport { FixedPurposeLoanCalcComponent } from './components/roi-simulator/shared/fixed-purpose-loan-calc/fixed-purpose-loan-calc.component';\nimport { RoiResultComponent } from './components/roi-simulator/shared/roi-result/roi-result.component';\nimport { RoiDescriptionComponent } from './components/roi-simulator/shared/roi-description/roi-description.component';\n\n@NgModule({\n  declarations: [\n    SimulatorWrapperComponent,\n    RiskTooltipComponent,\n    InventoryComponent,\n    EquipmentComponent,\n    MarketingComponent,\n    HumanTalentComponent,\n    FixedPurposeLoanCalcComponent,\n    RoiResultComponent,\n    RoiDescriptionComponent\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    RouterModule,\n    NgxMaskDirective,\n    NgxMaskPipe\n  ],\n  exports: [\n    SimulatorWrapperComponent,\n    RiskTooltipComponent,\n    InventoryComponent,\n    EquipmentComponent,\n    MarketingComponent,\n    HumanTalentComponent\n  ]\n})\nexport class SempliWebsiteLibModule {}\n","/*\n * Public API Surface of sempli-website-lib\n */\n\nexport * from './lib/sempli-website-lib.module';\nexport * from './lib/components/simulator-wrapper/simulator-wrapper.component';\nexport * from './lib/components/risk-tooltip/risk-tooltip.component';\nexport * from './lib/components/simulator-wrapper/models/simulator.model';\nexport * from './lib/components/simulator-wrapper/services/simulators.service';\n\nexport { InventoryComponent as LibInventoryComponent } from './lib/components/roi-simulator/inventory/inventory.component';\nexport { EquipmentComponent as LibEquipmentComponent } from './lib/components/roi-simulator/equipment/equipment.component';\nexport { MarketingComponent as LibMarketingComponent } from './lib/components/roi-simulator/marketing/marketing.component';\nexport { HumanTalentComponent as LibHumanTalentComponent } from './lib/components/roi-simulator/human-talent/human-talent.component';\nexport { InventoryComponent } from './lib/components/roi-simulator/inventory/inventory.component';\nexport { EquipmentComponent } from './lib/components/roi-simulator/equipment/equipment.component';\nexport { MarketingComponent } from './lib/components/roi-simulator/marketing/marketing.component';\nexport { HumanTalentComponent } from './lib/components/roi-simulator/human-talent/human-talent.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3.FixedPurposeLoanCalcComponent","i4.RoiResultComponent","i5.RoiDescriptionComponent"],"mappings":"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"}