tf-checkout-react 1.2.31 → 1.3.1

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.
Files changed (44) hide show
  1. package/dist/api/index.d.ts +3 -0
  2. package/dist/components/addonsContainer/AddonComponent.d.ts +9 -0
  3. package/dist/components/addonsContainer/adapters/index.d.ts +12 -0
  4. package/dist/components/addonsContainer/index.d.ts +17 -0
  5. package/dist/components/addonsContainer/normalizers/index.d.ts +1 -0
  6. package/dist/components/addonsContainer/utils/index.d.ts +16 -0
  7. package/dist/components/common/SelectField.d.ts +2 -1
  8. package/dist/components/index.d.ts +1 -0
  9. package/dist/components/ticketsContainer/index.d.ts +1 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/tf-checkout-react.cjs.development.js +889 -79
  12. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  13. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  14. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  15. package/dist/tf-checkout-react.esm.js +889 -80
  16. package/dist/tf-checkout-react.esm.js.map +1 -1
  17. package/dist/types/add_on.d.ts +7 -0
  18. package/dist/types/checkoutPageConfigs.d.ts +9 -0
  19. package/dist/types/index.d.ts +2 -0
  20. package/dist/types/order-data.d.ts +2 -1
  21. package/dist/utils/createMarkup.d.ts +3 -0
  22. package/dist/utils/index.d.ts +1 -0
  23. package/package.json +1 -1
  24. package/src/api/index.ts +16 -0
  25. package/src/components/addonsContainer/AddonComponent.tsx +49 -0
  26. package/src/components/addonsContainer/adapters/index.tsx +64 -0
  27. package/src/components/addonsContainer/index.tsx +434 -0
  28. package/src/components/addonsContainer/normalizers/index.ts +5 -0
  29. package/src/components/addonsContainer/utils/index.tsx +231 -0
  30. package/src/components/billing-info-container/index.tsx +30 -7
  31. package/src/components/common/SelectField.tsx +18 -8
  32. package/src/components/index.ts +1 -0
  33. package/src/components/orderDetailsContainer/index.tsx +20 -18
  34. package/src/components/paymentContainer/index.tsx +37 -2
  35. package/src/components/ticketsContainer/index.tsx +30 -17
  36. package/src/components/ticketsContainer/utils.ts +3 -3
  37. package/src/index.ts +2 -1
  38. package/src/types/add_on.ts +7 -0
  39. package/src/types/checkoutPageConfigs.ts +9 -0
  40. package/src/types/index.ts +2 -0
  41. package/src/types/order-data.ts +4 -3
  42. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +7 -6
  43. package/src/utils/createMarkup.ts +1 -0
  44. package/src/utils/index.ts +1 -0
@@ -58,6 +58,8 @@ import TablePagination from '@mui/material/TablePagination';
58
58
  import TableRow from '@mui/material/TableRow';
59
59
  import _has from 'lodash-es/has';
60
60
  import Radio from '@mui/material/Radio';
61
+ import _isNull from 'lodash-es/isNull';
62
+ import _reverse from 'lodash-es/reverse';
61
63
 
62
64
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
63
65
  try {
@@ -1170,6 +1172,12 @@ var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWit
1170
1172
  return body;
1171
1173
  };
1172
1174
 
1175
+ var createMarkup = function createMarkup(data) {
1176
+ return {
1177
+ __html: data
1178
+ };
1179
+ };
1180
+
1173
1181
  var isWindowDefined = typeof window !== 'undefined';
1174
1182
  var isDocumentDefined = typeof document !== 'undefined';
1175
1183
 
@@ -1428,7 +1436,8 @@ var getStates = function getStates(countryId) {
1428
1436
  return publicRequest.get("/countries/" + countryId + "/states/");
1429
1437
  };
1430
1438
  var getOrders = function getOrders(page, limit, eventSlug) {
1431
- return publicRequest.get("v1/account/orders/?page=" + page + "&limit=" + limit + "&filter[event]=" + eventSlug + "&filter[brand]=" + CONFIGS.BRAND_SLUG + "&filter[subbrands]=true");
1439
+ return publicRequest.get( // eslint-disable-next-line max-len
1440
+ "v1/account/orders/?page=" + page + "&limit=" + limit + "&filter[event]=" + eventSlug + "&filter[brand]=" + CONFIGS.BRAND_SLUG + "&filter[subbrands]=true");
1432
1441
  };
1433
1442
  var getOrderDetails = function getOrderDetails(orderId) {
1434
1443
  return publicRequest.get("v1/account/order/" + orderId);
@@ -1498,6 +1507,59 @@ var validatePhoneNumber = /*#__PURE__*/function () {
1498
1507
  return _ref.apply(this, arguments);
1499
1508
  };
1500
1509
  }();
1510
+ var getAddons = /*#__PURE__*/function () {
1511
+ var _ref2 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(eventId) {
1512
+ var result, addons;
1513
+ return runtime_1.wrap(function _callee2$(_context2) {
1514
+ while (1) {
1515
+ switch (_context2.prev = _context2.next) {
1516
+ case 0:
1517
+ _context2.next = 2;
1518
+ return publicRequest.get("/v1/event/" + eventId + "/add-ons");
1519
+
1520
+ case 2:
1521
+ result = _context2.sent;
1522
+ addons = _get(result, 'data.data.attributes', []);
1523
+ return _context2.abrupt("return", addons);
1524
+
1525
+ case 5:
1526
+ case "end":
1527
+ return _context2.stop();
1528
+ }
1529
+ }
1530
+ }, _callee2);
1531
+ }));
1532
+
1533
+ return function getAddons(_x2) {
1534
+ return _ref2.apply(this, arguments);
1535
+ };
1536
+ }();
1537
+ var getCheckoutPageConfigs = /*#__PURE__*/function () {
1538
+ var _ref3 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee3() {
1539
+ var response;
1540
+ return runtime_1.wrap(function _callee3$(_context3) {
1541
+ while (1) {
1542
+ switch (_context3.prev = _context3.next) {
1543
+ case 0:
1544
+ _context3.next = 2;
1545
+ return publicRequest.get("v1/checkout-configs");
1546
+
1547
+ case 2:
1548
+ response = _context3.sent;
1549
+ return _context3.abrupt("return", response.data);
1550
+
1551
+ case 4:
1552
+ case "end":
1553
+ return _context3.stop();
1554
+ }
1555
+ }
1556
+ }, _callee3);
1557
+ }));
1558
+
1559
+ return function getCheckoutPageConfigs() {
1560
+ return _ref3.apply(this, arguments);
1561
+ };
1562
+ }();
1501
1563
 
1502
1564
  var emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
