{"version":3,"file":"ngx-mercadopago-sdk.mjs","sources":["../../../projects/ngx-mercadopago/src/lib/ngx-mercadopago.service.ts","../../../projects/ngx-mercadopago/src/lib/ngx-mercadopago.module.ts","../../../projects/ngx-mercadopago/src/public-api.ts","../../../projects/ngx-mercadopago/src/ngx-mercadopago-sdk.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { MercadopagoSDk, PaymentMethod, PaymentMethodSearch, CardToken, Installments, ErrorData, IdentificationType, InstallmentSearchParams, CardTokenOptions, FieldElement } from './interfaces/mercadopago-sdk';\nimport { NgxMercadopagoConfiguration } from './interfaces/ngx-mercadopago';\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n\n/** @hidden */\nconst pathSDK = 'https://secure.mlstatic.com/sdk/javascript/v1/mercadopago.js';\nconst pathSDKSecurity = 'https://www.mercadopago.com/v2/security.js';\n/** @hidden */\n\ndeclare var MercadoPago: MercadopagoSDk;\n\ndeclare global {\n  interface Window {\n    MercadoPago: any;\n  }\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxMercadopagoService {\n  private initialized!: boolean;\n  private cardNumberElement!: FieldElement;\n  private securityCodeElement!: FieldElement;\n  private paymentMethod!: PaymentMethod;\n\n  constructor(\n    @Inject('config') private config: NgxMercadopagoConfiguration\n  ) {\n    if (!config.pathSDK) {\n      config.pathSDK = pathSDK;\n    }\n\n    if (!config.pathSDKSecurity) {\n      config.pathSDKSecurity = pathSDKSecurity\n    }\n\n    this.initialized = false;\n  }\n\n  initialize(publishKey?: string, loadingOnlyCVC?: boolean): Promise<MercadopagoSDk> {\n    return new Promise((resolve, reject) => {\n      this.loadMPScript(this.config.pathSDKSecurity || pathSDKSecurity, true)\n        .onload = () => {\n\n          const sdkMercadoPago = this.loadMPScript(this.config.pathSDK ?? pathSDK, false);\n\n          sdkMercadoPago.onload = () => {\n            MercadoPago = new window['MercadoPago'](publishKey || this.config.publishKey, { locale: 'pt-BR' });\n\n            this.createForm(loadingOnlyCVC);\n\n            return resolve(MercadoPago);\n          };\n\n          sdkMercadoPago.onerror = (error) => reject(error);\n        };\n\n      this.loadMPScript(pathSDKSecurity).onerror = (error) => reject(error);\n    });\n  }\n\n  loadMPScript(src: string, scurity?: boolean): HTMLScriptElement {\n    const script = document.createElement('script');\n    script.type = 'text/javascript';\n    script.src = src;\n    if (scurity) {\n      script.setAttribute('view', 'checkout');\n      script.setAttribute('output', 'deviceId');\n    }\n    document.body.appendChild(script);\n    return script;\n  }\n\n  async clearSession() {\n    MercadoPago.clearSession();\n  };\n\n  private createForm(loadingOnlyCVC?: boolean) {\n    if (!loadingOnlyCVC) {\n      this.cardNumberElement = MercadoPago.fields.create('cardNumber', {\n        placeholder: \"Número do cartão\"\n      }).mount('cardNumber');\n\n      this.securityCodeElement = MercadoPago.fields.create('securityCode', {\n        placeholder: \"CVC\"\n      }).mount('securityCode');\n\n      MercadoPago.fields.create('expirationDate', {\n        placeholder: \"MM/YY\",\n      }).mount('expirationDate');\n    }\n\n    // Esta etapa melhora as validações cardNumber e securityCode (De acordo com a documentação MP)\n    let currentBin: any;\n    this.cardNumberElement.on('binChange', async (data: any) => {\n      const { bin } = data;\n      if (bin && bin !== currentBin) {\n        this.getPaymentMethods({ bin }).subscribe((result: PaymentMethod[]) => {\n          if (result[0] != undefined) {\n            this.paymentMethod = result[0];\n            this.updatePCIFieldsSettings(result[0]);\n            const transactionAmountElement = document.getElementById('transactionAmount') as HTMLInputElement;\n            this.getInstallments(bin, parseFloat(transactionAmountElement.value));\n          }\n        });\n      }\n    });\n  }\n\n  createToken(form: CardTokenOptions | { cardId: string }): Observable<CardToken | ErrorData> {\n    return from(MercadoPago.fields.createCardToken(form)).pipe(\n      map(response => response)\n    );\n  }\n\n  getPaymentMethods(params?: PaymentMethodSearch): Observable<PaymentMethod[]> {\n    return from(MercadoPago.getPaymentMethods(params)).pipe(\n      map(response => { return response.results })\n    );\n  }\n\n  updatePCIFieldsSettings(paymentMethod: PaymentMethod) {\n    // Atualiza as configurações do cardNumber\n    const cardNumberSettings = paymentMethod.settings[0].card_number;\n    this.cardNumberElement.update({\n      settings: cardNumberSettings\n    });\n\n    // Atualiza as configurações do securityCode\n    const securityCodeSettings = paymentMethod.settings[0].security_code;\n    this.securityCodeElement.update({\n      settings: securityCodeSettings\n    });\n  }\n\n  getIdentificationTypes(): Observable<IdentificationType[]> {\n    return from(MercadoPago.getIdentificationTypes()).pipe(\n      map(response => response)\n    );\n  }\n\n  getInstallments(bin: any, value: number): Observable<Installments[]> {\n    let params: InstallmentSearchParams = {\n      amount: value,\n      bin: bin,\n      paymentTypeId: this.paymentMethod.payment_type_id,\n    }\n\n    return from(MercadoPago.getInstallments(params)).pipe(\n      map(response => response)\n    );\n  }\n\n  validateExpiryDate(month: string, year: string): boolean {\n    return MercadoPago.validateExpiryDate(month, year);\n  }\n}\n","import { ModuleWithProviders, NgModule, PLATFORM_ID, Inject, InjectionToken } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { NgxMercadopagoConfiguration } from './interfaces/ngx-mercadopago';\nimport { NgxMercadopagoService } from './ngx-mercadopago.service';\n\nexport const ConfigToken = new InjectionToken<NgxMercadopagoConfiguration>('NgxMercadopagoConfig'); // Definindo o token de injeção corretamente\n\n@NgModule({\n  imports: []\n})\nexport class NgxMercadopagoModule {\n  private static config: NgxMercadopagoConfiguration | null = null;\n\n  constructor(\n    @Inject(PLATFORM_ID) platformId: Object,\n    private mercadopagoService: NgxMercadopagoService\n  ) {\n    if (!NgxMercadopagoModule.config) {\n      throw new Error('NgxMercadopagoModule não foi configurado corretamente. Passe a propriedade `publishKey` na função `forRoot()`.');\n    }\n    // if (isPlatformBrowser(platformId)) {\n    //   this.mercadopagoService.initialize();\n    // }\n  }\n\n  static forRoot(config: NgxMercadopagoConfiguration): ModuleWithProviders<NgxMercadopagoModule> {\n    this.config = config;\n    return {\n      ngModule: NgxMercadopagoModule,\n      providers: [\n        NgxMercadopagoService,\n        { provide: 'config', useValue: config }\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-mercadopago\n */\n\nexport * from './lib/ngx-mercadopago.service';\nexport * from './lib/ngx-mercadopago.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxMercadopagoService"],"mappings":"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"}