tf-checkout-react 1.2.30 → 1.3.0

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 (45) 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 +8 -0
  4. package/dist/components/addonsContainer/index.d.ts +15 -0
  5. package/dist/components/addonsContainer/normalizers/index.d.ts +1 -0
  6. package/dist/components/addonsContainer/utils/index.d.ts +15 -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 +832 -80
  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 +832 -81
  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 +61 -0
  27. package/src/components/addonsContainer/index.tsx +392 -0
  28. package/src/components/addonsContainer/normalizers/index.ts +5 -0
  29. package/src/components/addonsContainer/utils/index.tsx +207 -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 +21 -18
  34. package/src/components/paymentContainer/index.tsx +32 -2
  35. package/src/components/ticketsContainer/TicketsSection.tsx +3 -3
  36. package/src/components/ticketsContainer/index.tsx +36 -17
  37. package/src/components/ticketsContainer/utils.ts +3 -3
  38. package/src/index.ts +2 -1
  39. package/src/types/add_on.ts +7 -0
  40. package/src/types/checkoutPageConfigs.ts +9 -0
  41. package/src/types/index.ts +2 -0
  42. package/src/types/order-data.ts +4 -3
  43. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +7 -6
  44. package/src/utils/createMarkup.ts +1 -0
  45. package/src/utils/index.ts +1 -0
@@ -65,6 +65,8 @@ var TablePagination = _interopDefault(require('@mui/material/TablePagination'));
65
65
  var TableRow = _interopDefault(require('@mui/material/TableRow'));
66
66
  var _has = _interopDefault(require('lodash/has'));
67
67
  var Radio = _interopDefault(require('@mui/material/Radio'));
68
+ var _isNull = _interopDefault(require('lodash/isNull'));
69
+ var _reverse = _interopDefault(require('lodash/reverse'));
68
70
 
69
71
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
70
72
  try {
@@ -1177,6 +1179,12 @@ var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWit
1177
1179
  return body;
1178
1180
  };
1179
1181
 
1182
+ var createMarkup = function createMarkup(data) {
1183
+ return {
1184
+ __html: data
1185
+ };
1186
+ };
1187
+
1180
1188
  var isWindowDefined = typeof window !== 'undefined';
1181
1189
  var isDocumentDefined = typeof document !== 'undefined';
1182
1190
 
@@ -1435,7 +1443,8 @@ var getStates = function getStates(countryId) {
1435
1443
  return publicRequest.get("/countries/" + countryId + "/states/");
1436
1444
  };
1437
1445
  var getOrders = function getOrders(page, limit, eventSlug) {
1438
- return publicRequest.get("v1/account/orders/?page=" + page + "&limit=" + limit + "&filter[event]=" + eventSlug + "&filter[brand]=" + CONFIGS.BRAND_SLUG + "&filter[subbrands]=true");
1446
+ return publicRequest.get( // eslint-disable-next-line max-len
1447
+ "v1/account/orders/?page=" + page + "&limit=" + limit + "&filter[event]=" + eventSlug + "&filter[brand]=" + CONFIGS.BRAND_SLUG + "&filter[subbrands]=true");
1439
1448
  };
1440
1449
  var getOrderDetails = function getOrderDetails(orderId) {
1441
1450
  return publicRequest.get("v1/account/order/" + orderId);
@@ -1505,6 +1514,59 @@ var validatePhoneNumber = /*#__PURE__*/function () {
1505
1514
  return _ref.apply(this, arguments);
1506
1515
  };
1507
1516
  }();
1517
+ var getAddons = /*#__PURE__*/function () {
1518
+ var _ref2 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(eventId) {
1519
+ var result, addons;
1520
+ return runtime_1.wrap(function _callee2$(_context2) {
1521
+ while (1) {
1522
+ switch (_context2.prev = _context2.next) {
1523
+ case 0:
1524
+ _context2.next = 2;
1525
+ return publicRequest.get("/v1/event/" + eventId + "/add-ons");
1526
+
1527
+ case 2:
1528
+ result = _context2.sent;
1529
+ addons = _get(result, 'data.data.attributes', []);
1530
+ return _context2.abrupt("return", addons);
1531
+
1532
+ case 5:
1533
+ case "end":
1534
+ return _context2.stop();
1535
+ }
1536
+ }
1537
+ }, _callee2);
1538
+ }));
1539
+
1540
+ return function getAddons(_x2) {
1541
+ return _ref2.apply(this, arguments);
1542
+ };
1543
+ }();
1544
+ var getCheckoutPageConfigs = /*#__PURE__*/function () {
1545
+ var _ref3 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee3() {
1546
+ var response;
1547
+ return runtime_1.wrap(function _callee3$(_context3) {
1548
+ while (1) {
1549
+ switch (_context3.prev = _context3.next) {
1550
+ case 0:
1551
+ _context3.next = 2;
1552
+ return publicRequest.get("v1/checkout-configs");
1553
+
1554
+ case 2:
1555
+ response = _context3.sent;
1556
+ return _context3.abrupt("return", response.data);
1557
+
1558
+ case 4:
1559
+ case "end":
1560
+ return _context3.stop();
1561
+ }
1562
+ }
1563
+ }, _callee3);
1564
+ }));
1565
+
1566
+ return function getCheckoutPageConfigs() {
1567
+ return _ref3.apply(this, arguments);
1568
+ };
1569
+ }();
1508
1570
 
1509
1571
  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,}))$/;