1503
1565
  var combineValidators = function combineValidators() {
@@ -1792,7 +1854,11 @@ var SelectField = function SelectField(_ref) {
1792
1854
  _ref$form = _ref.form,
1793
1855
  touched = _ref$form.touched,
1794
1856
  errors = _ref$form.errors,
1795
- theme = _ref.theme;
1857
+ setFieldValue = _ref$form.setFieldValue,
1858
+ theme = _ref.theme,
1859
+ _ref$onChange = _ref.onChange,
1860
+ _onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange;
1861
+
1796
1862
  var isTouched = Boolean(_get(touched, field.name));
1797
1863
 
1798
1864
  var error = _get(errors, field.name);
@@ -1820,7 +1886,12 @@ var SelectField = function SelectField(_ref) {
1820
1886
  className: theme
1821
1887
  }
1822
1888
  }, field, {
1823
- style: customTheme == null ? void 0 : customTheme.input
1889
+ style: customTheme == null ? void 0 : customTheme.input,
1890
+ onChange: function onChange(e) {
1891
+ _onChange(e);
1892
+
1893
+ setFieldValue(field.name, e.target.value);
1894
+ }
1824
1895
  }), _map(selectOptions, function (option) {
1825
1896
  return React.createElement("option", {
1826
1897
  key: option.value,
@@ -2947,6 +3018,12 @@ var BillingInfoContainer = /*#__PURE__*/React.memo(function (_ref3) {
2947
3018
  var flagRequirePhone = getQueryVariable('phone_required') === 'true'; // Get prevProps
2948
3019
 
2949
3020
  var prevData = useRef(data);
3021
+
3022
+ var addAddOnsInAttributes = function addAddOnsInAttributes(checkoutBody) {
3023
+ var selectedAddOns = window.localStorage.getItem('add_ons') || '{}';
3024
+ checkoutBody.attributes.add_ons = JSON.parse(selectedAddOns);
3025
+ };
3026
+
2950
3027
  useEffect(function () {
2951
3028
  var hasUniqueId = _get(dataWithUniqueIds, '[0].uniqueId');
2952
3029
 
@@ -3144,42 +3221,47 @@ var BillingInfoContainer = /*#__PURE__*/React.memo(function (_ref3) {
3144
3221
  switch (_context5.prev = _context5.next) {
3145
3222
  case 0:
3146
3223
  if (!(skipPage && !_isEmpty(ticketsQuantity) && !showDOB)) {
3147
- _context5.next = 17;
3224
+ _context5.next = 18;
3148
3225
  break;
3149
3226
  }
3150
3227
 
3151
3228
  setLoading(true);
3152
3229
  checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity.length, userData);
3153
3230
  _context5.prev = 3;
3154
- _context5.next = 6;
3231
+
3232
+ if (isWindowDefined) {
3233
+ addAddOnsInAttributes(checkoutBody);
3234
+ }
3235
+
3236
+ _context5.next = 7;
3155
3237
  return postOnCheckout(checkoutBody, access_token);
3156
3238
 
3157
- case 6:
3239
+ case 7:
3158
3240
  res = _context5.sent;
3159
3241
  removeReferralKey();
3160
3242
  onSkipBillingPage(_get(res, 'data.data.attributes'));
3161
3243
  setLoading(false);
3162
- _context5.next = 15;
3244
+ _context5.next = 16;
3163
3245
  break;
3164
3246
 
3165
- case 12:
3166
- _context5.prev = 12;
3247
+ case 13:
3248
+ _context5.prev = 13;
3167
3249
  _context5.t0 = _context5["catch"](3);
3168
3250
  onSubmitError(_context5.t0);
3169
3251
 
3170
- case 15:
3171
- _context5.next = 18;
3252
+ case 16:
3253
+ _context5.next = 19;
3172
3254
  break;
3173
3255
 
3174
- case 17:
3256
+ case 18:
3175
3257
  setLoading(false);
3176
3258
 
3177
- case 18:
3259
+ case 19:
3178
3260
  case "end":
3179
3261
  return _context5.stop();
3180
3262
  }
3181
3263
  }
3182
- }, _callee5, null, [[3, 12]]);
3264
+ }, _callee5, null, [[3, 13]]);
3183
3265
  }));
3184
3266
 
3185
3267
  return function collectPaymentData() {
@@ -3254,49 +3336,54 @@ var BillingInfoContainer = /*#__PURE__*/React.memo(function (_ref3) {
3254
3336
  _context6.prev = 0;
3255
3337
 
3256
3338
  if (!isLoggedIn) {
3257
- _context6.next = 16;
3339
+ _context6.next = 17;
3258
3340
  break;
3259
3341
  }
3260
3342
 
3261
3343
  _checkoutBody = collectCheckoutBody(values, userData);
3262
- _context6.next = 5;
3344
+
3345
+ if (isWindowDefined) {
3346
+ addAddOnsInAttributes(_checkoutBody);
3347
+ }
3348
+
3349
+ _context6.next = 6;
3263
3350
  return postOnCheckout(_checkoutBody, access_token);
3264
3351
 
3265
- case 5:
3352
+ case 6:
3266
3353
  _res = _context6.sent;
3267
3354
  removeReferralKey(); // After checkout is successful recover updated profile and store it on local storage if needed
3268
3355
 
3269
3356
  if (!isWindowDefined) {
3270
- _context6.next = 14;
3357
+ _context6.next = 15;
3271
3358
  break;
3272
3359
  }
3273
3360
 
3274
- _context6.next = 10;
3361
+ _context6.next = 11;
3275
3362
  return getProfileData(access_token);
3276
3363
 
3277
- case 10:
3364
+ case 11:
3278
3365
  updatedUserData = _context6.sent;
3279
3366
  _profileSpecifiedData = _get(updatedUserData, 'data.data');
3280
3367
  _profileDataObj = setLoggedUserData$1(_profileSpecifiedData);
3281
3368
  window.localStorage.setItem('user_data', JSON.stringify(_profileDataObj));
3282
3369
 
3283
- case 14:
3370
+ case 15:
3284
3371
  handleSubmit(values, formikHelpers, eventId, _res);
3285
3372
  return _context6.abrupt("return");
3286
3373
 
3287
- case 16:
3374
+ case 17:
3288
3375
  checkoutBodyForRegistration = createCheckoutDataBody(ticketsQuantity.length, values, {
3289
3376
  emailLogged: emailLogged,
3290
3377
  firstNameLogged: firstNameLogged,
3291
3378
  lastNameLogged: lastNameLogged
3292
3379
  }, showDOB);
3293
3380
  bodyFormData = createRegisterFormData(values, checkoutBodyForRegistration);
3294
- _context6.prev = 18;
3381
+ _context6.prev = 19;
3295
3382
  setLoading(true);
3296
- _context6.next = 22;
3383
+ _context6.next = 23;
3297
3384
  return register(bodyFormData);
3298
3385
 
3299
- case 22:
3386
+ case 23:
3300
3387
  resRegister = _context6.sent;
3301
3388
  _xtfCookie = _get(resRegister, 'headers.x-tf-ecommerce');
3302
3389
  accessToken = _get(resRegister, 'data.data.attributes.access_token');
@@ -3308,12 +3395,12 @@ var BillingInfoContainer = /*#__PURE__*/React.memo(function (_ref3) {
3308
3395
  refreshToken: refreshToken,
3309
3396
  userProfile: userProfile
3310
3397
  });
3311
- _context6.next = 35;
3398
+ _context6.next = 36;
3312
3399
  break;
3313
3400
 
3314
- case 30:
3315
- _context6.prev = 30;
3316
- _context6.t0 = _context6["catch"](18);
3401
+ case 31:
3402
+ _context6.prev = 31;
3403
+ _context6.t0 = _context6["catch"](19);
3317
3404
  setLoading(false);
3318
3405
 
3319
3406
  if (axios.isAxiosError(_context6.t0)) {
@@ -3343,11 +3430,11 @@ var BillingInfoContainer = /*#__PURE__*/React.memo(function (_ref3) {
3343
3430
 
3344
3431
  return _context6.abrupt("return");
3345
3432
 
3346
- case 35:
3347
- _context6.next = 37;
3433
+ case 36:
3434
+ _context6.next = 38;
3348
3435
  return getProfileData();
3349
3436
 
3350
- case 37:
3437
+ case 38:
3351
3438
  profileData = _context6.sent;
3352
3439
  profileSpecifiedData = _get(profileData, 'data.data');
3353
3440
  profileDataObj = setLoggedUserData$1(profileSpecifiedData);
@@ -3357,18 +3444,23 @@ var BillingInfoContainer = /*#__PURE__*/React.memo(function (_ref3) {
3357
3444
  }
3358
3445
 
3359
3446
  checkoutBody = collectCheckoutBody(values, profileDataObj);
3360
- _context6.next = 44;
3447
+
3448
+ if (isWindowDefined) {
3449
+ addAddOnsInAttributes(checkoutBody);
3450
+ }
3451
+
3452
+ _context6.next = 46;
3361
3453
  return postOnCheckout(checkoutBody);
3362
3454
 
3363
- case 44:
3455
+ case 46:
3364
3456
  res = _context6.sent;
3365
3457
  removeReferralKey();
3366
3458
  handleSubmit(values, formikHelpers, eventId, res);
3367
- _context6.next = 53;
3459
+ _context6.next = 55;
3368
3460
  break;
3369
3461
 
3370
- case 49:
3371
- _context6.prev = 49;
3462
+ case 51:
3463
+ _context6.prev = 51;
3372
3464
  _context6.t1 = _context6["catch"](0);
3373
3465
  setLoading(false);
3374
3466
 
@@ -3389,17 +3481,17 @@ var BillingInfoContainer = /*#__PURE__*/React.memo(function (_ref3) {
3389
3481
  onSubmitError(_context6.t1);
3390
3482
  }
3391
3483
 
3392
- case 53:
3393
- _context6.prev = 53;
3484
+ case 55:
3485
+ _context6.prev = 55;
3394
3486
  setLoading(false);
3395
- return _context6.finish(53);
3487
+ return _context6.finish(55);
3396
3488
 
3397
- case 56:
3489
+ case 58:
3398
3490
  case "end":
3399
3491
  return _context6.stop();
3400
3492
  }
3401
3493
  }
3402
- }, _callee6, null, [[0, 49, 53, 56], [18, 30]]);
3494
+ }, _callee6, null, [[0, 51, 55, 58], [19, 31]]);
3403
3495
  }));
