rebill-web-components-sdk 1.8.35 → 1.8.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/apm-checkout_19.cjs.entry.js +2 -2
- package/dist/cjs/card-identification_5.cjs.entry.js +2 -2
- package/dist/cjs/{config-ClgjQet_.js → config-Wx7Bi6_T.js} +3 -3
- package/dist/cjs/config-Wx7Bi6_T.js.map +1 -0
- package/dist/cjs/discount-coupon_2.cjs.entry.js +2 -2
- package/dist/cjs/index-C-VTnc0I.js.map +1 -1
- package/dist/cjs/{index-BCzOaoSU.js → index-D4-MOr9h.js} +3 -3
- package/dist/cjs/{index-BCzOaoSU.js.map → index-D4-MOr9h.js.map} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/otp-component_7.cjs.entry.js +2 -2
- package/dist/cjs/rebill-checkout.cjs.entry.js +4 -5
- package/dist/cjs/rebill-checkout.entry.cjs.js.map +1 -1
- package/dist/cjs/rebill-renewal.cjs.entry.js +2 -2
- package/dist/cjs/renewal-success-page.renewal-summary.entry.cjs.js.map +1 -1
- package/dist/cjs/renewal-success-page_2.cjs.entry.js +0 -3
- package/dist/collection/api/config.js +1 -1
- package/dist/collection/api/config.js.map +1 -1
- package/dist/collection/components/checkout/rebill-checkout.js +2 -3
- package/dist/collection/components/checkout/rebill-checkout.js.map +1 -1
- package/dist/collection/components/renewal/renewal-summary/renewal-summary.js +0 -3
- package/dist/collection/components/renewal/renewal-summary/renewal-summary.js.map +1 -1
- package/dist/components/apm-checkout.js +1 -1
- package/dist/components/card-fields-wrapper.js +1 -1
- package/dist/components/card-identification.js +1 -1
- package/dist/components/card-iframe.js +1 -1
- package/dist/components/discount-coupon.js +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/otp-component.js +1 -1
- package/dist/components/{p-BjaEn-3m.js → p-2qMho_xL.js} +3 -3
- package/dist/{esm/config-BuNv9JwG.js.map → components/p-2qMho_xL.js.map} +1 -1
- package/dist/components/p-8BpuJ_V5.js.map +1 -1
- package/dist/components/{p-DvgE3hKC.js → p-B-3lImmb.js} +3 -3
- package/dist/components/{p-DvgE3hKC.js.map → p-B-3lImmb.js.map} +1 -1
- package/dist/components/{p-D5TXI2Hb.js → p-BD1NqdR9.js} +3 -3
- package/dist/components/{p-D5TXI2Hb.js.map → p-BD1NqdR9.js.map} +1 -1
- package/dist/components/{p-VskO2WrV.js → p-Be6Svr7E.js} +3 -3
- package/dist/components/{p-VskO2WrV.js.map → p-Be6Svr7E.js.map} +1 -1
- package/dist/components/{p-DDVDLDRI.js → p-Bel0mbz7.js} +3 -3
- package/dist/components/{p-DDVDLDRI.js.map → p-Bel0mbz7.js.map} +1 -1
- package/dist/components/{p-mqJmoJIO.js → p-BlD-dFYd.js} +3 -6
- package/dist/components/p-BlD-dFYd.js.map +1 -0
- package/dist/components/{p-Dk10IZbR.js → p-CQS1pU-N.js} +3 -3
- package/dist/components/{p-Dk10IZbR.js.map → p-CQS1pU-N.js.map} +1 -1
- package/dist/components/{p-B4_i6BFO.js → p-CyKDtSI2.js} +3 -3
- package/dist/components/{p-B4_i6BFO.js.map → p-CyKDtSI2.js.map} +1 -1
- package/dist/components/{p-Bln3wBD6.js → p-DZRApK5D.js} +5 -5
- package/dist/components/{p-Bln3wBD6.js.map → p-DZRApK5D.js.map} +1 -1
- package/dist/components/{p-DPpE0kdy.js → p-D_lNAXr_.js} +4 -4
- package/dist/components/{p-DPpE0kdy.js.map → p-D_lNAXr_.js.map} +1 -1
- package/dist/components/{p-OSC_8G2_.js → p-c7IoEGtU.js} +3 -3
- package/dist/components/{p-OSC_8G2_.js.map → p-c7IoEGtU.js.map} +1 -1
- package/dist/components/{p-Dh-yfb0D.js → p-hdBb2rTT.js} +3 -3
- package/dist/components/{p-Dh-yfb0D.js.map → p-hdBb2rTT.js.map} +1 -1
- package/dist/components/{p-BJUr_-ZO.js → p-kh0HdPk5.js} +3 -3
- package/dist/components/{p-BJUr_-ZO.js.map → p-kh0HdPk5.js.map} +1 -1
- package/dist/components/payment-method-selector.js +1 -1
- package/dist/components/rebill-address.js +1 -1
- package/dist/components/rebill-checkout.js +13 -14
- package/dist/components/rebill-checkout.js.map +1 -1
- package/dist/components/rebill-renewal.js +9 -9
- package/dist/components/rebill-summary.js +1 -1
- package/dist/components/renewal-summary.js +1 -1
- package/dist/components/user-information.js +1 -1
- package/dist/esm/apm-checkout_19.entry.js +2 -2
- package/dist/esm/card-identification_5.entry.js +2 -2
- package/dist/esm/{config-BuNv9JwG.js → config-CnVJ8ACO.js} +3 -3
- package/dist/{cjs/config-ClgjQet_.js.map → esm/config-CnVJ8ACO.js.map} +1 -1
- package/dist/esm/discount-coupon_2.entry.js +2 -2
- package/dist/esm/{index-BOj-Hiz8.js → index-8R_YGXw4.js} +3 -3
- package/dist/esm/{index-BOj-Hiz8.js.map → index-8R_YGXw4.js.map} +1 -1
- package/dist/esm/index-D8cwEAmw.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/otp-component_7.entry.js +2 -2
- package/dist/esm/rebill-checkout.entry.js +4 -5
- package/dist/esm/rebill-checkout.entry.js.map +1 -1
- package/dist/esm/rebill-renewal.entry.js +2 -2
- package/dist/esm/renewal-success-page.renewal-summary.entry.js.map +1 -1
- package/dist/esm/renewal-success-page_2.entry.js +0 -3
- package/dist/rebill-web-components-sdk/index.esm.js +1 -1
- package/dist/rebill-web-components-sdk/{p-28d04513.entry.js → p-2ddabd39.entry.js} +2 -2
- package/dist/rebill-web-components-sdk/{p-bde8f6aa.entry.js → p-3a585ddc.entry.js} +2 -2
- package/dist/rebill-web-components-sdk/p-3a585ddc.entry.js.map +1 -0
- package/dist/rebill-web-components-sdk/{p-736d2bdc.entry.js → p-3d02e7e9.entry.js} +2 -2
- package/dist/rebill-web-components-sdk/p-405ab8da.entry.js +2 -0
- package/dist/rebill-web-components-sdk/{p-6667496c.entry.js.map → p-405ab8da.entry.js.map} +1 -1
- package/dist/rebill-web-components-sdk/{p-D339jHg4.js → p-B5khCLtC.js} +2 -2
- package/dist/rebill-web-components-sdk/{p-D339jHg4.js.map → p-B5khCLtC.js.map} +1 -1
- package/dist/rebill-web-components-sdk/{p-CTo1s54i.js → p-D2_UL7f8.js} +4 -4
- package/dist/rebill-web-components-sdk/{p-CTo1s54i.js.map → p-D2_UL7f8.js.map} +1 -1
- package/dist/rebill-web-components-sdk/p-D8cwEAmw.js.map +1 -1
- package/dist/rebill-web-components-sdk/{p-392fb691.entry.js → p-b8613f04.entry.js} +2 -2
- package/dist/rebill-web-components-sdk/{p-852bb04c.entry.js → p-d016b0d6.entry.js} +2 -2
- package/dist/rebill-web-components-sdk/{p-8bf5ce94.entry.js → p-ee460f6c.entry.js} +2 -2
- package/dist/rebill-web-components-sdk/rebill-checkout.entry.esm.js.map +1 -1
- package/dist/rebill-web-components-sdk/rebill-web-components-sdk.esm.js +1 -1
- package/dist/rebill-web-components-sdk/renewal-success-page.renewal-summary.entry.esm.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/p-BjaEn-3m.js.map +0 -1
- package/dist/components/p-mqJmoJIO.js.map +0 -1
- package/dist/rebill-web-components-sdk/p-6667496c.entry.js +0 -2
- package/dist/rebill-web-components-sdk/p-bde8f6aa.entry.js.map +0 -1
- /package/dist/rebill-web-components-sdk/{p-28d04513.entry.js.map → p-2ddabd39.entry.js.map} +0 -0
- /package/dist/rebill-web-components-sdk/{p-736d2bdc.entry.js.map → p-3d02e7e9.entry.js.map} +0 -0
- /package/dist/rebill-web-components-sdk/{p-392fb691.entry.js.map → p-b8613f04.entry.js.map} +0 -0
- /package/dist/rebill-web-components-sdk/{p-852bb04c.entry.js.map → p-d016b0d6.entry.js.map} +0 -0
- /package/dist/rebill-web-components-sdk/{p-8bf5ce94.entry.js.map → p-ee460f6c.entry.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-BlD-dFYd.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18n","formatDateByLocale","sessionState"],"sources":["src/components/renewal/renewal-summary/renewal-summary.css?tag=renewal-summary","src/components/renewal/renewal-summary/renewal-summary.tsx"],"sourcesContent":[".wrapper {\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.header {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n.title {\n font-size: 1rem;\n font-weight: 500;\n color: var(--rebill-color-primary-dark-text);\n text-align: center;\n}\n\n.amount {\n font-size: 2.25rem;\n font-weight: 500;\n color: var(--rebill-color-primary-dark-text);\n margin: 0 0 1.5rem 0;\n text-align: center;\n line-height: 1.1;\n}\n\n.per {\n font-size: 1.1rem;\n font-weight: 400;\n color: var(--rebill-color-text-secondary);\n}\n\n.label-muted {\n font-size: 1rem;\n color: var(--rebill-color-primary-dark);\n margin: 0 0 1.5rem 0;\n text-align: center;\n}\n\n.info {\n width: 100%;\n margin-top: 1.5rem;\n margin-bottom: 3rem;\n display: flex;\n flex-direction: column;\n gap: 1.4rem;\n}\n\n.row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 1rem;\n line-height: 1.4;\n width: 100%;\n}\n\n.left {\n color: var(--rebill-color-text-secondary);\n font-weight: 400;\n}\n\n.right {\n color: var(--rebill-color-primary-dark-text);\n font-weight: 400;\n text-align: right;\n}\n\n.divider {\n border: none;\n border-top: 1px solid var(--rebill-color-border);\n margin: 1rem 0;\n}\n\n@media (max-width: 1024px) {\n .amount {\n margin-bottom: 0;\n }\n .row {\n font-size: 0.9rem;\n }\n .row:not(:last-child) {\n margin-bottom: 0.5rem;\n }\n .left {\n color: var(--rebill-color-primary-dark-text);\n }\n}\n\n.total-row {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 1.1rem;\n font-weight: 600;\n}\n\n.total-row .left {\n color: var(--rebill-color-primary-dark-text);\n}\n","import { Component, h, Prop, State } from '@stencil/core';\nimport i18n from '../../../i18n/i18n.config';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { sessionState } from '../../../store/session.store';\nimport { formatAmount } from '../../../utils/currency-formatter';\nimport { formatDate as formatDateByLocale } from '../../../utils/date-formatter';\n\n@Component({\n tag: 'renewal-summary',\n styleUrl: 'renewal-summary.css',\n shadow: false,\n})\nexport class RenewalSummary {\n @State() private forceUpdate = 0;\n @Prop() displayedComponents: ('header' | 'details' | 'summary')[] = [\n 'header',\n 'details',\n 'summary',\n ];\n @Prop() totalAmount!: number;\n @Prop() subTotalAmount!: number;\n @Prop() subscriptionTitle!: string;\n @Prop() subscriptionAmount!: number;\n @Prop() nextChargeDate?: string;\n @Prop() frequency?: { count: number; period: string };\n @Prop() currency: string;\n @Prop() couponCode?: string;\n @Prop() discountAmount?: number;\n @Prop() discountPercentage?: number;\n\n componentWillLoad() {\n i18n.on('languageChanged', this.handleLanguageChange);\n }\n\n disconnectedCallback() {\n i18n.off('languageChanged', this.handleLanguageChange);\n }\n\n private handleLanguageChange = () => {\n this.forceUpdate = this.forceUpdate + 1;\n };\n\n private getFrequencyText(): string {\n if (!this.frequency || !this.frequency.period) return '';\n\n const period = this.frequency.period.toLowerCase();\n const count = this.frequency.count;\n\n const translationKey = `summary.${period}`;\n return I18nService.translate(translationKey, { count });\n }\n\n private getDiscountAmount(): number {\n if (this.totalAmount < this.subTotalAmount) {\n return this.subTotalAmount - this.totalAmount;\n }\n\n return this.discountAmount || 0;\n }\n\n renderHeader = () => {\n return (\n <div class=\"header\">\n <p class=\"title\">{I18nService.translate('renewal.title')}</p>\n <p class=\"amount\">\n <span class=\"total-amount\">{formatAmount(this.totalAmount, this.currency)}</span>{' '}\n <span class=\"per\">/ {this.getFrequencyText().toLowerCase()}</span>\n </p>\n </div>\n );\n };\n\n renderInfoRow = (label: string, value: string) => {\n return (\n <div class=\"row\">\n <div class=\"left\">{label}</div>\n <div class=\"right\">{value}</div>\n </div>\n );\n };\n\n renderProduct = () => {\n return this.renderInfoRow(\n this.subscriptionTitle,\n formatAmount(this.subscriptionAmount, this.currency),\n );\n };\n\n renderNextRenewal = () => {\n return this.renderInfoRow(\n I18nService.translate('renewal.nextRenewal'),\n formatDateByLocale(this.nextChargeDate, undefined, sessionState.currentLocale),\n );\n };\n\n renderSubtotal = () => {\n return this.renderInfoRow(\n I18nService.translate('renewal.subtotal'),\n formatAmount(this.subTotalAmount, this.currency),\n );\n };\n\n private renderDiscount = () => {\n if (this.getDiscountAmount() <= 0) return null;\n return (\n <div class=\"row\">\n <div class=\"left\">{I18nService.translate('summary.discount')}</div>\n <div class=\"right discount-chip-wrapper\">\n <discount-coupon\n displayMode=\"readonly\"\n readonlyCouponCode={this.couponCode || undefined}\n readonlyDiscountAmount={this.getDiscountAmount()}\n readonlyCurrency={this.currency}\n />\n </div>\n </div>\n );\n };\n\n renderTotal = () => {\n return (\n <div class=\"total-row\">\n <div class=\"left\">{I18nService.translate('renewal.totalToRenew')}</div>\n <div class=\"right\">{formatAmount(this.totalAmount, this.currency)}</div>\n </div>\n );\n };\n\n renderDesktop = () => {\n return (\n <div class=\"wrapper\">\n {this.renderHeader()}\n <div class=\"info\">\n <div class=\"row\">\n <div class=\"\">{I18nService.translate('renewal.subscriptionDetails')}</div>\n </div>\n {this.renderProduct()}\n {this.renderNextRenewal()}\n {this.renderSubtotal()}\n {this.renderDiscount()}\n </div>\n\n {this.renderTotal()}\n </div>\n );\n };\n\n render() {\n if (\n this.displayedComponents.includes('header') &&\n this.displayedComponents.includes('details') &&\n this.displayedComponents.includes('summary')\n ) {\n return this.renderDesktop();\n }\n if (this.displayedComponents.includes('header')) {\n return this.renderHeader();\n }\n if (this.displayedComponents.includes('details')) {\n return (\n <collapsible-card header={I18nService.translate('summary.details')}>\n {this.renderProduct()}\n {this.renderNextRenewal()}\n </collapsible-card>\n );\n }\n if (this.displayedComponents.includes('summary')) {\n return (\n <collapsible-card header={I18nService.translate('summary.summary')}>\n {this.renderInfoRow(\n this.subscriptionTitle,\n '1 x ' + formatAmount(this.subscriptionAmount, this.currency),\n )}\n {this.renderSubtotal()}\n {this.renderDiscount()}\n\n <rebill-divider />\n {this.renderInfoRow(\n I18nService.translate('renewal.totalToRenew'),\n formatAmount(this.totalAmount, this.currency),\n )}\n </collapsible-card>\n );\n }\n }\n}\n"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { proxyCustomElement, H, createEvent, h } from './p-8BpuJ_V5.js';
|
|
2
|
-
import { a as api } from './p-
|
|
2
|
+
import { a as api } from './p-hdBb2rTT.js';
|
|
3
3
|
import { s as state, a as SessionStore, I as I18nService } from './p-CMzpQU2o.js';
|
|
4
4
|
import { C as COLORS_ENUM } from './p-DA598vBj.js';
|
|
5
5
|
import { c as createCountdownTimer } from './p-bcHxwlBu.js';
|
|
@@ -172,6 +172,6 @@ function defineCustomElement() {
|
|
|
172
172
|
defineCustomElement();
|
|
173
173
|
|
|
174
174
|
export { Otp as O, defineCustomElement as d };
|
|
175
|
-
//# sourceMappingURL=p-
|
|
175
|
+
//# sourceMappingURL=p-CQS1pU-N.js.map
|
|
176
176
|
|
|
177
|
-
//# sourceMappingURL=p-
|
|
177
|
+
//# sourceMappingURL=p-CQS1pU-N.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-Dk10IZbR.js","mappings":";;;;;;;;;;;AAAA,MAAM,MAAM,GAAG,sgDAAsgD;;MCaxgD,GAAG,iBAAAA,kBAAA,CAAA,MAAA,GAAA,SAAAC,CAAA,CAAA;;;;;;;;;;AACL,IAAA,gBAAgB;IAChB,QAAQ,GAAW,EAAE;IACrB,cAAc,GAAY,KAAK;IAC/B,UAAU,GAAY,KAAK;IAC3B,WAAW,GAAY,KAAK;IAC5B,QAAQ,GAAW,EAAE;AACrB,IAAA,UAAU;AACV,IAAA,YAAY;IACZ,KAAK,GAAY,KAAK;IAEvB,KAAK,GAAG,oBAAoB,CAAC;AACnC,QAAA,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,QAAQ,IAAG;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;SACzB;QACD,UAAU,EAAE,MAAK;AACf,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;SAC5B;AACF,KAAA,CAAC;IAEM,YAAY,GAAG,oBAAoB,CAAC;AAC1C,QAAA,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,MAAK;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;SACxB;AACF,KAAA,CAAC;IAEF,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGnB,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;IAG5B,gBAAgB,GAAG,YAAW;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAACC,KAAY,CAAC,IAAI,CAAC,SAAS,EAAE;AAClD,gBAAA,KAAK,EAAEA,KAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK;AAC/C,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;YACzB,IAAI,CAAC,UAAU,EAAE;AAEjB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAEtB,KAAC;AAED,IAAA,eAAe,GAAG,CAAC,KAAa,KAAI;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAEtB,KAAC;AAED,IAAA,eAAe,GAAG,OAAO,GAAW,KAAI;AACtC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAACA,KAAY,CAAC,IAAI,CAAC,SAAS,EAAE;AACjE,gBAAA,KAAK,EAAEA,KAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK;AAC9C,gBAAA,IAAI,EAAE,GAAG;AACV,aAAA,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrC,YAAY,CAAC,kBAAkB,CAAC;AAC9B,gBAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ;gBACzB,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAA,CAAC,IAAI,EAAE;AACzF,gBAAA,WAAW,EAAE;AACX,oBAAA,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM;AACrD,oBAAA,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW;AAChE,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE;AACd,wBAAA,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO;AACpD,wBAAA,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO;AAChD,wBAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;AAC9C,wBAAA,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;AAChD,wBAAA,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO;AACrD,qBAAA;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;AAC5D,gBAAA,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK;AAChE,aAAA,CAAC;YACF,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YACtD,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;QAClB,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;gBACT;AACR,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAE5B,KAAC;IAED,MAAM,GAAA;QACJ,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,oBAAoB,EAAA,EAC7B,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,uBAAuB,EAAA,EAChC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,gCAAgC,EAAA,EACzC,CAAA,CAAA,mBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAmB,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,sBAAsB,EAC5D,EAAA,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CACvB,EACpB,CAAA,CAAA,mBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAmB,OAAO,EAAC,eAAe,EAAC,KAAK,EAAC,6BAA6B,EAAA,EAC3E,GAAG,EACJ,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAS,WAAW,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAU,EAAC,GAAG,CACnD,EACpB,CAAA,CAAA,mBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAmB,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,4BAA4B,EAClE,EAAA,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAC5B,CAChB,EACN,CAAA,CAAA,mBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAmB,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,qBAAqB,EAAA,EAC3DA,KAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAC5C,CAACA,KAAY,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,KACtC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,mBAAmB,EACzB,OAAO,EAAE,MAAK;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B,EAAA,EAEA,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAC/B,CACR,CACiB,CAChB,EACN,CAAA,CAAA,WAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EACxD,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,EAC3D,CAAA,EAED,IAAI,CAAC,WAAW,KACf,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,0BAA0B,EAAA,EACnC,CAAA,CAAA,mBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAmB,OAAO,EAAC,WAAW,EAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAA,EAC9D,WAAW,CAAC,SAAS,CAAC,mBAAmB,CAAC,CACzB,EACpB,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,cAAc,EAAA,CAAO,CAC5B,CACP,EACD,CACE,CAAA,eAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,WAAW,GAAG,SAAS,EACpD,QAAQ,EAAE,IAAI,CAAC,cAAc,EAC7B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAA,EAE7C,IAAI,CAAC;AACJ,cAAE,CAAA,EAAG,WAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAG,CAAA;cACjF,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAC7B,EAEf,IAAI,CAAC,UAAU,KACd,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,4BAA4B,EAAA,EACrC,CAAmB,CAAA,mBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,OAAO,EAAC,WAAW,EAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAA,EAC7D,CAAa,CAAA,aAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,aAAa,EAAG,CAAA,EACjC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CACtB,CAChB,CACP,EACD,CAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,mBAAmB,EACzB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,cAAc,EACtB,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,EACjD,IAAI,EAAC,aAAa,EAClB,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,EAClD,SAAS,EAAE,WAAW,CAAC,kBAAkB,EACzC,CAAA,EACF,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,kBAAkB,EAAA,EAC3B,CAAmB,CAAA,mBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,OAAO,EAAC,OAAO,EAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAA,EAAA,GAAA,CAE9C,CAChB,EACN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oBAAoB,EAAA,EAC7B,CAAA,CAAA,eAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAK;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B,IAEA,WAAW,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAC/B,EAEhB,CACE,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,gBAAgB,EACxB,IAAI,EAAC,cAAc,EACnB,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,mBAAmB,CAAC,EACnD,CAAA,CACE,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/otp/otp.css?tag=otp-component","src/components/checkout/otp/otp.tsx"],"sourcesContent":[".otp__otp-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n width: 100%;\n position: relative;\n margin-top: 2rem;\n}\n\n.otp__user-information {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n gap: 8px;\n}\n\n.otp__otp-description-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 4px;\n}\n.otp__change-email {\n cursor: pointer;\n text-decoration: underline;\n margin-left: 0;\n}\n\n.otp__change-email:hover {\n color: var(--rebill-primary-color);\n text-decoration: underline;\n}\n\n.otp__alternative {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 16px;\n margin: 32px;\n width: 100%;\n}\n\n.otp__rebill-alert {\n width: 100%;\n}\n\n.otp__guest-options {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 8px;\n margin-top: auto;\n}\n\n.otp__verifying-container {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n margin: 8px 0;\n}\n\n.otp__code-resent-container rebill-typography {\n display: flex;\n line-height: 1;\n}\n\n.otp__code-resent-container rebill-icon {\n flex-shrink: 0;\n display: inline-flex;\n vertical-align: middle;\n margin-right: 8px;\n}\n\n.otp__spinner {\n width: 15px;\n height: 15px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-radius: 50%;\n border-top-color: var(--rebill-color-primary);\n animation: spin 1s linear infinite;\n display: inline-block;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Responsive adjustments */\n@media (max-width: 1024px) {\n .otp__otp-container {\n min-height: calc(100vh - 40px);\n }\n\n .otp__guest-options {\n margin-top: 32px;\n }\n}\n\n@media (min-width: 1025px) {\n .otp__otp-container {\n justify-content: flex-start;\n }\n\n .otp__guest-options {\n margin-top: auto;\n padding-bottom: 2rem;\n }\n}\n","import { Component, Event, EventEmitter, h, State } from '@stencil/core';\nimport { api } from '../../../api';\nimport { OTPVerifyResponse } from '../../../api/entities/OTP/types';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { sessionState, SessionStore } from '../../../store/session.store';\nimport { COLORS_ENUM } from '../../../utils/color-class-mapper';\nimport { createCountdownTimer } from '../../../utils/timer';\n\n@Component({\n tag: 'otp-component',\n styleUrl: 'otp.css',\n shadow: false,\n})\nexport class Otp {\n @Event() changeEmailClick: EventEmitter<void>;\n @State() timeLeft: number = 59;\n @State() isTimerRunning: boolean = false;\n @State() codeResent: boolean = false;\n @State() isVerifying: boolean = false;\n @State() otpValue: string = '';\n @Event() returnForm: EventEmitter<boolean>;\n @Event() codeVerified: EventEmitter<OTPVerifyResponse>;\n @State() error: boolean = false;\n\n private timer = createCountdownTimer({\n duration: 59,\n onTick: timeLeft => {\n this.timeLeft = timeLeft;\n },\n onComplete: () => {\n this.isTimerRunning = false;\n },\n });\n\n private messageTimer = createCountdownTimer({\n duration: 5,\n onComplete: () => {\n this.codeResent = false;\n },\n });\n\n disconnectedCallback() {\n this.timer.stop();\n }\n\n startTimer() {\n this.timer.start();\n this.isTimerRunning = true;\n }\n\n handleResendCode = async () => {\n if (!this.isTimerRunning) {\n await api.otp.generate(sessionState.data.sessionId, {\n email: sessionState.data.userInformation.email,\n });\n this.codeResent = true;\n this.messageTimer.start();\n this.startTimer();\n\n this.error = false;\n }\n };\n\n handleOtpChange = (value: string) => {\n this.otpValue = value;\n\n if (value.length === 6) {\n this.handleVerifyOtp(value);\n this.error = false;\n }\n };\n\n handleVerifyOtp = async (otp: string) => {\n this.isVerifying = true;\n try {\n const response = await api.otp.verify(sessionState.data.sessionId, {\n email: sessionState.data.userInformation.email,\n code: otp,\n });\n\n this.codeVerified.emit(response.data);\n SessionStore.setUserInformation({\n ...response.data.customer,\n fullName: `${response.data.customer.firstName} ${response.data.customer.lastName}`.trim(),\n phoneNumber: {\n number: response.data.customer.phoneNumbers[0].number,\n countryCode: response.data.customer.phoneNumbers[0].countryCode,\n },\n address: {\n billingAddress: {\n address: response.data.customer.addresses[0].lineOne,\n zip: response.data.customer.addresses[0].zipCode,\n city: response.data.customer.addresses[0].city,\n state: response.data.customer.addresses[0].state,\n country: response.data.customer.addresses[0].country,\n },\n },\n documentType: response.data.customer.identifications[0].type,\n documentNumber: response.data.customer.identifications[0].value,\n });\n SessionStore.setAccessToken(response.data.accessToken);\n SessionStore.setCustomerId(response.data.customer.id);\n this.otpValue = '';\n this.error = false;\n } catch (error) {\n this.error = true;\n } finally {\n this.isVerifying = false;\n }\n };\n\n render() {\n return (\n <div class=\"otp__otp-container\">\n <div class=\"otp__user-information\">\n <div class=\"otp__otp-description-container\">\n <rebill-typography variant=\"body2\" class=\"otp__otp-description\">\n {I18nService.translate('otp.description')}\n </rebill-typography>\n <rebill-typography variant=\"subtitle-bold\" class=\"otp__otp-description-digits\">\n {' '}\n <strong>{I18nService.translate('otp.descriptionDigits')}</strong>{' '}\n </rebill-typography>\n <rebill-typography variant=\"body2\" class=\"otp__otp-description-email\">\n {I18nService.translate('otp.descriptionEmail')}\n </rebill-typography>\n </div>\n <rebill-typography variant=\"body2\" class=\"otp__otp-email-line\">\n {sessionState.data.userInformation.email}{' '}\n {!sessionState.data.prefilledData?.email && (\n <span\n class=\"otp__change-email\"\n onClick={() => {\n this.otpValue = '';\n this.error = false;\n this.returnForm.emit(false);\n }}\n >\n {I18nService.translate('otp.change')}\n </span>\n )}\n </rebill-typography>\n </div>\n <input-otp\n otp={this.otpValue}\n onOtpChange={event => this.handleOtpChange(event.detail)}\n error={this.error ? I18nService.translate('otp.error') : ''}\n />\n\n {this.isVerifying && (\n <div class=\"otp__verifying-container\">\n <rebill-typography variant=\"subtitle2\" color={COLORS_ENUM.PRIMARY}>\n {I18nService.translate('otp.verifyingCode')}\n </rebill-typography>\n <div class=\"otp__spinner\"></div>\n </div>\n )}\n <rebill-button\n type=\"button\"\n variant=\"outline\"\n theme={this.isTimerRunning ? 'secondary' : 'primary'}\n disabled={this.isTimerRunning}\n onClick={this.handleResendCode}\n size=\"small\"\n style={{ height: '24px', marginBottom: '8px' }}\n >\n {this.isTimerRunning\n ? `${I18nService.translate('otp.resendCodeIn')} (${this.timer.getFormattedTime()})`\n : I18nService.translate('otp.resendCode')}\n </rebill-button>\n\n {this.codeResent && (\n <div class=\"otp__code-resent-container\">\n <rebill-typography variant=\"subtitle2\" color={COLORS_ENUM.GREEN}>\n <rebill-icon name=\"check-radio\" />\n {I18nService.translate('otp.codeResent')}\n </rebill-typography>\n </div>\n )}\n <rebill-alert\n class=\"otp__rebill-alert\"\n type=\"secure\"\n variant=\"variant-info\"\n message={I18nService.translate('otp.infoMessage')}\n icon=\"circle-info\"\n alertTitle={I18nService.translate('otp.infoTitle')}\n colorIcon={COLORS_ENUM.PRIMARY_DARK_LIGHT}\n />\n <div class=\"otp__alternative\">\n <rebill-typography variant=\"body2\" color={COLORS_ENUM.PRIMARY_DARK}>\n o\n </rebill-typography>\n </div>\n <div class=\"otp__guest-options\">\n <rebill-button\n type=\"button\"\n variant=\"outline\"\n theme=\"secondary\"\n size=\"medium\"\n onClick={() => {\n this.otpValue = '';\n this.error = false;\n this.returnForm.emit(false);\n }}\n >\n {I18nService.translate('otp.continueAsGuest')}\n </rebill-button>\n\n <rebill-alert\n type=\"secure\"\n variant=\"variant-secure\"\n icon=\"lock-outline\"\n message={I18nService.translate('otp.secureMessage')}\n />\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-CQS1pU-N.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/otp/otp.css?tag=otp-component","src/components/checkout/otp/otp.tsx"],"sourcesContent":[".otp__otp-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n width: 100%;\n position: relative;\n margin-top: 2rem;\n}\n\n.otp__user-information {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n gap: 8px;\n}\n\n.otp__otp-description-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 4px;\n}\n.otp__change-email {\n cursor: pointer;\n text-decoration: underline;\n margin-left: 0;\n}\n\n.otp__change-email:hover {\n color: var(--rebill-primary-color);\n text-decoration: underline;\n}\n\n.otp__alternative {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 16px;\n margin: 32px;\n width: 100%;\n}\n\n.otp__rebill-alert {\n width: 100%;\n}\n\n.otp__guest-options {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 8px;\n margin-top: auto;\n}\n\n.otp__verifying-container {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n margin: 8px 0;\n}\n\n.otp__code-resent-container rebill-typography {\n display: flex;\n line-height: 1;\n}\n\n.otp__code-resent-container rebill-icon {\n flex-shrink: 0;\n display: inline-flex;\n vertical-align: middle;\n margin-right: 8px;\n}\n\n.otp__spinner {\n width: 15px;\n height: 15px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-radius: 50%;\n border-top-color: var(--rebill-color-primary);\n animation: spin 1s linear infinite;\n display: inline-block;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Responsive adjustments */\n@media (max-width: 1024px) {\n .otp__otp-container {\n min-height: calc(100vh - 40px);\n }\n\n .otp__guest-options {\n margin-top: 32px;\n }\n}\n\n@media (min-width: 1025px) {\n .otp__otp-container {\n justify-content: flex-start;\n }\n\n .otp__guest-options {\n margin-top: auto;\n padding-bottom: 2rem;\n }\n}\n","import { Component, Event, EventEmitter, h, State } from '@stencil/core';\nimport { api } from '../../../api';\nimport { OTPVerifyResponse } from '../../../api/entities/OTP/types';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { sessionState, SessionStore } from '../../../store/session.store';\nimport { COLORS_ENUM } from '../../../utils/color-class-mapper';\nimport { createCountdownTimer } from '../../../utils/timer';\n\n@Component({\n tag: 'otp-component',\n styleUrl: 'otp.css',\n shadow: false,\n})\nexport class Otp {\n @Event() changeEmailClick: EventEmitter<void>;\n @State() timeLeft: number = 59;\n @State() isTimerRunning: boolean = false;\n @State() codeResent: boolean = false;\n @State() isVerifying: boolean = false;\n @State() otpValue: string = '';\n @Event() returnForm: EventEmitter<boolean>;\n @Event() codeVerified: EventEmitter<OTPVerifyResponse>;\n @State() error: boolean = false;\n\n private timer = createCountdownTimer({\n duration: 59,\n onTick: timeLeft => {\n this.timeLeft = timeLeft;\n },\n onComplete: () => {\n this.isTimerRunning = false;\n },\n });\n\n private messageTimer = createCountdownTimer({\n duration: 5,\n onComplete: () => {\n this.codeResent = false;\n },\n });\n\n disconnectedCallback() {\n this.timer.stop();\n }\n\n startTimer() {\n this.timer.start();\n this.isTimerRunning = true;\n }\n\n handleResendCode = async () => {\n if (!this.isTimerRunning) {\n await api.otp.generate(sessionState.data.sessionId, {\n email: sessionState.data.userInformation.email,\n });\n this.codeResent = true;\n this.messageTimer.start();\n this.startTimer();\n\n this.error = false;\n }\n };\n\n handleOtpChange = (value: string) => {\n this.otpValue = value;\n\n if (value.length === 6) {\n this.handleVerifyOtp(value);\n this.error = false;\n }\n };\n\n handleVerifyOtp = async (otp: string) => {\n this.isVerifying = true;\n try {\n const response = await api.otp.verify(sessionState.data.sessionId, {\n email: sessionState.data.userInformation.email,\n code: otp,\n });\n\n this.codeVerified.emit(response.data);\n SessionStore.setUserInformation({\n ...response.data.customer,\n fullName: `${response.data.customer.firstName} ${response.data.customer.lastName}`.trim(),\n phoneNumber: {\n number: response.data.customer.phoneNumbers[0].number,\n countryCode: response.data.customer.phoneNumbers[0].countryCode,\n },\n address: {\n billingAddress: {\n address: response.data.customer.addresses[0].lineOne,\n zip: response.data.customer.addresses[0].zipCode,\n city: response.data.customer.addresses[0].city,\n state: response.data.customer.addresses[0].state,\n country: response.data.customer.addresses[0].country,\n },\n },\n documentType: response.data.customer.identifications[0].type,\n documentNumber: response.data.customer.identifications[0].value,\n });\n SessionStore.setAccessToken(response.data.accessToken);\n SessionStore.setCustomerId(response.data.customer.id);\n this.otpValue = '';\n this.error = false;\n } catch (error) {\n this.error = true;\n } finally {\n this.isVerifying = false;\n }\n };\n\n render() {\n return (\n <div class=\"otp__otp-container\">\n <div class=\"otp__user-information\">\n <div class=\"otp__otp-description-container\">\n <rebill-typography variant=\"body2\" class=\"otp__otp-description\">\n {I18nService.translate('otp.description')}\n </rebill-typography>\n <rebill-typography variant=\"subtitle-bold\" class=\"otp__otp-description-digits\">\n {' '}\n <strong>{I18nService.translate('otp.descriptionDigits')}</strong>{' '}\n </rebill-typography>\n <rebill-typography variant=\"body2\" class=\"otp__otp-description-email\">\n {I18nService.translate('otp.descriptionEmail')}\n </rebill-typography>\n </div>\n <rebill-typography variant=\"body2\" class=\"otp__otp-email-line\">\n {sessionState.data.userInformation.email}{' '}\n {!sessionState.data.prefilledData?.email && (\n <span\n class=\"otp__change-email\"\n onClick={() => {\n this.otpValue = '';\n this.error = false;\n this.returnForm.emit(false);\n }}\n >\n {I18nService.translate('otp.change')}\n </span>\n )}\n </rebill-typography>\n </div>\n <input-otp\n otp={this.otpValue}\n onOtpChange={event => this.handleOtpChange(event.detail)}\n error={this.error ? I18nService.translate('otp.error') : ''}\n />\n\n {this.isVerifying && (\n <div class=\"otp__verifying-container\">\n <rebill-typography variant=\"subtitle2\" color={COLORS_ENUM.PRIMARY}>\n {I18nService.translate('otp.verifyingCode')}\n </rebill-typography>\n <div class=\"otp__spinner\"></div>\n </div>\n )}\n <rebill-button\n type=\"button\"\n variant=\"outline\"\n theme={this.isTimerRunning ? 'secondary' : 'primary'}\n disabled={this.isTimerRunning}\n onClick={this.handleResendCode}\n size=\"small\"\n style={{ height: '24px', marginBottom: '8px' }}\n >\n {this.isTimerRunning\n ? `${I18nService.translate('otp.resendCodeIn')} (${this.timer.getFormattedTime()})`\n : I18nService.translate('otp.resendCode')}\n </rebill-button>\n\n {this.codeResent && (\n <div class=\"otp__code-resent-container\">\n <rebill-typography variant=\"subtitle2\" color={COLORS_ENUM.GREEN}>\n <rebill-icon name=\"check-radio\" />\n {I18nService.translate('otp.codeResent')}\n </rebill-typography>\n </div>\n )}\n <rebill-alert\n class=\"otp__rebill-alert\"\n type=\"secure\"\n variant=\"variant-info\"\n message={I18nService.translate('otp.infoMessage')}\n icon=\"circle-info\"\n alertTitle={I18nService.translate('otp.infoTitle')}\n colorIcon={COLORS_ENUM.PRIMARY_DARK_LIGHT}\n />\n <div class=\"otp__alternative\">\n <rebill-typography variant=\"body2\" color={COLORS_ENUM.PRIMARY_DARK}>\n o\n </rebill-typography>\n </div>\n <div class=\"otp__guest-options\">\n <rebill-button\n type=\"button\"\n variant=\"outline\"\n theme=\"secondary\"\n size=\"medium\"\n onClick={() => {\n this.otpValue = '';\n this.error = false;\n this.returnForm.emit(false);\n }}\n >\n {I18nService.translate('otp.continueAsGuest')}\n </rebill-button>\n\n <rebill-alert\n type=\"secure\"\n variant=\"variant-secure\"\n icon=\"lock-outline\"\n message={I18nService.translate('otp.secureMessage')}\n />\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { proxyCustomElement, H, createEvent, h } from './p-8BpuJ_V5.js';
|
|
2
|
-
import { a as api } from './p-
|
|
2
|
+
import { a as api } from './p-hdBb2rTT.js';
|
|
3
3
|
import { I as I18nService, o as onChange, s as state, a as SessionStore } from './p-CMzpQU2o.js';
|
|
4
4
|
import { d as defineCustomElement$6 } from './p-tPSCwC9B.js';
|
|
5
5
|
import { d as defineCustomElement$5 } from './p-D8ihKDeQ.js';
|
|
@@ -254,6 +254,6 @@ function defineCustomElement() {
|
|
|
254
254
|
defineCustomElement();
|
|
255
255
|
|
|
256
256
|
export { Address as A, defineCustomElement as d };
|
|
257
|
-
//# sourceMappingURL=p-
|
|
257
|
+
//# sourceMappingURL=p-CyKDtSI2.js.map
|
|
258
258
|
|
|
259
|
-
//# sourceMappingURL=p-
|
|
259
|
+
//# sourceMappingURL=p-CyKDtSI2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-B4_i6BFO.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/address/address.css?tag=rebill-address","src/components/checkout/address/address.tsx"],"sourcesContent":["@import '../../../styles/variables.css';\n\n:host {\n display: block;\n}\n\n.billing-header-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.address-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n}\n\n.state-zip-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n.state-zip-row rebill-input-select,\n.state-zip-row rebill-input-text {\n flex: 1;\n}\n\n.search-input-container {\n margin-top: 8px;\n}\n\n.manual-entry-link-wrapper {\n margin-top: 8px;\n text-align: left;\n}\n\n.manual-entry-link {\n background: none;\n border: none;\n color: var(--rebill-color-primary);\n cursor: pointer;\n text-decoration: underline;\n font-size: 14px;\n padding: 4px 8px;\n transition: color 0.2s ease;\n text-decoration: none;\n}\n\n.manual-entry-link:hover {\n text-decoration: underline;\n text-decoration-color: var(--rebill-color-text-secondary);\n}\n\n.same-as-shipping-section {\n margin: 24px 0;\n padding: 16px 0;\n}\n\n.shipping-address-section {\n margin-top: 24px;\n padding-top: 24px;\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State } from '@stencil/core';\nimport { api } from '../../../api';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { onChange, sessionState, SessionStore } from '../../../store/session.store';\nimport { AddressComponents } from '../../../utils';\n\n@Component({\n tag: 'rebill-address',\n styleUrl: 'address.css',\n shadow: false,\n})\nexport class Address {\n @Element() el: HTMLElement;\n @Prop({ mutable: true, reflect: true }) billingView: 'search' | 'form' = 'search';\n @State() currentBillingStateOptions: { label: string; value: string }[] = [];\n @State() isLoadingAddress: boolean = false;\n @Prop() disabled: boolean = false;\n\n @Prop() countryOptions: { label: string; value: string }[] = [];\n\n @Prop() errors?: {\n 'billing-country': string;\n 'billing-state': string;\n 'billing-address': string;\n 'billing-city': string;\n 'billing-zip': string;\n } | null = null;\n\n private unsubscribeAddressStore?: () => void;\n\n private translateError(errorKey: string | undefined): string {\n if (!errorKey) return '';\n if (errorKey.includes('validation.') || errorKey.includes('paymentErrors.')) {\n return I18nService.translate(errorKey);\n }\n return errorKey;\n }\n\n @Event() addressUpdated: EventEmitter<{\n country: string;\n state: string;\n address: string;\n city: string;\n zip: string;\n }>;\n\n componentDidLoad() {\n this.unsubscribeAddressStore = onChange('data', () => {\n const billingAddress = sessionState.data.userInformation.address?.billingAddress;\n\n if (billingAddress) {\n const addressData: AddressComponents = {\n country: billingAddress.country || '',\n state: billingAddress.state || '',\n address: billingAddress.address || '',\n city: billingAddress.city || '',\n zip: billingAddress.zip || '',\n };\n\n this.emitInputEventsForAddress(addressData);\n }\n });\n }\n\n disconnectedCallback() {\n if (this.unsubscribeAddressStore) {\n this.unsubscribeAddressStore();\n }\n }\n\n private async handleAddressSelected(address: AddressComponents) {\n this.isLoadingAddress = true;\n\n // Normalize text function for handling accents and special characters\n const normalizeText = (text: string) => {\n return text\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '') // Remove accents\n .replace(/\\./g, '') // Remove dots\n .replace(/\\s+/g, ' ') // Normalize spaces\n .trim();\n };\n this.billingView = 'form';\n\n if (address.country) {\n await this.loadStatesForCountry(address.country);\n\n // Compare Google state with API states\n if (address.state && this.currentBillingStateOptions.length > 0) {\n const exactMatch = this.currentBillingStateOptions.find(\n option => option.value.toLowerCase() === address.state.toLowerCase(),\n );\n\n const partialMatch = this.currentBillingStateOptions.find(\n option =>\n option.value.toLowerCase().includes(address.state.toLowerCase()) ||\n address.state.toLowerCase().includes(option.value.toLowerCase()),\n );\n\n // Try to find matches with common variations\n const normalizedGoogleState = normalizeText(address.state)\n .replace('ciudad de ', '')\n .replace('estado de ', '')\n .replace('provincia de ', '');\n\n const normalizedMatch = this.currentBillingStateOptions.find(option => {\n const normalizedOption = normalizeText(option.value)\n .replace('ciudad de ', '')\n .replace('estado de ', '')\n .replace('provincia de ', '');\n\n const matches =\n normalizedOption === normalizedGoogleState ||\n normalizedOption.startsWith(normalizedGoogleState + ' ') ||\n normalizedGoogleState.startsWith(normalizedOption + ' ');\n return matches;\n });\n\n if (exactMatch) {\n address.state = exactMatch.value;\n } else if (normalizedMatch) {\n address.state = normalizedMatch.value;\n } else if (partialMatch) {\n address.state = partialMatch.value;\n } else {\n address.state = undefined;\n }\n }\n }\n SessionStore.setBillingAddress(address);\n\n this.addressUpdated.emit({\n country: address.country || '',\n address: address.address || '',\n city: address.city || '',\n state: address.state || undefined,\n zip: address.zip || '',\n });\n\n // Use requestAnimationFrame to ensure the form is rendered with the new state options\n // before emitting events. This ensures the state field can be properly populated.\n requestAnimationFrame(() => {\n this.emitInputEventsForAddress(address);\n setTimeout(() => {\n this.isLoadingAddress = false;\n }, 500);\n });\n }\n\n private emitInputEventsForAddress(address: AddressComponents) {\n // Emit input events for each address field that has a value\n // This mimics user input to properly clear validation errors\n const fields = [\n { id: `billing-country`, value: address.country },\n { id: `billing-address`, value: address.address },\n { id: `billing-city`, value: address.city },\n { id: `billing-state`, value: address.state },\n { id: `billing-zip`, value: address.zip },\n ];\n\n fields.forEach(field => {\n if (field.value) {\n this.emitInputEvent(field.id, field.value);\n }\n });\n }\n\n private emitInputEvent(id: string, value: string) {\n if (value) {\n // Create and dispatch a custom input event that the form component can listen to\n const inputEvent = new CustomEvent('input', {\n detail: { id, value },\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(inputEvent);\n }\n }\n\n private async loadStatesForCountry(countryCode: string) {\n try {\n const response = await api.data.getStates(countryCode);\n const statesResponse = response.data;\n const stateOptions =\n statesResponse && statesResponse.states\n ? statesResponse.states.map(state => ({ label: state, value: state }))\n : [];\n\n this.currentBillingStateOptions = stateOptions;\n } catch (error) {\n this.currentBillingStateOptions = [];\n }\n }\n\n private handleManualEntry = () => {\n this.billingView = 'form';\n };\n\n private handleSearchEntry = () => {\n this.billingView = 'search';\n };\n\n private async handleInput(field: string, value: string) {\n if (value === undefined) return;\n SessionStore.setBillingAddress({ [field]: value } as any);\n // Emit input event to form to sync with form data\n this.emitInputEvent(`billing-${field}`, value);\n\n // If country changes, load states for the new country\n if (field === 'country') {\n await this.loadStatesForCountry(value);\n // Clear the current state selection since the country changed\n SessionStore.setBillingAddress({ state: '' } as any);\n }\n }\n\n private renderAddressHeader() {\n return (\n <div class=\"billing-header-row\">\n <rebill-typography variant=\"body2\">\n {I18nService.translate('billingAddress.title')}\n </rebill-typography>\n </div>\n );\n }\n\n private renderAddressForm() {\n if (this.billingView === 'search') {\n const addressError =\n this.translateError(this.errors?.['billing-address']) ||\n this.translateError(this.errors?.['billing-country']) ||\n this.translateError(this.errors?.['billing-state']) ||\n this.translateError(this.errors?.['billing-city']) ||\n this.translateError(this.errors?.['billing-zip']) ||\n '';\n return (\n <div>\n {this.renderAddressHeader()}\n <rebill-address-search\n onAddressSelected={e => this.handleAddressSelected(e.detail)}\n onManualEntryRequested={() => this.handleManualEntry()}\n error={addressError}\n disabled={this.disabled}\n />\n </div>\n );\n }\n\n const errorsToShow = this.isLoadingAddress ? null : this.errors;\n\n return (\n <div>\n {this.renderAddressHeader()}\n <rebill-address-form\n countryOptions={this.countryOptions}\n stateOptions={this.currentBillingStateOptions}\n errors={errorsToShow}\n disabled={this.disabled}\n onFieldChanged={e => this.handleInput(e.detail.field, e.detail.value)}\n onSearchRequested={() => this.handleSearchEntry()}\n />\n </div>\n );\n }\n\n render() {\n return (\n <div>\n {/* Billing Address */}\n {this.renderAddressForm()}\n </div>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-CyKDtSI2.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/address/address.css?tag=rebill-address","src/components/checkout/address/address.tsx"],"sourcesContent":["@import '../../../styles/variables.css';\n\n:host {\n display: block;\n}\n\n.billing-header-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.address-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n}\n\n.state-zip-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n.state-zip-row rebill-input-select,\n.state-zip-row rebill-input-text {\n flex: 1;\n}\n\n.search-input-container {\n margin-top: 8px;\n}\n\n.manual-entry-link-wrapper {\n margin-top: 8px;\n text-align: left;\n}\n\n.manual-entry-link {\n background: none;\n border: none;\n color: var(--rebill-color-primary);\n cursor: pointer;\n text-decoration: underline;\n font-size: 14px;\n padding: 4px 8px;\n transition: color 0.2s ease;\n text-decoration: none;\n}\n\n.manual-entry-link:hover {\n text-decoration: underline;\n text-decoration-color: var(--rebill-color-text-secondary);\n}\n\n.same-as-shipping-section {\n margin: 24px 0;\n padding: 16px 0;\n}\n\n.shipping-address-section {\n margin-top: 24px;\n padding-top: 24px;\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State } from '@stencil/core';\nimport { api } from '../../../api';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { onChange, sessionState, SessionStore } from '../../../store/session.store';\nimport { AddressComponents } from '../../../utils';\n\n@Component({\n tag: 'rebill-address',\n styleUrl: 'address.css',\n shadow: false,\n})\nexport class Address {\n @Element() el: HTMLElement;\n @Prop({ mutable: true, reflect: true }) billingView: 'search' | 'form' = 'search';\n @State() currentBillingStateOptions: { label: string; value: string }[] = [];\n @State() isLoadingAddress: boolean = false;\n @Prop() disabled: boolean = false;\n\n @Prop() countryOptions: { label: string; value: string }[] = [];\n\n @Prop() errors?: {\n 'billing-country': string;\n 'billing-state': string;\n 'billing-address': string;\n 'billing-city': string;\n 'billing-zip': string;\n } | null = null;\n\n private unsubscribeAddressStore?: () => void;\n\n private translateError(errorKey: string | undefined): string {\n if (!errorKey) return '';\n if (errorKey.includes('validation.') || errorKey.includes('paymentErrors.')) {\n return I18nService.translate(errorKey);\n }\n return errorKey;\n }\n\n @Event() addressUpdated: EventEmitter<{\n country: string;\n state: string;\n address: string;\n city: string;\n zip: string;\n }>;\n\n componentDidLoad() {\n this.unsubscribeAddressStore = onChange('data', () => {\n const billingAddress = sessionState.data.userInformation.address?.billingAddress;\n\n if (billingAddress) {\n const addressData: AddressComponents = {\n country: billingAddress.country || '',\n state: billingAddress.state || '',\n address: billingAddress.address || '',\n city: billingAddress.city || '',\n zip: billingAddress.zip || '',\n };\n\n this.emitInputEventsForAddress(addressData);\n }\n });\n }\n\n disconnectedCallback() {\n if (this.unsubscribeAddressStore) {\n this.unsubscribeAddressStore();\n }\n }\n\n private async handleAddressSelected(address: AddressComponents) {\n this.isLoadingAddress = true;\n\n // Normalize text function for handling accents and special characters\n const normalizeText = (text: string) => {\n return text\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '') // Remove accents\n .replace(/\\./g, '') // Remove dots\n .replace(/\\s+/g, ' ') // Normalize spaces\n .trim();\n };\n this.billingView = 'form';\n\n if (address.country) {\n await this.loadStatesForCountry(address.country);\n\n // Compare Google state with API states\n if (address.state && this.currentBillingStateOptions.length > 0) {\n const exactMatch = this.currentBillingStateOptions.find(\n option => option.value.toLowerCase() === address.state.toLowerCase(),\n );\n\n const partialMatch = this.currentBillingStateOptions.find(\n option =>\n option.value.toLowerCase().includes(address.state.toLowerCase()) ||\n address.state.toLowerCase().includes(option.value.toLowerCase()),\n );\n\n // Try to find matches with common variations\n const normalizedGoogleState = normalizeText(address.state)\n .replace('ciudad de ', '')\n .replace('estado de ', '')\n .replace('provincia de ', '');\n\n const normalizedMatch = this.currentBillingStateOptions.find(option => {\n const normalizedOption = normalizeText(option.value)\n .replace('ciudad de ', '')\n .replace('estado de ', '')\n .replace('provincia de ', '');\n\n const matches =\n normalizedOption === normalizedGoogleState ||\n normalizedOption.startsWith(normalizedGoogleState + ' ') ||\n normalizedGoogleState.startsWith(normalizedOption + ' ');\n return matches;\n });\n\n if (exactMatch) {\n address.state = exactMatch.value;\n } else if (normalizedMatch) {\n address.state = normalizedMatch.value;\n } else if (partialMatch) {\n address.state = partialMatch.value;\n } else {\n address.state = undefined;\n }\n }\n }\n SessionStore.setBillingAddress(address);\n\n this.addressUpdated.emit({\n country: address.country || '',\n address: address.address || '',\n city: address.city || '',\n state: address.state || undefined,\n zip: address.zip || '',\n });\n\n // Use requestAnimationFrame to ensure the form is rendered with the new state options\n // before emitting events. This ensures the state field can be properly populated.\n requestAnimationFrame(() => {\n this.emitInputEventsForAddress(address);\n setTimeout(() => {\n this.isLoadingAddress = false;\n }, 500);\n });\n }\n\n private emitInputEventsForAddress(address: AddressComponents) {\n // Emit input events for each address field that has a value\n // This mimics user input to properly clear validation errors\n const fields = [\n { id: `billing-country`, value: address.country },\n { id: `billing-address`, value: address.address },\n { id: `billing-city`, value: address.city },\n { id: `billing-state`, value: address.state },\n { id: `billing-zip`, value: address.zip },\n ];\n\n fields.forEach(field => {\n if (field.value) {\n this.emitInputEvent(field.id, field.value);\n }\n });\n }\n\n private emitInputEvent(id: string, value: string) {\n if (value) {\n // Create and dispatch a custom input event that the form component can listen to\n const inputEvent = new CustomEvent('input', {\n detail: { id, value },\n bubbles: true,\n composed: true,\n });\n this.el.dispatchEvent(inputEvent);\n }\n }\n\n private async loadStatesForCountry(countryCode: string) {\n try {\n const response = await api.data.getStates(countryCode);\n const statesResponse = response.data;\n const stateOptions =\n statesResponse && statesResponse.states\n ? statesResponse.states.map(state => ({ label: state, value: state }))\n : [];\n\n this.currentBillingStateOptions = stateOptions;\n } catch (error) {\n this.currentBillingStateOptions = [];\n }\n }\n\n private handleManualEntry = () => {\n this.billingView = 'form';\n };\n\n private handleSearchEntry = () => {\n this.billingView = 'search';\n };\n\n private async handleInput(field: string, value: string) {\n if (value === undefined) return;\n SessionStore.setBillingAddress({ [field]: value } as any);\n // Emit input event to form to sync with form data\n this.emitInputEvent(`billing-${field}`, value);\n\n // If country changes, load states for the new country\n if (field === 'country') {\n await this.loadStatesForCountry(value);\n // Clear the current state selection since the country changed\n SessionStore.setBillingAddress({ state: '' } as any);\n }\n }\n\n private renderAddressHeader() {\n return (\n <div class=\"billing-header-row\">\n <rebill-typography variant=\"body2\">\n {I18nService.translate('billingAddress.title')}\n </rebill-typography>\n </div>\n );\n }\n\n private renderAddressForm() {\n if (this.billingView === 'search') {\n const addressError =\n this.translateError(this.errors?.['billing-address']) ||\n this.translateError(this.errors?.['billing-country']) ||\n this.translateError(this.errors?.['billing-state']) ||\n this.translateError(this.errors?.['billing-city']) ||\n this.translateError(this.errors?.['billing-zip']) ||\n '';\n return (\n <div>\n {this.renderAddressHeader()}\n <rebill-address-search\n onAddressSelected={e => this.handleAddressSelected(e.detail)}\n onManualEntryRequested={() => this.handleManualEntry()}\n error={addressError}\n disabled={this.disabled}\n />\n </div>\n );\n }\n\n const errorsToShow = this.isLoadingAddress ? null : this.errors;\n\n return (\n <div>\n {this.renderAddressHeader()}\n <rebill-address-form\n countryOptions={this.countryOptions}\n stateOptions={this.currentBillingStateOptions}\n errors={errorsToShow}\n disabled={this.disabled}\n onFieldChanged={e => this.handleInput(e.detail.field, e.detail.value)}\n onSearchRequested={() => this.handleSearchEntry()}\n />\n </div>\n );\n }\n\n render() {\n return (\n <div>\n {/* Billing Address */}\n {this.renderAddressForm()}\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -3,9 +3,9 @@ import { P as PAYMENT_METHOD_ENUM, I as I18nService, s as state, b as SESSION_IT
|
|
|
3
3
|
import { C as COLORS_ENUM } from './p-DA598vBj.js';
|
|
4
4
|
import { g as getCountryPaymentMethods } from './p-lrq3TCNp.js';
|
|
5
5
|
import { g as getPaymentMethodDisplayName } from './p-BOXqUkEO.js';
|
|
6
|
-
import { d as defineCustomElement$c } from './p-
|
|
7
|
-
import { d as defineCustomElement$b } from './p-
|
|
8
|
-
import { d as defineCustomElement$a } from './p-
|
|
6
|
+
import { d as defineCustomElement$c } from './p-D_lNAXr_.js';
|
|
7
|
+
import { d as defineCustomElement$b } from './p-kh0HdPk5.js';
|
|
8
|
+
import { d as defineCustomElement$a } from './p-Bel0mbz7.js';
|
|
9
9
|
import { d as defineCustomElement$9 } from './p-C0LGxeng.js';
|
|
10
10
|
import { d as defineCustomElement$8 } from './p-Dl_1nkw6.js';
|
|
11
11
|
import { d as defineCustomElement$7 } from './p-CWY-g0zG.js';
|
|
@@ -244,6 +244,6 @@ function defineCustomElement() {
|
|
|
244
244
|
defineCustomElement();
|
|
245
245
|
|
|
246
246
|
export { PaymentMethodSelector as P, defineCustomElement as d };
|
|
247
|
-
//# sourceMappingURL=p-
|
|
247
|
+
//# sourceMappingURL=p-DZRApK5D.js.map
|
|
248
248
|
|
|
249
|
-
//# sourceMappingURL=p-
|
|
249
|
+
//# sourceMappingURL=p-DZRApK5D.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-Bln3wBD6.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/payment-method-selector/payment-method-selector.css?tag=payment-method-selector","src/components/checkout/payment-method-selector/payment-method-selector.tsx"],"sourcesContent":[".payment-method-selector {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.card-description-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-start;\n width: 100%;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop, State } from '@stencil/core';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { SESSION_ITEM_TYPE_ENUM } from '../../../models';\nimport { PAYMENT_METHOD_ENUM } from '../../../models/enums/payment-methods.enum';\nimport { sessionState } from '../../../store/session.store';\nimport { COLORS_ENUM } from '../../../utils/color-class-mapper';\nimport { getCountryPaymentMethods } from '../../../utils/countries-payment-methods';\nimport { getPaymentMethodDisplayName } from '../../../utils/get-payment-method-display-name';\n\nexport interface CardError {\n showCardInvalid: boolean;\n type: 'tokenization_error' | 'card_error' | null;\n}\n@Component({\n tag: 'payment-method-selector',\n styleUrl: 'payment-method-selector.css',\n shadow: false,\n})\nexport class PaymentMethodSelector {\n @Prop() enabledPaymentMethods: PAYMENT_METHOD_ENUM[] = [];\n\n @Prop() defaultSelected?: PAYMENT_METHOD_ENUM;\n @Prop() showErrorComponent: boolean = false;\n @Prop() cardError: CardError;\n // currency country\n @Prop() country?: string;\n @Prop() installmentsError?: string;\n @Prop() documentTypeError?: string;\n @Prop() showDocument?: boolean;\n @Prop() documentNumberError?: string;\n @Prop() customCSS?: string;\n @Prop() errorComponent?: {\n showErrorComponent: boolean;\n alertTitle?: string;\n message: string;\n };\n @Prop() disabled?: boolean = false;\n @State() icon: string = '';\n\n @State() selectedPaymentMethod: PAYMENT_METHOD_ENUM;\n @State() saveCard: boolean = false;\n\n @Event() paymentMethodSelected: EventEmitter<PAYMENT_METHOD_ENUM>;\n\n componentWillLoad() {\n if (this.enabledPaymentMethods.length > 0) {\n this.selectedPaymentMethod = this.defaultSelected || this.enabledPaymentMethods[0];\n\n if (this.enabledPaymentMethods.length === 1) {\n this.paymentMethodSelected.emit(this.selectedPaymentMethod);\n }\n }\n this.getPaymentMethodIcon(this.selectedPaymentMethod);\n }\n\n componentWillUpdate() {\n // Update selected payment method when defaultSelected prop changes\n if (this.defaultSelected && this.selectedPaymentMethod !== this.defaultSelected) {\n this.selectedPaymentMethod = this.defaultSelected;\n }\n }\n\n private getPaymentMethodConfig(method: PAYMENT_METHOD_ENUM) {\n const countryPaymentMethods = this.country ? getCountryPaymentMethods(this.country) : null;\n\n const countrySpecificMethod = countryPaymentMethods?.find(pm => pm.type === method);\n\n // Default configurations (fallback)\n const defaultConfigs = {\n [PAYMENT_METHOD_ENUM.CARD]: {\n key: PAYMENT_METHOD_ENUM.CARD,\n label: I18nService.translate('paymentMethods.card'),\n icons: ['doblecard'],\n },\n [PAYMENT_METHOD_ENUM.CASH]: {\n key: PAYMENT_METHOD_ENUM.CASH,\n label: I18nService.translate('paymentMethods.cash'),\n icons: ['pago-facil'],\n },\n [PAYMENT_METHOD_ENUM.BANK_TRANSFER]: {\n key: PAYMENT_METHOD_ENUM.BANK_TRANSFER,\n label:\n this.country === 'AR'\n ? I18nService.translate('paymentMethods.bank_transfer_qr')\n : I18nService.translate('paymentMethods.bank_transfer'),\n icons: ['plus'],\n },\n };\n\n const defaultConfig = defaultConfigs[method];\n\n // If we have country-specific icons, use them; otherwise use defaults\n return {\n ...defaultConfig,\n icons: countrySpecificMethod?.icons || defaultConfig.icons,\n };\n }\n\n private getPaymentMethodIcon(paymentMethod: PAYMENT_METHOD_ENUM) {\n this.icon = getPaymentMethodDisplayName(paymentMethod, this.country)?.toLowerCase() || 'card';\n return this.icon;\n }\n\n handlePaymentMethodSelected(paymentMethod: PAYMENT_METHOD_ENUM) {\n if (this.disabled) {\n return;\n }\n this.selectedPaymentMethod = paymentMethod;\n this.paymentMethodSelected.emit(paymentMethod);\n }\n\n // handleSaveCardChange(event: any) {\n // this.saveCard = event?.target?.checked;\n // SessionStore.setSaveCard(this.saveCard);\n // }\n\n @Listen('selectableCardClick')\n handleSelectableCardClick(event: CustomEvent<string>) {\n if (this.disabled) {\n return;\n }\n const paymentMethodKey = event.detail as PAYMENT_METHOD_ENUM;\n this.handlePaymentMethodSelected(paymentMethodKey);\n }\n\n render() {\n if (this.enabledPaymentMethods.length === 0) {\n return null;\n }\n\n return (\n <div class=\"payment-method-selector\">\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between',\n }}\n >\n {this.enabledPaymentMethods.length === 1 &&\n (() => {\n const config = this.getPaymentMethodConfig(this.enabledPaymentMethods[0]);\n return (\n <single-payment-method\n paymentMethod={this.enabledPaymentMethods[0]}\n currencyCountry={this.country}\n paymentMethodDetails={[]}\n icons={config.icons}\n style={{\n display: 'flex',\n flex: '1 1 0',\n }}\n />\n );\n })()}\n {this.enabledPaymentMethods.length > 1 &&\n this.enabledPaymentMethods.map(paymentMethod => {\n const config = this.getPaymentMethodConfig(paymentMethod);\n return (\n <selectable-card\n style={{ flex: '1 1 0' }}\n selected={this.selectedPaymentMethod === paymentMethod}\n card-key={config.key}\n label={config.label}\n disabled={this.disabled}\n >\n <span slot=\"icon\">\n <div\n style={{ display: 'flex', alignItems: 'center', gap: '8px', height: '24px' }}\n >\n {config.icons.map(iconName => {\n return (\n <rebill-icon\n name={iconName}\n color={\n this.disabled && paymentMethod === PAYMENT_METHOD_ENUM.CARD\n ? COLORS_ENUM.NEUTRALS_500\n : 'currentColor'\n }\n />\n );\n })}\n </div>\n </span>\n </selectable-card>\n );\n })}\n </div>\n <div>\n {this.cardError.showCardInvalid &&\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD ? (\n <rebill-alert\n type=\"error\"\n alertTitle={\n this.cardError.type === 'tokenization_error'\n ? I18nService.translate('validation.tokenError')\n : I18nService.translate('validation.cardInvalid')\n }\n variant=\"outlined\"\n message={\n this.cardError.type === 'tokenization_error'\n ? I18nService.translate('validation.tokenErrorDescription')\n : I18nService.translate('validation.cardInvalidDescription')\n }\n icon=\"error\"\n />\n ) : this.errorComponent.showErrorComponent ? (\n <rebill-alert\n type=\"error\"\n alertTitle={this.errorComponent.alertTitle}\n message={this.errorComponent.message}\n variant=\"outlined\"\n icon=\"error\"\n />\n ) : null}\n </div>\n {this.enabledPaymentMethods.length > 1 &&\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD &&\n sessionState.data?.itemInformation?.type !== SESSION_ITEM_TYPE_ENUM.PLAN && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n }}\n >\n {/* <rebill-input-checkbox\n id=\"saveCard\"\n checked={this.saveCard}\n label={I18nService.translate('paymentMethods.saveCard')}\n onInput={event => this.handleSaveCardChange(event)}\n /> */}\n </div>\n )}\n {this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD && (\n <>\n {/* {this.enabledPaymentMethods.length > 1 && (\n <div class=\"card-description-container\">\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <rebill-typography variant=\"body2\" color={COLORS_ENUM.TEXT_PRIMARY}>\n {I18nService.translate('paymentMethods.cardDescription')}\n </rebill-typography>\n <rebill-card-carousel\n size=\"24px\"\n color=\"currentColor\"\n show-all-cards=\"false\"\n ></rebill-card-carousel>\n </div>\n </div>\n )} */}\n <div>\n <card-fields-wrapper\n installmentsError={this.installmentsError}\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n showDocument={this.showDocument}\n customCSS={this.customCSS}\n />\n </div>\n </>\n )}\n {/* Mostrar campos de documento para BANK_TRANSFER y CASH cuando showDocument es true */}\n {(this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER ||\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CASH) &&\n this.showDocument && (\n <div>\n <card-identification\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n disabled={this.disabled}\n />\n </div>\n )}\n </div>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-DZRApK5D.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/payment-method-selector/payment-method-selector.css?tag=payment-method-selector","src/components/checkout/payment-method-selector/payment-method-selector.tsx"],"sourcesContent":[".payment-method-selector {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.card-description-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-start;\n width: 100%;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop, State } from '@stencil/core';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { SESSION_ITEM_TYPE_ENUM } from '../../../models';\nimport { PAYMENT_METHOD_ENUM } from '../../../models/enums/payment-methods.enum';\nimport { sessionState } from '../../../store/session.store';\nimport { COLORS_ENUM } from '../../../utils/color-class-mapper';\nimport { getCountryPaymentMethods } from '../../../utils/countries-payment-methods';\nimport { getPaymentMethodDisplayName } from '../../../utils/get-payment-method-display-name';\n\nexport interface CardError {\n showCardInvalid: boolean;\n type: 'tokenization_error' | 'card_error' | null;\n}\n@Component({\n tag: 'payment-method-selector',\n styleUrl: 'payment-method-selector.css',\n shadow: false,\n})\nexport class PaymentMethodSelector {\n @Prop() enabledPaymentMethods: PAYMENT_METHOD_ENUM[] = [];\n\n @Prop() defaultSelected?: PAYMENT_METHOD_ENUM;\n @Prop() showErrorComponent: boolean = false;\n @Prop() cardError: CardError;\n // currency country\n @Prop() country?: string;\n @Prop() installmentsError?: string;\n @Prop() documentTypeError?: string;\n @Prop() showDocument?: boolean;\n @Prop() documentNumberError?: string;\n @Prop() customCSS?: string;\n @Prop() errorComponent?: {\n showErrorComponent: boolean;\n alertTitle?: string;\n message: string;\n };\n @Prop() disabled?: boolean = false;\n @State() icon: string = '';\n\n @State() selectedPaymentMethod: PAYMENT_METHOD_ENUM;\n @State() saveCard: boolean = false;\n\n @Event() paymentMethodSelected: EventEmitter<PAYMENT_METHOD_ENUM>;\n\n componentWillLoad() {\n if (this.enabledPaymentMethods.length > 0) {\n this.selectedPaymentMethod = this.defaultSelected || this.enabledPaymentMethods[0];\n\n if (this.enabledPaymentMethods.length === 1) {\n this.paymentMethodSelected.emit(this.selectedPaymentMethod);\n }\n }\n this.getPaymentMethodIcon(this.selectedPaymentMethod);\n }\n\n componentWillUpdate() {\n // Update selected payment method when defaultSelected prop changes\n if (this.defaultSelected && this.selectedPaymentMethod !== this.defaultSelected) {\n this.selectedPaymentMethod = this.defaultSelected;\n }\n }\n\n private getPaymentMethodConfig(method: PAYMENT_METHOD_ENUM) {\n const countryPaymentMethods = this.country ? getCountryPaymentMethods(this.country) : null;\n\n const countrySpecificMethod = countryPaymentMethods?.find(pm => pm.type === method);\n\n // Default configurations (fallback)\n const defaultConfigs = {\n [PAYMENT_METHOD_ENUM.CARD]: {\n key: PAYMENT_METHOD_ENUM.CARD,\n label: I18nService.translate('paymentMethods.card'),\n icons: ['doblecard'],\n },\n [PAYMENT_METHOD_ENUM.CASH]: {\n key: PAYMENT_METHOD_ENUM.CASH,\n label: I18nService.translate('paymentMethods.cash'),\n icons: ['pago-facil'],\n },\n [PAYMENT_METHOD_ENUM.BANK_TRANSFER]: {\n key: PAYMENT_METHOD_ENUM.BANK_TRANSFER,\n label:\n this.country === 'AR'\n ? I18nService.translate('paymentMethods.bank_transfer_qr')\n : I18nService.translate('paymentMethods.bank_transfer'),\n icons: ['plus'],\n },\n };\n\n const defaultConfig = defaultConfigs[method];\n\n // If we have country-specific icons, use them; otherwise use defaults\n return {\n ...defaultConfig,\n icons: countrySpecificMethod?.icons || defaultConfig.icons,\n };\n }\n\n private getPaymentMethodIcon(paymentMethod: PAYMENT_METHOD_ENUM) {\n this.icon = getPaymentMethodDisplayName(paymentMethod, this.country)?.toLowerCase() || 'card';\n return this.icon;\n }\n\n handlePaymentMethodSelected(paymentMethod: PAYMENT_METHOD_ENUM) {\n if (this.disabled) {\n return;\n }\n this.selectedPaymentMethod = paymentMethod;\n this.paymentMethodSelected.emit(paymentMethod);\n }\n\n // handleSaveCardChange(event: any) {\n // this.saveCard = event?.target?.checked;\n // SessionStore.setSaveCard(this.saveCard);\n // }\n\n @Listen('selectableCardClick')\n handleSelectableCardClick(event: CustomEvent<string>) {\n if (this.disabled) {\n return;\n }\n const paymentMethodKey = event.detail as PAYMENT_METHOD_ENUM;\n this.handlePaymentMethodSelected(paymentMethodKey);\n }\n\n render() {\n if (this.enabledPaymentMethods.length === 0) {\n return null;\n }\n\n return (\n <div class=\"payment-method-selector\">\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between',\n }}\n >\n {this.enabledPaymentMethods.length === 1 &&\n (() => {\n const config = this.getPaymentMethodConfig(this.enabledPaymentMethods[0]);\n return (\n <single-payment-method\n paymentMethod={this.enabledPaymentMethods[0]}\n currencyCountry={this.country}\n paymentMethodDetails={[]}\n icons={config.icons}\n style={{\n display: 'flex',\n flex: '1 1 0',\n }}\n />\n );\n })()}\n {this.enabledPaymentMethods.length > 1 &&\n this.enabledPaymentMethods.map(paymentMethod => {\n const config = this.getPaymentMethodConfig(paymentMethod);\n return (\n <selectable-card\n style={{ flex: '1 1 0' }}\n selected={this.selectedPaymentMethod === paymentMethod}\n card-key={config.key}\n label={config.label}\n disabled={this.disabled}\n >\n <span slot=\"icon\">\n <div\n style={{ display: 'flex', alignItems: 'center', gap: '8px', height: '24px' }}\n >\n {config.icons.map(iconName => {\n return (\n <rebill-icon\n name={iconName}\n color={\n this.disabled && paymentMethod === PAYMENT_METHOD_ENUM.CARD\n ? COLORS_ENUM.NEUTRALS_500\n : 'currentColor'\n }\n />\n );\n })}\n </div>\n </span>\n </selectable-card>\n );\n })}\n </div>\n <div>\n {this.cardError.showCardInvalid &&\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD ? (\n <rebill-alert\n type=\"error\"\n alertTitle={\n this.cardError.type === 'tokenization_error'\n ? I18nService.translate('validation.tokenError')\n : I18nService.translate('validation.cardInvalid')\n }\n variant=\"outlined\"\n message={\n this.cardError.type === 'tokenization_error'\n ? I18nService.translate('validation.tokenErrorDescription')\n : I18nService.translate('validation.cardInvalidDescription')\n }\n icon=\"error\"\n />\n ) : this.errorComponent.showErrorComponent ? (\n <rebill-alert\n type=\"error\"\n alertTitle={this.errorComponent.alertTitle}\n message={this.errorComponent.message}\n variant=\"outlined\"\n icon=\"error\"\n />\n ) : null}\n </div>\n {this.enabledPaymentMethods.length > 1 &&\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD &&\n sessionState.data?.itemInformation?.type !== SESSION_ITEM_TYPE_ENUM.PLAN && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n }}\n >\n {/* <rebill-input-checkbox\n id=\"saveCard\"\n checked={this.saveCard}\n label={I18nService.translate('paymentMethods.saveCard')}\n onInput={event => this.handleSaveCardChange(event)}\n /> */}\n </div>\n )}\n {this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD && (\n <>\n {/* {this.enabledPaymentMethods.length > 1 && (\n <div class=\"card-description-container\">\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <rebill-typography variant=\"body2\" color={COLORS_ENUM.TEXT_PRIMARY}>\n {I18nService.translate('paymentMethods.cardDescription')}\n </rebill-typography>\n <rebill-card-carousel\n size=\"24px\"\n color=\"currentColor\"\n show-all-cards=\"false\"\n ></rebill-card-carousel>\n </div>\n </div>\n )} */}\n <div>\n <card-fields-wrapper\n installmentsError={this.installmentsError}\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n showDocument={this.showDocument}\n customCSS={this.customCSS}\n />\n </div>\n </>\n )}\n {/* Mostrar campos de documento para BANK_TRANSFER y CASH cuando showDocument es true */}\n {(this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER ||\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CASH) &&\n this.showDocument && (\n <div>\n <card-identification\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n disabled={this.disabled}\n />\n </div>\n )}\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { proxyCustomElement, H, h } from './p-8BpuJ_V5.js';
|
|
2
2
|
import { r as renewalState } from './p-b0Xc3sbS.js';
|
|
3
3
|
import { s as state, b as SESSION_ITEM_TYPE_ENUM } from './p-CMzpQU2o.js';
|
|
4
|
-
import { d as defineCustomElement$8 } from './p-
|
|
5
|
-
import { d as defineCustomElement$7 } from './p-
|
|
4
|
+
import { d as defineCustomElement$8 } from './p-kh0HdPk5.js';
|
|
5
|
+
import { d as defineCustomElement$7 } from './p-Bel0mbz7.js';
|
|
6
6
|
import { d as defineCustomElement$6 } from './p-C0LGxeng.js';
|
|
7
7
|
import { d as defineCustomElement$5 } from './p-CWY-g0zG.js';
|
|
8
8
|
import { d as defineCustomElement$4 } from './p-CyRG6uLm.js';
|
|
@@ -90,6 +90,6 @@ function defineCustomElement() {
|
|
|
90
90
|
defineCustomElement();
|
|
91
91
|
|
|
92
92
|
export { CardFieldsWrapper as C, defineCustomElement as d };
|
|
93
|
-
//# sourceMappingURL=p-
|
|
93
|
+
//# sourceMappingURL=p-D_lNAXr_.js.map
|
|
94
94
|
|
|
95
|
-
//# sourceMappingURL=p-
|
|
95
|
+
//# sourceMappingURL=p-D_lNAXr_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-
|
|
1
|
+
{"file":"p-D_lNAXr_.js","mappings":";;;;;;;;;;;;MAUa,iBAAiB,iBAAAA,kBAAA,CAAA,MAAA,iBAAA,SAAAC,CAAA,CAAA;;;;;;;AACpB,IAAA,iBAAiB;AACjB,IAAA,iBAAiB;AACjB,IAAA,mBAAmB;AACnB,IAAA,YAAY;AACZ,IAAA,SAAS;IACjB,MAAM,GAAA;QACJ,QACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,EAAA,EACnE,CAAA,CAAA,aAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAa,SAAS,EAAE,IAAI,CAAC,SAAS,EAAI,CAAA,EACzC,CAAC,YAAY,CAAC,aAAa;YAC1BC,KAAY,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,KAAK,sBAAsB,CAAC,IAAI;AACxE,YAAAA,KAAY,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,KACtE,CAAqB,CAAA,qBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAA,CAAI,CACvD,EACF,IAAI,CAAC,YAAY,KAChB,4EACE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,GAC7C,CACH,CACG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/payment-method-selector/card-fields/card-fields-wrapper.tsx"],"sourcesContent":["import { Component, h, Prop } from '@stencil/core';\n\nimport { SESSION_ITEM_TYPE_ENUM } from '../../../../models';\nimport { renewalState } from '../../../../store/renewal.store';\nimport { sessionState } from '../../../../store/session.store';\n\n@Component({\n tag: 'card-fields-wrapper',\n shadow: false,\n})\nexport class CardFieldsWrapper {\n @Prop() installmentsError?: string;\n @Prop() documentTypeError?: string;\n @Prop() documentNumberError?: string;\n @Prop() showDocument?: boolean;\n @Prop() customCSS?: string;\n render() {\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <card-iframe customCSS={this.customCSS} />\n {!renewalState.isInitialized &&\n sessionState.data?.itemInformation?.type !== SESSION_ITEM_TYPE_ENUM.PLAN &&\n sessionState.data.cardInformation?.installments?.installments.length > 0 && (\n <rebill-installments error={this.installmentsError} />\n )}\n {this.showDocument && (\n <card-identification\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n />\n )}\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { proxyCustomElement, H, createEvent, h } from './p-8BpuJ_V5.js';
|
|
2
|
-
import { a as api } from './p-
|
|
2
|
+
import { a as api } from './p-hdBb2rTT.js';
|
|
3
3
|
import { P as PAYMENT_METHOD_ENUM, s as state, I as I18nService } from './p-CMzpQU2o.js';
|
|
4
4
|
import { C as COLORS_ENUM } from './p-DA598vBj.js';
|
|
5
5
|
import { d as defineCustomElement$8 } from './p-G5Zi8QzX.js';
|
|
@@ -392,6 +392,6 @@ function defineCustomElement() {
|
|
|
392
392
|
defineCustomElement();
|
|
393
393
|
|
|
394
394
|
export { APMCheckout as A, PaymentMethodMapper as P, STATUS_REQ_CHECKOUT_APM as S, PaymentMethodNameE as a, defineCustomElement as d };
|
|
395
|
-
//# sourceMappingURL=p-
|
|
395
|
+
//# sourceMappingURL=p-c7IoEGtU.js.map
|
|
396
396
|
|
|
397
|
-
//# sourceMappingURL=p-
|
|
397
|
+
//# sourceMappingURL=p-c7IoEGtU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-OSC_8G2_.js","mappings":"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","names":["sessionState","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/models/enums/status-req-checkout-apm.enum.ts","src/api/endpoints/checkout-status.ts","src/models/enums/payment-method-name.enum.ts","src/utils/payment-method-mapper.ts","src/components/checkout/apm/apm-checkout/apm-checkout.css?tag=apm-checkout","src/components/checkout/apm/apm-checkout/apm-checkout.tsx"],"sourcesContent":["export enum STATUS_REQ_CHECKOUT_APM {\n PENDING_CUSTOMER_CHARGE = 'pending_customer_charge',\n APPROVED = 'approved',\n REJECTED = 'rejected',\n}\n","import { STATUS_REQ_CHECKOUT_APM } from '../../models/enums/status-req-checkout-apm.enum';\nimport { api } from '../index';\n\n/**\n * Gets the checkout request status by request ID\n * @param reqId - The checkout request ID\n * @param bearerToken - The bearer token for authentication\n * @returns Promise with checkout status information\n */\nexport const getCheckoutRequest = async (reqId: string, bearerToken: string) => {\n try {\n const response = await api.checkout.getCheckoutRequestPaymentAPM(reqId, bearerToken);\n return response.data;\n } catch (error) {\n throw error;\n }\n};\n\n/**\n * GET endpoint handler for checkout status\n * @param reqId - The checkout request ID from URL parameters\n * @param bearerToken - The bearer token for authentication\n * @returns Response with checkout status, completion status, and data\n */\nexport const GET = async (reqId: string, bearerToken?: string) => {\n try {\n if (!reqId || !bearerToken) {\n return {};\n }\n\n const checkoutRequest = await getCheckoutRequest(reqId, bearerToken);\n\n const response = {\n status: checkoutRequest.status,\n isCompleted:\n checkoutRequest.status === STATUS_REQ_CHECKOUT_APM.APPROVED ||\n checkoutRequest.status === STATUS_REQ_CHECKOUT_APM.REJECTED,\n isPending: checkoutRequest.status === STATUS_REQ_CHECKOUT_APM.PENDING_CUSTOMER_CHARGE,\n data: checkoutRequest,\n };\n\n return {\n status: 200,\n body: response,\n };\n } catch (error) {\n console.error('Error fetching checkout status:', error);\n return {\n status: 500,\n body: { error: 'Failed to fetch checkout status' },\n };\n }\n};\n","export enum PaymentMethodNameE {\n CARD = 'card',\n BR_TRANSFERENCE_PIX = 'br-bank_transfer-pix',\n BR_CASH_BOLETO = 'br-cash-boleto',\n AR_CASH_PAGOFACIL = 'ar-cash-pagofacil',\n AR_TRANSFERENCE_QR = 'ar-bank_transfer-qr',\n CO_TRANSFERENCE_PSE = 'co-bank_transfer-pse',\n MX_TRANSFERENCE_SPEI = 'mx-bank_transfer-spei',\n CL_TRANSFERENCE_ETPAY = 'cl-bank_transfer-etpay',\n}\n","import { PaymentMethodNameE } from '../models/enums/payment-method-name.enum';\nimport { PAYMENT_METHOD_ENUM } from '../models/enums/payment-methods.enum';\nimport { sessionState } from '../store/session.store';\n\n/**\n * Maps the current payment method enum to the specific APM payment method name\n * based on the country and payment method type\n */\nexport class PaymentMethodMapper {\n /**\n * Maps generic payment method to specific APM payment method name\n * @param paymentMethod - Generic payment method (cash, transference, card)\n * @param country - Country code (BR, AR, CO, MX, etc.)\n * @returns Specific payment method name for APM API\n */\n static mapToAPMPaymentMethod(\n paymentMethod: PAYMENT_METHOD_ENUM,\n country?: string,\n ): PaymentMethodNameE {\n // If card, return card\n if (paymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n return PaymentMethodNameE.CARD;\n }\n\n // Use country from session state if not provided\n const countryCode = country || sessionState.data?.pricing?.country;\n\n // Map cash payment methods by country\n if (paymentMethod === PAYMENT_METHOD_ENUM.CASH) {\n switch (countryCode) {\n case 'BR':\n return PaymentMethodNameE.BR_CASH_BOLETO;\n case 'AR':\n return PaymentMethodNameE.AR_CASH_PAGOFACIL;\n default:\n // Default to Brazilian boleto if country not supported\n return PaymentMethodNameE.BR_CASH_BOLETO;\n }\n }\n\n // Map transfer payment methods by country\n if (paymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER) {\n switch (countryCode) {\n case 'BR':\n return PaymentMethodNameE.BR_TRANSFERENCE_PIX;\n case 'AR':\n return PaymentMethodNameE.AR_TRANSFERENCE_QR;\n case 'CO':\n return PaymentMethodNameE.CO_TRANSFERENCE_PSE;\n case 'MX':\n return PaymentMethodNameE.MX_TRANSFERENCE_SPEI;\n case 'CL':\n return PaymentMethodNameE.CL_TRANSFERENCE_ETPAY;\n default:\n // Default to Brazilian PIX if country not supported\n return PaymentMethodNameE.BR_TRANSFERENCE_PIX;\n }\n }\n\n // Fallback to card\n return PaymentMethodNameE.CARD;\n }\n\n /**\n * Converts PaymentMethodNameE enum to a user-friendly display name\n * @param paymentMethodName - Payment method enum value\n * @returns User-friendly display name (e.g., \"PSE\", \"PIX\", \"Boleto\")\n */\n static getDisplayName(paymentMethodName: PaymentMethodNameE): string {\n switch (paymentMethodName) {\n case PaymentMethodNameE.CARD:\n return 'Card';\n case PaymentMethodNameE.BR_TRANSFERENCE_PIX:\n return 'PIX';\n case PaymentMethodNameE.BR_CASH_BOLETO:\n return 'Boleto';\n case PaymentMethodNameE.AR_CASH_PAGOFACIL:\n return 'PagoFácil';\n case PaymentMethodNameE.AR_TRANSFERENCE_QR:\n return 'QR';\n case PaymentMethodNameE.CO_TRANSFERENCE_PSE:\n return 'PSE';\n case PaymentMethodNameE.MX_TRANSFERENCE_SPEI:\n return 'SPEI';\n case PaymentMethodNameE.CL_TRANSFERENCE_ETPAY:\n return 'Etpay';\n default:\n return 'Payment';\n }\n }\n\n /**\n * Checks if a payment method is an APM (Alternative Payment Method)\n * @param paymentMethod - Payment method to check\n * @returns True if APM, false if card\n */\n static isAPMPaymentMethod(paymentMethod: PAYMENT_METHOD_ENUM): boolean {\n return (\n paymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n paymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n );\n }\n}\n",".apm-checkout {\n display: flex;\n flex-direction: column;\n}\n\n.apm-content {\n margin-bottom: 0;\n}\n\n.apm-content .reference-code,\n.apm-content .qr-code {\n margin-top: 0;\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n}\n\n.apm-actions {\n display: flex;\n gap: 12px;\n padding: 20px 0;\n}\n\n.apm-actions rebill-button,\n.apm-actions payment-button {\n flex: 1;\n width: 100%;\n}\n\n.apm-actions rebill-button .button-content,\n.apm-actions payment-button .button-content {\n display: flex;\n align-items: center;\n gap: 12px;\n overflow: hidden;\n}\n\n.apm-actions rebill-button .button-content rebill-icon {\n width: 20px;\n height: 20px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n flex-shrink: 0;\n}\n\n/* Redirect message styles */\n.apm-checkout.redirect-message {\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n\n.redirect-content {\n background: var(--rebill-color-background);\n border: 1px solid var(--rebill-color-background-right);\n padding: 16px;\n}\n\n.redirect-content .payment-method-name {\n font-weight: 600 !important;\n}\n\n/* Bank transfer data container */\n.bank-transfer-data-container {\n margin-top: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Bank transfer data styles */\n.bank-transfer-data {\n padding: 0;\n background: transparent;\n border: none;\n border-radius: 0;\n}\n\n.instruction-step {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.instruction-step:last-child {\n margin-bottom: 0;\n}\n\n.step-number {\n background: var(--rebill-color-background-right);\n width: 20px;\n height: 20px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n text-align: center;\n line-height: 1;\n}\n\n.step-number rebill-typography {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n}\n\n.instruction-text {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n}\n\n.instruction-content {\n flex: 1;\n}\n\n.bank-data-item {\n display: flex;\n gap: 8px;\n align-items: center;\n\n border-bottom: none;\n}\n\n.value-with-copy {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n\n/* Bank transfer simple styles */\n.bank-transfer-simple-container {\n padding: 16px;\n background: var(--rebill-color-background);\n border: 1px solid var(--rebill-color-background-right);\n border-radius: 8px;\n}\n\n.instruction-text {\n margin-bottom: 16px;\n}\n\n.data-section {\n margin-bottom: 16px;\n}\n\n.bank-transfer-simple {\n margin-bottom: 16px;\n}\n\n.bank-transfer-simple:last-child {\n margin-bottom: 0;\n}\n\n.bank-data-simple {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.bank-data-item-simple {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 4px 0;\n}\n\n/* Mobile responsive */\n@media (max-width: 768px) {\n .apm-actions {\n flex-direction: column;\n gap: 12px;\n padding: 16px 0;\n }\n\n .apm-actions rebill-button {\n width: 100%;\n flex: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State } from '@stencil/core';\nimport { getCheckoutRequest } from '../../../../api/endpoints/checkout-status';\nimport { I18nService } from '../../../../i18n/i18n.service';\nimport { PAYMENT_METHOD_ENUM } from '../../../../models/enums/payment-methods.enum';\nimport { STATUS_REQ_CHECKOUT_APM } from '../../../../models/enums/status-req-checkout-apm.enum';\nimport { COLORS_ENUM } from '../../../../utils/color-class-mapper';\nimport { PaymentMethodMapper } from '../../../../utils/payment-method-mapper';\nimport { APMDownloadData } from '../apm-download/apm-download';\n\n// Constants\nconst DEFAULT_REDIRECT_TIMEOUT = 5000; // 5 seconds\nconst POLLING_INTERVAL = 3000; // 3 seconds\n\nconst MAX_POLLING_ATTEMPTS = 300; // 15 minutes max (300 attempts * 3 seconds = 900 seconds = 15 minutes)\n\n@Component({\n tag: 'apm-checkout',\n styleUrl: 'apm-checkout.css',\n shadow: false,\n})\nexport class APMCheckout {\n @Element() el: HTMLElement;\n @Prop() paymentMethod: PAYMENT_METHOD_ENUM;\n @Prop() referenceId?: string;\n @Prop() qrCodeData?: string;\n @Prop() code?: string;\n @Prop() providerName: string;\n @Prop() expirationDate: string;\n @Prop() country?: string;\n @Prop() redirectUrl?: string;\n @Prop() timeToRedirect?: number = DEFAULT_REDIRECT_TIMEOUT;\n @Prop() checkoutRequestId?: string; // ID para hacer polling\n @Prop() bearerToken?: string;\n @Prop() bankTransferData?: any;\n\n @State() showRedirectMessage = false;\n @State() isPolling = false;\n @State() minutesLeft?: number; // Minutos restantes del contador\n @State() qrStartTime?: Date; // Hora de inicio del QR\n @State() downloadData?: APMDownloadData;\n\n @Event() paymentStatusChange: EventEmitter<{\n status: STATUS_REQ_CHECKOUT_APM;\n isCompleted: boolean;\n data: any;\n }>;\n\n private redirectTimeoutId: number | undefined;\n private pollingIntervalId: number | undefined;\n private pollingDelayTimeoutId: NodeJS.Timeout | undefined;\n private pollingAttempts = 0;\n\n componentWillLoad() {\n this.qrStartTime = new Date();\n this.downloadData = this.generateDownloadData();\n\n if (this.redirectUrl) {\n this.handleRedirect();\n }\n\n if (this.checkoutRequestId && (this.qrCodeData || this.bankTransferData)) {\n this.startPolling();\n }\n }\n\n componentDidLoad() {\n const paymentButton = this.el?.querySelector('payment-button');\n if (paymentButton) {\n paymentButton.addEventListener('submit', this.handleRedirect);\n }\n }\n\n disconnectedCallback() {\n if (this.redirectTimeoutId) {\n clearTimeout(this.redirectTimeoutId);\n this.redirectTimeoutId = undefined;\n }\n if (this.pollingDelayTimeoutId) {\n clearTimeout(this.pollingDelayTimeoutId);\n this.pollingDelayTimeoutId = undefined;\n }\n\n if (this.pollingIntervalId) {\n clearInterval(this.pollingIntervalId);\n this.pollingIntervalId = undefined;\n }\n\n const paymentButton = this.el?.querySelector('payment-button');\n if (paymentButton) {\n paymentButton.removeEventListener('submit', this.handleRedirect);\n }\n }\n\n private handleRedirect = () => {\n if (this.redirectTimeoutId) {\n clearTimeout(this.redirectTimeoutId);\n }\n\n this.showRedirectMessage = true;\n\n this.redirectTimeoutId = window.setTimeout(() => {\n window.open(this.redirectUrl, '_self');\n }, this.timeToRedirect);\n };\n\n private handleViewBranches = () => {\n window.open('https://www.pagofacil.com.ar/', '_blank');\n };\n\n private handleTimeUpdate = (event: CustomEvent<number>) => {\n this.minutesLeft = event.detail;\n };\n\n private startPolling = () => {\n if ((!this.qrCodeData && !this.bankTransferData) || !this.checkoutRequestId || this.isPolling) {\n return;\n }\n\n this.isPolling = true;\n this.pollingAttempts = 0;\n\n this.pollingIntervalId = window.setInterval(() => {\n this.checkPaymentStatus();\n }, POLLING_INTERVAL);\n };\n\n private stopPolling = () => {\n if (this.pollingIntervalId) {\n clearInterval(this.pollingIntervalId);\n this.pollingIntervalId = undefined;\n }\n this.isPolling = false;\n };\n\n private checkPaymentStatus = async () => {\n if (!this.checkoutRequestId) {\n return;\n }\n\n try {\n this.pollingAttempts++;\n\n const response = await getCheckoutRequest(this.checkoutRequestId, this.bearerToken);\n const isCompleted =\n response.status === STATUS_REQ_CHECKOUT_APM.APPROVED ||\n response.status === STATUS_REQ_CHECKOUT_APM.REJECTED;\n this.paymentStatusChange.emit({\n status: response.status,\n isCompleted: isCompleted,\n data: response.data,\n });\n\n if (isCompleted) {\n this.stopPolling();\n return;\n }\n\n if (this.pollingAttempts >= MAX_POLLING_ATTEMPTS) {\n this.stopPolling();\n return;\n }\n } catch (error) {\n console.error('Error checking payment status:', error);\n }\n };\n\n private generateDownloadData(): APMDownloadData {\n const downloadData: APMDownloadData = {\n paymentMethod: this.paymentMethod,\n referenceId: this.referenceId,\n providerName: this.providerName,\n expirationDate: this.expirationDate,\n country: this.country,\n minutesLeft: this.minutesLeft,\n };\n\n if (this.bankTransferData) {\n downloadData.bankTransferData = {\n bankName: this.bankTransferData.bankName,\n accountNumber: this.bankTransferData.account || this.bankTransferData.bbvAccountNumber,\n reference: this.bankTransferData.reference,\n clabe: this.bankTransferData.account || this.bankTransferData.clabe,\n destinationBank: this.bankTransferData.bankName,\n paymentReference: this.bankTransferData.reference,\n instructions: this.bankTransferData.instructions,\n };\n } else if (this.qrCodeData) {\n downloadData.qrCodeData = this.qrCodeData;\n }\n\n return downloadData;\n }\n\n private renderResponse() {\n // If redirectUrl is provided, show redirect message\n if (this.redirectUrl && this.showRedirectMessage) {\n const paymentMethodEnum = PaymentMethodMapper.mapToAPMPaymentMethod(\n this.paymentMethod,\n this.country,\n );\n const paymentMethodName = PaymentMethodMapper.getDisplayName(paymentMethodEnum);\n\n return (\n <div class=\"redirect-content\">\n <div class=\"redirect-text\">\n <rebill-typography variant=\"body2\" color={COLORS_ENUM.GREY_300}>\n {I18nService.translate('apmCheckout.redirectMessagePrefix')}{' '}\n <rebill-typography variant=\"overline\" color={COLORS_ENUM.GREY_300}>\n {paymentMethodName}\n </rebill-typography>{' '}\n {I18nService.translate('apmCheckout.redirectMessageSuffix')}\n </rebill-typography>\n </div>\n </div>\n );\n }\n\n // If referenceId is provided, show reference code component\n if (this.referenceId) {\n return (\n <reference-code\n referenceId={this.referenceId}\n providerName={this.providerName}\n expirationDate={this.expirationDate}\n />\n );\n }\n\n // If qrCodeData is provided, show QR code component\n if (this.qrCodeData) {\n return (\n <qr-code\n qrCodeData={this.qrCodeData}\n code={this.code}\n providerName={this.providerName}\n expirationDate={this.expirationDate}\n paymentMethod={this.paymentMethod}\n onTimeUpdate={this.handleTimeUpdate}\n />\n );\n }\n\n if (this.bankTransferData) {\n return <bank-transfer bankTransferData={this.bankTransferData} />;\n }\n\n // Fallback - shouldn't happen in normal flow\n return null;\n }\n\n render() {\n const isRedirectMessage = this.redirectUrl && this.showRedirectMessage;\n const isCashPayment = this.paymentMethod === PAYMENT_METHOD_ENUM.CASH;\n\n return (\n <div class={`apm-checkout ${isRedirectMessage ? 'redirect-message' : ''}`}>\n <div class=\"apm-content\">{this.renderResponse()}</div>\n\n <div class=\"apm-actions\">\n {!isRedirectMessage && isCashPayment && (\n <rebill-button\n type=\"button\"\n variant=\"outline\"\n theme=\"primary\"\n onClick={this.handleViewBranches}\n >\n <span class=\"button-content\">\n <span>{I18nService.translate('apmCheckout.viewBranches')}</span>\n <rebill-icon name=\"square-arrow-top-right\" />\n </span>\n </rebill-button>\n )}\n\n {!isRedirectMessage && <apm-download data={this.downloadData} />}\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-c7IoEGtU.js","mappings":"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","names":["sessionState","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/models/enums/status-req-checkout-apm.enum.ts","src/api/endpoints/checkout-status.ts","src/models/enums/payment-method-name.enum.ts","src/utils/payment-method-mapper.ts","src/components/checkout/apm/apm-checkout/apm-checkout.css?tag=apm-checkout","src/components/checkout/apm/apm-checkout/apm-checkout.tsx"],"sourcesContent":["export enum STATUS_REQ_CHECKOUT_APM {\n PENDING_CUSTOMER_CHARGE = 'pending_customer_charge',\n APPROVED = 'approved',\n REJECTED = 'rejected',\n}\n","import { STATUS_REQ_CHECKOUT_APM } from '../../models/enums/status-req-checkout-apm.enum';\nimport { api } from '../index';\n\n/**\n * Gets the checkout request status by request ID\n * @param reqId - The checkout request ID\n * @param bearerToken - The bearer token for authentication\n * @returns Promise with checkout status information\n */\nexport const getCheckoutRequest = async (reqId: string, bearerToken: string) => {\n try {\n const response = await api.checkout.getCheckoutRequestPaymentAPM(reqId, bearerToken);\n return response.data;\n } catch (error) {\n throw error;\n }\n};\n\n/**\n * GET endpoint handler for checkout status\n * @param reqId - The checkout request ID from URL parameters\n * @param bearerToken - The bearer token for authentication\n * @returns Response with checkout status, completion status, and data\n */\nexport const GET = async (reqId: string, bearerToken?: string) => {\n try {\n if (!reqId || !bearerToken) {\n return {};\n }\n\n const checkoutRequest = await getCheckoutRequest(reqId, bearerToken);\n\n const response = {\n status: checkoutRequest.status,\n isCompleted:\n checkoutRequest.status === STATUS_REQ_CHECKOUT_APM.APPROVED ||\n checkoutRequest.status === STATUS_REQ_CHECKOUT_APM.REJECTED,\n isPending: checkoutRequest.status === STATUS_REQ_CHECKOUT_APM.PENDING_CUSTOMER_CHARGE,\n data: checkoutRequest,\n };\n\n return {\n status: 200,\n body: response,\n };\n } catch (error) {\n console.error('Error fetching checkout status:', error);\n return {\n status: 500,\n body: { error: 'Failed to fetch checkout status' },\n };\n }\n};\n","export enum PaymentMethodNameE {\n CARD = 'card',\n BR_TRANSFERENCE_PIX = 'br-bank_transfer-pix',\n BR_CASH_BOLETO = 'br-cash-boleto',\n AR_CASH_PAGOFACIL = 'ar-cash-pagofacil',\n AR_TRANSFERENCE_QR = 'ar-bank_transfer-qr',\n CO_TRANSFERENCE_PSE = 'co-bank_transfer-pse',\n MX_TRANSFERENCE_SPEI = 'mx-bank_transfer-spei',\n CL_TRANSFERENCE_ETPAY = 'cl-bank_transfer-etpay',\n}\n","import { PaymentMethodNameE } from '../models/enums/payment-method-name.enum';\nimport { PAYMENT_METHOD_ENUM } from '../models/enums/payment-methods.enum';\nimport { sessionState } from '../store/session.store';\n\n/**\n * Maps the current payment method enum to the specific APM payment method name\n * based on the country and payment method type\n */\nexport class PaymentMethodMapper {\n /**\n * Maps generic payment method to specific APM payment method name\n * @param paymentMethod - Generic payment method (cash, transference, card)\n * @param country - Country code (BR, AR, CO, MX, etc.)\n * @returns Specific payment method name for APM API\n */\n static mapToAPMPaymentMethod(\n paymentMethod: PAYMENT_METHOD_ENUM,\n country?: string,\n ): PaymentMethodNameE {\n // If card, return card\n if (paymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n return PaymentMethodNameE.CARD;\n }\n\n // Use country from session state if not provided\n const countryCode = country || sessionState.data?.pricing?.country;\n\n // Map cash payment methods by country\n if (paymentMethod === PAYMENT_METHOD_ENUM.CASH) {\n switch (countryCode) {\n case 'BR':\n return PaymentMethodNameE.BR_CASH_BOLETO;\n case 'AR':\n return PaymentMethodNameE.AR_CASH_PAGOFACIL;\n default:\n // Default to Brazilian boleto if country not supported\n return PaymentMethodNameE.BR_CASH_BOLETO;\n }\n }\n\n // Map transfer payment methods by country\n if (paymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER) {\n switch (countryCode) {\n case 'BR':\n return PaymentMethodNameE.BR_TRANSFERENCE_PIX;\n case 'AR':\n return PaymentMethodNameE.AR_TRANSFERENCE_QR;\n case 'CO':\n return PaymentMethodNameE.CO_TRANSFERENCE_PSE;\n case 'MX':\n return PaymentMethodNameE.MX_TRANSFERENCE_SPEI;\n case 'CL':\n return PaymentMethodNameE.CL_TRANSFERENCE_ETPAY;\n default:\n // Default to Brazilian PIX if country not supported\n return PaymentMethodNameE.BR_TRANSFERENCE_PIX;\n }\n }\n\n // Fallback to card\n return PaymentMethodNameE.CARD;\n }\n\n /**\n * Converts PaymentMethodNameE enum to a user-friendly display name\n * @param paymentMethodName - Payment method enum value\n * @returns User-friendly display name (e.g., \"PSE\", \"PIX\", \"Boleto\")\n */\n static getDisplayName(paymentMethodName: PaymentMethodNameE): string {\n switch (paymentMethodName) {\n case PaymentMethodNameE.CARD:\n return 'Card';\n case PaymentMethodNameE.BR_TRANSFERENCE_PIX:\n return 'PIX';\n case PaymentMethodNameE.BR_CASH_BOLETO:\n return 'Boleto';\n case PaymentMethodNameE.AR_CASH_PAGOFACIL:\n return 'PagoFácil';\n case PaymentMethodNameE.AR_TRANSFERENCE_QR:\n return 'QR';\n case PaymentMethodNameE.CO_TRANSFERENCE_PSE:\n return 'PSE';\n case PaymentMethodNameE.MX_TRANSFERENCE_SPEI:\n return 'SPEI';\n case PaymentMethodNameE.CL_TRANSFERENCE_ETPAY:\n return 'Etpay';\n default:\n return 'Payment';\n }\n }\n\n /**\n * Checks if a payment method is an APM (Alternative Payment Method)\n * @param paymentMethod - Payment method to check\n * @returns True if APM, false if card\n */\n static isAPMPaymentMethod(paymentMethod: PAYMENT_METHOD_ENUM): boolean {\n return (\n paymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n paymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n );\n }\n}\n",".apm-checkout {\n display: flex;\n flex-direction: column;\n}\n\n.apm-content {\n margin-bottom: 0;\n}\n\n.apm-content .reference-code,\n.apm-content .qr-code {\n margin-top: 0;\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n}\n\n.apm-actions {\n display: flex;\n gap: 12px;\n padding: 20px 0;\n}\n\n.apm-actions rebill-button,\n.apm-actions payment-button {\n flex: 1;\n width: 100%;\n}\n\n.apm-actions rebill-button .button-content,\n.apm-actions payment-button .button-content {\n display: flex;\n align-items: center;\n gap: 12px;\n overflow: hidden;\n}\n\n.apm-actions rebill-button .button-content rebill-icon {\n width: 20px;\n height: 20px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n flex-shrink: 0;\n}\n\n/* Redirect message styles */\n.apm-checkout.redirect-message {\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n\n.redirect-content {\n background: var(--rebill-color-background);\n border: 1px solid var(--rebill-color-background-right);\n padding: 16px;\n}\n\n.redirect-content .payment-method-name {\n font-weight: 600 !important;\n}\n\n/* Bank transfer data container */\n.bank-transfer-data-container {\n margin-top: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Bank transfer data styles */\n.bank-transfer-data {\n padding: 0;\n background: transparent;\n border: none;\n border-radius: 0;\n}\n\n.instruction-step {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.instruction-step:last-child {\n margin-bottom: 0;\n}\n\n.step-number {\n background: var(--rebill-color-background-right);\n width: 20px;\n height: 20px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n text-align: center;\n line-height: 1;\n}\n\n.step-number rebill-typography {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n}\n\n.instruction-text {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n}\n\n.instruction-content {\n flex: 1;\n}\n\n.bank-data-item {\n display: flex;\n gap: 8px;\n align-items: center;\n\n border-bottom: none;\n}\n\n.value-with-copy {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n\n/* Bank transfer simple styles */\n.bank-transfer-simple-container {\n padding: 16px;\n background: var(--rebill-color-background);\n border: 1px solid var(--rebill-color-background-right);\n border-radius: 8px;\n}\n\n.instruction-text {\n margin-bottom: 16px;\n}\n\n.data-section {\n margin-bottom: 16px;\n}\n\n.bank-transfer-simple {\n margin-bottom: 16px;\n}\n\n.bank-transfer-simple:last-child {\n margin-bottom: 0;\n}\n\n.bank-data-simple {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.bank-data-item-simple {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 4px 0;\n}\n\n/* Mobile responsive */\n@media (max-width: 768px) {\n .apm-actions {\n flex-direction: column;\n gap: 12px;\n padding: 16px 0;\n }\n\n .apm-actions rebill-button {\n width: 100%;\n flex: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State } from '@stencil/core';\nimport { getCheckoutRequest } from '../../../../api/endpoints/checkout-status';\nimport { I18nService } from '../../../../i18n/i18n.service';\nimport { PAYMENT_METHOD_ENUM } from '../../../../models/enums/payment-methods.enum';\nimport { STATUS_REQ_CHECKOUT_APM } from '../../../../models/enums/status-req-checkout-apm.enum';\nimport { COLORS_ENUM } from '../../../../utils/color-class-mapper';\nimport { PaymentMethodMapper } from '../../../../utils/payment-method-mapper';\nimport { APMDownloadData } from '../apm-download/apm-download';\n\n// Constants\nconst DEFAULT_REDIRECT_TIMEOUT = 5000; // 5 seconds\nconst POLLING_INTERVAL = 3000; // 3 seconds\n\nconst MAX_POLLING_ATTEMPTS = 300; // 15 minutes max (300 attempts * 3 seconds = 900 seconds = 15 minutes)\n\n@Component({\n tag: 'apm-checkout',\n styleUrl: 'apm-checkout.css',\n shadow: false,\n})\nexport class APMCheckout {\n @Element() el: HTMLElement;\n @Prop() paymentMethod: PAYMENT_METHOD_ENUM;\n @Prop() referenceId?: string;\n @Prop() qrCodeData?: string;\n @Prop() code?: string;\n @Prop() providerName: string;\n @Prop() expirationDate: string;\n @Prop() country?: string;\n @Prop() redirectUrl?: string;\n @Prop() timeToRedirect?: number = DEFAULT_REDIRECT_TIMEOUT;\n @Prop() checkoutRequestId?: string; // ID para hacer polling\n @Prop() bearerToken?: string;\n @Prop() bankTransferData?: any;\n\n @State() showRedirectMessage = false;\n @State() isPolling = false;\n @State() minutesLeft?: number; // Minutos restantes del contador\n @State() qrStartTime?: Date; // Hora de inicio del QR\n @State() downloadData?: APMDownloadData;\n\n @Event() paymentStatusChange: EventEmitter<{\n status: STATUS_REQ_CHECKOUT_APM;\n isCompleted: boolean;\n data: any;\n }>;\n\n private redirectTimeoutId: number | undefined;\n private pollingIntervalId: number | undefined;\n private pollingDelayTimeoutId: NodeJS.Timeout | undefined;\n private pollingAttempts = 0;\n\n componentWillLoad() {\n this.qrStartTime = new Date();\n this.downloadData = this.generateDownloadData();\n\n if (this.redirectUrl) {\n this.handleRedirect();\n }\n\n if (this.checkoutRequestId && (this.qrCodeData || this.bankTransferData)) {\n this.startPolling();\n }\n }\n\n componentDidLoad() {\n const paymentButton = this.el?.querySelector('payment-button');\n if (paymentButton) {\n paymentButton.addEventListener('submit', this.handleRedirect);\n }\n }\n\n disconnectedCallback() {\n if (this.redirectTimeoutId) {\n clearTimeout(this.redirectTimeoutId);\n this.redirectTimeoutId = undefined;\n }\n if (this.pollingDelayTimeoutId) {\n clearTimeout(this.pollingDelayTimeoutId);\n this.pollingDelayTimeoutId = undefined;\n }\n\n if (this.pollingIntervalId) {\n clearInterval(this.pollingIntervalId);\n this.pollingIntervalId = undefined;\n }\n\n const paymentButton = this.el?.querySelector('payment-button');\n if (paymentButton) {\n paymentButton.removeEventListener('submit', this.handleRedirect);\n }\n }\n\n private handleRedirect = () => {\n if (this.redirectTimeoutId) {\n clearTimeout(this.redirectTimeoutId);\n }\n\n this.showRedirectMessage = true;\n\n this.redirectTimeoutId = window.setTimeout(() => {\n window.open(this.redirectUrl, '_self');\n }, this.timeToRedirect);\n };\n\n private handleViewBranches = () => {\n window.open('https://www.pagofacil.com.ar/', '_blank');\n };\n\n private handleTimeUpdate = (event: CustomEvent<number>) => {\n this.minutesLeft = event.detail;\n };\n\n private startPolling = () => {\n if ((!this.qrCodeData && !this.bankTransferData) || !this.checkoutRequestId || this.isPolling) {\n return;\n }\n\n this.isPolling = true;\n this.pollingAttempts = 0;\n\n this.pollingIntervalId = window.setInterval(() => {\n this.checkPaymentStatus();\n }, POLLING_INTERVAL);\n };\n\n private stopPolling = () => {\n if (this.pollingIntervalId) {\n clearInterval(this.pollingIntervalId);\n this.pollingIntervalId = undefined;\n }\n this.isPolling = false;\n };\n\n private checkPaymentStatus = async () => {\n if (!this.checkoutRequestId) {\n return;\n }\n\n try {\n this.pollingAttempts++;\n\n const response = await getCheckoutRequest(this.checkoutRequestId, this.bearerToken);\n const isCompleted =\n response.status === STATUS_REQ_CHECKOUT_APM.APPROVED ||\n response.status === STATUS_REQ_CHECKOUT_APM.REJECTED;\n this.paymentStatusChange.emit({\n status: response.status,\n isCompleted: isCompleted,\n data: response.data,\n });\n\n if (isCompleted) {\n this.stopPolling();\n return;\n }\n\n if (this.pollingAttempts >= MAX_POLLING_ATTEMPTS) {\n this.stopPolling();\n return;\n }\n } catch (error) {\n console.error('Error checking payment status:', error);\n }\n };\n\n private generateDownloadData(): APMDownloadData {\n const downloadData: APMDownloadData = {\n paymentMethod: this.paymentMethod,\n referenceId: this.referenceId,\n providerName: this.providerName,\n expirationDate: this.expirationDate,\n country: this.country,\n minutesLeft: this.minutesLeft,\n };\n\n if (this.bankTransferData) {\n downloadData.bankTransferData = {\n bankName: this.bankTransferData.bankName,\n accountNumber: this.bankTransferData.account || this.bankTransferData.bbvAccountNumber,\n reference: this.bankTransferData.reference,\n clabe: this.bankTransferData.account || this.bankTransferData.clabe,\n destinationBank: this.bankTransferData.bankName,\n paymentReference: this.bankTransferData.reference,\n instructions: this.bankTransferData.instructions,\n };\n } else if (this.qrCodeData) {\n downloadData.qrCodeData = this.qrCodeData;\n }\n\n return downloadData;\n }\n\n private renderResponse() {\n // If redirectUrl is provided, show redirect message\n if (this.redirectUrl && this.showRedirectMessage) {\n const paymentMethodEnum = PaymentMethodMapper.mapToAPMPaymentMethod(\n this.paymentMethod,\n this.country,\n );\n const paymentMethodName = PaymentMethodMapper.getDisplayName(paymentMethodEnum);\n\n return (\n <div class=\"redirect-content\">\n <div class=\"redirect-text\">\n <rebill-typography variant=\"body2\" color={COLORS_ENUM.GREY_300}>\n {I18nService.translate('apmCheckout.redirectMessagePrefix')}{' '}\n <rebill-typography variant=\"overline\" color={COLORS_ENUM.GREY_300}>\n {paymentMethodName}\n </rebill-typography>{' '}\n {I18nService.translate('apmCheckout.redirectMessageSuffix')}\n </rebill-typography>\n </div>\n </div>\n );\n }\n\n // If referenceId is provided, show reference code component\n if (this.referenceId) {\n return (\n <reference-code\n referenceId={this.referenceId}\n providerName={this.providerName}\n expirationDate={this.expirationDate}\n />\n );\n }\n\n // If qrCodeData is provided, show QR code component\n if (this.qrCodeData) {\n return (\n <qr-code\n qrCodeData={this.qrCodeData}\n code={this.code}\n providerName={this.providerName}\n expirationDate={this.expirationDate}\n paymentMethod={this.paymentMethod}\n onTimeUpdate={this.handleTimeUpdate}\n />\n );\n }\n\n if (this.bankTransferData) {\n return <bank-transfer bankTransferData={this.bankTransferData} />;\n }\n\n // Fallback - shouldn't happen in normal flow\n return null;\n }\n\n render() {\n const isRedirectMessage = this.redirectUrl && this.showRedirectMessage;\n const isCashPayment = this.paymentMethod === PAYMENT_METHOD_ENUM.CASH;\n\n return (\n <div class={`apm-checkout ${isRedirectMessage ? 'redirect-message' : ''}`}>\n <div class=\"apm-content\">{this.renderResponse()}</div>\n\n <div class=\"apm-actions\">\n {!isRedirectMessage && isCashPayment && (\n <rebill-button\n type=\"button\"\n variant=\"outline\"\n theme=\"primary\"\n onClick={this.handleViewBranches}\n >\n <span class=\"button-content\">\n <span>{I18nService.translate('apmCheckout.viewBranches')}</span>\n <rebill-icon name=\"square-arrow-top-right\" />\n </span>\n </rebill-button>\n )}\n\n {!isRedirectMessage && <apm-download data={this.downloadData} />}\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as commonjsGlobal, g as getDefaultExportFromCjs } from './p-E-ZsRS8r.js';
|
|
2
|
-
import { A as API_ENDPOINTS, g as getAPIConfig } from './p-
|
|
2
|
+
import { A as API_ENDPOINTS, g as getAPIConfig } from './p-2qMho_xL.js';
|
|
3
3
|
|
|
4
4
|
/*! Axios v1.12.2 Copyright (c) 2025 Matt Zabriskie and contributors */
|
|
5
5
|
|
|
@@ -21428,6 +21428,6 @@ const apiClient = new APIClient(getAPIConfig());
|
|
|
21428
21428
|
const api = new API(apiClient);
|
|
21429
21429
|
|
|
21430
21430
|
export { api as a };
|
|
21431
|
-
//# sourceMappingURL=p-
|
|
21431
|
+
//# sourceMappingURL=p-hdBb2rTT.js.map
|
|
21432
21432
|
|
|
21433
|
-
//# sourceMappingURL=p-
|
|
21433
|
+
//# sourceMappingURL=p-hdBb2rTT.js.map
|