1510
1572
  var combineValidators = function combineValidators() {
@@ -1799,7 +1861,11 @@ var SelectField = function SelectField(_ref) {
1799
1861
  _ref$form = _ref.form,
1800
1862
  touched = _ref$form.touched,
1801
1863
  errors = _ref$form.errors,
1802
- theme = _ref.theme;
1864
+ setFieldValue = _ref$form.setFieldValue,
1865
+ theme = _ref.theme,
1866
+ _ref$onChange = _ref.onChange,
1867
+ _onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange;
1868
+
1803
1869
  var isTouched = Boolean(_get(touched, field.name));
1804
1870
 
1805
1871
  var error = _get(errors, field.name);
@@ -1827,7 +1893,12 @@ var SelectField = function SelectField(_ref) {
1827
1893
  className: theme
1828
1894
  }
1829
1895
  }, field, {
1830
- style: customTheme == null ? void 0 : customTheme.input
1896
+ style: customTheme == null ? void 0 : customTheme.input,
1897
+ onChange: function onChange(e) {
1898
+ _onChange(e);
1899
+
1900
+ setFieldValue(field.name, e.target.value);
1901
+ }
1831
1902
  }), _map(selectOptions, function (option) {
1832
1903
  return React__default.createElement("option", {
1833
1904
  key: option.value,
@@ -2949,6 +3020,12 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref3) {
2949
3020
  var flagRequirePhone = getQueryVariable('phone_required') === 'true'; // Get prevProps
2950
3021
 
2951
3022
  var prevData = React.useRef(data);
3023
+
3024
+ var addAddOnsInAttributes = function addAddOnsInAttributes(checkoutBody) {
3025
+ var selectedAddOns = window.localStorage.getItem('add_ons') || '{}';
3026
+ checkoutBody.attributes.add_ons = JSON.parse(selectedAddOns);
3027
+ };
3028
+
2952
3029
  React.useEffect(function () {
2953
3030
  var hasUniqueId = _get(dataWithUniqueIds, '[0].uniqueId');
2954
3031
 
@@ -3146,42 +3223,47 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref3) {
3146
3223
  switch (_context5.prev = _context5.next) {
3147
3224
  case 0:
3148
3225
  if (!(skipPage && !_isEmpty(ticketsQuantity) && !showDOB)) {
3149
- _context5.next = 17;
3226
+ _context5.next = 18;
3150
3227
  break;
3151
3228
  }
3152
3229
 
3153
3230
  setLoading(true);
3154
3231
  checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity.length, userData);
3155
3232
  _context5.prev = 3;
3156
- _context5.next = 6;
3233
+
3234
+ if (isWindowDefined) {
3235
+ addAddOnsInAttributes(checkoutBody);
3236
+ }
3237
+
3238
+ _context5.next = 7;
3157
3239
  return postOnCheckout(checkoutBody, access_token);
3158
3240
 
3159
- case 6:
3241
+ case 7:
3160
3242
  res = _context5.sent;
3161
3243
  removeReferralKey();
3162
3244
  onSkipBillingPage(_get(res, 'data.data.attributes'));
3163
3245
  setLoading(false);
3164
- _context5.next = 15;
3246
+ _context5.next = 16;
3165
3247
  break;
3166
3248
 
3167
- case 12:
3168
- _context5.prev = 12;
3249
+ case 13:
3250
+ _context5.prev = 13;
3169
3251
  _context5.t0 = _context5["catch"](3);
3170
3252
  onSubmitError(_context5.t0);
3171
3253
 
3172
- case 15:
3173
- _context5.next = 18;
3254
+ case 16:
3255
+ _context5.next = 19;
3174
3256
  break;
3175
3257
 
3176
- case 17:
3258
+ case 18:
3177
3259
  setLoading(false);
3178
3260
 
3179
- case 18:
3261
+ case 19:
3180
3262
  case "end":
3181
3263
  return _context5.stop();
3182
3264
  }
3183
3265
  }
3184
- }, _callee5, null, [[3, 12]]);
3266
+ }, _callee5, null, [[3, 13]]);
3185
3267
  }));
3186
3268
 
3187
3269
  return function collectPaymentData() {
@@ -3256,49 +3338,54 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref3) {
3256
3338
  _context6.prev = 0;
3257
3339
 
3258
3340
  if (!isLoggedIn) {
3259
- _context6.next = 16;
3341
+ _context6.next = 17;
3260
3342
  break;
3261
3343
  }
3262
3344
 
3263
3345
  _checkoutBody = collectCheckoutBody(values, userData);
3264
- _context6.next = 5;
3346
+
3347
+ if (isWindowDefined) {
3348
+ addAddOnsInAttributes(_checkoutBody);
3349
+ }
3350
+
3351
+ _context6.next = 6;
3265
3352
  return postOnCheckout(_checkoutBody, access_token);
3266
3353
 
3267
- case 5:
3354
+ case 6:
3268
3355
  _res = _context6.sent;
3269
3356
  removeReferralKey(); // After checkout is successful recover updated profile and store it on local storage if needed
3270
3357
 
3271
3358
  if (!isWindowDefined) {
3272
- _context6.next = 14;
3359
+ _context6.next = 15;
3273
3360
  break;
3274
3361
  }
3275
3362
 
3276
- _context6.next = 10;
3363
+ _context6.next = 11;
3277
3364
  return getProfileData(access_token);
3278
3365
 
3279
- case 10:
3366
+ case 11:
3280
3367
  updatedUserData = _context6.sent;
3281
3368
  _profileSpecifiedData = _get(updatedUserData, 'data.data');
3282
3369
  _profileDataObj = setLoggedUserData$1(_profileSpecifiedData);
3283
3370
  window.localStorage.setItem('user_data', JSON.stringify(_profileDataObj));
3284
3371
 
3285
- case 14:
3372
+ case 15:
3286
3373
  handleSubmit(values, formikHelpers, eventId, _res);
3287
3374
  return _context6.abrupt("return");
3288
3375
 
3289
- case 16:
3376
+ case 17:
3290
3377
  checkoutBodyForRegistration = createCheckoutDataBody(ticketsQuantity.length, values, {
3291
3378
  emailLogged: emailLogged,
3292
3379
  firstNameLogged: firstNameLogged,
3293
3380
  lastNameLogged: lastNameLogged
3294
3381
  }, showDOB);
3295
3382
  bodyFormData = createRegisterFormData(values, checkoutBodyForRegistration);
3296
- _context6.prev = 18;
3383
+ _context6.prev = 19;
3297
3384
  setLoading(true);
3298
- _context6.next = 22;
3385
+ _context6.next = 23;
3299
3386
  return register(bodyFormData);
3300
3387
 
3301
- case 22:
3388
+ case 23:
3302
3389
  resRegister = _context6.sent;
3303
3390
  _xtfCookie = _get(resRegister, 'headers.x-tf-ecommerce');
3304
3391
  accessToken = _get(resRegister, 'data.data.attributes.access_token');
@@ -3310,12 +3397,12 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref3) {
3310
3397
  refreshToken: refreshToken,
3311
3398
  userProfile: userProfile
3312
3399
  });
3313
- _context6.next = 35;
3400
+ _context6.next = 36;
3314
3401
  break;
3315
3402
 
3316
- case 30:
3317
- _context6.prev = 30;
3318
- _context6.t0 = _context6["catch"](18);
3403
+ case 31:
3404
+ _context6.prev = 31;
3405
+ _context6.t0 = _context6["catch"](19);
3319
3406
  setLoading(false);
3320
3407
 
3321
3408
  if (axios.isAxiosError(_context6.t0)) {
@@ -3345,11 +3432,11 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref3) {
3345
3432
 
3346
3433
  return _context6.abrupt("return");
3347
3434
 
3348
- case 35:
3349
- _context6.next = 37;
3435
+ case 36:
3436
+ _context6.next = 38;
3350
3437
  return getProfileData();
3351
3438
 
3352
- case 37:
3439
+ case 38:
3353
3440
  profileData = _context6.sent;
3354
3441
  profileSpecifiedData = _get(profileData, 'data.data');
3355
3442
  profileDataObj = setLoggedUserData$1(profileSpecifiedData);
@@ -3359,18 +3446,23 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref3) {
3359
3446
  }
3360
3447
 
3361
3448
  checkoutBody = collectCheckoutBody(values, profileDataObj);
3362
- _context6.next = 44;
3449
+
3450
+ if (isWindowDefined) {
3451
+ addAddOnsInAttributes(checkoutBody);
3452
+ }
3453
+
3454
+ _context6.next = 46;
3363
3455
  return postOnCheckout(checkoutBody);
3364
3456
 
3365
- case 44:
3457
+ case 46:
3366
3458
  res = _context6.sent;
3367
3459
  removeReferralKey();
