choco-one-click-payment 1.1.21 → 1.1.23
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/index.esm.js +4117 -0
- package/dist/index.js +279 -0
- package/index.d.ts +12 -0
- package/package.json +16 -27
- package/780.index.esm.js +0 -1
- package/780.index.js +0 -1
- package/index.esm.js +0 -2
- package/index.esm.js.LICENSE.txt +0 -1
- package/index.js +0 -2
- package/index.js.LICENSE.txt +0 -1
|
@@ -0,0 +1,4117 @@
|
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('.choco-one-click-widget{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999999;font-family:Sirius,sans-serif;--choco-widget-accent-color: #2F2F2F;pointer-events:none}.choco-one-click-widget--embedded{position:static;top:auto;left:auto;right:auto;bottom:auto;z-index:auto;pointer-events:auto;min-height:1px}.choco-one-click-widget--embedded .choco-widget-bottom-bar{position:static;box-shadow:none;border-radius:24px}.choco-one-click-widget--embedded .choco-widget-payment-sheet{position:fixed}.choco-one-click-widget *{box-sizing:border-box;font-family:Sirius,sans-serif}.choco-one-click-widget .choco-widget-bottom-bar{opacity:0;transform:translateY(16px)}.choco-one-click-widget .choco-widget-balance-section,.choco-one-click-widget .choco-widget-payment-info{opacity:0;transform:translateY(8px)}.choco-one-click-widget--visible .choco-widget-bottom-bar,.choco-one-click-widget--visible .choco-widget-balance-section,.choco-one-click-widget--visible .choco-widget-payment-info{opacity:1;transform:translateY(0)}.choco-widget-bottom-bar{position:absolute;bottom:0;left:0;right:0;background:#fff;border-radius:24px 24px 0 0;padding:16px;box-shadow:0 -4px 20px #0000001a;transition:transform .24s cubic-bezier(.4,0,.2,1),opacity .2s ease;pointer-events:auto}.choco-widget-payment-info{display:flex;flex-direction:column;gap:12px;align-items:stretch;transition:transform .22s ease,opacity .2s ease}.choco-widget-payment-info-main{display:flex;gap:12px;align-items:center}.choco-widget-payment-method{gap:12px;background:#f1f2f7;border-radius:16px;padding:5px 8px;cursor:pointer;transition:background .2s ease;border:none;font-family:inherit;text-align:left;width:100%;position:relative;height:46px}.choco-widget-payment-method:disabled{cursor:not-allowed;pointer-events:none;opacity:.5}.choco-widget-payment-method.google_pay,.choco-widget-payment-method.apple_pay{max-width:140px}.choco-widget-method-icon-placeholder{font-size:24px}.choco-widget-method-details{flex:1}.choco-widget-method-label{font-size:14px;color:#000}.choco-widget-method-value{font-size:14px;font-weight:600;color:#000;display:flex;align-items:center;gap:4px}.choco-widget-method-icon-wrapper svg{display:block;width:100%;max-width:29px;max-height:18px;margin-top:2px}.choco-widget-method-icon-wrapper:empty{display:none}.choco-widget-method-icon-wrapper.google_pay svg{height:17px;max-width:35px;border:1px solid #3C4043;padding:3px 4px 2px;border-radius:8px}.choco-widget-method-name{font-size:14px;font-weight:700}.choco-widget-method-name.google_pay,.choco-widget-method-name.apple_pay{display:none}.choco-widget-method-chevron{position:absolute;right:5px;top:0;bottom:0;margin:auto 0;width:24px;height:24px}.choco-widget-pay-button{background:var(--choco-widget-accent-color);color:#fff;border:none;border-radius:16px;height:46px;padding:0 16px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap;width:100%;overflow:hidden}.choco-widget-pay-button--loading{cursor:not-allowed;pointer-events:none;position:relative}.choco-widget-pay-button--loading:before{content:"";display:block;width:16px;height:16px;border:2px solid #ffffff;border-top:2px solid transparent;border-radius:50%;animation:choco-spin 1s linear infinite;position:absolute;left:0;right:0;margin:0 auto;z-index:2}.choco-widget-pay-button--loading:after{content:"";display:block;width:100%;height:100%;background:#2f2f2f;position:absolute;left:0;top:0}.choco-widget-pay-button:disabled{opacity:.5;pointer-events:none}.choco-widget-pay-button--hidden{display:none}.choco-widget-google-pay-amount{min-width:124px;height:46px;display:flex;flex-direction:column;justify-content:center;text-align:right;width:100%}.choco-widget-google-pay-amount--hidden{display:none}.choco-widget-google-pay-amount-label{font-size:20px;font-weight:700;line-height:24px;color:#1d1d1d}.choco-widget-google-pay-amount-value{font-size:14px;line-height:18px;color:#1d1d1d;white-space:nowrap;opacity:.5}.choco-widget-google-pay-amount-value--hidden{display:none}.choco-widget-google-pay-amount-value-number{text-decoration:line-through}.choco-widget-google-pay-row--hidden{display:none}.choco-widget-wallet-blocked{pointer-events:none;opacity:.6}.choco-widget-google-pay-button-slot{width:100%}.choco-widget-google-pay-button-slot>button{width:100%!important;height:52px;min-height:52px;border-radius:12px!important;font-size:16px!important}.choco-widget-apple-pay-row--hidden{display:none}.choco-widget-apple-pay-button-slot{width:100%}.choco-widget-apple-pay-button-wrapper{position:relative;width:100%;height:52px}.choco-widget-apple-pay-button{width:100%;height:52px;min-height:52px;border:0;border-radius:12px;cursor:pointer;background:#000;color:#fff;font-size:16px;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 16px}.choco-widget-apple-pay-button--native{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:52px;opacity:.01;z-index:2}.choco-widget-apple-pay-button-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:8px;background:#000;border-radius:12px;pointer-events:none;z-index:1}.choco-widget-apple-pay-button-text{font-size:16px;line-height:20px;font-weight:600;color:#fff}.choco-widget-apple-pay-button-icon{display:inline-flex;align-items:center;justify-content:center}.choco-widget-payment-sheet{position:absolute;bottom:0;left:0;right:0;top:0;background:#00000080;display:flex;align-items:flex-end;opacity:0;pointer-events:none;transition:opacity .3s ease}.choco-widget-payment-sheet--open{opacity:1;pointer-events:auto}.choco-widget-payment-sheet--open .choco-widget-sheet-content{transform:translateY(0)}.choco-widget-sheet-content{background:#fff;border-radius:24px 24px 0 0;width:100%;max-height:70vh;overflow-y:auto;transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);padding:8px 16px 16px;position:relative;will-change:transform}.choco-widget-sheet-content--dragging{transition:none}.choco-widget-sheet-grabber{flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none;margin-bottom:8px;-webkit-user-select:none;user-select:none}.choco-widget-sheet-grabber:active{cursor:grabbing}.choco-widget-sheet-grabber:before{content:"";width:72px;height:6px;background:#e5e5e7;border-radius:42px}.choco-widget-sheet-content{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.choco-widget-sheet-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;position:relative}.choco-widget-sheet-title{font-size:20px;font-weight:700;color:#000;margin:0;flex:1;text-align:center}.choco-widget-payment-sheet--edit .choco-widget-sheet-title{padding-left:30px}.choco-widget-payment-sheet--no-cards .choco-widget-sheet-title{padding-right:30px}.choco-widget-payment-sheet--delete-confirm .choco-widget-sheet-title{padding:0}.choco-widget-sheet-button{background:none;border:none;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.choco-widget-sheet-button svg{color:#000}.choco-widget-sheet-delete-confirm{display:none;padding-top:16px}.choco-widget-payment-sheet--delete-confirm .choco-widget-payment-methods,.choco-widget-payment-sheet--delete-confirm .choco-widget-cashback-section{display:none!important}.choco-widget-payment-sheet--delete-confirm .choco-widget-sheet-delete-confirm{display:block}.choco-widget-sheet-delete-confirm-text{margin:0 0 24px;font-size:16px;line-height:1.4;color:#242424;text-align:center}.choco-widget-sheet-delete-confirm-actions{display:flex;gap:12px}.choco-widget-delete-confirm-btn{flex:1;padding:14px 20px;font-size:16px;font-weight:600;font-family:inherit;border-radius:16px;border:none;cursor:pointer;transition:background .2s ease,opacity .2s ease}.choco-widget-delete-confirm-btn--cancel{background:#f1f2f7;color:#242424}.choco-widget-delete-confirm-btn--delete{background:var(--choco-widget-accent-color);color:#fff}.choco-widget-delete-confirm-btn--loading{cursor:not-allowed;pointer-events:none;position:relative}.choco-widget-sheet-delete-confirm-actions.choco-widget-sheet-delete-confirm-actions--loading .choco-widget-delete-confirm-btn{pointer-events:none;cursor:not-allowed;opacity:.7}.choco-widget-delete-confirm-btn--delete.choco-widget-delete-confirm-btn--loading:before{content:"";display:block;width:16px;height:16px;border:2px solid #ffffff;border-top:2px solid transparent;border-radius:50%;animation:choco-spin 1s linear infinite;position:absolute;left:0;right:0;margin:0 auto;z-index:2}.choco-widget-delete-confirm-btn--delete.choco-widget-delete-confirm-btn--loading:after{content:"";display:block;width:100%;height:100%;background:#cc3434;position:absolute;left:0;top:0;border-radius:16px}.choco-widget-add-card-sheet{align-items:stretch}.choco-widget-add-card-sheet .choco-widget-add-card-sheet-content{max-height:none;height:100%;display:flex;flex-direction:column;transform:none;border-radius:0;padding:0}.choco-widget-add-card-sheet--open .choco-widget-add-card-sheet-content{transform:none}.choco-widget-add-card-sheet .choco-widget-sheet-header{flex-shrink:0;margin-bottom:0;padding:12px 0;border-bottom:1px solid #eee}.choco-widget-add-card-iframe-wrapper{flex:1;min-height:0;background:#fff}.choco-widget-add-card-iframe{width:100%;height:100%;border:none;display:block}.choco-widget-balance-section{margin-bottom:12px;padding:12px 8px;background:#f1f2f7;border-radius:12px;transition:transform .22s ease,opacity .2s ease}.choco-widget-balance-section.disabled{opacity:.5;pointer-events:none}.choco-widget-balance-toggle{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:4px 0}.choco-widget-balance-toggle:last-child{margin-bottom:0}.choco-widget-balance-info{display:flex;align-items:center;gap:12px}.choco-widget-balance-text{display:flex;flex-direction:column}.choco-widget-balance-label-wrapper{display:flex;align-items:center;gap:8px}.choco-widget-balance-label{font-size:16px;font-weight:500}.choco-widget-balance-sublabel{font-size:12px;color:#767485;margin-top:2px}.choco-widget-balance-icon{width:22px;height:22px}.choco-widget-balance-amount{font-size:16px;font-weight:500;color:#000}.choco-widget-toggle{position:relative;display:inline-block;width:42px;height:26px}.choco-widget-toggle input{opacity:0;width:0;height:0}.choco-widget-toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#d4d3df;transition:.3s;border-radius:28px}.choco-widget-toggle-slider:before{position:absolute;content:"";height:22px;width:22px;left:2px;bottom:0;top:0;margin:auto;background-color:#fff;transition:.3s;border-radius:50%}.choco-widget-toggle input:checked+.choco-widget-toggle-slider{background-color:var(--choco-widget-accent-color)}.choco-widget-toggle input:checked+.choco-widget-toggle-slider:before{transform:translate(16px)}.choco-widget-cashback-section{margin-top:20px;padding-top:20px;border-top:1px solid #f0f0f0}.choco-widget-cashback-info{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#fff5ee;border-radius:12px;font-size:14px;color:#ff6b00}.choco-widget-cashback-icon{font-size:20px}.choco-widget-cashback-text strong{font-weight:700}.choco-widget-payment-methods{display:flex;flex-direction:column;gap:8px}.choco-widget-method-item{display:flex;align-items:center;gap:12px;padding:10px 0;cursor:pointer;transition:all .2s ease;border:2px solid transparent;width:100%;border:0;background:none;text-align:left;font-family:inherit;font-size:inherit}.choco-widget-method-item-icon-wrapper{width:37px}.choco-widget-method-item-icon-wrapper svg{display:block;width:100%;max-width:29px;height:29px;margin:0 auto}.choco-widget-method-item-icon-wrapper.google_pay{outline:1px solid #3C4043;padding:3px 5px 2px;border-radius:15px}.choco-widget-method-item-icon-wrapper.google_pay svg{height:15px;max-width:29px}.choco-widget-method-item-label{flex:1;font-size:16px;color:#000}.choco-widget-method-item-check,.choco-widget-method-item-trash-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:6px;margin:-6px 0 -6px 6px;background:none;border:none;cursor:pointer;border-radius:8px;-webkit-tap-highlight-color:transparent}.choco-widget-method-item-trash-btn:hover{background:#cc343414}.choco-widget-method-item-trash{flex-shrink:0;width:20px;height:20px}.choco-widget-bottom-bar-prerender{position:absolute;bottom:0;left:0;right:0;background:#fff;border-radius:24px 24px 0 0;box-shadow:0 -4px 20px #0000001a;transition:transform .3s cubic-bezier(.4,0,.2,1);height:78px}.choco-widget-payment-loading{width:30px;height:30px;animation:choco-spin 1s linear infinite;border:3px solid var(--choco-widget-accent-color);border-top:3px solid transparent;border-radius:50%;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}@keyframes choco-spin{to{transform:rotate(360deg)}}@keyframes choco-fade-in{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@media(max-width:768px){.choco-widget-bottom-bar{padding:16px 16px 20px}.choco-widget-sheet-content{max-height:80vh}.choco-widget-sheet-title{font-size:18px}.choco-widget-method-item-label{font-size:17px}}@media(max-width:768px)and (min-height:812px){.choco-widget-bottom-bar,.choco-widget-sheet-content{padding-bottom:calc(20px + env(safe-area-inset-bottom,20px))}}@supports (padding: env(safe-area-inset-bottom)){.choco-widget-bottom-bar{padding-bottom:calc(16px + env(safe-area-inset-bottom))}.choco-widget-sheet-content{padding-bottom:calc(20px + env(safe-area-inset-bottom))}}')),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
|
+
const Ct = {
|
|
3
|
+
ru: {
|
|
4
|
+
paymentMethod: "Способ оплаты",
|
|
5
|
+
selectMethod: "Выберите метод",
|
|
6
|
+
pay: "Оплатить",
|
|
7
|
+
paymentSuccess: "Оплата прошла успешно!",
|
|
8
|
+
paymentError: "Ошибка оплаты",
|
|
9
|
+
paymentMethods: "Способ оплаты",
|
|
10
|
+
newCard: "Оплата новой картой",
|
|
11
|
+
balance: "Списать баланс",
|
|
12
|
+
bonus: "Списать бонусы",
|
|
13
|
+
bonusText: "Можно оплатить до {amount}%",
|
|
14
|
+
cashback: "Кешбэк",
|
|
15
|
+
willGet: "Получите",
|
|
16
|
+
total: "Итого",
|
|
17
|
+
instead: "вместо",
|
|
18
|
+
addCard: "Добавление карты",
|
|
19
|
+
editCards: "Редактировать карты",
|
|
20
|
+
cardDeleted: "Карта успешно удалена",
|
|
21
|
+
confirmDeleteCard: "Вы действительно хотите удалить карту?",
|
|
22
|
+
cancel: "Отмена",
|
|
23
|
+
delete: "Удалить",
|
|
24
|
+
back: "Назад",
|
|
25
|
+
errorMissingTrackClient: "Укажите trackId и clientId",
|
|
26
|
+
errorNoServerResponseRetry: "Нет ответа от сервера, попробуйте заново",
|
|
27
|
+
errorNoServerResponse: "Нет ответа от сервера",
|
|
28
|
+
errorPaymentMethodNotSelected: "Метод оплаты не выбран",
|
|
29
|
+
errorApplePayUnsupported: "Apple Pay не поддерживается в этом браузере",
|
|
30
|
+
errorApplePayInit: "Ошибка инициализации Apple Pay",
|
|
31
|
+
errorApplePayPayment: "Ошибка оплаты через Apple Pay",
|
|
32
|
+
errorGooglePayUnsupported: "Google Pay не поддерживается в этом браузере",
|
|
33
|
+
errorGooglePaySettingsUnavailable: "Настройки Google Pay недоступны",
|
|
34
|
+
errorGooglePayPayment: "Ошибка оплаты через Google Pay",
|
|
35
|
+
errorActionUrlMissing: "action_url отсутствует в событии order.action_required",
|
|
36
|
+
errorWidgetInit: "Ошибка инициализации виджета",
|
|
37
|
+
errorPaymentProcess: "Ошибка оплаты"
|
|
38
|
+
},
|
|
39
|
+
en: {
|
|
40
|
+
paymentMethod: "Payment method",
|
|
41
|
+
selectMethod: "Select method",
|
|
42
|
+
pay: "Pay",
|
|
43
|
+
paymentSuccess: "Payment successful!",
|
|
44
|
+
paymentError: "Payment error",
|
|
45
|
+
paymentMethods: "Payment method",
|
|
46
|
+
newCard: "Pay with new card",
|
|
47
|
+
balance: "Use balance",
|
|
48
|
+
bonus: "Use bonuses",
|
|
49
|
+
bonusText: "You can pay up to {amount}%",
|
|
50
|
+
cashback: "Cashback",
|
|
51
|
+
willGet: "You will get",
|
|
52
|
+
total: "Total",
|
|
53
|
+
instead: "instead",
|
|
54
|
+
addCard: "Add card",
|
|
55
|
+
editCards: "Edit cards",
|
|
56
|
+
cardDeleted: "Card successfully deleted",
|
|
57
|
+
confirmDeleteCard: "Are you sure you want to delete this card?",
|
|
58
|
+
cancel: "Cancel",
|
|
59
|
+
delete: "Delete",
|
|
60
|
+
back: "Back",
|
|
61
|
+
errorMissingTrackClient: "Provide trackId and clientId",
|
|
62
|
+
errorNoServerResponseRetry: "No response from server, please try again",
|
|
63
|
+
errorNoServerResponse: "No response from server",
|
|
64
|
+
errorPaymentMethodNotSelected: "Payment method is not selected",
|
|
65
|
+
errorApplePayUnsupported: "Apple Pay is not supported in this browser",
|
|
66
|
+
errorApplePayInit: "Apple Pay initialization error",
|
|
67
|
+
errorApplePayPayment: "Apple Pay payment error",
|
|
68
|
+
errorGooglePayUnsupported: "Google Pay is not supported in this browser",
|
|
69
|
+
errorGooglePaySettingsUnavailable: "Google Pay settings are unavailable",
|
|
70
|
+
errorGooglePayPayment: "Google Pay payment error",
|
|
71
|
+
errorActionUrlMissing: "action_url is missing in order.action_required event",
|
|
72
|
+
errorWidgetInit: "Widget initialization error",
|
|
73
|
+
errorPaymentProcess: "Payment error"
|
|
74
|
+
},
|
|
75
|
+
kk: {
|
|
76
|
+
paymentMethod: "Төлем әдісі",
|
|
77
|
+
selectMethod: "Әдісті таңдаңыз",
|
|
78
|
+
pay: "Төлеу",
|
|
79
|
+
paymentSuccess: "Төлем сәтті өтті!",
|
|
80
|
+
paymentError: "Төлем қатесі",
|
|
81
|
+
paymentMethods: "Төлем әдісі",
|
|
82
|
+
newCard: "Жаңа картамен төлеу",
|
|
83
|
+
balance: "Балансты пайдалану",
|
|
84
|
+
bonus: "Бонусдарды пайдалану",
|
|
85
|
+
bonusText: "{amount}%-ге дейін төлеуге болады",
|
|
86
|
+
cashback: "Кэшбэк",
|
|
87
|
+
willGet: "Аласыз",
|
|
88
|
+
total: "Барлығы",
|
|
89
|
+
instead: "орнына",
|
|
90
|
+
addCard: "Картаны қосу",
|
|
91
|
+
editCards: "Карталарды өңдеу",
|
|
92
|
+
cardDeleted: "Карта жойылды",
|
|
93
|
+
confirmDeleteCard: "Картаны жойғыңыз келетініне сенімдісіз бе?",
|
|
94
|
+
cancel: "Болдырмау",
|
|
95
|
+
delete: "Жою",
|
|
96
|
+
back: "Артқа",
|
|
97
|
+
errorMissingTrackClient: "trackId пен clientId көрсетіңіз",
|
|
98
|
+
errorNoServerResponseRetry: "Серверден жауап жоқ, қайтадан көріңіз",
|
|
99
|
+
errorNoServerResponse: "Серверден жауап жоқ",
|
|
100
|
+
errorPaymentMethodNotSelected: "Төлем әдісі таңдалмаған",
|
|
101
|
+
errorApplePayUnsupported: "Бұл браузерде Apple Pay қолдау көрсетілмейді",
|
|
102
|
+
errorApplePayInit: "Apple Pay инициализация қатесі",
|
|
103
|
+
errorApplePayPayment: "Apple Pay арқылы төлем қатесі",
|
|
104
|
+
errorGooglePayUnsupported: "Бұл браузерде Google Pay қолдау көрсетілмейді",
|
|
105
|
+
errorGooglePaySettingsUnavailable: "Google Pay баптаулары қолжетімсіз",
|
|
106
|
+
errorGooglePayPayment: "Google Pay арқылы төлем қатесі",
|
|
107
|
+
errorActionUrlMissing: "order.action_required оқиғасында action_url жоқ",
|
|
108
|
+
errorWidgetInit: "Виджетті инициализациялау қатесі",
|
|
109
|
+
errorPaymentProcess: "Төлем қатесі"
|
|
110
|
+
},
|
|
111
|
+
ka: {
|
|
112
|
+
paymentMethod: "გადახდის მეთოდი",
|
|
113
|
+
selectMethod: "აირჩიეთ მეთოდი",
|
|
114
|
+
pay: "გადახდა",
|
|
115
|
+
paymentSuccess: "გადახდა წარმატებით შესრულდა!",
|
|
116
|
+
paymentError: "გადახდის შეცდომა",
|
|
117
|
+
paymentMethods: "გადახდის მეთოდი",
|
|
118
|
+
newCard: "ახალი ბარათით გადახდა",
|
|
119
|
+
balance: "ბალანსის გამოყენება",
|
|
120
|
+
bonus: "ბონუსების გამოყენება",
|
|
121
|
+
bonusText: "{amount}%-ზე გადახდა შესაძლებელია",
|
|
122
|
+
cashback: "ქეშბექი",
|
|
123
|
+
willGet: "მიიღებთ",
|
|
124
|
+
total: "ჯამი",
|
|
125
|
+
instead: "ნაცვლად",
|
|
126
|
+
addCard: "ბარათის დამატება",
|
|
127
|
+
editCards: "ბარათების რედაქტირება",
|
|
128
|
+
cardDeleted: "ბარათი წაშლილია",
|
|
129
|
+
confirmDeleteCard: "დარწმუნებული ხართ, რომ გსურთ ამ ბარათის წაშლა?",
|
|
130
|
+
cancel: "გაუქმება",
|
|
131
|
+
delete: "წაშლა",
|
|
132
|
+
back: "უკან",
|
|
133
|
+
errorMissingTrackClient: "მიუთითეთ trackId და clientId",
|
|
134
|
+
errorNoServerResponseRetry: "სერვერის პასუხი არ არის, სცადეთ თავიდან",
|
|
135
|
+
errorNoServerResponse: "სერვერის პასუხი არ არის",
|
|
136
|
+
errorPaymentMethodNotSelected: "გადახდის მეთოდი არ არის არჩეული",
|
|
137
|
+
errorApplePayUnsupported: "ამ ბრაუზერში Apple Pay არ არის მხარდაჭერილი",
|
|
138
|
+
errorApplePayInit: "Apple Pay-ის ინიციალიზაციის შეცდომა",
|
|
139
|
+
errorApplePayPayment: "Apple Pay-ით გადახდის შეცდომა",
|
|
140
|
+
errorGooglePayUnsupported: "ამ ბრაუზერში Google Pay არ არის მხარდაჭერილი",
|
|
141
|
+
errorGooglePaySettingsUnavailable: "Google Pay-ის პარამეტრები მიუწვდომელია",
|
|
142
|
+
errorGooglePayPayment: "Google Pay-ით გადახდის შეცდომა",
|
|
143
|
+
errorActionUrlMissing: "order.action_required მოვლენაში action_url არ არის",
|
|
144
|
+
errorWidgetInit: "ვიჯეტის ინიციალიზაციის შეცდომა",
|
|
145
|
+
errorPaymentProcess: "გადახდის შეცდომა"
|
|
146
|
+
}
|
|
147
|
+
}, yt = {
|
|
148
|
+
KZT: "₸",
|
|
149
|
+
GEL: "₾"
|
|
150
|
+
};
|
|
151
|
+
function mt(e) {
|
|
152
|
+
return e === "production" ? "https://api-proxy.choco.kz" : "https://api-proxy.chocodev.kz";
|
|
153
|
+
}
|
|
154
|
+
let le;
|
|
155
|
+
const bt = new Uint8Array(16);
|
|
156
|
+
function Et() {
|
|
157
|
+
if (!le && (le = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !le))
|
|
158
|
+
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
159
|
+
return le(bt);
|
|
160
|
+
}
|
|
161
|
+
const H = [];
|
|
162
|
+
for (let e = 0; e < 256; ++e)
|
|
163
|
+
H.push((e + 256).toString(16).slice(1));
|
|
164
|
+
function vt(e, n = 0) {
|
|
165
|
+
return H[e[n + 0]] + H[e[n + 1]] + H[e[n + 2]] + H[e[n + 3]] + "-" + H[e[n + 4]] + H[e[n + 5]] + "-" + H[e[n + 6]] + H[e[n + 7]] + "-" + H[e[n + 8]] + H[e[n + 9]] + "-" + H[e[n + 10]] + H[e[n + 11]] + H[e[n + 12]] + H[e[n + 13]] + H[e[n + 14]] + H[e[n + 15]];
|
|
166
|
+
}
|
|
167
|
+
const Bt = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), je = {
|
|
168
|
+
randomUUID: Bt
|
|
169
|
+
};
|
|
170
|
+
function ve(e, n, o) {
|
|
171
|
+
if (je.randomUUID && !e)
|
|
172
|
+
return je.randomUUID();
|
|
173
|
+
e = e || {};
|
|
174
|
+
const s = e.random || (e.rng || Et)();
|
|
175
|
+
return s[6] = s[6] & 15 | 64, s[8] = s[8] & 63 | 128, vt(s);
|
|
176
|
+
}
|
|
177
|
+
const ze = "choco_device_id";
|
|
178
|
+
function G(e, n = "ru", o = "KZT") {
|
|
179
|
+
const s = Number(e), i = n === "ru" ? "ru-RU" : "en-US";
|
|
180
|
+
return `${s.toLocaleString(i)} ${yt[o]}`;
|
|
181
|
+
}
|
|
182
|
+
function tt() {
|
|
183
|
+
let e = localStorage.getItem(ze);
|
|
184
|
+
return e || (e = ve(), localStorage.setItem(ze, e)), e;
|
|
185
|
+
}
|
|
186
|
+
function pe() {
|
|
187
|
+
if (typeof window > "u") return !1;
|
|
188
|
+
const e = window.safari !== void 0, n = window.navigator.userAgent || "", o = !!n.match(/iPad/i) || !!n.match(/iPhone/i), s = !!n.match(/WebKit/i), i = o && s && !n.match(/CriOS/i);
|
|
189
|
+
return e || i;
|
|
190
|
+
}
|
|
191
|
+
function nt() {
|
|
192
|
+
if (typeof navigator > "u") return 0;
|
|
193
|
+
const e = navigator.userAgent || "", n = e.indexOf("OS");
|
|
194
|
+
return (e.indexOf("iPhone") > -1 || e.indexOf("iPad") > -1) && n > -1 ? Number(e.substring(n + 3, n + 6).replace("_", ".")) : 0;
|
|
195
|
+
}
|
|
196
|
+
function Ne() {
|
|
197
|
+
var u;
|
|
198
|
+
if (typeof navigator > "u") return "unknown";
|
|
199
|
+
const e = (navigator.userAgent || navigator.vendor || "").toLowerCase(), n = (navigator.platform || "").toLowerCase(), o = (((u = navigator.userAgentData) == null ? void 0 : u.platform) || "").toLowerCase(), s = `${e} ${n} ${o}`;
|
|
200
|
+
return /iphone|ipad|ipod/.test(s) || s.includes("macintosh") && typeof document < "u" && "ontouchend" in document ? "ios" : s.includes("android") ? "android" : s.includes("windows") ? "windows" : s.includes("mac") ? "macos" : "other";
|
|
201
|
+
}
|
|
202
|
+
function Ce() {
|
|
203
|
+
if (typeof navigator > "u") return !1;
|
|
204
|
+
const e = navigator.userAgentData;
|
|
205
|
+
return e != null && e.platform && ["iOS", "iPadOS"].includes(e.platform) || Ne() === "ios" ? !0 : (navigator.userAgent || "").includes("Macintosh") && typeof document < "u" && "ontouchend" in document;
|
|
206
|
+
}
|
|
207
|
+
function ye(e) {
|
|
208
|
+
if (typeof sessionStorage > "u") return !1;
|
|
209
|
+
const n = e === "apple_pay" ? "disableApplePay" : e === "google_pay" ? "disableGooglePay" : null;
|
|
210
|
+
return n ? sessionStorage.getItem(n) === "true" : !1;
|
|
211
|
+
}
|
|
212
|
+
function It(e) {
|
|
213
|
+
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
|
|
214
|
+
}
|
|
215
|
+
var he = { exports: {} }, Qt = he.exports, Ke;
|
|
216
|
+
function St() {
|
|
217
|
+
return Ke || (Ke = 1, (function(e, n) {
|
|
218
|
+
(function(s, i) {
|
|
219
|
+
e.exports = i();
|
|
220
|
+
})(Qt, function() {
|
|
221
|
+
return (
|
|
222
|
+
/******/
|
|
223
|
+
(function() {
|
|
224
|
+
var o = {
|
|
225
|
+
/***/
|
|
226
|
+
382: (
|
|
227
|
+
/***/
|
|
228
|
+
(function(c, d, g) {
|
|
229
|
+
Object.defineProperty(d, "__esModule", {
|
|
230
|
+
value: !0
|
|
231
|
+
}), d.Centrifuge = void 0;
|
|
232
|
+
var C = Q(g(187)), S = Q(g(471)), T = g(147), v = g(853);
|
|
233
|
+
function Q(f) {
|
|
234
|
+
return f && f.__esModule ? f : { default: f };
|
|
235
|
+
}
|
|
236
|
+
function _(f) {
|
|
237
|
+
"@babel/helpers - typeof";
|
|
238
|
+
return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? _ = function(p) {
|
|
239
|
+
return typeof p;
|
|
240
|
+
} : _ = function(p) {
|
|
241
|
+
return p && typeof Symbol == "function" && p.constructor === Symbol && p !== Symbol.prototype ? "symbol" : typeof p;
|
|
242
|
+
}, _(f);
|
|
243
|
+
}
|
|
244
|
+
function m(f, h) {
|
|
245
|
+
if (!(f instanceof h))
|
|
246
|
+
throw new TypeError("Cannot call a class as a function");
|
|
247
|
+
}
|
|
248
|
+
function P(f, h) {
|
|
249
|
+
for (var p = 0; p < h.length; p++) {
|
|
250
|
+
var A = h[p];
|
|
251
|
+
A.enumerable = A.enumerable || !1, A.configurable = !0, "value" in A && (A.writable = !0), Object.defineProperty(f, A.key, A);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function k(f, h, p) {
|
|
255
|
+
return h && P(f.prototype, h), f;
|
|
256
|
+
}
|
|
257
|
+
function w(f, h) {
|
|
258
|
+
if (typeof h != "function" && h !== null)
|
|
259
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
260
|
+
f.prototype = Object.create(h && h.prototype, { constructor: { value: f, writable: !0, configurable: !0 } }), h && L(f, h);
|
|
261
|
+
}
|
|
262
|
+
function L(f, h) {
|
|
263
|
+
return L = Object.setPrototypeOf || function(A, t) {
|
|
264
|
+
return A.__proto__ = t, A;
|
|
265
|
+
}, L(f, h);
|
|
266
|
+
}
|
|
267
|
+
function O(f) {
|
|
268
|
+
var h = J();
|
|
269
|
+
return function() {
|
|
270
|
+
var A = x(f), t;
|
|
271
|
+
if (h) {
|
|
272
|
+
var r = x(this).constructor;
|
|
273
|
+
t = Reflect.construct(A, arguments, r);
|
|
274
|
+
} else
|
|
275
|
+
t = A.apply(this, arguments);
|
|
276
|
+
return F(this, t);
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
function F(f, h) {
|
|
280
|
+
if (h && (_(h) === "object" || typeof h == "function"))
|
|
281
|
+
return h;
|
|
282
|
+
if (h !== void 0)
|
|
283
|
+
throw new TypeError("Derived constructors may only return object or undefined");
|
|
284
|
+
return M(f);
|
|
285
|
+
}
|
|
286
|
+
function M(f) {
|
|
287
|
+
if (f === void 0)
|
|
288
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
289
|
+
return f;
|
|
290
|
+
}
|
|
291
|
+
function J() {
|
|
292
|
+
if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham) return !1;
|
|
293
|
+
if (typeof Proxy == "function") return !0;
|
|
294
|
+
try {
|
|
295
|
+
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
|
|
296
|
+
})), !0;
|
|
297
|
+
} catch {
|
|
298
|
+
return !1;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function x(f) {
|
|
302
|
+
return x = Object.setPrototypeOf ? Object.getPrototypeOf : function(p) {
|
|
303
|
+
return p.__proto__ || Object.getPrototypeOf(p);
|
|
304
|
+
}, x(f);
|
|
305
|
+
}
|
|
306
|
+
var q = "timeout", N = "connection closed", b = /* @__PURE__ */ (function(f) {
|
|
307
|
+
w(p, f);
|
|
308
|
+
var h = O(p);
|
|
309
|
+
function p(A, t) {
|
|
310
|
+
var r;
|
|
311
|
+
return m(this, p), r = h.call(this), r._url = A, r._websocket = null, r._sockjs = null, r._isSockjs = !1, r._xmlhttprequest = null, r._binary = !1, r._methodType = null, r._pushType = null, r._encoder = null, r._decoder = null, r._status = "disconnected", r._reconnect = !0, r._reconnecting = !1, r._transport = null, r._transportName = null, r._transportClosed = !0, r._messageId = 0, r._clientID = null, r._refreshRequired = !1, r._subs = {}, r._serverSubs = {}, r._lastSeq = {}, r._lastGen = {}, r._lastOffset = {}, r._lastEpoch = {}, r._messages = [], r._isBatching = !1, r._isSubscribeBatching = !1, r._privateChannels = {}, r._numRefreshFailed = 0, r._refreshTimeout = null, r._pingTimeout = null, r._pongTimeout = null, r._subRefreshTimeouts = {}, r._retries = 0, r._callbacks = {}, r._latency = null, r._latencyStart = null, r._connectData = null, r._token = null, r._xhrID = 0, r._xhrs = {}, r._dispatchPromise = Promise.resolve(), r._protocol = "", r._config = {
|
|
312
|
+
protocol: "",
|
|
313
|
+
debug: !1,
|
|
314
|
+
name: "js",
|
|
315
|
+
version: "",
|
|
316
|
+
websocket: null,
|
|
317
|
+
sockjs: null,
|
|
318
|
+
xmlhttprequest: null,
|
|
319
|
+
minRetry: 1e3,
|
|
320
|
+
maxRetry: 2e4,
|
|
321
|
+
timeout: 5e3,
|
|
322
|
+
ping: !0,
|
|
323
|
+
pingInterval: 25e3,
|
|
324
|
+
pongWaitTimeout: 5e3,
|
|
325
|
+
privateChannelPrefix: "$",
|
|
326
|
+
onTransportClose: null,
|
|
327
|
+
sockjsServer: null,
|
|
328
|
+
sockjsTimeout: null,
|
|
329
|
+
sockjsTransports: ["websocket", "xdr-streaming", "xhr-streaming", "eventsource", "iframe-eventsource", "iframe-htmlfile", "xdr-polling", "xhr-polling", "iframe-xhr-polling", "jsonp-polling"],
|
|
330
|
+
refreshEndpoint: "/centrifuge/refresh",
|
|
331
|
+
refreshHeaders: {},
|
|
332
|
+
refreshParams: {},
|
|
333
|
+
refreshData: {},
|
|
334
|
+
refreshAttempts: null,
|
|
335
|
+
refreshInterval: 1e3,
|
|
336
|
+
onRefreshFailed: null,
|
|
337
|
+
onRefresh: null,
|
|
338
|
+
subscribeEndpoint: "/centrifuge/subscribe",
|
|
339
|
+
subscribeHeaders: {},
|
|
340
|
+
subscribeParams: {},
|
|
341
|
+
subRefreshInterval: 1e3,
|
|
342
|
+
onPrivateSubscribe: null,
|
|
343
|
+
disableWithCredentials: !1
|
|
344
|
+
}, r._configure(t), r;
|
|
345
|
+
}
|
|
346
|
+
return k(p, [{
|
|
347
|
+
key: "setToken",
|
|
348
|
+
value: function(t) {
|
|
349
|
+
this._token = t;
|
|
350
|
+
}
|
|
351
|
+
}, {
|
|
352
|
+
key: "setConnectData",
|
|
353
|
+
value: function(t) {
|
|
354
|
+
this._connectData = t;
|
|
355
|
+
}
|
|
356
|
+
}, {
|
|
357
|
+
key: "setRefreshHeaders",
|
|
358
|
+
value: function(t) {
|
|
359
|
+
this._config.refreshHeaders = t;
|
|
360
|
+
}
|
|
361
|
+
}, {
|
|
362
|
+
key: "setRefreshParams",
|
|
363
|
+
value: function(t) {
|
|
364
|
+
this._config.refreshParams = t;
|
|
365
|
+
}
|
|
366
|
+
}, {
|
|
367
|
+
key: "setRefreshData",
|
|
368
|
+
value: function(t) {
|
|
369
|
+
this._config.refreshData = t;
|
|
370
|
+
}
|
|
371
|
+
}, {
|
|
372
|
+
key: "setSubscribeHeaders",
|
|
373
|
+
value: function(t) {
|
|
374
|
+
this._config.subscribeHeaders = t;
|
|
375
|
+
}
|
|
376
|
+
}, {
|
|
377
|
+
key: "setSubscribeParams",
|
|
378
|
+
value: function(t) {
|
|
379
|
+
this._config.subscribeParams = t;
|
|
380
|
+
}
|
|
381
|
+
}, {
|
|
382
|
+
key: "_ajax",
|
|
383
|
+
value: function(t, r, a, l, y) {
|
|
384
|
+
var E = this, I = "";
|
|
385
|
+
this._debug("sending AJAX request to", t, "with data", JSON.stringify(l));
|
|
386
|
+
var B;
|
|
387
|
+
this._xmlhttprequest !== null ? B = new this._xmlhttprequest() : B = g.g.XMLHttpRequest ? new g.g.XMLHttpRequest() : new g.g.ActiveXObject("Microsoft.XMLHTTP");
|
|
388
|
+
for (var R in r)
|
|
389
|
+
r.hasOwnProperty(R) && (I.length > 0 && (I += "&"), I += encodeURIComponent(R) + "=" + encodeURIComponent(r[R]));
|
|
390
|
+
I.length > 0 && (I = "?" + I), B.open("POST", t + I, !0), "withCredentials" in B && (B.withCredentials = !this._config.disableWithCredentials), B.setRequestHeader("X-Requested-With", "XMLHttpRequest"), B.setRequestHeader("Content-Type", "application/json");
|
|
391
|
+
for (var X in a)
|
|
392
|
+
a.hasOwnProperty(X) && B.setRequestHeader(X, a[X]);
|
|
393
|
+
return B.onreadystatechange = function() {
|
|
394
|
+
if (B.readyState === 4)
|
|
395
|
+
if (B.status === 200) {
|
|
396
|
+
var U, D = !1;
|
|
397
|
+
try {
|
|
398
|
+
U = JSON.parse(B.responseText), D = !0;
|
|
399
|
+
} catch {
|
|
400
|
+
y({
|
|
401
|
+
error: "Invalid JSON. Data was: " + B.responseText,
|
|
402
|
+
status: 200,
|
|
403
|
+
data: null
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
D && y({
|
|
407
|
+
data: U,
|
|
408
|
+
status: 200
|
|
409
|
+
});
|
|
410
|
+
} else
|
|
411
|
+
E._log("wrong status code in AJAX response", B.status), y({
|
|
412
|
+
status: B.status,
|
|
413
|
+
data: null
|
|
414
|
+
});
|
|
415
|
+
}, setTimeout(function() {
|
|
416
|
+
return B.send(JSON.stringify(l));
|
|
417
|
+
}, 20), B;
|
|
418
|
+
}
|
|
419
|
+
}, {
|
|
420
|
+
key: "_log",
|
|
421
|
+
value: function() {
|
|
422
|
+
(0, v.log)("info", arguments);
|
|
423
|
+
}
|
|
424
|
+
}, {
|
|
425
|
+
key: "_debug",
|
|
426
|
+
value: function() {
|
|
427
|
+
this._config.debug === !0 && (0, v.log)("debug", arguments);
|
|
428
|
+
}
|
|
429
|
+
}, {
|
|
430
|
+
key: "_websocketSupported",
|
|
431
|
+
value: function() {
|
|
432
|
+
return this._config.websocket !== null ? !0 : !(typeof WebSocket != "function" && (typeof WebSocket > "u" ? "undefined" : _(WebSocket)) !== "object");
|
|
433
|
+
}
|
|
434
|
+
}, {
|
|
435
|
+
key: "_setFormat",
|
|
436
|
+
value: function(t) {
|
|
437
|
+
if (!this._formatOverride(t)) {
|
|
438
|
+
if (t === "protobuf")
|
|
439
|
+
throw new Error("not implemented by JSON only Centrifuge client – use client with Protobuf");
|
|
440
|
+
this._binary = !1, this._methodType = T.JsonMethodType, this._pushType = T.JsonPushType, this._encoder = new T.JsonEncoder(), this._decoder = new T.JsonDecoder();
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}, {
|
|
444
|
+
key: "_formatOverride",
|
|
445
|
+
value: function(t) {
|
|
446
|
+
return !1;
|
|
447
|
+
}
|
|
448
|
+
}, {
|
|
449
|
+
key: "_configure",
|
|
450
|
+
value: function(t) {
|
|
451
|
+
if (!("Promise" in g.g))
|
|
452
|
+
throw new Error("Promise polyfill required");
|
|
453
|
+
if ((0, v.extend)(this._config, t || {}), this._debug("centrifuge config", this._config), !this._url)
|
|
454
|
+
throw new Error("url required");
|
|
455
|
+
var r = (0, v.startsWith)(this._url, "ws") && this._url.indexOf("format=protobuf") > -1;
|
|
456
|
+
if (r || this._config.protocol === "protobuf")
|
|
457
|
+
this._setFormat("protobuf"), this._protocol = "protobuf";
|
|
458
|
+
else {
|
|
459
|
+
if (this._config.protocol !== "" && this._config.protocol !== "json")
|
|
460
|
+
throw new Error("unsupported protocol " + this._config.protocol);
|
|
461
|
+
this._setFormat("json");
|
|
462
|
+
}
|
|
463
|
+
if ((0, v.startsWith)(this._url, "http"))
|
|
464
|
+
if (this._debug("client will try to connect to SockJS endpoint"), this._config.sockjs !== null)
|
|
465
|
+
this._debug("SockJS explicitly provided in options"), this._sockjs = this._config.sockjs;
|
|
466
|
+
else {
|
|
467
|
+
if (typeof g.g.SockJS > "u")
|
|
468
|
+
throw new Error("SockJS not found, use ws:// in url or include SockJS");
|
|
469
|
+
this._debug("use globally defined SockJS"), this._sockjs = g.g.SockJS;
|
|
470
|
+
}
|
|
471
|
+
else
|
|
472
|
+
this._debug("client will connect to websocket endpoint");
|
|
473
|
+
this._xmlhttprequest = this._config.xmlhttprequest;
|
|
474
|
+
}
|
|
475
|
+
}, {
|
|
476
|
+
key: "_setStatus",
|
|
477
|
+
value: function(t) {
|
|
478
|
+
this._status !== t && (this._debug("Status", this._status, "->", t), this._status = t);
|
|
479
|
+
}
|
|
480
|
+
}, {
|
|
481
|
+
key: "_isDisconnected",
|
|
482
|
+
value: function() {
|
|
483
|
+
return this._status === "disconnected";
|
|
484
|
+
}
|
|
485
|
+
}, {
|
|
486
|
+
key: "_isConnecting",
|
|
487
|
+
value: function() {
|
|
488
|
+
return this._status === "connecting";
|
|
489
|
+
}
|
|
490
|
+
}, {
|
|
491
|
+
key: "_isConnected",
|
|
492
|
+
value: function() {
|
|
493
|
+
return this._status === "connected";
|
|
494
|
+
}
|
|
495
|
+
}, {
|
|
496
|
+
key: "_nextMessageId",
|
|
497
|
+
value: function() {
|
|
498
|
+
return ++this._messageId;
|
|
499
|
+
}
|
|
500
|
+
}, {
|
|
501
|
+
key: "_resetRetry",
|
|
502
|
+
value: function() {
|
|
503
|
+
this._debug("reset retries count to 0"), this._retries = 0;
|
|
504
|
+
}
|
|
505
|
+
}, {
|
|
506
|
+
key: "_getRetryInterval",
|
|
507
|
+
value: function() {
|
|
508
|
+
var t = (0, v.backoff)(this._retries, this._config.minRetry, this._config.maxRetry);
|
|
509
|
+
return this._retries += 1, t;
|
|
510
|
+
}
|
|
511
|
+
}, {
|
|
512
|
+
key: "_abortInflightXHRs",
|
|
513
|
+
value: function() {
|
|
514
|
+
for (var t in this._xhrs) {
|
|
515
|
+
try {
|
|
516
|
+
this._xhrs[t].abort();
|
|
517
|
+
} catch (r) {
|
|
518
|
+
this._debug("error aborting xhr", r);
|
|
519
|
+
}
|
|
520
|
+
delete this._xhrs[t];
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}, {
|
|
524
|
+
key: "_clearConnectedState",
|
|
525
|
+
value: function(t) {
|
|
526
|
+
this._clientID = null, this._stopPing();
|
|
527
|
+
for (var r in this._callbacks)
|
|
528
|
+
if (this._callbacks.hasOwnProperty(r)) {
|
|
529
|
+
var a = this._callbacks[r];
|
|
530
|
+
clearTimeout(a.timeout);
|
|
531
|
+
var l = a.errback;
|
|
532
|
+
if (!l)
|
|
533
|
+
continue;
|
|
534
|
+
l({
|
|
535
|
+
error: this._createErrorObject("disconnected")
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
this._callbacks = {};
|
|
539
|
+
for (var y in this._subs)
|
|
540
|
+
if (this._subs.hasOwnProperty(y)) {
|
|
541
|
+
var E = this._subs[y];
|
|
542
|
+
t ? (E._isSuccess() && (E._triggerUnsubscribe(), E._recover = !0), E._shouldResubscribe() && E._setSubscribing()) : E._setUnsubscribed();
|
|
543
|
+
}
|
|
544
|
+
this._abortInflightXHRs(), this._refreshTimeout !== null && (clearTimeout(this._refreshTimeout), this._refreshTimeout = null);
|
|
545
|
+
for (var I in this._subRefreshTimeouts)
|
|
546
|
+
this._subRefreshTimeouts.hasOwnProperty(I) && this._subRefreshTimeouts[I] && this._clearSubRefreshTimeout(I);
|
|
547
|
+
this._subRefreshTimeouts = {}, this._reconnect || (this._subs = {});
|
|
548
|
+
}
|
|
549
|
+
}, {
|
|
550
|
+
key: "_isTransportOpen",
|
|
551
|
+
value: function() {
|
|
552
|
+
return this._isSockjs ? this._transport && this._transport.transport && this._transport.transport.readyState === this._transport.transport.OPEN : this._transport && this._transport.readyState === this._transport.OPEN;
|
|
553
|
+
}
|
|
554
|
+
}, {
|
|
555
|
+
key: "_transportSend",
|
|
556
|
+
value: function(t) {
|
|
557
|
+
if (!t.length)
|
|
558
|
+
return !0;
|
|
559
|
+
if (!this._isTransportOpen()) {
|
|
560
|
+
for (var r in t) {
|
|
561
|
+
var a = r.id;
|
|
562
|
+
if (a in this._callbacks) {
|
|
563
|
+
var l = this._callbacks[a];
|
|
564
|
+
clearTimeout(this._callbacks[a].timeout), delete this._callbacks[a];
|
|
565
|
+
var y = l.errback;
|
|
566
|
+
y({
|
|
567
|
+
error: this._createErrorObject(N, 0)
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
return !1;
|
|
572
|
+
}
|
|
573
|
+
return this._transport.send(this._encoder.encodeCommands(t)), !0;
|
|
574
|
+
}
|
|
575
|
+
}, {
|
|
576
|
+
key: "_getSubProtocol",
|
|
577
|
+
value: function() {
|
|
578
|
+
return this._protocol ? "centrifuge-" + this._protocol : "";
|
|
579
|
+
}
|
|
580
|
+
}, {
|
|
581
|
+
key: "_setupTransport",
|
|
582
|
+
value: function() {
|
|
583
|
+
var t = this;
|
|
584
|
+
if (this._isSockjs = !1, this._sockjs !== null) {
|
|
585
|
+
var r = {
|
|
586
|
+
transports: this._config.sockjsTransports
|
|
587
|
+
};
|
|
588
|
+
this._config.sockjsServer !== null && (r.server = this._config.sockjsServer), this._config.sockjsTimeout !== null && (r.timeout = this._config.sockjsTimeout), this._isSockjs = !0, this._transport = new this._sockjs(this._url, null, r);
|
|
589
|
+
} else {
|
|
590
|
+
if (!this._websocketSupported())
|
|
591
|
+
throw this._debug("No Websocket support and no SockJS configured, can not connect"), new Error("No Websocket support and no SockJS configured, can not connect");
|
|
592
|
+
this._config.websocket !== null ? this._websocket = this._config.websocket : this._websocket = WebSocket;
|
|
593
|
+
var a = this._getSubProtocol();
|
|
594
|
+
a !== "" ? this._transport = new this._websocket(this._url, a) : this._transport = new this._websocket(this._url), this._binary === !0 && (this._transport.binaryType = "arraybuffer");
|
|
595
|
+
}
|
|
596
|
+
this._transport.onopen = function() {
|
|
597
|
+
t._transportClosed = !1, t._isSockjs ? (t._transportName = "sockjs-" + t._transport.transport, t._transport.onheartbeat = function() {
|
|
598
|
+
return t._restartPing();
|
|
599
|
+
}) : t._transportName = "websocket";
|
|
600
|
+
var l = {
|
|
601
|
+
// method: this._methodType.CONNECT
|
|
602
|
+
};
|
|
603
|
+
(t._token || t._connectData || t._config.name || t._config.version) && (l.params = {}), t._token && (l.params.token = t._token), t._connectData && (l.params.data = t._connectData), t._config.name && (l.params.name = t._config.name), t._config.version && (l.params.version = t._config.version);
|
|
604
|
+
var y = {}, E = !1;
|
|
605
|
+
for (var I in t._serverSubs)
|
|
606
|
+
if (t._serverSubs.hasOwnProperty(I) && t._serverSubs[I].recoverable) {
|
|
607
|
+
E = !0;
|
|
608
|
+
var B = {
|
|
609
|
+
recover: !0
|
|
610
|
+
};
|
|
611
|
+
t._serverSubs[I].seq || t._serverSubs[I].gen ? (t._serverSubs[I].seq && (B.seq = t._serverSubs[I].seq), t._serverSubs[I].gen && (B.gen = t._serverSubs[I].gen)) : t._serverSubs[I].offset && (B.offset = t._serverSubs[I].offset), t._serverSubs[I].epoch && (B.epoch = t._serverSubs[I].epoch), y[I] = B;
|
|
612
|
+
}
|
|
613
|
+
E && (l.params || (l.params = {}), l.params.subs = y), t._latencyStart = /* @__PURE__ */ new Date(), t._call(l).then(function(R) {
|
|
614
|
+
t._connectResponse(t._decoder.decodeCommandResult(t._methodType.CONNECT, R.result), E), R.next && R.next();
|
|
615
|
+
}, function(R) {
|
|
616
|
+
var X = R.error;
|
|
617
|
+
X.code === 109 && (t._refreshRequired = !0), t._disconnect("connect error", !0), R.next && R.next();
|
|
618
|
+
});
|
|
619
|
+
}, this._transport.onerror = function(l) {
|
|
620
|
+
t._debug("transport level error", l);
|
|
621
|
+
}, this._transport.onclose = function(l) {
|
|
622
|
+
t._transportClosed = !0;
|
|
623
|
+
var y = N, E = !0;
|
|
624
|
+
if (l && "reason" in l && l.reason)
|
|
625
|
+
try {
|
|
626
|
+
var I = JSON.parse(l.reason);
|
|
627
|
+
t._debug("reason is an advice object", I), y = I.reason, E = I.reconnect;
|
|
628
|
+
} catch {
|
|
629
|
+
y = l.reason, t._debug("reason is a plain string", y);
|
|
630
|
+
}
|
|
631
|
+
if (t._config.onTransportClose !== null && t._config.onTransportClose({
|
|
632
|
+
event: l,
|
|
633
|
+
reason: y,
|
|
634
|
+
reconnect: E
|
|
635
|
+
}), t._disconnect(y, E), t._reconnect === !0) {
|
|
636
|
+
t._reconnecting = !0;
|
|
637
|
+
var B = t._getRetryInterval();
|
|
638
|
+
t._debug("reconnect after " + B + " milliseconds"), setTimeout(function() {
|
|
639
|
+
t._reconnect === !0 && (t._refreshRequired ? t._refresh() : t._connect());
|
|
640
|
+
}, B);
|
|
641
|
+
}
|
|
642
|
+
}, this._transport.onmessage = function(l) {
|
|
643
|
+
t._dataReceived(l.data);
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
}, {
|
|
647
|
+
key: "rpc",
|
|
648
|
+
value: function(t) {
|
|
649
|
+
return this._rpc("", t);
|
|
650
|
+
}
|
|
651
|
+
}, {
|
|
652
|
+
key: "namedRPC",
|
|
653
|
+
value: function(t, r) {
|
|
654
|
+
return this._rpc(t, r);
|
|
655
|
+
}
|
|
656
|
+
}, {
|
|
657
|
+
key: "_rpc",
|
|
658
|
+
value: function(t, r) {
|
|
659
|
+
var a = {
|
|
660
|
+
data: r
|
|
661
|
+
};
|
|
662
|
+
t !== "" && (a.method = t);
|
|
663
|
+
var l = {
|
|
664
|
+
method: this._methodType.RPC,
|
|
665
|
+
params: a
|
|
666
|
+
};
|
|
667
|
+
return this._methodCall(l, function(y) {
|
|
668
|
+
return y;
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
}, {
|
|
672
|
+
key: "send",
|
|
673
|
+
value: function(t) {
|
|
674
|
+
var r = {
|
|
675
|
+
method: this._methodType.SEND,
|
|
676
|
+
params: {
|
|
677
|
+
data: t
|
|
678
|
+
}
|
|
679
|
+
};
|
|
680
|
+
if (!this.isConnected())
|
|
681
|
+
return Promise.reject(this._createErrorObject(N, 0));
|
|
682
|
+
var a = this._transportSend([r]);
|
|
683
|
+
return a ? Promise.resolve({}) : Promise.reject(this._createErrorObject(N, 0));
|
|
684
|
+
}
|
|
685
|
+
}, {
|
|
686
|
+
key: "_getHistoryParams",
|
|
687
|
+
value: function(t, r) {
|
|
688
|
+
var a = {
|
|
689
|
+
channel: t
|
|
690
|
+
};
|
|
691
|
+
return r !== void 0 && (r.since && (a.since = {
|
|
692
|
+
offset: r.since.offset
|
|
693
|
+
}, r.since.epoch && (a.since.epoch = r.since.epoch)), r.limit !== void 0 && (a.limit = r.limit), r.reverse === !0 && (a.reverse = !0)), a;
|
|
694
|
+
}
|
|
695
|
+
}, {
|
|
696
|
+
key: "_methodCall",
|
|
697
|
+
value: function(t, r) {
|
|
698
|
+
var a = this;
|
|
699
|
+
return this.isConnected() ? new Promise(function(l, y) {
|
|
700
|
+
a._call(t).then(function(E) {
|
|
701
|
+
l(r(a._decoder.decodeCommandResult(t.method, E.result))), E.next && E.next();
|
|
702
|
+
}, function(E) {
|
|
703
|
+
y(E.error), E.next && E.next();
|
|
704
|
+
});
|
|
705
|
+
}) : Promise.reject(this._createErrorObject(N, 0));
|
|
706
|
+
}
|
|
707
|
+
}, {
|
|
708
|
+
key: "publish",
|
|
709
|
+
value: function(t, r) {
|
|
710
|
+
var a = {
|
|
711
|
+
method: this._methodType.PUBLISH,
|
|
712
|
+
params: {
|
|
713
|
+
channel: t,
|
|
714
|
+
data: r
|
|
715
|
+
}
|
|
716
|
+
};
|
|
717
|
+
return this._methodCall(a, function() {
|
|
718
|
+
return {};
|
|
719
|
+
});
|
|
720
|
+
}
|
|
721
|
+
}, {
|
|
722
|
+
key: "history",
|
|
723
|
+
value: function(t, r) {
|
|
724
|
+
var a = this._getHistoryParams(t, r), l = {
|
|
725
|
+
method: this._methodType.HISTORY,
|
|
726
|
+
params: a
|
|
727
|
+
};
|
|
728
|
+
return this._methodCall(l, function(y) {
|
|
729
|
+
return {
|
|
730
|
+
publications: y.publications,
|
|
731
|
+
epoch: y.epoch || "",
|
|
732
|
+
offset: y.offset || 0
|
|
733
|
+
};
|
|
734
|
+
});
|
|
735
|
+
}
|
|
736
|
+
}, {
|
|
737
|
+
key: "presence",
|
|
738
|
+
value: function(t) {
|
|
739
|
+
var r = {
|
|
740
|
+
method: this._methodType.PRESENCE,
|
|
741
|
+
params: {
|
|
742
|
+
channel: t
|
|
743
|
+
}
|
|
744
|
+
};
|
|
745
|
+
return this._methodCall(r, function(a) {
|
|
746
|
+
return {
|
|
747
|
+
presence: a.presence
|
|
748
|
+
};
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
}, {
|
|
752
|
+
key: "presenceStats",
|
|
753
|
+
value: function(t) {
|
|
754
|
+
var r = {
|
|
755
|
+
method: this._methodType.PRESENCE_STATS,
|
|
756
|
+
params: {
|
|
757
|
+
channel: t
|
|
758
|
+
}
|
|
759
|
+
};
|
|
760
|
+
return this._methodCall(r, function(a) {
|
|
761
|
+
return {
|
|
762
|
+
num_users: a.num_users,
|
|
763
|
+
num_clients: a.num_clients
|
|
764
|
+
};
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
}, {
|
|
768
|
+
key: "_dataReceived",
|
|
769
|
+
value: function(t) {
|
|
770
|
+
var r = this, a = this._decoder.decodeReplies(t);
|
|
771
|
+
this._dispatchPromise = this._dispatchPromise.then(function() {
|
|
772
|
+
var l;
|
|
773
|
+
r._dispatchPromise = new Promise(function(y) {
|
|
774
|
+
l = y;
|
|
775
|
+
}), r._dispatchSynchronized(a, l);
|
|
776
|
+
}), this._restartPing();
|
|
777
|
+
}
|
|
778
|
+
}, {
|
|
779
|
+
key: "_dispatchSynchronized",
|
|
780
|
+
value: function(t, r) {
|
|
781
|
+
var a = this, l = Promise.resolve(), y = function(B) {
|
|
782
|
+
t.hasOwnProperty(B) && (l = l.then(function() {
|
|
783
|
+
return a._dispatchReply(t[B]);
|
|
784
|
+
}));
|
|
785
|
+
};
|
|
786
|
+
for (var E in t)
|
|
787
|
+
y(E);
|
|
788
|
+
l = l.then(function() {
|
|
789
|
+
r();
|
|
790
|
+
});
|
|
791
|
+
}
|
|
792
|
+
}, {
|
|
793
|
+
key: "_dispatchReply",
|
|
794
|
+
value: function(t) {
|
|
795
|
+
var r, a = new Promise(function(y) {
|
|
796
|
+
r = y;
|
|
797
|
+
});
|
|
798
|
+
if (t == null)
|
|
799
|
+
return this._debug("dispatch: got undefined or null reply"), r(), a;
|
|
800
|
+
var l = t.id;
|
|
801
|
+
return l && l > 0 ? this._handleReply(t, r) : this._handlePush(t.result, r), a;
|
|
802
|
+
}
|
|
803
|
+
}, {
|
|
804
|
+
key: "_call",
|
|
805
|
+
value: function(t) {
|
|
806
|
+
var r = this;
|
|
807
|
+
return new Promise(function(a, l) {
|
|
808
|
+
var y = r._addMessage(t);
|
|
809
|
+
r._registerCall(y, a, l);
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
}, {
|
|
813
|
+
key: "_connect",
|
|
814
|
+
value: function() {
|
|
815
|
+
if (this.isConnected()) {
|
|
816
|
+
this._debug("connect called when already connected");
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
this._status !== "connecting" && (this._debug("start connecting"), this._setStatus("connecting"), this._clientID = null, this._reconnect = !0, this._setupTransport());
|
|
820
|
+
}
|
|
821
|
+
}, {
|
|
822
|
+
key: "_disconnect",
|
|
823
|
+
value: function(t, r) {
|
|
824
|
+
var a = r || !1;
|
|
825
|
+
if (a === !1 && (this._reconnect = !1), this._isDisconnected()) {
|
|
826
|
+
a || this._clearConnectedState(a);
|
|
827
|
+
return;
|
|
828
|
+
}
|
|
829
|
+
if (this._clearConnectedState(a), this._debug("disconnected:", t, r), this._setStatus("disconnected"), this._refreshTimeout && (clearTimeout(this._refreshTimeout), this._refreshTimeout = null), this._reconnecting === !1) {
|
|
830
|
+
for (var l in this._serverSubs)
|
|
831
|
+
this._serverSubs.hasOwnProperty(l) && this.emit("unsubscribe", {
|
|
832
|
+
channel: l
|
|
833
|
+
});
|
|
834
|
+
this.emit("disconnect", {
|
|
835
|
+
reason: t,
|
|
836
|
+
reconnect: a
|
|
837
|
+
});
|
|
838
|
+
}
|
|
839
|
+
a === !1 && (this._subs = {}, this._serverSubs = {}), this._transportClosed || this._transport.close();
|
|
840
|
+
}
|
|
841
|
+
}, {
|
|
842
|
+
key: "_refreshFailed",
|
|
843
|
+
value: function() {
|
|
844
|
+
this._numRefreshFailed = 0, this._isDisconnected() || this._disconnect("refresh failed", !1), this._config.onRefreshFailed !== null && this._config.onRefreshFailed();
|
|
845
|
+
}
|
|
846
|
+
}, {
|
|
847
|
+
key: "_refresh",
|
|
848
|
+
value: function() {
|
|
849
|
+
var t = this;
|
|
850
|
+
if (this._debug("refresh token"), this._config.refreshAttempts === 0) {
|
|
851
|
+
this._debug("refresh attempts set to 0, do not send refresh request at all"), this._refreshFailed();
|
|
852
|
+
return;
|
|
853
|
+
}
|
|
854
|
+
this._refreshTimeout !== null && (clearTimeout(this._refreshTimeout), this._refreshTimeout = null);
|
|
855
|
+
var r = this._clientID, a = this._newXHRID(), l = function(B) {
|
|
856
|
+
if (a in t._xhrs && delete t._xhrs[a], t._clientID === r) {
|
|
857
|
+
if (B.error || B.status !== 200) {
|
|
858
|
+
if (B.error ? t._debug("error refreshing connection token", B.error) : t._debug("error refreshing connection token: wrong status code", B.status), t._numRefreshFailed++, t._refreshTimeout !== null && (clearTimeout(t._refreshTimeout), t._refreshTimeout = null), t._config.refreshAttempts !== null && t._numRefreshFailed >= t._config.refreshAttempts) {
|
|
859
|
+
t._refreshFailed();
|
|
860
|
+
return;
|
|
861
|
+
}
|
|
862
|
+
var R = Math.round(Math.random() * 1e3 * Math.max(t._numRefreshFailed, 20)), X = t._config.refreshInterval + R;
|
|
863
|
+
t._refreshTimeout = setTimeout(function() {
|
|
864
|
+
return t._refresh();
|
|
865
|
+
}, X);
|
|
866
|
+
return;
|
|
867
|
+
}
|
|
868
|
+
if (t._numRefreshFailed = 0, t._token = B.data.token, !t._token) {
|
|
869
|
+
t._refreshFailed();
|
|
870
|
+
return;
|
|
871
|
+
}
|
|
872
|
+
if (t._isDisconnected() && t._reconnect)
|
|
873
|
+
t._debug("token refreshed, connect from scratch"), t._connect();
|
|
874
|
+
else {
|
|
875
|
+
t._debug("send refreshed token");
|
|
876
|
+
var U = {
|
|
877
|
+
method: t._methodType.REFRESH,
|
|
878
|
+
params: {
|
|
879
|
+
token: t._token
|
|
880
|
+
}
|
|
881
|
+
};
|
|
882
|
+
t._call(U).then(function(D) {
|
|
883
|
+
t._refreshResponse(t._decoder.decodeCommandResult(t._methodType.REFRESH, D.result)), D.next && D.next();
|
|
884
|
+
}, function(D) {
|
|
885
|
+
t._refreshError(D.error), D.next && D.next();
|
|
886
|
+
});
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
};
|
|
890
|
+
if (this._config.onRefresh !== null) {
|
|
891
|
+
var y = {};
|
|
892
|
+
this._config.onRefresh(y, l);
|
|
893
|
+
} else {
|
|
894
|
+
var E = this._ajax(this._config.refreshEndpoint, this._config.refreshParams, this._config.refreshHeaders, this._config.refreshData, l);
|
|
895
|
+
this._xhrs[a] = E;
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
}, {
|
|
899
|
+
key: "_refreshError",
|
|
900
|
+
value: function(t) {
|
|
901
|
+
var r = this;
|
|
902
|
+
this._debug("refresh error", t), this._refreshTimeout && (clearTimeout(this._refreshTimeout), this._refreshTimeout = null);
|
|
903
|
+
var a = this._config.refreshInterval + Math.round(Math.random() * 1e3);
|
|
904
|
+
this._refreshTimeout = setTimeout(function() {
|
|
905
|
+
return r._refresh();
|
|
906
|
+
}, a);
|
|
907
|
+
}
|
|
908
|
+
}, {
|
|
909
|
+
key: "_refreshResponse",
|
|
910
|
+
value: function(t) {
|
|
911
|
+
var r = this;
|
|
912
|
+
this._refreshTimeout && (clearTimeout(this._refreshTimeout), this._refreshTimeout = null), t.expires && (this._clientID = t.client, this._refreshTimeout = setTimeout(function() {
|
|
913
|
+
return r._refresh();
|
|
914
|
+
}, this._getTTLMilliseconds(t.ttl)));
|
|
915
|
+
}
|
|
916
|
+
}, {
|
|
917
|
+
key: "_newXHRID",
|
|
918
|
+
value: function() {
|
|
919
|
+
return this._xhrID++, this._xhrID;
|
|
920
|
+
}
|
|
921
|
+
}, {
|
|
922
|
+
key: "_subRefresh",
|
|
923
|
+
value: function(t) {
|
|
924
|
+
var r = this;
|
|
925
|
+
if (this._debug("refresh subscription token for channel", t), this._subRefreshTimeouts[t] !== void 0)
|
|
926
|
+
this._clearSubRefreshTimeout(t);
|
|
927
|
+
else
|
|
928
|
+
return;
|
|
929
|
+
var a = this._clientID, l = this._newXHRID(), y = function(R) {
|
|
930
|
+
if (l in r._xhrs && delete r._xhrs[l], !(R.error || R.status !== 200 || r._clientID !== a)) {
|
|
931
|
+
var X = {};
|
|
932
|
+
if (R.data.channels)
|
|
933
|
+
for (var U in R.data.channels) {
|
|
934
|
+
var D = R.data.channels[U];
|
|
935
|
+
D.channel && (X[D.channel] = D.token);
|
|
936
|
+
}
|
|
937
|
+
var ne = X[t];
|
|
938
|
+
if (ne) {
|
|
939
|
+
var Se = {
|
|
940
|
+
method: r._methodType.SUB_REFRESH,
|
|
941
|
+
params: {
|
|
942
|
+
channel: t,
|
|
943
|
+
token: ne
|
|
944
|
+
}
|
|
945
|
+
}, ue = r._getSub(t);
|
|
946
|
+
ue !== null && r._call(Se).then(function(V) {
|
|
947
|
+
r._subRefreshResponse(t, r._decoder.decodeCommandResult(r._methodType.SUB_REFRESH, V.result)), V.next && V.next();
|
|
948
|
+
}, function(V) {
|
|
949
|
+
r._subRefreshError(t, V.error), V.next && V.next();
|
|
950
|
+
});
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
}, E = {
|
|
954
|
+
client: this._clientID,
|
|
955
|
+
channels: [t]
|
|
956
|
+
};
|
|
957
|
+
if (this._config.onPrivateSubscribe !== null)
|
|
958
|
+
this._config.onPrivateSubscribe({
|
|
959
|
+
data: E
|
|
960
|
+
}, y);
|
|
961
|
+
else {
|
|
962
|
+
var I = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, E, y);
|
|
963
|
+
this._xhrs[l] = I;
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
}, {
|
|
967
|
+
key: "_clearSubRefreshTimeout",
|
|
968
|
+
value: function(t) {
|
|
969
|
+
this._subRefreshTimeouts[t] !== void 0 && (clearTimeout(this._subRefreshTimeouts[t]), delete this._subRefreshTimeouts[t]);
|
|
970
|
+
}
|
|
971
|
+
}, {
|
|
972
|
+
key: "_subRefreshError",
|
|
973
|
+
value: function(t, r) {
|
|
974
|
+
var a = this;
|
|
975
|
+
this._debug("subscription refresh error", t, r), this._clearSubRefreshTimeout(t);
|
|
976
|
+
var l = this._getSub(t);
|
|
977
|
+
if (l !== null) {
|
|
978
|
+
var y = Math.round(Math.random() * 1e3), E = setTimeout(function() {
|
|
979
|
+
return a._subRefresh(t);
|
|
980
|
+
}, this._config.subRefreshInterval + y);
|
|
981
|
+
this._subRefreshTimeouts[t] = E;
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
}, {
|
|
985
|
+
key: "_subRefreshResponse",
|
|
986
|
+
value: function(t, r) {
|
|
987
|
+
var a = this;
|
|
988
|
+
this._debug("subscription refresh success", t), this._clearSubRefreshTimeout(t);
|
|
989
|
+
var l = this._getSub(t);
|
|
990
|
+
if (l !== null && r.expires === !0) {
|
|
991
|
+
var y = setTimeout(function() {
|
|
992
|
+
return a._subRefresh(t);
|
|
993
|
+
}, this._getTTLMilliseconds(r.ttl));
|
|
994
|
+
this._subRefreshTimeouts[t] = y;
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
}, {
|
|
998
|
+
key: "_subscribe",
|
|
999
|
+
value: function(t, r) {
|
|
1000
|
+
var a = this;
|
|
1001
|
+
this._debug("subscribing on", t.channel);
|
|
1002
|
+
var l = t.channel;
|
|
1003
|
+
if (l in this._subs || (this._subs[l] = t), !this.isConnected()) {
|
|
1004
|
+
t._setNew();
|
|
1005
|
+
return;
|
|
1006
|
+
}
|
|
1007
|
+
t._setSubscribing(r);
|
|
1008
|
+
var y = {
|
|
1009
|
+
method: this._methodType.SUBSCRIBE,
|
|
1010
|
+
params: {
|
|
1011
|
+
channel: l
|
|
1012
|
+
}
|
|
1013
|
+
};
|
|
1014
|
+
if (t._subscribeData && (y.params.data = t._subscribeData), (0, v.startsWith)(l, this._config.privateChannelPrefix))
|
|
1015
|
+
this._isSubscribeBatching ? this._privateChannels[l] = !0 : (this.startSubscribeBatching(), this._subscribe(t), this.stopSubscribeBatching());
|
|
1016
|
+
else {
|
|
1017
|
+
var E = t._needRecover();
|
|
1018
|
+
if (E === !0) {
|
|
1019
|
+
y.params.recover = !0;
|
|
1020
|
+
var I = this._getLastSeq(l), B = this._getLastGen(l);
|
|
1021
|
+
if (I || B)
|
|
1022
|
+
I && (y.params.seq = I), B && (y.params.gen = B);
|
|
1023
|
+
else {
|
|
1024
|
+
var R = this._getLastOffset(l);
|
|
1025
|
+
R && (y.params.offset = R);
|
|
1026
|
+
}
|
|
1027
|
+
var X = this._getLastEpoch(l);
|
|
1028
|
+
X && (y.params.epoch = X);
|
|
1029
|
+
}
|
|
1030
|
+
this._call(y).then(function(U) {
|
|
1031
|
+
a._subscribeResponse(l, E, a._decoder.decodeCommandResult(a._methodType.SUBSCRIBE, U.result)), U.next && U.next();
|
|
1032
|
+
}, function(U) {
|
|
1033
|
+
a._subscribeError(l, U.error), U.next && U.next();
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
}, {
|
|
1038
|
+
key: "_unsubscribe",
|
|
1039
|
+
value: function(t) {
|
|
1040
|
+
delete this._subs[t.channel], delete this._lastOffset[t.channel], delete this._lastSeq[t.channel], delete this._lastGen[t.channel], this.isConnected() && this._addMessage({
|
|
1041
|
+
method: this._methodType.UNSUBSCRIBE,
|
|
1042
|
+
params: {
|
|
1043
|
+
channel: t.channel
|
|
1044
|
+
}
|
|
1045
|
+
});
|
|
1046
|
+
}
|
|
1047
|
+
}, {
|
|
1048
|
+
key: "_getTTLMilliseconds",
|
|
1049
|
+
value: function(t) {
|
|
1050
|
+
return Math.min(t * 1e3, 2147483647);
|
|
1051
|
+
}
|
|
1052
|
+
}, {
|
|
1053
|
+
key: "getSub",
|
|
1054
|
+
value: function(t) {
|
|
1055
|
+
return this._getSub(t);
|
|
1056
|
+
}
|
|
1057
|
+
}, {
|
|
1058
|
+
key: "_getSub",
|
|
1059
|
+
value: function(t) {
|
|
1060
|
+
var r = this._subs[t];
|
|
1061
|
+
return r || null;
|
|
1062
|
+
}
|
|
1063
|
+
}, {
|
|
1064
|
+
key: "_isServerSub",
|
|
1065
|
+
value: function(t) {
|
|
1066
|
+
return this._serverSubs[t] !== void 0;
|
|
1067
|
+
}
|
|
1068
|
+
}, {
|
|
1069
|
+
key: "_connectResponse",
|
|
1070
|
+
value: function(t, r) {
|
|
1071
|
+
var a = this, l = this._reconnecting;
|
|
1072
|
+
if (this._reconnecting = !1, this._resetRetry(), this._refreshRequired = !1, !this.isConnected()) {
|
|
1073
|
+
this._latencyStart !== null && (this._latency = (/* @__PURE__ */ new Date()).getTime() - this._latencyStart.getTime(), this._latencyStart = null), this._clientID = t.client, this._setStatus("connected"), this._refreshTimeout && clearTimeout(this._refreshTimeout), t.expires && (this._refreshTimeout = setTimeout(function() {
|
|
1074
|
+
return a._refresh();
|
|
1075
|
+
}, this._getTTLMilliseconds(t.ttl))), this.startBatching(), this.startSubscribeBatching();
|
|
1076
|
+
for (var y in this._subs)
|
|
1077
|
+
if (this._subs.hasOwnProperty(y)) {
|
|
1078
|
+
var E = this._subs[y];
|
|
1079
|
+
E._shouldResubscribe() && this._subscribe(E, l);
|
|
1080
|
+
}
|
|
1081
|
+
this.stopSubscribeBatching(), this.stopBatching(), this._startPing();
|
|
1082
|
+
var I = {
|
|
1083
|
+
client: t.client,
|
|
1084
|
+
transport: this._transportName,
|
|
1085
|
+
latency: this._latency
|
|
1086
|
+
};
|
|
1087
|
+
t.data && (I.data = t.data), this.emit("connect", I), t.subs && this._processServerSubs(t.subs);
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
}, {
|
|
1091
|
+
key: "_processServerSubs",
|
|
1092
|
+
value: function(t) {
|
|
1093
|
+
for (var r in t)
|
|
1094
|
+
if (t.hasOwnProperty(r)) {
|
|
1095
|
+
var a = t[r], l = this._serverSubs[r] !== void 0, y = {
|
|
1096
|
+
channel: r,
|
|
1097
|
+
isResubscribe: l
|
|
1098
|
+
};
|
|
1099
|
+
y = this._expandSubscribeContext(y, a), this.emit("subscribe", y);
|
|
1100
|
+
}
|
|
1101
|
+
for (var E in t)
|
|
1102
|
+
if (t.hasOwnProperty(E)) {
|
|
1103
|
+
var I = t[E];
|
|
1104
|
+
if (I.recovered) {
|
|
1105
|
+
var B = I.publications;
|
|
1106
|
+
if (B && B.length > 0) {
|
|
1107
|
+
B.length > 1 && (!B[0].offset || B[0].offset > B[1].offset) && (B = B.reverse());
|
|
1108
|
+
for (var R in B)
|
|
1109
|
+
B.hasOwnProperty(R) && this._handlePublication(E, B[R]);
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
this._serverSubs[E] = {
|
|
1113
|
+
seq: I.seq,
|
|
1114
|
+
gen: I.gen,
|
|
1115
|
+
offset: I.offset,
|
|
1116
|
+
epoch: I.epoch,
|
|
1117
|
+
recoverable: I.recoverable
|
|
1118
|
+
};
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
}, {
|
|
1122
|
+
key: "_stopPing",
|
|
1123
|
+
value: function() {
|
|
1124
|
+
this._pongTimeout !== null && (clearTimeout(this._pongTimeout), this._pongTimeout = null), this._pingTimeout !== null && (clearTimeout(this._pingTimeout), this._pingTimeout = null);
|
|
1125
|
+
}
|
|
1126
|
+
}, {
|
|
1127
|
+
key: "_startPing",
|
|
1128
|
+
value: function() {
|
|
1129
|
+
var t = this;
|
|
1130
|
+
this._config.ping !== !0 || this._config.pingInterval <= 0 || this.isConnected() && (this._pingTimeout = setTimeout(function() {
|
|
1131
|
+
if (!t.isConnected()) {
|
|
1132
|
+
t._stopPing();
|
|
1133
|
+
return;
|
|
1134
|
+
}
|
|
1135
|
+
t.ping(), t._pongTimeout = setTimeout(function() {
|
|
1136
|
+
t._disconnect("no ping", !0);
|
|
1137
|
+
}, t._config.pongWaitTimeout);
|
|
1138
|
+
}, this._config.pingInterval));
|
|
1139
|
+
}
|
|
1140
|
+
}, {
|
|
1141
|
+
key: "_restartPing",
|
|
1142
|
+
value: function() {
|
|
1143
|
+
this._stopPing(), this._startPing();
|
|
1144
|
+
}
|
|
1145
|
+
}, {
|
|
1146
|
+
key: "_subscribeError",
|
|
1147
|
+
value: function(t, r) {
|
|
1148
|
+
var a = this._getSub(t);
|
|
1149
|
+
if (a && a._isSubscribing()) {
|
|
1150
|
+
if (r.code === 0 && r.message === q) {
|
|
1151
|
+
this._disconnect("timeout", !0);
|
|
1152
|
+
return;
|
|
1153
|
+
}
|
|
1154
|
+
a._setSubscribeError(r);
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
}, {
|
|
1158
|
+
key: "_expandSubscribeContext",
|
|
1159
|
+
value: function(t, r) {
|
|
1160
|
+
var a = !1;
|
|
1161
|
+
"recovered" in r && (a = r.recovered), t.recovered = a;
|
|
1162
|
+
var l = !1;
|
|
1163
|
+
"positioned" in r && (l = r.positioned);
|
|
1164
|
+
var y = "";
|
|
1165
|
+
"epoch" in r && (y = r.epoch);
|
|
1166
|
+
var E = 0;
|
|
1167
|
+
return "offset" in r && (E = r.offset), l && (t.streamPosition = {
|
|
1168
|
+
offset: E,
|
|
1169
|
+
epoch: y
|
|
1170
|
+
}), r.data && (t.data = r.data), t;
|
|
1171
|
+
}
|
|
1172
|
+
}, {
|
|
1173
|
+
key: "_subscribeResponse",
|
|
1174
|
+
value: function(t, r, a) {
|
|
1175
|
+
var l = this, y = this._getSub(t);
|
|
1176
|
+
if (y && y._isSubscribing()) {
|
|
1177
|
+
y._setSubscribeSuccess(a);
|
|
1178
|
+
var E = a.publications;
|
|
1179
|
+
if (E && E.length > 0) {
|
|
1180
|
+
E.length >= 2 && !E[0].offset && !E[1].offset && (E = E.reverse());
|
|
1181
|
+
for (var I in E)
|
|
1182
|
+
E.hasOwnProperty(I) && this._handlePublication(t, E[I]);
|
|
1183
|
+
}
|
|
1184
|
+
if (a.recoverable && (!r || !a.recovered) && (this._lastSeq[t] = a.seq || 0, this._lastGen[t] = a.gen || 0, this._lastOffset[t] = a.offset || 0), this._lastEpoch[t] = a.epoch || "", a.recoverable && (y._recoverable = !0), a.expires === !0) {
|
|
1185
|
+
var B = setTimeout(function() {
|
|
1186
|
+
return l._subRefresh(t);
|
|
1187
|
+
}, this._getTTLMilliseconds(a.ttl));
|
|
1188
|
+
this._subRefreshTimeouts[t] = B;
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
}, {
|
|
1193
|
+
key: "_handleReply",
|
|
1194
|
+
value: function(t, r) {
|
|
1195
|
+
var a = t.id, l = t.result;
|
|
1196
|
+
if (!(a in this._callbacks)) {
|
|
1197
|
+
r();
|
|
1198
|
+
return;
|
|
1199
|
+
}
|
|
1200
|
+
var y = this._callbacks[a];
|
|
1201
|
+
if (clearTimeout(this._callbacks[a].timeout), delete this._callbacks[a], (0, v.errorExists)(t)) {
|
|
1202
|
+
var I = y.errback;
|
|
1203
|
+
if (!I) {
|
|
1204
|
+
r();
|
|
1205
|
+
return;
|
|
1206
|
+
}
|
|
1207
|
+
var B = t.error;
|
|
1208
|
+
I({
|
|
1209
|
+
error: B,
|
|
1210
|
+
next: r
|
|
1211
|
+
});
|
|
1212
|
+
} else {
|
|
1213
|
+
var E = y.callback;
|
|
1214
|
+
if (!E)
|
|
1215
|
+
return;
|
|
1216
|
+
E({
|
|
1217
|
+
result: l,
|
|
1218
|
+
next: r
|
|
1219
|
+
});
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
}, {
|
|
1223
|
+
key: "_handleJoin",
|
|
1224
|
+
value: function(t, r) {
|
|
1225
|
+
var a = {
|
|
1226
|
+
info: r.info
|
|
1227
|
+
}, l = this._getSub(t);
|
|
1228
|
+
if (!l) {
|
|
1229
|
+
this._isServerSub(t) && (a.channel = t, this.emit("join", a));
|
|
1230
|
+
return;
|
|
1231
|
+
}
|
|
1232
|
+
l.emit("join", a);
|
|
1233
|
+
}
|
|
1234
|
+
}, {
|
|
1235
|
+
key: "_handleLeave",
|
|
1236
|
+
value: function(t, r) {
|
|
1237
|
+
var a = {
|
|
1238
|
+
info: r.info
|
|
1239
|
+
}, l = this._getSub(t);
|
|
1240
|
+
if (!l) {
|
|
1241
|
+
this._isServerSub(t) && (a.channel = t, this.emit("leave", a));
|
|
1242
|
+
return;
|
|
1243
|
+
}
|
|
1244
|
+
l.emit("leave", a);
|
|
1245
|
+
}
|
|
1246
|
+
}, {
|
|
1247
|
+
key: "_handleUnsub",
|
|
1248
|
+
value: function(t, r) {
|
|
1249
|
+
var a = {}, l = this._getSub(t);
|
|
1250
|
+
if (!l) {
|
|
1251
|
+
this._isServerSub(t) && (delete this._serverSubs[t], a.channel = t, this.emit("unsubscribe", a));
|
|
1252
|
+
return;
|
|
1253
|
+
}
|
|
1254
|
+
l.unsubscribe(), r.resubscribe === !0 && l.subscribe();
|
|
1255
|
+
}
|
|
1256
|
+
}, {
|
|
1257
|
+
key: "_handleSub",
|
|
1258
|
+
value: function(t, r) {
|
|
1259
|
+
this._serverSubs[t] = {
|
|
1260
|
+
seq: r.seq,
|
|
1261
|
+
gen: r.gen,
|
|
1262
|
+
offset: r.offset,
|
|
1263
|
+
epoch: r.epoch,
|
|
1264
|
+
recoverable: r.recoverable
|
|
1265
|
+
};
|
|
1266
|
+
var a = {
|
|
1267
|
+
channel: t,
|
|
1268
|
+
isResubscribe: !1
|
|
1269
|
+
};
|
|
1270
|
+
a = this._expandSubscribeContext(a, r), this.emit("subscribe", a);
|
|
1271
|
+
}
|
|
1272
|
+
}, {
|
|
1273
|
+
key: "_handlePublication",
|
|
1274
|
+
value: function(t, r) {
|
|
1275
|
+
var a = this._getSub(t), l = {
|
|
1276
|
+
data: r.data,
|
|
1277
|
+
seq: r.seq,
|
|
1278
|
+
gen: r.gen,
|
|
1279
|
+
offset: r.offset
|
|
1280
|
+
};
|
|
1281
|
+
if (r.info && (l.info = r.info), !a) {
|
|
1282
|
+
this._isServerSub(t) && (r.seq !== void 0 && (this._serverSubs[t].seq = r.seq), r.gen !== void 0 && (this._serverSubs[t].gen = r.gen), r.offset !== void 0 && (this._serverSubs[t].offset = r.offset), l.channel = t, this.emit("publish", l));
|
|
1283
|
+
return;
|
|
1284
|
+
}
|
|
1285
|
+
r.seq !== void 0 && (this._lastSeq[t] = r.seq), r.gen !== void 0 && (this._lastGen[t] = r.gen), r.offset !== void 0 && (this._lastOffset[t] = r.offset), a.emit("publish", l);
|
|
1286
|
+
}
|
|
1287
|
+
}, {
|
|
1288
|
+
key: "_handleMessage",
|
|
1289
|
+
value: function(t) {
|
|
1290
|
+
this.emit("message", t.data);
|
|
1291
|
+
}
|
|
1292
|
+
}, {
|
|
1293
|
+
key: "_handlePush",
|
|
1294
|
+
value: function(t, r) {
|
|
1295
|
+
var a = this._decoder.decodePush(t), l = 0;
|
|
1296
|
+
"type" in a && (l = a.type);
|
|
1297
|
+
var y = a.channel;
|
|
1298
|
+
if (l === this._pushType.PUBLICATION) {
|
|
1299
|
+
var E = this._decoder.decodePushData(this._pushType.PUBLICATION, a.data);
|
|
1300
|
+
this._handlePublication(y, E);
|
|
1301
|
+
} else if (l === this._pushType.MESSAGE) {
|
|
1302
|
+
var I = this._decoder.decodePushData(this._pushType.MESSAGE, a.data);
|
|
1303
|
+
this._handleMessage(I);
|
|
1304
|
+
} else if (l === this._pushType.JOIN) {
|
|
1305
|
+
var B = this._decoder.decodePushData(this._pushType.JOIN, a.data);
|
|
1306
|
+
this._handleJoin(y, B);
|
|
1307
|
+
} else if (l === this._pushType.LEAVE) {
|
|
1308
|
+
var R = this._decoder.decodePushData(this._pushType.LEAVE, a.data);
|
|
1309
|
+
this._handleLeave(y, R);
|
|
1310
|
+
} else if (l === this._pushType.UNSUBSCRIBE) {
|
|
1311
|
+
var X = this._decoder.decodePushData(this._pushType.UNSUBSCRIBE, a.data);
|
|
1312
|
+
this._handleUnsub(y, X);
|
|
1313
|
+
} else if (l === this._pushType.SUBSCRIBE) {
|
|
1314
|
+
var U = this._decoder.decodePushData(this._pushType.UNSUBSCRIBE, a.data);
|
|
1315
|
+
this._handleSub(y, U);
|
|
1316
|
+
}
|
|
1317
|
+
r();
|
|
1318
|
+
}
|
|
1319
|
+
}, {
|
|
1320
|
+
key: "_flush",
|
|
1321
|
+
value: function() {
|
|
1322
|
+
var t = this._messages.slice(0);
|
|
1323
|
+
this._messages = [], this._transportSend(t);
|
|
1324
|
+
}
|
|
1325
|
+
}, {
|
|
1326
|
+
key: "_ping",
|
|
1327
|
+
value: function() {
|
|
1328
|
+
var t = this, r = {
|
|
1329
|
+
method: this._methodType.PING
|
|
1330
|
+
};
|
|
1331
|
+
this._call(r).then(function(a) {
|
|
1332
|
+
t._pingResponse(t._decoder.decodeCommandResult(t._methodType.PING, a.result)), a.next && a.next();
|
|
1333
|
+
}, function(a) {
|
|
1334
|
+
t._debug("ping error", a.error), a.next && a.next();
|
|
1335
|
+
});
|
|
1336
|
+
}
|
|
1337
|
+
}, {
|
|
1338
|
+
key: "_pingResponse",
|
|
1339
|
+
value: function(t) {
|
|
1340
|
+
this.isConnected() && (this._stopPing(), this._startPing());
|
|
1341
|
+
}
|
|
1342
|
+
}, {
|
|
1343
|
+
key: "_getLastSeq",
|
|
1344
|
+
value: function(t) {
|
|
1345
|
+
var r = this._lastSeq[t];
|
|
1346
|
+
return r || 0;
|
|
1347
|
+
}
|
|
1348
|
+
}, {
|
|
1349
|
+
key: "_getLastOffset",
|
|
1350
|
+
value: function(t) {
|
|
1351
|
+
var r = this._lastOffset[t];
|
|
1352
|
+
return r || 0;
|
|
1353
|
+
}
|
|
1354
|
+
}, {
|
|
1355
|
+
key: "_getLastGen",
|
|
1356
|
+
value: function(t) {
|
|
1357
|
+
var r = this._lastGen[t];
|
|
1358
|
+
return r || 0;
|
|
1359
|
+
}
|
|
1360
|
+
}, {
|
|
1361
|
+
key: "_getLastEpoch",
|
|
1362
|
+
value: function(t) {
|
|
1363
|
+
var r = this._lastEpoch[t];
|
|
1364
|
+
return r || "";
|
|
1365
|
+
}
|
|
1366
|
+
}, {
|
|
1367
|
+
key: "_createErrorObject",
|
|
1368
|
+
value: function(t, r) {
|
|
1369
|
+
var a = {
|
|
1370
|
+
message: t,
|
|
1371
|
+
code: r || 0
|
|
1372
|
+
};
|
|
1373
|
+
return a;
|
|
1374
|
+
}
|
|
1375
|
+
}, {
|
|
1376
|
+
key: "_registerCall",
|
|
1377
|
+
value: function(t, r, a) {
|
|
1378
|
+
var l = this;
|
|
1379
|
+
this._callbacks[t] = {
|
|
1380
|
+
callback: r,
|
|
1381
|
+
errback: a,
|
|
1382
|
+
timeout: null
|
|
1383
|
+
}, this._callbacks[t].timeout = setTimeout(function() {
|
|
1384
|
+
delete l._callbacks[t], (0, v.isFunction)(a) && a({
|
|
1385
|
+
error: l._createErrorObject(q)
|
|
1386
|
+
});
|
|
1387
|
+
}, this._config.timeout);
|
|
1388
|
+
}
|
|
1389
|
+
}, {
|
|
1390
|
+
key: "_addMessage",
|
|
1391
|
+
value: function(t) {
|
|
1392
|
+
var r = this._nextMessageId();
|
|
1393
|
+
return t.id = r, this._isBatching === !0 ? this._messages.push(t) : this._transportSend([t]), r;
|
|
1394
|
+
}
|
|
1395
|
+
}, {
|
|
1396
|
+
key: "isConnected",
|
|
1397
|
+
value: function() {
|
|
1398
|
+
return this._isConnected();
|
|
1399
|
+
}
|
|
1400
|
+
}, {
|
|
1401
|
+
key: "connect",
|
|
1402
|
+
value: function() {
|
|
1403
|
+
this._connect();
|
|
1404
|
+
}
|
|
1405
|
+
}, {
|
|
1406
|
+
key: "disconnect",
|
|
1407
|
+
value: function() {
|
|
1408
|
+
this._disconnect("client", !1);
|
|
1409
|
+
}
|
|
1410
|
+
}, {
|
|
1411
|
+
key: "ping",
|
|
1412
|
+
value: function() {
|
|
1413
|
+
return this._ping();
|
|
1414
|
+
}
|
|
1415
|
+
}, {
|
|
1416
|
+
key: "startBatching",
|
|
1417
|
+
value: function() {
|
|
1418
|
+
this._isBatching = !0;
|
|
1419
|
+
}
|
|
1420
|
+
}, {
|
|
1421
|
+
key: "stopBatching",
|
|
1422
|
+
value: function() {
|
|
1423
|
+
this._isBatching = !1, this._flush();
|
|
1424
|
+
}
|
|
1425
|
+
}, {
|
|
1426
|
+
key: "startSubscribeBatching",
|
|
1427
|
+
value: function() {
|
|
1428
|
+
this._isSubscribeBatching = !0;
|
|
1429
|
+
}
|
|
1430
|
+
}, {
|
|
1431
|
+
key: "stopSubscribeBatching",
|
|
1432
|
+
value: function() {
|
|
1433
|
+
var t = this;
|
|
1434
|
+
this._isSubscribeBatching = !1;
|
|
1435
|
+
var r = this._privateChannels;
|
|
1436
|
+
this._privateChannels = {};
|
|
1437
|
+
var a = [];
|
|
1438
|
+
for (var l in r)
|
|
1439
|
+
if (r.hasOwnProperty(l)) {
|
|
1440
|
+
var y = this._getSub(l);
|
|
1441
|
+
if (!y)
|
|
1442
|
+
continue;
|
|
1443
|
+
a.push(l);
|
|
1444
|
+
}
|
|
1445
|
+
if (a.length === 0) {
|
|
1446
|
+
this._debug("no private channels found, no need to make request");
|
|
1447
|
+
return;
|
|
1448
|
+
}
|
|
1449
|
+
var E = {
|
|
1450
|
+
client: this._clientID,
|
|
1451
|
+
channels: a
|
|
1452
|
+
}, I = this._clientID, B = this._newXHRID(), R = function(D) {
|
|
1453
|
+
if (B in t._xhrs && delete t._xhrs[B], t._clientID === I) {
|
|
1454
|
+
if (D.error || D.status !== 200) {
|
|
1455
|
+
t._debug("authorization request failed");
|
|
1456
|
+
for (var ne in a)
|
|
1457
|
+
if (a.hasOwnProperty(ne)) {
|
|
1458
|
+
var Se = a[ne];
|
|
1459
|
+
t._subscribeError(Se, t._createErrorObject("authorization request failed"));
|
|
1460
|
+
}
|
|
1461
|
+
return;
|
|
1462
|
+
}
|
|
1463
|
+
var ue = {};
|
|
1464
|
+
if (D.data.channels)
|
|
1465
|
+
for (var V in D.data.channels) {
|
|
1466
|
+
var Pe = D.data.channels[V];
|
|
1467
|
+
Pe.channel && (ue[Pe.channel] = Pe.token);
|
|
1468
|
+
}
|
|
1469
|
+
var Xe = !1;
|
|
1470
|
+
t._isBatching || (t.startBatching(), Xe = !0);
|
|
1471
|
+
for (var Ue in a)
|
|
1472
|
+
if (a.hasOwnProperty(Ue)) {
|
|
1473
|
+
var pt = (function() {
|
|
1474
|
+
var z = a[Ue], He = ue[z];
|
|
1475
|
+
if (He) {
|
|
1476
|
+
var re = {
|
|
1477
|
+
method: t._methodType.SUBSCRIBE,
|
|
1478
|
+
params: {
|
|
1479
|
+
channel: z,
|
|
1480
|
+
token: He
|
|
1481
|
+
}
|
|
1482
|
+
}, xe = t._getSub(z);
|
|
1483
|
+
if (xe === null)
|
|
1484
|
+
return "continue";
|
|
1485
|
+
var Fe = xe._needRecover();
|
|
1486
|
+
if (Fe === !0) {
|
|
1487
|
+
re.params.recover = !0;
|
|
1488
|
+
var ke = t._getLastSeq(z), we = t._getLastGen(z);
|
|
1489
|
+
if (ke || we)
|
|
1490
|
+
ke && (re.params.seq = ke), we && (re.params.gen = we);
|
|
1491
|
+
else {
|
|
1492
|
+
var Je = t._getLastOffset(z);
|
|
1493
|
+
Je && (re.params.offset = Je);
|
|
1494
|
+
}
|
|
1495
|
+
var qe = t._getLastEpoch(z);
|
|
1496
|
+
qe && (re.params.epoch = qe);
|
|
1497
|
+
}
|
|
1498
|
+
t._call(re).then(function(Y) {
|
|
1499
|
+
t._subscribeResponse(z, Fe, t._decoder.decodeCommandResult(t._methodType.SUBSCRIBE, Y.result)), Y.next && Y.next();
|
|
1500
|
+
}, function(Y) {
|
|
1501
|
+
t._subscribeError(z, Y.error), Y.next && Y.next();
|
|
1502
|
+
});
|
|
1503
|
+
} else
|
|
1504
|
+
return t._subscribeError(z, t._createErrorObject("permission denied", 103)), "continue";
|
|
1505
|
+
})();
|
|
1506
|
+
if (pt === "continue") continue;
|
|
1507
|
+
}
|
|
1508
|
+
Xe && t.stopBatching();
|
|
1509
|
+
}
|
|
1510
|
+
};
|
|
1511
|
+
if (this._config.onPrivateSubscribe !== null)
|
|
1512
|
+
this._config.onPrivateSubscribe({
|
|
1513
|
+
data: E
|
|
1514
|
+
}, R);
|
|
1515
|
+
else {
|
|
1516
|
+
var X = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, E, R);
|
|
1517
|
+
this._xhrs[B] = X;
|
|
1518
|
+
}
|
|
1519
|
+
}
|
|
1520
|
+
}, {
|
|
1521
|
+
key: "_setSubscribeSince",
|
|
1522
|
+
value: function(t, r) {
|
|
1523
|
+
this._lastOffset[t.channel] = r.offset, this._lastEpoch[t.channel] = r.epoch, t._setNeedRecover(!0);
|
|
1524
|
+
}
|
|
1525
|
+
}, {
|
|
1526
|
+
key: "subscribe",
|
|
1527
|
+
value: function(t, r, a) {
|
|
1528
|
+
var l = this._getSub(t);
|
|
1529
|
+
if (l !== null)
|
|
1530
|
+
return l._setEvents(r), l._isUnsubscribed() && l.subscribe(a), l;
|
|
1531
|
+
var y = new S.default(this, t, r);
|
|
1532
|
+
return this._subs[t] = y, y.subscribe(a), y;
|
|
1533
|
+
}
|
|
1534
|
+
}]), p;
|
|
1535
|
+
})(C.default);
|
|
1536
|
+
d.Centrifuge = b;
|
|
1537
|
+
})
|
|
1538
|
+
),
|
|
1539
|
+
/***/
|
|
1540
|
+
579: (
|
|
1541
|
+
/***/
|
|
1542
|
+
(function(c, d, g) {
|
|
1543
|
+
Object.defineProperty(d, "__esModule", {
|
|
1544
|
+
value: !0
|
|
1545
|
+
}), d.default = void 0;
|
|
1546
|
+
var C = g(382), S = C.Centrifuge;
|
|
1547
|
+
d.default = S, c.exports = d.default;
|
|
1548
|
+
})
|
|
1549
|
+
),
|
|
1550
|
+
/***/
|
|
1551
|
+
147: (
|
|
1552
|
+
/***/
|
|
1553
|
+
(function(c, d) {
|
|
1554
|
+
Object.defineProperty(d, "__esModule", {
|
|
1555
|
+
value: !0
|
|
1556
|
+
}), d.JsonPushType = d.JsonMethodType = d.JsonEncoder = d.JsonDecoder = void 0;
|
|
1557
|
+
function g(m, P) {
|
|
1558
|
+
if (!(m instanceof P))
|
|
1559
|
+
throw new TypeError("Cannot call a class as a function");
|
|
1560
|
+
}
|
|
1561
|
+
function C(m, P) {
|
|
1562
|
+
for (var k = 0; k < P.length; k++) {
|
|
1563
|
+
var w = P[k];
|
|
1564
|
+
w.enumerable = w.enumerable || !1, w.configurable = !0, "value" in w && (w.writable = !0), Object.defineProperty(m, w.key, w);
|
|
1565
|
+
}
|
|
1566
|
+
}
|
|
1567
|
+
function S(m, P, k) {
|
|
1568
|
+
return P && C(m.prototype, P), m;
|
|
1569
|
+
}
|
|
1570
|
+
var T = {
|
|
1571
|
+
CONNECT: 0,
|
|
1572
|
+
SUBSCRIBE: 1,
|
|
1573
|
+
UNSUBSCRIBE: 2,
|
|
1574
|
+
PUBLISH: 3,
|
|
1575
|
+
PRESENCE: 4,
|
|
1576
|
+
PRESENCE_STATS: 5,
|
|
1577
|
+
HISTORY: 6,
|
|
1578
|
+
PING: 7,
|
|
1579
|
+
SEND: 8,
|
|
1580
|
+
RPC: 9,
|
|
1581
|
+
REFRESH: 10,
|
|
1582
|
+
SUB_REFRESH: 11
|
|
1583
|
+
};
|
|
1584
|
+
d.JsonMethodType = T;
|
|
1585
|
+
var v = {
|
|
1586
|
+
PUBLICATION: 0,
|
|
1587
|
+
JOIN: 1,
|
|
1588
|
+
LEAVE: 2,
|
|
1589
|
+
UNSUBSCRIBE: 3,
|
|
1590
|
+
MESSAGE: 4,
|
|
1591
|
+
SUBSCRIBE: 5
|
|
1592
|
+
};
|
|
1593
|
+
d.JsonPushType = v;
|
|
1594
|
+
var Q = /* @__PURE__ */ (function() {
|
|
1595
|
+
function m() {
|
|
1596
|
+
g(this, m);
|
|
1597
|
+
}
|
|
1598
|
+
return S(m, [{
|
|
1599
|
+
key: "encodeCommands",
|
|
1600
|
+
value: function(k) {
|
|
1601
|
+
return k.map(function(w) {
|
|
1602
|
+
return JSON.stringify(w);
|
|
1603
|
+
}).join(`
|
|
1604
|
+
`);
|
|
1605
|
+
}
|
|
1606
|
+
}]), m;
|
|
1607
|
+
})();
|
|
1608
|
+
d.JsonEncoder = Q;
|
|
1609
|
+
var _ = /* @__PURE__ */ (function() {
|
|
1610
|
+
function m() {
|
|
1611
|
+
g(this, m);
|
|
1612
|
+
}
|
|
1613
|
+
return S(m, [{
|
|
1614
|
+
key: "decodeReplies",
|
|
1615
|
+
value: function(k) {
|
|
1616
|
+
return k.split(`
|
|
1617
|
+
`).filter(function(w) {
|
|
1618
|
+
return w !== "";
|
|
1619
|
+
}).map(function(w) {
|
|
1620
|
+
return JSON.parse(w);
|
|
1621
|
+
});
|
|
1622
|
+
}
|
|
1623
|
+
}, {
|
|
1624
|
+
key: "decodeCommandResult",
|
|
1625
|
+
value: function(k, w) {
|
|
1626
|
+
return w;
|
|
1627
|
+
}
|
|
1628
|
+
}, {
|
|
1629
|
+
key: "decodePush",
|
|
1630
|
+
value: function(k) {
|
|
1631
|
+
return k;
|
|
1632
|
+
}
|
|
1633
|
+
}, {
|
|
1634
|
+
key: "decodePushData",
|
|
1635
|
+
value: function(k, w) {
|
|
1636
|
+
return w;
|
|
1637
|
+
}
|
|
1638
|
+
}]), m;
|
|
1639
|
+
})();
|
|
1640
|
+
d.JsonDecoder = _;
|
|
1641
|
+
})
|
|
1642
|
+
),
|
|
1643
|
+
/***/
|
|
1644
|
+
471: (
|
|
1645
|
+
/***/
|
|
1646
|
+
(function(c, d, g) {
|
|
1647
|
+
function C(h) {
|
|
1648
|
+
"@babel/helpers - typeof";
|
|
1649
|
+
return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? C = function(A) {
|
|
1650
|
+
return typeof A;
|
|
1651
|
+
} : C = function(A) {
|
|
1652
|
+
return A && typeof Symbol == "function" && A.constructor === Symbol && A !== Symbol.prototype ? "symbol" : typeof A;
|
|
1653
|
+
}, C(h);
|
|
1654
|
+
}
|
|
1655
|
+
Object.defineProperty(d, "__esModule", {
|
|
1656
|
+
value: !0
|
|
1657
|
+
}), d.default = void 0;
|
|
1658
|
+
var S = v(g(187)), T = g(853);
|
|
1659
|
+
function v(h) {
|
|
1660
|
+
return h && h.__esModule ? h : { default: h };
|
|
1661
|
+
}
|
|
1662
|
+
function Q(h, p) {
|
|
1663
|
+
if (!(h instanceof p))
|
|
1664
|
+
throw new TypeError("Cannot call a class as a function");
|
|
1665
|
+
}
|
|
1666
|
+
function _(h, p) {
|
|
1667
|
+
for (var A = 0; A < p.length; A++) {
|
|
1668
|
+
var t = p[A];
|
|
1669
|
+
t.enumerable = t.enumerable || !1, t.configurable = !0, "value" in t && (t.writable = !0), Object.defineProperty(h, t.key, t);
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
function m(h, p, A) {
|
|
1673
|
+
return p && _(h.prototype, p), h;
|
|
1674
|
+
}
|
|
1675
|
+
function P(h, p) {
|
|
1676
|
+
if (typeof p != "function" && p !== null)
|
|
1677
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
1678
|
+
h.prototype = Object.create(p && p.prototype, { constructor: { value: h, writable: !0, configurable: !0 } }), p && k(h, p);
|
|
1679
|
+
}
|
|
1680
|
+
function k(h, p) {
|
|
1681
|
+
return k = Object.setPrototypeOf || function(t, r) {
|
|
1682
|
+
return t.__proto__ = r, t;
|
|
1683
|
+
}, k(h, p);
|
|
1684
|
+
}
|
|
1685
|
+
function w(h) {
|
|
1686
|
+
var p = F();
|
|
1687
|
+
return function() {
|
|
1688
|
+
var t = M(h), r;
|
|
1689
|
+
if (p) {
|
|
1690
|
+
var a = M(this).constructor;
|
|
1691
|
+
r = Reflect.construct(t, arguments, a);
|
|
1692
|
+
} else
|
|
1693
|
+
r = t.apply(this, arguments);
|
|
1694
|
+
return L(this, r);
|
|
1695
|
+
};
|
|
1696
|
+
}
|
|
1697
|
+
function L(h, p) {
|
|
1698
|
+
if (p && (C(p) === "object" || typeof p == "function"))
|
|
1699
|
+
return p;
|
|
1700
|
+
if (p !== void 0)
|
|
1701
|
+
throw new TypeError("Derived constructors may only return object or undefined");
|
|
1702
|
+
return O(h);
|
|
1703
|
+
}
|
|
1704
|
+
function O(h) {
|
|
1705
|
+
if (h === void 0)
|
|
1706
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
1707
|
+
return h;
|
|
1708
|
+
}
|
|
1709
|
+
function F() {
|
|
1710
|
+
if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham) return !1;
|
|
1711
|
+
if (typeof Proxy == "function") return !0;
|
|
1712
|
+
try {
|
|
1713
|
+
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
|
|
1714
|
+
})), !0;
|
|
1715
|
+
} catch {
|
|
1716
|
+
return !1;
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
function M(h) {
|
|
1720
|
+
return M = Object.setPrototypeOf ? Object.getPrototypeOf : function(A) {
|
|
1721
|
+
return A.__proto__ || Object.getPrototypeOf(A);
|
|
1722
|
+
}, M(h);
|
|
1723
|
+
}
|
|
1724
|
+
var J = 0, x = 1, q = 2, N = 3, b = 4, f = /* @__PURE__ */ (function(h) {
|
|
1725
|
+
P(A, h);
|
|
1726
|
+
var p = w(A);
|
|
1727
|
+
function A(t, r, a) {
|
|
1728
|
+
var l;
|
|
1729
|
+
return Q(this, A), l = p.call(this), l.channel = r, l._centrifuge = t, l._status = J, l._error = null, l._isResubscribe = !1, l._ready = !1, l._subscriptionPromise = null, l._noResubscribe = !1, l._recoverable = !1, l._recover = !1, l._setEvents(a), l._initializePromise(), l._promises = {}, l._promiseId = 0, l._subscribeData = null, l.on("error", function(y) {
|
|
1730
|
+
this._centrifuge._debug("subscription error", y);
|
|
1731
|
+
}), l;
|
|
1732
|
+
}
|
|
1733
|
+
return m(A, [{
|
|
1734
|
+
key: "_nextPromiseId",
|
|
1735
|
+
value: function() {
|
|
1736
|
+
return ++this._promiseId;
|
|
1737
|
+
}
|
|
1738
|
+
}, {
|
|
1739
|
+
key: "_initializePromise",
|
|
1740
|
+
value: function() {
|
|
1741
|
+
var r = this;
|
|
1742
|
+
this._ready = !1, this._subscriptionPromise = new Promise(function(a, l) {
|
|
1743
|
+
r._resolve = function(y) {
|
|
1744
|
+
r._ready = !0, a(y);
|
|
1745
|
+
}, r._reject = function(y) {
|
|
1746
|
+
r._ready = !0, l(y);
|
|
1747
|
+
};
|
|
1748
|
+
}).then(function() {
|
|
1749
|
+
}, function() {
|
|
1750
|
+
});
|
|
1751
|
+
}
|
|
1752
|
+
}, {
|
|
1753
|
+
key: "_setNeedRecover",
|
|
1754
|
+
value: function(r) {
|
|
1755
|
+
this._recoverable = r, this._recover = r;
|
|
1756
|
+
}
|
|
1757
|
+
}, {
|
|
1758
|
+
key: "_needRecover",
|
|
1759
|
+
value: function() {
|
|
1760
|
+
return this._recoverable === !0 && this._recover === !0;
|
|
1761
|
+
}
|
|
1762
|
+
}, {
|
|
1763
|
+
key: "_setEvents",
|
|
1764
|
+
value: function(r) {
|
|
1765
|
+
if (r) {
|
|
1766
|
+
if ((0, T.isFunction)(r))
|
|
1767
|
+
this.on("publish", r);
|
|
1768
|
+
else if (Object.prototype.toString.call(r) === Object.prototype.toString.call({}))
|
|
1769
|
+
for (var a = ["publish", "join", "leave", "unsubscribe", "subscribe", "error"], l = 0, y = a.length; l < y; l++) {
|
|
1770
|
+
var E = a[l];
|
|
1771
|
+
E in r && this.on(E, r[E]);
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
}, {
|
|
1776
|
+
key: "_isNew",
|
|
1777
|
+
value: function() {
|
|
1778
|
+
return this._status === J;
|
|
1779
|
+
}
|
|
1780
|
+
}, {
|
|
1781
|
+
key: "_isUnsubscribed",
|
|
1782
|
+
value: function() {
|
|
1783
|
+
return this._status === b;
|
|
1784
|
+
}
|
|
1785
|
+
}, {
|
|
1786
|
+
key: "_isSubscribing",
|
|
1787
|
+
value: function() {
|
|
1788
|
+
return this._status === x;
|
|
1789
|
+
}
|
|
1790
|
+
}, {
|
|
1791
|
+
key: "_isReady",
|
|
1792
|
+
value: function() {
|
|
1793
|
+
return this._status === q || this._status === N;
|
|
1794
|
+
}
|
|
1795
|
+
}, {
|
|
1796
|
+
key: "_isSuccess",
|
|
1797
|
+
value: function() {
|
|
1798
|
+
return this._status === q;
|
|
1799
|
+
}
|
|
1800
|
+
}, {
|
|
1801
|
+
key: "_isError",
|
|
1802
|
+
value: function() {
|
|
1803
|
+
return this._status === N;
|
|
1804
|
+
}
|
|
1805
|
+
}, {
|
|
1806
|
+
key: "_setNew",
|
|
1807
|
+
value: function() {
|
|
1808
|
+
this._status = J;
|
|
1809
|
+
}
|
|
1810
|
+
}, {
|
|
1811
|
+
key: "_setSubscribing",
|
|
1812
|
+
value: function(r) {
|
|
1813
|
+
this._isResubscribe = r || !1, this._ready === !0 && this._initializePromise(), this._status = x;
|
|
1814
|
+
}
|
|
1815
|
+
}, {
|
|
1816
|
+
key: "_setSubscribeSuccess",
|
|
1817
|
+
value: function(r) {
|
|
1818
|
+
if (this._status !== q) {
|
|
1819
|
+
this._status = q;
|
|
1820
|
+
var a = this._getSubscribeSuccessContext(r);
|
|
1821
|
+
this._recover = !1, this.emit("subscribe", a), this._resolve(a);
|
|
1822
|
+
for (var l in this._promises)
|
|
1823
|
+
clearTimeout(this._promises[l].timeout), this._promises[l].resolve(), delete this._promises[l];
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
}, {
|
|
1827
|
+
key: "_setSubscribeError",
|
|
1828
|
+
value: function(r) {
|
|
1829
|
+
if (this._status !== N) {
|
|
1830
|
+
this._status = N, this._error = r;
|
|
1831
|
+
var a = this._getSubscribeErrorContext();
|
|
1832
|
+
this.emit("error", a), this._reject(a);
|
|
1833
|
+
for (var l in this._promises)
|
|
1834
|
+
clearTimeout(this._promises[l].timeout), this._promises[l].reject(r), delete this._promises[l];
|
|
1835
|
+
}
|
|
1836
|
+
}
|
|
1837
|
+
}, {
|
|
1838
|
+
key: "_triggerUnsubscribe",
|
|
1839
|
+
value: function() {
|
|
1840
|
+
this.emit("unsubscribe", {
|
|
1841
|
+
channel: this.channel
|
|
1842
|
+
});
|
|
1843
|
+
}
|
|
1844
|
+
}, {
|
|
1845
|
+
key: "_setUnsubscribed",
|
|
1846
|
+
value: function(r) {
|
|
1847
|
+
if (this._centrifuge._clearSubRefreshTimeout(this.channel), this._status !== b) {
|
|
1848
|
+
var a = this._status === q;
|
|
1849
|
+
this._status = b, r === !0 && (this._recover = !1, this._noResubscribe = !0, delete this._centrifuge._lastSeq[this.channel], delete this._centrifuge._lastGen[this.channel], delete this._centrifuge._lastEpoch[this.channel]), a && this._triggerUnsubscribe();
|
|
1850
|
+
}
|
|
1851
|
+
}
|
|
1852
|
+
}, {
|
|
1853
|
+
key: "_shouldResubscribe",
|
|
1854
|
+
value: function() {
|
|
1855
|
+
return !this._noResubscribe;
|
|
1856
|
+
}
|
|
1857
|
+
}, {
|
|
1858
|
+
key: "_getSubscribeSuccessContext",
|
|
1859
|
+
value: function(r) {
|
|
1860
|
+
var a = {
|
|
1861
|
+
channel: this.channel,
|
|
1862
|
+
isResubscribe: this._isResubscribe
|
|
1863
|
+
};
|
|
1864
|
+
return r && (a = this._centrifuge._expandSubscribeContext(a, r)), a;
|
|
1865
|
+
}
|
|
1866
|
+
}, {
|
|
1867
|
+
key: "_getSubscribeErrorContext",
|
|
1868
|
+
value: function() {
|
|
1869
|
+
var r = this._error;
|
|
1870
|
+
return r.channel = this.channel, r.isResubscribe = this._isResubscribe, r;
|
|
1871
|
+
}
|
|
1872
|
+
}, {
|
|
1873
|
+
key: "_setSubscribeData",
|
|
1874
|
+
value: function(r) {
|
|
1875
|
+
this._subscribeData = r;
|
|
1876
|
+
}
|
|
1877
|
+
}, {
|
|
1878
|
+
key: "ready",
|
|
1879
|
+
value: function(r, a) {
|
|
1880
|
+
this._ready && (this._isSuccess() ? r(this._getSubscribeSuccessContext()) : a(this._getSubscribeErrorContext()));
|
|
1881
|
+
}
|
|
1882
|
+
}, {
|
|
1883
|
+
key: "subscribe",
|
|
1884
|
+
value: function(r) {
|
|
1885
|
+
this._status !== q && (r && r.since && this._centrifuge._setSubscribeSince(this, r.since), r && r.data && this._setSubscribeData(r.data), this._noResubscribe = !1, this._centrifuge._subscribe(this));
|
|
1886
|
+
}
|
|
1887
|
+
}, {
|
|
1888
|
+
key: "unsubscribe",
|
|
1889
|
+
value: function() {
|
|
1890
|
+
this._setUnsubscribed(!0), this._centrifuge._unsubscribe(this);
|
|
1891
|
+
}
|
|
1892
|
+
}, {
|
|
1893
|
+
key: "_methodCall",
|
|
1894
|
+
value: function() {
|
|
1895
|
+
var r = this;
|
|
1896
|
+
if (this._isSuccess())
|
|
1897
|
+
return Promise.resolve();
|
|
1898
|
+
if (this._isError())
|
|
1899
|
+
return Promise.reject(this._error);
|
|
1900
|
+
var a = new Promise(function(l, y) {
|
|
1901
|
+
var E = setTimeout(function() {
|
|
1902
|
+
y({
|
|
1903
|
+
code: 0,
|
|
1904
|
+
message: "timeout"
|
|
1905
|
+
});
|
|
1906
|
+
}, r._centrifuge._config.timeout);
|
|
1907
|
+
r._promises[r._nextPromiseId()] = {
|
|
1908
|
+
timeout: E,
|
|
1909
|
+
resolve: l,
|
|
1910
|
+
reject: y
|
|
1911
|
+
};
|
|
1912
|
+
});
|
|
1913
|
+
return a;
|
|
1914
|
+
}
|
|
1915
|
+
}, {
|
|
1916
|
+
key: "publish",
|
|
1917
|
+
value: function(r) {
|
|
1918
|
+
var a = this;
|
|
1919
|
+
return this._methodCall().then(function() {
|
|
1920
|
+
return a._centrifuge.publish(a.channel, r);
|
|
1921
|
+
});
|
|
1922
|
+
}
|
|
1923
|
+
}, {
|
|
1924
|
+
key: "presence",
|
|
1925
|
+
value: function() {
|
|
1926
|
+
var r = this;
|
|
1927
|
+
return this._methodCall().then(function() {
|
|
1928
|
+
return r._centrifuge.presence(r.channel);
|
|
1929
|
+
});
|
|
1930
|
+
}
|
|
1931
|
+
}, {
|
|
1932
|
+
key: "presenceStats",
|
|
1933
|
+
value: function() {
|
|
1934
|
+
var r = this;
|
|
1935
|
+
return this._methodCall().then(function() {
|
|
1936
|
+
return r._centrifuge.presenceStats(r.channel);
|
|
1937
|
+
});
|
|
1938
|
+
}
|
|
1939
|
+
}, {
|
|
1940
|
+
key: "history",
|
|
1941
|
+
value: function(r) {
|
|
1942
|
+
var a = this;
|
|
1943
|
+
return this._methodCall().then(function() {
|
|
1944
|
+
return a._centrifuge.history(a.channel, r);
|
|
1945
|
+
});
|
|
1946
|
+
}
|
|
1947
|
+
}]), A;
|
|
1948
|
+
})(S.default);
|
|
1949
|
+
d.default = f, c.exports = d.default;
|
|
1950
|
+
})
|
|
1951
|
+
),
|
|
1952
|
+
/***/
|
|
1953
|
+
853: (
|
|
1954
|
+
/***/
|
|
1955
|
+
(function(c, d, g) {
|
|
1956
|
+
Object.defineProperty(d, "__esModule", {
|
|
1957
|
+
value: !0
|
|
1958
|
+
}), d.backoff = v, d.errorExists = Q, d.extend = _, d.isFunction = S, d.log = T, d.startsWith = C;
|
|
1959
|
+
function C(m, P) {
|
|
1960
|
+
return m.lastIndexOf(P, 0) === 0;
|
|
1961
|
+
}
|
|
1962
|
+
function S(m) {
|
|
1963
|
+
return m == null ? !1 : typeof m == "function";
|
|
1964
|
+
}
|
|
1965
|
+
function T(m, P) {
|
|
1966
|
+
if (g.g.console) {
|
|
1967
|
+
var k = g.g.console[m];
|
|
1968
|
+
S(k) && k.apply(g.g.console, P);
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1971
|
+
function v(m, P, k) {
|
|
1972
|
+
var w = 0.5 * Math.random(), L = Math.min(k, P * Math.pow(2, m + 1));
|
|
1973
|
+
return Math.floor((1 - w) * L);
|
|
1974
|
+
}
|
|
1975
|
+
function Q(m) {
|
|
1976
|
+
return "error" in m && m.error !== null;
|
|
1977
|
+
}
|
|
1978
|
+
function _(m, P) {
|
|
1979
|
+
for (var k in P)
|
|
1980
|
+
P.hasOwnProperty(k) && (m[k] = P[k]);
|
|
1981
|
+
return m;
|
|
1982
|
+
}
|
|
1983
|
+
})
|
|
1984
|
+
),
|
|
1985
|
+
/***/
|
|
1986
|
+
187: (
|
|
1987
|
+
/***/
|
|
1988
|
+
(function(c) {
|
|
1989
|
+
var d = typeof Reflect == "object" ? Reflect : null, g = d && typeof d.apply == "function" ? d.apply : function(f, h, p) {
|
|
1990
|
+
return Function.prototype.apply.call(f, h, p);
|
|
1991
|
+
}, C;
|
|
1992
|
+
d && typeof d.ownKeys == "function" ? C = d.ownKeys : Object.getOwnPropertySymbols ? C = function(f) {
|
|
1993
|
+
return Object.getOwnPropertyNames(f).concat(Object.getOwnPropertySymbols(f));
|
|
1994
|
+
} : C = function(f) {
|
|
1995
|
+
return Object.getOwnPropertyNames(f);
|
|
1996
|
+
};
|
|
1997
|
+
function S(b) {
|
|
1998
|
+
console && console.warn && console.warn(b);
|
|
1999
|
+
}
|
|
2000
|
+
var T = Number.isNaN || function(f) {
|
|
2001
|
+
return f !== f;
|
|
2002
|
+
};
|
|
2003
|
+
function v() {
|
|
2004
|
+
v.init.call(this);
|
|
2005
|
+
}
|
|
2006
|
+
c.exports = v, c.exports.once = x, v.EventEmitter = v, v.prototype._events = void 0, v.prototype._eventsCount = 0, v.prototype._maxListeners = void 0;
|
|
2007
|
+
var Q = 10;
|
|
2008
|
+
function _(b) {
|
|
2009
|
+
if (typeof b != "function")
|
|
2010
|
+
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof b);
|
|
2011
|
+
}
|
|
2012
|
+
Object.defineProperty(v, "defaultMaxListeners", {
|
|
2013
|
+
enumerable: !0,
|
|
2014
|
+
get: function() {
|
|
2015
|
+
return Q;
|
|
2016
|
+
},
|
|
2017
|
+
set: function(b) {
|
|
2018
|
+
if (typeof b != "number" || b < 0 || T(b))
|
|
2019
|
+
throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + b + ".");
|
|
2020
|
+
Q = b;
|
|
2021
|
+
}
|
|
2022
|
+
}), v.init = function() {
|
|
2023
|
+
(this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) && (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
|
|
2024
|
+
}, v.prototype.setMaxListeners = function(f) {
|
|
2025
|
+
if (typeof f != "number" || f < 0 || T(f))
|
|
2026
|
+
throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + f + ".");
|
|
2027
|
+
return this._maxListeners = f, this;
|
|
2028
|
+
};
|
|
2029
|
+
function m(b) {
|
|
2030
|
+
return b._maxListeners === void 0 ? v.defaultMaxListeners : b._maxListeners;
|
|
2031
|
+
}
|
|
2032
|
+
v.prototype.getMaxListeners = function() {
|
|
2033
|
+
return m(this);
|
|
2034
|
+
}, v.prototype.emit = function(f) {
|
|
2035
|
+
for (var h = [], p = 1; p < arguments.length; p++) h.push(arguments[p]);
|
|
2036
|
+
var A = f === "error", t = this._events;
|
|
2037
|
+
if (t !== void 0)
|
|
2038
|
+
A = A && t.error === void 0;
|
|
2039
|
+
else if (!A)
|
|
2040
|
+
return !1;
|
|
2041
|
+
if (A) {
|
|
2042
|
+
var r;
|
|
2043
|
+
if (h.length > 0 && (r = h[0]), r instanceof Error)
|
|
2044
|
+
throw r;
|
|
2045
|
+
var a = new Error("Unhandled error." + (r ? " (" + r.message + ")" : ""));
|
|
2046
|
+
throw a.context = r, a;
|
|
2047
|
+
}
|
|
2048
|
+
var l = t[f];
|
|
2049
|
+
if (l === void 0)
|
|
2050
|
+
return !1;
|
|
2051
|
+
if (typeof l == "function")
|
|
2052
|
+
g(l, this, h);
|
|
2053
|
+
else
|
|
2054
|
+
for (var y = l.length, E = F(l, y), p = 0; p < y; ++p)
|
|
2055
|
+
g(E[p], this, h);
|
|
2056
|
+
return !0;
|
|
2057
|
+
};
|
|
2058
|
+
function P(b, f, h, p) {
|
|
2059
|
+
var A, t, r;
|
|
2060
|
+
if (_(h), t = b._events, t === void 0 ? (t = b._events = /* @__PURE__ */ Object.create(null), b._eventsCount = 0) : (t.newListener !== void 0 && (b.emit(
|
|
2061
|
+
"newListener",
|
|
2062
|
+
f,
|
|
2063
|
+
h.listener ? h.listener : h
|
|
2064
|
+
), t = b._events), r = t[f]), r === void 0)
|
|
2065
|
+
r = t[f] = h, ++b._eventsCount;
|
|
2066
|
+
else if (typeof r == "function" ? r = t[f] = p ? [h, r] : [r, h] : p ? r.unshift(h) : r.push(h), A = m(b), A > 0 && r.length > A && !r.warned) {
|
|
2067
|
+
r.warned = !0;
|
|
2068
|
+
var a = new Error("Possible EventEmitter memory leak detected. " + r.length + " " + String(f) + " listeners added. Use emitter.setMaxListeners() to increase limit");
|
|
2069
|
+
a.name = "MaxListenersExceededWarning", a.emitter = b, a.type = f, a.count = r.length, S(a);
|
|
2070
|
+
}
|
|
2071
|
+
return b;
|
|
2072
|
+
}
|
|
2073
|
+
v.prototype.addListener = function(f, h) {
|
|
2074
|
+
return P(this, f, h, !1);
|
|
2075
|
+
}, v.prototype.on = v.prototype.addListener, v.prototype.prependListener = function(f, h) {
|
|
2076
|
+
return P(this, f, h, !0);
|
|
2077
|
+
};
|
|
2078
|
+
function k() {
|
|
2079
|
+
if (!this.fired)
|
|
2080
|
+
return this.target.removeListener(this.type, this.wrapFn), this.fired = !0, arguments.length === 0 ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);
|
|
2081
|
+
}
|
|
2082
|
+
function w(b, f, h) {
|
|
2083
|
+
var p = { fired: !1, wrapFn: void 0, target: b, type: f, listener: h }, A = k.bind(p);
|
|
2084
|
+
return A.listener = h, p.wrapFn = A, A;
|
|
2085
|
+
}
|
|
2086
|
+
v.prototype.once = function(f, h) {
|
|
2087
|
+
return _(h), this.on(f, w(this, f, h)), this;
|
|
2088
|
+
}, v.prototype.prependOnceListener = function(f, h) {
|
|
2089
|
+
return _(h), this.prependListener(f, w(this, f, h)), this;
|
|
2090
|
+
}, v.prototype.removeListener = function(f, h) {
|
|
2091
|
+
var p, A, t, r, a;
|
|
2092
|
+
if (_(h), A = this._events, A === void 0)
|
|
2093
|
+
return this;
|
|
2094
|
+
if (p = A[f], p === void 0)
|
|
2095
|
+
return this;
|
|
2096
|
+
if (p === h || p.listener === h)
|
|
2097
|
+
--this._eventsCount === 0 ? this._events = /* @__PURE__ */ Object.create(null) : (delete A[f], A.removeListener && this.emit("removeListener", f, p.listener || h));
|
|
2098
|
+
else if (typeof p != "function") {
|
|
2099
|
+
for (t = -1, r = p.length - 1; r >= 0; r--)
|
|
2100
|
+
if (p[r] === h || p[r].listener === h) {
|
|
2101
|
+
a = p[r].listener, t = r;
|
|
2102
|
+
break;
|
|
2103
|
+
}
|
|
2104
|
+
if (t < 0)
|
|
2105
|
+
return this;
|
|
2106
|
+
t === 0 ? p.shift() : M(p, t), p.length === 1 && (A[f] = p[0]), A.removeListener !== void 0 && this.emit("removeListener", f, a || h);
|
|
2107
|
+
}
|
|
2108
|
+
return this;
|
|
2109
|
+
}, v.prototype.off = v.prototype.removeListener, v.prototype.removeAllListeners = function(f) {
|
|
2110
|
+
var h, p, A;
|
|
2111
|
+
if (p = this._events, p === void 0)
|
|
2112
|
+
return this;
|
|
2113
|
+
if (p.removeListener === void 0)
|
|
2114
|
+
return arguments.length === 0 ? (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0) : p[f] !== void 0 && (--this._eventsCount === 0 ? this._events = /* @__PURE__ */ Object.create(null) : delete p[f]), this;
|
|
2115
|
+
if (arguments.length === 0) {
|
|
2116
|
+
var t = Object.keys(p), r;
|
|
2117
|
+
for (A = 0; A < t.length; ++A)
|
|
2118
|
+
r = t[A], r !== "removeListener" && this.removeAllListeners(r);
|
|
2119
|
+
return this.removeAllListeners("removeListener"), this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0, this;
|
|
2120
|
+
}
|
|
2121
|
+
if (h = p[f], typeof h == "function")
|
|
2122
|
+
this.removeListener(f, h);
|
|
2123
|
+
else if (h !== void 0)
|
|
2124
|
+
for (A = h.length - 1; A >= 0; A--)
|
|
2125
|
+
this.removeListener(f, h[A]);
|
|
2126
|
+
return this;
|
|
2127
|
+
};
|
|
2128
|
+
function L(b, f, h) {
|
|
2129
|
+
var p = b._events;
|
|
2130
|
+
if (p === void 0)
|
|
2131
|
+
return [];
|
|
2132
|
+
var A = p[f];
|
|
2133
|
+
return A === void 0 ? [] : typeof A == "function" ? h ? [A.listener || A] : [A] : h ? J(A) : F(A, A.length);
|
|
2134
|
+
}
|
|
2135
|
+
v.prototype.listeners = function(f) {
|
|
2136
|
+
return L(this, f, !0);
|
|
2137
|
+
}, v.prototype.rawListeners = function(f) {
|
|
2138
|
+
return L(this, f, !1);
|
|
2139
|
+
}, v.listenerCount = function(b, f) {
|
|
2140
|
+
return typeof b.listenerCount == "function" ? b.listenerCount(f) : O.call(b, f);
|
|
2141
|
+
}, v.prototype.listenerCount = O;
|
|
2142
|
+
function O(b) {
|
|
2143
|
+
var f = this._events;
|
|
2144
|
+
if (f !== void 0) {
|
|
2145
|
+
var h = f[b];
|
|
2146
|
+
if (typeof h == "function")
|
|
2147
|
+
return 1;
|
|
2148
|
+
if (h !== void 0)
|
|
2149
|
+
return h.length;
|
|
2150
|
+
}
|
|
2151
|
+
return 0;
|
|
2152
|
+
}
|
|
2153
|
+
v.prototype.eventNames = function() {
|
|
2154
|
+
return this._eventsCount > 0 ? C(this._events) : [];
|
|
2155
|
+
};
|
|
2156
|
+
function F(b, f) {
|
|
2157
|
+
for (var h = new Array(f), p = 0; p < f; ++p)
|
|
2158
|
+
h[p] = b[p];
|
|
2159
|
+
return h;
|
|
2160
|
+
}
|
|
2161
|
+
function M(b, f) {
|
|
2162
|
+
for (; f + 1 < b.length; f++)
|
|
2163
|
+
b[f] = b[f + 1];
|
|
2164
|
+
b.pop();
|
|
2165
|
+
}
|
|
2166
|
+
function J(b) {
|
|
2167
|
+
for (var f = new Array(b.length), h = 0; h < f.length; ++h)
|
|
2168
|
+
f[h] = b[h].listener || b[h];
|
|
2169
|
+
return f;
|
|
2170
|
+
}
|
|
2171
|
+
function x(b, f) {
|
|
2172
|
+
return new Promise(function(h, p) {
|
|
2173
|
+
function A(r) {
|
|
2174
|
+
b.removeListener(f, t), p(r);
|
|
2175
|
+
}
|
|
2176
|
+
function t() {
|
|
2177
|
+
typeof b.removeListener == "function" && b.removeListener("error", A), h([].slice.call(arguments));
|
|
2178
|
+
}
|
|
2179
|
+
N(b, f, t, { once: !0 }), f !== "error" && q(b, A, { once: !0 });
|
|
2180
|
+
});
|
|
2181
|
+
}
|
|
2182
|
+
function q(b, f, h) {
|
|
2183
|
+
typeof b.on == "function" && N(b, "error", f, h);
|
|
2184
|
+
}
|
|
2185
|
+
function N(b, f, h, p) {
|
|
2186
|
+
if (typeof b.on == "function")
|
|
2187
|
+
p.once ? b.once(f, h) : b.on(f, h);
|
|
2188
|
+
else if (typeof b.addEventListener == "function")
|
|
2189
|
+
b.addEventListener(f, function A(t) {
|
|
2190
|
+
p.once && b.removeEventListener(f, A), h(t);
|
|
2191
|
+
});
|
|
2192
|
+
else
|
|
2193
|
+
throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof b);
|
|
2194
|
+
}
|
|
2195
|
+
})
|
|
2196
|
+
)
|
|
2197
|
+
/******/
|
|
2198
|
+
}, s = {};
|
|
2199
|
+
function i(c) {
|
|
2200
|
+
var d = s[c];
|
|
2201
|
+
if (d !== void 0)
|
|
2202
|
+
return d.exports;
|
|
2203
|
+
var g = s[c] = {
|
|
2204
|
+
/******/
|
|
2205
|
+
// no module.id needed
|
|
2206
|
+
/******/
|
|
2207
|
+
// no module.loaded needed
|
|
2208
|
+
/******/
|
|
2209
|
+
exports: {}
|
|
2210
|
+
/******/
|
|
2211
|
+
};
|
|
2212
|
+
return o[c](g, g.exports, i), g.exports;
|
|
2213
|
+
}
|
|
2214
|
+
(function() {
|
|
2215
|
+
i.g = (function() {
|
|
2216
|
+
if (typeof globalThis == "object") return globalThis;
|
|
2217
|
+
try {
|
|
2218
|
+
return this || new Function("return this")();
|
|
2219
|
+
} catch {
|
|
2220
|
+
if (typeof window == "object") return window;
|
|
2221
|
+
}
|
|
2222
|
+
})();
|
|
2223
|
+
})();
|
|
2224
|
+
var u = i(579);
|
|
2225
|
+
return u;
|
|
2226
|
+
})()
|
|
2227
|
+
);
|
|
2228
|
+
});
|
|
2229
|
+
})(he)), he.exports;
|
|
2230
|
+
}
|
|
2231
|
+
var Pt = St();
|
|
2232
|
+
const kt = /* @__PURE__ */ It(Pt);
|
|
2233
|
+
let de = null;
|
|
2234
|
+
function Ve(e, n) {
|
|
2235
|
+
if (!(e != null && e.client_url) || !(e != null && e.token) || !(e != null && e.channel))
|
|
2236
|
+
return console.error("[Centrifuge] Invalid socket_connections"), null;
|
|
2237
|
+
const { client_url: o, token: s, channel: i } = e;
|
|
2238
|
+
if (i.includes("#") || console.warn("[Centrifuge] Channel should contain #user_id"), de) {
|
|
2239
|
+
try {
|
|
2240
|
+
console.log("[Centrifuge] Disconnecting previous instance..."), de.disconnect();
|
|
2241
|
+
} catch (c) {
|
|
2242
|
+
console.error("[Centrifuge] Error while disconnecting previous instance:", c);
|
|
2243
|
+
}
|
|
2244
|
+
de = null;
|
|
2245
|
+
}
|
|
2246
|
+
console.log("[Centrifuge] Creating new instance:", o);
|
|
2247
|
+
const u = new kt(o);
|
|
2248
|
+
return u.setToken(s), u.on("connect", (c) => {
|
|
2249
|
+
console.log("[Centrifuge] Connected", c), console.log("[Centrifuge] Subscribing to channel:", i);
|
|
2250
|
+
const d = u.subscribe(i);
|
|
2251
|
+
d.on("publish", (g) => {
|
|
2252
|
+
console.log("[Centrifuge] Publish event received:", g);
|
|
2253
|
+
const C = wt(g);
|
|
2254
|
+
C && n(C);
|
|
2255
|
+
}), d.on("subscribe", (g) => {
|
|
2256
|
+
console.log("[Centrifuge] ✅ Channel subscribed successfully:", i, g);
|
|
2257
|
+
}), d.on("error", (g) => {
|
|
2258
|
+
console.error("[Centrifuge] ❌ Subscription error:", g);
|
|
2259
|
+
}), d.on("unsubscribe", (g) => {
|
|
2260
|
+
console.log("[Centrifuge] Channel unsubscribed:", g);
|
|
2261
|
+
});
|
|
2262
|
+
}), u.on("disconnect", (c) => console.log("[Centrifuge] Disconnected", c)), u.on("error", (c) => console.error("[Centrifuge] Error", c)), console.log("[Centrifuge] Calling connect()..."), u.connect(), de = u, { centrifuge: u };
|
|
2263
|
+
}
|
|
2264
|
+
function wt(e) {
|
|
2265
|
+
var o, s, i;
|
|
2266
|
+
if (console.log("[Centrifuge] Raw message received:", JSON.stringify(e)), !(e != null && e.data))
|
|
2267
|
+
return console.warn("[Centrifuge] Empty or invalid response"), null;
|
|
2268
|
+
let n = e.data;
|
|
2269
|
+
return (o = n.data) != null && o.type ? n = n.data : (i = (s = n.data) == null ? void 0 : s.data) != null && i.type && (n = n.data.data), console.log("[Centrifuge] Parsed message:", n), n.type ? n : (console.warn("[Centrifuge] Message has no type:", n), null);
|
|
2270
|
+
}
|
|
2271
|
+
function fe(e) {
|
|
2272
|
+
return /^4[0-9]/.test(e) ? "visa" : /^5[1-5]/.test(e) || /^2[2-7]/.test(e) ? "mastercard" : "card";
|
|
2273
|
+
}
|
|
2274
|
+
const Z = {
|
|
2275
|
+
iconType: "kaspi_pay",
|
|
2276
|
+
label: "Kaspi.kz",
|
|
2277
|
+
type: "kaspi_pay"
|
|
2278
|
+
}, rt = {
|
|
2279
|
+
iconType: "apple_pay",
|
|
2280
|
+
label: "Apple Pay",
|
|
2281
|
+
type: "apple_pay"
|
|
2282
|
+
}, ot = {
|
|
2283
|
+
iconType: "google_pay",
|
|
2284
|
+
label: "Google Pay",
|
|
2285
|
+
type: "google_pay"
|
|
2286
|
+
};
|
|
2287
|
+
function K(e) {
|
|
2288
|
+
return e === "enabled" || e === !0;
|
|
2289
|
+
}
|
|
2290
|
+
function We(e) {
|
|
2291
|
+
if (!e) return null;
|
|
2292
|
+
let n = String(e).trim().toLowerCase();
|
|
2293
|
+
return n.startsWith("payment_method_") && (n = n.replace("payment_method_", "")), n === "kaspi" ? "kaspi_pay" : n === "apple" ? "apple_pay" : n === "google" ? "google_pay" : n === "newcard" ? "new_card" : n === "card" ? "card" : ["kaspi_pay", "apple_pay", "google_pay", "new_card"].includes(n) ? n : null;
|
|
2294
|
+
}
|
|
2295
|
+
function _t(e) {
|
|
2296
|
+
var u, c, d;
|
|
2297
|
+
const n = e, o = ((u = n == null ? void 0 : n.context) == null ? void 0 : u.last_payment_method) ?? (n == null ? void 0 : n.last_payment_method) ?? ((c = n == null ? void 0 : n.attributes) == null ? void 0 : c.last_payment_method);
|
|
2298
|
+
if (!o) return null;
|
|
2299
|
+
if (typeof o == "string")
|
|
2300
|
+
return { type: We(o), cardId: null };
|
|
2301
|
+
if (typeof o != "object") return null;
|
|
2302
|
+
const s = o.type ?? o.payment_method ?? o.method, i = o.card_id ?? o.cardId ?? o.id ?? ((d = o.card) == null ? void 0 : d.id) ?? null;
|
|
2303
|
+
return {
|
|
2304
|
+
type: We(s),
|
|
2305
|
+
cardId: i != null ? String(i) : null
|
|
2306
|
+
};
|
|
2307
|
+
}
|
|
2308
|
+
function Tt(e, n, o = {}) {
|
|
2309
|
+
var P, k, w, L;
|
|
2310
|
+
const s = [], i = (P = e == null ? void 0 : e.kaspi) == null ? void 0 : P.data, u = ((k = e == null ? void 0 : e.cards_v2) == null ? void 0 : k.data) || [], c = ((L = (w = e == null ? void 0 : e.payment_methods) == null ? void 0 : w.data) == null ? void 0 : L.attributes) || {}, d = K(c.payment_method_kaspi), g = K(c.payment_method_card), C = typeof window < "u" && window.self === window.top, T = Ne() === "ios", v = !!(o != null && o.onlyKaspiAvailable), Q = !!(o != null && o.disableKaspi);
|
|
2311
|
+
return i != null && i.isKaspiOnly && d && !Q ? [Z] : v ? i != null && i.isAvailable && d && !Q ? [Z] : [] : (K(c.payment_method_apple_pay) && !ye("apple_pay") && (pe() && C || Ce() || T || nt() === 16) && s.push(rt), i != null && i.isAvailable && d && !Q && s.push(Z), g && u.filter((O) => !O.isExpired).forEach((O) => {
|
|
2312
|
+
s.push({
|
|
2313
|
+
iconType: fe(O.attributes.mask),
|
|
2314
|
+
type: "card",
|
|
2315
|
+
cardId: O.id,
|
|
2316
|
+
label: `•••• ${O.attributes.mask.slice(-4)}`,
|
|
2317
|
+
cardType: O.type,
|
|
2318
|
+
isDefault: O.attributes.isDefault
|
|
2319
|
+
});
|
|
2320
|
+
}), K(c.payment_method_google_pay) && !ye("google_pay") && !pe() && !Ce() && s.push(ot), K(c.payment_method_new_card) && s.push({
|
|
2321
|
+
iconType: "new_card",
|
|
2322
|
+
type: "new_card",
|
|
2323
|
+
label: n ? n("newCard") : "Оплата новой картой"
|
|
2324
|
+
}), s);
|
|
2325
|
+
}
|
|
2326
|
+
function Te(e, n = {}) {
|
|
2327
|
+
var m, P, k, w;
|
|
2328
|
+
const o = (m = e == null ? void 0 : e.kaspi) == null ? void 0 : m.data, s = ((P = e == null ? void 0 : e.cards_v2) == null ? void 0 : P.data) || [], i = ((w = (k = e == null ? void 0 : e.payment_methods) == null ? void 0 : k.data) == null ? void 0 : w.attributes) || {}, u = K(i.payment_method_kaspi), c = K(i.payment_method_card), d = !!(n != null && n.disableKaspi), g = typeof window < "u" && window.self === window.top, S = Ne() === "ios", T = K(i.payment_method_apple_pay) && !ye("apple_pay") && (pe() && g || Ce() || S || nt() === 16), v = K(i.payment_method_google_pay) && !ye("google_pay") && !pe() && !Ce();
|
|
2329
|
+
if (o != null && o.isKaspiOnly && u && !d || n != null && n.onlyKaspiAvailable && (o != null && o.isAvailable) && u && !d)
|
|
2330
|
+
return Z;
|
|
2331
|
+
const Q = _t(e);
|
|
2332
|
+
if ((Q == null ? void 0 : Q.type) === "kaspi_pay" && (o != null && o.isAvailable) && u && !d)
|
|
2333
|
+
return Z;
|
|
2334
|
+
if ((Q == null ? void 0 : Q.type) === "apple_pay" && T) return rt;
|
|
2335
|
+
if ((Q == null ? void 0 : Q.type) === "google_pay" && v) return ot;
|
|
2336
|
+
if ((Q == null ? void 0 : Q.type) === "new_card" && K(i.payment_method_new_card))
|
|
2337
|
+
return { iconType: "new_card", type: "new_card", label: "Оплата новой картой" };
|
|
2338
|
+
if ((Q == null ? void 0 : Q.type) === "card" && c) {
|
|
2339
|
+
const L = Q.cardId != null ? s.find((O) => !O.isExpired && String(O.id) === Q.cardId) : null;
|
|
2340
|
+
if (L)
|
|
2341
|
+
return {
|
|
2342
|
+
iconType: fe(L.attributes.mask),
|
|
2343
|
+
type: "card",
|
|
2344
|
+
cardId: L.id,
|
|
2345
|
+
label: `•••• ${L.attributes.mask.slice(-4)}`,
|
|
2346
|
+
cardType: L.type
|
|
2347
|
+
};
|
|
2348
|
+
}
|
|
2349
|
+
if (c) {
|
|
2350
|
+
const L = s.find((O) => {
|
|
2351
|
+
var F;
|
|
2352
|
+
return ((F = O.attributes) == null ? void 0 : F.isDefault) && !O.isExpired;
|
|
2353
|
+
});
|
|
2354
|
+
if (L)
|
|
2355
|
+
return {
|
|
2356
|
+
iconType: fe(L.attributes.mask),
|
|
2357
|
+
type: "card",
|
|
2358
|
+
cardId: L.id,
|
|
2359
|
+
label: `•••• ${L.attributes.mask.slice(-4)}`,
|
|
2360
|
+
cardType: L.type
|
|
2361
|
+
};
|
|
2362
|
+
}
|
|
2363
|
+
if (o != null && o.isAvailable && u && !d) return Z;
|
|
2364
|
+
const _ = c ? s.find((L) => !L.isExpired) : null;
|
|
2365
|
+
return _ ? {
|
|
2366
|
+
iconType: fe(_.attributes.mask),
|
|
2367
|
+
type: "card",
|
|
2368
|
+
cardId: _.id,
|
|
2369
|
+
label: `••••${_.attributes.mask.slice(-4)}`,
|
|
2370
|
+
cardType: _.type
|
|
2371
|
+
} : null;
|
|
2372
|
+
}
|
|
2373
|
+
function st(e) {
|
|
2374
|
+
if (typeof localStorage > "u") return null;
|
|
2375
|
+
try {
|
|
2376
|
+
return localStorage.getItem(e);
|
|
2377
|
+
} catch {
|
|
2378
|
+
return null;
|
|
2379
|
+
}
|
|
2380
|
+
}
|
|
2381
|
+
function Le(e, n) {
|
|
2382
|
+
if (!(typeof localStorage > "u"))
|
|
2383
|
+
try {
|
|
2384
|
+
localStorage.setItem(e, n);
|
|
2385
|
+
} catch {
|
|
2386
|
+
}
|
|
2387
|
+
}
|
|
2388
|
+
function me(e) {
|
|
2389
|
+
if (!(typeof localStorage > "u"))
|
|
2390
|
+
try {
|
|
2391
|
+
localStorage.removeItem(e);
|
|
2392
|
+
} catch {
|
|
2393
|
+
}
|
|
2394
|
+
}
|
|
2395
|
+
async function Lt(e, n) {
|
|
2396
|
+
var o;
|
|
2397
|
+
try {
|
|
2398
|
+
const s = await e.json(), i = (o = s == null ? void 0 : s.errors) == null ? void 0 : o[0];
|
|
2399
|
+
return (i == null ? void 0 : i.title) || (i == null ? void 0 : i.detail) || (s == null ? void 0 : s.message) || (s == null ? void 0 : s.error) || n;
|
|
2400
|
+
} catch {
|
|
2401
|
+
return `HTTP ${e.status}: ${e.statusText}`;
|
|
2402
|
+
}
|
|
2403
|
+
}
|
|
2404
|
+
async function te(e, n) {
|
|
2405
|
+
const o = await Lt(e, n);
|
|
2406
|
+
throw Object.assign(new Error(o), { status: e.status });
|
|
2407
|
+
}
|
|
2408
|
+
function Be(e, n, o = {}) {
|
|
2409
|
+
const s = Number.isFinite(o.checkoutAmount) && o.checkoutAmount >= 0 ? Number(o.checkoutAmount) : e.amount, i = !!o.forceBalanceMethod, u = !!o.useBalance;
|
|
2410
|
+
return {
|
|
2411
|
+
checkoutAmount: s,
|
|
2412
|
+
checkoutPaymentMethod: i ? { type: "balance" } : n,
|
|
2413
|
+
useBalanceFlag: u
|
|
2414
|
+
};
|
|
2415
|
+
}
|
|
2416
|
+
function Ie(e, n, o, s) {
|
|
2417
|
+
return {
|
|
2418
|
+
preorder_id: e.preorderId,
|
|
2419
|
+
terminal_id: e.terminalId,
|
|
2420
|
+
merchant_order_id: e.merchantOrderId,
|
|
2421
|
+
money: {
|
|
2422
|
+
amount: String(o),
|
|
2423
|
+
currency: e.currency
|
|
2424
|
+
},
|
|
2425
|
+
payment_method: n,
|
|
2426
|
+
...e.backlink && { backlink: e.backlink },
|
|
2427
|
+
...s && { use_balance: !0 }
|
|
2428
|
+
};
|
|
2429
|
+
}
|
|
2430
|
+
async function Qe(e, n, o, s, i) {
|
|
2431
|
+
const u = await fetch(`${e}/orders/v1/checkout`, {
|
|
2432
|
+
method: "POST",
|
|
2433
|
+
headers: {
|
|
2434
|
+
"Content-Type": "application/json",
|
|
2435
|
+
Authorization: `Bearer ${n.accessToken}`,
|
|
2436
|
+
"X-Idempotency-Key": ve(),
|
|
2437
|
+
"X-Device-Id": o,
|
|
2438
|
+
"X-OS": "WEB"
|
|
2439
|
+
},
|
|
2440
|
+
body: JSON.stringify(s)
|
|
2441
|
+
});
|
|
2442
|
+
return u.ok || await te(u, i), u.json();
|
|
2443
|
+
}
|
|
2444
|
+
async function Rt(e, n, o) {
|
|
2445
|
+
var d, g, C, S;
|
|
2446
|
+
const s = await fetch(`${e}/api/v2/oauth2/tokens`, {
|
|
2447
|
+
method: "POST",
|
|
2448
|
+
headers: {
|
|
2449
|
+
"Content-Type": "application/json",
|
|
2450
|
+
"X-Idempotency-Key": ve(),
|
|
2451
|
+
"X-Fingerprint": tt()
|
|
2452
|
+
},
|
|
2453
|
+
body: JSON.stringify({
|
|
2454
|
+
client_id: n,
|
|
2455
|
+
grant_type: "authorization_track_id",
|
|
2456
|
+
track_id: o
|
|
2457
|
+
})
|
|
2458
|
+
});
|
|
2459
|
+
s.ok || await te(s, "Не удалось авторизоваться через track_id");
|
|
2460
|
+
const i = await s.json(), u = (i == null ? void 0 : i.access_token) ?? ((g = (d = i == null ? void 0 : i.data) == null ? void 0 : d.attributes) == null ? void 0 : g.access_token), c = (i == null ? void 0 : i.refresh_token) ?? ((S = (C = i == null ? void 0 : i.data) == null ? void 0 : C.attributes) == null ? void 0 : S.refresh_token) ?? null;
|
|
2461
|
+
if (!u) throw new Error("В ответе отсутствует access_token");
|
|
2462
|
+
return { access_token: u, refresh_token: c };
|
|
2463
|
+
}
|
|
2464
|
+
async function Ot(e, n, o) {
|
|
2465
|
+
var d, g, C, S;
|
|
2466
|
+
const s = await fetch(`${e}/api/v2/oauth2/tokens`, {
|
|
2467
|
+
method: "POST",
|
|
2468
|
+
headers: { "Content-Type": "application/json" },
|
|
2469
|
+
body: JSON.stringify({
|
|
2470
|
+
client_id: n,
|
|
2471
|
+
grant_type: "refresh_token",
|
|
2472
|
+
refresh_token: o
|
|
2473
|
+
})
|
|
2474
|
+
});
|
|
2475
|
+
s.ok || await te(s, "Не удалось обновить токен по refresh_token");
|
|
2476
|
+
const i = await s.json(), u = (i == null ? void 0 : i.access_token) ?? ((g = (d = i == null ? void 0 : i.data) == null ? void 0 : d.attributes) == null ? void 0 : g.access_token), c = (i == null ? void 0 : i.refresh_token) ?? ((S = (C = i == null ? void 0 : i.data) == null ? void 0 : C.attributes) == null ? void 0 : S.refresh_token) ?? null;
|
|
2477
|
+
if (!u) throw new Error("В ответе отсутствует access_token");
|
|
2478
|
+
return { access_token: u, refresh_token: c };
|
|
2479
|
+
}
|
|
2480
|
+
async function Re(e, n) {
|
|
2481
|
+
const o = await fetch(`${e}/orders/v1/checkout/context`, {
|
|
2482
|
+
method: "POST",
|
|
2483
|
+
headers: {
|
|
2484
|
+
"Content-Type": "application/json",
|
|
2485
|
+
Authorization: `Bearer ${n.accessToken}`,
|
|
2486
|
+
"X-Idempotency-Key": ve()
|
|
2487
|
+
},
|
|
2488
|
+
body: JSON.stringify({
|
|
2489
|
+
terminal_id: n.terminalId,
|
|
2490
|
+
include: ["cards", "payment_methods", "balance", "cashback"],
|
|
2491
|
+
money: {
|
|
2492
|
+
amount: String(n.amount),
|
|
2493
|
+
currency: n.currency
|
|
2494
|
+
}
|
|
2495
|
+
})
|
|
2496
|
+
});
|
|
2497
|
+
return o.ok || await te(o, "Ошибка получения контекста оплаты"), o.json();
|
|
2498
|
+
}
|
|
2499
|
+
async function Mt(e, n, o) {
|
|
2500
|
+
const s = await fetch(`${e}/payment-gateway/v1/cards/${o}`, {
|
|
2501
|
+
method: "DELETE",
|
|
2502
|
+
headers: {
|
|
2503
|
+
"Content-Type": "application/json",
|
|
2504
|
+
Authorization: `Bearer ${n.accessToken}`
|
|
2505
|
+
}
|
|
2506
|
+
});
|
|
2507
|
+
return s.ok || await te(s, "Не удалось удалить карту"), s.json().catch(() => ({}));
|
|
2508
|
+
}
|
|
2509
|
+
async function Nt(e, n, o) {
|
|
2510
|
+
const s = await fetch(
|
|
2511
|
+
`${e}/payment-gateway/v1/cards/${o}/mark_as_default`,
|
|
2512
|
+
{
|
|
2513
|
+
method: "PUT",
|
|
2514
|
+
headers: {
|
|
2515
|
+
"Content-Type": "application/json",
|
|
2516
|
+
Authorization: `Bearer ${n.accessToken}`
|
|
2517
|
+
}
|
|
2518
|
+
}
|
|
2519
|
+
);
|
|
2520
|
+
return s.ok || await te(s, "Не удалось отметить карту как основную"), s.json().catch(() => ({}));
|
|
2521
|
+
}
|
|
2522
|
+
async function Dt(e, n, o) {
|
|
2523
|
+
const s = await fetch(`${e}/orders/v1/orders/${o}/status`, {
|
|
2524
|
+
method: "GET",
|
|
2525
|
+
headers: {
|
|
2526
|
+
"Content-Type": "application/json",
|
|
2527
|
+
Authorization: `Bearer ${n.accessToken}`
|
|
2528
|
+
}
|
|
2529
|
+
});
|
|
2530
|
+
if (!s.ok)
|
|
2531
|
+
throw Object.assign(
|
|
2532
|
+
new Error(`Ошибка проверки статуса заказа: ${s.status} ${s.statusText}`),
|
|
2533
|
+
{ status: s.status }
|
|
2534
|
+
);
|
|
2535
|
+
const i = await s.json(), u = (i == null ? void 0 : i.data) ?? i;
|
|
2536
|
+
return { data: { status: u == null ? void 0 : u.status, payload: (u == null ? void 0 : u.payload) ?? {} } };
|
|
2537
|
+
}
|
|
2538
|
+
async function Ye(e, n, o, s, i = {}) {
|
|
2539
|
+
const { checkoutAmount: u, checkoutPaymentMethod: c, useBalanceFlag: d } = Be(
|
|
2540
|
+
n,
|
|
2541
|
+
{
|
|
2542
|
+
type: s.type,
|
|
2543
|
+
...s.cardId && { card_id: s.cardId }
|
|
2544
|
+
},
|
|
2545
|
+
i
|
|
2546
|
+
);
|
|
2547
|
+
return Qe(
|
|
2548
|
+
e,
|
|
2549
|
+
n,
|
|
2550
|
+
o,
|
|
2551
|
+
Ie(n, c, u, d),
|
|
2552
|
+
"Ошибка создания заказа"
|
|
2553
|
+
);
|
|
2554
|
+
}
|
|
2555
|
+
async function Xt(e, n, o, s = {}) {
|
|
2556
|
+
const { checkoutAmount: i, checkoutPaymentMethod: u, useBalanceFlag: c } = Be(
|
|
2557
|
+
n,
|
|
2558
|
+
{ type: "new_card" },
|
|
2559
|
+
s
|
|
2560
|
+
);
|
|
2561
|
+
return Qe(
|
|
2562
|
+
e,
|
|
2563
|
+
n,
|
|
2564
|
+
o,
|
|
2565
|
+
Ie(n, u, i, c),
|
|
2566
|
+
"Ошибка создания заказа для новой карты"
|
|
2567
|
+
);
|
|
2568
|
+
}
|
|
2569
|
+
async function Ut(e, n, o) {
|
|
2570
|
+
const s = window.location.hostname, i = await fetch(`${e}/payment-gateway/v1/apple/session`, {
|
|
2571
|
+
method: "POST",
|
|
2572
|
+
headers: {
|
|
2573
|
+
"Content-Type": "application/json",
|
|
2574
|
+
Accept: "application/vnd.api+json",
|
|
2575
|
+
Authorization: `Bearer ${n.accessToken}`
|
|
2576
|
+
},
|
|
2577
|
+
body: JSON.stringify({ validationUrl: o, domainName: s })
|
|
2578
|
+
});
|
|
2579
|
+
return i.ok || await te(i, "Ошибка получения Apple Pay сессии"), i.json();
|
|
2580
|
+
}
|
|
2581
|
+
async function Ht(e, n, o, s, i = {}) {
|
|
2582
|
+
const { checkoutAmount: u, checkoutPaymentMethod: c, useBalanceFlag: d } = Be(
|
|
2583
|
+
n,
|
|
2584
|
+
{ type: "apple_pay", data: s },
|
|
2585
|
+
i
|
|
2586
|
+
);
|
|
2587
|
+
return Qe(
|
|
2588
|
+
e,
|
|
2589
|
+
n,
|
|
2590
|
+
o,
|
|
2591
|
+
Ie(n, c, u, d),
|
|
2592
|
+
"Ошибка создания заказа с Apple Pay"
|
|
2593
|
+
);
|
|
2594
|
+
}
|
|
2595
|
+
async function xt(e, n, o, s, i = {}) {
|
|
2596
|
+
const { checkoutAmount: u, checkoutPaymentMethod: c, useBalanceFlag: d } = Be(
|
|
2597
|
+
n,
|
|
2598
|
+
{ type: "google_pay", data: s },
|
|
2599
|
+
i
|
|
2600
|
+
);
|
|
2601
|
+
return Qe(
|
|
2602
|
+
e,
|
|
2603
|
+
n,
|
|
2604
|
+
o,
|
|
2605
|
+
Ie(n, c, u, d),
|
|
2606
|
+
"Ошибка создания заказа с Google Pay"
|
|
2607
|
+
);
|
|
2608
|
+
}
|
|
2609
|
+
function Ft(e) {
|
|
2610
|
+
const n = typeof e.color == "string" ? e.color.trim() : "", o = n && /^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(n) ? `#${n}` : n, s = e.bonuses, i = s && typeof s == "object" && Number.isFinite(s.amount) && Number.isFinite(s.percent) ? {
|
|
2611
|
+
availableBonus: Number.isFinite(s.availableBonus) ? Number(s.availableBonus) : 0,
|
|
2612
|
+
amount: Number(s.amount),
|
|
2613
|
+
percent: Number(s.percent)
|
|
2614
|
+
} : null;
|
|
2615
|
+
return {
|
|
2616
|
+
preorderId: e.preorderId,
|
|
2617
|
+
trackId: e.trackId,
|
|
2618
|
+
clientId: e.clientId,
|
|
2619
|
+
terminalId: e.terminalId,
|
|
2620
|
+
merchantOrderId: e.merchantOrderId,
|
|
2621
|
+
amount: e.amount,
|
|
2622
|
+
currency: e.currency || "KZT",
|
|
2623
|
+
environment: e.environment || "production",
|
|
2624
|
+
backlink: e.backlink,
|
|
2625
|
+
onSuccess: e.onSuccess || (() => {
|
|
2626
|
+
}),
|
|
2627
|
+
onAppliedBonus: e.onAppliedBonus || (() => {
|
|
2628
|
+
}),
|
|
2629
|
+
onError: e.onError || (() => {
|
|
2630
|
+
}),
|
|
2631
|
+
onCancel: e.onCancel || (() => {
|
|
2632
|
+
}),
|
|
2633
|
+
onCardDeleted: typeof e.onCardDeleted == "function" ? e.onCardDeleted : null,
|
|
2634
|
+
onConfirmPay: typeof e.onConfirmPay == "function" ? e.onConfirmPay : null,
|
|
2635
|
+
onPaymentMethodSelected: typeof e.onPaymentMethodSelected == "function" ? e.onPaymentMethodSelected : null,
|
|
2636
|
+
onKaspiLink: typeof e.onKaspiLink == "function" ? e.onKaspiLink : null,
|
|
2637
|
+
onUserEvent: typeof e.onUserEvent == "function" ? e.onUserEvent : null,
|
|
2638
|
+
onBeforeCheckout: typeof e.onBeforeCheckout == "function" ? e.onBeforeCheckout : null,
|
|
2639
|
+
locale: e.locale || "ru",
|
|
2640
|
+
containerSelector: typeof e.containerSelector == "string" ? e.containerSelector.trim() : "",
|
|
2641
|
+
color: o || "#2F2F2F",
|
|
2642
|
+
onlyKaspiAvailable: !!e.onlyKaspiAvailable,
|
|
2643
|
+
disableKaspi: !!e.disableKaspi,
|
|
2644
|
+
bonuses: i
|
|
2645
|
+
};
|
|
2646
|
+
}
|
|
2647
|
+
function Oe(e, n) {
|
|
2648
|
+
Le("webPayToken", e), n && Le("webPayRefreshToken", n);
|
|
2649
|
+
}
|
|
2650
|
+
function Ge() {
|
|
2651
|
+
me("webPayToken"), me("webPayRefreshToken");
|
|
2652
|
+
}
|
|
2653
|
+
async function Jt(e) {
|
|
2654
|
+
const n = st("webPayRefreshToken");
|
|
2655
|
+
if (n && e.config.clientId)
|
|
2656
|
+
try {
|
|
2657
|
+
const s = await Ot(
|
|
2658
|
+
e.apiUrl,
|
|
2659
|
+
e.config.clientId,
|
|
2660
|
+
n
|
|
2661
|
+
);
|
|
2662
|
+
Oe(s.access_token, s.refresh_token), e.accessToken = s.access_token;
|
|
2663
|
+
return;
|
|
2664
|
+
} catch {
|
|
2665
|
+
me("webPayRefreshToken");
|
|
2666
|
+
}
|
|
2667
|
+
if (!e.config.trackId || !e.config.clientId) {
|
|
2668
|
+
e.config.onError({ attributes: { message: e.t("errorMissingTrackClient") } });
|
|
2669
|
+
return;
|
|
2670
|
+
}
|
|
2671
|
+
const o = await Rt(
|
|
2672
|
+
e.apiUrl,
|
|
2673
|
+
e.config.clientId,
|
|
2674
|
+
e.config.trackId
|
|
2675
|
+
);
|
|
2676
|
+
Oe(o.access_token, o.refresh_token), e.accessToken = o.access_token;
|
|
2677
|
+
}
|
|
2678
|
+
const qt = `<svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2679
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.89711 8.50443C10.4185 8.72365 10.6242 9.56386 10.7471 10.3459L10.7816 10.5699L10.8557 11.0301C11.0006 11.9088 11.303 13.7327 11.303 14.6845C11.303 14.9224 11.2806 15.105 11.2396 15.2053C11.1713 15.3599 10.9724 15.5082 10.6978 15.6319C10.0332 15.7846 9.33863 15.8671 8.62315 15.8671C8.54739 15.8671 8.47285 15.8637 8.39805 15.8616C8.10889 15.785 7.89156 15.657 7.77649 15.4821C7.42905 14.9542 7.40812 13.7781 7.40116 12.4037L7.40037 12.2443L7.39755 11.8324C7.38623 10.3774 7.37651 9.1229 7.94288 8.67272C8.16223 8.49957 8.47392 8.44225 8.89711 8.50443ZM5.58009 11.6722C5.90978 11.6548 6.12181 13.1684 6.16441 14.3162C6.19427 15.1152 6.10438 15.4439 5.96084 15.5619C5.79833 15.5113 5.63864 15.4565 5.48128 15.397C5.3763 15.219 5.29607 14.9389 5.2451 14.5721C5.08947 13.4193 5.22466 11.6925 5.58009 11.6722ZM13.8455 13.934C13.825 14.0391 13.796 14.1204 13.7602 14.1889C13.4783 14.4 13.1821 14.5938 12.872 14.7682C12.7733 14.7837 12.6856 14.7729 12.6427 14.7053C12.2318 14.0314 12.0775 11.9173 12.4752 11.7333C12.9936 11.4995 13.9224 13.5685 13.8455 13.934ZM8.50042 0C13.1296 0 16.8941 3.42166 16.9979 7.67934L17 7.82651V7.89454C16.9915 9.81778 16.2332 11.5773 14.9839 12.9392C14.9386 12.918 14.8559 12.8486 14.7062 12.6395C14.5512 12.4293 13.2148 10.5096 13.2148 8.30946C13.2148 7.87768 13.8816 7.20318 14.4717 6.61114C14.9128 6.16562 15.3306 5.74539 15.4845 5.4151C15.6804 4.98892 15.5433 4.69134 15.3265 4.59047C15.1302 4.50082 14.8355 4.56621 14.6287 4.90904C14.2893 5.46389 14.1805 5.56758 13.6855 5.93882C13.1984 6.30986 12.424 6.68338 12.424 6.19988C12.424 5.93882 12.8553 5.34757 13.0684 4.93314C13.286 4.51408 13.0515 4.21072 12.6022 4.21072C11.7198 4.21072 11.1341 5.2598 11.1341 5.62326C11.1341 5.98642 11.3229 6.03813 11.3229 6.46104C11.3229 6.88713 10.3548 7.4398 9.44281 7.4398C8.56481 7.4398 8.05566 7.27394 7.8447 6.80665L7.81777 6.74105L7.75678 6.57266C7.54046 5.98255 7.38528 5.55458 7.11514 5.10733C6.9717 4.87081 6.75038 4.70684 6.55897 4.56257C6.30881 4.38121 6.17902 4.21421 6.15193 4.08967C6.12696 3.96611 6.11352 3.73326 6.54117 3.19648C6.96793 2.66277 7.02775 2.25958 6.81418 2.05153C6.73678 1.97752 6.60482 1.93011 6.43535 1.93011C6.13562 1.93011 5.71912 2.07834 5.2899 2.48551C4.62267 3.12364 5.00146 3.72951 5.00146 3.99548C5.00146 4.26127 4.87922 4.41162 4.47882 4.77323C4.07547 5.13644 3.93627 5.44783 3.89014 6.69935C3.87247 7.3442 3.75079 7.71539 3.64156 8.04453C3.54718 8.33302 3.46038 8.60425 3.45569 8.99611C3.44822 9.43038 3.52566 9.71023 3.61604 10.0331C3.70477 10.3316 3.79902 10.6736 3.8594 11.2456C3.95544 12.1312 3.92205 12.8792 3.74744 13.6437L3.70084 13.8353L3.68995 13.8903C3.65419 14.0247 3.61168 14.1879 3.55423 14.249C1.4029 12.8228 0 10.4936 0 7.86072C0 3.51974 3.80561 0 8.50042 0Z" fill="#F14635"/>
|
|
2680
|
+
</svg>
|
|
2681
|
+
`, jt = `<svg width="21" height="12" viewBox="0 0 21 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2682
|
+
<path d="M0 6C0 2.68629 2.68629 0 6 0H15C18.3137 0 21 2.68629 21 6C21 9.31371 18.3137 12 15 12H6C2.68629 12 0 9.31371 0 6Z" fill="#F1F2F7"/>
|
|
2683
|
+
<path d="M7.79163 5.99984H13.2083M10.5 3.2915L10.5 8.70817" stroke="#242424" stroke-width="0.8125" stroke-linecap="round"/>
|
|
2684
|
+
</svg>
|
|
2685
|
+
`, zt = `<svg width="29" height="12" viewBox="0 0 29 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2686
|
+
<g clip-path="url(#clip0_22788_48734)">
|
|
2687
|
+
<path d="M5.29824 1.53496C4.9584 1.93711 4.41465 2.2543 3.8709 2.20898C3.80293 1.66523 4.06914 1.0875 4.38066 0.730664C4.72051 0.317187 5.31523 0.0226563 5.79668 0C5.85332 0.566406 5.63242 1.12148 5.29824 1.53496ZM5.79101 2.3166C5.00371 2.27129 4.32969 2.76406 3.95586 2.76406C3.57637 2.76406 3.0043 2.33926 2.38125 2.35059C1.57129 2.36191 0.817967 2.8207 0.40449 3.55137C-0.445119 5.0127 0.183592 7.17637 1.00488 8.36582C1.40703 8.95488 1.88847 9.60059 2.52285 9.57793C3.12324 9.55527 3.36113 9.18711 4.08613 9.18711C4.81679 9.18711 5.02637 9.57793 5.66074 9.5666C6.31777 9.55527 6.73125 8.97754 7.1334 8.38848C7.59219 7.72012 7.7791 7.06875 7.79043 7.03477C7.7791 7.02344 6.52168 6.54199 6.51035 5.09199C6.49902 3.87988 7.50156 3.30215 7.54687 3.26816C6.98047 2.42988 6.09687 2.33926 5.79101 2.3166ZM10.3393 0.674023V9.5043H11.71V6.48535H13.6074C15.3406 6.48535 16.5584 5.2959 16.5584 3.57402C16.5584 1.85215 15.3633 0.674023 13.6527 0.674023H10.3393ZM11.71 1.82949H13.2902C14.4797 1.82949 15.1594 2.46387 15.1594 3.57969C15.1594 4.69551 14.4797 5.33555 13.2846 5.33555H11.71V1.82949ZM19.0619 9.57227C19.9229 9.57227 20.7215 9.13613 21.084 8.44512H21.1123V9.5043H22.3811V5.10898C22.3811 3.83457 21.3615 3.01328 19.7926 3.01328C18.3369 3.01328 17.2607 3.8459 17.2211 4.99004H18.4559C18.5578 4.44629 19.0619 4.08945 19.7529 4.08945C20.5912 4.08945 21.0613 4.48027 21.0613 5.19961V5.68672L19.3508 5.78867C17.7592 5.88496 16.8982 6.53633 16.8982 7.66914C16.8982 8.81328 17.7875 9.57227 19.0619 9.57227ZM19.4301 8.52441C18.6994 8.52441 18.235 8.17324 18.235 7.63516C18.235 7.08008 18.6824 6.75723 19.5377 6.70625L21.0613 6.60996V7.1084C21.0613 7.93535 20.359 8.52441 19.4301 8.52441ZM24.0746 11.9059C25.4113 11.9059 26.04 11.3961 26.5895 9.8498L28.9967 3.09824H27.6033L25.9891 8.31484H25.9607L24.3465 3.09824H22.9135L25.2357 9.52695L25.1111 9.91777C24.9016 10.5805 24.5617 10.8354 23.9557 10.8354C23.848 10.8354 23.6385 10.824 23.5535 10.8127V11.8719C23.6328 11.8945 23.9727 11.9059 24.0746 11.9059Z" fill="black"/>
|
|
2688
|
+
</g>
|
|
2689
|
+
<defs>
|
|
2690
|
+
<clipPath id="clip0_22788_48734">
|
|
2691
|
+
<rect width="29" height="11.9059" fill="white"/>
|
|
2692
|
+
</clipPath>
|
|
2693
|
+
</defs>
|
|
2694
|
+
</svg>
|
|
2695
|
+
`, Kt = `<svg width="52" height="21" viewBox="0 0 52 21" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2696
|
+
<g clip-path="url(#clip0_23934_4296)">
|
|
2697
|
+
<path d="M24.5944 10.0883V16.1414H22.6741V1.19278H27.7671C28.375 1.18008 28.9794 1.2879 29.5455 1.51002C30.1115 1.73213 30.628 2.06415 31.065 2.4869C31.5065 2.88399 31.8578 3.37098 32.0954 3.91513C32.3331 4.45929 32.4514 5.048 32.4426 5.64171C32.4553 6.23859 32.3387 6.83115 32.1009 7.37877C31.8631 7.92639 31.5098 8.41612 31.065 8.8144C30.1744 9.66364 29.0751 10.0879 27.7671 10.0871H24.5944V10.0883ZM24.5944 3.03318V8.25143H27.8148C28.1678 8.26189 28.5192 8.19856 28.8464 8.06547C29.1735 7.93238 29.4693 7.73247 29.7148 7.47853C29.959 7.2411 30.1532 6.95711 30.2857 6.64336C30.4183 6.3296 30.4866 5.99245 30.4866 5.65184C30.4866 5.31124 30.4183 4.97409 30.2857 4.66033C30.1532 4.34658 29.959 4.06259 29.7148 3.82516C29.4724 3.56587 29.1776 3.36106 28.8501 3.22432C28.5225 3.08757 28.1696 3.02201 27.8148 3.03199H24.5944V3.03318Z" fill="black"/>
|
|
2698
|
+
<path d="M36.8677 5.57959C38.2871 5.57959 39.4075 5.95888 40.2289 6.71747C41.0503 7.47605 41.4606 8.51612 41.4598 9.83768V16.1413H39.623V14.722H39.5395C38.7443 15.8909 37.6868 16.4753 36.3668 16.4753C35.24 16.4753 34.2974 16.1413 33.5388 15.4734C33.1747 15.1668 32.8837 14.7829 32.6868 14.3496C32.49 13.9163 32.3923 13.4445 32.4009 12.9686C32.4009 11.9103 32.8009 11.0686 33.6008 10.4436C34.4007 9.8186 35.4686 9.5053 36.8045 9.50371C37.9448 9.50371 38.8839 9.71244 39.6218 10.1299V9.69097C39.624 9.36657 39.5539 9.04574 39.4167 8.75177C39.2795 8.45779 39.0786 8.19803 38.8286 7.99132C38.3208 7.53316 37.659 7.28317 36.9751 7.29118C35.9024 7.29118 35.0536 7.74362 34.4286 8.64852L32.7373 7.5834C33.6676 6.24753 35.0444 5.57959 36.8677 5.57959ZM34.3833 13.0104C34.382 13.2548 34.4391 13.4959 34.5499 13.7138C34.6607 13.9316 34.8219 14.1198 35.0202 14.2628C35.4449 14.5968 35.972 14.7738 36.5123 14.7637C37.3226 14.7624 38.0994 14.4398 38.6724 13.8668C39.3085 13.268 39.6266 12.5655 39.6266 11.7592C39.0278 11.2821 38.1929 11.0435 37.1218 11.0435C36.3417 11.0435 35.6913 11.2316 35.1705 11.6077C34.6445 11.9894 34.3833 12.4534 34.3833 13.0104Z" fill="black"/>
|
|
2699
|
+
<path d="M52.0036 5.91357L45.5914 20.6499H43.609L45.9886 15.4937L41.7722 5.91357H43.8595L46.907 13.2609H46.9487L49.9127 5.91357H52.0036Z" fill="black"/>
|
|
2700
|
+
<path d="M16.8344 8.78341C16.8351 8.19819 16.7856 7.61399 16.6865 7.03723H8.58777V10.3447H13.2263C13.1314 10.873 12.9305 11.3765 12.6357 11.825C12.341 12.2736 11.9584 12.6577 11.5112 12.9544V15.1014H14.2795C15.9005 13.6069 16.8344 11.3967 16.8344 8.78341Z" fill="#4285F4"/>
|
|
2701
|
+
<path d="M8.58771 17.1755C10.9052 17.1755 12.8565 16.4145 14.2795 15.1025L11.5111 12.9555C10.7406 13.478 9.74825 13.7762 8.58771 13.7762C6.34774 13.7762 4.44651 12.2661 3.76664 10.2313H0.914795V12.4439C1.62957 13.8662 2.72559 15.0618 4.0805 15.8974C5.43541 16.7329 6.99589 17.1754 8.58771 17.1755Z" fill="#34A853"/>
|
|
2702
|
+
<path d="M3.76666 10.2313C3.40724 9.16504 3.40724 8.01036 3.76666 6.94411V4.73157H0.914808C0.313518 5.92807 0.000366211 7.24861 0.000366211 8.5877C0.000366211 9.9268 0.313518 11.2473 0.914808 12.4438L3.76666 10.2313Z" fill="#FBBC04"/>
|
|
2703
|
+
<path d="M8.58771 3.39927C9.8124 3.37926 10.9958 3.84199 11.8821 4.68743L14.3331 2.23635C12.7789 0.776519 10.7199 -0.0249503 8.58771 -4.6915e-05C6.99589 2.56337e-05 5.43541 0.442526 4.0805 1.27805C2.72559 2.11358 1.62957 3.30924 0.914795 4.73156L3.76664 6.9441C4.44651 4.90928 6.34774 3.39927 8.58771 3.39927Z" fill="#EA4335"/>
|
|
2704
|
+
</g>
|
|
2705
|
+
<defs>
|
|
2706
|
+
<clipPath id="clip0_23934_4296">
|
|
2707
|
+
<rect width="52" height="20.65" fill="white"/>
|
|
2708
|
+
</clipPath>
|
|
2709
|
+
</defs>
|
|
2710
|
+
</svg>
|
|
2711
|
+
`, Vt = `<svg width="25" height="12" viewBox="0 0 25 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2712
|
+
<rect width="25" height="11.5385" rx="2.88462" fill="#00579F"/>
|
|
2713
|
+
<g clip-path="url(#clip0_22788_48747)">
|
|
2714
|
+
<path d="M9.84078 8.57012H8.36084L9.2865 2.98535H10.7664L9.84078 8.57012Z" fill="white"/>
|
|
2715
|
+
<path d="M15.2055 3.12204C14.9136 3.00904 14.4506 2.88428 13.8781 2.88428C12.4166 2.88428 11.3875 3.64472 11.3812 4.73192C11.369 5.53405 12.118 5.97957 12.6782 6.24703C13.2508 6.52033 13.4454 6.69871 13.4454 6.94232C13.4396 7.31646 12.9827 7.48892 12.5567 7.48892C11.9658 7.48892 11.6492 7.40001 11.1681 7.19185L10.9732 7.10262L10.7661 8.35628C11.1132 8.51058 11.7527 8.64751 12.4166 8.65351C13.9695 8.65351 14.9805 7.90484 14.9924 6.74625C14.9983 6.1105 14.6028 5.62336 13.7502 5.22529C13.2326 4.96976 12.9156 4.79746 12.9156 4.536C12.9216 4.29832 13.1837 4.05486 13.768 4.05486C14.2491 4.04294 14.6026 4.15578 14.8704 4.2687L15.0042 4.32801L15.2055 3.12204Z" fill="white"/>
|
|
2716
|
+
<path d="M17.1724 6.59164C17.2943 6.2708 17.7633 5.02906 17.7633 5.02906C17.7571 5.04099 17.8849 4.7023 17.958 4.49439L18.0614 4.9756C18.0614 4.9756 18.3416 6.31241 18.4025 6.59164C18.1712 6.59164 17.4647 6.59164 17.1724 6.59164ZM18.9992 2.98535H17.8545C17.5014 2.98535 17.2333 3.08627 17.0809 3.44872L14.8827 8.57004H16.4355C16.4355 8.57004 16.6912 7.88075 16.7461 7.73229C16.9165 7.73229 18.4271 7.73229 18.6463 7.73229C18.6887 7.92837 18.8228 8.57004 18.8228 8.57004H20.1931L18.9992 2.98535Z" fill="white"/>
|
|
2717
|
+
<path d="M7.1249 2.98535L5.67556 6.79363L5.51718 6.02127C5.24923 5.13006 4.40887 4.16178 3.47107 3.68033L4.79862 8.5642H6.36361L8.68981 2.98535H7.1249Z" fill="white"/>
|
|
2718
|
+
<path d="M4.3295 2.98535H1.94843L1.92407 3.09819C3.78146 3.56164 5.01157 4.67877 5.51696 6.0215L4.99935 3.4548C4.91413 3.09811 4.65225 2.99712 4.3295 2.98535Z" fill="white"/>
|
|
2719
|
+
</g>
|
|
2720
|
+
<defs>
|
|
2721
|
+
<clipPath id="clip0_22788_48747">
|
|
2722
|
+
<rect width="18.2692" height="5.76923" fill="white" transform="translate(1.9231 2.88477)"/>
|
|
2723
|
+
</clipPath>
|
|
2724
|
+
</defs>
|
|
2725
|
+
</svg>
|
|
2726
|
+
`, Wt = `<svg width="36" height="22" viewBox="0 0 36 22" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
2727
|
+
<rect width="36" height="22" fill="url(#pattern0_23934_927)"/>
|
|
2728
|
+
<defs>
|
|
2729
|
+
<pattern id="pattern0_23934_927" patternContentUnits="objectBoundingBox" width="1" height="1">
|
|
2730
|
+
<use xlink:href="#image0_23934_927" transform="matrix(0.00101112 0 0 0.00157457 0 -0.00158229)"/>
|
|
2731
|
+
</pattern>
|
|
2732
|
+
<image id="image0_23934_927" width="989" height="768" preserveAspectRatio="none" xlink:href="data:image/png;base64,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"/>
|
|
2733
|
+
</defs>
|
|
2734
|
+
</svg>
|
|
2735
|
+
`, Yt = {
|
|
2736
|
+
kaspi_pay: qt,
|
|
2737
|
+
new_card: jt,
|
|
2738
|
+
apple_pay: zt,
|
|
2739
|
+
google_pay: Kt,
|
|
2740
|
+
visa: Vt,
|
|
2741
|
+
mastercard: Wt
|
|
2742
|
+
};
|
|
2743
|
+
function Gt(e) {
|
|
2744
|
+
const n = e == null ? void 0 : e.toLowerCase();
|
|
2745
|
+
return n && Yt[n] || "";
|
|
2746
|
+
}
|
|
2747
|
+
const it = `<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2748
|
+
<path d="M19.7045 10.7313C15.0567 10.7313 11.2687 6.94328 11.2687 2.26866C11.2687 2.10746 11.1612 2 11 2C10.8388 2 10.7313 2.10746 10.7313 2.26866C10.7313 6.94328 6.94328 10.7313 2.26866 10.7313C2.10746 10.7313 2 10.8388 2 11C2 11.1612 2.10746 11.2687 2.26866 11.2687C6.94328 11.2687 10.7313 15.0567 10.7313 19.7313C10.7313 19.8925 10.8388 20 11 20C11.1612 20 11.2687 19.8925 11.2687 19.7313C11.2687 15.0567 15.0567 11.2687 19.7313 11.2687C19.8925 11.2687 20 11.1612 20 11C20 10.8388 19.8657 10.7313 19.7045 10.7313Z" fill="#2F2F2F"/>
|
|
2749
|
+
</svg>
|
|
2750
|
+
`, Zt = '<svg class="choco-widget-method-item-trash" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.16663 5.83317H15.8333" stroke="#CC3434" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M15 5.8335V15.0002C15 15.921 14.2542 16.6668 13.3333 16.6668H6.66667C5.74583 16.6668 5 15.921 5 15.0002V5.8335" stroke="#CC3434" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M12.5 3.12516H7.5" stroke="#CC3434" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M8.33329 9.1665V13.3332" stroke="#CC3434" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M11.6667 9.1665V13.3332" stroke="#CC3434" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>', $t = '<svg class="choco-widget-method-item-check" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.3333 4.3335L5.99996 11.6668L2.66663 8.3335" stroke="#242424" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';
|
|
2751
|
+
function be(e) {
|
|
2752
|
+
return Gt(e == null ? void 0 : e.iconType);
|
|
2753
|
+
}
|
|
2754
|
+
function at(e, n, o, s = {}) {
|
|
2755
|
+
const { editMode: i = !1 } = s;
|
|
2756
|
+
return (i ? e.filter((c) => c.type === "card") : e).map((c) => {
|
|
2757
|
+
const d = !i && !!n && n.type === c.type && n.cardId === c.cardId, g = JSON.stringify(c).replace(/'/g, "'");
|
|
2758
|
+
return i ? `
|
|
2759
|
+
<div
|
|
2760
|
+
class="choco-widget-method-item choco-widget-method-item--edit"
|
|
2761
|
+
role="listitem"
|
|
2762
|
+
>
|
|
2763
|
+
<div class="choco-widget-method-item-icon-wrapper" aria-hidden="true">${be(c)}</div>
|
|
2764
|
+
<div class="choco-widget-method-item-label">${c.label}</div>
|
|
2765
|
+
<button
|
|
2766
|
+
type="button"
|
|
2767
|
+
class="choco-widget-method-item-trash-btn"
|
|
2768
|
+
data-action="delete-card"
|
|
2769
|
+
data-method='${g}'
|
|
2770
|
+
aria-label="${c.label} — Удалить"
|
|
2771
|
+
>
|
|
2772
|
+
${Zt}
|
|
2773
|
+
</button>
|
|
2774
|
+
</div>
|
|
2775
|
+
` : `
|
|
2776
|
+
<button
|
|
2777
|
+
class="choco-widget-method-item ${d ? "choco-widget-method-item--selected" : ""}"
|
|
2778
|
+
data-method='${g}'
|
|
2779
|
+
data-action="select-method"
|
|
2780
|
+
role="listitem"
|
|
2781
|
+
aria-label="${c.label}${d ? " (выбрано)" : ""}"
|
|
2782
|
+
type="button"
|
|
2783
|
+
>
|
|
2784
|
+
<div class="choco-widget-method-item-icon-wrapper ${c.type}" aria-hidden="true">${be(c)}</div>
|
|
2785
|
+
<div class="choco-widget-method-item-label">${c.label}</div>
|
|
2786
|
+
${d ? $t : ""}
|
|
2787
|
+
</button>
|
|
2788
|
+
`;
|
|
2789
|
+
}).join("");
|
|
2790
|
+
}
|
|
2791
|
+
function en(e, n, o, s) {
|
|
2792
|
+
if (!e) return "";
|
|
2793
|
+
const i = typeof e.amount == "number" && Number.isFinite(e.amount), u = typeof e.percent == "number" && Number.isFinite(e.percent);
|
|
2794
|
+
return `
|
|
2795
|
+
<div class="choco-widget-balance-toggle" data-action="toggle-bonuses">
|
|
2796
|
+
<div class="choco-widget-balance-info">
|
|
2797
|
+
<div class="choco-widget-balance-text">
|
|
2798
|
+
<div class="choco-widget-balance-label">${o("bonus")}</div>
|
|
2799
|
+
<div class="choco-widget-balance-sublabel">${o("bonusText", { amount: u ? e.percent : 0 })}</div>
|
|
2800
|
+
</div>
|
|
2801
|
+
</div>
|
|
2802
|
+
<div class="choco-widget-balance-label-wrapper">
|
|
2803
|
+
<div class="choco-widget-balance-icon">
|
|
2804
|
+
${it}
|
|
2805
|
+
</div>
|
|
2806
|
+
<div class="choco-widget-balance-amount">${i ? G(e.amount, "ru", s) : 0}</div>
|
|
2807
|
+
<label class="choco-widget-toggle">
|
|
2808
|
+
<input type="checkbox" ${n ? "checked" : ""} />
|
|
2809
|
+
<span class="choco-widget-toggle-slider"></span>
|
|
2810
|
+
</label>
|
|
2811
|
+
</div>
|
|
2812
|
+
</div>
|
|
2813
|
+
`;
|
|
2814
|
+
}
|
|
2815
|
+
function tn(e, n, o, s, i, u) {
|
|
2816
|
+
return !e && !o ? "" : `
|
|
2817
|
+
<div class="choco-widget-balance-section">
|
|
2818
|
+
${e ? `
|
|
2819
|
+
<div class="choco-widget-balance-toggle" data-action="toggle-balance">
|
|
2820
|
+
<div class="choco-widget-balance-info">
|
|
2821
|
+
<div class="choco-widget-balance-text">
|
|
2822
|
+
<div class="choco-widget-balance-label">${i("balance")}</div>
|
|
2823
|
+
</div>
|
|
2824
|
+
</div>
|
|
2825
|
+
<div class="choco-widget-balance-label-wrapper">
|
|
2826
|
+
<div class="choco-widget-balance-icon">
|
|
2827
|
+
${it}
|
|
2828
|
+
</div>
|
|
2829
|
+
<div class="choco-widget-balance-amount">${e}</div>
|
|
2830
|
+
<label class="choco-widget-toggle">
|
|
2831
|
+
<input type="checkbox" ${n ? "checked" : ""} />
|
|
2832
|
+
<span class="choco-widget-toggle-slider"></span>
|
|
2833
|
+
</label>
|
|
2834
|
+
</div>
|
|
2835
|
+
</div>
|
|
2836
|
+
` : ""}
|
|
2837
|
+
${en(o, s, i, u)}
|
|
2838
|
+
</div>
|
|
2839
|
+
`;
|
|
2840
|
+
}
|
|
2841
|
+
function nn(e, n) {
|
|
2842
|
+
return e ? `
|
|
2843
|
+
<div class="choco-widget-cashback-section">
|
|
2844
|
+
<div class="choco-widget-cashback-info">
|
|
2845
|
+
<span class="choco-widget-cashback-icon">🎁</span>
|
|
2846
|
+
<span class="choco-widget-cashback-text">
|
|
2847
|
+
${n("willGet")} <strong>${e}</strong> ${n("cashback").toLowerCase()}
|
|
2848
|
+
</span>
|
|
2849
|
+
</div>
|
|
2850
|
+
</div>
|
|
2851
|
+
` : "";
|
|
2852
|
+
}
|
|
2853
|
+
function rn(e) {
|
|
2854
|
+
const {
|
|
2855
|
+
amountFormatted: n,
|
|
2856
|
+
originalAmountFormatted: o,
|
|
2857
|
+
showOriginalAmount: s = !1,
|
|
2858
|
+
paymentMethod: i,
|
|
2859
|
+
methods: u,
|
|
2860
|
+
selectedMethod: c,
|
|
2861
|
+
balanceFormatted: d,
|
|
2862
|
+
useBalance: g,
|
|
2863
|
+
bonuses: C,
|
|
2864
|
+
useBonuses: S,
|
|
2865
|
+
cashbackFormatted: T,
|
|
2866
|
+
disabled: v,
|
|
2867
|
+
paymentMethodDisabled: Q = !1,
|
|
2868
|
+
loading: _,
|
|
2869
|
+
t: m,
|
|
2870
|
+
currency: P
|
|
2871
|
+
} = e, k = (i == null ? void 0 : i.label) ?? m("selectMethod"), w = be(i), L = at(u, c), O = tn(d, g, C, S, m, P), F = nn(T, m), M = (c == null ? void 0 : c.type) === "google_pay", J = (c == null ? void 0 : c.type) === "apple_pay", x = M || J;
|
|
2872
|
+
return `
|
|
2873
|
+
<div class="choco-widget-bottom-bar" role="region" aria-label="${m("paymentMethod")}">
|
|
2874
|
+
${O}
|
|
2875
|
+
<div class="choco-widget-payment-info">
|
|
2876
|
+
<div class="choco-widget-payment-info-main">
|
|
2877
|
+
<button
|
|
2878
|
+
class="choco-widget-payment-method ${(i == null ? void 0 : i.type) || ""}"
|
|
2879
|
+
data-action="change-method"
|
|
2880
|
+
aria-label="${m("paymentMethod")}: ${k}"
|
|
2881
|
+
type="button"
|
|
2882
|
+
${Q || v || _ ? "disabled" : ""}
|
|
2883
|
+
>
|
|
2884
|
+
<div class="choco-widget-method-label">${m("paymentMethod")}</div>
|
|
2885
|
+
<div class="choco-widget-method-value">
|
|
2886
|
+
<div class="choco-widget-method-icon-wrapper ${i == null ? void 0 : i.type}" aria-hidden="true">${w}</div>
|
|
2887
|
+
<div class="choco-widget-method-details">
|
|
2888
|
+
<div class="choco-widget-method-name ${i == null ? void 0 : i.type}">${k}</div>
|
|
2889
|
+
<div class="choco-widget-method-chevron">
|
|
2890
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2891
|
+
<path d="M8 10L12 14L16 10" stroke="#242424" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
2892
|
+
</svg>
|
|
2893
|
+
</div>
|
|
2894
|
+
</div>
|
|
2895
|
+
</div>
|
|
2896
|
+
</button>
|
|
2897
|
+
<div class="choco-widget-google-pay-amount ${x ? "" : "choco-widget-google-pay-amount--hidden"}" aria-live="polite">
|
|
2898
|
+
<div class="choco-widget-google-pay-amount-label">${m("total")} ${n}</div>
|
|
2899
|
+
${s ? `<div class="choco-widget-google-pay-amount-value">${m("instead")} <span class="choco-widget-google-pay-amount-value-number">${o || ""}</span></div>` : ""}
|
|
2900
|
+
</div>
|
|
2901
|
+
<button
|
|
2902
|
+
class="choco-widget-pay-button ${_ ? "choco-widget-pay-button--loading" : ""} ${x ? "choco-widget-pay-button--hidden" : ""}"
|
|
2903
|
+
data-action="pay"
|
|
2904
|
+
aria-label="${m("pay")} ${n}"
|
|
2905
|
+
type="button"
|
|
2906
|
+
${v || _ ? "disabled" : ""}
|
|
2907
|
+
>
|
|
2908
|
+
${m("pay")} ${n}
|
|
2909
|
+
</button>
|
|
2910
|
+
</div>
|
|
2911
|
+
<div class="choco-widget-google-pay-row ${M ? "" : "choco-widget-google-pay-row--hidden"}">
|
|
2912
|
+
<div class="choco-widget-google-pay-button-slot" data-action="google-pay-button-slot"></div>
|
|
2913
|
+
</div>
|
|
2914
|
+
<div class="choco-widget-apple-pay-row ${J ? "" : "choco-widget-apple-pay-row--hidden"}">
|
|
2915
|
+
<div class="choco-widget-apple-pay-button-slot" data-action="apple-pay-button-slot"></div>
|
|
2916
|
+
</div>
|
|
2917
|
+
</div>
|
|
2918
|
+
</div>
|
|
2919
|
+
|
|
2920
|
+
<div
|
|
2921
|
+
class="choco-widget-payment-sheet"
|
|
2922
|
+
data-sheet="payment"
|
|
2923
|
+
role="dialog"
|
|
2924
|
+
aria-modal="true"
|
|
2925
|
+
aria-labelledby="choco-sheet-title"
|
|
2926
|
+
>
|
|
2927
|
+
<div class="choco-widget-sheet-content">
|
|
2928
|
+
<div class="choco-widget-sheet-grabber" data-action="sheet-drag-handle" aria-hidden="true"></div>
|
|
2929
|
+
<div class="choco-widget-sheet-header">
|
|
2930
|
+
<button
|
|
2931
|
+
class="choco-widget-sheet-button"
|
|
2932
|
+
data-action="close-sheet"
|
|
2933
|
+
aria-label="Закрыть"
|
|
2934
|
+
type="button"
|
|
2935
|
+
>
|
|
2936
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
|
2937
|
+
<path d="M15 18L9 12L15 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
2938
|
+
</svg>
|
|
2939
|
+
</button>
|
|
2940
|
+
<h3 class="choco-widget-sheet-title" id="choco-sheet-title">${m("paymentMethods")}</h3>
|
|
2941
|
+
<button
|
|
2942
|
+
class="choco-widget-sheet-button choco-widget-sheet-button--edit"
|
|
2943
|
+
data-action="edit-sheet"
|
|
2944
|
+
aria-label="Редактировать"
|
|
2945
|
+
type="button"
|
|
2946
|
+
>
|
|
2947
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2948
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.293 15.619L15.619 5.29299C16.009 4.90299 16.642 4.90299 17.032 5.29299L18.708 6.96899C19.098 7.35899 19.098 7.99199 18.708 8.38199L8.381 18.707C8.194 18.895 7.94 19 7.675 19H5V16.325C5 16.06 5.105 15.806 5.293 15.619Z" stroke="#242424" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
2949
|
+
<path d="M13.75 7.16016L16.84 10.2502" stroke="#242424" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
2950
|
+
</svg>
|
|
2951
|
+
</button>
|
|
2952
|
+
<button
|
|
2953
|
+
class="choco-widget-sheet-button choco-widget-sheet-button--previous"
|
|
2954
|
+
data-action="previous-sheet"
|
|
2955
|
+
aria-label="${m("back")}"
|
|
2956
|
+
type="button"
|
|
2957
|
+
style="display: none;"
|
|
2958
|
+
>
|
|
2959
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2960
|
+
<rect width="24" height="24" fill="white"/>
|
|
2961
|
+
<path d="M19.347 5.84683L18.153 4.65283L12 10.8058L5.84695 4.65283L4.65295 5.84683L10.806 11.9998L4.65295 18.1528L5.84695 19.3468L12 13.1938L18.153 19.3468L19.347 18.1528L13.194 11.9998L19.347 5.84683Z" fill="black"/>
|
|
2962
|
+
</svg>
|
|
2963
|
+
</button>
|
|
2964
|
+
</div>
|
|
2965
|
+
<div class="choco-widget-payment-methods" role="list">
|
|
2966
|
+
${L}
|
|
2967
|
+
</div>
|
|
2968
|
+
<div class="choco-widget-sheet-delete-confirm" data-delete-confirm="content" aria-hidden="true">
|
|
2969
|
+
<div class="choco-widget-sheet-delete-confirm-actions">
|
|
2970
|
+
<button type="button" class="choco-widget-delete-confirm-btn choco-widget-delete-confirm-btn--cancel" data-action="confirm-delete-cancel">${m("cancel")}</button>
|
|
2971
|
+
<button type="button" class="choco-widget-delete-confirm-btn choco-widget-delete-confirm-btn--delete" data-action="confirm-delete-submit">${m("delete")}</button>
|
|
2972
|
+
</div>
|
|
2973
|
+
</div>
|
|
2974
|
+
${F}
|
|
2975
|
+
</div>
|
|
2976
|
+
</div>
|
|
2977
|
+
|
|
2978
|
+
<div class="choco-widget-add-card-sheet choco-widget-payment-sheet" data-sheet="add-card" aria-hidden="true" style="display: none;">
|
|
2979
|
+
<div class="choco-widget-sheet-content choco-widget-add-card-sheet-content">
|
|
2980
|
+
<div class="choco-widget-sheet-header">
|
|
2981
|
+
<h3 class="choco-widget-sheet-title">${m("addCard")}</h3>
|
|
2982
|
+
</div>
|
|
2983
|
+
<div class="choco-widget-add-card-iframe-wrapper">
|
|
2984
|
+
<iframe id="choco-widget-add-card-iframe" class="choco-widget-add-card-iframe" title="${m("addCard")}" sandbox="allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts"></iframe>
|
|
2985
|
+
</div>
|
|
2986
|
+
</div>
|
|
2987
|
+
</div>
|
|
2988
|
+
`;
|
|
2989
|
+
}
|
|
2990
|
+
function on() {
|
|
2991
|
+
return `
|
|
2992
|
+
<div class="choco-widget-bottom-bar-prerender">
|
|
2993
|
+
<div class="choco-widget-payment-loading"></div>
|
|
2994
|
+
</div>
|
|
2995
|
+
`;
|
|
2996
|
+
}
|
|
2997
|
+
function sn(e, n, o, s = {}) {
|
|
2998
|
+
return at(e, n, o, s);
|
|
2999
|
+
}
|
|
3000
|
+
function an(e) {
|
|
3001
|
+
return be(e);
|
|
3002
|
+
}
|
|
3003
|
+
function cn(e) {
|
|
3004
|
+
if (typeof document > "u") return { mountTarget: null, isEmbedded: !1 };
|
|
3005
|
+
const n = e.config.containerSelector;
|
|
3006
|
+
if (n) {
|
|
3007
|
+
const o = document.querySelector(n);
|
|
3008
|
+
if (o instanceof HTMLElement) return { mountTarget: o, isEmbedded: !0 };
|
|
3009
|
+
}
|
|
3010
|
+
return { mountTarget: document.body, isEmbedded: !1 };
|
|
3011
|
+
}
|
|
3012
|
+
function ct(e) {
|
|
3013
|
+
if (typeof document > "u") return !1;
|
|
3014
|
+
e.container || (e.container = document.createElement("div"), e.container.id = "choco-one-click-widget", e.container.className = "choco-one-click-widget");
|
|
3015
|
+
const { mountTarget: n, isEmbedded: o } = cn(e);
|
|
3016
|
+
return n ? (e.container.parentElement !== n && n.appendChild(e.container), e.container.classList.toggle("choco-one-click-widget--embedded", o), !0) : !1;
|
|
3017
|
+
}
|
|
3018
|
+
function An(e) {
|
|
3019
|
+
ct(e) && (e.container.style.setProperty("--choco-widget-accent-color", e.config.color), e.container.innerHTML = on());
|
|
3020
|
+
}
|
|
3021
|
+
function un(e) {
|
|
3022
|
+
var S, T, v, Q, _;
|
|
3023
|
+
if (!ct(e)) return;
|
|
3024
|
+
e.container.style.setProperty("--choco-widget-accent-color", e.config.color), e.container.classList.remove("choco-one-click-widget--visible");
|
|
3025
|
+
const n = e.getAvailablePaymentMethods(), o = (S = e.checkoutContext) == null ? void 0 : S.data, s = e.config.currency || "KZT", i = (Q = (v = (T = o == null ? void 0 : o.balance) == null ? void 0 : T.data) == null ? void 0 : v.money) == null ? void 0 : Q[s], u = i > 0 ? G(i, e.config.locale, e.config.currency) : null, c = (_ = o == null ? void 0 : o.cashback) == null ? void 0 : _.data, d = (c == null ? void 0 : c.cashbackAmount) > 0 ? G(c.cashbackAmount, e.config.locale, e.config.currency) : null, g = e._getPayableAmount(), C = g < e.config.amount;
|
|
3026
|
+
e.container.innerHTML = rn({
|
|
3027
|
+
amountFormatted: G(g, e.config.locale, e.config.currency),
|
|
3028
|
+
originalAmountFormatted: G(
|
|
3029
|
+
e.config.amount,
|
|
3030
|
+
e.config.locale,
|
|
3031
|
+
e.config.currency
|
|
3032
|
+
),
|
|
3033
|
+
showOriginalAmount: C,
|
|
3034
|
+
paymentMethod: e.selectedPaymentMethod,
|
|
3035
|
+
methods: n,
|
|
3036
|
+
selectedMethod: e.selectedPaymentMethod,
|
|
3037
|
+
balanceFormatted: u,
|
|
3038
|
+
useBalance: e.useBalance,
|
|
3039
|
+
bonuses: e.config.bonuses,
|
|
3040
|
+
useBonuses: e.useBonuses,
|
|
3041
|
+
cashbackFormatted: d,
|
|
3042
|
+
disabled: e.disabled,
|
|
3043
|
+
paymentMethodDisabled: e.paymentMethodDisabled,
|
|
3044
|
+
loading: e.loading,
|
|
3045
|
+
t: (m, P) => e.t(m, P),
|
|
3046
|
+
currency: s
|
|
3047
|
+
}), e._attachEventListeners(), e.isOpen = !0, e._emitUserEvent("one_click_pay_cta_rendered", {
|
|
3048
|
+
terminal_id: e.config.terminalId,
|
|
3049
|
+
project_id: e.config.clientId
|
|
3050
|
+
}), e._emitUserEvent("one_click_pay_method_resolved", {
|
|
3051
|
+
payment_method: e._getPaymentMethodForUserEvent()
|
|
3052
|
+
}), requestAnimationFrame(() => {
|
|
3053
|
+
requestAnimationFrame(() => {
|
|
3054
|
+
var m;
|
|
3055
|
+
(m = e.container) == null || m.classList.add("choco-one-click-widget--visible");
|
|
3056
|
+
});
|
|
3057
|
+
});
|
|
3058
|
+
}
|
|
3059
|
+
function ae(e) {
|
|
3060
|
+
var s;
|
|
3061
|
+
const n = (s = e.container) == null ? void 0 : s.querySelector(
|
|
3062
|
+
".choco-widget-payment-methods"
|
|
3063
|
+
);
|
|
3064
|
+
if (!n) return;
|
|
3065
|
+
const o = e.getAvailablePaymentMethods();
|
|
3066
|
+
n.innerHTML = sn(
|
|
3067
|
+
o,
|
|
3068
|
+
e.selectedPaymentMethod,
|
|
3069
|
+
(i) => e.t(i),
|
|
3070
|
+
{ editMode: e.isPaymentSheetEditMode }
|
|
3071
|
+
), n.querySelectorAll("[data-action='delete-card']").forEach((i) => {
|
|
3072
|
+
i.addEventListener("click", (u) => {
|
|
3073
|
+
u.stopPropagation();
|
|
3074
|
+
const c = JSON.parse(i.getAttribute("data-method") || "{}");
|
|
3075
|
+
gn(e, c);
|
|
3076
|
+
});
|
|
3077
|
+
}), n.querySelectorAll("[data-action='select-method']").forEach((i) => {
|
|
3078
|
+
i.addEventListener("click", (u) => {
|
|
3079
|
+
const c = JSON.parse(
|
|
3080
|
+
u.currentTarget.getAttribute("data-method") || "{}"
|
|
3081
|
+
);
|
|
3082
|
+
dt(e, c);
|
|
3083
|
+
});
|
|
3084
|
+
});
|
|
3085
|
+
}
|
|
3086
|
+
function At(e) {
|
|
3087
|
+
var i, u, c;
|
|
3088
|
+
const n = (i = e.container) == null ? void 0 : i.querySelector(".choco-widget-payment-method"), o = (u = e.container) == null ? void 0 : u.querySelector(".choco-widget-method-name"), s = (c = e.container) == null ? void 0 : c.querySelector(
|
|
3089
|
+
".choco-widget-method-icon-wrapper"
|
|
3090
|
+
);
|
|
3091
|
+
n && e.selectedPaymentMethod && (n.className = `choco-widget-payment-method ${e.selectedPaymentMethod.type}`), o && e.selectedPaymentMethod && (o.className = `choco-widget-method-name ${e.selectedPaymentMethod.type}`, o.textContent = e.selectedPaymentMethod.label), s && e.selectedPaymentMethod && (s.className = `choco-widget-method-icon-wrapper ${e.selectedPaymentMethod.type}`, s.innerHTML = an(e.selectedPaymentMethod)), ut(e);
|
|
3092
|
+
}
|
|
3093
|
+
function ge(e) {
|
|
3094
|
+
var S, T, v, Q, _;
|
|
3095
|
+
const n = (S = e.container) == null ? void 0 : S.querySelector(".choco-widget-pay-button"), o = (T = e.container) == null ? void 0 : T.querySelector(
|
|
3096
|
+
".choco-widget-google-pay-amount"
|
|
3097
|
+
), s = (v = e.container) == null ? void 0 : v.querySelector(
|
|
3098
|
+
".choco-widget-google-pay-amount-label"
|
|
3099
|
+
);
|
|
3100
|
+
let i = (Q = e.container) == null ? void 0 : Q.querySelector(
|
|
3101
|
+
".choco-widget-google-pay-amount-value"
|
|
3102
|
+
), u = (_ = e.container) == null ? void 0 : _.querySelector(
|
|
3103
|
+
".choco-widget-google-pay-amount-value-number"
|
|
3104
|
+
);
|
|
3105
|
+
const c = e._getPayableAmount(), d = G(c, e.config.locale, e.config.currency), g = c < e.config.amount, C = G(
|
|
3106
|
+
e.config.amount,
|
|
3107
|
+
e.config.locale,
|
|
3108
|
+
e.config.currency
|
|
3109
|
+
);
|
|
3110
|
+
if (n && (n.textContent = `${e.t("pay")} ${d}`, n.setAttribute("aria-label", `${e.t("pay")} ${d}`)), s && (s.textContent = `${e.t("total")} ${d}`), !g) {
|
|
3111
|
+
i == null || i.remove();
|
|
3112
|
+
return;
|
|
3113
|
+
}
|
|
3114
|
+
!i && o && (i = document.createElement("div"), i.className = "choco-widget-google-pay-amount-value", i.innerHTML = `${e.t("instead")} <span class="choco-widget-google-pay-amount-value-number"></span>`, o.appendChild(i), u = i.querySelector(
|
|
3115
|
+
".choco-widget-google-pay-amount-value-number"
|
|
3116
|
+
)), u ? u.textContent = C : i && (i.textContent = `${e.t("instead")} ${C}`);
|
|
3117
|
+
}
|
|
3118
|
+
function ut(e) {
|
|
3119
|
+
var g, C, S, T, v, Q, _, m, P, k;
|
|
3120
|
+
const n = ((g = e.selectedPaymentMethod) == null ? void 0 : g.type) === "google_pay", o = ((C = e.selectedPaymentMethod) == null ? void 0 : C.type) === "apple_pay", s = n || o, i = (S = e.container) == null ? void 0 : S.querySelector(".choco-widget-pay-button"), u = (T = e.container) == null ? void 0 : T.querySelector(
|
|
3121
|
+
".choco-widget-google-pay-amount"
|
|
3122
|
+
), c = (v = e.container) == null ? void 0 : v.querySelector(".choco-widget-google-pay-row"), d = (Q = e.container) == null ? void 0 : Q.querySelector(".choco-widget-apple-pay-row");
|
|
3123
|
+
if (i == null || i.classList.toggle("choco-widget-pay-button--hidden", s), u == null || u.classList.toggle(
|
|
3124
|
+
"choco-widget-google-pay-amount--hidden",
|
|
3125
|
+
!s
|
|
3126
|
+
), c == null || c.classList.toggle("choco-widget-google-pay-row--hidden", !n), d == null || d.classList.toggle("choco-widget-apple-pay-row--hidden", !o), n) {
|
|
3127
|
+
ln(e);
|
|
3128
|
+
const w = (_ = e.container) == null ? void 0 : _.querySelector(
|
|
3129
|
+
'[data-action="apple-pay-button-slot"]'
|
|
3130
|
+
);
|
|
3131
|
+
w && (w.innerHTML = "");
|
|
3132
|
+
} else if (o) {
|
|
3133
|
+
e._googlePayButtonRenderVersion += 1;
|
|
3134
|
+
const w = (m = e.container) == null ? void 0 : m.querySelector(
|
|
3135
|
+
'[data-action="google-pay-button-slot"]'
|
|
3136
|
+
);
|
|
3137
|
+
w && (w.innerHTML = ""), dn(e);
|
|
3138
|
+
} else {
|
|
3139
|
+
e._googlePayButtonRenderVersion += 1;
|
|
3140
|
+
const w = (P = e.container) == null ? void 0 : P.querySelector(
|
|
3141
|
+
'[data-action="google-pay-button-slot"]'
|
|
3142
|
+
), L = (k = e.container) == null ? void 0 : k.querySelector(
|
|
3143
|
+
'[data-action="apple-pay-button-slot"]'
|
|
3144
|
+
);
|
|
3145
|
+
w && (w.innerHTML = ""), L && (L.innerHTML = "");
|
|
3146
|
+
}
|
|
3147
|
+
ge(e), ee(e);
|
|
3148
|
+
}
|
|
3149
|
+
async function ln(e) {
|
|
3150
|
+
var c, d, g, C, S;
|
|
3151
|
+
const n = (c = e.container) == null ? void 0 : c.querySelector(
|
|
3152
|
+
'[data-action="google-pay-button-slot"]'
|
|
3153
|
+
);
|
|
3154
|
+
if (!n || (n.innerHTML = "", ((d = e.selectedPaymentMethod) == null ? void 0 : d.type) !== "google_pay")) return;
|
|
3155
|
+
const o = ++e._googlePayButtonRenderVersion;
|
|
3156
|
+
try {
|
|
3157
|
+
await e._loadGooglePaySdk();
|
|
3158
|
+
} catch {
|
|
3159
|
+
e.config.onError({ attributes: { message: e.t("errorGooglePayUnsupported") } });
|
|
3160
|
+
return;
|
|
3161
|
+
}
|
|
3162
|
+
if (o !== e._googlePayButtonRenderVersion) return;
|
|
3163
|
+
if (!((S = (C = (g = window.google) == null ? void 0 : g.payments) == null ? void 0 : C.api) != null && S.PaymentsClient)) {
|
|
3164
|
+
e.config.onError({ attributes: { message: e.t("errorGooglePayUnsupported") } });
|
|
3165
|
+
return;
|
|
3166
|
+
}
|
|
3167
|
+
const s = e.config.environment === "production", u = new window.google.payments.api.PaymentsClient({
|
|
3168
|
+
environment: s ? "PRODUCTION" : "TEST"
|
|
3169
|
+
}).createButton({
|
|
3170
|
+
onClick: () => e.handlePayment(),
|
|
3171
|
+
buttonType: "pay",
|
|
3172
|
+
buttonColor: "black",
|
|
3173
|
+
buttonLocale: e.config.locale || "ru",
|
|
3174
|
+
buttonSizeMode: "fill"
|
|
3175
|
+
});
|
|
3176
|
+
u.classList.add("choco-widget-google-pay-button"), u.style.setProperty("width", "100%", "important"), u.style.setProperty("height", "52px", "important"), u.style.setProperty("min-height", "52px", "important"), u.style.setProperty("border-radius", "12px", "important"), u.style.setProperty("font-size", "16px", "important"), u.style.setProperty("font-weight", "bold", "important"), u.querySelectorAll("*").forEach((T) => {
|
|
3177
|
+
T.style.setProperty("border-radius", "12px", "important"), T.style.setProperty("font-weight", "bold", "important"), T.style.setProperty("font-size", "16px", "important");
|
|
3178
|
+
}), n.appendChild(u), ee(e);
|
|
3179
|
+
}
|
|
3180
|
+
function dn(e) {
|
|
3181
|
+
var u, c;
|
|
3182
|
+
const n = (u = e.container) == null ? void 0 : u.querySelector(
|
|
3183
|
+
'[data-action="apple-pay-button-slot"]'
|
|
3184
|
+
);
|
|
3185
|
+
if (!n || (n.innerHTML = "", ((c = e.selectedPaymentMethod) == null ? void 0 : c.type) !== "apple_pay")) return;
|
|
3186
|
+
const o = document.createElement("div");
|
|
3187
|
+
o.className = "choco-widget-apple-pay-button-wrapper";
|
|
3188
|
+
const s = document.createElement("button");
|
|
3189
|
+
s.type = "button", s.className = "choco-widget-apple-pay-button choco-widget-apple-pay-button--native", s.setAttribute("aria-label", "Оплатить с Apple Pay"), s.style.setProperty("width", "100%", "important"), s.style.setProperty("height", "52px", "important"), s.style.setProperty("min-height", "52px", "important"), s.style.setProperty("border-radius", "12px", "important"), s.style.setProperty("-webkit-appearance", "-apple-pay-button"), s.style.setProperty("-apple-pay-button-type", "buy"), s.style.setProperty("-apple-pay-button-style", "black"), s.addEventListener("click", () => e.handlePayment());
|
|
3190
|
+
const i = document.createElement("div");
|
|
3191
|
+
i.className = "choco-widget-apple-pay-button-overlay", i.setAttribute("aria-hidden", "true"), i.innerHTML = `
|
|
3192
|
+
<span class="choco-widget-apple-pay-button-text">Оплатить с</span>
|
|
3193
|
+
<span class="choco-widget-apple-pay-button-icon">
|
|
3194
|
+
<svg width="52" height="24" viewBox="0 0 52 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3195
|
+
<g clip-path="url(#clip0_24186_23757)">
|
|
3196
|
+
<path d="M9.50624 4.07852C8.89687 4.79961 7.92187 5.36836 6.94687 5.28711C6.82499 4.31211 7.30234 3.27617 7.86093 2.63633C8.47031 1.89492 9.53671 1.3668 10.4 1.32617C10.5016 2.3418 10.1055 3.33711 9.50624 4.07852ZM10.3898 5.48008C8.97812 5.39883 7.76953 6.28242 7.09921 6.28242C6.41874 6.28242 5.39296 5.5207 4.27577 5.54102C2.82343 5.56133 1.47265 6.38398 0.731244 7.69414C-0.792194 10.3145 0.33515 14.1941 1.80781 16.327C2.5289 17.3832 3.39218 18.541 4.52968 18.5004C5.60624 18.4598 6.03281 17.7996 7.33281 17.7996C8.64296 17.7996 9.01874 18.5004 10.1562 18.4801C11.3344 18.4598 12.0758 17.4238 12.7969 16.3676C13.6195 15.1691 13.9547 14.0012 13.975 13.9402C13.9547 13.9199 11.7 13.0566 11.6797 10.4566C11.6594 8.2832 13.457 7.24727 13.5383 7.18633C12.5227 5.6832 10.9383 5.5207 10.3898 5.48008ZM18.5453 2.53477V18.3684H21.0031V12.9551H24.4055C27.5133 12.9551 29.6969 10.8223 29.6969 7.73477C29.6969 4.64727 27.5539 2.53477 24.4867 2.53477H18.5453ZM21.0031 4.60664H23.8367C25.9695 4.60664 27.1883 5.74414 27.1883 7.74492C27.1883 9.7457 25.9695 10.8934 23.8266 10.8934H21.0031V4.60664ZM34.1859 18.4902C35.7297 18.4902 37.1617 17.7082 37.8117 16.4691H37.8625V18.3684H40.1375V10.4871C40.1375 8.20195 38.3094 6.7293 35.4961 6.7293C32.8859 6.7293 30.9562 8.22226 30.8852 10.2738H33.0992C33.282 9.29883 34.1859 8.65898 35.425 8.65898C36.9281 8.65898 37.7711 9.35977 37.7711 10.6496V11.523L34.7039 11.7059C31.85 11.8785 30.3062 13.0465 30.3062 15.0777C30.3062 17.1293 31.9008 18.4902 34.1859 18.4902ZM34.8461 16.6113C33.5359 16.6113 32.7031 15.9816 32.7031 15.0168C32.7031 14.0215 33.5055 13.4426 35.0391 13.3512L37.7711 13.1785V14.0723C37.7711 15.5551 36.5117 16.6113 34.8461 16.6113ZM43.1742 22.6746C45.5711 22.6746 46.6984 21.7605 47.6836 18.9879L52 6.88164H49.5016L46.607 16.2355H46.5562L43.6617 6.88164H41.0922L45.2562 18.409L45.0328 19.1098C44.657 20.298 44.0476 20.7551 42.9609 20.7551C42.768 20.7551 42.3922 20.7348 42.2398 20.7145V22.6137C42.382 22.6543 42.9914 22.6746 43.1742 22.6746Z" fill="white"/>
|
|
3197
|
+
</g>
|
|
3198
|
+
<defs>
|
|
3199
|
+
<clipPath id="clip0_24186_23757">
|
|
3200
|
+
<rect width="52" height="21.3484" fill="white" transform="translate(0 1.32617)"/>
|
|
3201
|
+
</clipPath>
|
|
3202
|
+
</defs>
|
|
3203
|
+
</svg>
|
|
3204
|
+
</span>
|
|
3205
|
+
`, o.appendChild(s), o.appendChild(i), n.appendChild(o), ee(e);
|
|
3206
|
+
}
|
|
3207
|
+
function se(e) {
|
|
3208
|
+
e.loading = !0, ee(e);
|
|
3209
|
+
}
|
|
3210
|
+
function j(e) {
|
|
3211
|
+
var T, v, Q, _, m, P, k, w;
|
|
3212
|
+
e.loading = !1;
|
|
3213
|
+
const n = (T = e.container) == null ? void 0 : T.querySelector(".choco-widget-payment-method"), o = (v = e.container) == null ? void 0 : v.querySelector(".choco-widget-pay-button"), s = (Q = e.container) == null ? void 0 : Q.querySelector(
|
|
3214
|
+
".choco-widget-google-pay-button-slot button"
|
|
3215
|
+
), i = (_ = e.container) == null ? void 0 : _.querySelector(
|
|
3216
|
+
".choco-widget-apple-pay-button-slot button"
|
|
3217
|
+
), u = (m = e.container) == null ? void 0 : m.querySelector(
|
|
3218
|
+
".choco-widget-google-pay-amount"
|
|
3219
|
+
), c = (P = e.container) == null ? void 0 : P.querySelector(".choco-widget-google-pay-row"), d = (k = e.container) == null ? void 0 : k.querySelector(".choco-widget-apple-pay-row"), g = (w = e.container) == null ? void 0 : w.querySelector(
|
|
3220
|
+
".choco-widget-balance-section"
|
|
3221
|
+
), C = e._isInteractionBlocked(), S = e.paymentMethodDisabled || C;
|
|
3222
|
+
n && (n.disabled = S), o && (o.disabled = C, o.classList.remove("choco-widget-pay-button--loading")), s && (s.disabled = C), i && (i.disabled = C), u == null || u.classList.toggle("choco-widget-wallet-blocked", C), u == null || u.setAttribute("aria-disabled", String(C)), c == null || c.classList.toggle("choco-widget-wallet-blocked", C), c == null || c.setAttribute("aria-disabled", String(C)), d == null || d.classList.toggle("choco-widget-wallet-blocked", C), d == null || d.setAttribute("aria-disabled", String(C)), g == null || g.classList.remove("disabled");
|
|
3223
|
+
}
|
|
3224
|
+
function ee(e) {
|
|
3225
|
+
var T, v, Q, _, m, P, k, w;
|
|
3226
|
+
const n = (T = e.container) == null ? void 0 : T.querySelector(".choco-widget-payment-method"), o = (v = e.container) == null ? void 0 : v.querySelector(".choco-widget-pay-button"), s = (Q = e.container) == null ? void 0 : Q.querySelector(
|
|
3227
|
+
".choco-widget-google-pay-button-slot button"
|
|
3228
|
+
), i = (_ = e.container) == null ? void 0 : _.querySelector(
|
|
3229
|
+
".choco-widget-apple-pay-button-slot button"
|
|
3230
|
+
), u = (m = e.container) == null ? void 0 : m.querySelector(
|
|
3231
|
+
".choco-widget-google-pay-amount"
|
|
3232
|
+
), c = (P = e.container) == null ? void 0 : P.querySelector(".choco-widget-google-pay-row"), d = (k = e.container) == null ? void 0 : k.querySelector(".choco-widget-apple-pay-row"), g = (w = e.container) == null ? void 0 : w.querySelector(
|
|
3233
|
+
".choco-widget-balance-section"
|
|
3234
|
+
), C = e._isInteractionBlocked(), S = e.paymentMethodDisabled || C;
|
|
3235
|
+
g == null || g.classList.toggle("disabled", C), n && (n.disabled = S), o && (o.disabled = C, o.classList.toggle("choco-widget-pay-button--loading", e.loading)), s && (s.disabled = C), i && (i.disabled = C), u == null || u.classList.toggle("choco-widget-wallet-blocked", C), u == null || u.setAttribute("aria-disabled", String(C)), c == null || c.classList.toggle("choco-widget-wallet-blocked", C), c == null || c.setAttribute("aria-disabled", String(C)), d == null || d.classList.toggle("choco-widget-wallet-blocked", C), d == null || d.setAttribute("aria-disabled", String(C));
|
|
3236
|
+
}
|
|
3237
|
+
function lt(e) {
|
|
3238
|
+
var o;
|
|
3239
|
+
if (e._isInteractionBlocked()) return;
|
|
3240
|
+
const n = (o = e.container) == null ? void 0 : o.querySelector('[data-sheet="payment"]');
|
|
3241
|
+
n && (n.classList.add("choco-widget-payment-sheet--open"), e.isPaymentSheetOpen = !0, ce(e));
|
|
3242
|
+
}
|
|
3243
|
+
function W(e) {
|
|
3244
|
+
var o;
|
|
3245
|
+
const n = (o = e.container) == null ? void 0 : o.querySelector('[data-sheet="payment"]');
|
|
3246
|
+
if (n) {
|
|
3247
|
+
Ee(e);
|
|
3248
|
+
const s = n.querySelector(".choco-widget-sheet-content");
|
|
3249
|
+
s && (s.style.transform = "", s.classList.remove("choco-widget-sheet-content--dragging")), n.classList.remove("choco-widget-payment-sheet--open"), e.isPaymentSheetOpen = !1, e.isPaymentSheetEditMode && (e.isPaymentSheetEditMode = !1, ae(e), ce(e));
|
|
3250
|
+
}
|
|
3251
|
+
}
|
|
3252
|
+
function ce(e) {
|
|
3253
|
+
var g;
|
|
3254
|
+
const n = (g = e.container) == null ? void 0 : g.querySelector('[data-sheet="payment"]');
|
|
3255
|
+
if (!n) return;
|
|
3256
|
+
const o = n.querySelector(".choco-widget-sheet-title"), s = n.querySelector('[data-action="close-sheet"]'), i = n.querySelector('[data-action="edit-sheet"]'), u = n.querySelector('[data-action="previous-sheet"]'), d = e.getAvailablePaymentMethods().some((C) => C.type === "card");
|
|
3257
|
+
e.isPaymentSheetEditMode ? (n.classList.add("choco-widget-payment-sheet--edit"), o && (o.textContent = e.t("editCards")), s && (s.style.display = "none"), i && (i.style.display = "none"), u && (u.style.display = "")) : (n.classList.remove("choco-widget-payment-sheet--edit"), n.classList.toggle("choco-widget-payment-sheet--no-cards", !d), o && (o.textContent = e.t("paymentMethods")), s && (s.style.display = ""), i && (i.style.display = d ? "" : "none"), u && (u.style.display = "none"));
|
|
3258
|
+
}
|
|
3259
|
+
function Ze(e) {
|
|
3260
|
+
if (!e.addCardActionUrl || !e.container) return;
|
|
3261
|
+
const n = e.container.querySelector('[data-sheet="add-card"]'), o = e.container.querySelector(
|
|
3262
|
+
"#choco-widget-add-card-iframe"
|
|
3263
|
+
);
|
|
3264
|
+
n && o && (o.src = e.addCardActionUrl, n.classList.add("choco-widget-payment-sheet--open"), n.style.display = "flex", n.setAttribute("aria-hidden", "false"), e.isAddCardViewOpen = !0, hn(e));
|
|
3265
|
+
}
|
|
3266
|
+
function ie(e) {
|
|
3267
|
+
var s, i;
|
|
3268
|
+
const n = (s = e.container) == null ? void 0 : s.querySelector('[data-sheet="add-card"]'), o = (i = e.container) == null ? void 0 : i.querySelector(
|
|
3269
|
+
"#choco-widget-add-card-iframe"
|
|
3270
|
+
);
|
|
3271
|
+
n && (n.classList.remove("choco-widget-payment-sheet--open"), n.style.display = "none", n.setAttribute("aria-hidden", "true")), o && (o.src = "about:blank"), e.addCardActionUrl = null, e.isAddCardViewOpen = !1, fn(e);
|
|
3272
|
+
}
|
|
3273
|
+
function hn(e) {
|
|
3274
|
+
e._boundAddCardMessage = (n) => {
|
|
3275
|
+
var o;
|
|
3276
|
+
e.isAddCardViewOpen && (o = n.data) != null && o.message && n.origin === "https://rahmetapp.kz" && se(e);
|
|
3277
|
+
}, window.addEventListener("message", e._boundAddCardMessage);
|
|
3278
|
+
}
|
|
3279
|
+
function fn(e) {
|
|
3280
|
+
e._boundAddCardMessage && (window.removeEventListener("message", e._boundAddCardMessage), e._boundAddCardMessage = null);
|
|
3281
|
+
}
|
|
3282
|
+
function gn(e, n) {
|
|
3283
|
+
var c;
|
|
3284
|
+
e._pendingDeleteMethod = n;
|
|
3285
|
+
const o = (c = e.container) == null ? void 0 : c.querySelector('[data-sheet="payment"]');
|
|
3286
|
+
if (!o) return;
|
|
3287
|
+
o.classList.add("choco-widget-payment-sheet--delete-confirm");
|
|
3288
|
+
const s = o.querySelector(".choco-widget-sheet-title"), i = o.querySelector('[data-action="edit-sheet"]'), u = o.querySelector('[data-action="previous-sheet"]');
|
|
3289
|
+
s && (s.textContent = e.t("confirmDeleteCard")), i && (i.style.display = "none"), u && (u.style.display = "none");
|
|
3290
|
+
}
|
|
3291
|
+
function Ee(e) {
|
|
3292
|
+
var o;
|
|
3293
|
+
e._pendingDeleteMethod = null, Me(e, !1);
|
|
3294
|
+
const n = (o = e.container) == null ? void 0 : o.querySelector('[data-sheet="payment"]');
|
|
3295
|
+
n == null || n.classList.remove("choco-widget-payment-sheet--delete-confirm"), ce(e);
|
|
3296
|
+
}
|
|
3297
|
+
function Me(e, n) {
|
|
3298
|
+
var u, c, d;
|
|
3299
|
+
const o = (u = e.container) == null ? void 0 : u.querySelector(
|
|
3300
|
+
".choco-widget-sheet-delete-confirm-actions"
|
|
3301
|
+
), s = (c = e.container) == null ? void 0 : c.querySelector(
|
|
3302
|
+
'[data-action="confirm-delete-cancel"]'
|
|
3303
|
+
), i = (d = e.container) == null ? void 0 : d.querySelector(
|
|
3304
|
+
'[data-action="confirm-delete-submit"]'
|
|
3305
|
+
);
|
|
3306
|
+
o == null || o.classList.toggle("choco-widget-sheet-delete-confirm-actions--loading", n), s && (s.disabled = n), i && (i.disabled = n, i.classList.toggle("choco-widget-delete-confirm-btn--loading", n));
|
|
3307
|
+
}
|
|
3308
|
+
async function pn(e, n) {
|
|
3309
|
+
var s, i;
|
|
3310
|
+
const o = n == null ? void 0 : n.cardId;
|
|
3311
|
+
if (!(!o || (n == null ? void 0 : n.type) !== "card"))
|
|
3312
|
+
try {
|
|
3313
|
+
await Mt(e.apiUrl, e._getApiConfig(), o), e.checkoutContext = await Re(
|
|
3314
|
+
e.apiUrl,
|
|
3315
|
+
e._getApiConfig()
|
|
3316
|
+
), ((s = e.selectedPaymentMethod) == null ? void 0 : s.type) === "card" && ((i = e.selectedPaymentMethod) == null ? void 0 : i.cardId) === o && (e.selectedPaymentMethod = Te(
|
|
3317
|
+
e.checkoutContext.data,
|
|
3318
|
+
e._getKaspiOptions()
|
|
3319
|
+
), e._emitPaymentMethodSelected(), At(e)), ae(e), e.config.onSuccess({ message: e.t("cardDeleted") }), e.config.onCardDeleted && e.config.onCardDeleted({ cardId: o });
|
|
3320
|
+
} catch (u) {
|
|
3321
|
+
e.config.onError({
|
|
3322
|
+
attributes: { message: (u == null ? void 0 : u.message) || e.t("paymentError") }
|
|
3323
|
+
});
|
|
3324
|
+
}
|
|
3325
|
+
}
|
|
3326
|
+
function dt(e, n) {
|
|
3327
|
+
if (!e._isInteractionBlocked()) {
|
|
3328
|
+
if (e.selectedPaymentMethod = n, e._emitPaymentMethodSelected(), n.type === "new_card") {
|
|
3329
|
+
e._emitUserEvent("one_click_pay_method_resolved", { payment_method: n.type }), W(e), e.handlePayment();
|
|
3330
|
+
return;
|
|
3331
|
+
}
|
|
3332
|
+
e._emitUserEvent("one_click_pay_method_resolved", {
|
|
3333
|
+
payment_method: e._getPaymentMethodForUserEvent()
|
|
3334
|
+
}), ae(e), W(e), At(e);
|
|
3335
|
+
}
|
|
3336
|
+
}
|
|
3337
|
+
function $e(e, n) {
|
|
3338
|
+
var s;
|
|
3339
|
+
const o = n.type || ((s = n.data) == null ? void 0 : s.type);
|
|
3340
|
+
if (!o) {
|
|
3341
|
+
console.warn("Unknown event format:", n);
|
|
3342
|
+
return;
|
|
3343
|
+
}
|
|
3344
|
+
switch (o) {
|
|
3345
|
+
case "order.paid":
|
|
3346
|
+
e._orderStatusResolved = !0, $(e), ft(e, n);
|
|
3347
|
+
break;
|
|
3348
|
+
case "order.failed":
|
|
3349
|
+
e._orderStatusResolved = !0, $(e), gt(e, n);
|
|
3350
|
+
break;
|
|
3351
|
+
case "order.action_required":
|
|
3352
|
+
Cn(e, n);
|
|
3353
|
+
break;
|
|
3354
|
+
default:
|
|
3355
|
+
console.warn("Unknown event type:", o);
|
|
3356
|
+
}
|
|
3357
|
+
}
|
|
3358
|
+
function $(e) {
|
|
3359
|
+
e._orderStatusPollingId && (clearInterval(e._orderStatusPollingId), e._orderStatusPollingId = null);
|
|
3360
|
+
}
|
|
3361
|
+
function Ae(e, n) {
|
|
3362
|
+
$(e), e._orderStatusResolved = !1;
|
|
3363
|
+
const o = 6e3, s = 5;
|
|
3364
|
+
let i = 0;
|
|
3365
|
+
const u = async () => {
|
|
3366
|
+
if (!e._orderStatusResolved) {
|
|
3367
|
+
if (i >= s) {
|
|
3368
|
+
$(e), j(e), e.config.onError({
|
|
3369
|
+
attributes: { message: e.t("errorNoServerResponseRetry") }
|
|
3370
|
+
});
|
|
3371
|
+
return;
|
|
3372
|
+
}
|
|
3373
|
+
i += 1;
|
|
3374
|
+
try {
|
|
3375
|
+
const { data: c } = await Dt(
|
|
3376
|
+
e.apiUrl,
|
|
3377
|
+
e._getApiConfig(),
|
|
3378
|
+
String(n)
|
|
3379
|
+
), d = c == null ? void 0 : c.status, g = (c == null ? void 0 : c.payload) || {};
|
|
3380
|
+
if (d === "success") {
|
|
3381
|
+
e._orderStatusResolved = !0, $(e), ft(e, {
|
|
3382
|
+
id: String(g.id || n),
|
|
3383
|
+
attributes: { amount: g.amount, paid_at: g.paid_at || "" }
|
|
3384
|
+
});
|
|
3385
|
+
return;
|
|
3386
|
+
}
|
|
3387
|
+
d === "fail" && (e._orderStatusResolved = !0, $(e), gt(e, {
|
|
3388
|
+
id: String(g.id || n),
|
|
3389
|
+
attributes: { message: g.message || e.t("paymentError") }
|
|
3390
|
+
}));
|
|
3391
|
+
} catch (c) {
|
|
3392
|
+
console.warn("[Polling] checkOrderStatus error:", c);
|
|
3393
|
+
}
|
|
3394
|
+
}
|
|
3395
|
+
};
|
|
3396
|
+
e._orderStatusPollingId = setInterval(u, o), u();
|
|
3397
|
+
}
|
|
3398
|
+
function De() {
|
|
3399
|
+
return typeof document > "u" ? !1 : document.hidden || document.visibilityState === "hidden";
|
|
3400
|
+
}
|
|
3401
|
+
function ht(e, n) {
|
|
3402
|
+
j(e), e.config.onSuccess(n), e.config.backlink ? window.location.href = e.config.backlink : e.destroy();
|
|
3403
|
+
}
|
|
3404
|
+
function _e(e) {
|
|
3405
|
+
if (!e._pendingSuccessPayload || De()) return;
|
|
3406
|
+
const n = e._pendingSuccessPayload;
|
|
3407
|
+
e._pendingSuccessPayload = null, ht(e, n);
|
|
3408
|
+
}
|
|
3409
|
+
function ft(e, n) {
|
|
3410
|
+
var i, u;
|
|
3411
|
+
e.isAddCardViewOpen && ie(e);
|
|
3412
|
+
const o = n.attributes || ((i = n.data) == null ? void 0 : i.attributes) || {}, s = { id: n.id || ((u = n.data) == null ? void 0 : u.id), attributes: o };
|
|
3413
|
+
if (De()) {
|
|
3414
|
+
e._pendingSuccessPayload = s;
|
|
3415
|
+
return;
|
|
3416
|
+
}
|
|
3417
|
+
ht(e, s);
|
|
3418
|
+
}
|
|
3419
|
+
function gt(e, n) {
|
|
3420
|
+
var s, i;
|
|
3421
|
+
e.isAddCardViewOpen && ie(e), j(e);
|
|
3422
|
+
const o = n.attributes || ((s = n.data) == null ? void 0 : s.attributes) || {};
|
|
3423
|
+
e.config.onError({ id: n.id || ((i = n.data) == null ? void 0 : i.id), attributes: o });
|
|
3424
|
+
}
|
|
3425
|
+
function Cn(e, n) {
|
|
3426
|
+
var u, c, d;
|
|
3427
|
+
const o = n.attributes || ((u = n.data) == null ? void 0 : u.attributes) || {}, s = o.action_link || o.action_url, i = o.action_url_type || o.action_type || "redirect";
|
|
3428
|
+
if (!s) {
|
|
3429
|
+
console.error(e.t("errorActionUrlMissing")), e.waitingForNewCardAction && (e.waitingForNewCardAction = !1, j(e), e.config.onError({ attributes: { message: e.t("errorNoServerResponse") } }));
|
|
3430
|
+
return;
|
|
3431
|
+
}
|
|
3432
|
+
if (e.waitingForNewCardAction && (e.waitingForNewCardAction = !1, e._clearNewCardActionTimeout()), i === "inner") {
|
|
3433
|
+
e.addCardActionUrl = s, j(e), e._showAddCardView();
|
|
3434
|
+
return;
|
|
3435
|
+
}
|
|
3436
|
+
if (((c = e.selectedPaymentMethod) == null ? void 0 : c.type) === "kaspi_pay") {
|
|
3437
|
+
const g = n.id || ((d = n.data) == null ? void 0 : d.id);
|
|
3438
|
+
if (g && !e._orderStatusResolved && !e._orderStatusPollingId && Ae(e, String(g)), typeof e.config.onKaspiLink == "function") {
|
|
3439
|
+
e.config.onKaspiLink({
|
|
3440
|
+
action_link: s,
|
|
3441
|
+
action_url: s,
|
|
3442
|
+
action_type: i,
|
|
3443
|
+
event: n
|
|
3444
|
+
});
|
|
3445
|
+
return;
|
|
3446
|
+
}
|
|
3447
|
+
}
|
|
3448
|
+
window.location.href = s;
|
|
3449
|
+
}
|
|
3450
|
+
async function yn(e) {
|
|
3451
|
+
var o, s, i, u;
|
|
3452
|
+
if (!e.selectedPaymentMethod) {
|
|
3453
|
+
e.config.onError({
|
|
3454
|
+
attributes: { message: e.t("errorPaymentMethodNotSelected") }
|
|
3455
|
+
});
|
|
3456
|
+
return;
|
|
3457
|
+
}
|
|
3458
|
+
const { checkoutOptions: n } = e._getPaymentBreakdown();
|
|
3459
|
+
if (e._isBalanceFullyCoveringAmount()) {
|
|
3460
|
+
se(e);
|
|
3461
|
+
try {
|
|
3462
|
+
const c = await Ye(
|
|
3463
|
+
e.apiUrl,
|
|
3464
|
+
e._getApiConfig(),
|
|
3465
|
+
e.deviceId,
|
|
3466
|
+
e.selectedPaymentMethod,
|
|
3467
|
+
n
|
|
3468
|
+
);
|
|
3469
|
+
await et(e);
|
|
3470
|
+
const d = (c == null ? void 0 : c.id) ?? ((o = c == null ? void 0 : c.data) == null ? void 0 : o.id);
|
|
3471
|
+
return d && Ae(e, String(d)), c;
|
|
3472
|
+
} catch (c) {
|
|
3473
|
+
throw j(e), e.config.onError({
|
|
3474
|
+
attributes: { message: e._resolveErrorMessage(c) }
|
|
3475
|
+
}), c;
|
|
3476
|
+
}
|
|
3477
|
+
}
|
|
3478
|
+
if (e.selectedPaymentMethod.type === "new_card") {
|
|
3479
|
+
await mn(e, n);
|
|
3480
|
+
return;
|
|
3481
|
+
}
|
|
3482
|
+
if (e.selectedPaymentMethod.type === "apple_pay") {
|
|
3483
|
+
await bn(e, n);
|
|
3484
|
+
return;
|
|
3485
|
+
}
|
|
3486
|
+
if (e.selectedPaymentMethod.type === "google_pay") {
|
|
3487
|
+
await En(e, n);
|
|
3488
|
+
return;
|
|
3489
|
+
}
|
|
3490
|
+
se(e);
|
|
3491
|
+
try {
|
|
3492
|
+
const c = await Ye(
|
|
3493
|
+
e.apiUrl,
|
|
3494
|
+
e._getApiConfig(),
|
|
3495
|
+
e.deviceId,
|
|
3496
|
+
e.selectedPaymentMethod,
|
|
3497
|
+
n
|
|
3498
|
+
);
|
|
3499
|
+
await et(e);
|
|
3500
|
+
const d = (c == null ? void 0 : c.id) ?? ((s = c == null ? void 0 : c.data) == null ? void 0 : s.id);
|
|
3501
|
+
if (d && Ae(e, String(d)), ((i = e.selectedPaymentMethod) == null ? void 0 : i.type) === "kaspi_pay") {
|
|
3502
|
+
const g = (c == null ? void 0 : c.attributes) || ((u = c == null ? void 0 : c.data) == null ? void 0 : u.attributes) || {}, C = g.action_link || g.action_url, S = g.action_url_type || g.action_type || "redirect";
|
|
3503
|
+
if (C)
|
|
3504
|
+
return typeof e.config.onKaspiLink == "function" ? (e.config.onKaspiLink({
|
|
3505
|
+
action_link: C,
|
|
3506
|
+
action_url: C,
|
|
3507
|
+
action_type: S,
|
|
3508
|
+
event: c
|
|
3509
|
+
}), c) : (window.location.href = C, c);
|
|
3510
|
+
}
|
|
3511
|
+
return c;
|
|
3512
|
+
} catch (c) {
|
|
3513
|
+
throw j(e), e.config.onError({ message: e._resolveErrorMessage(c) }), c;
|
|
3514
|
+
}
|
|
3515
|
+
}
|
|
3516
|
+
async function et(e) {
|
|
3517
|
+
var n, o;
|
|
3518
|
+
if (!(((n = e.selectedPaymentMethod) == null ? void 0 : n.type) !== "card" || !((o = e.selectedPaymentMethod) != null && o.cardId)))
|
|
3519
|
+
try {
|
|
3520
|
+
await Nt(
|
|
3521
|
+
e.apiUrl,
|
|
3522
|
+
e._getApiConfig(),
|
|
3523
|
+
e.selectedPaymentMethod.cardId
|
|
3524
|
+
);
|
|
3525
|
+
} catch (s) {
|
|
3526
|
+
console.warn("Failed to mark selected card as default:", s);
|
|
3527
|
+
}
|
|
3528
|
+
}
|
|
3529
|
+
async function mn(e, n) {
|
|
3530
|
+
se(e), e.waitingForNewCardAction = !0, e._setNewCardActionTimeout();
|
|
3531
|
+
try {
|
|
3532
|
+
await Xt(
|
|
3533
|
+
e.apiUrl,
|
|
3534
|
+
e._getApiConfig(),
|
|
3535
|
+
e.deviceId,
|
|
3536
|
+
n
|
|
3537
|
+
);
|
|
3538
|
+
} catch (o) {
|
|
3539
|
+
e.waitingForNewCardAction = !1, e._clearNewCardActionTimeout(), j(e), e.config.onError({
|
|
3540
|
+
attributes: { message: e._resolveErrorMessage(o) }
|
|
3541
|
+
}), console.error("New card payment error:", o);
|
|
3542
|
+
}
|
|
3543
|
+
}
|
|
3544
|
+
async function bn(e, n) {
|
|
3545
|
+
const o = window.ApplePaySession;
|
|
3546
|
+
if (!o || !o.canMakePayments()) {
|
|
3547
|
+
e.config.onError({ attributes: { message: e.t("errorApplePayUnsupported") } });
|
|
3548
|
+
return;
|
|
3549
|
+
}
|
|
3550
|
+
const s = {
|
|
3551
|
+
countryCode: e.config.currency === "GEL" ? "GE" : "KZ",
|
|
3552
|
+
currencyCode: e.config.currency,
|
|
3553
|
+
supportedNetworks: ["visa", "masterCard"],
|
|
3554
|
+
merchantCapabilities: ["supports3DS"],
|
|
3555
|
+
total: {
|
|
3556
|
+
label: "Choco",
|
|
3557
|
+
amount: String(e._getCheckoutAmount()),
|
|
3558
|
+
type: "final"
|
|
3559
|
+
}
|
|
3560
|
+
}, i = new o(3, s);
|
|
3561
|
+
i.onvalidatemerchant = async (u) => {
|
|
3562
|
+
var c, d;
|
|
3563
|
+
try {
|
|
3564
|
+
const g = await Ut(
|
|
3565
|
+
e.apiUrl,
|
|
3566
|
+
e._getApiConfig(),
|
|
3567
|
+
u.validationURL
|
|
3568
|
+
), C = ((d = (c = g == null ? void 0 : g.data) == null ? void 0 : c.attributes) == null ? void 0 : d.session) || g, S = JSON.parse(atob(C));
|
|
3569
|
+
i.completeMerchantValidation(S);
|
|
3570
|
+
} catch (g) {
|
|
3571
|
+
console.error("Apple Pay session error:", g), i.abort(), e.config.onError({ attributes: { message: e.t("errorApplePayInit") } });
|
|
3572
|
+
}
|
|
3573
|
+
}, i.onpaymentauthorized = async (u) => {
|
|
3574
|
+
var c;
|
|
3575
|
+
try {
|
|
3576
|
+
if (se(e), typeof e.config.onBeforeCheckout == "function") {
|
|
3577
|
+
const C = await e.config.onBeforeCheckout();
|
|
3578
|
+
C && typeof C == "object" && Object.assign(e.config, C);
|
|
3579
|
+
}
|
|
3580
|
+
const d = await Ht(
|
|
3581
|
+
e.apiUrl,
|
|
3582
|
+
e._getApiConfig(),
|
|
3583
|
+
e.deviceId,
|
|
3584
|
+
u.payment,
|
|
3585
|
+
n
|
|
3586
|
+
);
|
|
3587
|
+
i.completePayment(o.STATUS_SUCCESS);
|
|
3588
|
+
const g = (d == null ? void 0 : d.id) ?? ((c = d == null ? void 0 : d.data) == null ? void 0 : c.id);
|
|
3589
|
+
g && Ae(e, String(g));
|
|
3590
|
+
} catch (d) {
|
|
3591
|
+
console.error("Apple Pay payment error:", d), i.completePayment(o.STATUS_FAILURE), j(e), e.config.onError({
|
|
3592
|
+
attributes: {
|
|
3593
|
+
message: e._resolveErrorMessage(d, "errorApplePayPayment")
|
|
3594
|
+
}
|
|
3595
|
+
});
|
|
3596
|
+
}
|
|
3597
|
+
}, i.oncancel = () => e.config.onCancel(), i.begin();
|
|
3598
|
+
}
|
|
3599
|
+
async function En(e, n) {
|
|
3600
|
+
var P, k, w, L, O, F;
|
|
3601
|
+
try {
|
|
3602
|
+
await e._loadGooglePaySdk();
|
|
3603
|
+
} catch (M) {
|
|
3604
|
+
console.error("Google Pay SDK load error:", M), e.config.onError({ attributes: { message: e.t("errorGooglePayUnsupported") } });
|
|
3605
|
+
return;
|
|
3606
|
+
}
|
|
3607
|
+
const o = window.google;
|
|
3608
|
+
if (!(o != null && o.payments)) {
|
|
3609
|
+
e.config.onError({ attributes: { message: e.t("errorGooglePayUnsupported") } });
|
|
3610
|
+
return;
|
|
3611
|
+
}
|
|
3612
|
+
const s = (P = e.checkoutContext) == null ? void 0 : P.data, i = ((w = (k = s == null ? void 0 : s.payment_methods) == null ? void 0 : k.data) == null ? void 0 : w.attributes) || {}, u = i.google_pay_settings || {};
|
|
3613
|
+
if (!(i.payment_method_google_pay === "enabled" || i.payment_method_google_pay === !0)) {
|
|
3614
|
+
e.config.onError({ attributes: { message: e.t("errorGooglePayUnsupported") } });
|
|
3615
|
+
return;
|
|
3616
|
+
}
|
|
3617
|
+
const d = u == null ? void 0 : u.gateway, g = u == null ? void 0 : u.merchant_id;
|
|
3618
|
+
if (!d || !g) {
|
|
3619
|
+
e.config.onError({
|
|
3620
|
+
attributes: { message: e.t("errorGooglePaySettingsUnavailable") }
|
|
3621
|
+
});
|
|
3622
|
+
return;
|
|
3623
|
+
}
|
|
3624
|
+
const C = e.config.environment === "production", S = (u == null ? void 0 : u.merchant_name) || "Choco", T = u == null ? void 0 : u.google_merchant_id;
|
|
3625
|
+
if (C && !T) {
|
|
3626
|
+
e.config.onError({
|
|
3627
|
+
attributes: { message: e.t("errorGooglePaySettingsUnavailable") }
|
|
3628
|
+
});
|
|
3629
|
+
return;
|
|
3630
|
+
}
|
|
3631
|
+
const v = Number(e._getCheckoutAmount()).toFixed(2), Q = new o.payments.api.PaymentsClient({
|
|
3632
|
+
environment: C ? "PRODUCTION" : "TEST"
|
|
3633
|
+
}), _ = [
|
|
3634
|
+
{
|
|
3635
|
+
type: "CARD",
|
|
3636
|
+
parameters: {
|
|
3637
|
+
allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"],
|
|
3638
|
+
allowedCardNetworks: ["VISA", "MASTERCARD"],
|
|
3639
|
+
billingAddressRequired: !1
|
|
3640
|
+
},
|
|
3641
|
+
tokenizationSpecification: {
|
|
3642
|
+
type: "PAYMENT_GATEWAY",
|
|
3643
|
+
parameters: { gateway: d, gatewayMerchantId: g }
|
|
3644
|
+
}
|
|
3645
|
+
}
|
|
3646
|
+
], m = {
|
|
3647
|
+
apiVersion: 2,
|
|
3648
|
+
apiVersionMinor: 0,
|
|
3649
|
+
allowedPaymentMethods: _,
|
|
3650
|
+
transactionInfo: {
|
|
3651
|
+
totalPriceStatus: "FINAL",
|
|
3652
|
+
totalPriceLabel: "Итого",
|
|
3653
|
+
totalPrice: v,
|
|
3654
|
+
currencyCode: e.config.currency,
|
|
3655
|
+
countryCode: e.config.currency === "GEL" ? "GE" : "KZ"
|
|
3656
|
+
},
|
|
3657
|
+
merchantInfo: C ? { merchantId: T, merchantName: S } : { merchantName: S }
|
|
3658
|
+
};
|
|
3659
|
+
console.log("paymentDataRequest", m);
|
|
3660
|
+
try {
|
|
3661
|
+
const M = await Q.isReadyToPay({
|
|
3662
|
+
apiVersion: 2,
|
|
3663
|
+
apiVersionMinor: 0,
|
|
3664
|
+
allowedPaymentMethods: _
|
|
3665
|
+
});
|
|
3666
|
+
if (!(M != null && M.result)) {
|
|
3667
|
+
e.config.onError({ attributes: { message: e.t("errorGooglePayUnsupported") } });
|
|
3668
|
+
return;
|
|
3669
|
+
}
|
|
3670
|
+
se(e);
|
|
3671
|
+
const J = await Q.loadPaymentData(m), x = (O = (L = J == null ? void 0 : J.paymentMethodData) == null ? void 0 : L.tokenizationData) == null ? void 0 : O.token;
|
|
3672
|
+
if (!x) throw new Error(e.t("errorGooglePayPayment"));
|
|
3673
|
+
const q = JSON.parse(x), N = await xt(
|
|
3674
|
+
e.apiUrl,
|
|
3675
|
+
e._getApiConfig(),
|
|
3676
|
+
e.deviceId,
|
|
3677
|
+
q,
|
|
3678
|
+
n
|
|
3679
|
+
), b = (N == null ? void 0 : N.id) ?? ((F = N == null ? void 0 : N.data) == null ? void 0 : F.id);
|
|
3680
|
+
b && Ae(e, String(b));
|
|
3681
|
+
} catch (M) {
|
|
3682
|
+
j(e), M.statusCode === "CANCELED" ? e.config.onCancel() : (e.config.onError({
|
|
3683
|
+
attributes: {
|
|
3684
|
+
message: e._resolveErrorMessage(M, "errorGooglePayPayment")
|
|
3685
|
+
}
|
|
3686
|
+
}), console.error("Google Pay error:", M));
|
|
3687
|
+
}
|
|
3688
|
+
}
|
|
3689
|
+
function vn(e) {
|
|
3690
|
+
var u, c, d, g, C, S, T, v, Q, _;
|
|
3691
|
+
const n = e.container;
|
|
3692
|
+
(u = n.querySelector('[data-action="pay"]')) == null || u.addEventListener("click", () => e.handlePayment()), (c = n.querySelector('[data-action="change-method"]')) == null || c.addEventListener("click", () => lt(e)), n.querySelectorAll('[data-action="close"]').forEach((m) => m.addEventListener("click", () => e.close())), (d = n.querySelector('[data-action="close-sheet"]')) == null || d.addEventListener("click", () => {
|
|
3693
|
+
e._pendingDeleteMethod ? Ee(e) : W(e);
|
|
3694
|
+
}), (g = n.querySelector('[data-action="edit-sheet"]')) == null || g.addEventListener("click", () => {
|
|
3695
|
+
e.isPaymentSheetEditMode = !0, ae(e), ce(e);
|
|
3696
|
+
}), (C = n.querySelector('[data-action="previous-sheet"]')) == null || C.addEventListener("click", () => {
|
|
3697
|
+
e.isPaymentSheetEditMode = !1, ae(e), ce(e);
|
|
3698
|
+
}), (S = n.querySelector('[data-action="close-add-card"]')) == null || S.addEventListener("click", () => ie(e)), (T = n.querySelector('[data-action="confirm-delete-cancel"]')) == null || T.addEventListener("click", () => Ee(e)), (v = n.querySelector('[data-action="confirm-delete-submit"]')) == null || v.addEventListener("click", () => {
|
|
3699
|
+
if (e._pendingDeleteMethod) {
|
|
3700
|
+
const m = e._pendingDeleteMethod;
|
|
3701
|
+
Me(e, !0), pn(e, m).then(() => W(e)).finally(() => Me(e, !1));
|
|
3702
|
+
}
|
|
3703
|
+
}), n.querySelectorAll(".choco-widget-method-item").forEach((m) => {
|
|
3704
|
+
m.addEventListener("click", (P) => {
|
|
3705
|
+
const k = JSON.parse(
|
|
3706
|
+
P.currentTarget.getAttribute("data-method") || "{}"
|
|
3707
|
+
);
|
|
3708
|
+
dt(e, k);
|
|
3709
|
+
});
|
|
3710
|
+
});
|
|
3711
|
+
const o = n.querySelector('[data-sheet="payment"]');
|
|
3712
|
+
o && (o.addEventListener("click", (m) => {
|
|
3713
|
+
m.target === o && W(e);
|
|
3714
|
+
}), In(e, o));
|
|
3715
|
+
const s = n.querySelector('[data-action="toggle-balance"]');
|
|
3716
|
+
s && ((Q = s.querySelector("input[type='checkbox']")) == null || Q.addEventListener("change", (m) => {
|
|
3717
|
+
e.useBalance = m.target.checked, e._updatePayButtonAmount();
|
|
3718
|
+
}));
|
|
3719
|
+
const i = n.querySelector('[data-action="toggle-bonuses"]');
|
|
3720
|
+
i && ((_ = i.querySelector("input[type='checkbox']")) == null || _.addEventListener("change", (m) => {
|
|
3721
|
+
e.useBonuses = m.target.checked, e.config.onAppliedBonus(e.useBonuses), e._updatePayButtonAmount();
|
|
3722
|
+
})), document.removeEventListener("keydown", e._boundKeyDown), document.addEventListener("keydown", e._boundKeyDown), ut(e);
|
|
3723
|
+
}
|
|
3724
|
+
function Bn(e, n) {
|
|
3725
|
+
var o, s;
|
|
3726
|
+
e.isOpen && (n.key === "Escape" && (n.preventDefault(), e._pendingDeleteMethod ? Ee(e) : e.isAddCardViewOpen ? ie(e) : e.isPaymentSheetOpen ? W(e) : e.close()), n.key === "Enter" && ((s = (o = n.target) == null ? void 0 : o.dataset) == null ? void 0 : s.action) === "pay" && (n.preventDefault(), e.handlePayment()));
|
|
3727
|
+
}
|
|
3728
|
+
function In(e, n) {
|
|
3729
|
+
const o = n.querySelector('[data-action="sheet-drag-handle"]'), s = n.querySelector(".choco-widget-sheet-content");
|
|
3730
|
+
if (!o || !s) return;
|
|
3731
|
+
const i = 80;
|
|
3732
|
+
let u = 0, c = 0;
|
|
3733
|
+
const d = (C) => {
|
|
3734
|
+
c = C.clientY;
|
|
3735
|
+
const S = Math.max(0, c - u);
|
|
3736
|
+
s.style.transform = `translateY(${S}px)`;
|
|
3737
|
+
}, g = (C) => {
|
|
3738
|
+
o.releasePointerCapture(C.pointerId), o.removeEventListener("pointermove", d), o.removeEventListener("pointerup", g), o.removeEventListener("pointercancel", g);
|
|
3739
|
+
const S = Math.max(0, c - u);
|
|
3740
|
+
if (s.classList.remove("choco-widget-sheet-content--dragging"), S >= i) {
|
|
3741
|
+
s.style.transform = "translateY(100%)";
|
|
3742
|
+
const T = () => {
|
|
3743
|
+
s.removeEventListener("transitionend", T), s.style.transform = "", W(e);
|
|
3744
|
+
};
|
|
3745
|
+
s.addEventListener("transitionend", T);
|
|
3746
|
+
} else
|
|
3747
|
+
s.style.transform = "";
|
|
3748
|
+
};
|
|
3749
|
+
o.addEventListener("pointerdown", (C) => {
|
|
3750
|
+
!e.isPaymentSheetOpen || C.button !== 0 || (C.preventDefault(), u = C.clientY, c = C.clientY, s.classList.add("choco-widget-sheet-content--dragging"), o.setPointerCapture(C.pointerId), o.addEventListener("pointermove", d), o.addEventListener("pointerup", g), o.addEventListener("pointercancel", g));
|
|
3751
|
+
});
|
|
3752
|
+
}
|
|
3753
|
+
class oe {
|
|
3754
|
+
// ─── Статические методы / logout ─────────────────────────────────────────────
|
|
3755
|
+
static _getAuthStorageValue(n) {
|
|
3756
|
+
return st(n);
|
|
3757
|
+
}
|
|
3758
|
+
static _setAuthStorageValue(n, o) {
|
|
3759
|
+
Le(n, o);
|
|
3760
|
+
}
|
|
3761
|
+
static _removeAuthStorageValue(n) {
|
|
3762
|
+
me(n);
|
|
3763
|
+
}
|
|
3764
|
+
static async logout() {
|
|
3765
|
+
Ge();
|
|
3766
|
+
}
|
|
3767
|
+
// ─── Конструктор ──────────────────────────────────────────────────────────────
|
|
3768
|
+
constructor(n) {
|
|
3769
|
+
this.config = Ft(n), this.accessToken = null, this.deviceId = tt(), this.apiUrl = mt(this.config.environment), this.translations = Ct, this.checkoutContext = null, this.centrifuge = null, this.selectedPaymentMethod = null, this.container = null, this.isOpen = !1, this.isPaymentSheetOpen = !1, this.isPaymentSheetEditMode = !1, this.loading = !1, this.disabled = !1, this.paymentMethodDisabled = !1, this.useBalance = !1, this.useBonuses = !1, this.addCardActionUrl = null, this.isAddCardViewOpen = !1, this.waitingForNewCardAction = !1, this.newCardActionRequiredTimeoutId = null, this._googlePayScriptPromise = null, this._googlePayButtonRenderVersion = 0, this._orderStatusPollingId = null, this._orderStatusResolved = !1, this._pendingDeleteMethod = null, this._pendingSuccessPayload = null, this._lifecycleListenersAttached = !1, this._boundAddCardMessage = null, this._boundKeyDown = (o) => Bn(this, o), this._boundVisibilityChange = () => this._onVisibilityChange(), this._boundWindowFocus = () => this._onWindowFocus(), this._boundPageShow = () => this._onPageShow();
|
|
3770
|
+
}
|
|
3771
|
+
// ─── Локализация ──────────────────────────────────────────────────────────────
|
|
3772
|
+
t(n, o = {}) {
|
|
3773
|
+
var u;
|
|
3774
|
+
const s = this.config.locale || "ru", i = ((u = this.translations[s]) == null ? void 0 : u[n]) || this.translations.ru[n];
|
|
3775
|
+
return typeof i != "string" ? n : i.replace(
|
|
3776
|
+
/{(\w+)}/g,
|
|
3777
|
+
(c, d) => Object.prototype.hasOwnProperty.call(o, d) ? String(o[d]) : c
|
|
3778
|
+
);
|
|
3779
|
+
}
|
|
3780
|
+
_resolveErrorMessage(n, o = "paymentError") {
|
|
3781
|
+
return (n == null ? void 0 : n.message) || this.t(o);
|
|
3782
|
+
}
|
|
3783
|
+
// ─── Вспомогательные геттеры ─────────────────────────────────────────────────
|
|
3784
|
+
_getApiConfig() {
|
|
3785
|
+
return { ...this.config, accessToken: this.accessToken };
|
|
3786
|
+
}
|
|
3787
|
+
_isInteractionBlocked() {
|
|
3788
|
+
return this.disabled || this.loading;
|
|
3789
|
+
}
|
|
3790
|
+
_getBalanceAmount() {
|
|
3791
|
+
var i, u, c, d;
|
|
3792
|
+
const n = (d = (c = (u = (i = this.checkoutContext) == null ? void 0 : i.data) == null ? void 0 : u.balance) == null ? void 0 : c.data) == null ? void 0 : d.money, o = this.config.currency || "KZT", s = Number(n == null ? void 0 : n[o]);
|
|
3793
|
+
return Number.isFinite(s) && s > 0 ? s : 0;
|
|
3794
|
+
}
|
|
3795
|
+
_getBonusesAmount() {
|
|
3796
|
+
var o;
|
|
3797
|
+
const n = Number((o = this.config.bonuses) == null ? void 0 : o.amount);
|
|
3798
|
+
return Number.isFinite(n) && n > 0 ? n : 0;
|
|
3799
|
+
}
|
|
3800
|
+
_getBonusesPercent() {
|
|
3801
|
+
var o;
|
|
3802
|
+
const n = Number((o = this.config.bonuses) == null ? void 0 : o.percent);
|
|
3803
|
+
return !Number.isFinite(n) || n <= 0 ? 0 : n >= 100 ? 100 : n;
|
|
3804
|
+
}
|
|
3805
|
+
_getAvailableBonus() {
|
|
3806
|
+
var o;
|
|
3807
|
+
const n = Number((o = this.config.bonuses) == null ? void 0 : o.availableBonus);
|
|
3808
|
+
return Number.isFinite(n) && n > 0 ? n : 0;
|
|
3809
|
+
}
|
|
3810
|
+
_getPaymentBreakdown() {
|
|
3811
|
+
const n = this.config.amount, o = this._getBalanceAmount(), s = this.useBalance ? Math.min(o, n) : 0, i = n - s, u = this.useBalance && s >= n, c = this.useBonuses ? this._getAvailableBonus() : 0, d = Math.max(i - c, 0), g = this.useBalance ? n : d, C = this.useBalance && !u;
|
|
3812
|
+
return {
|
|
3813
|
+
payableAmount: d,
|
|
3814
|
+
checkoutOptions: {
|
|
3815
|
+
checkoutAmount: g,
|
|
3816
|
+
forceBalanceMethod: u,
|
|
3817
|
+
useBalance: C
|
|
3818
|
+
}
|
|
3819
|
+
};
|
|
3820
|
+
}
|
|
3821
|
+
_getPayableAmount() {
|
|
3822
|
+
return this._getPaymentBreakdown().payableAmount;
|
|
3823
|
+
}
|
|
3824
|
+
_isBalanceFullyCoveringAmount() {
|
|
3825
|
+
return this._getPaymentBreakdown().checkoutOptions.forceBalanceMethod;
|
|
3826
|
+
}
|
|
3827
|
+
_getCheckoutAmount() {
|
|
3828
|
+
return this._getPaymentBreakdown().checkoutOptions.checkoutAmount ?? this.config.amount;
|
|
3829
|
+
}
|
|
3830
|
+
_getPaymentMethodForUserEvent() {
|
|
3831
|
+
var n;
|
|
3832
|
+
return this._isBalanceFullyCoveringAmount() ? "balance" : ((n = this.selectedPaymentMethod) == null ? void 0 : n.type) ?? null;
|
|
3833
|
+
}
|
|
3834
|
+
_getKaspiOptions() {
|
|
3835
|
+
return {
|
|
3836
|
+
onlyKaspiAvailable: this.config.onlyKaspiAvailable,
|
|
3837
|
+
disableKaspi: this.config.disableKaspi
|
|
3838
|
+
};
|
|
3839
|
+
}
|
|
3840
|
+
// ─── Эмиттеры ────────────────────────────────────────────────────────────────
|
|
3841
|
+
_emitUserEvent(n, o = {}) {
|
|
3842
|
+
typeof this.config.onUserEvent == "function" && this.config.onUserEvent({ eventName: n, eventProperties: o });
|
|
3843
|
+
}
|
|
3844
|
+
_emitPaymentMethodSelected(n = this.selectedPaymentMethod) {
|
|
3845
|
+
typeof this.config.onPaymentMethodSelected == "function" && this.config.onPaymentMethodSelected(n || null);
|
|
3846
|
+
}
|
|
3847
|
+
// ─── Делегаторы в модули (вызываются из domUI/events через widget.method()) ──
|
|
3848
|
+
_attachEventListeners() {
|
|
3849
|
+
vn(this);
|
|
3850
|
+
}
|
|
3851
|
+
_updatePayButtonAmount() {
|
|
3852
|
+
ge(this);
|
|
3853
|
+
}
|
|
3854
|
+
_showAddCardView() {
|
|
3855
|
+
Ze(this);
|
|
3856
|
+
}
|
|
3857
|
+
_closeAddCardView() {
|
|
3858
|
+
ie(this);
|
|
3859
|
+
}
|
|
3860
|
+
// ─── Таймауты новой карты ─────────────────────────────────────────────────────
|
|
3861
|
+
_setNewCardActionTimeout() {
|
|
3862
|
+
this._clearNewCardActionTimeout(), this.newCardActionRequiredTimeoutId = window.setTimeout(() => {
|
|
3863
|
+
this.waitingForNewCardAction && (this.waitingForNewCardAction = !1, j(this), this.config.onError({
|
|
3864
|
+
attributes: { message: this.t("errorNoServerResponseRetry") }
|
|
3865
|
+
})), this.newCardActionRequiredTimeoutId = null;
|
|
3866
|
+
}, 6e4);
|
|
3867
|
+
}
|
|
3868
|
+
_clearNewCardActionTimeout() {
|
|
3869
|
+
this.newCardActionRequiredTimeoutId && (window.clearTimeout(this.newCardActionRequiredTimeoutId), this.newCardActionRequiredTimeoutId = null);
|
|
3870
|
+
}
|
|
3871
|
+
// ─── Хранение токенов ────────────────────────────────────────────────────────
|
|
3872
|
+
_saveTokensToStorage(n, o) {
|
|
3873
|
+
Oe(n, o);
|
|
3874
|
+
}
|
|
3875
|
+
_clearAuthStorage() {
|
|
3876
|
+
Ge();
|
|
3877
|
+
}
|
|
3878
|
+
_getAuthStorageValue(n) {
|
|
3879
|
+
return oe._getAuthStorageValue(n);
|
|
3880
|
+
}
|
|
3881
|
+
_setAuthStorageValue(n, o) {
|
|
3882
|
+
oe._setAuthStorageValue(n, o);
|
|
3883
|
+
}
|
|
3884
|
+
_removeAuthStorageValue(n) {
|
|
3885
|
+
oe._removeAuthStorageValue(n);
|
|
3886
|
+
}
|
|
3887
|
+
// ─── Google Pay SDK (используется из domUI + paymentFlow) ────────────────────
|
|
3888
|
+
_loadGooglePaySdk() {
|
|
3889
|
+
var n, o;
|
|
3890
|
+
return typeof window > "u" || typeof document > "u" ? Promise.reject(new Error("Google Pay SDK requires browser environment")) : (o = (n = window.google) == null ? void 0 : n.payments) != null && o.api ? Promise.resolve() : this._googlePayScriptPromise ? this._googlePayScriptPromise : (this._googlePayScriptPromise = new Promise((s, i) => {
|
|
3891
|
+
const u = document.querySelector(
|
|
3892
|
+
'script[data-choco-google-pay-sdk="true"]'
|
|
3893
|
+
);
|
|
3894
|
+
if (u) {
|
|
3895
|
+
u.addEventListener("load", () => s(), { once: !0 }), u.addEventListener(
|
|
3896
|
+
"error",
|
|
3897
|
+
() => i(new Error("Failed to load Google Pay SDK")),
|
|
3898
|
+
{ once: !0 }
|
|
3899
|
+
);
|
|
3900
|
+
return;
|
|
3901
|
+
}
|
|
3902
|
+
const c = document.createElement("script");
|
|
3903
|
+
c.src = "https://pay.google.com/gp/p/js/pay.js", c.async = !0, c.defer = !0, c.setAttribute("data-choco-google-pay-sdk", "true"), c.onload = () => s(), c.onerror = () => i(new Error("Failed to load Google Pay SDK")), document.head.appendChild(c);
|
|
3904
|
+
}).finally(() => {
|
|
3905
|
+
var s, i;
|
|
3906
|
+
(i = (s = window.google) == null ? void 0 : s.payments) != null && i.api || (this._googlePayScriptPromise = null);
|
|
3907
|
+
}), this._googlePayScriptPromise);
|
|
3908
|
+
}
|
|
3909
|
+
// ─── Lifecycle listeners ──────────────────────────────────────────────────────
|
|
3910
|
+
_attachLifecycleListeners() {
|
|
3911
|
+
this._lifecycleListenersAttached || (document.addEventListener("visibilitychange", this._boundVisibilityChange), window.addEventListener("focus", this._boundWindowFocus), window.addEventListener("pageshow", this._boundPageShow), this._lifecycleListenersAttached = !0);
|
|
3912
|
+
}
|
|
3913
|
+
_detachLifecycleListeners() {
|
|
3914
|
+
this._lifecycleListenersAttached && (document.removeEventListener("visibilitychange", this._boundVisibilityChange), window.removeEventListener("focus", this._boundWindowFocus), window.removeEventListener("pageshow", this._boundPageShow), this._lifecycleListenersAttached = !1);
|
|
3915
|
+
}
|
|
3916
|
+
_onVisibilityChange() {
|
|
3917
|
+
De() || _e(this);
|
|
3918
|
+
}
|
|
3919
|
+
_onWindowFocus() {
|
|
3920
|
+
_e(this);
|
|
3921
|
+
}
|
|
3922
|
+
_onPageShow() {
|
|
3923
|
+
_e(this);
|
|
3924
|
+
}
|
|
3925
|
+
// ─── Авторизация (приватная) ──────────────────────────────────────────────────
|
|
3926
|
+
async _obtainTokenByRefreshOrTrackId() {
|
|
3927
|
+
await Jt(this);
|
|
3928
|
+
}
|
|
3929
|
+
async _fetchCheckoutContextWithRetry() {
|
|
3930
|
+
try {
|
|
3931
|
+
this.checkoutContext = await Re(
|
|
3932
|
+
this.apiUrl,
|
|
3933
|
+
this._getApiConfig()
|
|
3934
|
+
);
|
|
3935
|
+
} catch (n) {
|
|
3936
|
+
if (n.status === 401)
|
|
3937
|
+
this._removeAuthStorageValue("webPayToken"), await this._obtainTokenByRefreshOrTrackId(), this.checkoutContext = await Re(
|
|
3938
|
+
this.apiUrl,
|
|
3939
|
+
this._getApiConfig()
|
|
3940
|
+
);
|
|
3941
|
+
else
|
|
3942
|
+
throw n;
|
|
3943
|
+
}
|
|
3944
|
+
}
|
|
3945
|
+
// ─── Рендер ───────────────────────────────────────────────────────────────────
|
|
3946
|
+
_prerender() {
|
|
3947
|
+
An(this);
|
|
3948
|
+
}
|
|
3949
|
+
_render() {
|
|
3950
|
+
un(this);
|
|
3951
|
+
}
|
|
3952
|
+
// ─── Публичный API ────────────────────────────────────────────────────────────
|
|
3953
|
+
async init() {
|
|
3954
|
+
var n, o;
|
|
3955
|
+
try {
|
|
3956
|
+
if (this._prerender(), this._attachLifecycleListeners(), !this.config.clientId)
|
|
3957
|
+
return this.config.onError({ attributes: { message: this.t("errorMissingTrackClient") } }), !1;
|
|
3958
|
+
if (this.accessToken = this._getAuthStorageValue("webPayToken"), !this.config.trackId && !this.accessToken)
|
|
3959
|
+
return this.paymentMethodDisabled = !0, this._render(), !0;
|
|
3960
|
+
this.accessToken || await this._obtainTokenByRefreshOrTrackId();
|
|
3961
|
+
try {
|
|
3962
|
+
await this._fetchCheckoutContextWithRetry();
|
|
3963
|
+
} catch (i) {
|
|
3964
|
+
const u = i;
|
|
3965
|
+
return this.config.onError({ attributes: { message: u.message } }), !1;
|
|
3966
|
+
}
|
|
3967
|
+
const s = Ve(
|
|
3968
|
+
(o = (n = this.checkoutContext) == null ? void 0 : n.data) == null ? void 0 : o.socket_connections,
|
|
3969
|
+
(i) => $e(this, i)
|
|
3970
|
+
);
|
|
3971
|
+
return s && (this.centrifuge = s.centrifuge), this.selectedPaymentMethod = Te(
|
|
3972
|
+
this.checkoutContext.data,
|
|
3973
|
+
this._getKaspiOptions()
|
|
3974
|
+
), this._emitPaymentMethodSelected(), this._render(), !0;
|
|
3975
|
+
} catch (s) {
|
|
3976
|
+
return console.error(`${this.t("errorWidgetInit")}:`, s), this.config.onError({ attributes: { message: s.message } }), !1;
|
|
3977
|
+
}
|
|
3978
|
+
}
|
|
3979
|
+
close() {
|
|
3980
|
+
var n;
|
|
3981
|
+
(n = this.container) == null || n.classList.remove("choco-one-click-widget--visible"), setTimeout(() => this.config.onCancel(), 300);
|
|
3982
|
+
}
|
|
3983
|
+
destroy() {
|
|
3984
|
+
const n = document.getElementById("choco-one-click-widget");
|
|
3985
|
+
n && (n.style.display = "none"), this._clearNewCardActionTimeout(), $(this), this._pendingSuccessPayload = null, this._detachLifecycleListeners(), this.isAddCardViewOpen && ie(this), this.centrifuge && (this.centrifuge.disconnect(), this.centrifuge = null), document.removeEventListener("keydown", this._boundKeyDown), this.container && (this.container.classList.remove("choco-one-click-widget--visible"), setTimeout(() => {
|
|
3986
|
+
var o;
|
|
3987
|
+
(o = this.container) == null || o.remove(), this.container = null;
|
|
3988
|
+
}, 300)), this.isOpen = !1, this.isPaymentSheetOpen = !1, this.isAddCardViewOpen = !1, this.selectedPaymentMethod = null;
|
|
3989
|
+
}
|
|
3990
|
+
getAvailablePaymentMethods() {
|
|
3991
|
+
var n;
|
|
3992
|
+
return (n = this.checkoutContext) != null && n.data ? Tt(
|
|
3993
|
+
this.checkoutContext.data,
|
|
3994
|
+
(o) => this.t(o),
|
|
3995
|
+
this._getKaspiOptions()
|
|
3996
|
+
) : [];
|
|
3997
|
+
}
|
|
3998
|
+
async createOrder() {
|
|
3999
|
+
return yn(this);
|
|
4000
|
+
}
|
|
4001
|
+
async pay() {
|
|
4002
|
+
try {
|
|
4003
|
+
await this.createOrder();
|
|
4004
|
+
} catch (n) {
|
|
4005
|
+
console.error(`${this.t("errorPaymentProcess")}:`, n);
|
|
4006
|
+
}
|
|
4007
|
+
}
|
|
4008
|
+
async handlePayment() {
|
|
4009
|
+
if (!this._isInteractionBlocked()) {
|
|
4010
|
+
this._emitUserEvent("one_click_pay_cta_tapped", {
|
|
4011
|
+
payment_method: this._getPaymentMethodForUserEvent()
|
|
4012
|
+
});
|
|
4013
|
+
try {
|
|
4014
|
+
if (this.config.onConfirmPay) {
|
|
4015
|
+
this.config.onConfirmPay(this.selectedPaymentMethod || null);
|
|
4016
|
+
return;
|
|
4017
|
+
}
|
|
4018
|
+
await this.pay();
|
|
4019
|
+
} catch (n) {
|
|
4020
|
+
console.error(`${this.t("errorPaymentProcess")}:`, n);
|
|
4021
|
+
}
|
|
4022
|
+
}
|
|
4023
|
+
}
|
|
4024
|
+
openPaymentSheet() {
|
|
4025
|
+
lt(this);
|
|
4026
|
+
}
|
|
4027
|
+
closePaymentSheet() {
|
|
4028
|
+
W(this);
|
|
4029
|
+
}
|
|
4030
|
+
async updateAmount(n) {
|
|
4031
|
+
if (typeof n != "number" || !Number.isFinite(n) || n < 0)
|
|
4032
|
+
throw new Error("amount must be a non-negative number");
|
|
4033
|
+
this.config.amount = n, ge(this);
|
|
4034
|
+
}
|
|
4035
|
+
async updateAvailableBonus(n) {
|
|
4036
|
+
if (typeof n != "number" || !Number.isFinite(n) || n < 0)
|
|
4037
|
+
throw new Error("availableBonus must be a non-negative number");
|
|
4038
|
+
this.config.bonuses && (this.config.bonuses.availableBonus = n), ge(this);
|
|
4039
|
+
}
|
|
4040
|
+
async updateLocale(n) {
|
|
4041
|
+
if (typeof n != "string" || !this.translations[n])
|
|
4042
|
+
throw new Error(`Unsupported locale: ${n}`);
|
|
4043
|
+
if (this.config.locale = n, !this.container) return;
|
|
4044
|
+
const o = this.isPaymentSheetOpen, s = this.isAddCardViewOpen;
|
|
4045
|
+
if (this._render(), ee(this), o) {
|
|
4046
|
+
const i = this.container.querySelector('[data-sheet="payment"]');
|
|
4047
|
+
i && (i.classList.add("choco-widget-payment-sheet--open"), this.isPaymentSheetOpen = !0);
|
|
4048
|
+
}
|
|
4049
|
+
s && Ze(this);
|
|
4050
|
+
}
|
|
4051
|
+
async setLoading(n) {
|
|
4052
|
+
this.loading = !!n, ee(this);
|
|
4053
|
+
}
|
|
4054
|
+
async setDisabled(n) {
|
|
4055
|
+
this.disabled = !!n, ee(this);
|
|
4056
|
+
}
|
|
4057
|
+
async setPreorderId(n) {
|
|
4058
|
+
this.config.preorderId = n;
|
|
4059
|
+
}
|
|
4060
|
+
async setMerchantOrderId(n) {
|
|
4061
|
+
this.config.merchantOrderId = n;
|
|
4062
|
+
}
|
|
4063
|
+
async logout() {
|
|
4064
|
+
await oe.logout(), this.accessToken = null;
|
|
4065
|
+
}
|
|
4066
|
+
async updateTrackId(n) {
|
|
4067
|
+
var o, s;
|
|
4068
|
+
if (this.config.trackId = n, !this.config.clientId)
|
|
4069
|
+
return this.config.onError({ attributes: { message: this.t("errorMissingTrackClient") } }), !1;
|
|
4070
|
+
try {
|
|
4071
|
+
this._prerender(), await this._obtainTokenByRefreshOrTrackId();
|
|
4072
|
+
try {
|
|
4073
|
+
await this._fetchCheckoutContextWithRetry();
|
|
4074
|
+
} catch (u) {
|
|
4075
|
+
const c = u;
|
|
4076
|
+
return this.config.onError({ attributes: { message: c.message } }), !1;
|
|
4077
|
+
}
|
|
4078
|
+
this.centrifuge && (this.centrifuge.disconnect(), this.centrifuge = null);
|
|
4079
|
+
const i = Ve(
|
|
4080
|
+
(s = (o = this.checkoutContext) == null ? void 0 : o.data) == null ? void 0 : s.socket_connections,
|
|
4081
|
+
(u) => $e(this, u)
|
|
4082
|
+
);
|
|
4083
|
+
return i && (this.centrifuge = i.centrifuge), this.selectedPaymentMethod = Te(
|
|
4084
|
+
this.checkoutContext.data,
|
|
4085
|
+
this._getKaspiOptions()
|
|
4086
|
+
), this._emitPaymentMethodSelected(), this.paymentMethodDisabled = !1, this._render(), !0;
|
|
4087
|
+
} catch (i) {
|
|
4088
|
+
return console.error(`${this.t("errorWidgetInit")}:`, i), this.config.onError({ attributes: { message: i.message } }), !1;
|
|
4089
|
+
}
|
|
4090
|
+
}
|
|
4091
|
+
async onConfirmPay(n) {
|
|
4092
|
+
if (typeof n != "function") throw new Error("onConfirmPay callback must be a function");
|
|
4093
|
+
this.config.onConfirmPay = n;
|
|
4094
|
+
}
|
|
4095
|
+
async onPaymentMethodSelected(n) {
|
|
4096
|
+
if (typeof n != "function")
|
|
4097
|
+
throw new Error("onPaymentMethodSelected callback must be a function");
|
|
4098
|
+
this.config.onPaymentMethodSelected = n, this._emitPaymentMethodSelected();
|
|
4099
|
+
}
|
|
4100
|
+
async onKaspiLink(n) {
|
|
4101
|
+
if (typeof n != "function") throw new Error("onKaspiLink callback must be a function");
|
|
4102
|
+
this.config.onKaspiLink = n;
|
|
4103
|
+
}
|
|
4104
|
+
async onUserEvent(n) {
|
|
4105
|
+
if (typeof n != "function") throw new Error("onUserEvent callback must be a function");
|
|
4106
|
+
this.config.onUserEvent = n;
|
|
4107
|
+
}
|
|
4108
|
+
async onAppliedBonus(n) {
|
|
4109
|
+
if (typeof n != "function")
|
|
4110
|
+
throw new Error("onAppliedBonus callback must be a function");
|
|
4111
|
+
this.config.onAppliedBonus = n;
|
|
4112
|
+
}
|
|
4113
|
+
}
|
|
4114
|
+
typeof window < "u" && (window.ChocoOneClickWidget = oe);
|
|
4115
|
+
export {
|
|
4116
|
+
oe as default
|
|
4117
|
+
};
|