3404
3496
 
3405
3497
  function onSubmit(_x2, _x3) {
@@ -3486,7 +3578,7 @@ var BillingInfoContainer = /*#__PURE__*/React.memo(function (_ref3) {
3486
3578
  return ['password', 'confirmPassword', 'password-info'].includes(element.name) && isLoggedIn ? null : React.createElement(React.Fragment, {
3487
3579
  key: element.uniqueId
3488
3580
  }, React.createElement("div", {
3489
- className: element.className
3581
+ className: element.className + " " + (props == null ? void 0 : props.errors[element.name])
3490
3582
  }, element.component ? element.component : React.createElement(Field, {
3491
3583
  setPhoneValidationIsLoading: element.type === 'phone' ? setPhoneValidationIsLoading : undefined,
3492
3584
  name: element.name,
@@ -3958,7 +4050,8 @@ var initialOrderValues = {
3958
4050
  quantity: '',
3959
4051
  price: '',
3960
4052
  total: '',
3961
- currency: ''
4053
+ currency: '',
4054
+ add_ons: []
3962
4055
  };
3963
4056
  var initialReviewValues = {
3964
4057
  order_details: {
@@ -4059,7 +4152,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
4059
4152
  quantity: ticket == null ? void 0 : ticket.quantity,
4060
4153
  price: ticket == null ? void 0 : ticket.price,
4061
4154
  total: order_details == null ? void 0 : order_details.total,
4062
- currency: order_details == null ? void 0 : order_details.currency
4155
+ currency: order_details == null ? void 0 : order_details.currency,
4156
+ add_ons: (order_details == null ? void 0 : order_details.add_ons) || []
4063
4157
  };
4064
4158
  setOrderData(_orderData);
4065
4159
  onGetPaymentDataSuccess(response.data);
@@ -4230,6 +4324,13 @@ var PaymentContainer = function PaymentContainer(_ref) {
4230
4324
  className = _field$className === void 0 ? '' : _field$className,
4231
4325
  _field$normalizer = field.normalizer,
4232
4326
  normalizer = _field$normalizer === void 0 ? _identity : _field$normalizer;
4327
+ var currency = orderData.currency;
4328
+ var value = orderData[id];
4329
+
4330
+ if (field.id === 'add_ons' && _isEmpty(value)) {
4331
+ return false;
4332
+ }
4333
+
4233
4334
  return React.createElement("div", {
4234
4335
  key: id,
4235
4336
  className: "order_info_block"
@@ -4237,7 +4338,16 @@ var PaymentContainer = function PaymentContainer(_ref) {
4237
4338
  className: "order_info_title"
4238
4339
  }, label), React.createElement("div", {
4239
4340
  className: className + " order_info_text"
4240
- }, normalizer(orderData[id], orderData.currency)));
4341
+ }, typeof value === 'string' ? normalizer(value, currency) : _map(value, function (item) {
4342
+ return React.createElement("div", {
4343
+ key: item.id,
4344
+ className: "add-on-container"
4345
+ }, React.createElement("span", null, item.quantity), React.createElement("span", {
4346
+ className: "add-on-x"
4347
+ }, ' x '), React.createElement("span", null, item.groupName ? item.groupName + ' - ' : ''), React.createElement("span", null, item.name), React.createElement("span", null, ' - '), React.createElement("span", null, currencyNormalizerCreator(createFixedFloatNormalizer(2)(parseFloat(item.price)), currency)), React.createElement("span", {
4348
+ className: "add-on-each"
4349
+ }, ' each'));
4350
+ })));
4241
4351
  })), enablePaymentPlan && React.createElement("div", {
4242
4352
  className: "payment_toggle"
4243
4353
  }, React.createElement("label", {
@@ -5185,15 +5295,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
5185
5295
  _ref$contentStyle = _ref.contentStyle,
5186
5296
  contentStyle = _ref$contentStyle === void 0 ? {} : _ref$contentStyle,
5187
5297
  _ref$onAddToCartError = _ref.onAddToCartError,
5188
- onAddToCartError = _ref$onAddToCartError === void 0 ? function () {} : _ref$onAddToCartError,
5298
+ onAddToCartError = _ref$onAddToCartError === void 0 ? _identity : _ref$onAddToCartError,
5189
5299
  _ref$onGetTicketsSucc = _ref.onGetTicketsSuccess,
5190
- onGetTicketsSuccess = _ref$onGetTicketsSucc === void 0 ? function () {} : _ref$onGetTicketsSucc,
5300
+ onGetTicketsSuccess = _ref$onGetTicketsSucc === void 0 ? _identity : _ref$onGetTicketsSucc,
5191
5301
  _ref$onGetTicketsErro = _ref.onGetTicketsError,
5192
- onGetTicketsError = _ref$onGetTicketsErro === void 0 ? function () {} : _ref$onGetTicketsErro,
5302
+ onGetTicketsError = _ref$onGetTicketsErro === void 0 ? _identity : _ref$onGetTicketsErro,
5193
5303
  _ref$onLogoutSuccess = _ref.onLogoutSuccess,
5194
- onLogoutSuccess = _ref$onLogoutSuccess === void 0 ? function () {} : _ref$onLogoutSuccess,
5304
+ onLogoutSuccess = _ref$onLogoutSuccess === void 0 ? _identity : _ref$onLogoutSuccess,
5195
5305
  _ref$onLogoutError = _ref.onLogoutError,
5196
- onLogoutError = _ref$onLogoutError === void 0 ? function () {} : _ref$onLogoutError,
5306
+ onLogoutError = _ref$onLogoutError === void 0 ? _identity : _ref$onLogoutError,
5197
5307
  _ref$theme = _ref.theme,
5198
5308
  theme = _ref$theme === void 0 ? 'light' : _ref$theme,
5199
5309
  _ref$queryPromoCode = _ref.queryPromoCode,
@@ -5419,6 +5529,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5419
5529
 
5420
5530
  if (axios.isAxiosError(_context3.t0)) {
5421
5531
  onGetTicketsError(_context3.t0);
5532
+ setError(_get(_context3.t0, 'response.data.message'));
5422
5533
  }
5423
5534
 
5424
5535
  case 16:
@@ -5463,7 +5574,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5463
5574
  var _ref4 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
5464
5575
  var _product_options, _product_options2, _ticket_types;
5465
5576
 
5466
- var ticket, optionName, ticketId, ticketQuantity, data, result, _result$data$data$att, _result$data, _result$data$data, _result$data$data$att2, _result$data$data$att3, _result$data2, _result$data2$data, _result$data2$data$at, _result$data$data$att4, _result$data3, _result$data3$data, _result$data3$data$at, _result$data$data$att5, _result$data4, _result$data4$data, _result$data4$data$at, skipBillingPage, nameIsRequired, ageIsRequired, phoneIsRequired, hash, total, _isWindowDefined, userData, access_token, checkoutBody, checkoutResult;
5577
+ var ticket, optionName, ticketId, ticketQuantity, data, result, pageConfigsDataResponse, _pageConfigsData$skip, _pageConfigsData$name, _pageConfigsData$age_, _pageConfigsData$phon, _pageConfigsData$has_, pageConfigsData, skipBillingPage, nameIsRequired, ageIsRequired, phoneIsRequired, hasAddOn, hash, total, _isWindowDefined, userData, access_token, checkoutBody, checkoutResult;
5467
5578
 
5468
5579
  return runtime_1.wrap(function _callee2$(_context2) {
5469
5580
  while (1) {
@@ -5494,52 +5605,60 @@ var TicketsContainer = function TicketsContainer(_ref) {
5494
5605
 
5495
5606
  case 9:
5496
5607
  result = _context2.sent;
5608
+ _context2.next = 12;
5609
+ return getCheckoutPageConfigs();
5497
5610
 
5498
- if (!(result.status === 200)) {
5499
- _context2.next = 33;
5611
+ case 12:
5612
+ pageConfigsDataResponse = _context2.sent;
5613
+
5614
+ if (!(result.status === 200 && pageConfigsDataResponse.status === 200)) {
5615
+ _context2.next = 39;
5500
5616
  break;
5501
5617
  }
5502
5618
 
5503
- skipBillingPage = (_result$data$data$att = result == null ? void 0 : (_result$data = result.data) == null ? void 0 : (_result$data$data = _result$data.data) == null ? void 0 : (_result$data$data$att2 = _result$data$data.attributes) == null ? void 0 : _result$data$data$att2.skip_billing_page) != null ? _result$data$data$att : false;
5504
- nameIsRequired = (_result$data$data$att3 = result == null ? void 0 : (_result$data2 = result.data) == null ? void 0 : (_result$data2$data = _result$data2.data) == null ? void 0 : (_result$data2$data$at = _result$data2$data.attributes) == null ? void 0 : _result$data2$data$at.names_required) != null ? _result$data$data$att3 : false;
5505
- ageIsRequired = (_result$data$data$att4 = result == null ? void 0 : (_result$data3 = result.data) == null ? void 0 : (_result$data3$data = _result$data3.data) == null ? void 0 : (_result$data3$data$at = _result$data3$data.attributes) == null ? void 0 : _result$data3$data$at.age_required) != null ? _result$data$data$att4 : false;
5506
- phoneIsRequired = (_result$data$data$att5 = result == null ? void 0 : (_result$data4 = result.data) == null ? void 0 : (_result$data4$data = _result$data4.data) == null ? void 0 : (_result$data4$data$at = _result$data4$data.attributes) == null ? void 0 : _result$data4$data$at.phone_required) != null ? _result$data$data$att5 : false;
5619
+ pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {};
5620
+ skipBillingPage = (_pageConfigsData$skip = pageConfigsData.skip_billing_page) != null ? _pageConfigsData$skip : false;
5621
+ nameIsRequired = (_pageConfigsData$name = pageConfigsData.names_required) != null ? _pageConfigsData$name : false;
5622
+ ageIsRequired = (_pageConfigsData$age_ = pageConfigsData.age_required) != null ? _pageConfigsData$age_ : false;
5623
+ phoneIsRequired = (_pageConfigsData$phon = pageConfigsData.phone_required) != null ? _pageConfigsData$phon : false;
5624
+ hasAddOn = (_pageConfigsData$has_ = pageConfigsData.has_add_on) != null ? _pageConfigsData$has_ : false;
5507
5625
  hash = '';
5508
5626
  total = '';
5627
+ _isWindowDefined = typeof window !== 'undefined';
5628
+ _isWindowDefined && window.localStorage.removeItem('add_ons');
5509
5629
 
5510
- if (!skipBillingPage) {
5511
- _context2.next = 32;
5630
+ if (!(skipBillingPage && !hasAddOn)) {
5631
+ _context2.next = 38;
5512
5632
  break;
5513
5633
  }
5514
5634
 
5515
5635
  // Get user data for checkout data
5516
- _isWindowDefined = typeof window !== 'undefined';
5517
5636
  userData = _isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
5518
5637
  access_token = _isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
5519
5638
  checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketQuantity, userData);
5520
5639
 
5521
5640
  if (!enableBillingInfoAutoCreate) {
5522
- _context2.next = 28;
5641
+ _context2.next = 34;
5523
5642
  break;
5524
5643
  }
5525
5644
 
5526
- _context2.next = 25;
5645
+ _context2.next = 31;
5527
5646
  return postOnCheckout(checkoutBody, access_token);
5528
5647
 
5529
- case 25:
5648
+ case 31:
5530
5649
  _context2.t0 = _context2.sent;
5531
- _context2.next = 29;
5650
+ _context2.next = 35;
5532
5651
  break;
5533
5652
 
5534
- case 28:
5653
+ case 34:
5535
5654
  _context2.t0 = null;
5536
5655
 
5537
- case 29:
5656
+ case 35:
5538
5657
  checkoutResult = _context2.t0;
5539
5658
  hash = _get(checkoutResult, 'data.data.attributes.hash');
5540
5659
  total = _get(checkoutResult, 'data.data.attributes.total');
5541
5660
 
5542
- case 32:
5661
+ case 38:
5543
5662
  onAddToCartSuccess({
5544
5663
  skip_billing_page: skipBillingPage,
5545
5664
  names_required: nameIsRequired,
@@ -5547,15 +5666,16 @@ var TicketsContainer = function TicketsContainer(_ref) {
5547
5666
  age_required: ageIsRequired,
5548
5667
  event_id: String(eventId),
5549
5668
  hash: hash,
5550
- total: total
5669
+ total: total,
5670
+ hasAddOn: hasAddOn
5551
5671
  });
5552
5672
 
5553
- case 33:
5554
- _context2.next = 38;
5673
+ case 39:
5674
+ _context2.next = 44;
5555
5675
  break;
5556
5676
 
5557
- case 35:
5558
- _context2.prev = 35;
5677
+ case 41:
5678
+ _context2.prev = 41;
5559
5679
  _context2.t1 = _context2["catch"](6);
5560
5680
 
5561
5681
  if (axios.isAxiosError(_context2.t1)) {
@@ -5563,17 +5683,17 @@ var TicketsContainer = function TicketsContainer(_ref) {
5563
5683
  setError(_get(_context2.t1, 'response.data.message'));
5564
5684
  }
5565
5685
 
5566
- case 38:
5567
- _context2.prev = 38;
5686
+ case 44:
5687
+ _context2.prev = 44;
5568
5688
  setHandleBookIsLoading(false);
5569
- return _context2.finish(38);
5689
+ return _context2.finish(44);
5570
5690
 
5571
- case 41:
5691
+ case 47:
5572
5692
  case "end":
5573
5693
  return _context2.stop();
5574
5694
  }
5575
5695
  }
5576
- }, _callee2, null, [[6, 35, 38, 41]]);
5696
+ }, _callee2, null, [[6, 41, 44, 47]]);
5577
5697
  }));
5578
5698
 
5579
5699
  return function handleBook() {
@@ -6642,7 +6762,7 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
6642
6762
  window.location.assign('/orders');
6643
6763
  }
6644
6764
  }
6645
- }, "Back to Orders")))), React.createElement("div", {
6765
+ }, "Back to Orders")))), !(data != null && data.disable_referral) && React.createElement("div", {
6646
6766
  className: "personal-link"
6647
6767
  }, React.createElement("div", {
6648
6768
  className: "link-item"
@@ -6948,6 +7068,695 @@ var TicketResaleContainer = function TicketResaleContainer(_ref) {
6948
7068
  }, React.createElement("h3", null, successMessage ? successMessage : error)));
6949
7069
  };