3368
3460
  handleSubmit(values, formikHelpers, eventId, res);
3369
- _context6.next = 53;
3461
+ _context6.next = 55;
3370
3462
  break;
3371
3463
 
3372
- case 49:
3373
- _context6.prev = 49;
3464
+ case 51:
3465
+ _context6.prev = 51;
3374
3466
  _context6.t1 = _context6["catch"](0);
3375
3467
  setLoading(false);
3376
3468
 
@@ -3391,17 +3483,17 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref3) {
3391
3483
  onSubmitError(_context6.t1);
3392
3484
  }
3393
3485
 
3394
- case 53:
3395
- _context6.prev = 53;
3486
+ case 55:
3487
+ _context6.prev = 55;
3396
3488
  setLoading(false);
3397
- return _context6.finish(53);
3489
+ return _context6.finish(55);
3398
3490
 
3399
- case 56:
3491
+ case 58:
3400
3492
  case "end":
3401
3493
  return _context6.stop();
3402
3494
  }
3403
3495
  }
3404
- }, _callee6, null, [[0, 49, 53, 56], [18, 30]]);
3496
+ }, _callee6, null, [[0, 51, 55, 58], [19, 31]]);
3405
3497
  }));
3406
3498
 
3407
3499
  function onSubmit(_x2, _x3) {
@@ -3488,7 +3580,7 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref3) {
3488
3580
  return ['password', 'confirmPassword', 'password-info'].includes(element.name) && isLoggedIn ? null : React__default.createElement(React__default.Fragment, {
3489
3581
  key: element.uniqueId
3490
3582
  }, React__default.createElement("div", {
3491
- className: element.className
3583
+ className: element.className + " " + (props == null ? void 0 : props.errors[element.name])
3492
3584
  }, element.component ? element.component : React__default.createElement(formik.Field, {
3493
3585
  setPhoneValidationIsLoading: element.type === 'phone' ? setPhoneValidationIsLoading : undefined,
3494
3586
  name: element.name,
@@ -3960,7 +4052,8 @@ var initialOrderValues = {
3960
4052
  quantity: '',
3961
4053
  price: '',
3962
4054
  total: '',
3963
- currency: ''
4055
+ currency: '',
4056
+ add_ons: []
3964
4057
  };
3965
4058
  var initialReviewValues = {
3966
4059
  order_details: {
@@ -4061,7 +4154,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
4061
4154
  quantity: ticket == null ? void 0 : ticket.quantity,
4062
4155
  price: ticket == null ? void 0 : ticket.price,
4063
4156
  total: order_details == null ? void 0 : order_details.total,
4064
- currency: order_details == null ? void 0 : order_details.currency
4157
+ currency: order_details == null ? void 0 : order_details.currency,
4158
+ add_ons: (order_details == null ? void 0 : order_details.add_ons) || []
4065
4159
  };
4066
4160
  setOrderData(_orderData);
4067
4161
  onGetPaymentDataSuccess(response.data);
@@ -4232,6 +4326,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
4232
4326
  className = _field$className === void 0 ? '' : _field$className,
4233
4327
  _field$normalizer = field.normalizer,
4234
4328
  normalizer = _field$normalizer === void 0 ? _identity : _field$normalizer;
4329
+ var currency = orderData.currency;
4330
+ var value = orderData[id];
4235
4331
  return React__default.createElement("div", {
4236
4332
  key: id,
4237
4333
  className: "order_info_block"
@@ -4239,7 +4335,16 @@ var PaymentContainer = function PaymentContainer(_ref) {
4239
4335
  className: "order_info_title"
4240
4336
  }, label), React__default.createElement("div", {
4241
4337
  className: className + " order_info_text"
4242
- }, normalizer(orderData[id], orderData.currency)));
4338
+ }, typeof value === 'string' ? normalizer(value, currency) : _map(value, function (item) {
4339
+ return React__default.createElement("div", {
4340
+ key: item.id,
4341
+ className: "add-on-container"
4342
+ }, React__default.createElement("span", null, item.quantity), React__default.createElement("span", {
4343
+ className: "add-on-x"
4344
+ }, ' x '), React__default.createElement("span", null, item.groupName ? item.groupName + ' - ' : ''), React__default.createElement("span", null, item.name), React__default.createElement("span", null, ' - '), React__default.createElement("span", null, currencyNormalizerCreator(createFixedFloatNormalizer(2)(parseFloat(item.price)), currency)), React__default.createElement("span", {
4345
+ className: "add-on-each"
4346
+ }, ' each'));
4347
+ })));
4243
4348
  })), enablePaymentPlan && React__default.createElement("div", {
4244
4349
  className: "payment_toggle"
4245
4350
  }, React__default.createElement("label", {
@@ -5161,7 +5266,9 @@ var TicketsSection = function TicketsSection(_ref) {
5161
5266
  className: "event-detail__tier-price"
5162
5267
  }, ticketIsDiscounted && React__default.createElement("p", {
5163
5268
  className: "old-price"
5164
- }, "$ ", (+ticket.oldPrice).toFixed(2)), React__default.createElement("p", null, ticketPrice), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
5269
+ }, "$ ", (+ticket.oldPrice).toFixed(2)), React__default.createElement("p", {
5270
+ className: isSoldOut ? 'sold-out' : ''
5271
+ }, ticketPrice), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
5165
5272
  className: "fees"
5166
5273
  }, ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)')), React__default.createElement("div", {
5167
5274
  className: "event-detail__tier-state",
@@ -5185,15 +5292,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
5185
5292
  _ref$contentStyle = _ref.contentStyle,
5186
5293
  contentStyle = _ref$contentStyle === void 0 ? {} : _ref$contentStyle,
5187
5294
  _ref$onAddToCartError = _ref.onAddToCartError,
5188
- onAddToCartError = _ref$onAddToCartError === void 0 ? function () {} : _ref$onAddToCartError,
5295
+ onAddToCartError = _ref$onAddToCartError === void 0 ? _identity : _ref$onAddToCartError,
5189
5296
  _ref$onGetTicketsSucc = _ref.onGetTicketsSuccess,
5190
- onGetTicketsSuccess = _ref$onGetTicketsSucc === void 0 ? function () {} : _ref$onGetTicketsSucc,
5297
+ onGetTicketsSuccess = _ref$onGetTicketsSucc === void 0 ? _identity : _ref$onGetTicketsSucc,
5191
5298
  _ref$onGetTicketsErro = _ref.onGetTicketsError,
5192
- onGetTicketsError = _ref$onGetTicketsErro === void 0 ? function () {} : _ref$onGetTicketsErro,
5299
+ onGetTicketsError = _ref$onGetTicketsErro === void 0 ? _identity : _ref$onGetTicketsErro,
5193
5300
  _ref$onLogoutSuccess = _ref.onLogoutSuccess,
5194
- onLogoutSuccess = _ref$onLogoutSuccess === void 0 ? function () {} : _ref$onLogoutSuccess,
5301
+ onLogoutSuccess = _ref$onLogoutSuccess === void 0 ? _identity : _ref$onLogoutSuccess,
5195
5302
  _ref$onLogoutError = _ref.onLogoutError,
