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
@@ -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,13 @@ 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];
4331
+
4332
+ if (field.id === 'add_ons' && _isEmpty(value)) {
4333
+ return false;
4334
+ }
4335
+
4235
4336
  return React__default.createElement("div", {
4236
4337
  key: id,
4237
4338
  className: "order_info_block"
@@ -4239,7 +4340,16 @@ var PaymentContainer = function PaymentContainer(_ref) {
4239
4340
  className: "order_info_title"
4240
4341
  }, label), React__default.createElement("div", {
4241
4342
  className: className + " order_info_text"
4242
- }, normalizer(orderData[id], orderData.currency)));
4343
+ }, typeof value === 'string' ? normalizer(value, currency) : _map(value, function (item) {
4344
+ return React__default.createElement("div", {
4345
+ key: item.id,
4346
+ className: "add-on-container"
4347
+ }, React__default.createElement("span", null, item.quantity), React__default.createElement("span", {
4348
+ className: "add-on-x"
4349
+ }, ' 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", {
4350
+ className: "add-on-each"
4351
+ }, ' each'));
4352
+ })));
4243
4353
  })), enablePaymentPlan && React__default.createElement("div", {
4244
4354
  className: "payment_toggle"
4245
4355
  }, React__default.createElement("label", {
@@ -5187,15 +5297,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
5187
5297
  _ref$contentStyle = _ref.contentStyle,
5188
5298
  contentStyle = _ref$contentStyle === void 0 ? {} : _ref$contentStyle,
5189
5299
  _ref$onAddToCartError = _ref.onAddToCartError,
5190
- onAddToCartError = _ref$onAddToCartError === void 0 ? function () {} : _ref$onAddToCartError,
5300
+ onAddToCartError = _ref$onAddToCartError === void 0 ? _identity : _ref$onAddToCartError,
5191
5301
  _ref$onGetTicketsSucc = _ref.onGetTicketsSuccess,
5192
- onGetTicketsSuccess = _ref$onGetTicketsSucc === void 0 ? function () {} : _ref$onGetTicketsSucc,
5302
+ onGetTicketsSuccess = _ref$onGetTicketsSucc === void 0 ? _identity : _ref$onGetTicketsSucc,
5193
5303
  _ref$onGetTicketsErro = _ref.onGetTicketsError,
5194
- onGetTicketsError = _ref$onGetTicketsErro === void 0 ? function () {} : _ref$onGetTicketsErro,
5304
+ onGetTicketsError = _ref$onGetTicketsErro === void 0 ? _identity : _ref$onGetTicketsErro,
5195
5305
  _ref$onLogoutSuccess = _ref.onLogoutSuccess,
5196
- onLogoutSuccess = _ref$onLogoutSuccess === void 0 ? function () {} : _ref$onLogoutSuccess,
5306
+ onLogoutSuccess = _ref$onLogoutSuccess === void 0 ? _identity : _ref$onLogoutSuccess,
5197
5307
  _ref$onLogoutError = _ref.onLogoutError,
5198
- onLogoutError = _ref$onLogoutError === void 0 ? function () {} : _ref$onLogoutError,
5308
+ onLogoutError = _ref$onLogoutError === void 0 ? _identity : _ref$onLogoutError,
5199
5309
  _ref$theme = _ref.theme,
5200
5310
  theme = _ref$theme === void 0 ? 'light' : _ref$theme,
5201
5311
  _ref$queryPromoCode = _ref.queryPromoCode,
@@ -5421,6 +5531,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5421
5531
 
5422
5532
  if (axios.isAxiosError(_context3.t0)) {
5423
5533
  onGetTicketsError(_context3.t0);
5534
+ setError(_get(_context3.t0, 'response.data.message'));
5424
5535
  }
5425
5536
 
5426
5537
  case 16:
@@ -5465,7 +5576,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5465
5576
  var _ref4 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
5466
5577
  var _product_options, _product_options2, _ticket_types;
5467
5578
 
5468
- 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;
5579
+ 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;
5469
5580
 
5470
5581
  return runtime_1.wrap(function _callee2$(_context2) {
5471
5582
  while (1) {
@@ -5496,52 +5607,60 @@ var TicketsContainer = function TicketsContainer(_ref) {
5496
5607
 
5497
5608
  case 9:
5498
5609
  result = _context2.sent;
5610
+ _context2.next = 12;
5611
+ return getCheckoutPageConfigs();
5499
5612
 
5500
- if (!(result.status === 200)) {
5501
- _context2.next = 33;
5613
+ case 12:
5614
+ pageConfigsDataResponse = _context2.sent;
5615
+
5616
+ if (!(result.status === 200 && pageConfigsDataResponse.status === 200)) {
5617
+ _context2.next = 39;
5502
5618
  break;
5503
5619
  }
5504
5620
 
5505
- 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;
5506
- 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;
5507
- 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;
5508
- 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;
5621
+ pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {};
5622
+ skipBillingPage = (_pageConfigsData$skip = pageConfigsData.skip_billing_page) != null ? _pageConfigsData$skip : false;
5623
+ nameIsRequired = (_pageConfigsData$name = pageConfigsData.names_required) != null ? _pageConfigsData$name : false;
5624
+ ageIsRequired = (_pageConfigsData$age_ = pageConfigsData.age_required) != null ? _pageConfigsData$age_ : false;
5625
+ phoneIsRequired = (_pageConfigsData$phon = pageConfigsData.phone_required) != null ? _pageConfigsData$phon : false;
5626
+ hasAddOn = (_pageConfigsData$has_ = pageConfigsData.has_add_on) != null ? _pageConfigsData$has_ : false;
5509
5627
  hash = '';
5510
5628
  total = '';
5629
+ _isWindowDefined = typeof window !== 'undefined';
5630
+ _isWindowDefined && window.localStorage.removeItem('add_ons');
5511
5631
 
5512
- if (!skipBillingPage) {
5513
- _context2.next = 32;
5632
+ if (!(skipBillingPage && !hasAddOn)) {
5633
+ _context2.next = 38;
5514
5634
  break;
5515
5635
  }
5516
5636
 
5517
5637
  // Get user data for checkout data
5518
- _isWindowDefined = typeof window !== 'undefined';
5519
5638
  userData = _isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
5520
5639
  access_token = _isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
5521
5640
  checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketQuantity, userData);
5522
5641
 
5523
5642
  if (!enableBillingInfoAutoCreate) {
5524
- _context2.next = 28;
5643
+ _context2.next = 34;
5525
5644
  break;
5526
5645
  }
5527
5646
 
5528
- _context2.next = 25;
5647
+ _context2.next = 31;
5529
5648
  return postOnCheckout(checkoutBody, access_token);
5530
5649
 
5531
- case 25:
5650
+ case 31:
5532
5651
  _context2.t0 = _context2.sent;
5533
- _context2.next = 29;
5652
+ _context2.next = 35;
5534
5653
  break;
5535
5654
 
5536
- case 28:
5655
+ case 34:
5537
5656
  _context2.t0 = null;
5538
5657
 
5539
- case 29:
5658
+ case 35:
5540
5659
  checkoutResult = _context2.t0;
5541
5660
  hash = _get(checkoutResult, 'data.data.attributes.hash');
5542
5661
  total = _get(checkoutResult, 'data.data.attributes.total');
5543
5662
 
5544
- case 32:
5663
+ case 38:
5545
5664
  onAddToCartSuccess({
5546
5665
  skip_billing_page: skipBillingPage,
5547
5666
  names_required: nameIsRequired,
@@ -5549,15 +5668,16 @@ var TicketsContainer = function TicketsContainer(_ref) {
5549
5668
  age_required: ageIsRequired,
5550
5669
  event_id: String(eventId),
5551
5670
  hash: hash,
5552
- total: total
5671
+ total: total,
5672
+ hasAddOn: hasAddOn
5553
5673
  });
5554
5674
 
5555
- case 33:
5556
- _context2.next = 38;
5675
+ case 39:
5676
+ _context2.next = 44;
5557
5677
  break;
5558
5678
 
5559
- case 35:
5560
- _context2.prev = 35;
5679
+ case 41:
5680
+ _context2.prev = 41;
5561
5681
  _context2.t1 = _context2["catch"](6);
5562
5682
 
5563
5683
  if (axios.isAxiosError(_context2.t1)) {
@@ -5565,17 +5685,17 @@ var TicketsContainer = function TicketsContainer(_ref) {
5565
5685
  setError(_get(_context2.t1, 'response.data.message'));
5566
5686
  }
5567
5687
 
5568
- case 38:
5569
- _context2.prev = 38;
5688
+ case 44:
5689
+ _context2.prev = 44;
5570
5690
  setHandleBookIsLoading(false);
5571
- return _context2.finish(38);
5691
+ return _context2.finish(44);
5572
5692
 
5573
- case 41:
5693
+ case 47:
5574
5694
  case "end":
5575
5695
  return _context2.stop();
5576
5696
  }
5577
5697
  }
5578
- }, _callee2, null, [[6, 35, 38, 41]]);
5698
+ }, _callee2, null, [[6, 41, 44, 47]]);
5579
5699
  }));
5580
5700
 
5581
5701
  return function handleBook() {
@@ -6644,7 +6764,7 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
6644
6764
  window.location.assign('/orders');
6645
6765
  }
6646
6766
  }