6950
7070
 
7071
+ var addonsWithGroupsAdapter = function addonsWithGroupsAdapter(data) {
7072
+ var addonsData = _extends({}, data);
7073
+
7074
+ var addOnsGroups = _get(addonsData, 'add_on_groups', []);
7075
+
7076
+ var addons = _get(addonsData, 'add_ons', []);
7077
+
7078
+ if (!_isEmpty(addOnsGroups)) {
7079
+ var addOnGroupsWithVariants = [];
7080
+ var addOnsWithoutVariants = [];
7081
+ addons.forEach(function (addon) {
7082
+ if (addon.attributes.addOnGroupId) {
7083
+ // Collect addons groups inside with their variants
7084
+ var currentGroupId = addon.attributes.addOnGroupId;
7085
+ var exsistingGroupIndex = addOnGroupsWithVariants.findIndex(function (item) {
7086
+ return item.id === currentGroupId;
7087
+ });
7088
+
7089
+ if (addOnGroupsWithVariants[exsistingGroupIndex]) {
7090
+ var addOnGroup = addOnGroupsWithVariants[exsistingGroupIndex];
7091
+ addOnGroupsWithVariants[exsistingGroupIndex] = _extends({}, addOnGroup, {
7092
+ variants: [].concat(addOnGroup.variants, addon.attributes)
7093
+ });
7094
+ } else {
7095
+ var group = addOnsGroups.find(function (group) {
7096
+ return group.attributes.id === currentGroupId;
7097
+ }) || {};
7098
+ addOnGroupsWithVariants.push(_extends({}, group.attributes, {
7099
+ variants: [].concat(addon.attributes)
7100
+ }));
7101
+ }
7102
+ } else {
7103
+ addOnsWithoutVariants.push(addon.attributes);
7104
+ }
7105
+ });
7106
+ return addOnGroupsWithVariants.concat(addOnsWithoutVariants);
7107
+ } // Adapt only simple addons data
7108
+
7109
+
7110
+ var adaptedAddons = addons.map(function (addon) {
7111
+ return _extends({}, addon.attributes);
7112
+ });
7113
+ return adaptedAddons;
7114
+ };
7115
+ var cartAdapter = function cartAdapter(cart) {
7116
+ var cartData = _get(cart, 'data.data.attributes', []);
7117
+
7118
+ var expiresAt = cartData.expiresAt,
7119
+ carts_arr = cartData.cart;
7120
+
7121
+ var _ref = carts_arr[0] || {},
7122
+ id = _ref.id,
7123
+ quantity = _ref.quantity;
7124
+
7125
+ return {
7126
+ id: id,
7127
+ quantity: quantity,
7128
+ expiresAt: expiresAt
7129
+ };
7130
+ };
7131
+
7132
+ var AddonComponent = function AddonComponent(_ref) {
7133
+ var _ref$classNamePrefix = _ref.classNamePrefix,
7134
+ classNamePrefix = _ref$classNamePrefix === void 0 ? '' : _ref$classNamePrefix,
7135
+ data = _ref.data,
7136
+ selectOptions = _ref.selectOptions,
7137
+ _ref$handleAddonChang = _ref.handleAddonChange,
7138
+ handleAddonChange = _ref$handleAddonChang === void 0 ? _identity : _ref$handleAddonChang;
7139
+ var id = data.id,
7140
+ name = data.name,
7141
+ active = data.active,
7142
+ stock = data.stock;
7143
+ return React.createElement("div", {
7144
+ key: id,
7145
+ className: classNamePrefix + "_product_select_container"
7146
+ }, React.createElement("div", {
7147
+ className: classNamePrefix + "_product_select_block",
7148
+ key: name
7149
+ }, React.createElement("div", {
7150
+ className: classNamePrefix + "_product_size"
7151
+ }, name), React.createElement("div", {
7152
+ className: classNamePrefix + "_product_qty_select_block"
7153
+ }, !active || !_isNull(stock) && stock <= 0 ? React.createElement("div", {
7154
+ className: "sold_out"
7155
+ }, "SOLD OUT") : React.createElement("div", {
7156
+ className: classNamePrefix + "_product_qty_select"
7157
+ }, React.createElement(Field, {
7158
+ name: id,
7159
+ selectOptions: selectOptions,
7160
+ component: SelectField,
7161
+ onChange: function onChange(e) {
7162
+ var value = e.target.value;
7163
+ handleAddonChange(id, value);
7164
+ }
7165
+ })))));
7166
+ };
7167
+
7168
+ var getNormalizedPrice = function getNormalizedPrice(value) {
7169
+ var minimizedValue = Number(value) / 100;
7170
+ var normalized = minimizedValue.toFixed(2);
7171
+ return normalized;
7172
+ };
7173
+
7174
+ var generateSelectOptions = function generateSelectOptions(minCount, maxCount) {
7175
+ if (minCount === void 0) {
7176
+ minCount = 1;
7177
+ }
7178
+
7179
+ if (maxCount === void 0) {
7180
+ maxCount = 10;
7181
+ }
7182
+
7183
+ var options = [];
7184
+
7185
+ for (var i = minCount; i <= maxCount; i++) {
7186
+ options.push({
7187
+ label: i,
7188
+ value: i
7189
+ });
7190
+ }
7191
+
7192
+ return options;
7193
+ };
7194
+
7195
+ var generateStockBasedOnLimitations = function generateStockBasedOnLimitations(addon, ticketQuantity) {
7196
+ // Generate addon available stock count based on limitations
7197
+ var flagLimitToTicketQuantity = addon.flagLimitToTicketQuantity,
7198
+ maxQuantity = addon.maxQuantity,
7199
+ limitPerTicket = addon.limitPerTicket;
7200
+ var allowedStockCount; // Generate stock
7201
+
7202
+ if (flagLimitToTicketQuantity) {
7203
+ // Limited to ticket quantity case
7204
+ allowedStockCount = ticketQuantity;
7205
+ } else if (maxQuantity && limitPerTicket) {
7206
+ var stockBasedOnLimitPerTicket = limitPerTicket * ticketQuantity; // Both maximum quantity and limited to per ticket selected case, stock is minimum of them
7207
+
7208
+ allowedStockCount = maxQuantity <= stockBasedOnLimitPerTicket ? maxQuantity : stockBasedOnLimitPerTicket;
7209
+ } else if (maxQuantity && !limitPerTicket) {
7210
+ // Limited to maximum quantity case
7211
+ allowedStockCount = maxQuantity;
7212
+ } else if (!maxQuantity && limitPerTicket) {
7213
+ // Limited to per ticket case
7214
+ allowedStockCount = limitPerTicket * ticketQuantity;
7215
+ }
7216
+
7217
+ return Number(allowedStockCount);
7218
+ };
7219
+
7220
+ var filterStockBasedOnAvailability = function filterStockBasedOnAvailability(generatedStock, availableStock) {
7221
+ // Check generated stock count admissibility with addon stock availability
7222
+ var filteredStockCount = generatedStock;
7223
+
7224
+ if (generatedStock) {
7225
+ if (generatedStock > availableStock && !_isNull(availableStock)) {
7226
+ filteredStockCount = availableStock;
7227
+ }
7228
+ } else {
7229
+ // Not set any restriction
7230
+ // Here 10 value is business logic
7231
+ filteredStockCount = 10;
7232
+
7233
+ if (!_isNull(availableStock) && availableStock < filteredStockCount) {
7234
+ filteredStockCount = availableStock;
7235
+ }
7236
+ }
7237
+
7238
+ return filteredStockCount;
7239
+ };
7240
+
7241
+ var getAddonSelectOptions = function getAddonSelectOptions(addons, choosedTicketCount) {
7242
+ var addonsWithOptions = {};
7243
+ var groupsWithSelectedVariantsInfo = {};
7244
+ var groupsWithVariants = {};
7245
+ addons.forEach(function (addon) {
7246
+ // Here addon can act either as simple Addon or Addon Group
7247
+ var id = addon.id,
7248
+ simpleAddonStock = addon.stock,
7249
+ variants = addon.variants,
7250
+ active = addon.active,
7251
+ flagLimitToTicketQuantity = addon.flagLimitToTicketQuantity,
7252
+ maxQuantity = addon.maxQuantity,
7253
+ limitPerTicket = addon.limitPerTicket;
7254
+
7255
+ if (variants) {
7256
+ // Addon Group with inside addon variants case
7257
+ variants.forEach(function (variant) {
7258
+ var variantId = variant.id,
7259
+ variantStock = variant.stock; // null checking is for unlimited stock value
7260
+
7261
+ if (active && (variantStock > 0 || _isNull(variantStock))) {
7262
+ var _extends3;
7263
+
7264
+ // Generate Addon Group allowed stock count based on limitations
7265
+ var stockBasedOnLimitation = generateStockBasedOnLimitations(addon, choosedTicketCount); // Detect if group has limitation or not
7266
+
7267
+ if (flagLimitToTicketQuantity || maxQuantity || limitPerTicket) {
7268
+ // Generate Group with inside variants info
7269
+ if (groupsWithSelectedVariantsInfo[id]) {
7270
+ var _extends2;
7271
+
7272
+ // Set group limit
7273
+ if (groupsWithSelectedVariantsInfo[id].limit < stockBasedOnLimitation) {
7274
+ groupsWithSelectedVariantsInfo[id].limit = stockBasedOnLimitation;
7275
+ } // Set choosed variants info
7276
+
7277
+
7278
+ groupsWithSelectedVariantsInfo[id] = _extends({}, groupsWithSelectedVariantsInfo[id], {
7279
+ choosedVariants: _extends({}, groupsWithSelectedVariantsInfo[id].choosedVariants, (_extends2 = {}, _extends2[variantId] = 0, _extends2))
7280
+ });
7281
+ } else {
7282
+ var _choosedVariants;
7283
+
7284
+ groupsWithSelectedVariantsInfo[id] = {
7285
+ limit: stockBasedOnLimitation,
7286
+ selectedCount: 0,
7287
+ choosedVariants: (_choosedVariants = {}, _choosedVariants[variantId] = 0, _choosedVariants)
7288
+ };
7289
+ }
7290
+ } // Check stock admissibility with addon stock availability
7291
+
7292
+
7293
+ var allowedVariantStockCount = filterStockBasedOnAvailability(stockBasedOnLimitation, variantStock); // Generate options for variant
7294
+
7295
+ var variantOptions = generateSelectOptions(0, allowedVariantStockCount);
7296
+ addonsWithOptions[variantId] = [].concat(variantOptions); // Generate Group with its variants list
7297
+
7298
+ groupsWithVariants[id] = _extends({}, groupsWithVariants[id], (_extends3 = {}, _extends3[variantId] = allowedVariantStockCount, _extends3));
7299
+ }
7300
+ });
7301
+ } else {
7302
+ // Simple addon case, null checking is for unlimited stock value
7303
+ if (active && (simpleAddonStock > 0 || _isNull(simpleAddonStock))) {
7304
+ // Generate Addon Group allowed stock count based on limitations
7305
+ var stockBasedOnLimitation = generateStockBasedOnLimitations(addon, choosedTicketCount); // Check stock admissibility with addon stock availability
7306
+
7307
+ var allowedVariantStockCount = filterStockBasedOnAvailability(stockBasedOnLimitation, simpleAddonStock);
7308
+ var addonOptions = generateSelectOptions(0, allowedVariantStockCount);
7309
+ addonsWithOptions[id] = [].concat(addonOptions);
7310
+ }
7311
+ }
7312
+ });
7313
+ return {
7314
+ addonsWithOptions: addonsWithOptions,
7315
+ groupsWithSelectedVariantsInfo: groupsWithSelectedVariantsInfo,
7316
+ groupsWithVariants: groupsWithVariants
7317
+ };
7318
+ };
7319
+ var getTicketRelatedAddons = function getTicketRelatedAddons(addons, ticketId) {
7320
+ // Filter addons based on choosed ticket
7321
+ var filteredAddons = addons.filter(function (addon) {
7322
+ return _isNull(addon.prerequisiteTicketTypeIds) || addon.prerequisiteTicketTypeIds.includes(ticketId);
7323
+ });
7324
+ return filteredAddons;
7325
+ };
7326
+ var getSortedAddons = function getSortedAddons(addons, sortDirection) {
7327
+ if (sortDirection === void 0) {
7328
+ sortDirection = 'asc';
7329
+ }
7330
+
7331
+ var addonsCopy = [].concat(addons);
7332
+ addonsCopy.forEach(function (addon) {
7333
+ if (addon.variants) {
7334
+ var unsortedVariants = [];
7335
+ addon.variants.forEach(function (variant) {
7336
+ unsortedVariants.push(_extends({}, variant, {
7337
+ sortOrder: Number(variant.sortOrder)
7338
+ }));
7339
+ });
7340
+ addon.sortOrder = Number(addon.variants[0].sortOrder);
7341
+
7342
+ var sortedVariants = _sortBy(unsortedVariants, function (variant) {
7343
+ return variant.sortOrder;
7344
+ });
7345
+
7346
+ addon.variants = sortedVariants;
7347
+ } else {
7348
+ addon.sortOrder = Number(addon.sortOrder);
7349
+ }
7350
+ });
7351
+
7352
+ var sortedAddons = _sortBy(addonsCopy, function (addon) {
7353
+ return addon.sortOrder;
7354
+ });
7355
+
7356
+ if (sortDirection === 'desc') {
7357
+ return _reverse(sortedAddons);
7358
+ }
7359
+
7360
+ return sortedAddons;
7361
+ };
7362
+ var isAtLeastOneAddonSelected = function isAtLeastOneAddonSelected(value) {
7363
+ var selectedAddons = Object.fromEntries(Object.entries(value).filter(function (_ref) {
7364
+ var count = _ref[1];
7365
+ return Number(count) !== 0;
7366
+ }));
7367
+ return !_isEmpty(selectedAddons);
7368
+ };
7369
+
7370
+ var AddonsContainter = function AddonsContainter(_ref) {
7371
+ var _ref$classNamePrefix = _ref.classNamePrefix,
7372
+ classNamePrefix = _ref$classNamePrefix === void 0 ? 'add_on' : _ref$classNamePrefix,
7373
+ _ref$enableBillingInf = _ref.enableBillingInfoAutoCreate,
7374
+ enableBillingInfoAutoCreate = _ref$enableBillingInf === void 0 ? true : _ref$enableBillingInf,
7375
+ _ref$enableTimer = _ref.enableTimer,
7376
+ enableTimer = _ref$enableTimer === void 0 ? false : _ref$enableTimer,
7377
+ _ref$onGetAddonsPageI = _ref.onGetAddonsPageInfoSuccess,
7378
+ onGetAddonsPageInfoSuccess = _ref$onGetAddonsPageI === void 0 ? _identity : _ref$onGetAddonsPageI,
7379
+ _ref$onGetAddonsPageI2 = _ref.onGetAddonsPageInfoError,
7380
+ onGetAddonsPageInfoError = _ref$onGetAddonsPageI2 === void 0 ? _identity : _ref$onGetAddonsPageI2,
7381
+ _ref$onPostCheckoutSu = _ref.onPostCheckoutSuccess,
7382
+ onPostCheckoutSuccess = _ref$onPostCheckoutSu === void 0 ? _identity : _ref$onPostCheckoutSu,
7383
+ _ref$onPostCheckoutEr = _ref.onPostCheckoutError,
7384
+ onPostCheckoutError = _ref$onPostCheckoutEr === void 0 ? _identity : _ref$onPostCheckoutEr,
7385
+ _ref$onConfirmSelecti = _ref.onConfirmSelectionSuccess,
7386
+ onConfirmSelectionSuccess = _ref$onConfirmSelecti === void 0 ? _identity : _ref$onConfirmSelecti,
7387
+ _ref$onConfirmSelecti2 = _ref.onConfirmSelectionError,
7388
+ onConfirmSelectionError = _ref$onConfirmSelecti2 === void 0 ? _identity : _ref$onConfirmSelecti2,
7389
+ _ref$onCountdownFinis = _ref.onCountdownFinish,
7390
+ _onCountdownFinish = _ref$onCountdownFinis === void 0 ? _identity : _ref$onCountdownFinis;
7391
+
7392
+ var eventId = getQueryVariable('event_id');
7393
+
7394
+ var _useState = useState([]),
7395
+ addons = _useState[0],
7396
+ setAddons = _useState[1];
7397
+
7398
+ var _useState2 = useState({}),
7399
+ addonsOptions = _useState2[0],
7400
+ setAddonsOptions = _useState2[1];
7401
+
7402
+ var _useState3 = useState({}),
7403
+ groupsWithSelectedVariants = _useState3[0],
7404
+ setGroupsWithSelectedVariants = _useState3[1];
7405
+
7406
+ var _useState4 = useState({}),
7407
+ groupsWithInitialVariantsValues = _useState4[0],
7408
+ setGroupsWithInitialVariantsValues = _useState4[1];
7409
+
7410
+ var _useState5 = useState(true),
7411
+ loading = _useState5[0],
7412
+ setLoading = _useState5[1];
7413
+
7414
+ var _useState6 = useState(0),
7415
+ cartExpirationTime = _useState6[0],
7416
+ setCartExpirationTime = _useState6[1];
7417
+
7418
+ useEffect(function () {
7419
+ var getAddonsPageInfo = /*#__PURE__*/function () {
7420
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
7421
+ var cart, _cartAdapter, choosedTicketID, quantity, expiresAt, choosedTicketCount, addonsData, adaptedAddons, ticketRelatedAddons, sortedTicketAddons, _getAddonSelectOption, addonsWithOptions, groupsWithSelectedVariantsInfo, groupsWithVariants;
7422
+
7423
+ return runtime_1.wrap(function _callee$(_context) {
7424
+ while (1) {
7425
+ switch (_context.prev = _context.next) {
7426
+ case 0:
7427
+ _context.prev = 0;
7428
+
7429
+ if (!eventId) {
7430
+ _context.next = 21;
7431
+ break;
7432
+ }
7433
+
7434
+ setLoading(true); // Get choosed ticket info (id, count) from Cart request for addons options calculations
7435
+
7436
+ _context.next = 5;
7437
+ return getCart();
7438
+
7439
+ case 5:
7440
+ cart = _context.sent;
7441
+ _cartAdapter = cartAdapter(cart), choosedTicketID = _cartAdapter.id, quantity = _cartAdapter.quantity, expiresAt = _cartAdapter.expiresAt;
7442
+ choosedTicketCount = Number(quantity);
7443
+ setCartExpirationTime(expiresAt); // Get and collect addons data
7444
+
7445
+ _context.next = 11;
7446
+ return getAddons(eventId);
7447
+
7448
+ case 11:
7449
+ addonsData = _context.sent;
7450
+ adaptedAddons = addonsWithGroupsAdapter(addonsData);
7451
+ ticketRelatedAddons = getTicketRelatedAddons(adaptedAddons, choosedTicketID);
7452
+ sortedTicketAddons = getSortedAddons(ticketRelatedAddons);
7453
+ setAddons(sortedTicketAddons); // Collect addons and addon group options
7454
+
7455
+ _getAddonSelectOption = getAddonSelectOptions(adaptedAddons, choosedTicketCount), addonsWithOptions = _getAddonSelectOption.addonsWithOptions, groupsWithSelectedVariantsInfo = _getAddonSelectOption.groupsWithSelectedVariantsInfo, groupsWithVariants = _getAddonSelectOption.groupsWithVariants;
7456
+ setAddonsOptions(addonsWithOptions);
7457
+ setGroupsWithSelectedVariants(groupsWithSelectedVariantsInfo);
7458
+ setGroupsWithInitialVariantsValues(groupsWithVariants); // Success callback props
7459
+
7460
+ onGetAddonsPageInfoSuccess(addonsData);
7461
+
7462
+ case 21:
7463
+ _context.next = 26;
7464
+ break;
7465
+
7466
+ case 23:
7467
+ _context.prev = 23;
7468
+ _context.t0 = _context["catch"](0);
7469
+ // Callback error props
7470
+ onGetAddonsPageInfoError(_context.t0);
7471
+
7472
+ case 26:
7473
+ _context.prev = 26;
7474
+ setLoading(false);
7475
+ return _context.finish(26);
7476
+
7477
+ case 29:
7478
+ case "end":
7479
+ return _context.stop();
7480
+ }
7481
+ }
7482
+ }, _callee, null, [[0, 23, 26, 29]]);
7483
+ }));
7484
+
7485
+ return function getAddonsPageInfo() {
7486
+ return _ref2.apply(this, arguments);
7487
+ };
7488
+ }();
7489
+
7490
+ getAddonsPageInfo();
7491
+ }, []);
7492
+
7493
+ var recreateGroupVariantsSelectOptions = function recreateGroupVariantsSelectOptions(groupId, changedGroupd) {
7494
+ var choosedVariants = changedGroupd.choosedVariants,
7495
+ limit = changedGroupd.limit,
7496
+ selectedCount = changedGroupd.selectedCount;
7497
+ var remainingGroupStock = limit - selectedCount;
7498
+ var recreatedVariantsOptions = {}; // Regenerate variants allowed stock counts
7499
+
7500
+ for (var variant in choosedVariants) {
7501
+ var variantId = variant;
7502
+ var variantCurrSelectedValue = choosedVariants[variant];
7503
+ var allowedOptionCount = void 0; // Formula for regenerating
7504
+
7505
+ if (remainingGroupStock >= groupsWithInitialVariantsValues[groupId][variantId] - variantCurrSelectedValue) {
7506
+ allowedOptionCount = groupsWithInitialVariantsValues[groupId][variantId];
7507
+ } else {
7508
+ allowedOptionCount = remainingGroupStock + variantCurrSelectedValue;
7509
+ }
7510
+
7511
+ recreatedVariantsOptions[variantId] = generateSelectOptions(0, allowedOptionCount);
7512
+ }
7513
+
7514
+ setAddonsOptions(function (prevState) {
7515
+ return Object.assign({}, prevState, recreatedVariantsOptions);
7516
+ });
7517
+ };
7518
+
7519
+ var onFieldChange = function onFieldChange(id, value, addon) {
7520
+ // If changeableGroup exsists it means that group with limitation variant was changed
7521
+ var changeableGroup = groupsWithSelectedVariants[addon.id];
7522
+
7523
+ if (changeableGroup) {
7524
+ var _extends2, _extends3;
7525
+
7526
+ var currGroupId = addon.id;
7527
+ var currSelectedVariantId = id;
7528
+ var currSelectedVariantCount = Number(value);
7529
+ var currSelectedVariantPrevCount = groupsWithSelectedVariants[currGroupId].choosedVariants[currSelectedVariantId];
7530
+ var currSelectedGroupCount = changeableGroup.selectedCount + (currSelectedVariantCount - currSelectedVariantPrevCount); // Update Group info
7531
+
7532
+ var updatedGroupsWithSelectedVariants = _extends({}, groupsWithSelectedVariants, (_extends3 = {}, _extends3[currGroupId] = _extends({}, groupsWithSelectedVariants[currGroupId], {
7533
+ selectedCount: currSelectedGroupCount,
7534
+ choosedVariants: _extends({}, groupsWithSelectedVariants[currGroupId].choosedVariants, (_extends2 = {}, _extends2[currSelectedVariantId] = currSelectedVariantCount, _extends2))
7535
+ }), _extends3));
7536
+
7537
+ setGroupsWithSelectedVariants(updatedGroupsWithSelectedVariants); // Recreate Select Options for Addon Group Variants
7538
+
7539
+ recreateGroupVariantsSelectOptions(currGroupId, updatedGroupsWithSelectedVariants[currGroupId]);
7540
+ }
7541
+ };
7542
+
7543
+ var handleConfirm = /*#__PURE__*/function () {
7544
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(values, skipAddonPage) {
7545
+ var _pageConfigsData$skip, _pageConfigsData$name, _pageConfigsData$age_, _pageConfigsData$phon, _pageConfigsData$has_, pageConfigsDataResponse, pageConfigsData, isWindowDefined, skipBillingPage, nameIsRequired, ageIsRequired, phoneIsRequired, hasAddOn, ticketsQuantity, userData, checkoutBody, checkoutResponse, hash, total;
7546
+
7547
+ return runtime_1.wrap(function _callee2$(_context2) {
7548
+ while (1) {
7549
+ switch (_context2.prev = _context2.next) {
7550
+ case 0:
7551
+ _context2.prev = 0;
7552
+ _context2.next = 3;
7553
+ return getCheckoutPageConfigs();
7554
+
7555
+ case 3:
7556
+ pageConfigsDataResponse = _context2.sent;
7557
+ pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {};
7558
+ isWindowDefined = typeof window !== 'undefined';
7559
+ skipBillingPage = (_pageConfigsData$skip = pageConfigsData.skip_billing_page) != null ? _pageConfigsData$skip : false;
7560
+ nameIsRequired = (_pageConfigsData$name = pageConfigsData.names_required) != null ? _pageConfigsData$name : false;
7561
+ ageIsRequired = (_pageConfigsData$age_ = pageConfigsData.age_required) != null ? _pageConfigsData$age_ : false;
7562
+ phoneIsRequired = (_pageConfigsData$phon = pageConfigsData.phone_required) != null ? _pageConfigsData$phon : false;
7563
+ hasAddOn = (_pageConfigsData$has_ = pageConfigsData.has_add_on) != null ? _pageConfigsData$has_ : false;
7564
+
7565
+ if (!(skipBillingPage && enableBillingInfoAutoCreate)) {
7566
+ _context2.next = 33;
7567
+ break;
7568
+ }
7569
+
7570
+ ticketsQuantity = window.localStorage.getItem('quantity');
7571
+ userData = JSON.parse(window.localStorage.getItem('user_data') || '{}');
7572
+ checkoutBody = createCheckoutDataBodyWithDefaultHolder(Number(ticketsQuantity) || 0, userData);
7573
+ _context2.prev = 15;
7574
+ _context2.next = 18;
7575
+ return postOnCheckout(_extends({}, checkoutBody, {
7576
+ attributes: _extends({}, checkoutBody.attributes, !skipAddonPage && {
7577
+ add_ons: values
7578
+ })
7579
+ }));
7580
+
7581
+ case 18:
7582
+ checkoutResponse = _context2.sent;
7583
+ hash = _get(checkoutResponse, 'data.data.attributes.hash');
7584
+ total = _get(checkoutResponse, 'data.data.attributes.total');
7585
+ isWindowDefined && window.localStorage.removeItem('quantity');
7586
+ isWindowDefined && window.localStorage.removeItem('add_ons');
7587
+ onPostCheckoutSuccess(checkoutResponse == null ? void 0 : checkoutResponse.data);
7588
+ onConfirmSelectionSuccess({
7589
+ skip_billing_page: skipBillingPage,
7590
+ names_required: nameIsRequired,
7591
+ phone_required: phoneIsRequired,
7592
+ age_required: ageIsRequired,
7593
+ event_id: String(eventId),
7594
+ hash: hash,
7595
+ total: total,
7596
+ hasAddOn: hasAddOn
7597
+ });
7598
+ _context2.next = 31;
7599
+ break;
7600
+
7601
+ case 27:
7602
+ _context2.prev = 27;
7603
+ _context2.t0 = _context2["catch"](15);
7604
+ onPostCheckoutError(_context2.t0);
7605
+ onConfirmSelectionError(_context2.t0);
7606
+
7607
+ case 31:
7608
+ _context2.next = 34;
7609
+ break;
7610
+
7611
+ case 33:
7612
+ if (isWindowDefined) {
7613
+ if (!skipAddonPage) {
7614
+ window.localStorage.setItem('add_ons', JSON.stringify(values));
7615
+ }
7616
+
7617
+ onConfirmSelectionSuccess({
7618
+ skip_billing_page: skipBillingPage && enableBillingInfoAutoCreate,
7619
+ names_required: nameIsRequired,
7620
+ phone_required: phoneIsRequired,
7621
+ age_required: ageIsRequired,
7622
+ event_id: String(eventId),
7623
+ hasAddOn: hasAddOn
7624
+ });
7625
+ } else {
7626
+ onConfirmSelectionError({
7627
+ error: true,
7628
+ message: 'Window is not defined'
7629
+ });
7630
+ }
7631
+
7632
+ case 34:
7633
+ _context2.next = 39;
7634
+ break;
7635
+
7636
+ case 36:
7637
+ _context2.prev = 36;
7638
+ _context2.t1 = _context2["catch"](0);
7639
+ onConfirmSelectionError(_context2.t1);
7640
+
7641
+ case 39:
7642
+ case "end":
7643
+ return _context2.stop();
7644
+ }
7645
+ }
7646
+ }, _callee2, null, [[0, 36], [15, 27]]);
7647
+ }));
7648
+
7649
+ return function handleConfirm(_x, _x2) {
7650
+ return _ref3.apply(this, arguments);
7651
+ };
7652
+ }();
7653
+
7654
+ var handleClearAddons = function handleClearAddons() {
7655
+ window.localStorage.removeItem('add_ons');
7656
+ };
7657
+
7658
+ if (loading) {
7659
+ return React.createElement("div", {
7660
+ className: classNamePrefix + "_loader"
7661
+ }, React.createElement(CircularProgress$1, {
7662
+ size: 50
7663
+ }));
7664
+ }
7665
+
7666
+ return React.createElement(React.Fragment, null, !!cartExpirationTime && enableTimer && React.createElement(TimerWidget$1, {
7667
+ expires_at: cartExpirationTime,
7668
+ onCountdownFinish: function onCountdownFinish() {
7669
+ handleClearAddons();
7670
+
7671
+ _onCountdownFinish();
7672
+ }
7673
+ }), React.createElement("div", {
7674
+ className: classNamePrefix + "_container"
7675
+ }, React.createElement("div", {
7676
+ className: classNamePrefix + "_block"
7677
+ }, React.createElement("div", {
7678
+ className: classNamePrefix + "_line_block"
7679
+ }, React.createElement("p", {
7680
+ className: classNamePrefix + "_info_title"
7681
+ }, "Get Your Tickets"), React.createElement("button", {
7682
+ type: "button",
7683
+ className: classNamePrefix + "_skip",
7684
+ onClick: function onClick() {
7685
+ handleClearAddons();
7686
+ handleConfirm({}, true);
7687
+ }
7688
+ }, "Skip")), React.createElement("div", {
7689
+ className: classNamePrefix + "_title"
7690
+ }, "UPGRADES & ADD-ONS"), React.createElement("div", {
7691
+ className: classNamePrefix + "_subtitle"
7692
+ }, "PLEASE SELECT FROM THE OPTIONAL ADD-ONS BELOW"), React.createElement(Formik, {
7693
+ initialValues: {},
7694
+ onSubmit: function onSubmit(values) {
7695
+ handleConfirm(values);
7696
+ }
7697
+ }, function (_ref4) {
7698
+ var values = _ref4.values;
7699
+ var isConfirmDisabled = !isAtLeastOneAddonSelected(values);
7700
+ return React.createElement(Form, {
7701
+ autoComplete: "off",
7702
+ className: "form_holder"
7703
+ }, React.createElement(React.Fragment, null, addons.map(function (addon) {
7704
+ var price = addon.feeIncluded ? addon.price : addon.cost;
7705
+ var isAddonFree = Number(price) === 0;
7706
+ var addonNormalizedPrice = isAddonFree ? 'FREE' : currencyNormalizerCreator(getNormalizedPrice(price), addon.currency);
7707
+ return React.createElement("div", {
7708
+ key: addon.id,
7709
+ className: classNamePrefix + "_product_block"
7710
+ }, React.createElement("div", {
7711
+ className: classNamePrefix + "_product_images"
7712
+ }, addon.imageUrl && React.createElement("div", {
7713
+ className: classNamePrefix + "_product_image_block"
7714
+ }, React.createElement("img", {
7715
+ src: addon.imageUrl,
7716
+ alt: "No Data"
7717
+ }))), React.createElement("div", {
7718
+ className: classNamePrefix + "_product_info_block"
7719
+ }, React.createElement("div", {
7720
+ className: classNamePrefix + "_product_title"
7721
+ }, addon.name), React.createElement("div", {
7722
+ className: classNamePrefix + "_product_price"
7723
+ }, addonNormalizedPrice, !isAddonFree && React.createElement("span", {
7724
+ className: classNamePrefix + "_product_fee"
7725
+ }, addon.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'))), React.createElement("div", {
7726
+ className: classNamePrefix + "_product_desc",
7727
+ dangerouslySetInnerHTML: createMarkup(addon.description)
7728
+ }), React.createElement("div", {
7729
+ className: classNamePrefix + "_product_select_container"
7730
+ }, addon.variants ? addon.variants.map(function (variant) {
7731
+ return (// Group Variants
7732
+ React.createElement(AddonComponent, {
7733
+ key: variant.id,
7734
+ data: variant,
7735
+ selectOptions: addonsOptions[variant.id],
7736
+ classNamePrefix: classNamePrefix,
7737
+ handleAddonChange: function handleAddonChange(id, value) {
7738
+ return onFieldChange(id, value, addon);
7739
+ }
7740
+ })
7741
+ );
7742
+ }) : // Simple Addon
7743
+ React.createElement(AddonComponent, {
7744
+ key: addon.id,
7745
+ data: addon,
7746
+ selectOptions: addonsOptions[addon.id],
7747
+ classNamePrefix: classNamePrefix,
7748
+ handleAddonChange: function handleAddonChange(id, value) {
7749
+ return onFieldChange(id, value, addon);
7750
+ }
7751
+ })));
7752
+ }), React.createElement("button", {
7753
+ type: "submit",
7754
+ className: (isConfirmDisabled ? classNamePrefix + "_is_disabled" : '') + " " + classNamePrefix + "_submit_button",
7755
+ disabled: isConfirmDisabled
7756
+ }, "CONFIRM SELECTION")));
7757
+ }))));
7758
+ };
7759
+
6951
7760
  var style$5 = {
6952
7761
  position: 'absolute',
6953
7762
  top: '10%',
@@ -7127,5 +7936,5 @@ var RsvpContainer = function RsvpContainer(_ref) {
7127
7936
  }, "RSVP"))))))));
7128
7937
  };
7129
7938
 
7130
- export { BillingInfoContainer, ConfirmationContainer, ForgotPasswordModal, LoginModal, MyTicketsContainer, OrderDetailsContainer, PaymentContainer, RedirectModal, ResetPasswordContainer, RsvpContainer, TicketResaleContainer, TicketsContainer, createFixedFloatNormalizer, currencyNormalizerCreator, setConfigs };
7939
+ export { AddonsContainter, BillingInfoContainer, ConfirmationContainer, ForgotPasswordModal, LoginModal, MyTicketsContainer, OrderDetailsContainer, PaymentContainer, RedirectModal, ResetPasswordContainer, RsvpContainer, TicketResaleContainer, TicketsContainer, createFixedFloatNormalizer, currencyNormalizerCreator, setConfigs };
7131
7940
  //# sourceMappingURL=tf-checkout-react.esm.js.map