5196
- onLogoutError = _ref$onLogoutError === void 0 ? function () {} : _ref$onLogoutError,
5303
+ onLogoutError = _ref$onLogoutError === void 0 ? _identity : _ref$onLogoutError,
5197
5304
  _ref$theme = _ref.theme,
5198
5305
  theme = _ref$theme === void 0 ? 'light' : _ref$theme,
5199
5306
  _ref$queryPromoCode = _ref.queryPromoCode,
@@ -5419,6 +5526,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5419
5526
 
5420
5527
  if (axios.isAxiosError(_context3.t0)) {
5421
5528
  onGetTicketsError(_context3.t0);
5529
+ setError(_get(_context3.t0, 'response.data.message'));
5422
5530
  }
5423
5531
 
5424
5532
  case 16:
@@ -5463,7 +5571,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5463
5571
  var _ref4 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
5464
5572
  var _product_options, _product_options2, _ticket_types;
5465
5573
 
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;
5574
+ 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
5575
 
5468
5576
  return runtime_1.wrap(function _callee2$(_context2) {
5469
5577
  while (1) {
@@ -5494,52 +5602,63 @@ var TicketsContainer = function TicketsContainer(_ref) {
5494
5602
 
5495
5603
  case 9:
5496
5604
  result = _context2.sent;
5605
+ _context2.next = 12;
5606
+ return getCheckoutPageConfigs();
5497
5607
 
5498
- if (!(result.status === 200)) {
5499
- _context2.next = 33;
5608
+ case 12:
5609
+ pageConfigsDataResponse = _context2.sent;
5610
+
5611
+ if (!(result.status === 200 && pageConfigsDataResponse.status === 200)) {
5612
+ _context2.next = 39;
5500
5613
  break;
5501
5614
  }
5502
5615
 
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;
5616
+ pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {};
5617
+ skipBillingPage = (_pageConfigsData$skip = pageConfigsData.skip_billing_page) != null ? _pageConfigsData$skip : false;
5618
+ nameIsRequired = (_pageConfigsData$name = pageConfigsData.names_required) != null ? _pageConfigsData$name : false;
5619
+ ageIsRequired = (_pageConfigsData$age_ = pageConfigsData.age_required) != null ? _pageConfigsData$age_ : false;
5620
+ phoneIsRequired = (_pageConfigsData$phon = pageConfigsData.phone_required) != null ? _pageConfigsData$phon : false;
5621
+ hasAddOn = (_pageConfigsData$has_ = pageConfigsData.has_add_on) != null ? _pageConfigsData$has_ : false;
5507
5622
  hash = '';
5508
5623
  total = '';
5624
+ _isWindowDefined = typeof window !== 'undefined';
5509
5625
 
5510
- if (!skipBillingPage) {
5511
- _context2.next = 32;
5626
+ if (!(skipBillingPage && !hasAddOn)) {
5627
+ _context2.next = 37;
5512
5628
  break;
5513
5629
  }
5514
5630
 
5515
5631
  // Get user data for checkout data
5516
- _isWindowDefined = typeof window !== 'undefined';
5517
5632
  userData = _isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
5518
5633
  access_token = _isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
5519
5634
  checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketQuantity, userData);
5520
5635
 
5521
5636
  if (!enableBillingInfoAutoCreate) {
5522
- _context2.next = 28;
5637
+ _context2.next = 33;
5523
5638
  break;
5524
5639
  }
5525
5640
 
5526
- _context2.next = 25;
5641
+ _context2.next = 30;
5527
5642
  return postOnCheckout(checkoutBody, access_token);
5528
5643
 
5529
- case 25:
5644
+ case 30:
5530
5645
  _context2.t0 = _context2.sent;
5531
- _context2.next = 29;
5646
+ _context2.next = 34;
5532
5647
  break;
5533
5648
 
5534
- case 28:
5649
+ case 33:
5535
5650
  _context2.t0 = null;
5536
5651
 
5537
- case 29:
5652
+ case 34:
5538
5653
  checkoutResult = _context2.t0;
5539
5654
  hash = _get(checkoutResult, 'data.data.attributes.hash');
5540
5655
  total = _get(checkoutResult, 'data.data.attributes.total');
5541
5656
 
5542
- case 32:
5657
+ case 37:
5658
+ if (hasAddOn && _isWindowDefined) {
5659
+ window.localStorage.setItem('tickets_quantity', String(ticketQuantity));
5660
+ }
5661
+
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() {
@@ -6351,6 +6471,9 @@ var TicketsTable = function TicketsTable(_ref) {
6351
6471
  };
6352
6472
 
6353
6473
  var getTotal = function getTotal(data) {
6474
+ var _data$tickets$;
6475
+
6476
+ if (data != null && data.total && data != null && data.tickets && (_data$tickets$ = data.tickets[0]) != null && _data$tickets$.currency) return data.tickets[0].currency + data.total;
6354
6477
  if (!(data != null && data.total) || !_has(data, 'items.ticket_types.length')) return '';
6355
6478
  return data.items.ticket_types[0].currency + data.total;
6356
6479
  };
@@ -6639,7 +6762,7 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
6639
6762
  window.location.assign('/orders');
6640
6763
  }
6641
6764
  }
6642
- }, "Back to Orders")))), React__default.createElement("div", {
6765
+ }, "Back to Orders")))), !(data != null && data.disable_referral) && React__default.createElement("div", {
6643
6766
  className: "personal-link"
6644
6767
  }, React__default.createElement("div", {
6645
6768
  className: "link-item"
@@ -6945,6 +7068,634 @@ var TicketResaleContainer = function TicketResaleContainer(_ref) {
6945
7068
  }, React__default.createElement("h3", null, successMessage ? successMessage : error)));
6946
7069
  };