6647
- }, "Back to Orders")))), React__default.createElement("div", {
6767
+ }, "Back to Orders")))), !(data != null && data.disable_referral) && React__default.createElement("div", {
6648
6768
  className: "personal-link"
6649
6769
  }, React__default.createElement("div", {
6650
6770
  className: "link-item"
@@ -6950,6 +7070,695 @@ var TicketResaleContainer = function TicketResaleContainer(_ref) {
6950
7070
  }, React__default.createElement("h3", null, successMessage ? successMessage : error)));
6951
7071
  };
6952
7072
 
7073
+ var addonsWithGroupsAdapter = function addonsWithGroupsAdapter(data) {
7074
+ var addonsData = _extends({}, data);
7075
+
7076
+ var addOnsGroups = _get(addonsData, 'add_on_groups', []);
7077
+
7078
+ var addons = _get(addonsData, 'add_ons', []);
7079
+
7080
+ if (!_isEmpty(addOnsGroups)) {
7081
+ var addOnGroupsWithVariants = [];
7082
+ var addOnsWithoutVariants = [];
7083
+ addons.forEach(function (addon) {
7084
+ if (addon.attributes.addOnGroupId) {
7085
+ // Collect addons groups inside with their variants
7086
+ var currentGroupId = addon.attributes.addOnGroupId;
7087
+ var exsistingGroupIndex = addOnGroupsWithVariants.findIndex(function (item) {
7088
+ return item.id === currentGroupId;
7089
+ });
7090
+
7091
+ if (addOnGroupsWithVariants[exsistingGroupIndex]) {
7092
+ var addOnGroup = addOnGroupsWithVariants[exsistingGroupIndex];
7093
+ addOnGroupsWithVariants[exsistingGroupIndex] = _extends({}, addOnGroup, {
7094
+ variants: [].concat(addOnGroup.variants, addon.attributes)
7095
+ });
7096
+ } else {
7097
+ var group = addOnsGroups.find(function (group) {
7098
+ return group.attributes.id === currentGroupId;
7099
+ }) || {};
7100
+ addOnGroupsWithVariants.push(_extends({}, group.attributes, {
7101
+ variants: [].concat(addon.attributes)
7102
+ }));
7103
+ }
7104
+ } else {
7105
+ addOnsWithoutVariants.push(addon.attributes);
7106
+ }
7107
+ });
7108
+ return addOnGroupsWithVariants.concat(addOnsWithoutVariants);
7109
+ } // Adapt only simple addons data
7110
+
7111
+
7112
+ var adaptedAddons = addons.map(function (addon) {
7113
+ return _extends({}, addon.attributes);
7114
+ });
7115
+ return adaptedAddons;
7116
+ };
7117
+ var cartAdapter = function cartAdapter(cart) {
7118
+ var cartData = _get(cart, 'data.data.attributes', []);
7119
+
7120
+ var expiresAt = cartData.expiresAt,
7121
+ carts_arr = cartData.cart;
7122
+
7123
+ var _ref = carts_arr[0] || {},
7124
+ id = _ref.id,
7125
+ quantity = _ref.quantity;
7126
+
7127
+ return {
7128
+ id: id,
7129
+ quantity: quantity,
7130
+ expiresAt: expiresAt
7131
+ };
7132
+ };
7133
+
7134
+ var AddonComponent = function AddonComponent(_ref) {
7135
+ var _ref$classNamePrefix = _ref.classNamePrefix,
7136
+ classNamePrefix = _ref$classNamePrefix === void 0 ? '' : _ref$classNamePrefix,
7137
+ data = _ref.data,
7138
+ selectOptions = _ref.selectOptions,
7139
+ _ref$handleAddonChang = _ref.handleAddonChange,
7140
+ handleAddonChange = _ref$handleAddonChang === void 0 ? _identity : _ref$handleAddonChang;
7141
+ var id = data.id,
7142
+ name = data.name,
7143
+ active = data.active,
7144
+ stock = data.stock;
7145
+ return React__default.createElement("div", {
7146
+ key: id,
7147
+ className: classNamePrefix + "_product_select_container"
7148
+ }, React__default.createElement("div", {
7149
+ className: classNamePrefix + "_product_select_block",
7150
+ key: name
7151
+ }, React__default.createElement("div", {
7152
+ className: classNamePrefix + "_product_size"
7153
+ }, name), React__default.createElement("div", {
7154
+ className: classNamePrefix + "_product_qty_select_block"
7155
+ }, !active || !_isNull(stock) && stock <= 0 ? React__default.createElement("div", {
7156
+ className: "sold_out"
7157
+ }, "SOLD OUT") : React__default.createElement("div", {
7158
+ className: classNamePrefix + "_product_qty_select"
7159
+ }, React__default.createElement(formik.Field, {
7160
+ name: id,
7161
+ selectOptions: selectOptions,
7162
+ component: SelectField,
7163
+ onChange: function onChange(e) {
7164
+ var value = e.target.value;
7165
+ handleAddonChange(id, value);
7166
+ }
7167
+ })))));
7168
+ };
7169
+
7170
+ var getNormalizedPrice = function getNormalizedPrice(value) {
7171
+ var minimizedValue = Number(value) / 100;
7172
+ var normalized = minimizedValue.toFixed(2);
7173
+ return normalized;
7174
+ };
7175
+
7176
+ var generateSelectOptions = function generateSelectOptions(minCount, maxCount) {
7177
+ if (minCount === void 0) {
7178
+ minCount = 1;
7179
+ }
7180
+
7181
+ if (maxCount === void 0) {
7182
+ maxCount = 10;
7183
+ }
7184
+
7185
+ var options = [];
7186
+
7187
+ for (var i = minCount; i <= maxCount; i++) {
7188
+ options.push({
7189
+ label: i,
7190
+ value: i
7191
+ });
7192
+ }
7193
+
7194
+ return options;
7195
+ };
7196
+
7197
+ var generateStockBasedOnLimitations = function generateStockBasedOnLimitations(addon, ticketQuantity) {
7198
+ // Generate addon available stock count based on limitations
7199
+ var flagLimitToTicketQuantity = addon.flagLimitToTicketQuantity,
7200
+ maxQuantity = addon.maxQuantity,
7201
+ limitPerTicket = addon.limitPerTicket;
7202
+ var allowedStockCount; // Generate stock
7203
+
7204
+ if (flagLimitToTicketQuantity) {
7205
+ // Limited to ticket quantity case
7206
+ allowedStockCount = ticketQuantity;
7207
+ } else if (maxQuantity && limitPerTicket) {
7208
+ var stockBasedOnLimitPerTicket = limitPerTicket * ticketQuantity; // Both maximum quantity and limited to per ticket selected case, stock is minimum of them
7209
+
7210
+ allowedStockCount = maxQuantity <= stockBasedOnLimitPerTicket ? maxQuantity : stockBasedOnLimitPerTicket;
7211
+ } else if (maxQuantity && !limitPerTicket) {
7212
+ // Limited to maximum quantity case
7213
+ allowedStockCount = maxQuantity;
7214
+ } else if (!maxQuantity && limitPerTicket) {
7215
+ // Limited to per ticket case
7216
+ allowedStockCount = limitPerTicket * ticketQuantity;
7217
+ }
7218
+
7219
+ return Number(allowedStockCount);
7220
+ };
7221
+
7222
+ var filterStockBasedOnAvailability = function filterStockBasedOnAvailability(generatedStock, availableStock) {
7223
+ // Check generated stock count admissibility with addon stock availability
7224
+ var filteredStockCount = generatedStock;
7225
+
7226
+ if (generatedStock) {
7227
+ if (generatedStock > availableStock && !_isNull(availableStock)) {
7228
+ filteredStockCount = availableStock;
7229
+ }
7230
+ } else {
7231
+ // Not set any restriction
7232
+ // Here 10 value is business logic
7233
+ filteredStockCount = 10;
7234
+
7235
+ if (!_isNull(availableStock) && availableStock < filteredStockCount) {
7236
+ filteredStockCount = availableStock;
7237
+ }
7238
+ }
7239
+
7240
+ return filteredStockCount;
7241
+ };
7242
+
7243
+ var getAddonSelectOptions = function getAddonSelectOptions(addons, choosedTicketCount) {
7244
+ var addonsWithOptions = {};
7245
+ var groupsWithSelectedVariantsInfo = {};
7246
+ var groupsWithVariants = {};
7247
+ addons.forEach(function (addon) {
7248
+ // Here addon can act either as simple Addon or Addon Group
7249
+ var id = addon.id,
7250
+ simpleAddonStock = addon.stock,
7251
+ variants = addon.variants,
7252
+ active = addon.active,
7253
+ flagLimitToTicketQuantity = addon.flagLimitToTicketQuantity,
7254
+ maxQuantity = addon.maxQuantity,
7255
+ limitPerTicket = addon.limitPerTicket;
7256
+
7257
+ if (variants) {
7258
+ // Addon Group with inside addon variants case
7259
+ variants.forEach(function (variant) {
7260
+ var variantId = variant.id,
7261
+ variantStock = variant.stock; // null checking is for unlimited stock value
7262
+
7263
+ if (active && (variantStock > 0 || _isNull(variantStock))) {
7264
+ var _extends3;
7265
+
7266
+ // Generate Addon Group allowed stock count based on limitations
7267
+ var stockBasedOnLimitation = generateStockBasedOnLimitations(addon, choosedTicketCount); // Detect if group has limitation or not
7268
+
7269
+ if (flagLimitToTicketQuantity || maxQuantity || limitPerTicket) {
7270
+ // Generate Group with inside variants info
7271
+ if (groupsWithSelectedVariantsInfo[id]) {
7272
+ var _extends2;
7273
+
7274
+ // Set group limit
7275
+ if (groupsWithSelectedVariantsInfo[id].limit < stockBasedOnLimitation) {
7276
+ groupsWithSelectedVariantsInfo[id].limit = stockBasedOnLimitation;
7277
+ } // Set choosed variants info
7278
+
7279
+
7280
+ groupsWithSelectedVariantsInfo[id] = _extends({}, groupsWithSelectedVariantsInfo[id], {
7281
+ choosedVariants: _extends({}, groupsWithSelectedVariantsInfo[id].choosedVariants, (_extends2 = {}, _extends2[variantId] = 0, _extends2))
7282
+ });
7283
+ } else {
7284
+ var _choosedVariants;
7285
+
7286
+ groupsWithSelectedVariantsInfo[id] = {
7287
+ limit: stockBasedOnLimitation,
7288
+ selectedCount: 0,
7289
+ choosedVariants: (_choosedVariants = {}, _choosedVariants[variantId] = 0, _choosedVariants)
7290
+ };
7291
+ }
7292
+ } // Check stock admissibility with addon stock availability
7293
+
7294
+
7295
+ var allowedVariantStockCount = filterStockBasedOnAvailability(stockBasedOnLimitation, variantStock); // Generate options for variant
7296
+
7297
+ var variantOptions = generateSelectOptions(0, allowedVariantStockCount);
7298
+ addonsWithOptions[variantId] = [].concat(variantOptions); // Generate Group with its variants list
7299
+
7300
+ groupsWithVariants[id] = _extends({}, groupsWithVariants[id], (_extends3 = {}, _extends3[variantId] = allowedVariantStockCount, _extends3));
7301
+ }
7302
+ });
7303
+ } else {
7304
+ // Simple addon case, null checking is for unlimited stock value
7305
+ if (active && (simpleAddonStock > 0 || _isNull(simpleAddonStock))) {
7306
+ // Generate Addon Group allowed stock count based on limitations
7307
+ var stockBasedOnLimitation = generateStockBasedOnLimitations(addon, choosedTicketCount); // Check stock admissibility with addon stock availability
7308
+
7309
+ var allowedVariantStockCount = filterStockBasedOnAvailability(stockBasedOnLimitation, simpleAddonStock);
7310
+ var addonOptions = generateSelectOptions(0, allowedVariantStockCount);
7311
+ addonsWithOptions[id] = [].concat(addonOptions);
7312
+ }
7313
+ }
7314
+ });
7315
+ return {
7316
+ addonsWithOptions: addonsWithOptions,
7317
+ groupsWithSelectedVariantsInfo: groupsWithSelectedVariantsInfo,
7318
+ groupsWithVariants: groupsWithVariants
7319
+ };
7320
+ };
7321
+ var getTicketRelatedAddons = function getTicketRelatedAddons(addons, ticketId) {
7322
+ // Filter addons based on choosed ticket
7323
+ var filteredAddons = addons.filter(function (addon) {
7324
+ return _isNull(addon.prerequisiteTicketTypeIds) || addon.prerequisiteTicketTypeIds.includes(ticketId);
7325
+ });
7326
+ return filteredAddons;
7327
+ };
7328
+ var getSortedAddons = function getSortedAddons(addons, sortDirection) {
7329
+ if (sortDirection === void 0) {
7330
+ sortDirection = 'asc';
7331
+ }
7332
+
7333
+ var addonsCopy = [].concat(addons);
7334
+ addonsCopy.forEach(function (addon) {
7335
+ if (addon.variants) {
7336
+ var unsortedVariants = [];
7337
+ addon.variants.forEach(function (variant) {
7338
+ unsortedVariants.push(_extends({}, variant, {
7339
+ sortOrder: Number(variant.sortOrder)
7340
+ }));
7341
+ });
7342
+ addon.sortOrder = Number(addon.variants[0].sortOrder);
7343
+
7344
+ var sortedVariants = _sortBy(unsortedVariants, function (variant) {
7345
+ return variant.sortOrder;
7346
+ });
7347
+
7348
+ addon.variants = sortedVariants;
7349
+ } else {
7350
+ addon.sortOrder = Number(addon.sortOrder);
7351
+ }
7352
+ });
7353
+
7354
+ var sortedAddons = _sortBy(addonsCopy, function (addon) {
7355
+ return addon.sortOrder;
7356
+ });
7357
+
7358
+ if (sortDirection === 'desc') {
7359
+ return _reverse(sortedAddons);
7360
+ }
7361
+
7362
+ return sortedAddons;
7363
+ };
7364
+ var isAtLeastOneAddonSelected = function isAtLeastOneAddonSelected(value) {
7365
+ var selectedAddons = Object.fromEntries(Object.entries(value).filter(function (_ref) {
7366
+ var count = _ref[1];
7367
+ return Number(count) !== 0;
7368
+ }));
7369
+ return !_isEmpty(selectedAddons);
7370
+ };
7371
+
7372
+ var AddonsContainter = function AddonsContainter(_ref) {
7373
+ var _ref$classNamePrefix = _ref.classNamePrefix,
7374
+ classNamePrefix = _ref$classNamePrefix === void 0 ? 'add_on' : _ref$classNamePrefix,
7375
+ _ref$enableBillingInf = _ref.enableBillingInfoAutoCreate,
7376
+ enableBillingInfoAutoCreate = _ref$enableBillingInf === void 0 ? true : _ref$enableBillingInf,
7377
+ _ref$enableTimer = _ref.enableTimer,
7378
+ enableTimer = _ref$enableTimer === void 0 ? false : _ref$enableTimer,
7379
+ _ref$onGetAddonsPageI = _ref.onGetAddonsPageInfoSuccess,
7380
+ onGetAddonsPageInfoSuccess = _ref$onGetAddonsPageI === void 0 ? _identity : _ref$onGetAddonsPageI,
7381
+ _ref$onGetAddonsPageI2 = _ref.onGetAddonsPageInfoError,
7382
+ onGetAddonsPageInfoError = _ref$onGetAddonsPageI2 === void 0 ? _identity : _ref$onGetAddonsPageI2,
7383
+ _ref$onPostCheckoutSu = _ref.onPostCheckoutSuccess,
7384
+ onPostCheckoutSuccess = _ref$onPostCheckoutSu === void 0 ? _identity : _ref$onPostCheckoutSu,
7385
+ _ref$onPostCheckoutEr = _ref.onPostCheckoutError,
7386
+ onPostCheckoutError = _ref$onPostCheckoutEr === void 0 ? _identity : _ref$onPostCheckoutEr,
7387
+ _ref$onConfirmSelecti = _ref.onConfirmSelectionSuccess,
7388
+ onConfirmSelectionSuccess = _ref$onConfirmSelecti === void 0 ? _identity : _ref$onConfirmSelecti,
7389
+ _ref$onConfirmSelecti2 = _ref.onConfirmSelectionError,
7390
+ onConfirmSelectionError = _ref$onConfirmSelecti2 === void 0 ? _identity : _ref$onConfirmSelecti2,
7391
+ _ref$onCountdownFinis = _ref.onCountdownFinish,
7392
+ _onCountdownFinish = _ref$onCountdownFinis === void 0 ? _identity : _ref$onCountdownFinis;
7393
+
7394
+ var eventId = getQueryVariable('event_id');
7395
+
7396
+ var _useState = React.useState([]),
7397
+ addons = _useState[0],
7398
+ setAddons = _useState[1];
7399
+
7400
+ var _useState2 = React.useState({}),
7401
+ addonsOptions = _useState2[0],
7402
+ setAddonsOptions = _useState2[1];
7403
+
7404
+ var _useState3 = React.useState({}),
7405
+ groupsWithSelectedVariants = _useState3[0],
7406
+ setGroupsWithSelectedVariants = _useState3[1];
7407
+
7408
+ var _useState4 = React.useState({}),
7409
+ groupsWithInitialVariantsValues = _useState4[0],
7410
+ setGroupsWithInitialVariantsValues = _useState4[1];
7411
+
7412
+ var _useState5 = React.useState(true),
7413
+ loading = _useState5[0],
7414
+ setLoading = _useState5[1];
7415
+
7416
+ var _useState6 = React.useState(0),
7417
+ cartExpirationTime = _useState6[0],
7418
+ setCartExpirationTime = _useState6[1];
7419
+
7420
+ React.useEffect(function () {
7421
+ var getAddonsPageInfo = /*#__PURE__*/function () {
7422
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
7423
+ var cart, _cartAdapter, choosedTicketID, quantity, expiresAt, choosedTicketCount, addonsData, adaptedAddons, ticketRelatedAddons, sortedTicketAddons, _getAddonSelectOption, addonsWithOptions, groupsWithSelectedVariantsInfo, groupsWithVariants;
7424
+
7425
+ return runtime_1.wrap(function _callee$(_context) {
7426
+ while (1) {
7427
+ switch (_context.prev = _context.next) {
7428
+ case 0:
7429
+ _context.prev = 0;
7430
+
7431
+ if (!eventId) {
7432
+ _context.next = 21;
7433
+ break;
7434
+ }
7435
+
7436
+ setLoading(true); // Get choosed ticket info (id, count) from Cart request for addons options calculations
7437
+
7438
+ _context.next = 5;
7439
+ return getCart();
7440
+
7441
+ case 5:
7442
+ cart = _context.sent;
7443
+ _cartAdapter = cartAdapter(cart), choosedTicketID = _cartAdapter.id, quantity = _cartAdapter.quantity, expiresAt = _cartAdapter.expiresAt;
7444
+ choosedTicketCount = Number(quantity);
7445
+ setCartExpirationTime(expiresAt); // Get and collect addons data
7446
+
7447
+ _context.next = 11;
7448
+ return getAddons(eventId);
7449
+
7450
+ case 11:
7451
+ addonsData = _context.sent;
7452
+ adaptedAddons = addonsWithGroupsAdapter(addonsData);
7453
+ ticketRelatedAddons = getTicketRelatedAddons(adaptedAddons, choosedTicketID);
7454
+ sortedTicketAddons = getSortedAddons(ticketRelatedAddons);
7455
+ setAddons(sortedTicketAddons); // Collect addons and addon group options
7456
+
7457
+ _getAddonSelectOption = getAddonSelectOptions(adaptedAddons, choosedTicketCount), addonsWithOptions = _getAddonSelectOption.addonsWithOptions, groupsWithSelectedVariantsInfo = _getAddonSelectOption.groupsWithSelectedVariantsInfo, groupsWithVariants = _getAddonSelectOption.groupsWithVariants;
7458
+ setAddonsOptions(addonsWithOptions);
7459
+ setGroupsWithSelectedVariants(groupsWithSelectedVariantsInfo);
7460
+ setGroupsWithInitialVariantsValues(groupsWithVariants); // Success callback props
7461
+
7462
+ onGetAddonsPageInfoSuccess(addonsData);
7463
+
7464
+ case 21:
7465
+ _context.next = 26;
7466
+ break;
7467
+
7468
+ case 23:
7469
+ _context.prev = 23;
7470
+ _context.t0 = _context["catch"](0);
7471
+ // Callback error props
7472
+ onGetAddonsPageInfoError(_context.t0);
7473
+
7474
+ case 26:
7475
+ _context.prev = 26;
7476
+ setLoading(false);
7477
+ return _context.finish(26);
7478
+
7479
+ case 29:
7480
+ case "end":
7481
+ return _context.stop();
7482
+ }
7483
+ }
7484
+ }, _callee, null, [[0, 23, 26, 29]]);
7485
+ }));
7486
+
7487
+ return function getAddonsPageInfo() {
7488
+ return _ref2.apply(this, arguments);
7489
+ };
7490
+ }();
7491
+
7492
+ getAddonsPageInfo();
7493
+ }, []);
7494
+
7495
+ var recreateGroupVariantsSelectOptions = function recreateGroupVariantsSelectOptions(groupId, changedGroupd) {
7496
+ var choosedVariants = changedGroupd.choosedVariants,
7497
+ limit = changedGroupd.limit,
7498
+ selectedCount = changedGroupd.selectedCount;
7499
+ var remainingGroupStock = limit - selectedCount;
7500
+ var recreatedVariantsOptions = {}; // Regenerate variants allowed stock counts
7501
+
7502
+ for (var variant in choosedVariants) {
7503
+ var variantId = variant;
7504
+ var variantCurrSelectedValue = choosedVariants[variant];
7505
+ var allowedOptionCount = void 0; // Formula for regenerating
7506
+
7507
+ if (remainingGroupStock >= groupsWithInitialVariantsValues[groupId][variantId] - variantCurrSelectedValue) {
7508
+ allowedOptionCount = groupsWithInitialVariantsValues[groupId][variantId];
7509
+ } else {
7510
+ allowedOptionCount = remainingGroupStock + variantCurrSelectedValue;
7511
+ }
7512
+
7513
+ recreatedVariantsOptions[variantId] = generateSelectOptions(0, allowedOptionCount);
7514
+ }
7515
+
7516
+ setAddonsOptions(function (prevState) {
7517
+ return Object.assign({}, prevState, recreatedVariantsOptions);
7518
+ });
7519
+ };
7520
+
7521
+ var onFieldChange = function onFieldChange(id, value, addon) {
7522
+ // If changeableGroup exsists it means that group with limitation variant was changed
7523
+ var changeableGroup = groupsWithSelectedVariants[addon.id];
7524
+
7525
+ if (changeableGroup) {
7526
+ var _extends2, _extends3;
7527
+
7528
+ var currGroupId = addon.id;
7529
+ var currSelectedVariantId = id;
7530
+ var currSelectedVariantCount = Number(value);
7531
+ var currSelectedVariantPrevCount = groupsWithSelectedVariants[currGroupId].choosedVariants[currSelectedVariantId];
7532
+ var currSelectedGroupCount = changeableGroup.selectedCount + (currSelectedVariantCount - currSelectedVariantPrevCount); // Update Group info
7533
+
7534
+ var updatedGroupsWithSelectedVariants = _extends({}, groupsWithSelectedVariants, (_extends3 = {}, _extends3[currGroupId] = _extends({}, groupsWithSelectedVariants[currGroupId], {
7535
+ selectedCount: currSelectedGroupCount,
7536
+ choosedVariants: _extends({}, groupsWithSelectedVariants[currGroupId].choosedVariants, (_extends2 = {}, _extends2[currSelectedVariantId] = currSelectedVariantCount, _extends2))
7537
+ }), _extends3));
7538
+
7539
+ setGroupsWithSelectedVariants(updatedGroupsWithSelectedVariants); // Recreate Select Options for Addon Group Variants
7540
+
7541
+ recreateGroupVariantsSelectOptions(currGroupId, updatedGroupsWithSelectedVariants[currGroupId]);
7542
+ }
7543
+ };
7544
+
7545
+ var handleConfirm = /*#__PURE__*/function () {
7546
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(values, skipAddonPage) {
7547
+ 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;
7548
+
7549
+ return runtime_1.wrap(function _callee2$(_context2) {
7550
+ while (1) {
7551
+ switch (_context2.prev = _context2.next) {
7552
+ case 0:
7553
+ _context2.prev = 0;
7554
+ _context2.next = 3;
7555
+ return getCheckoutPageConfigs();
7556
+
7557
+ case 3:
7558
+ pageConfigsDataResponse = _context2.sent;
7559
+ pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {};
7560
+ isWindowDefined = typeof window !== 'undefined';
7561
+ skipBillingPage = (_pageConfigsData$skip = pageConfigsData.skip_billing_page) != null ? _pageConfigsData$skip : false;
7562
+ nameIsRequired = (_pageConfigsData$name = pageConfigsData.names_required) != null ? _pageConfigsData$name : false;
7563
+ ageIsRequired = (_pageConfigsData$age_ = pageConfigsData.age_required) != null ? _pageConfigsData$age_ : false;
7564
+ phoneIsRequired = (_pageConfigsData$phon = pageConfigsData.phone_required) != null ? _pageConfigsData$phon : false;
7565
+ hasAddOn = (_pageConfigsData$has_ = pageConfigsData.has_add_on) != null ? _pageConfigsData$has_ : false;
7566
+
7567
+ if (!(skipBillingPage && enableBillingInfoAutoCreate)) {
7568
+ _context2.next = 33;
7569
+ break;
7570
+ }
7571
+
7572
+ ticketsQuantity = window.localStorage.getItem('quantity');
7573
+ userData = JSON.parse(window.localStorage.getItem('user_data') || '{}');
7574
+ checkoutBody = createCheckoutDataBodyWithDefaultHolder(Number(ticketsQuantity) || 0, userData);
7575
+ _context2.prev = 15;
7576
+ _context2.next = 18;
7577
+ return postOnCheckout(_extends({}, checkoutBody, {
7578
+ attributes: _extends({}, checkoutBody.attributes, !skipAddonPage && {
7579
+ add_ons: values
7580
+ })
7581
+ }));
7582
+
7583
+ case 18:
7584
+ checkoutResponse = _context2.sent;
7585
+ hash = _get(checkoutResponse, 'data.data.attributes.hash');
7586
+ total = _get(checkoutResponse, 'data.data.attributes.total');
7587
+ isWindowDefined && window.localStorage.removeItem('quantity');
7588
+ isWindowDefined && window.localStorage.removeItem('add_ons');
7589
+ onPostCheckoutSuccess(checkoutResponse == null ? void 0 : checkoutResponse.data);
7590
+ onConfirmSelectionSuccess({
7591
+ skip_billing_page: skipBillingPage,
7592
+ names_required: nameIsRequired,
7593
+ phone_required: phoneIsRequired,
7594
+ age_required: ageIsRequired,
7595
+ event_id: String(eventId),
7596
+ hash: hash,
7597
+ total: total,
7598
+ hasAddOn: hasAddOn
7599
+ });
7600
+ _context2.next = 31;
7601
+ break;
7602
+
7603
+ case 27:
7604
+ _context2.prev = 27;
7605
+ _context2.t0 = _context2["catch"](15);
7606
+ onPostCheckoutError(_context2.t0);
7607
+ onConfirmSelectionError(_context2.t0);
7608
+
7609
+ case 31:
7610
+ _context2.next = 34;
7611
+ break;
7612
+
7613
+ case 33:
7614
+ if (isWindowDefined) {
7615
+ if (!skipAddonPage) {
7616
+ window.localStorage.setItem('add_ons', JSON.stringify(values));
7617
+ }
7618
+
7619
+ onConfirmSelectionSuccess({
7620
+ skip_billing_page: skipBillingPage && enableBillingInfoAutoCreate,
7621
+ names_required: nameIsRequired,
7622
+ phone_required: phoneIsRequired,
7623
+ age_required: ageIsRequired,
7624
+ event_id: String(eventId),
7625
+ hasAddOn: hasAddOn
7626
+ });
7627
+ } else {
7628
+ onConfirmSelectionError({
7629
+ error: true,
7630
+ message: 'Window is not defined'
7631
+ });
7632
+ }
7633
+
7634
+ case 34:
7635
+ _context2.next = 39;
7636
+ break;
7637
+
7638
+ case 36:
7639
+ _context2.prev = 36;
7640
+ _context2.t1 = _context2["catch"](0);
7641
+ onConfirmSelectionError(_context2.t1);
7642
+
7643
+ case 39:
7644
+ case "end":
7645
+ return _context2.stop();
7646
+ }
7647
+ }
7648
+ }, _callee2, null, [[0, 36], [15, 27]]);
7649
+ }));
7650
+
7651
+ return function handleConfirm(_x, _x2) {
7652
+ return _ref3.apply(this, arguments);
7653
+ };
7654
+ }();
7655
+
7656
+ var handleClearAddons = function handleClearAddons() {
7657
+ window.localStorage.removeItem('add_ons');
7658
+ };
7659
+
7660
+ if (loading) {
7661
+ return React__default.createElement("div", {
7662
+ className: classNamePrefix + "_loader"
7663
+ }, React__default.createElement(material.CircularProgress, {
7664
+ size: 50
7665
+ }));
7666
+ }
7667
+
7668
+ return React__default.createElement(React__default.Fragment, null, !!cartExpirationTime && enableTimer && React__default.createElement(TimerWidget$1, {
7669
+ expires_at: cartExpirationTime,
7670
+ onCountdownFinish: function onCountdownFinish() {
7671
+ handleClearAddons();
7672
+
7673
+ _onCountdownFinish();
7674
+ }
7675
+ }), React__default.createElement("div", {
7676
+ className: classNamePrefix + "_container"
7677
+ }, React__default.createElement("div", {
7678
+ className: classNamePrefix + "_block"
7679
+ }, React__default.createElement("div", {
7680
+ className: classNamePrefix + "_line_block"
7681
+ }, React__default.createElement("p", {
7682
+ className: classNamePrefix + "_info_title"
7683
+ }, "Get Your Tickets"), React__default.createElement("button", {
7684
+ type: "button",
7685
+ className: classNamePrefix + "_skip",
7686
+ onClick: function onClick() {
7687
+ handleClearAddons();
7688
+ handleConfirm({}, true);
7689
+ }
7690
+ }, "Skip")), React__default.createElement("div", {
7691
+ className: classNamePrefix + "_title"
7692
+ }, "UPGRADES & ADD-ONS"), React__default.createElement("div", {
7693
+ className: classNamePrefix + "_subtitle"
7694
+ }, "PLEASE SELECT FROM THE OPTIONAL ADD-ONS BELOW"), React__default.createElement(formik.Formik, {
7695
+ initialValues: {},
7696
+ onSubmit: function onSubmit(values) {
7697
+ handleConfirm(values);
7698
+ }
7699
+ }, function (_ref4) {
7700
+ var values = _ref4.values;
7701
+ var isConfirmDisabled = !isAtLeastOneAddonSelected(values);
7702
+ return React__default.createElement(formik.Form, {
7703
+ autoComplete: "off",
7704
+ className: "form_holder"
7705
+ }, React__default.createElement(React__default.Fragment, null, addons.map(function (addon) {
7706
+ var price = addon.feeIncluded ? addon.price : addon.cost;
7707
+ var isAddonFree = Number(price) === 0;
7708
+ var addonNormalizedPrice = isAddonFree ? 'FREE' : currencyNormalizerCreator(getNormalizedPrice(price), addon.currency);
7709
+ return React__default.createElement("div", {
7710
+ key: addon.id,
7711
+ className: classNamePrefix + "_product_block"
7712
+ }, React__default.createElement("div", {
7713
+ className: classNamePrefix + "_product_images"
7714
+ }, addon.imageUrl && React__default.createElement("div", {
7715
+ className: classNamePrefix + "_product_image_block"
7716
+ }, React__default.createElement("img", {
7717
+ src: addon.imageUrl,
7718
+ alt: "No Data"
7719
+ }))), React__default.createElement("div", {
7720
+ className: classNamePrefix + "_product_info_block"
7721
+ }, React__default.createElement("div", {
7722
+ className: classNamePrefix + "_product_title"
7723
+ }, addon.name), React__default.createElement("div", {
7724
+ className: classNamePrefix + "_product_price"
7725
+ }, addonNormalizedPrice, !isAddonFree && React__default.createElement("span", {
7726
+ className: classNamePrefix + "_product_fee"
7727
+ }, addon.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'))), React__default.createElement("div", {
7728
+ className: classNamePrefix + "_product_desc",
7729
+ dangerouslySetInnerHTML: createMarkup(addon.description)
7730
+ }), React__default.createElement("div", {
7731
+ className: classNamePrefix + "_product_select_container"
7732
+ }, addon.variants ? addon.variants.map(function (variant) {
7733
+ return (// Group Variants
7734
+ React__default.createElement(AddonComponent, {
7735
+ key: variant.id,
7736
+ data: variant,
7737
+ selectOptions: addonsOptions[variant.id],
7738
+ classNamePrefix: classNamePrefix,
7739
+ handleAddonChange: function handleAddonChange(id, value) {
7740
+ return onFieldChange(id, value, addon);
7741
+ }
7742
+ })
7743
+ );
7744
+ }) : // Simple Addon
7745
+ React__default.createElement(AddonComponent, {
7746
+ key: addon.id,
7747
+ data: addon,
7748
+ selectOptions: addonsOptions[addon.id],
7749
+ classNamePrefix: classNamePrefix,
7750
+ handleAddonChange: function handleAddonChange(id, value) {
7751
+ return onFieldChange(id, value, addon);
7752
+ }
7753
+ })));
7754
+ }), React__default.createElement("button", {
7755
+ type: "submit",
7756
+ className: (isConfirmDisabled ? classNamePrefix + "_is_disabled" : '') + " " + classNamePrefix + "_submit_button",
7757
+ disabled: isConfirmDisabled
7758
+ }, "CONFIRM SELECTION")));
7759
+ }))));
7760
+ };
7761
+
6953
7762
  var style$5 = {
6954
7763
  position: 'absolute',
6955
7764
  top: '10%',
@@ -7129,6 +7938,7 @@ var RsvpContainer = function RsvpContainer(_ref) {
7129
7938
  }, "RSVP"))))))));
7130
7939
  };
7131
7940
 
7941
+ exports.AddonsContainter = AddonsContainter;
7132
7942
  exports.BillingInfoContainer = BillingInfoContainer;
7133
7943
  exports.ConfirmationContainer = ConfirmationContainer;
7134
7944
  exports.ForgotPasswordModal = ForgotPasswordModal;