6947
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.cart', []);
7117
+
7118
+ return cartData[0] || {};
7119
+ };
7120
+
7121
+ var AddonComponent = function AddonComponent(_ref) {
7122
+ var _ref$classNamePrefix = _ref.classNamePrefix,
7123
+ classNamePrefix = _ref$classNamePrefix === void 0 ? '' : _ref$classNamePrefix,
7124
+ data = _ref.data,
7125
+ selectOptions = _ref.selectOptions,
7126
+ _ref$handleAddonChang = _ref.handleAddonChange,
7127
+ handleAddonChange = _ref$handleAddonChang === void 0 ? _identity : _ref$handleAddonChang;
7128
+ var id = data.id,
7129
+ name = data.name,
7130
+ active = data.active,
7131
+ stock = data.stock;
7132
+ return React__default.createElement("div", {
7133
+ key: id,
7134
+ className: classNamePrefix + "_product_select_container"
7135
+ }, React__default.createElement("div", {
7136
+ className: classNamePrefix + "_product_select_block",
7137
+ key: name
7138
+ }, React__default.createElement("div", {
7139
+ className: classNamePrefix + "_product_size"
7140
+ }, name), React__default.createElement("div", {
7141
+ className: classNamePrefix + "_product_qty_select_block"
7142
+ }, !active || !_isNull(stock) && stock <= 0 ? React__default.createElement("div", {
7143
+ className: "sold_out"
7144
+ }, "SOLD OUT") : React__default.createElement("div", {
7145
+ className: classNamePrefix + "_product_qty_select"
7146
+ }, React__default.createElement(formik.Field, {
7147
+ name: id,
7148
+ selectOptions: selectOptions,
7149
+ component: SelectField,
7150
+ onChange: function onChange(e) {
7151
+ var value = e.target.value;
7152
+ handleAddonChange(id, value);
7153
+ }
7154
+ })))));
7155
+ };
7156
+
7157
+ var getNormalizedPrice = function getNormalizedPrice(value) {
7158
+ var minimizedValue = Number(value) / 100;
7159
+ var normalized = minimizedValue.toFixed(2);
7160
+ return normalized;
7161
+ };
7162
+
7163
+ var generateSelectOptions = function generateSelectOptions(minCount, maxCount) {
7164
+ if (minCount === void 0) {
7165
+ minCount = 1;
7166
+ }
7167
+
7168
+ if (maxCount === void 0) {
7169
+ maxCount = 10;
7170
+ }
7171
+
7172
+ var options = [];
7173
+
7174
+ for (var i = minCount; i <= maxCount; i++) {
7175
+ options.push({
7176
+ label: i,
7177
+ value: i
7178
+ });
7179
+ }
7180
+
7181
+ return options;
7182
+ };
7183
+
7184
+ var generateStockBasedOnLimitations = function generateStockBasedOnLimitations(addon, ticketQuantity) {
7185
+ // Generate addon available stock count based on limitations
7186
+ var flagLimitToTicketQuantity = addon.flagLimitToTicketQuantity,
7187
+ maxQuantity = addon.maxQuantity,
7188
+ limitPerTicket = addon.limitPerTicket;
7189
+ var allowedStockCount; // Generate stock
7190
+
7191
+ if (flagLimitToTicketQuantity) {
7192
+ // Limited to ticket quantity case
7193
+ allowedStockCount = ticketQuantity;
7194
+ } else if (maxQuantity && limitPerTicket) {
7195
+ var stockBasedOnLimitPerTicket = limitPerTicket * ticketQuantity; // Both maximum quantity and limited to per ticket selected case, stock is minimum of them
7196
+
7197
+ allowedStockCount = maxQuantity <= stockBasedOnLimitPerTicket ? maxQuantity : stockBasedOnLimitPerTicket;
7198
+ } else if (maxQuantity && !limitPerTicket) {
7199
+ // Limited to maximum quantity case
7200
+ allowedStockCount = maxQuantity;
7201
+ } else if (!maxQuantity && limitPerTicket) {
7202
+ // Limited to per ticket case
7203
+ allowedStockCount = limitPerTicket * ticketQuantity;
7204
+ }
7205
+
7206
+ return Number(allowedStockCount);
7207
+ };
7208
+
7209
+ var filterStockBasedOnAvailability = function filterStockBasedOnAvailability(generatedStock, availableStock) {
7210
+ // Check generated stock count admissibility with addon stock availability
7211
+ var filteredStockCount = generatedStock;
7212
+
7213
+ if (generatedStock) {
7214
+ if (generatedStock > availableStock && !_isNull(availableStock)) {
7215
+ filteredStockCount = availableStock;
7216
+ }
7217
+ } else {
7218
+ // Not setted any restriction
7219
+ if (_isNull(availableStock)) {
7220
+ filteredStockCount = 10;
7221
+ } else {
7222
+ filteredStockCount = availableStock;
7223
+ }
7224
+ }
7225
+
7226
+ return filteredStockCount;
7227
+ };
7228
+
7229
+ var getAddonSelectOptions = function getAddonSelectOptions(addons, choosedTicketCount) {
7230
+ var addonsWithOptions = {};
7231
+ var groupsWithSelectedVariantsInfo = {};
7232
+ var groupsWithVariants = {};
7233
+ addons.forEach(function (addon) {
7234
+ // Here addon can act either as simple Addon or Addon Group
7235
+ var id = addon.id,
7236
+ simpleAddonStock = addon.stock,
7237
+ variants = addon.variants,
7238
+ active = addon.active,
7239
+ flagLimitToTicketQuantity = addon.flagLimitToTicketQuantity,
7240
+ maxQuantity = addon.maxQuantity,
7241
+ limitPerTicket = addon.limitPerTicket;
7242
+
7243
+ if (variants) {
7244
+ // Addon Group with inside addon variants case
7245
+ variants.forEach(function (variant) {
7246
+ var variantId = variant.id,
7247
+ variantStock = variant.stock; // null checking is for unlimited stock value
7248
+
7249
+ if (active && (variantStock > 0 || _isNull(variantStock))) {
7250
+ var _extends3;
7251
+
7252
+ // Generate Addon Group allowed stock count based on limitations
7253
+ var stockBasedOnLimitation = generateStockBasedOnLimitations(addon, choosedTicketCount); // Detect if group has limitation or not
7254
+
7255
+ if (flagLimitToTicketQuantity || maxQuantity || limitPerTicket) {
7256
+ // Generate Group with inside variants info
7257
+ if (groupsWithSelectedVariantsInfo[id]) {
7258
+ var _extends2;
7259
+
7260
+ // Set group limit
7261
+ if (groupsWithSelectedVariantsInfo[id].limit < stockBasedOnLimitation) {
7262
+ groupsWithSelectedVariantsInfo[id].limit = stockBasedOnLimitation;
7263
+ } // Set choosed variants info
7264
+
7265
+
7266
+ groupsWithSelectedVariantsInfo[id] = _extends({}, groupsWithSelectedVariantsInfo[id], {
7267
+ choosedVariants: _extends({}, groupsWithSelectedVariantsInfo[id].choosedVariants, (_extends2 = {}, _extends2[variantId] = 0, _extends2))
7268
+ });
7269
+ } else {
7270
+ var _choosedVariants;
7271
+
7272
+ groupsWithSelectedVariantsInfo[id] = {
7273
+ limit: stockBasedOnLimitation,
7274
+ selectedCount: 0,
7275
+ choosedVariants: (_choosedVariants = {}, _choosedVariants[variantId] = 0, _choosedVariants)
7276
+ };
7277
+ }
7278
+ } // Check stock admissibility with addon stock availability
7279
+
7280
+
7281
+ var allowedVariantStockCount = filterStockBasedOnAvailability(stockBasedOnLimitation, variantStock); // Generate options for variant
7282
+
7283
+ var variantOptions = generateSelectOptions(0, allowedVariantStockCount);
7284
+ addonsWithOptions[variantId] = [].concat(variantOptions); // Generate Group with its variants list
7285
+
7286
+ groupsWithVariants[id] = _extends({}, groupsWithVariants[id], (_extends3 = {}, _extends3[variantId] = allowedVariantStockCount, _extends3));
7287
+ }
7288
+ });
7289
+ } else {
7290
+ // Simple addon case, null checking is for unlimited stock value
7291
+ if (active && (simpleAddonStock > 0 || _isNull(simpleAddonStock))) {
7292
+ // Generate Addon Group allowed stock count based on limitations
7293
+ var stockBasedOnLimitation = generateStockBasedOnLimitations(addon, choosedTicketCount); // Check stock admissibility with addon stock availability
7294
+
7295
+ var allowedVariantStockCount = filterStockBasedOnAvailability(stockBasedOnLimitation, simpleAddonStock);
7296
+ var addonOptions = generateSelectOptions(0, allowedVariantStockCount);
7297
+ addonsWithOptions[id] = [].concat(addonOptions);
7298
+ }
7299
+ }
7300
+ });
7301
+ return {
7302
+ addonsWithOptions: addonsWithOptions,
7303
+ groupsWithSelectedVariantsInfo: groupsWithSelectedVariantsInfo,
7304
+ groupsWithVariants: groupsWithVariants
7305
+ };
7306
+ };
7307
+ var getTicketRelatedAddons = function getTicketRelatedAddons(addons, ticketId) {
7308
+ // Filter addons based on choosed ticket
7309
+ var filteredAddons = addons.filter(function (addon) {
7310
+ return _isNull(addon.prerequisiteTicketTypeIds) || addon.prerequisiteTicketTypeIds.includes(ticketId);
7311
+ });
7312
+ return filteredAddons;
7313
+ };
7314
+ var getSortedAddons = function getSortedAddons(addons, sortDirection) {
7315
+ if (sortDirection === void 0) {
7316
+ sortDirection = "asc";
7317
+ }
7318
+
7319
+ var addonsCopy = [].concat(addons);
7320
+ addonsCopy.forEach(function (addon) {
7321
+ if (addon.variants) {
7322
+ addon.sortOrder = Number(addon.variants[0].sortOrder);
7323
+ } else {
7324
+ addon.sortOrder = Number(addon.sortOrder);
7325
+ }
7326
+ });
7327
+
7328
+ var sortedAddons = _sortBy(addonsCopy, function (addon) {
7329
+ return addon.sortOrder;
7330
+ });
7331
+
7332
+ if (sortDirection === "desc") {
7333
+ return _reverse(sortedAddons);
7334
+ }
7335
+
7336
+ return sortedAddons;
7337
+ };
7338
+
7339
+ var AddonsContainter = function AddonsContainter(_ref) {
7340
+ var _ref$classNamePrefix = _ref.classNamePrefix,
7341
+ classNamePrefix = _ref$classNamePrefix === void 0 ? 'add_on' : _ref$classNamePrefix,
7342
+ _ref$enableBillingInf = _ref.enableBillingInfoAutoCreate,
7343
+ enableBillingInfoAutoCreate = _ref$enableBillingInf === void 0 ? true : _ref$enableBillingInf,
7344
+ _ref$onGetAddonsPageI = _ref.onGetAddonsPageInfoSuccess,
7345
+ onGetAddonsPageInfoSuccess = _ref$onGetAddonsPageI === void 0 ? _identity : _ref$onGetAddonsPageI,
7346
+ _ref$onGetAddonsPageI2 = _ref.onGetAddonsPageInfoError,
7347
+ onGetAddonsPageInfoError = _ref$onGetAddonsPageI2 === void 0 ? _identity : _ref$onGetAddonsPageI2,
7348
+ _ref$onPostCheckoutSu = _ref.onPostCheckoutSuccess,
7349
+ onPostCheckoutSuccess = _ref$onPostCheckoutSu === void 0 ? _identity : _ref$onPostCheckoutSu,
7350
+ _ref$onPostCheckoutEr = _ref.onPostCheckoutError,
7351
+ onPostCheckoutError = _ref$onPostCheckoutEr === void 0 ? _identity : _ref$onPostCheckoutEr,
7352
+ _ref$onConfirmSelecti = _ref.onConfirmSelectionSuccess,
7353
+ onConfirmSelectionSuccess = _ref$onConfirmSelecti === void 0 ? _identity : _ref$onConfirmSelecti,
7354
+ _ref$onConfirmSelecti2 = _ref.onConfirmSelectionError,
7355
+ onConfirmSelectionError = _ref$onConfirmSelecti2 === void 0 ? _identity : _ref$onConfirmSelecti2;
7356
+ var eventId = getQueryVariable('event_id');
7357
+
7358
+ var _useState = React.useState([]),
7359
+ addons = _useState[0],
7360
+ setAddons = _useState[1];
7361
+
7362
+ var _useState2 = React.useState({}),
7363
+ addonsOptions = _useState2[0],
7364
+ setAddonsOptions = _useState2[1];
7365
+
7366
+ var _useState3 = React.useState({}),
7367
+ groupsWithSelectedVariants = _useState3[0],
7368
+ setGroupsWithSelectedVariants = _useState3[1];
7369
+
7370
+ var _useState4 = React.useState({}),
7371
+ groupsWithInitialVariantsValues = _useState4[0],
7372
+ setGroupsWithInitialVariantsValues = _useState4[1];
7373
+
7374
+ var _useState5 = React.useState(true),
7375
+ loading = _useState5[0],
7376
+ setLoading = _useState5[1];
7377
+
7378
+ React.useEffect(function () {
7379
+ var getAddonsPageInfo = /*#__PURE__*/function () {
7380
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
7381
+ var cart, cartAdaptedData, choosedTicketCount, choosedTicketID, addonsData, adaptedAddons, ticketRelatedAddons, sortedTicketAddons, _getAddonSelectOption, addonsWithOptions, groupsWithSelectedVariantsInfo, groupsWithVariants;
7382
+
7383
+ return runtime_1.wrap(function _callee$(_context) {
7384
+ while (1) {
7385
+ switch (_context.prev = _context.next) {
7386
+ case 0:
7387
+ _context.prev = 0;
7388
+
7389
+ if (!eventId) {
7390
+ _context.next = 21;
7391
+ break;
7392
+ }
7393
+
7394
+ setLoading(true); // Get choosed ticket info (id, count) from Cart request for addons options calculations
7395
+
7396
+ _context.next = 5;
7397
+ return getCart();
7398
+
7399
+ case 5:
7400
+ cart = _context.sent;
7401
+ cartAdaptedData = cartAdapter(cart) || {};
7402
+ choosedTicketCount = Number(cartAdaptedData.quantity);
7403
+ choosedTicketID = cartAdaptedData.id;
7404
+ _context.next = 11;
7405
+ return getAddons(eventId);
7406
+
7407
+ case 11:
7408
+ addonsData = _context.sent;
7409
+ adaptedAddons = addonsWithGroupsAdapter(addonsData);
7410
+ ticketRelatedAddons = getTicketRelatedAddons(adaptedAddons, choosedTicketID);
7411
+ sortedTicketAddons = getSortedAddons(ticketRelatedAddons);
7412
+ setAddons(sortedTicketAddons); // Collect addons and addon group options
7413
+
7414
+ _getAddonSelectOption = getAddonSelectOptions(adaptedAddons, choosedTicketCount), addonsWithOptions = _getAddonSelectOption.addonsWithOptions, groupsWithSelectedVariantsInfo = _getAddonSelectOption.groupsWithSelectedVariantsInfo, groupsWithVariants = _getAddonSelectOption.groupsWithVariants;
7415
+ setAddonsOptions(addonsWithOptions);
7416
+ setGroupsWithSelectedVariants(groupsWithSelectedVariantsInfo);
7417
+ setGroupsWithInitialVariantsValues(groupsWithVariants); // Success callback props
7418
+
7419
+ onGetAddonsPageInfoSuccess(addonsData);
7420
+
7421
+ case 21:
7422
+ _context.next = 26;
7423
+ break;
7424
+
7425
+ case 23:
7426
+ _context.prev = 23;
7427
+ _context.t0 = _context["catch"](0);
7428
+ // Callback error props
7429
+ onGetAddonsPageInfoError(_context.t0);
7430
+
7431
+ case 26:
7432
+ _context.prev = 26;
7433
+ setLoading(false);
7434
+ return _context.finish(26);
7435
+
7436
+ case 29:
7437
+ case "end":
7438
+ return _context.stop();
7439
+ }
7440
+ }
7441
+ }, _callee, null, [[0, 23, 26, 29]]);
7442
+ }));
7443
+
7444
+ return function getAddonsPageInfo() {
7445
+ return _ref2.apply(this, arguments);
7446
+ };
7447
+ }();
7448
+
7449
+ getAddonsPageInfo();
7450
+ }, []);
7451
+
7452
+ var recreateGroupVariantsSelectOptions = function recreateGroupVariantsSelectOptions(groupId, changedGroupd) {
7453
+ var choosedVariants = changedGroupd.choosedVariants,
7454
+ limit = changedGroupd.limit,
7455
+ selectedCount = changedGroupd.selectedCount;
7456
+ var remainingGroupStock = limit - selectedCount;
7457
+ var recreatedVariantsOptions = {}; // Regenerate variants allowed stock counts
7458
+
7459
+ for (var variant in choosedVariants) {
7460
+ var variantId = variant;
7461
+ var variantCurrSelectedValue = choosedVariants[variant];
7462
+ var allowedOptionCount = void 0; // Formula for regenerating
7463
+
7464
+ if (remainingGroupStock >= groupsWithInitialVariantsValues[groupId][variantId] - variantCurrSelectedValue) {
7465
+ allowedOptionCount = groupsWithInitialVariantsValues[groupId][variantId];
7466
+ } else {
7467
+ allowedOptionCount = remainingGroupStock + variantCurrSelectedValue;
7468
+ }
7469
+
7470
+ recreatedVariantsOptions[variantId] = generateSelectOptions(0, allowedOptionCount);
7471
+ }
7472
+
7473
+ setAddonsOptions(function (prevState) {
7474
+ return Object.assign({}, prevState, recreatedVariantsOptions);
7475
+ });
7476
+ };
7477
+
7478
+ var onFieldChange = function onFieldChange(id, value, addon) {
7479
+ // If changeableGroup exsists it means that group with limitation variant was changed
7480
+ var changeableGroup = groupsWithSelectedVariants[addon.id];
7481
+
7482
+ if (changeableGroup) {
7483
+ var _extends2, _extends3;
7484
+
7485
+ var currGroupId = addon.id;
7486
+ var currSelectedVariantId = id;
7487
+ var currSelectedVariantCount = Number(value);
7488
+ var currSelectedVariantPrevCount = groupsWithSelectedVariants[currGroupId].choosedVariants[currSelectedVariantId];
7489
+ var currSelectedGroupCount = changeableGroup.selectedCount + (currSelectedVariantCount - currSelectedVariantPrevCount); // Update Group info
7490
+
7491
+ var updatedGroupsWithSelectedVariants = _extends({}, groupsWithSelectedVariants, (_extends3 = {}, _extends3[currGroupId] = _extends({}, groupsWithSelectedVariants[currGroupId], {
7492
+ selectedCount: currSelectedGroupCount,
7493
+ choosedVariants: _extends({}, groupsWithSelectedVariants[currGroupId].choosedVariants, (_extends2 = {}, _extends2[currSelectedVariantId] = currSelectedVariantCount, _extends2))
7494
+ }), _extends3));
7495
+
7496
+ setGroupsWithSelectedVariants(updatedGroupsWithSelectedVariants); // Recreate Select Options for Addon Group Variants
7497
+
7498
+ recreateGroupVariantsSelectOptions(currGroupId, updatedGroupsWithSelectedVariants[currGroupId]);
7499
+ }
7500
+ };
7501
+
7502
+ var handleConfirm = /*#__PURE__*/function () {
7503
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(values) {
7504
+ 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;
7505
+
7506
+ return runtime_1.wrap(function _callee2$(_context2) {
7507
+ while (1) {
7508
+ switch (_context2.prev = _context2.next) {
7509
+ case 0:
7510
+ _context2.prev = 0;
7511
+ _context2.next = 3;
7512
+ return getCheckoutPageConfigs();
7513
+
7514
+ case 3:
7515
+ pageConfigsDataResponse = _context2.sent;
7516
+ pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {};
7517
+ isWindowDefined = typeof window !== 'undefined';
7518
+ skipBillingPage = (_pageConfigsData$skip = pageConfigsData.skip_billing_page) != null ? _pageConfigsData$skip : false;
7519
+ nameIsRequired = (_pageConfigsData$name = pageConfigsData.names_required) != null ? _pageConfigsData$name : false;
7520
+ ageIsRequired = (_pageConfigsData$age_ = pageConfigsData.age_required) != null ? _pageConfigsData$age_ : false;
7521
+ phoneIsRequired = (_pageConfigsData$phon = pageConfigsData.phone_required) != null ? _pageConfigsData$phon : false;
7522
+ hasAddOn = (_pageConfigsData$has_ = pageConfigsData.has_add_on) != null ? _pageConfigsData$has_ : false;
7523
+
7524
+ if (!(skipBillingPage && enableBillingInfoAutoCreate)) {
7525
+ _context2.next = 32;
7526
+ break;
7527
+ }
7528
+
7529
+ ticketsQuantity = window.localStorage.getItem('quantity');
7530
+ userData = JSON.parse(window.localStorage.getItem('user_data') || '{}');
7531
+ checkoutBody = createCheckoutDataBodyWithDefaultHolder(Number(ticketsQuantity) || 0, userData);
7532
+ _context2.prev = 15;
7533
+ _context2.next = 18;
7534
+ return postOnCheckout(_extends({}, checkoutBody, {
7535
+ attributes: _extends({}, checkoutBody.attributes, {
7536
+ add_ons: values
7537
+ })
7538
+ }));
7539
+
7540
+ case 18:
7541
+ checkoutResponse = _context2.sent;
7542
+ hash = _get(checkoutResponse, 'data.data.attributes.hash');
7543
+ total = _get(checkoutResponse, 'data.data.attributes.total');
7544
+ isWindowDefined && window.localStorage.removeItem('quantity');
7545
+ onPostCheckoutSuccess(checkoutResponse == null ? void 0 : checkoutResponse.data);
7546
+ onConfirmSelectionSuccess({
7547
+ skip_billing_page: skipBillingPage,
7548
+ names_required: nameIsRequired,
7549
+ phone_required: phoneIsRequired,
7550
+ age_required: ageIsRequired,
7551
+ event_id: String(eventId),
7552
+ hash: hash,
7553
+ total: total,
7554
+ hasAddOn: hasAddOn
7555
+ });
7556
+ _context2.next = 30;
7557
+ break;
7558
+
7559
+ case 26:
7560
+ _context2.prev = 26;
7561
+ _context2.t0 = _context2["catch"](15);
7562
+ onPostCheckoutError(_context2.t0);
7563
+ onConfirmSelectionError(_context2.t0);
7564
+
7565
+ case 30:
7566
+ _context2.next = 33;
7567
+ break;
7568
+
7569
+ case 32:
7570
+ if (isWindowDefined) {
7571
+ window.localStorage.setItem('add_ons', JSON.stringify(values));
7572
+ onConfirmSelectionSuccess({
7573
+ skip_billing_page: skipBillingPage && enableBillingInfoAutoCreate,
7574
+ names_required: nameIsRequired,
7575
+ phone_required: phoneIsRequired,
7576
+ age_required: ageIsRequired,
7577
+ event_id: String(eventId),
7578
+ hasAddOn: hasAddOn
7579
+ });
7580
+ } else {
7581
+ onConfirmSelectionError({
7582
+ error: true,
7583
+ message: 'Window is not defined'
7584
+ });
7585
+ }
7586
+
7587
+ case 33:
7588
+ _context2.next = 38;
7589
+ break;
7590
+
7591
+ case 35:
7592
+ _context2.prev = 35;
7593
+ _context2.t1 = _context2["catch"](0);
7594
+ onConfirmSelectionError(_context2.t1);
7595
+
7596
+ case 38:
7597
+ case "end":
7598
+ return _context2.stop();
7599
+ }
7600
+ }
7601
+ }, _callee2, null, [[0, 35], [15, 26]]);
7602
+ }));
7603
+
7604
+ return function handleConfirm(_x) {
7605
+ return _ref3.apply(this, arguments);
7606
+ };
7607
+ }();
7608
+
7609
+ if (loading) {
7610
+ return React__default.createElement("div", {
7611
+ className: classNamePrefix + "_loader"
7612
+ }, React__default.createElement(material.CircularProgress, {
7613
+ size: 50
7614
+ }));
7615
+ }
7616
+
7617
+ return React__default.createElement("div", {
7618
+ className: classNamePrefix + "_container"
7619
+ }, React__default.createElement("div", {
7620
+ className: classNamePrefix + "_block"
7621
+ }, React__default.createElement("div", {
7622
+ className: classNamePrefix + "_line_block"
7623
+ }, React__default.createElement("div", {
7624
+ className: classNamePrefix + "_line"
7625
+ }), React__default.createElement("p", {
7626
+ className: classNamePrefix + "_info_title"
7627
+ }, "Get Your Tickets")), React__default.createElement("div", {
7628
+ className: classNamePrefix + "_title"
7629
+ }, "UPGRADES & ADD-ONS"), React__default.createElement("div", {
7630
+ className: classNamePrefix + "_subtitle"
7631
+ }, "PLEASE SELECT FROM THE OPTIONAL ADD-ONS BELOW"), React__default.createElement(formik.Formik, {
7632
+ initialValues: {},
7633
+ onSubmit: handleConfirm
7634
+ }, function (_ref4) {
7635
+ var values = _ref4.values;
7636
+
7637
+ var isConfirmDisabled = _isEmpty(values);
7638
+
7639
+ return React__default.createElement(formik.Form, {
7640
+ autoComplete: "off",
7641
+ className: "form_holder"
7642
+ }, React__default.createElement(React__default.Fragment, null, addons.map(function (addon) {
7643
+ var price = addon.feeIncluded ? addon.price : addon.cost;
7644
+ var isAddonFree = Number(price) === 0;
7645
+ var addonNormalizedPrice = isAddonFree ? 'FREE' : currencyNormalizerCreator(getNormalizedPrice(price), addon.currency);
7646
+ return React__default.createElement("div", {
7647
+ key: addon.id,
7648
+ className: classNamePrefix + "_product_block"
7649
+ }, React__default.createElement("div", {
7650
+ className: classNamePrefix + "_product_images"
7651
+ }, addon.imageUrl && React__default.createElement("div", {
7652
+ className: classNamePrefix + "_product_image_block"
7653
+ }, React__default.createElement("img", {
7654
+ src: addon.imageUrl,
7655
+ alt: "No Data"
7656
+ }))), React__default.createElement("div", {
7657
+ className: classNamePrefix + "_product_info_block"
7658
+ }, React__default.createElement("div", {
7659
+ className: classNamePrefix + "_product_title"
7660
+ }, addon.name), React__default.createElement("div", {
7661
+ className: classNamePrefix + "_product_price"
7662
+ }, addonNormalizedPrice, !isAddonFree && React__default.createElement("span", {
7663
+ className: classNamePrefix + "_product_fee"
7664
+ }, addon.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'))), React__default.createElement("div", {
7665
+ className: classNamePrefix + "_product_desc",
7666
+ dangerouslySetInnerHTML: createMarkup(addon.description)
7667
+ }), React__default.createElement("div", {
7668
+ className: classNamePrefix + "_product_select_container"
7669
+ }, addon.variants ? addon.variants.map(function (variant) {
7670
+ return (// Group Variants
7671
+ React__default.createElement(AddonComponent, {
7672
+ key: variant.id,
7673
+ data: variant,
7674
+ selectOptions: addonsOptions[variant.id],
7675
+ classNamePrefix: classNamePrefix,
7676
+ handleAddonChange: function handleAddonChange(id, value) {
7677
+ return onFieldChange(id, value, addon);
7678
+ }
7679
+ })
7680
+ );
7681
+ }) : // Simple Addon
7682
+ React__default.createElement(AddonComponent, {
7683
+ key: addon.id,
7684
+ data: addon,
7685
+ selectOptions: addonsOptions[addon.id],
7686
+ classNamePrefix: classNamePrefix,
7687
+ handleAddonChange: function handleAddonChange(id, value) {
7688
+ return onFieldChange(id, value, addon);
7689
+ }
7690
+ })));
7691
+ }), React__default.createElement("button", {
7692
+ type: "submit",
7693
+ className: (isConfirmDisabled ? classNamePrefix + "_is_disabled" : '') + " " + classNamePrefix + "_submit_button",
7694
+ disabled: isConfirmDisabled
7695
+ }, "CONFIRM SELECTION")));
7696
+ })));
7697
+ };
7698
+
6948
7699
  var style$5 = {
6949
7700
  position: 'absolute',
6950
7701
  top: '10%',
@@ -7124,6 +7875,7 @@ var RsvpContainer = function RsvpContainer(_ref) {
7124
7875
  }, "RSVP"))))))));
7125
7876
  };
7126
7877
 
7878
+ exports.AddonsContainter = AddonsContainter;
7127
7879
  exports.BillingInfoContainer = BillingInfoContainer;
7128
7880
  exports.ConfirmationContainer = ConfirmationContainer;
7129
7881
  exports.ForgotPasswordModal = ForgotPasswordModal;