tf-checkout-react 1.0.106 → 1.2.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 (77) hide show
  1. package/README.md +278 -1
  2. package/dist/api/index.d.ts +40 -28
  3. package/dist/components/account-settings/index.d.ts +3 -0
  4. package/dist/components/billing-info-container/index.d.ts +11 -8
  5. package/dist/components/common/PhoneNumberField.d.ts +9 -0
  6. package/dist/components/common/index.d.ts +1 -0
  7. package/dist/components/confirmationContainer/index.d.ts +2 -1
  8. package/dist/components/countdown/index.d.ts +2 -1
  9. package/dist/components/forgotPasswordModal/index.d.ts +11 -0
  10. package/dist/components/index.d.ts +1 -0
  11. package/dist/components/loginModal/index.d.ts +35 -2
  12. package/dist/components/myTicketsContainer/index.d.ts +2 -1
  13. package/dist/components/myTicketsContainer/tableConfig.d.ts +1 -1
  14. package/dist/components/orderDetailsContainer/index.d.ts +6 -1
  15. package/dist/components/orderDetailsContainer/ticketsTable.d.ts +2 -1
  16. package/dist/components/paymentContainer/index.d.ts +2 -1
  17. package/dist/components/resetPasswordContainer/index.d.ts +10 -0
  18. package/dist/components/signupModal/index.d.ts +14 -0
  19. package/dist/components/ticketsContainer/PromoCodeSection.d.ts +3 -2
  20. package/dist/components/ticketsContainer/TicketsSection.d.ts +1 -2
  21. package/dist/components/ticketsContainer/index.d.ts +7 -3
  22. package/dist/index.d.ts +2 -0
  23. package/dist/tf-checkout-react.cjs.development.js +2177 -1482
  24. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  25. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  26. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  27. package/dist/tf-checkout-react.esm.js +2166 -1473
  28. package/dist/tf-checkout-react.esm.js.map +1 -1
  29. package/dist/tf-checkout-styles.css +1 -1
  30. package/dist/utils/cookies.d.ts +3 -0
  31. package/dist/utils/createCheckoutDataBodyWithDefaultHolder.d.ts +6 -1
  32. package/dist/utils/downloadPDF.d.ts +1 -1
  33. package/dist/utils/getDomain.d.ts +1 -0
  34. package/dist/utils/index.d.ts +2 -0
  35. package/package.json +12 -1
  36. package/src/api/index.ts +100 -29
  37. package/src/components/account-settings/index.tsx +161 -0
  38. package/src/components/account-settings/style.css +200 -0
  39. package/src/components/billing-info-container/index.tsx +145 -99
  40. package/src/components/billing-info-container/style.css +1 -1
  41. package/src/components/billing-info-container/utils.ts +11 -3
  42. package/src/components/common/PhoneNumberField.tsx +68 -0
  43. package/src/components/common/SnackbarAlert.tsx +1 -1
  44. package/src/components/common/dist/PhoneNumberField.js +96 -0
  45. package/src/components/common/index.tsx +1 -0
  46. package/src/components/confirmationContainer/index.tsx +19 -9
  47. package/src/components/countdown/index.tsx +3 -1
  48. package/src/components/forgotPasswordModal/index.tsx +107 -0
  49. package/src/components/forgotPasswordModal/style.css +47 -0
  50. package/src/components/index.ts +1 -0
  51. package/src/components/loginModal/index.tsx +72 -71
  52. package/src/components/myTicketsContainer/index.tsx +99 -95
  53. package/src/components/myTicketsContainer/style.css +2 -2
  54. package/src/components/myTicketsContainer/tableConfig.tsx +3 -6
  55. package/src/components/orderDetailsContainer/index.tsx +80 -21
  56. package/src/components/orderDetailsContainer/style.css +7 -3
  57. package/src/components/orderDetailsContainer/ticketsTable.tsx +130 -83
  58. package/src/components/paymentContainer/index.tsx +114 -49
  59. package/src/components/registerModal/index.tsx +3 -10
  60. package/src/components/resetPasswordContainer/index.tsx +96 -0
  61. package/src/components/resetPasswordContainer/style.css +36 -0
  62. package/src/components/signupModal/index.tsx +195 -0
  63. package/src/components/signupModal/style.css +58 -0
  64. package/src/components/stripePayment/index.tsx +14 -12
  65. package/src/components/stripePayment/style.css +3 -3
  66. package/src/components/ticketResaleModal/index.tsx +12 -14
  67. package/src/components/ticketsContainer/PromoCodeSection.tsx +8 -7
  68. package/src/components/ticketsContainer/TicketRow.tsx +12 -6
  69. package/src/components/ticketsContainer/TicketsSection.tsx +0 -3
  70. package/src/components/ticketsContainer/index.tsx +155 -86
  71. package/src/env.ts +3 -3
  72. package/src/index.ts +3 -1
  73. package/src/utils/cookies.ts +42 -0
  74. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +16 -4
  75. package/src/utils/downloadPDF.tsx +28 -6
  76. package/src/utils/getDomain.ts +15 -0
  77. package/src/utils/index.ts +2 -0
@@ -4,65 +4,66 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
6
 
7
- var React = require('react');
8
- var React__default = _interopDefault(React);
9
- var formik = require('formik');
7
+ var material = require('@mui/material');
8
+ var Backdrop = _interopDefault(require('@mui/material/Backdrop'));
10
9
  var Button = _interopDefault(require('@mui/material/Button'));
11
- var _identity = _interopDefault(require('lodash/identity'));
12
- var _map = _interopDefault(require('lodash/map'));
10
+ var styles = require('@mui/material/styles');
11
+ var axios = _interopDefault(require('axios'));
12
+ var formik = require('formik');
13
13
  var _get = _interopDefault(require('lodash/get'));
14
+ var _identity = _interopDefault(require('lodash/identity'));
14
15
  var _includes = _interopDefault(require('lodash/includes'));
15
- var _isEqual = _interopDefault(require('lodash/isEqual'));
16
16
  var _isEmpty = _interopDefault(require('lodash/isEmpty'));
17
- var axios = _interopDefault(require('axios'));
18
- var _forEach = _interopDefault(require('lodash/forEach'));
19
- var material = require('@mui/material');
20
- var Modal = _interopDefault(require('@mui/material/Modal'));
21
- var Box = _interopDefault(require('@mui/material/Box'));
22
- var _flatMapDeep = _interopDefault(require('lodash/flatMapDeep'));
23
- var _isArray = _interopDefault(require('lodash/isArray'));
17
+ var _isEqual = _interopDefault(require('lodash/isEqual'));
18
+ var _map = _interopDefault(require('lodash/map'));
24
19
  var nanoid = require('nanoid');
20
+ var React = require('react');
21
+ var React__default = _interopDefault(React);
22
+ var _forEach = _interopDefault(require('lodash/forEach'));
23
+ var DatePicker = _interopDefault(require('@mui/lab/DatePicker'));
24
+ var AdapterMoment = _interopDefault(require('@mui/lab/AdapterMoment'));
25
+ var LocalizationProvider = _interopDefault(require('@mui/lab/LocalizationProvider'));
26
+ var TextField = _interopDefault(require('@mui/material/TextField'));
27
+ var styles$1 = require('@mui/styles');
25
28
  var FormGroup = _interopDefault(require('@mui/material/FormGroup'));
26
29
  var FormControlLabel = _interopDefault(require('@mui/material/FormControlLabel'));
27
30
  var Checkbox = _interopDefault(require('@mui/material/Checkbox'));
28
- var styles = require('@mui/styles');
29
- var TextField = _interopDefault(require('@mui/material/TextField'));
30
- var MuiPhoneNumber = _interopDefault(require('material-ui-phone-number'));
31
+ require('material-ui-phone-number');
32
+ var _debounce = _interopDefault(require('lodash/debounce'));
31
33
  var CircularProgress = _interopDefault(require('@mui/material/CircularProgress'));
32
34
  var Select = _interopDefault(require('@mui/material/Select'));
33
- var styles$1 = require('@mui/material/styles');
34
- var Backdrop = _interopDefault(require('@mui/material/Backdrop'));
35
+ var Yup = require('yup');
36
+ var Box = _interopDefault(require('@mui/material/Box'));
37
+ var Modal = _interopDefault(require('@mui/material/Modal'));
35
38
  var Countdown$1 = _interopDefault(require('react-countdown'));
36
39
  var _isNumber = _interopDefault(require('lodash/isNumber'));
37
40
  var SVG = _interopDefault(require('react-inlinesvg'));
38
- var DatePicker = _interopDefault(require('@mui/lab/DatePicker'));
39
- var AdapterMoment = _interopDefault(require('@mui/lab/AdapterMoment'));
40
- var LocalizationProvider = _interopDefault(require('@mui/lab/LocalizationProvider'));
41
+ var _flatMapDeep = _interopDefault(require('lodash/flatMapDeep'));
42
+ var _isArray = _interopDefault(require('lodash/isArray'));
41
43
  var Container = _interopDefault(require('@mui/material/Container'));
42
44
  var Alert = _interopDefault(require('@mui/material/Alert'));
43
45
  var reactStripeJs = require('@stripe/react-stripe-js');
44
46
  var stripeJs = require('@stripe/stripe-js');
45
47
  var reactShare = require('react-share');
46
- var _some = _interopDefault(require('lodash/some'));
48
+ var privateTheming = require('@mui/private-theming');
49
+ var jwt_decode = _interopDefault(require('jwt-decode'));
47
50
  var _find = _interopDefault(require('lodash/find'));
51
+ var _some = _interopDefault(require('lodash/some'));
48
52
  var Button$1 = _interopDefault(require('react-bootstrap/Button'));
49
- var jwt_decode = _interopDefault(require('jwt-decode'));
53
+ var moment = _interopDefault(require('moment-timezone'));
50
54
  var _sortBy = _interopDefault(require('lodash/sortBy'));
51
55
  var FormControl = _interopDefault(require('@mui/material/FormControl'));
52
56
  var MenuItem = _interopDefault(require('@mui/material/MenuItem'));
53
- var moment = _interopDefault(require('moment-timezone'));
54
- var privateTheming = require('@mui/private-theming');
57
+ var Autocomplete = _interopDefault(require('@mui/material/Autocomplete'));
58
+ var Paper = _interopDefault(require('@mui/material/Paper'));
55
59
  var Table = _interopDefault(require('@mui/material/Table'));
56
60
  var TableBody = _interopDefault(require('@mui/material/TableBody'));
57
61
  var TableCell = _interopDefault(require('@mui/material/TableCell'));
58
62
  var TableContainer = _interopDefault(require('@mui/material/TableContainer'));
59
63
  var TableHead = _interopDefault(require('@mui/material/TableHead'));
60
- var TableRow = _interopDefault(require('@mui/material/TableRow'));
61
- var Paper = _interopDefault(require('@mui/material/Paper'));
62
64
  var TablePagination = _interopDefault(require('@mui/material/TablePagination'));
63
- var Autocomplete = _interopDefault(require('@mui/material/Autocomplete'));
65
+ var TableRow = _interopDefault(require('@mui/material/TableRow'));
64
66
  var _has = _interopDefault(require('lodash/has'));
65
- var yup = require('yup');
66
67
  var Radio = _interopDefault(require('@mui/material/Radio'));
67
68
 
68
69
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
@@ -910,32 +911,6 @@ try {
910
911
  }
911
912
  });
912
913
 
913
- 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,}))$/;
914
- var combineValidators = function combineValidators() {
915
- for (var _len = arguments.length, validators = new Array(_len), _key = 0; _key < _len; _key++) {
916
- validators[_key] = arguments[_key];
917
- }
918
-
919
- return function () {
920
- for (var i = 0; i < validators.length; ++i) {
921
- var error_message = validators[i].apply(validators, arguments);
922
- if (error_message) return error_message;
923
- }
924
- };
925
- };
926
- var requiredValidator = function requiredValidator(value, message) {
927
- var errorMessage = '';
928
-
929
- if (!value) {
930
- errorMessage = message || 'Required';
931
- }
932
-
933
- return errorMessage;
934
- };
935
- var emailValidator = function emailValidator(email) {
936
- return !emailRegex.test(email) ? 'Please enter a valid email address' : '';
937
- };
938
-
939
914
  var CONFIGS = {};
940
915
  var setConfigs = function setConfigs(configs) {
941
916
  _forEach(configs, function (value, key) {
@@ -1005,14 +980,87 @@ var ErrorFocusInternal = /*#__PURE__*/function (_Component) {
1005
980
 
1006
981
  var ErrorFocus = /*#__PURE__*/formik.connect(ErrorFocusInternal);
1007
982
 
983
+ function getDomain(url, subdomain) {
984
+ var updatedUrl = url.replace(/(https?:\/\/)?(www.)?/i, '');
985
+
986
+ if (!subdomain) {
987
+ updatedUrl = updatedUrl.split('.');
988
+ updatedUrl = updatedUrl.slice(updatedUrl.length - 2).join('.');
989
+ }
990
+
991
+ if (updatedUrl.indexOf('/') !== -1) {
992
+ return updatedUrl.split('/')[0];
993
+ }
994
+
995
+ return updatedUrl;
996
+ }
997
+
998
+ function setCustomCookie(name, value, days) {
999
+ if (days === void 0) {
1000
+ days = 5;
1001
+ }
1002
+
1003
+ var expires = '';
1004
+
1005
+ if (days) {
1006
+ var date = new Date();
1007
+ date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
1008
+ expires = '; expires=' + date.toUTCString();
1009
+ }
1010
+
1011
+ if (typeof window !== 'undefined') {
1012
+ var domain = getDomain(window.location.hostname);
1013
+ document.cookie = name + '=' + (value || '') + expires + '; path=/' + ("; domain=" + domain);
1014
+ }
1015
+ }
1016
+ function getCookieByName(cname) {
1017
+ if (typeof window === 'undefined') return '';
1018
+ var name = cname + '=';
1019
+ var ca = document.cookie.split(';');
1020
+
1021
+ for (var i = 0; i < ca.length; i++) {
1022
+ var c = ca[i];
1023
+
1024
+ while (c.charAt(0) == ' ') {
1025
+ c = c.substring(1);
1026
+ }
1027
+
1028
+ if (c.indexOf(name) == 0) {
1029
+ return c.substring(name.length, c.length);
1030
+ }
1031
+ }
1032
+
1033
+ return '';
1034
+ }
1035
+ function deleteCookieByName(name) {
1036
+ if (typeof window !== 'undefined') {
1037
+ var domain = getDomain(window.location.hostname);
1038
+ document.cookie = name + '=; Path=/' + ("; domain=" + domain) + '; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
1039
+ }
1040
+ }
1041
+
1008
1042
  var downloadPDF = function downloadPDF(pdfUrl) {
1009
1043
  if (typeof window === 'undefined') return;
1044
+ var xtfCookie = getCookieByName('X-TF-ECOMMERCE');
1010
1045
  var accessToken = localStorage.getItem('access_token');
1011
- if (!accessToken) return;
1012
- fetch(pdfUrl, {
1013
- headers: {
1046
+ if (!accessToken && !xtfCookie) return;
1047
+ var headers = {};
1048
+
1049
+ if (accessToken) {
1050
+ headers = {
1014
1051
  Authorization: "Bearer " + accessToken
1015
- }
1052
+ };
1053
+ }
1054
+
1055
+ if (xtfCookie) {
1056
+ headers = {
1057
+ 'X-TF-ECOMMERCE': xtfCookie
1058
+ };
1059
+ }
1060
+
1061
+ return fetch(pdfUrl, {
1062
+ headers: headers,
1063
+ credentials: 'include'
1016
1064
  }).then( /*#__PURE__*/function () {
1017
1065
  var _ref = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(response) {
1018
1066
  var blobValue, fileNameHeader, fileName;
@@ -1025,7 +1073,7 @@ var downloadPDF = function downloadPDF(pdfUrl) {
1025
1073
 
1026
1074
  case 2:
1027
1075
  blobValue = _context.sent;
1028
- fileNameHeader = response.headers.get("content-disposition") || '';
1076
+ fileNameHeader = response.headers.get('content-disposition') || '';
1029
1077
  fileName = fileNameHeader.split('"')[1];
1030
1078
  return _context.abrupt("return", {
1031
1079
  blobValue: blobValue,
@@ -1046,7 +1094,11 @@ var downloadPDF = function downloadPDF(pdfUrl) {
1046
1094
  }()).then(function (_ref2) {
1047
1095
  var blobValue = _ref2.blobValue,
1048
1096
  fileName = _ref2.fileName;
1049
- if (!fileName) return;
1097
+
1098
+ if (!fileName) {
1099
+ throw Error('Something went wrong.');
1100
+ }
1101
+
1050
1102
  var file = new Blob([blobValue], {
1051
1103
  type: 'application/pdf'
1052
1104
  });
@@ -1057,21 +1109,27 @@ var downloadPDF = function downloadPDF(pdfUrl) {
1057
1109
  document.body.appendChild(link);
1058
1110
  link.click();
1059
1111
  document.body.removeChild(link);
1112
+ })["catch"](function (error) {
1113
+ return error;
1060
1114
  });
1061
1115
  };
1062
1116
 
1063
- var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, logedInValues, includeDob) {
1117
+ var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, logedInValues, includeDob, userCredentials) {
1064
1118
  if (includeDob === void 0) {
1065
1119
  includeDob = false;
1066
1120
  }
1067
1121
 
1122
+ if (userCredentials === void 0) {
1123
+ userCredentials = {};
1124
+ }
1125
+
1068
1126
  var ticket_holders = [];
1069
- var first_name = _get(logedInValues, 'firstName') || _get(logedInValues, 'first_name') || '';
1070
- var last_name = _get(logedInValues, 'lastName', '') || _get(logedInValues, 'last_name') || '';
1127
+ var first_name = _get(logedInValues, 'firstName') || _get(logedInValues, 'first_name') || _get(userCredentials, 'firstNameLogged') || '';
1128
+ var last_name = _get(logedInValues, 'lastName') || _get(logedInValues, 'last_name') || _get(userCredentials, 'lastNameLogged') || '';
1071
1129
 
1072
1130
  var phone = _get(logedInValues, 'phone', '');
1073
1131
 
1074
- var email = _get(logedInValues, 'email', '');
1132
+ var email = _get(logedInValues, 'email') || _get(userCredentials, 'emailLogged') || '';
1075
1133
 
1076
1134
  for (var i = 0; i <= ticketsQuantity - 1; i++) {
1077
1135
  var individualHolder = i ? {
@@ -1109,6 +1167,7 @@ var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWit
1109
1167
  };
1110
1168
 
1111
1169
  var isWindowDefined = typeof window !== 'undefined';
1170
+ var isDocumentDefined = typeof document !== 'undefined';
1112
1171
  var ttfHeaders = {
1113
1172
  Accept: 'application/vnd.api+json',
1114
1173
  'Content-Type': 'application/vnd.api+json'
@@ -1180,20 +1239,41 @@ publicRequest.interceptors.request.use(function (config) {
1180
1239
  config.headers = _updatedHeaders;
1181
1240
  }
1182
1241
 
1183
- if (CONFIGS.X_SOURCE_ORIGIN) {
1242
+ if (getCookieByName('X-TF-ECOMMERCE')) {
1184
1243
  var _updatedHeaders2 = _extends({}, config.headers, {
1185
- 'X-Source-Origin': CONFIGS.X_SOURCE_ORIGIN
1244
+ 'X-TF-ECOMMERCE': getCookieByName('X-TF-ECOMMERCE')
1186
1245
  });
1187
1246
 
1188
1247
  config.headers = _updatedHeaders2;
1189
1248
  }
1190
1249
 
1250
+ if (CONFIGS.X_SOURCE_ORIGIN) {
1251
+ var _updatedHeaders3 = _extends({}, config.headers, {
1252
+ 'X-Source-Origin': CONFIGS.X_SOURCE_ORIGIN
1253
+ });
1254
+
1255
+ config.headers = _updatedHeaders3;
1256
+ }
1257
+
1191
1258
  if (CONFIGS.BASE_URL) {
1192
1259
  config.baseURL = CONFIGS.BASE_URL + '/api';
1193
1260
  }
1194
1261
 
1195
1262
  return config;
1196
1263
  });
1264
+ publicRequest.interceptors.response.use(function (response) {
1265
+ var xtfCookie = _get(response, 'headers.x-tf-ecommerce');
1266
+
1267
+ var url = _get(response, 'config.url');
1268
+
1269
+ var method = _get(response, 'config.method');
1270
+
1271
+ if (xtfCookie && !(url === '/auth' && method === 'delete')) {
1272
+ setCustomCookie('X-TF-ECOMMERCE', xtfCookie);
1273
+ }
1274
+
1275
+ return response;
1276
+ });
1197
1277
 
1198
1278
  publicRequest.setGuestToken = function (token) {
1199
1279
  return publicRequest.defaults.headers.common['Authorization-Guest'] = token;
@@ -1233,8 +1313,26 @@ var handleSetAccessToken = function handleSetAccessToken(token) {
1233
1313
  }
1234
1314
  };
1235
1315
  function getEvent(id) {
1316
+ var referralValue = "";
1317
+
1318
+ if (isWindowDefined) {
1319
+ var params = new URL("" + window.location);
1320
+ var referralId = params.searchParams.get('ttf_r') || '';
1321
+ var referral_key = window.localStorage.getItem('referral_key');
1322
+ var referralIdlocal = "";
1323
+
1324
+ if (referral_key) {
1325
+ referralIdlocal = referral_key.split('.')[1];
1326
+ }
1327
+
1328
+ referralValue = referralId || referralIdlocal;
1329
+ }
1330
+
1236
1331
  var response = publicRequest.get("v1/event/" + id, {
1237
- headers: ttfHeaders
1332
+ headers: _extends({}, ttfHeaders, {
1333
+ "Referer-Url": isDocumentDefined ? document.referrer : '',
1334
+ "Referrer-Id": isWindowDefined ? referralValue : ''
1335
+ })
1238
1336
  })["catch"](function (error) {
1239
1337
  throw error;
1240
1338
  });
@@ -1253,7 +1351,10 @@ function getTickets(id, promoCode) {
1253
1351
  }
1254
1352
  var addToCart = function addToCart(id, data) {
1255
1353
  var res = publicRequest.post("v1/event/" + id + "/add-to-cart/", {
1256
- data: data
1354
+ data: data,
1355
+ headers: {
1356
+ "Referer-Url": isDocumentDefined ? document.referrer : ''
1357
+ }
1257
1358
  });
1258
1359
  return res;
1259
1360
  };
@@ -1272,28 +1373,37 @@ var postOnCheckout = function postOnCheckout(data, accessToken) {
1272
1373
  return res;
1273
1374
  };
1274
1375
  var authorize = function authorize(data) {
1275
- return publicRequest.post("v1/oauth/authorize-rn?client_id=" + (CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'), data);
1376
+ return publicRequest.post("/auth?clientId=" + (CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'), data);
1276
1377
  };
1277
1378
  var register = function register(data) {
1278
1379
  return publicRequest.post('v1/oauth/register-rn', data);
1279
1380
  };
1280
- var getAccessToken = function getAccessToken(data) {
1281
- return publicRequest.post('v1/oauth/access_token', data);
1282
- };
1283
1381
  var getPaymentData = function getPaymentData(hash) {
1284
- var response = publicRequest.get("v1/order/" + hash + "/review/")["catch"](function (error) {
1382
+ var response = publicRequest.get("v1/order/" + hash + "/review/", {
1383
+ headers: {
1384
+ "Referer-Url": isDocumentDefined ? document.referrer : ''
1385
+ }
1386
+ })["catch"](function (error) {
1285
1387
  throw error;
1286
1388
  });
1287
1389
  return response;
1288
1390
  };
1289
1391
  var handlePaymentSuccess = function handlePaymentSuccess(orderHash) {
1290
- var res = publicRequest.post("v1/order/" + orderHash + "/success")["catch"](function (error) {
1392
+ var res = publicRequest.post("v1/order/" + orderHash + "/success", {
1393
+ headers: {
1394
+ "Referer-Url": isDocumentDefined ? document.referrer : ''
1395
+ }
1396
+ })["catch"](function (error) {
1291
1397
  throw error;
1292
1398
  });
1293
1399
  return res;
1294
1400
  };
1295
1401
  var handleFreeSuccess = function handleFreeSuccess(orderHash) {
1296
- var res = publicRequest.post("v1/order/" + orderHash + "/complete_free_registration")["catch"](function (error) {
1402
+ var res = publicRequest.post("v1/order/" + orderHash + "/complete_free_registration", {
1403
+ headers: {
1404
+ "Referer-Url": isDocumentDefined ? document.referrer : ''
1405
+ }
1406
+ })["catch"](function (error) {
1297
1407
  throw error;
1298
1408
  });
1299
1409
  return res;
@@ -1340,6 +1450,18 @@ var postReferralVisits = function postReferralVisits(eventId, referralId) {
1340
1450
  referrer: "" + referralId
1341
1451
  });
1342
1452
  };
1453
+ var logout = function logout() {
1454
+ return publicRequest["delete"]('/auth');
1455
+ }; // forgot password
1456
+
1457
+ var forgotPassword = function forgotPassword(email) {
1458
+ return publicRequest.post("/auth/restore-password", {
1459
+ email: email
1460
+ });
1461
+ };
1462
+ var resetPassword = function resetPassword(data) {
1463
+ return publicRequest.post("/auth/reset-password", data);
1464
+ };
1343
1465
  var processTicket = function processTicket(hash) {
1344
1466
  return publicRequest.post("v1/ticket/" + hash + "/process/");
1345
1467
  };
@@ -1349,480 +1471,574 @@ var declineInvitation = function declineInvitation(hash) {
1349
1471
  var sendRSVPInfo = function sendRSVPInfo(eventId, data) {
1350
1472
  return publicRequest.post("v1/event/" + eventId + "/send-rsvp-info", data);
1351
1473
  };
1474
+ var validatePhoneNumber = /*#__PURE__*/function () {
1475
+ var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(phone) {
1476
+ var response;
1477
+ return runtime_1.wrap(function _callee$(_context) {
1478
+ while (1) {
1479
+ switch (_context.prev = _context.next) {
1480
+ case 0:
1481
+ _context.next = 2;
1482
+ return publicRequest.get("/v1/account/validate_phone?phone=" + phone);
1483
+
1484
+ case 2:
1485
+ response = _context.sent;
1486
+ return _context.abrupt("return", response.data);
1487
+
1488
+ case 4:
1489
+ case "end":
1490
+ return _context.stop();
1491
+ }
1492
+ }
1493
+ }, _callee);
1494
+ }));
1352
1495
 
1353
- var style = {
1354
- position: 'absolute',
1355
- top: '50%',
1356
- left: '50%',
1357
- transform: 'translate(-50%, -50%)',
1358
- minWidth: 480,
1359
- backgroundColor: '#e3e3e3',
1360
- border: '1px solid white',
1361
- outline: 'none'
1362
- };
1363
- var LoginModal = function LoginModal(_ref) {
1364
- var onClose = _ref.onClose,
1365
- onLogin = _ref.onLogin,
1366
- _ref$alreadyHasUser = _ref.alreadyHasUser,
1367
- alreadyHasUser = _ref$alreadyHasUser === void 0 ? false : _ref$alreadyHasUser,
1368
- _ref$userExpired = _ref.userExpired,
1369
- userExpired = _ref$userExpired === void 0 ? false : _ref$userExpired,
1370
- _ref$onAuthorizeSucce = _ref.onAuthorizeSuccess,
1371
- onAuthorizeSuccess = _ref$onAuthorizeSucce === void 0 ? function () {} : _ref$onAuthorizeSucce,
1372
- _ref$onAuthorizeError = _ref.onAuthorizeError,
1373
- onAuthorizeError = _ref$onAuthorizeError === void 0 ? function () {} : _ref$onAuthorizeError,
1374
- _ref$onGetProfileData = _ref.onGetProfileDataSuccess,
1375
- onGetProfileDataSuccess = _ref$onGetProfileData === void 0 ? function () {} : _ref$onGetProfileData,
1376
- _ref$onGetProfileData2 = _ref.onGetProfileDataError,
1377
- onGetProfileDataError = _ref$onGetProfileData2 === void 0 ? function () {} : _ref$onGetProfileData2,
1378
- _ref$modalClassname = _ref.modalClassname,
1379
- modalClassname = _ref$modalClassname === void 0 ? '' : _ref$modalClassname;
1496
+ return function validatePhoneNumber(_x) {
1497
+ return _ref.apply(this, arguments);
1498
+ };
1499
+ }();
1380
1500
 
1381
- var _useState = React.useState(''),
1382
- error = _useState[0],
1383
- setError = _useState[1];
1501
+ 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,}))$/;
1502
+ var combineValidators = function combineValidators() {
1503
+ for (var _len = arguments.length, validators = new Array(_len), _key = 0; _key < _len; _key++) {
1504
+ validators[_key] = arguments[_key];
1505
+ }
1384
1506
 
1385
- var handleForgotPassword = function handleForgotPassword() {
1386
- if (typeof window !== 'undefined') {
1387
- window.open(CONFIGS.BASE_URL + "/password-restore/");
1507
+ return function () {
1508
+ for (var i = 0; i < validators.length; ++i) {
1509
+ var error_message = validators[i].apply(validators, arguments);
1510
+ if (error_message) return error_message;
1388
1511
  }
1389
1512
  };
1513
+ };
1514
+ var requiredValidator = function requiredValidator(value, message) {
1515
+ var errorMessage = '';
1390
1516
 
1391
- return React__default.createElement(Modal, {
1392
- open: true,
1393
- onClose: onClose,
1394
- "aria-labelledby": "modal-modal-title",
1395
- "aria-describedby": "modal-modal-description",
1396
- className: "login-modal " + modalClassname
1397
- }, React__default.createElement(Box, {
1398
- style: style
1399
- }, React__default.createElement("div", null, React__default.createElement(formik.Formik, {
1400
- initialValues: {
1401
- email: '',
1402
- password: ''
1403
- },
1404
- onSubmit: function () {
1405
- var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(_ref2) {
1406
- var email, password, bodyFormData, resAutorize, bodyFormDataToken, resAccessToken, accessToken, profileResponse, profileSpecifiedData, profileDataObj, event, _e$response, _e$response$data, _error;
1407
-
1408
- return runtime_1.wrap(function _callee$(_context) {
1409
- while (1) {
1410
- switch (_context.prev = _context.next) {
1411
- case 0:
1412
- email = _ref2.email, password = _ref2.password;
1413
- _context.prev = 1;
1414
- bodyFormData = new FormData();
1415
- bodyFormData.append('email', email);
1416
- bodyFormData.append('password', password);
1417
- _context.next = 7;
1418
- return authorize(bodyFormData);
1419
-
1420
- case 7:
1421
- resAutorize = _context.sent;
1422
- bodyFormDataToken = new FormData();
1423
- bodyFormDataToken.append('code', resAutorize.data.data.code);
1424
- bodyFormDataToken.append('scope', 'profile');
1425
- bodyFormDataToken.append('grant_type', 'authorization_code');
1426
- bodyFormDataToken.append('client_id', CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf');
1427
- bodyFormDataToken.append('client_secret', CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9');
1428
- resAccessToken = null;
1429
- _context.prev = 15;
1430
- _context.next = 18;
1431
- return getAccessToken(bodyFormDataToken);
1517
+ if (!value) {
1518
+ errorMessage = message || 'Required';
1519
+ }
1432
1520
 
1433
- case 18:
1434
- resAccessToken = _context.sent;
1435
- onAuthorizeSuccess(resAccessToken.data);
1436
- _context.next = 26;
1437
- break;
1521
+ return errorMessage;
1522
+ };
1523
+ var emailValidator = function emailValidator(email) {
1524
+ return !emailRegex.test(email) ? 'Please enter a valid email address' : '';
1525
+ };
1438
1526
 
1439
- case 22:
1440
- _context.prev = 22;
1441
- _context.t0 = _context["catch"](15);
1527
+ var CustomField = function CustomField(_ref) {
1528
+ var label = _ref.label,
1529
+ _ref$type = _ref.type,
1530
+ type = _ref$type === void 0 ? 'text' : _ref$type,
1531
+ field = _ref.field,
1532
+ _ref$selectOptions = _ref.selectOptions,
1533
+ selectOptions = _ref$selectOptions === void 0 ? [] : _ref$selectOptions,
1534
+ _ref$form = _ref.form,
1535
+ touched = _ref$form.touched,
1536
+ errors = _ref$form.errors,
1537
+ submitCount = _ref$form.submitCount,
1538
+ theme = _ref.theme,
1539
+ _ref$inputProps = _ref.inputProps,
1540
+ pInputProps = _ref$inputProps === void 0 ? {} : _ref$inputProps,
1541
+ _ref$InputProps = _ref.InputProps,
1542
+ InputProps = _ref$InputProps === void 0 ? {} : _ref$InputProps,
1543
+ inputRef = _ref.inputRef;
1544
+ var isSelectField = type === 'select';
1442
1545
 
1443
- if (axios.isAxiosError(_context.t0)) {
1444
- onAuthorizeError(_context.t0);
1445
- }
1546
+ var error = _get(errors, field.name);
1446
1547
 
1447
- return _context.abrupt("return");
1548
+ var isTouched = Boolean(_get(touched, field.name)) || _includes(field.name, 'holder') && !!error && !!submitCount;
1549
+ var customTheme = styles$1.useTheme();
1550
+ var inputProps = {
1551
+ sx: customTheme == null ? void 0 : customTheme.input
1552
+ };
1553
+ return React__default.createElement(TextField, Object.assign({
1554
+ id: field.name,
1555
+ label: label,
1556
+ type: type,
1557
+ select: isSelectField,
1558
+ fullWidth: true,
1559
+ error: !!error && isTouched,
1560
+ helperText: isTouched && error,
1561
+ SelectProps: {
1562
+ "native": true,
1563
+ className: theme,
1564
+ MenuProps: {
1565
+ className: theme
1566
+ }
1567
+ },
1568
+ InputLabelProps: {
1569
+ sx: customTheme == null ? void 0 : customTheme.input
1570
+ },
1571
+ InputProps: InputProps,
1572
+ inputProps: _extends({}, inputProps, pInputProps),
1573
+ inputRef: inputRef
1574
+ }, field), isSelectField ? _map(selectOptions, function (option) {
1575
+ return React__default.createElement("option", {
1576
+ key: option.value,
1577
+ value: option.value,
1578
+ disabled: option.disabled
1579
+ }, option.label);
1580
+ }) : null);
1581
+ };
1448
1582
 
1449
- case 26:
1450
- accessToken = _get(resAccessToken, 'data.access_token');
1451
- handleSetAccessToken(accessToken);
1452
- profileResponse = null;
1453
- _context.prev = 29;
1454
- _context.next = 32;
1455
- return getProfileData(accessToken);
1583
+ var DATE_SIZE = 32;
1584
+ var compactStyles = {
1585
+ '& > div': {
1586
+ minWidth: 256
1587
+ },
1588
+ '& > div > div, & > div > div > div, & .MuiCalendarPicker-root': {
1589
+ width: 256
1590
+ },
1591
+ '& .MuiTypography-caption': {
1592
+ width: DATE_SIZE,
1593
+ margin: 0
1594
+ },
1595
+ '& .PrivatePickersSlideTransition-root': {
1596
+ minHeight: DATE_SIZE * 6
1597
+ },
1598
+ '& .PrivatePickersSlideTransition-root [role="row"]': {
1599
+ margin: 0
1600
+ },
1601
+ '& .MuiPickersDay-dayWithMargin': {
1602
+ margin: 0
1603
+ },
1604
+ '& .MuiPickersDay-root': {
1605
+ width: DATE_SIZE,
1606
+ height: DATE_SIZE
1607
+ }
1608
+ };
1609
+ var compactStyleTheme = /*#__PURE__*/styles.createTheme({
1610
+ components: {
1611
+ MuiPaper: {
1612
+ defaultProps: {
1613
+ sx: compactStyles
1614
+ }
1615
+ }
1616
+ }
1617
+ });
1618
+ var DatePickerField = function DatePickerField(_ref) {
1619
+ var label = _ref.label,
1620
+ field = _ref.field,
1621
+ form = _ref.form,
1622
+ theme = _ref.theme,
1623
+ _ref$useCompact = _ref.useCompact,
1624
+ useCompact = _ref$useCompact === void 0 ? true : _ref$useCompact;
1625
+ return React__default.createElement(styles.ThemeProvider, {
1626
+ theme: useCompact ? compactStyleTheme : {}
1627
+ }, React__default.createElement(LocalizationProvider, {
1628
+ dateAdapter: AdapterMoment
1629
+ }, React__default.createElement(DatePicker, {
1630
+ value: field.value || '',
1631
+ onChange: function onChange(value) {
1632
+ return form.setFieldValue(field.name, value);
1633
+ },
1634
+ PopperProps: {
1635
+ placement: 'bottom-start'
1636
+ },
1637
+ showDaysOutsideCurrentMonth: true,
1638
+ disableFuture: true,
1639
+ inputFormat: "DD/MM/YYYY",
1640
+ mask: "__/__/____",
1641
+ renderInput: function renderInput(params) {
1642
+ return React__default.createElement(CustomField, Object.assign({}, params, {
1643
+ inputProps: _extends({}, params.inputProps, {
1644
+ placeholder: 'dd/mm/yyyy'
1645
+ }),
1646
+ theme: theme,
1647
+ field: field,
1648
+ form: form,
1649
+ label: label,
1650
+ type: "tel"
1651
+ }));
1652
+ }
1653
+ })));
1654
+ };
1456
1655
 
1457
- case 32:
1458
- profileResponse = _context.sent;
1459
- onGetProfileDataSuccess(profileResponse.data);
1460
- _context.next = 40;
1461
- break;
1656
+ var _excluded = ["label", "field", "selectOptions", "theme", "setFieldValue"];
1657
+ var CheckboxField = function CheckboxField(_ref) {
1658
+ var _rest$form, _field$name, _rest$form2, _field$name2;
1462
1659
 
1463
- case 36:
1464
- _context.prev = 36;
1465
- _context.t1 = _context["catch"](29);
1660
+ var label = _ref.label,
1661
+ field = _ref.field,
1662
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1466
1663
 
1467
- if (axios.isAxiosError(_context.t1)) {
1468
- onGetProfileDataError(_context.t1);
1469
- }
1664
+ var customTheme = styles$1.useTheme();
1665
+ return React__default.createElement(material.FormControl, {
1666
+ error: !!(rest != null && (_rest$form = rest.form) != null && _rest$form.errors && rest.form.errors[(_field$name = field == null ? void 0 : field.name) != null ? _field$name : ""])
1667
+ }, React__default.createElement(FormGroup, null, React__default.createElement(FormControlLabel, {
1668
+ control: React__default.createElement(Checkbox, Object.assign({}, field, rest)),
1669
+ label: label,
1670
+ componentsProps: {
1671
+ typography: customTheme == null ? void 0 : customTheme.checkbox
1672
+ }
1673
+ })), !!(rest != null && (_rest$form2 = rest.form) != null && _rest$form2.errors && rest.form.errors[(_field$name2 = field == null ? void 0 : field.name) != null ? _field$name2 : ""]) ? React__default.createElement(material.FormHelperText, null, "Required") : null);
1674
+ };
1470
1675
 
1471
- return _context.abrupt("return");
1676
+ var currencyNormalizerCreator = function currencyNormalizerCreator(value, currency) {
1677
+ return !value ? '' : "" + getCurrencySymbolByCurrency(currency) + value;
1678
+ };
1679
+ var createFixedFloatNormalizer = function createFixedFloatNormalizer(fixedValue) {
1680
+ return function (value) {
1681
+ return value || "" + value === '0' ? (+value).toFixed(fixedValue) : '';
1682
+ };
1683
+ };
1684
+ var getCurrencySymbolByCurrency = function getCurrencySymbolByCurrency(currency) {
1685
+ if (currency === void 0) {
1686
+ currency = '';
1687
+ }
1472
1688
 
1473
- case 40:
1474
- profileSpecifiedData = _get(profileResponse, 'data.data');
1475
- profileDataObj = {
1476
- id: profileSpecifiedData.id,
1477
- first_name: profileSpecifiedData.firstName,
1478
- last_name: profileSpecifiedData.lastName,
1479
- email: profileSpecifiedData.email
1480
- };
1689
+ switch (currency) {
1690
+ case 'GBP':
1691
+ return '£';
1481
1692
 
1482
- if (typeof window !== 'undefined') {
1483
- window.localStorage.setItem('user_data', JSON.stringify(profileDataObj));
1484
- window.localStorage.setItem('access_token', accessToken);
1485
- event = new window.CustomEvent('tf-login');
1486
- window.document.dispatchEvent(event);
1487
- }
1693
+ case 'EUR':
1694
+ return '';
1488
1695
 
1489
- onLogin();
1490
- _context.next = 49;
1696
+ case 'INR':
1697
+ return '₹';
1698
+
1699
+ case 'JMD':
1700
+ return 'J$';
1701
+
1702
+ case 'NZD':
1703
+ return 'NZ$';
1704
+
1705
+ case 'MYR':
1706
+ return 'RM';
1707
+
1708
+ case 'MXN':
1709
+ return 'Mex$';
1710
+
1711
+ case 'SGD':
1712
+ return 'S$';
1713
+
1714
+ case 'AUD':
1715
+ return 'A$';
1716
+
1717
+ case 'ZAR':
1718
+ return 'R';
1719
+
1720
+ case 'ke':
1721
+ return 'Ksh';
1722
+
1723
+ case 'TRY':
1724
+ return '₺';
1725
+
1726
+ case 'CAD':
1727
+ return 'CA$';
1728
+
1729
+ case 'THB':
1730
+ return '฿';
1731
+
1732
+ case 'ISK':
1733
+ return 'Kr';
1734
+
1735
+ case 'SEK':
1736
+ return 'kr';
1737
+
1738
+ default:
1739
+ return 'US$';
1740
+ }
1741
+ };
1742
+
1743
+ var PhoneNumberField = function PhoneNumberField(_ref) {
1744
+ var label = _ref.label,
1745
+ _ref$type = _ref.type,
1746
+ type = _ref$type === void 0 ? 'text' : _ref$type,
1747
+ field = _ref.field,
1748
+ _ref$form = _ref.form,
1749
+ errors = _ref$form.errors,
1750
+ setFieldError = _ref$form.setFieldError,
1751
+ setStatus = _ref$form.setStatus;
1752
+
1753
+ var error = _get(errors, field.name); // eslint-disable-next-line react-hooks/exhaustive-deps
1754
+
1755
+
1756
+ var debounceCb = React.useCallback(_debounce(function (cb) {
1757
+ return void cb();
1758
+ }, 1000), []);
1759
+ React.useEffect(function () {
1760
+ if (field.value) {
1761
+ var _setStatus;
1762
+
1763
+ setStatus((_setStatus = {}, _setStatus[field.name] = true, _setStatus));
1764
+ }
1765
+
1766
+ debounceCb( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
1767
+ var message, _setStatus2;
1768
+
1769
+ return runtime_1.wrap(function _callee$(_context) {
1770
+ while (1) {
1771
+ switch (_context.prev = _context.next) {
1772
+ case 0:
1773
+ _context.prev = 0;
1774
+
1775
+ if (!field.value) {
1776
+ _context.next = 4;
1491
1777
  break;
1778
+ }
1492
1779
 
1493
- case 46:
1494
- _context.prev = 46;
1495
- _context.t2 = _context["catch"](1);
1780
+ _context.next = 4;
1781
+ return validatePhoneNumber(field.value);
1496
1782
 
1497
- if (axios.isAxiosError(_context.t2)) {
1498
- _error = (_context.t2 == null ? void 0 : (_e$response = _context.t2.response) == null ? void 0 : (_e$response$data = _e$response.data) == null ? void 0 : _e$response$data.message) || 'Error';
1499
- setError(_error);
1500
- } else if (_context.t2 instanceof Error) {
1501
- setError((_context.t2 == null ? void 0 : _context.t2.message) || 'Error');
1502
- }
1783
+ case 4:
1784
+ setFieldError(field.name, '');
1785
+ _context.next = 11;
1786
+ break;
1503
1787
 
1504
- case 49:
1505
- case "end":
1506
- return _context.stop();
1507
- }
1508
- }
1509
- }, _callee, null, [[1, 46], [15, 22], [29, 36]]);
1510
- }));
1788
+ case 7:
1789
+ _context.prev = 7;
1790
+ _context.t0 = _context["catch"](0);
1791
+ message = _get(_context.t0, 'response.data.message', 'Invalid phone number');
1792
+ setFieldError(field.name, message);
1511
1793
 
1512
- function onSubmit(_x) {
1513
- return _onSubmit.apply(this, arguments);
1514
- }
1794
+ case 11:
1795
+ _context.prev = 11;
1796
+ setStatus((_setStatus2 = {}, _setStatus2[field.name] = false, _setStatus2));
1797
+ return _context.finish(11);
1515
1798
 
1516
- return onSubmit;
1517
- }()
1518
- }, function (props) {
1519
- return React__default.createElement(formik.Form, {
1520
- onSubmit: props.handleSubmit
1521
- }, React__default.createElement("div", {
1522
- className: "modal-title"
1523
- }, "Login"), React__default.createElement("img", {
1524
- className: "login-logo-tff",
1525
- src: "https://www.ticketfairy.com/resources/images/logo-ttf-black.svg",
1526
- alt: ""
1527
- }), React__default.createElement("div", {
1528
- className: "server_auth__error"
1529
- }, error), alreadyHasUser && React__default.createElement("p", {
1530
- className: "info-text-for-login"
1531
- }, "It appears this email is already attached to an account. Please log in here to complete your registration."), userExpired && React__default.createElement("p", {
1532
- className: "info-text-for-login"
1533
- }, "Your session has expired, please log in again."), React__default.createElement("div", {
1534
- className: "login-modal-body"
1535
- }, React__default.createElement("div", {
1536
- className: "login-modal-body__email"
1537
- }, React__default.createElement(formik.Field, {
1538
- name: 'email',
1539
- validate: requiredValidator
1540
- }, function (_ref3) {
1541
- var field = _ref3.field,
1542
- meta = _ref3.meta;
1543
- return React__default.createElement(material.TextField, Object.assign({
1544
- label: 'Email',
1545
- type: 'email',
1546
- fullWidth: true,
1547
- error: !!meta.error && meta.touched,
1548
- helperText: meta.touched && meta.error
1549
- }, field));
1550
- })), React__default.createElement("div", {
1551
- className: "login-modal-body__password"
1552
- }, React__default.createElement(formik.Field, {
1553
- name: 'password',
1554
- validate: requiredValidator
1555
- }, function (_ref4) {
1556
- var field = _ref4.field,
1557
- meta = _ref4.meta;
1558
- return React__default.createElement(material.TextField, Object.assign({
1559
- label: "Password",
1560
- type: "password",
1561
- fullWidth: true,
1562
- error: !!meta.error && meta.touched,
1563
- helperText: meta.touched && meta.error
1564
- }, field));
1565
- })), React__default.createElement("div", {
1566
- className: "login-action-button"
1567
- }, React__default.createElement("button", {
1568
- type: "submit"
1569
- }, "Login")), React__default.createElement("div", {
1570
- className: 'forgot-password'
1571
- }, React__default.createElement("span", {
1572
- onClick: handleForgotPassword
1573
- }, "Forgot password?"))));
1574
- }))));
1799
+ case 14:
1800
+ case "end":
1801
+ return _context.stop();
1802
+ }
1803
+ }
1804
+ }, _callee, null, [[0, 7, 11, 14]]);
1805
+ }))); // eslint-disable-next-line
1806
+ }, [field.value]);
1807
+ return React__default.createElement(TextField, Object.assign({}, field, {
1808
+ id: field.name,
1809
+ label: label,
1810
+ type: type,
1811
+ fullWidth: true,
1812
+ error: !!error,
1813
+ helperText: error,
1814
+ value: field.value || ''
1815
+ }));
1575
1816
  };
1576
1817
 
1577
- var RegisterModal = function RegisterModal(_ref) {
1578
- var onClose = _ref.onClose,
1579
- _ref$onGetProfileData = _ref.onGetProfileDataSuccess,
1580
- onGetProfileDataSuccess = _ref$onGetProfileData === void 0 ? function () {} : _ref$onGetProfileData,
1581
- _ref$onGetProfileData2 = _ref.onGetProfileDataError,
1582
- onGetProfileDataError = _ref$onGetProfileData2 === void 0 ? function () {} : _ref$onGetProfileData2;
1818
+ function Loader() {
1583
1819
  return React__default.createElement("div", {
1584
- style: {
1585
- display: 'flex',
1586
- position: 'absolute',
1587
- top: 0,
1588
- bottom: 0,
1589
- right: 0,
1590
- left: 0,
1591
- backgroundColor: 'white',
1592
- alignItems: 'center',
1593
- justifyContent: 'center',
1594
- zIndex: 10
1820
+ className: "loader-container"
1821
+ }, React__default.createElement(CircularProgress, null));
1822
+ }
1823
+
1824
+ var SelectField = function SelectField(_ref) {
1825
+ var label = _ref.label,
1826
+ _ref$type = _ref.type,
1827
+ type = _ref$type === void 0 ? 'text' : _ref$type,
1828
+ field = _ref.field,
1829
+ _ref$selectOptions = _ref.selectOptions,
1830
+ selectOptions = _ref$selectOptions === void 0 ? [] : _ref$selectOptions,
1831
+ _ref$form = _ref.form,
1832
+ touched = _ref$form.touched,
1833
+ errors = _ref$form.errors,
1834
+ theme = _ref.theme;
1835
+ var isTouched = Boolean(_get(touched, field.name));
1836
+
1837
+ var error = _get(errors, field.name);
1838
+
1839
+ var customTheme = styles$1.useTheme();
1840
+ return React__default.createElement(material.FormControl, {
1841
+ fullWidth: true
1842
+ }, React__default.createElement(material.InputLabel, {
1843
+ style: customTheme == null ? void 0 : customTheme.input,
1844
+ htmlFor: field.name,
1845
+ error: !!error && isTouched,
1846
+ shrink: true
1847
+ }, label), React__default.createElement(Select, Object.assign({
1848
+ id: field.name,
1849
+ label: label,
1850
+ type: type,
1851
+ fullWidth: true,
1852
+ error: !!error && isTouched,
1853
+ inputProps: {
1854
+ id: field.name
1855
+ },
1856
+ "native": true,
1857
+ className: theme,
1858
+ MenuProps: {
1859
+ className: theme
1595
1860
  }
1596
- }, React__default.createElement(formik.Formik, {
1597
- initialValues: {
1598
- firstName: '',
1599
- lastName: '',
1600
- email: '',
1601
- password: '',
1602
- confirmPassword: ''
1861
+ }, field, {
1862
+ style: customTheme == null ? void 0 : customTheme.input
1863
+ }), _map(selectOptions, function (option) {
1864
+ return React__default.createElement("option", {
1865
+ key: option.value,
1866
+ value: option.value,
1867
+ disabled: option.disabled
1868
+ }, option.label);
1869
+ })), isTouched && error ? React__default.createElement(material.FormHelperText, {
1870
+ error: !!error && isTouched
1871
+ }, error) : null);
1872
+ };
1873
+
1874
+ var SnackbarAlert = function SnackbarAlert(_ref) {
1875
+ var isOpen = _ref.isOpen,
1876
+ message = _ref.message,
1877
+ type = _ref.type,
1878
+ position = _ref.position,
1879
+ _ref$autoHideDuration = _ref.autoHideDuration,
1880
+ autoHideDuration = _ref$autoHideDuration === void 0 ? 3000 : _ref$autoHideDuration,
1881
+ variant = _ref.variant,
1882
+ onClose = _ref.onClose;
1883
+ return React__default.createElement("div", {
1884
+ className: "snackbar-alert-container"
1885
+ }, React__default.createElement(material.Snackbar, {
1886
+ autoHideDuration: autoHideDuration,
1887
+ open: isOpen,
1888
+ anchorOrigin: position || {
1889
+ vertical: 'top',
1890
+ horizontal: 'center'
1603
1891
  },
1604
- onSubmit: function () {
1605
- var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(_ref2) {
1606
- var firstName, lastName, email, password, confirmPassword, bodyFormData, resRegister, access_token, profileResponse, profileSpecifiedData, profileDataObj;
1607
- return runtime_1.wrap(function _callee$(_context) {
1608
- while (1) {
1609
- switch (_context.prev = _context.next) {
1610
- case 0:
1611
- firstName = _ref2.firstName, lastName = _ref2.lastName, email = _ref2.email, password = _ref2.password, confirmPassword = _ref2.confirmPassword;
1612
- bodyFormData = new FormData();
1613
- bodyFormData.append('first_name', firstName);
1614
- bodyFormData.append('last_name', lastName);
1615
- bodyFormData.append('email', email);
1616
- bodyFormData.append('password', password);
1617
- bodyFormData.append('password_confirmation', confirmPassword);
1618
- bodyFormData.append('client_id', CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf');
1619
- bodyFormData.append('client_secret', CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9');
1620
- _context.next = 11;
1621
- return register(bodyFormData);
1892
+ onClose: onClose,
1893
+ classes: {
1894
+ root: 'snackbar-alert-snackbar-root'
1895
+ }
1896
+ }, React__default.createElement(material.Alert, {
1897
+ severity: type,
1898
+ onClose: onClose,
1899
+ variant: variant || 'filled',
1900
+ classes: {
1901
+ icon: 'snackbar-alert-icon',
1902
+ root: 'snackbar-alert-alert-root',
1903
+ action: 'snackbar-alert-action',
1904
+ message: 'snackbar-alert-message',
1905
+ filled: 'snackbar-alert-filled'
1906
+ }
1907
+ }, message)));
1908
+ };
1622
1909
 
1623
- case 11:
1624
- resRegister = _context.sent;
1625
- access_token = _get(resRegister, 'data.data.attributes.access_token');
1626
- handleSetAccessToken(access_token);
1627
- profileResponse = null;
1628
- _context.prev = 15;
1629
- _context.next = 18;
1630
- return getProfileData(access_token);
1910
+ var style = {
1911
+ position: 'absolute',
1912
+ top: '50%',
1913
+ left: '50%',
1914
+ transform: 'translate(-50%, -50%)',
1915
+ minWidth: 480,
1916
+ backgroundColor: '#fff',
1917
+ border: '1px solid white',
1918
+ outline: 'none',
1919
+ padding: '14px'
1920
+ };
1921
+ var Schema = /*#__PURE__*/Yup.object().shape({
1922
+ email: /*#__PURE__*/Yup.string().email('Invalid email').required('Required')
1923
+ });
1924
+ var ForgotPasswordModal = function ForgotPasswordModal(_ref) {
1925
+ var _ref$onClose = _ref.onClose,
1926
+ onClose = _ref$onClose === void 0 ? function () {} : _ref$onClose,
1927
+ _ref$onLogin = _ref.onLogin,
1928
+ onLogin = _ref$onLogin === void 0 ? function () {} : _ref$onLogin,
1929
+ _ref$onForgotPassword = _ref.onForgotPasswordSuccess,
1930
+ onForgotPasswordSuccess = _ref$onForgotPassword === void 0 ? function () {} : _ref$onForgotPassword,
1931
+ _ref$onForgotPassword2 = _ref.onForgotPasswordError,
1932
+ onForgotPasswordError = _ref$onForgotPassword2 === void 0 ? function () {} : _ref$onForgotPassword2;
1631
1933
 
1632
- case 18:
1633
- profileResponse = _context.sent;
1634
- onGetProfileDataSuccess(profileResponse.data);
1635
- _context.next = 26;
1636
- break;
1934
+ var _useState = React.useState(false),
1935
+ loading = _useState[0],
1936
+ setLoading = _useState[1];
1637
1937
 
1638
- case 22:
1639
- _context.prev = 22;
1640
- _context.t0 = _context["catch"](15);
1641
- onGetProfileDataError(_context.t0.response);
1642
- return _context.abrupt("return");
1938
+ var onForgotPassword = /*#__PURE__*/function () {
1939
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(_ref2) {
1940
+ var email, _yield$forgotPassword, data;
1643
1941
 
1644
- case 26:
1645
- profileSpecifiedData = _get(profileResponse, 'data.data');
1646
- profileDataObj = {
1647
- id: profileSpecifiedData.id,
1648
- first_name: profileSpecifiedData.firstName,
1649
- last_name: profileSpecifiedData.lastName,
1650
- email: profileSpecifiedData.email
1651
- };
1942
+ return runtime_1.wrap(function _callee$(_context) {
1943
+ while (1) {
1944
+ switch (_context.prev = _context.next) {
1945
+ case 0:
1946
+ email = _ref2.email;
1947
+ _context.prev = 1;
1948
+ setLoading(true);
1949
+ _context.next = 5;
1950
+ return forgotPassword(email);
1951
+
1952
+ case 5:
1953
+ _yield$forgotPassword = _context.sent;
1954
+ data = _yield$forgotPassword.data;
1955
+ onForgotPasswordSuccess(data);
1956
+ onClose();
1957
+ _context.next = 14;
1958
+ break;
1959
+
1960
+ case 11:
1961
+ _context.prev = 11;
1962
+ _context.t0 = _context["catch"](1);
1652
1963
 
1653
- if (typeof window !== 'undefined') {
1654
- window.localStorage.setItem('access_token', access_token);
1655
- window.localStorage.setItem('user_data', JSON.stringify(profileDataObj));
1656
- }
1964
+ if (axios.isAxiosError(_context.t0)) {
1965
+ onForgotPasswordError(_context.t0);
1966
+ }
1657
1967
 
1658
- onClose();
1968
+ case 14:
1969
+ _context.prev = 14;
1970
+ setLoading(false);
1971
+ return _context.finish(14);
1659
1972
 
1660
- case 30:
1661
- case "end":
1662
- return _context.stop();
1663
- }
1973
+ case 17:
1974
+ case "end":
1975
+ return _context.stop();
1664
1976
  }
1665
- }, _callee, null, [[15, 22]]);
1666
- }));
1977
+ }
1978
+ }, _callee, null, [[1, 11, 14, 17]]);
1979
+ }));
1667
1980
 
1668
- function onSubmit(_x) {
1669
- return _onSubmit.apply(this, arguments);
1670
- }
1981
+ return function onForgotPassword(_x) {
1982
+ return _ref3.apply(this, arguments);
1983
+ };
1984
+ }();
1671
1985
 
1672
- return onSubmit;
1673
- }()
1674
- }, function (props) {
1986
+ var _onClose = loading ? function () {} : onClose;
1987
+
1988
+ return React__default.createElement(material.Modal, {
1989
+ open: true,
1990
+ onClose: _onClose,
1991
+ "aria-labelledby": "modal-modal-title",
1992
+ "aria-describedby": "modal-modal-description",
1993
+ className: "forgot-password-modal"
1994
+ }, React__default.createElement(material.Box, {
1995
+ style: style
1996
+ }, React__default.createElement("div", null, React__default.createElement(formik.Formik, {
1997
+ initialValues: {
1998
+ email: ''
1999
+ },
2000
+ validationSchema: Schema,
2001
+ onSubmit: onForgotPassword
2002
+ }, function (_ref4) {
2003
+ var isValid = _ref4.isValid,
2004
+ dirty = _ref4.dirty,
2005
+ handleSubmit = _ref4.handleSubmit;
1675
2006
  return React__default.createElement(formik.Form, {
1676
- onSubmit: props.handleSubmit
2007
+ onSubmit: handleSubmit
1677
2008
  }, React__default.createElement("div", {
1678
- className: "register-container"
1679
- }, React__default.createElement("div", null, "Create account"), React__default.createElement("button", {
1680
- type: "button",
1681
- onClick: onClose
1682
- }, "Close"), React__default.createElement("div", {
1683
- className: "register-container__twoFields"
1684
- }, React__default.createElement("div", {
1685
- className: "is-half"
1686
- }, React__default.createElement(formik.Field, {
1687
- name: 'firstName',
1688
- validate: requiredValidator()
1689
- }, function (_ref3) {
1690
- var field = _ref3.field,
1691
- meta = _ref3.meta;
1692
- return React__default.createElement(material.TextField, Object.assign({
1693
- label: 'First Name',
1694
- type: 'text',
1695
- fullWidth: true,
1696
- error: !!meta.error && meta.touched,
1697
- helperText: meta.touched && meta.error
1698
- }, field));
1699
- })), React__default.createElement("div", {
1700
- className: "is-half"
1701
- }, React__default.createElement(formik.Field, {
1702
- name: 'lastName',
1703
- validate: requiredValidator()
1704
- }, function (_ref4) {
1705
- var field = _ref4.field,
1706
- meta = _ref4.meta;
1707
- return React__default.createElement(material.TextField, Object.assign({
1708
- label: 'Last Name',
1709
- type: 'text',
1710
- fullWidth: true,
1711
- error: !!meta.error && meta.touched,
1712
- helperText: meta.touched && meta.error
1713
- }, field));
1714
- }))), React__default.createElement("div", {
1715
- className: "register-container__singleField"
2009
+ className: "forgot-password-container"
1716
2010
  }, React__default.createElement("div", {
1717
- className: ""
2011
+ className: "title"
2012
+ }, "Password Reset"), React__default.createElement("div", {
2013
+ className: "forgot-password-container__singleField"
1718
2014
  }, React__default.createElement(formik.Field, {
1719
- name: 'email',
1720
- validate: requiredValidator()
1721
- }, function (_ref5) {
1722
- var field = _ref5.field,
1723
- meta = _ref5.meta;
1724
- return React__default.createElement(material.TextField, Object.assign({
1725
- label: 'Email',
1726
- type: 'email',
1727
- fullWidth: true,
1728
- error: !!meta.error && meta.touched,
1729
- helperText: meta.touched && meta.error
1730
- }, field));
2015
+ name: "email",
2016
+ label: "Email",
2017
+ component: CustomField
1731
2018
  }))), React__default.createElement("div", {
1732
- className: "register-container__twoFields"
1733
- }, React__default.createElement("div", {
1734
- className: "is-half"
1735
- }, React__default.createElement(formik.Field, {
1736
- name: 'password',
1737
- validate: requiredValidator()
1738
- }, function (_ref6) {
1739
- var field = _ref6.field,
1740
- meta = _ref6.meta;
1741
- return React__default.createElement(material.TextField, Object.assign({
1742
- label: 'Password',
1743
- type: 'password',
1744
- fullWidth: true,
1745
- error: !!meta.error && meta.touched,
1746
- helperText: meta.touched && meta.error
1747
- }, field));
1748
- })), React__default.createElement("div", {
1749
- className: "is-half"
1750
- }, React__default.createElement(formik.Field, {
1751
- name: 'confirmPassword',
1752
- validate: requiredValidator()
1753
- }, function (_ref7) {
1754
- var field = _ref7.field,
1755
- meta = _ref7.meta;
1756
- return React__default.createElement(material.TextField, Object.assign({
1757
- label: 'Confirm Passwod',
1758
- type: 'password',
1759
- fullWidth: true,
1760
- error: !!meta.error && meta.touched,
1761
- helperText: meta.touched && meta.error
1762
- }, field));
1763
- })))), React__default.createElement("button", {
1764
- type: "submit"
1765
- }, "Submit"));
1766
- }));
1767
- };
1768
-
1769
- var _excluded = ["firstName", "lastName", "holderAge", "confirmEmail", "confirmPassword"];
1770
- var getInitialValues = function getInitialValues(data, propsInitialValues, userValues) {
1771
- if (data === void 0) {
1772
- data = [];
1773
- }
1774
-
1775
- if (propsInitialValues === void 0) {
1776
- propsInitialValues = {};
1777
- }
1778
-
1779
- if (userValues === void 0) {
1780
- userValues = {};
1781
- }
1782
-
1783
- var results = _flatMapDeep(data, function (_ref) {
1784
- var fields = _ref.fields;
1785
- return _map(fields, function (_ref2) {
1786
- var groupItems = _ref2.groupItems;
1787
- return _map(groupItems, function (_ref3) {
1788
- var name = _ref3.name;
1789
- return name;
1790
- });
1791
- });
1792
- });
1793
-
1794
- var initialValues = {};
1795
-
1796
- _forEach(results, function (item) {
1797
- initialValues[item] = propsInitialValues[item] || userValues[item] || '';
1798
- }); // set logged in user as first ticket holder
1799
-
1800
-
1801
- initialValues['holderFirstName-0'] = propsInitialValues.firstName || userValues.firstName || '';
1802
- initialValues['holderLastName-0'] = propsInitialValues.lastName || userValues.lastName || '';
1803
- initialValues['holderEmail-0'] = propsInitialValues.email || userValues.email || '';
1804
- return initialValues;
2019
+ className: "forgot-password-action-button"
2020
+ }, React__default.createElement("button", {
2021
+ type: "submit",
2022
+ disabled: !(isValid && dirty)
2023
+ }, loading ? React__default.createElement(material.CircularProgress, {
2024
+ size: "22px"
2025
+ }) : 'Submit')), React__default.createElement("div", {
2026
+ className: "login"
2027
+ }, React__default.createElement("span", {
2028
+ onClick: onLogin
2029
+ }, "Back to Log In")));
2030
+ }))));
1805
2031
  };
1806
- var createRegisterFormData = function createRegisterFormData(values, checkoutBody) {
1807
- if (values === void 0) {
1808
- values = {};
1809
- }
1810
-
1811
- var bodyFormData = new FormData();
1812
- bodyFormData.append('first_name', values.firstName);
1813
- bodyFormData.append('last_name', values.lastName);
1814
- bodyFormData.append('email', values.email);
1815
- bodyFormData.append('password', values.password);
1816
- bodyFormData.append('password_confirmation', values.confirmPassword);
1817
- bodyFormData.append('client_id', CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf');
1818
- bodyFormData.append('client_secret', CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9');
1819
- bodyFormData.append('check_cart_expiration', 'true');
1820
-
1821
- _forEach(checkoutBody.attributes, function (item, key) {
1822
- bodyFormData.append(key, item);
1823
- });
1824
2032
 
1825
- return bodyFormData;
2033
+ var style$1 = {
2034
+ position: 'absolute',
2035
+ top: '50%',
2036
+ left: '50%',
2037
+ transform: 'translate(-50%, -50%)',
2038
+ minWidth: 480,
2039
+ backgroundColor: '#e3e3e3',
2040
+ border: '1px solid white',
2041
+ outline: 'none'
1826
2042
  };
1827
2043
  var setLoggedUserData = function setLoggedUserData(data) {
1828
2044
  return {
@@ -1839,559 +2055,647 @@ var setLoggedUserData = function setLoggedUserData(data) {
1839
2055
  zip: (data == null ? void 0 : data.zip) || (data == null ? void 0 : data.zipCode) || ''
1840
2056
  };
1841
2057
  };
1842
- var createCheckoutDataBody = function createCheckoutDataBody(ticketsQuantity, values, logedInValues, includeDob) {
1843
- if (values === void 0) {
1844
- values = {};
1845
- }
1846
-
1847
- if (logedInValues === void 0) {
1848
- logedInValues = {};
1849
- }
1850
-
1851
- if (includeDob === void 0) {
1852
- includeDob = false;
1853
- }
1854
-
1855
- var _values = values,
1856
- firstName = _values.firstName,
1857
- lastName = _values.lastName,
1858
- holderAge = _values.holderAge,
1859
- restValues = _objectWithoutPropertiesLoose(_values, _excluded);
2058
+ var LoginModal = function LoginModal(_ref) {
2059
+ var onClose = _ref.onClose,
2060
+ onLogin = _ref.onLogin,
2061
+ _ref$alreadyHasUser = _ref.alreadyHasUser,
2062
+ alreadyHasUser = _ref$alreadyHasUser === void 0 ? false : _ref$alreadyHasUser,
2063
+ _ref$userExpired = _ref.userExpired,
2064
+ userExpired = _ref$userExpired === void 0 ? false : _ref$userExpired,
2065
+ _ref$onGetProfileData = _ref.onGetProfileDataSuccess,
2066
+ onGetProfileDataSuccess = _ref$onGetProfileData === void 0 ? _identity : _ref$onGetProfileData,
2067
+ _ref$onGetProfileData2 = _ref.onGetProfileDataError,
2068
+ onGetProfileDataError = _ref$onGetProfileData2 === void 0 ? _identity : _ref$onGetProfileData2,
2069
+ _ref$onForgotPassword = _ref.onForgotPassword,
2070
+ onForgotPassword = _ref$onForgotPassword === void 0 ? _identity : _ref$onForgotPassword,
2071
+ _ref$onSignup = _ref.onSignup,
2072
+ onSignup = _ref$onSignup === void 0 ? _identity : _ref$onSignup,
2073
+ _ref$modalClassname = _ref.modalClassname,
2074
+ modalClassname = _ref$modalClassname === void 0 ? '' : _ref$modalClassname,
2075
+ logo = _ref.logo,
2076
+ _ref$showForgotPasswo = _ref.showForgotPasswordButton,
2077
+ showForgotPasswordButton = _ref$showForgotPasswo === void 0 ? false : _ref$showForgotPasswo,
2078
+ _ref$showSignUpButton = _ref.showSignUpButton,
2079
+ showSignUpButton = _ref$showSignUpButton === void 0 ? false : _ref$showSignUpButton;
1860
2080
 
1861
- var holders = [];
1862
- var ticket_holders = [];
2081
+ var _useState = React.useState(''),
2082
+ error = _useState[0],
2083
+ setError = _useState[1];
1863
2084
 
1864
- var _loop = function _loop(i) {
1865
- var individualHolder = Object.fromEntries(Object.entries(values).filter(function (_ref4) {
1866
- var key = _ref4[0];
1867
- return key.includes(String(i));
1868
- }));
1869
- holders.push(individualHolder);
1870
- };
2085
+ return React__default.createElement(Modal, {
2086
+ open: true,
2087
+ onClose: onClose,
2088
+ "aria-labelledby": "modal-modal-title",
2089
+ "aria-describedby": "modal-modal-description",
2090
+ className: "login-modal " + modalClassname
2091
+ }, React__default.createElement(Box, {
2092
+ style: style$1
2093
+ }, React__default.createElement("div", null, React__default.createElement(formik.Formik, {
2094
+ initialValues: {
2095
+ email: '',
2096
+ password: ''
2097
+ },
2098
+ onSubmit: function () {
2099
+ var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(_ref2) {
2100
+ var email, password, body, profileResponse, profileSpecifiedData, profileDataObj, event, _e$response, _e$response$data, _error;
1871
2101
 
1872
- for (var i = 0; i <= ticketsQuantity; i++) {
1873
- _loop(i);
1874
- }
2102
+ return runtime_1.wrap(function _callee$(_context) {
2103
+ while (1) {
2104
+ switch (_context.prev = _context.next) {
2105
+ case 0:
2106
+ email = _ref2.email, password = _ref2.password;
2107
+ _context.prev = 1;
2108
+ body = {
2109
+ email: email,
2110
+ password: password
2111
+ };
2112
+ _context.next = 5;
2113
+ return authorize(body);
1875
2114
 
1876
- var filteredHolders = holders.filter(function (holder) {
1877
- return Object.entries(holder).length > 0;
1878
- });
1879
- ticket_holders = filteredHolders.map(function (item, index) {
1880
- return {
1881
- first_name: item["holderFirstName-" + index] || '',
1882
- last_name: item["holderLastName-" + index] || '',
1883
- phone: item["holderPhone-" + index] || '',
1884
- email: item["holderEmail-" + index] || ''
1885
- };
1886
- });
1887
- var filteredRestValue = {};
2115
+ case 5:
2116
+ profileResponse = null;
2117
+ _context.prev = 6;
2118
+ _context.next = 9;
2119
+ return getProfileData();
1888
2120
 
1889
- _forEach(restValues, function (value, key) {
1890
- if (!key.includes('holder')) {
1891
- filteredRestValue[key] = value;
1892
- }
1893
- });
2121
+ case 9:
2122
+ profileResponse = _context.sent;
2123
+ onGetProfileDataSuccess(profileResponse.data);
2124
+ _context.next = 17;
2125
+ break;
1894
2126
 
1895
- var body = {
1896
- attributes: _extends({}, filteredRestValue, {
1897
- email: restValues.email || logedInValues.emailLogged,
1898
- confirm_email: restValues.email || logedInValues.emailLogged,
1899
- first_name: firstName || logedInValues.firstNameLogged,
1900
- last_name: lastName || logedInValues.lastNameLogged,
1901
- ticket_holders: ticket_holders
1902
- })
1903
- };
2127
+ case 13:
2128
+ _context.prev = 13;
2129
+ _context.t0 = _context["catch"](6);
1904
2130
 
1905
- if (includeDob) {
1906
- var holderAgeDate = new Date(holderAge);
1907
- body.attributes.dob_day = holderAgeDate.getDate();
1908
- body.attributes.dob_month = holderAgeDate.getMonth() + 1;
1909
- body.attributes.dob_year = holderAgeDate.getFullYear();
1910
- }
2131
+ if (axios.isAxiosError(_context.t0)) {
2132
+ onGetProfileDataError(_context.t0);
2133
+ }
1911
2134
 
1912
- return body;
1913
- };
1914
- var getValidateFunctions = function getValidateFunctions(element, states, values) {
1915
- var validationFunctions = [];
2135
+ return _context.abrupt("return");
1916
2136
 
1917
- if (element.required) {
1918
- if (element.name !== 'state' || element.name === 'state' && states.length) {
1919
- validationFunctions.push(requiredValidator);
1920
- }
1921
- }
2137
+ case 17:
2138
+ profileSpecifiedData = _get(profileResponse, 'data.data');
2139
+ profileDataObj = setLoggedUserData(profileSpecifiedData);
1922
2140
 
1923
- if (element.onValidate) {
1924
- validationFunctions.push(element.onValidate);
1925
- }
2141
+ if (typeof window !== 'undefined') {
2142
+ window.localStorage.setItem('user_data', JSON.stringify(profileDataObj));
2143
+ event = new window.CustomEvent('tf-login');
2144
+ window.document.dispatchEvent(event);
2145
+ }
1926
2146
 
1927
- if (element.name === 'confirmEmail') {
1928
- var isSameEmail = function isSameEmail(confirmEmail) {
1929
- return values.email !== confirmEmail ? 'Please confirm your email address correctly' : null;
1930
- };
2147
+ onLogin();
2148
+ _context.next = 26;
2149
+ break;
1931
2150
 
1932
- validationFunctions.push(isSameEmail);
1933
- }
2151
+ case 23:
2152
+ _context.prev = 23;
2153
+ _context.t1 = _context["catch"](1);
1934
2154
 
1935
- return combineValidators.apply(void 0, validationFunctions);
1936
- };
1937
- var assingUniqueIds = function assingUniqueIds(data) {
1938
- if (_get(data[0], 'uniqueId')) {
1939
- return data;
1940
- }
2155
+ if (axios.isAxiosError(_context.t1)) {
2156
+ _error = (_context.t1 == null ? void 0 : (_e$response = _context.t1.response) == null ? void 0 : (_e$response$data = _e$response.data) == null ? void 0 : _e$response$data.message) || 'Error';
2157
+ setError(_error);
2158
+ } else if (_context.t1 instanceof Error) {
2159
+ setError((_context.t1 == null ? void 0 : _context.t1.message) || 'Error');
2160
+ }
1941
2161
 
1942
- return _map(data, function (item) {
1943
- _forEach(item, function (itemValue, key) {
1944
- if (_isArray(itemValue)) {
1945
- item[key] = assingUniqueIds(itemValue);
2162
+ case 26:
2163
+ case "end":
2164
+ return _context.stop();
2165
+ }
2166
+ }
2167
+ }, _callee, null, [[1, 23], [6, 13]]);
2168
+ }));
2169
+
2170
+ function onSubmit(_x) {
2171
+ return _onSubmit.apply(this, arguments);
1946
2172
  }
1947
- });
1948
2173
 
1949
- return _extends({}, item, {
1950
- uniqueId: nanoid.nanoid()
1951
- });
1952
- });
2174
+ return onSubmit;
2175
+ }()
2176
+ }, function (props) {
2177
+ return React__default.createElement(formik.Form, {
2178
+ onSubmit: props.handleSubmit
2179
+ }, React__default.createElement("div", {
2180
+ className: "modal-title"
2181
+ }, "Login"), React__default.createElement("div", {
2182
+ className: 'login-logo-container'
2183
+ }, React__default.createElement("img", {
2184
+ className: "login-logo-tff",
2185
+ src: logo || "https://www.ticketfairy.com/resources/images/logo-ttf-black.svg",
2186
+ alt: "logo"
2187
+ })), React__default.createElement("div", {
2188
+ className: "server_auth__error"
2189
+ }, error), alreadyHasUser && React__default.createElement("p", {
2190
+ className: "info-text-for-login"
2191
+ }, "It appears this email is already attached to an account. Please log in here to complete your registration."), userExpired && React__default.createElement("p", {
2192
+ className: "info-text-for-login"
2193
+ }, "Your session has expired, please log in again."), React__default.createElement("div", {
2194
+ className: "login-modal-body"
2195
+ }, React__default.createElement("div", {
2196
+ className: "login-modal-body__email"
2197
+ }, React__default.createElement(formik.Field, {
2198
+ name: 'email',
2199
+ validate: requiredValidator
2200
+ }, function (_ref3) {
2201
+ var field = _ref3.field,
2202
+ meta = _ref3.meta;
2203
+ return React__default.createElement(material.TextField, Object.assign({
2204
+ label: 'Email',
2205
+ type: 'email',
2206
+ fullWidth: true,
2207
+ error: !!meta.error && meta.touched,
2208
+ helperText: meta.touched && meta.error
2209
+ }, field));
2210
+ })), React__default.createElement("div", {
2211
+ className: "login-modal-body__password"
2212
+ }, React__default.createElement(formik.Field, {
2213
+ name: 'password',
2214
+ validate: requiredValidator
2215
+ }, function (_ref4) {
2216
+ var field = _ref4.field,
2217
+ meta = _ref4.meta;
2218
+ return React__default.createElement(material.TextField, Object.assign({
2219
+ label: "Password",
2220
+ type: "password",
2221
+ fullWidth: true,
2222
+ error: !!meta.error && meta.touched,
2223
+ helperText: meta.touched && meta.error
2224
+ }, field));
2225
+ })), React__default.createElement("div", {
2226
+ className: "login-action-button"
2227
+ }, React__default.createElement("button", {
2228
+ type: "submit"
2229
+ }, "Login")), showForgotPasswordButton && React__default.createElement("div", {
2230
+ className: "forgot-password"
2231
+ }, React__default.createElement("span", {
2232
+ "aria-hidden": "true",
2233
+ onClick: onForgotPassword
2234
+ }, "Forgot password?")), showSignUpButton && React__default.createElement("div", {
2235
+ className: "forgot-password"
2236
+ }, React__default.createElement("span", {
2237
+ "aria-hidden": "true",
2238
+ onClick: onSignup
2239
+ }, "Sign up"))));
2240
+ }))));
1953
2241
  };
1954
2242
 
1955
- var _excluded$1 = ["label", "field", "selectOptions", "theme", "setFieldValue"];
1956
- var CheckboxField = function CheckboxField(_ref) {
1957
- var _rest$form, _field$name, _rest$form2, _field$name2;
2243
+ var style$2 = {
2244
+ position: 'absolute',
2245
+ top: '50%',
2246
+ left: '50%',
2247
+ transform: 'translate(-50%, -50%)',
2248
+ minWidth: 480,
2249
+ backgroundColor: '#fff',
2250
+ border: '1px solid white',
2251
+ outline: 'none',
2252
+ padding: '14px'
2253
+ };
2254
+ var SignupSchema = /*#__PURE__*/Yup.object().shape({
2255
+ firstName: /*#__PURE__*/Yup.string().required('Required'),
2256
+ lastName: /*#__PURE__*/Yup.string().required('Required'),
2257
+ email: /*#__PURE__*/Yup.string().email('Invalid email').required('Required'),
2258
+ password: /*#__PURE__*/Yup.string().min(6, 'Password must have 5+ characters').required('Required'),
2259
+ confirmPassword: /*#__PURE__*/Yup.string().required('Required').oneOf([/*#__PURE__*/Yup.ref('password'), null], 'Passwords must match')
2260
+ });
2261
+ var SignupModal = function SignupModal(_ref) {
2262
+ var _ref$onClose = _ref.onClose,
2263
+ onClose = _ref$onClose === void 0 ? function () {} : _ref$onClose,
2264
+ _ref$onLogin = _ref.onLogin,
2265
+ onLogin = _ref$onLogin === void 0 ? function () {} : _ref$onLogin,
2266
+ _ref$onRegisterSucces = _ref.onRegisterSuccess,
2267
+ onRegisterSuccess = _ref$onRegisterSucces === void 0 ? function () {} : _ref$onRegisterSucces,
2268
+ _ref$onRegisterError = _ref.onRegisterError,
2269
+ onRegisterError = _ref$onRegisterError === void 0 ? function () {} : _ref$onRegisterError;
1958
2270
 
1959
- var label = _ref.label,
1960
- field = _ref.field,
1961
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
2271
+ var _useState = React.useState(false),
2272
+ loading = _useState[0],
2273
+ setLoading = _useState[1];
1962
2274
 
1963
- var customTheme = styles.useTheme();
1964
- return React__default.createElement(material.FormControl, {
1965
- error: !!(rest != null && (_rest$form = rest.form) != null && _rest$form.errors && rest.form.errors[(_field$name = field == null ? void 0 : field.name) != null ? _field$name : ""])
1966
- }, React__default.createElement(FormGroup, null, React__default.createElement(FormControlLabel, {
1967
- control: React__default.createElement(Checkbox, Object.assign({}, field, rest)),
1968
- label: label,
1969
- componentsProps: {
1970
- typography: customTheme == null ? void 0 : customTheme.checkbox
1971
- }
1972
- })), !!(rest != null && (_rest$form2 = rest.form) != null && _rest$form2.errors && rest.form.errors[(_field$name2 = field == null ? void 0 : field.name) != null ? _field$name2 : ""]) ? React__default.createElement(material.FormHelperText, null, "Required") : null);
1973
- };
2275
+ var onSignup = /*#__PURE__*/function () {
2276
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(values) {
2277
+ var formData, res, access_token_register, refreshToken, tokens;
2278
+ return runtime_1.wrap(function _callee$(_context) {
2279
+ while (1) {
2280
+ switch (_context.prev = _context.next) {
2281
+ case 0:
2282
+ _context.prev = 0;
2283
+ setLoading(true);
2284
+ formData = new FormData();
2285
+ formData.set('first_name', values.firstName);
2286
+ formData.set('last_name', values.lastName);
2287
+ formData.set('email', values.email);
2288
+ formData.set('password', values.password);
2289
+ formData.set('password_confirmation', values.confirmPassword);
2290
+ formData.append('client_id', CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf');
2291
+ formData.append('client_secret', CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9');
2292
+ _context.next = 12;
2293
+ return register(formData);
1974
2294
 
1975
- var CustomField = function CustomField(_ref) {
1976
- var label = _ref.label,
1977
- _ref$type = _ref.type,
1978
- type = _ref$type === void 0 ? 'text' : _ref$type,
1979
- field = _ref.field,
1980
- _ref$selectOptions = _ref.selectOptions,
1981
- selectOptions = _ref$selectOptions === void 0 ? [] : _ref$selectOptions,
1982
- _ref$form = _ref.form,
1983
- touched = _ref$form.touched,
1984
- errors = _ref$form.errors,
1985
- submitCount = _ref$form.submitCount,
1986
- theme = _ref.theme,
1987
- _ref$inputProps = _ref.inputProps,
1988
- pInputProps = _ref$inputProps === void 0 ? {} : _ref$inputProps,
1989
- _ref$InputProps = _ref.InputProps,
1990
- InputProps = _ref$InputProps === void 0 ? {} : _ref$InputProps,
1991
- inputRef = _ref.inputRef;
1992
- var isSelectField = type === 'select';
2295
+ case 12:
2296
+ res = _context.sent;
2297
+ access_token_register = _get(res, 'data.data.attributes.access_token');
2298
+ refreshToken = _get(res, 'data.data.attributes.refresh_token');
2299
+ handleSetAccessToken(access_token_register);
2300
+ tokens = {
2301
+ accessToken: access_token_register,
2302
+ refreshToken: refreshToken
2303
+ };
2304
+ onRegisterSuccess(tokens);
2305
+ onClose();
2306
+ _context.next = 24;
2307
+ break;
1993
2308
 
1994
- var error = _get(errors, field.name);
2309
+ case 21:
2310
+ _context.prev = 21;
2311
+ _context.t0 = _context["catch"](0);
1995
2312
 
1996
- var isTouched = Boolean(_get(touched, field.name)) || _includes(field.name, 'holder') && !!error && !!submitCount;
1997
- var customTheme = styles.useTheme();
1998
- var inputProps = {
1999
- sx: customTheme == null ? void 0 : customTheme.input
2000
- };
2001
- return React__default.createElement(TextField, Object.assign({
2002
- id: field.name,
2003
- label: label,
2004
- type: type,
2005
- select: isSelectField,
2006
- fullWidth: true,
2007
- error: !!error && isTouched,
2008
- helperText: isTouched && error,
2009
- SelectProps: {
2010
- "native": true,
2011
- className: theme,
2012
- MenuProps: {
2013
- className: theme
2014
- }
2015
- },
2016
- InputLabelProps: {
2017
- sx: customTheme == null ? void 0 : customTheme.input
2313
+ if (axios.isAxiosError(_context.t0)) {
2314
+ onRegisterError(_context.t0, values.email);
2315
+ }
2316
+
2317
+ case 24:
2318
+ _context.prev = 24;
2319
+ setLoading(false);
2320
+ return _context.finish(24);
2321
+
2322
+ case 27:
2323
+ case "end":
2324
+ return _context.stop();
2325
+ }
2326
+ }
2327
+ }, _callee, null, [[0, 21, 24, 27]]);
2328
+ }));
2329
+
2330
+ return function onSignup(_x) {
2331
+ return _ref2.apply(this, arguments);
2332
+ };
2333
+ }();
2334
+
2335
+ var _onClose = loading ? function () {} : onClose;
2336
+
2337
+ return React__default.createElement(material.Modal, {
2338
+ open: true,
2339
+ onClose: _onClose,
2340
+ "aria-labelledby": "modal-modal-title",
2341
+ "aria-describedby": "modal-modal-description",
2342
+ className: "signup-modal"
2343
+ }, React__default.createElement(material.Box, {
2344
+ style: style$2
2345
+ }, React__default.createElement("div", null, React__default.createElement(formik.Formik, {
2346
+ initialValues: {
2347
+ firstName: '',
2348
+ lastName: '',
2349
+ email: '',
2350
+ password: '',
2351
+ confirmPassword: ''
2018
2352
  },
2019
- InputProps: InputProps,
2020
- inputProps: _extends({}, inputProps, pInputProps),
2021
- inputRef: inputRef
2022
- }, field), isSelectField ? _map(selectOptions, function (option) {
2023
- return React__default.createElement("option", {
2024
- key: option.value,
2025
- value: option.value,
2026
- disabled: option.disabled
2027
- }, option.label);
2028
- }) : null);
2353
+ validationSchema: SignupSchema,
2354
+ onSubmit: onSignup
2355
+ }, function (_ref3) {
2356
+ var isValid = _ref3.isValid,
2357
+ dirty = _ref3.dirty,
2358
+ handleSubmit = _ref3.handleSubmit;
2359
+ return React__default.createElement(formik.Form, {
2360
+ onSubmit: handleSubmit
2361
+ }, React__default.createElement("div", {
2362
+ className: "signup-container"
2363
+ }, React__default.createElement("div", {
2364
+ className: "title"
2365
+ }, "Create an Account"), React__default.createElement("div", {
2366
+ className: "signup-container__twoFields"
2367
+ }, React__default.createElement("div", {
2368
+ className: "is-half"
2369
+ }, React__default.createElement(formik.Field, {
2370
+ name: "firstName",
2371
+ label: "First Name",
2372
+ component: CustomField
2373
+ })), React__default.createElement("div", {
2374
+ className: "is-half"
2375
+ }, React__default.createElement(formik.Field, {
2376
+ name: "lastName",
2377
+ label: "Last Name",
2378
+ component: CustomField
2379
+ }))), React__default.createElement("div", {
2380
+ className: "signup-container__singleField"
2381
+ }, React__default.createElement("div", {
2382
+ className: ""
2383
+ }, React__default.createElement(formik.Field, {
2384
+ name: "email",
2385
+ label: "Email",
2386
+ component: CustomField
2387
+ }))), React__default.createElement("div", {
2388
+ className: "signup-container__twoFields"
2389
+ }, React__default.createElement("div", {
2390
+ className: "is-half"
2391
+ }, React__default.createElement(formik.Field, {
2392
+ name: "password",
2393
+ label: "Password",
2394
+ type: "password",
2395
+ component: CustomField
2396
+ })), React__default.createElement("div", {
2397
+ className: "is-half"
2398
+ }, React__default.createElement(formik.Field, {
2399
+ name: "confirmPassword",
2400
+ label: "Confirm Password",
2401
+ type: "password",
2402
+ component: CustomField
2403
+ })))), React__default.createElement("div", {
2404
+ className: "signup-action-button"
2405
+ }, React__default.createElement("button", {
2406
+ type: "submit",
2407
+ disabled: !(isValid && dirty)
2408
+ }, loading ? React__default.createElement(material.CircularProgress, {
2409
+ size: "22px"
2410
+ }) : 'Submit')), React__default.createElement("div", {
2411
+ className: "login"
2412
+ }, React__default.createElement("span", {
2413
+ onClick: onLogin
2414
+ }, "Login")));
2415
+ }))));
2029
2416
  };
2030
2417
 
2031
- var currencyNormalizerCreator = function currencyNormalizerCreator(value, currency) {
2032
- return !value ? '' : "" + getCurrencySymbolByCurrency(currency) + value;
2033
- };
2034
- var createFixedFloatNormalizer = function createFixedFloatNormalizer(fixedValue) {
2035
- return function (value) {
2036
- return value || "" + value === '0' ? (+value).toFixed(fixedValue) : '';
2037
- };
2038
- };
2039
- var getCurrencySymbolByCurrency = function getCurrencySymbolByCurrency(currency) {
2040
- if (currency === void 0) {
2041
- currency = '';
2418
+ var showZero = function showZero(value) {
2419
+ if (value === void 0) {
2420
+ value = 0;
2042
2421
  }
2043
2422
 
2044
- switch (currency) {
2045
- case 'GBP':
2046
- return '£';
2423
+ var intNumber = Number(value);
2424
+ return _isNumber(intNumber) ? intNumber >= 0 && intNumber < 10 ? '0' + intNumber : intNumber : null;
2425
+ };
2047
2426
 
2048
- case 'EUR':
2049
- return '€';
2427
+ var getImage = function getImage(name) {
2428
+ if (name === void 0) {
2429
+ name = '';
2430
+ }
2050
2431
 
2051
- case 'INR':
2052
- return '₹';
2432
+ var image = '';
2053
2433
 
2054
- case 'JMD':
2055
- return 'J$';
2434
+ if (!name.trim().length) {
2435
+ return image;
2436
+ }
2056
2437
 
2057
- case 'NZD':
2058
- return 'NZ$';
2438
+ return image;
2439
+ };
2059
2440
 
2060
- case 'MYR':
2061
- return 'RM';
2441
+ var TimerWidget = function TimerWidget(_ref) {
2442
+ var expires_at = _ref.expires_at,
2443
+ buyLoading = _ref.buyLoading,
2444
+ _ref$onCountdownFinis = _ref.onCountdownFinish,
2445
+ onCountdownFinish = _ref$onCountdownFinis === void 0 ? function () {} : _ref$onCountdownFinis;
2062
2446
 
2063
- case 'MXN':
2064
- return 'Mex$';
2447
+ var _useState = React.useState(true),
2448
+ showTimer = _useState[0],
2449
+ setShowTimer = _useState[1];
2065
2450
 
2066
- case 'SGD':
2067
- return 'S$';
2451
+ var handleCountdownFinish = function handleCountdownFinish() {
2452
+ setShowTimer(false);
2068
2453
 
2069
- case 'AUD':
2070
- return 'A$';
2454
+ if (!buyLoading) {
2455
+ onCountdownFinish();
2456
+ }
2457
+ };
2071
2458
 
2072
- case 'ZAR':
2073
- return 'R';
2459
+ var _renderer = function renderer(_ref2) {
2460
+ var minutes = _ref2.minutes,
2461
+ seconds = _ref2.seconds,
2462
+ completed = _ref2.completed,
2463
+ handleCountdownFinish = _ref2.handleCountdownFinish;
2074
2464
 
2075
- case 'ke':
2076
- return 'Ksh';
2465
+ if (completed) {
2466
+ handleCountdownFinish();
2467
+ return null;
2468
+ }
2077
2469
 
2078
- case 'TRY':
2079
- return '₺';
2470
+ return React__default.createElement("span", null, showZero(minutes), ":", showZero(seconds));
2471
+ };
2080
2472
 
2081
- case 'CAD':
2082
- return 'CA$';
2473
+ var hideTimer = function hideTimer() {
2474
+ var timerRl = document.querySelector('.timer');
2083
2475
 
2084
- case 'THB':
2085
- return '฿';
2476
+ if (timerRl) {
2477
+ timerRl.style.visibility = "hidden";
2478
+ }
2479
+ };
2086
2480
 
2087
- case 'ISK':
2088
- return 'Kr';
2481
+ return showTimer && !!expires_at ? React__default.createElement("div", {
2482
+ className: "timer"
2483
+ }, React__default.createElement("div", {
2484
+ className: 'close-icon',
2485
+ onClick: hideTimer
2486
+ }, React__default.createElement(SVG, {
2487
+ src: getImage('cross.svg'),
2488
+ width: '10',
2489
+ height: '10',
2490
+ fill: '#fff'
2491
+ })), React__default.createElement("div", {
2492
+ className: "toast-message"
2493
+ }, React__default.createElement("p", null, "Please complete your purchase before the timer reaches zero."), React__default.createElement("p", {
2494
+ className: "countdown"
2495
+ }, React__default.createElement(Countdown$1, {
2496
+ date: Date.now() + expires_at * 1000,
2497
+ renderer: function renderer(props) {
2498
+ return _renderer(_extends({}, props, {
2499
+ handleCountdownFinish: handleCountdownFinish
2500
+ }));
2501
+ }
2502
+ })))) : null;
2503
+ };
2089
2504
 
2090
- case 'SEK':
2091
- return 'kr';
2505
+ var TimerWidget$1 = /*#__PURE__*/React.memo(TimerWidget);
2092
2506
 
2093
- default:
2094
- return 'US$';
2507
+ var _excluded$1 = ["firstName", "lastName", "holderAge", "confirmEmail", "confirmPassword"];
2508
+ var getInitialValues = function getInitialValues(data, propsInitialValues, userValues) {
2509
+ if (data === void 0) {
2510
+ data = [];
2095
2511
  }
2096
- };
2097
- var removePlusSign = function removePlusSign(string) {
2098
- if (string === void 0) {
2099
- string = '';
2512
+
2513
+ if (propsInitialValues === void 0) {
2514
+ propsInitialValues = {};
2100
2515
  }
2101
2516
 
2102
- return string.replace('+', '');
2103
- };
2517
+ if (userValues === void 0) {
2518
+ userValues = {};
2519
+ }
2104
2520
 
2105
- var _excluded$2 = ["label", "field", "form", "setFieldValue", "selectOptions"];
2106
- var FormikPhoneNumberField = function FormikPhoneNumberField(_ref) {
2107
- var label = _ref.label,
2108
- field = _ref.field,
2109
- _ref$form = _ref.form,
2110
- touched = _ref$form.touched,
2111
- errors = _ref$form.errors,
2112
- initialValues = _ref$form.initialValues,
2113
- setFieldValue = _ref.setFieldValue,
2114
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
2521
+ var results = _flatMapDeep(data, function (_ref) {
2522
+ var fields = _ref.fields;
2523
+ return _map(fields, function (_ref2) {
2524
+ var groupItems = _ref2.groupItems;
2525
+ return _map(groupItems, function (_ref3) {
2526
+ var name = _ref3.name;
2527
+ return name;
2528
+ });
2529
+ });
2530
+ });
2115
2531
 
2116
- var error = _get(errors, field.name);
2532
+ var initialValues = {};
2117
2533
 
2118
- var isTouched = Boolean(_get(touched, field.name));
2119
- var customTheme = styles.useTheme();
2120
- return React__default.createElement(MuiPhoneNumber, Object.assign({
2121
- name: 'phone',
2122
- value: initialValues.phone,
2123
- onChange: function onChange(e) {
2124
- return setFieldValue("phone", removePlusSign(e));
2125
- },
2126
- variant: "outlined",
2127
- defaultCountry: 'us',
2128
- disableDropdown: true,
2129
- label: label,
2130
- error: !!error && isTouched,
2131
- helperText: isTouched && error,
2132
- fullWidth: true,
2133
- InputLabelProps: {
2134
- sx: customTheme == null ? void 0 : customTheme.input
2135
- },
2136
- InputProps: {
2137
- sx: customTheme == null ? void 0 : customTheme.input
2138
- },
2139
- autoFormat: false
2140
- }, rest));
2141
- };
2534
+ _forEach(results, function (item) {
2535
+ initialValues[item] = propsInitialValues[item] || userValues[item] || '';
2536
+ }); // set logged in user as first ticket holder
2142
2537
 
2143
- function Loader() {
2144
- return React__default.createElement("div", {
2145
- className: "loader-container"
2146
- }, React__default.createElement(CircularProgress, null));
2147
- }
2148
2538
 
2149
- var SelectField = function SelectField(_ref) {
2150
- var label = _ref.label,
2151
- _ref$type = _ref.type,
2152
- type = _ref$type === void 0 ? 'text' : _ref$type,
2153
- field = _ref.field,
2154
- _ref$selectOptions = _ref.selectOptions,
2155
- selectOptions = _ref$selectOptions === void 0 ? [] : _ref$selectOptions,
2156
- _ref$form = _ref.form,
2157
- touched = _ref$form.touched,
2158
- errors = _ref$form.errors,
2159
- theme = _ref.theme;
2160
- var isTouched = Boolean(_get(touched, field.name));
2539
+ initialValues['holderFirstName-0'] = propsInitialValues.firstName || userValues.firstName || '';
2540
+ initialValues['holderLastName-0'] = propsInitialValues.lastName || userValues.lastName || '';
2541
+ initialValues['holderEmail-0'] = propsInitialValues.email || userValues.email || '';
2542
+ return initialValues;
2543
+ };
2544
+ var createRegisterFormData = function createRegisterFormData(values, checkoutBody) {
2545
+ if (values === void 0) {
2546
+ values = {};
2547
+ }
2161
2548
 
2162
- var error = _get(errors, field.name);
2549
+ var bodyFormData = new FormData();
2550
+ bodyFormData.append('first_name', values.firstName);
2551
+ bodyFormData.append('last_name', values.lastName);
2552
+ bodyFormData.append('email', values.email);
2553
+ bodyFormData.append('password', values.password);
2554
+ bodyFormData.append('password_confirmation', values.confirmPassword);
2555
+ bodyFormData.append('client_id', CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf');
2556
+ bodyFormData.append('client_secret', CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9');
2557
+ bodyFormData.append('check_cart_expiration', 'true');
2163
2558
 
2164
- var customTheme = styles.useTheme();
2165
- return React__default.createElement(material.FormControl, {
2166
- fullWidth: true
2167
- }, React__default.createElement(material.InputLabel, {
2168
- style: customTheme == null ? void 0 : customTheme.input,
2169
- htmlFor: field.name,
2170
- error: !!error && isTouched,
2171
- shrink: true
2172
- }, label), React__default.createElement(Select, Object.assign({
2173
- id: field.name,
2174
- label: label,
2175
- type: type,
2176
- fullWidth: true,
2177
- error: !!error && isTouched,
2178
- inputProps: {
2179
- id: field.name
2180
- },
2181
- "native": true,
2182
- className: theme,
2183
- MenuProps: {
2184
- className: theme
2185
- }
2186
- }, field, {
2187
- style: customTheme == null ? void 0 : customTheme.input
2188
- }), _map(selectOptions, function (option) {
2189
- return React__default.createElement("option", {
2190
- key: option.value,
2191
- value: option.value,
2192
- disabled: option.disabled
2193
- }, option.label);
2194
- })), isTouched && error ? React__default.createElement(material.FormHelperText, {
2195
- error: !!error && isTouched
2196
- }, error) : null);
2559
+ _forEach(checkoutBody.attributes, function (item, key) {
2560
+ bodyFormData.append(key, item);
2561
+ });
2562
+
2563
+ return bodyFormData;
2564
+ };
2565
+ var setLoggedUserData$1 = function setLoggedUserData(data) {
2566
+ return {
2567
+ id: data.id,
2568
+ first_name: data.firstName,
2569
+ last_name: data.lastName,
2570
+ email: data.email,
2571
+ confirmEmail: data.email,
2572
+ city: (data == null ? void 0 : data.city) || '',
2573
+ country: (data == null ? void 0 : data.countryId) || (data == null ? void 0 : data.country) || '',
2574
+ phone: (data == null ? void 0 : data.phone) || '',
2575
+ street_address: (data == null ? void 0 : data.streetAddress) || '',
2576
+ state: (data == null ? void 0 : data.stateId) || '',
2577
+ zip: (data == null ? void 0 : data.zip) || (data == null ? void 0 : data.zipCode) || ''
2578
+ };
2197
2579
  };
2198
-
2199
- var showZero = function showZero(value) {
2200
- if (value === void 0) {
2201
- value = 0;
2580
+ var createCheckoutDataBody = function createCheckoutDataBody(ticketsQuantity, values, logedInValues, includeDob) {
2581
+ if (values === void 0) {
2582
+ values = {};
2202
2583
  }
2203
2584
 
2204
- var intNumber = Number(value);
2205
- return _isNumber(intNumber) ? intNumber >= 0 && intNumber < 10 ? '0' + intNumber : intNumber : null;
2206
- };
2207
-
2208
- var getImage = function getImage(name) {
2209
- if (name === void 0) {
2210
- name = '';
2585
+ if (logedInValues === void 0) {
2586
+ logedInValues = {};
2211
2587
  }
2212
2588
 
2213
- var image = '';
2214
-
2215
- if (!name.trim().length) {
2216
- return image;
2589
+ if (includeDob === void 0) {
2590
+ includeDob = false;
2217
2591
  }
2218
2592
 
2219
- return image;
2220
- };
2221
-
2222
- var TimerWidget = function TimerWidget(_ref) {
2223
- var expires_at = _ref.expires_at,
2224
- buyLoading = _ref.buyLoading,
2225
- _ref$onCountdownFinis = _ref.onCountdownFinish,
2226
- onCountdownFinish = _ref$onCountdownFinis === void 0 ? function () {} : _ref$onCountdownFinis;
2227
-
2228
- var _useState = React.useState(true),
2229
- showTimer = _useState[0],
2230
- setShowTimer = _useState[1];
2593
+ var _values = values,
2594
+ firstName = _values.firstName,
2595
+ lastName = _values.lastName,
2596
+ holderAge = _values.holderAge,
2597
+ restValues = _objectWithoutPropertiesLoose(_values, _excluded$1);
2231
2598
 
2232
- var handleCountdownFinish = function handleCountdownFinish() {
2233
- setShowTimer(false);
2599
+ var holders = [];
2600
+ var ticket_holders = [];
2234
2601
 
2235
- if (!buyLoading) {
2236
- onCountdownFinish();
2237
- }
2602
+ var _loop = function _loop(i) {
2603
+ var individualHolder = Object.fromEntries(Object.entries(values).filter(function (_ref4) {
2604
+ var key = _ref4[0];
2605
+ return key.includes(String(i));
2606
+ }));
2607
+ holders.push(individualHolder);
2238
2608
  };
2239
2609
 
2240
- var _renderer = function renderer(_ref2) {
2241
- var minutes = _ref2.minutes,
2242
- seconds = _ref2.seconds,
2243
- completed = _ref2.completed,
2244
- handleCountdownFinish = _ref2.handleCountdownFinish;
2610
+ for (var i = 0; i <= ticketsQuantity; i++) {
2611
+ _loop(i);
2612
+ }
2245
2613
 
2246
- if (completed) {
2247
- handleCountdownFinish();
2248
- return null;
2614
+ var filteredHolders = holders.filter(function (holder) {
2615
+ return Object.entries(holder).length > 0;
2616
+ });
2617
+ ticket_holders = filteredHolders.map(function (item, index) {
2618
+ return {
2619
+ first_name: !index ? item["holderFirstName-" + index] || logedInValues.firstNameLogged || '' : item["holderFirstName-" + index] || '',
2620
+ last_name: !index ? item["holderLastName-" + index] || logedInValues.lastNameLogged || '' : item["holderLastName-" + index] || '',
2621
+ phone: item["holderPhone-" + index] || '',
2622
+ email: !index ? item["holderEmail-" + index] || logedInValues.emailLogged || '' : item["holderEmail-" + index] || ''
2623
+ };
2624
+ });
2625
+ var filteredRestValue = {};
2626
+
2627
+ _forEach(restValues, function (value, key) {
2628
+ if (!key.includes('holder')) {
2629
+ filteredRestValue[key] = value;
2249
2630
  }
2631
+ });
2250
2632
 
2251
- return React__default.createElement("span", null, showZero(minutes), ":", showZero(seconds));
2633
+ var body = {
2634
+ attributes: _extends({}, filteredRestValue, {
2635
+ email: restValues.email || logedInValues.emailLogged,
2636
+ confirm_email: restValues.email || logedInValues.emailLogged,
2637
+ first_name: firstName || logedInValues.firstNameLogged,
2638
+ last_name: lastName || logedInValues.lastNameLogged,
2639
+ ticket_holders: ticket_holders
2640
+ })
2252
2641
  };
2253
2642
 
2254
- var hideTimer = function hideTimer() {
2255
- var timerRl = document.querySelector('.timer');
2643
+ if (includeDob) {
2644
+ var holderAgeDate = new Date(holderAge);
2645
+ body.attributes.dob_day = holderAgeDate.getDate();
2646
+ body.attributes.dob_month = holderAgeDate.getMonth() + 1;
2647
+ body.attributes.dob_year = holderAgeDate.getFullYear();
2648
+ }
2256
2649
 
2257
- if (timerRl) {
2258
- timerRl.style.visibility = "hidden";
2259
- }
2260
- };
2650
+ return body;
2651
+ };
2652
+ var getValidateFunctions = function getValidateFunctions(element, states, values) {
2653
+ var validationFunctions = [];
2261
2654
 
2262
- return showTimer && !!expires_at ? React__default.createElement("div", {
2263
- className: "timer"
2264
- }, React__default.createElement("div", {
2265
- className: 'close-icon',
2266
- onClick: hideTimer
2267
- }, React__default.createElement(SVG, {
2268
- src: getImage('cross.svg'),
2269
- width: '10',
2270
- height: '10',
2271
- fill: '#fff'
2272
- })), React__default.createElement("div", {
2273
- className: "toast-message"
2274
- }, React__default.createElement("p", null, "Please complete your purchase before the timer reaches zero."), React__default.createElement("p", {
2275
- className: "countdown"
2276
- }, React__default.createElement(Countdown$1, {
2277
- date: Date.now() + expires_at * 1000,
2278
- renderer: function renderer(props) {
2279
- return _renderer(_extends({}, props, {
2280
- handleCountdownFinish: handleCountdownFinish
2281
- }));
2655
+ if (element.required) {
2656
+ if (element.name !== 'state' || element.name === 'state' && states.length) {
2657
+ validationFunctions.push(requiredValidator);
2282
2658
  }
2283
- })))) : null;
2284
- };
2659
+ }
2285
2660
 
2286
- var TimerWidget$1 = /*#__PURE__*/React.memo(TimerWidget);
2661
+ if (element.onValidate) {
2662
+ validationFunctions.push(element.onValidate);
2663
+ }
2287
2664
 
2288
- var SnackbarAlert = function SnackbarAlert(_ref) {
2289
- var isOpen = _ref.isOpen,
2290
- message = _ref.message,
2291
- type = _ref.type,
2292
- position = _ref.position,
2293
- _ref$autoHideDuration = _ref.autoHideDuration,
2294
- autoHideDuration = _ref$autoHideDuration === void 0 ? 3000 : _ref$autoHideDuration,
2295
- variant = _ref.variant,
2296
- onClose = _ref.onClose;
2297
- return React__default.createElement("div", {
2298
- className: "snackbar-alert-container"
2299
- }, React__default.createElement(material.Snackbar, {
2300
- autoHideDuration: autoHideDuration,
2301
- open: isOpen,
2302
- anchorOrigin: position || {
2303
- vertical: 'top',
2304
- horizontal: 'center'
2305
- },
2306
- onClose: onClose,
2307
- classes: {
2308
- root: 'snackbar-alert-snackbar-root'
2309
- }
2310
- }, React__default.createElement(material.Alert, {
2311
- severity: type,
2312
- onClose: onClose,
2313
- variant: variant || 'filled',
2314
- classes: {
2315
- icon: 'snackbar-alert-icon',
2316
- root: 'snackbar-alert-alert-root',
2317
- action: 'snackbar-alert-action',
2318
- message: 'snackbar-alert-message',
2319
- filled: 'snackbar-alert-filled'
2320
- }
2321
- }, message)));
2322
- };
2665
+ if (element.name === 'confirmEmail') {
2666
+ var isSameEmail = function isSameEmail(confirmEmail) {
2667
+ return values.email !== confirmEmail ? 'Please confirm your email address correctly' : null;
2668
+ };
2323
2669
 
2324
- var DATE_SIZE = 32;
2325
- var compactStyles = {
2326
- '& > div': {
2327
- minWidth: 256
2328
- },
2329
- '& > div > div, & > div > div > div, & .MuiCalendarPicker-root': {
2330
- width: 256
2331
- },
2332
- '& .MuiTypography-caption': {
2333
- width: DATE_SIZE,
2334
- margin: 0
2335
- },
2336
- '& .PrivatePickersSlideTransition-root': {
2337
- minHeight: DATE_SIZE * 6
2338
- },
2339
- '& .PrivatePickersSlideTransition-root [role="row"]': {
2340
- margin: 0
2341
- },
2342
- '& .MuiPickersDay-dayWithMargin': {
2343
- margin: 0
2344
- },
2345
- '& .MuiPickersDay-root': {
2346
- width: DATE_SIZE,
2347
- height: DATE_SIZE
2670
+ validationFunctions.push(isSameEmail);
2348
2671
  }
2349
- };
2350
- var compactStyleTheme = /*#__PURE__*/styles$1.createTheme({
2351
- components: {
2352
- MuiPaper: {
2353
- defaultProps: {
2354
- sx: compactStyles
2355
- }
2356
- }
2672
+
2673
+ if (element.name === 'confirmPassword') {
2674
+ var isSame = function isSame(confirmPassword) {
2675
+ return values.password !== confirmPassword ? 'Password confirmation does not match' : null;
2676
+ };
2677
+
2678
+ validationFunctions.push(isSame);
2357
2679
  }
2358
- });
2359
- var DatePickerField = function DatePickerField(_ref) {
2360
- var label = _ref.label,
2361
- field = _ref.field,
2362
- form = _ref.form,
2363
- theme = _ref.theme,
2364
- _ref$useCompact = _ref.useCompact,
2365
- useCompact = _ref$useCompact === void 0 ? true : _ref$useCompact;
2366
- return React__default.createElement(styles$1.ThemeProvider, {
2367
- theme: useCompact ? compactStyleTheme : {}
2368
- }, React__default.createElement(LocalizationProvider, {
2369
- dateAdapter: AdapterMoment
2370
- }, React__default.createElement(DatePicker, {
2371
- value: field.value || '',
2372
- onChange: function onChange(value) {
2373
- return form.setFieldValue(field.name, value);
2374
- },
2375
- PopperProps: {
2376
- placement: 'bottom-start'
2377
- },
2378
- showDaysOutsideCurrentMonth: true,
2379
- disableFuture: true,
2380
- inputFormat: "DD/MM/YYYY",
2381
- mask: "__/__/____",
2382
- renderInput: function renderInput(params) {
2383
- return React__default.createElement(CustomField, Object.assign({}, params, {
2384
- inputProps: _extends({}, params.inputProps, {
2385
- placeholder: 'dd/mm/yyyy'
2386
- }),
2387
- theme: theme,
2388
- field: field,
2389
- form: form,
2390
- label: label,
2391
- type: "tel"
2392
- }));
2393
- }
2394
- })));
2680
+
2681
+ return combineValidators.apply(void 0, validationFunctions);
2682
+ };
2683
+ var assingUniqueIds = function assingUniqueIds(data) {
2684
+ if (_get(data[0], 'uniqueId')) {
2685
+ return data;
2686
+ }
2687
+
2688
+ return _map(data, function (item) {
2689
+ _forEach(item, function (itemValue, key) {
2690
+ if (_isArray(itemValue)) {
2691
+ item[key] = assingUniqueIds(itemValue);
2692
+ }
2693
+ });
2694
+
2695
+ return _extends({}, item, {
2696
+ uniqueId: nanoid.nanoid()
2697
+ });
2698
+ });
2395
2699
  };
2396
2700
 
2397
2701
  var LogicRunner = function LogicRunner(_ref) {
@@ -2401,7 +2705,8 @@ var LogicRunner = function LogicRunner(_ref) {
2401
2705
  setValues = _ref.setValues,
2402
2706
  setUserValues = _ref.setUserValues,
2403
2707
  onGetStatesSuccess = _ref.onGetStatesSuccess,
2404
- onGetStatesError = _ref.onGetStatesError;
2708
+ onGetStatesError = _ref.onGetStatesError,
2709
+ shouldFetchCountries = _ref.shouldFetchCountries;
2405
2710
  var prevCountry = React.useRef(values.country);
2406
2711
  React.useEffect(function () {
2407
2712
  var fetchStates = /*#__PURE__*/function () {
@@ -2456,7 +2761,7 @@ var LogicRunner = function LogicRunner(_ref) {
2456
2761
  };
2457
2762
  }();
2458
2763
 
2459
- fetchStates();
2764
+ shouldFetchCountries && fetchStates();
2460
2765
  }, [values.country, setStates, setFieldValue]);
2461
2766
  var userDataEncoded = typeof window !== 'undefined' ? window.localStorage.getItem('user_data') : '';
2462
2767
  React.useEffect(function () {
@@ -2467,8 +2772,8 @@ var LogicRunner = function LogicRunner(_ref) {
2467
2772
  try {
2468
2773
  var parsedData = JSON.parse(userDataEncoded);
2469
2774
  var mappedValues = {
2470
- firstName: (parsedData == null ? void 0 : parsedData.first_name) || '',
2471
- lastName: (parsedData == null ? void 0 : parsedData.last_name) || '',
2775
+ firstName: (parsedData == null ? void 0 : parsedData.first_name) || (parsedData == null ? void 0 : parsedData.firstName) || '',
2776
+ lastName: (parsedData == null ? void 0 : parsedData.last_name) || (parsedData == null ? void 0 : parsedData.lastName) || '',
2472
2777
  email: (parsedData == null ? void 0 : parsedData.email) || '',
2473
2778
  phone: (parsedData == null ? void 0 : parsedData.phone) || '',
2474
2779
  confirmEmail: (parsedData == null ? void 0 : parsedData.email) || '',
@@ -2476,15 +2781,15 @@ var LogicRunner = function LogicRunner(_ref) {
2476
2781
  street_address: (parsedData == null ? void 0 : parsedData.street_address) || '',
2477
2782
  country: (parsedData == null ? void 0 : parsedData.country) || '1',
2478
2783
  zip: (parsedData == null ? void 0 : parsedData.zip) || '',
2479
- brand_opt_in: (parsedData == null ? void 0 : parsedData.brand_opt_in) || '',
2784
+ brand_opt_in: (parsedData == null ? void 0 : parsedData.brand_opt_in) || false,
2480
2785
  city: (parsedData == null ? void 0 : parsedData.city) || '',
2481
2786
  confirmPassword: '',
2482
2787
  password: '',
2483
- 'holderFirstName-0': (parsedData == null ? void 0 : parsedData.first_name) || '',
2484
- 'holderLastName-0': (parsedData == null ? void 0 : parsedData.last_name) || '',
2788
+ 'holderFirstName-0': (parsedData == null ? void 0 : parsedData.first_name) || (parsedData == null ? void 0 : parsedData.firstName) || '',
2789
+ 'holderLastName-0': (parsedData == null ? void 0 : parsedData.last_name) || (parsedData == null ? void 0 : parsedData.lastName) || '',
2485
2790
  'holderEmail-0': (parsedData == null ? void 0 : parsedData.email) || ''
2486
2791
  };
2487
- setValues(mappedValues);
2792
+ setValues(_extends({}, values, mappedValues));
2488
2793
  setUserValues(mappedValues);
2489
2794
  } catch (e) {}
2490
2795
  }
@@ -2557,12 +2862,23 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2557
2862
  skipPage = _ref3$skipPage === void 0 ? false : _ref3$skipPage,
2558
2863
  _ref3$canSkipHolderNa = _ref3.canSkipHolderNames,
2559
2864
  canSkipHolderNames = _ref3$canSkipHolderNa === void 0 ? false : _ref3$canSkipHolderNa,
2865
+ _ref3$onForgotPasswor = _ref3.onForgotPasswordSuccess,
2866
+ onForgotPasswordSuccess = _ref3$onForgotPasswor === void 0 ? function () {} : _ref3$onForgotPasswor,
2867
+ _ref3$onForgotPasswor2 = _ref3.onForgotPasswordError,
2868
+ onForgotPasswordError = _ref3$onForgotPasswor2 === void 0 ? function () {} : _ref3$onForgotPasswor2,
2869
+ _ref3$shouldFetchCoun = _ref3.shouldFetchCountries,
2870
+ shouldFetchCountries = _ref3$shouldFetchCoun === void 0 ? true : _ref3$shouldFetchCoun,
2560
2871
  _ref3$onCountdownFini = _ref3.onCountdownFinish,
2561
2872
  onCountdownFinish = _ref3$onCountdownFini === void 0 ? function () {} : _ref3$onCountdownFini,
2562
2873
  _ref3$enableTimer = _ref3.enableTimer,
2563
- enableTimer = _ref3$enableTimer === void 0 ? false : _ref3$enableTimer;
2564
-
2565
- var themeMui = styles$1.createTheme(themeOptions);
2874
+ enableTimer = _ref3$enableTimer === void 0 ? false : _ref3$enableTimer,
2875
+ logo = _ref3.logo,
2876
+ _ref3$showForgotPassw = _ref3.showForgotPasswordButton,
2877
+ showForgotPasswordButton = _ref3$showForgotPassw === void 0 ? false : _ref3$showForgotPassw,
2878
+ _ref3$showSignUpButto = _ref3.showSignUpButton,
2879
+ showSignUpButton = _ref3$showSignUpButto === void 0 ? false : _ref3$showSignUpButto;
2880
+
2881
+ var themeMui = styles.createTheme(themeOptions);
2566
2882
  var isWindowDefined = typeof window !== 'undefined';
2567
2883
  var userData = isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
2568
2884
  var access_token = isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
@@ -2571,7 +2887,9 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2571
2887
  dataWithUniqueIds = _useState[0],
2572
2888
  setDataWithUniqueIds = _useState[1];
2573
2889
 
2574
- var _useState2 = React.useState(!!access_token),
2890
+ var xtfCookie = getCookieByName('X-TF-ECOMMERCE');
2891
+
2892
+ var _useState2 = React.useState(!!(pIsLoggedIn || xtfCookie)),
2575
2893
  isLoggedIn = _useState2[0],
2576
2894
  setIsLoggedIn = _useState2[1];
2577
2895
 
@@ -2600,14 +2918,18 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2600
2918
  setUserExpired = _useState8[1];
2601
2919
 
2602
2920
  var _useState9 = React.useState(false),
2603
- showModalRegister = _useState9[0],
2604
- setShowModalRegister = _useState9[1];
2921
+ showModalSignup = _useState9[0],
2922
+ setShowModalSignup = _useState9[1];
2923
+
2924
+ var _useState10 = React.useState(false),
2925
+ showModalForgotPassword = _useState10[0],
2926
+ setShowModalForgotPassword = _useState10[1];
2605
2927
 
2606
- var _useState10 = React.useState([]),
2607
- ticketsQuantity = _useState10[0],
2608
- setTicketsQuantity = _useState10[1];
2928
+ var _useState11 = React.useState([]),
2929
+ ticketsQuantity = _useState11[0],
2930
+ setTicketsQuantity = _useState11[1];
2609
2931
 
2610
- var _useState11 = React.useState({
2932
+ var _useState12 = React.useState({
2611
2933
  firstName: '',
2612
2934
  lastName: '',
2613
2935
  email: '',
@@ -2622,16 +2944,16 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2622
2944
  state: '',
2623
2945
  zip: ''
2624
2946
  }),
2625
- userValues = _useState11[0],
2626
- setUserValues = _useState11[1];
2947
+ userValues = _useState12[0],
2948
+ setUserValues = _useState12[1];
2627
2949
 
2628
- var _useState12 = React.useState(true),
2629
- loading = _useState12[0],
2630
- setLoading = _useState12[1];
2950
+ var _useState13 = React.useState(true),
2951
+ loading = _useState13[0],
2952
+ setLoading = _useState13[1];
2631
2953
 
2632
- var _useState13 = React.useState(null),
2633
- error = _useState13[0],
2634
- setError = _useState13[1];
2954
+ var _useState14 = React.useState(null),
2955
+ error = _useState14[0],
2956
+ setError = _useState14[1];
2635
2957
 
2636
2958
  var emailLogged = _get(userData, 'email', '') || _get(userValues, 'email', '');
2637
2959
 
@@ -2681,10 +3003,10 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2681
3003
  };
2682
3004
 
2683
3005
  React.useEffect(function () {
2684
- if ((pIsLoggedIn || access_token) && !isLoggedIn) {
2685
- setIsLoggedIn(true);
3006
+ if (pIsLoggedIn !== isLoggedIn || xtfCookie) {
3007
+ setIsLoggedIn(!!(pIsLoggedIn || xtfCookie));
2686
3008
  }
2687
- }, [pIsLoggedIn, isLoggedIn, access_token]); //just once
3009
+ }, [pIsLoggedIn, isLoggedIn, xtfCookie]); //just once
2688
3010
 
2689
3011
  React.useEffect(function () {
2690
3012
  // fetch countries data
@@ -2733,7 +3055,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2733
3055
  };
2734
3056
  }();
2735
3057
 
2736
- fetchCountries();
3058
+ shouldFetchCountries && fetchCountries();
2737
3059
  fetchCart();
2738
3060
  }, []); // fetch cart data
2739
3061
 
@@ -2793,7 +3115,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2793
3115
  case 0:
2794
3116
  _context4.prev = 0;
2795
3117
 
2796
- if (!(isWindowDefined && token)) {
3118
+ if (!(isWindowDefined && token || isLoggedIn)) {
2797
3119
  _context4.next = 10;
2798
3120
  break;
2799
3121
  }
@@ -2804,7 +3126,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2804
3126
  case 4:
2805
3127
  userDataResponse = _context4.sent;
2806
3128
  profileSpecifiedData = _get(userDataResponse, 'data.data');
2807
- profileDataObj = setLoggedUserData(profileSpecifiedData);
3129
+ profileDataObj = setLoggedUserData$1(profileSpecifiedData);
2808
3130
  setUserValues(_extends({}, profileDataObj, {
2809
3131
  firstName: profileDataObj.first_name,
2810
3132
  lastName: profileDataObj.last_name
@@ -2840,7 +3162,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2840
3162
 
2841
3163
  React.useEffect(function () {
2842
3164
  fetchUserData(access_token);
2843
- }, [access_token]);
3165
+ }, [access_token, isLoggedIn]);
2844
3166
  React.useEffect(function () {
2845
3167
  var collectPaymentData = /*#__PURE__*/function () {
2846
3168
  var _ref7 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee5() {
@@ -2896,16 +3218,20 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2896
3218
  collectPaymentData();
2897
3219
  }, [skipPage, ticketsQuantity]);
2898
3220
 
2899
- var collectCheckoutBody = function collectCheckoutBody(values) {
3221
+ var collectCheckoutBody = function collectCheckoutBody(values, profileData) {
2900
3222
  var checkoutBody = {}; // Auto collect ticket holders name when it was skipped optionally
2901
3223
 
2902
3224
  if (showDOB && !showTicketHolders && canSkipHolderNames) {
2903
- checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity.length, values, true);
2904
- } else {
2905
- checkoutBody = createCheckoutDataBody(ticketsQuantity.length, values, {
3225
+ checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity.length, values, true, {
2906
3226
  emailLogged: emailLogged,
2907
3227
  firstNameLogged: firstNameLogged,
2908
3228
  lastNameLogged: lastNameLogged
3229
+ });
3230
+ } else {
3231
+ checkoutBody = createCheckoutDataBody(ticketsQuantity.length, values, {
3232
+ emailLogged: emailLogged || profileData.email,
3233
+ firstNameLogged: firstNameLogged || profileData.first_name || profileData.firstName,
3234
+ lastNameLogged: lastNameLogged || profileData.last_name || profileData.lastName
2909
3235
  }, showDOB);
2910
3236
  }
2911
3237
 
@@ -2914,28 +3240,27 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2914
3240
 
2915
3241
  var removeReferralKey = function removeReferralKey() {
2916
3242
  localStorage.removeItem('referral_key');
2917
- }; // Displaying loader
2918
-
3243
+ };
2919
3244
 
2920
3245
  if (loading || enableTimer && !expirationTime && typeof window !== 'undefined') {
2921
3246
  if (expirationTime === 0) {
2922
3247
  // Redirect to homepage (countdown finished and browser reloaded case)
2923
3248
  window.location.href = '/';
2924
3249
  }
2925
-
2926
- return React__default.createElement(Backdrop, {
2927
- sx: {
2928
- color: '#fff'
2929
- },
2930
- open: true
2931
- }, React__default.createElement(material.CircularProgress, {
2932
- color: "inherit"
2933
- }));
2934
3250
  }
2935
3251
 
2936
- return React__default.createElement(styles$1.ThemeProvider, {
3252
+ return React__default.createElement(styles.ThemeProvider, {
2937
3253
  theme: themeMui
2938
- }, !!expirationTime && enableTimer && React__default.createElement(TimerWidget$1, {
3254
+ }, loading && React__default.createElement(Backdrop, {
3255
+ sx: {
3256
+ color: '#fff',
3257
+ backgroundColor: '#000000bd',
3258
+ zIndex: 1205
3259
+ },
3260
+ open: true
3261
+ }, React__default.createElement(material.CircularProgress, {
3262
+ color: "inherit"
3263
+ })), !!expirationTime && enableTimer && React__default.createElement(TimerWidget$1, {
2939
3264
  expires_at: expirationTime,
2940
3265
  onCountdownFinish: onCountdownFinish
2941
3266
  }), React__default.createElement(formik.Formik, {
@@ -2945,10 +3270,10 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2945
3270
  brand_opt_in: optedInFieldValue,
2946
3271
  ttf_opt_in: ttfOptIn
2947
3272
  }), userValues),
2948
- enableReinitialize: true,
3273
+ enableReinitialize: false,
2949
3274
  onSubmit: function () {
2950
3275
  var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee6(values, formikHelpers) {
2951
- var updatedUserData, _profileSpecifiedData, _profileDataObj, _checkoutBody, _res, checkoutBodyForRegistration, bodyFormData, access_token_register, resRegister, refreshToken, tokens, _e$response, _e$response$data, _error, profileData, profileSpecifiedData, profileDataObj, checkoutBody, res, _e$response2, _e$response3;
3276
+ var updatedUserData, _profileSpecifiedData, _profileDataObj, _checkoutBody, _res, checkoutBodyForRegistration, bodyFormData, resRegister, _xtfCookie, accessToken, refreshToken, userProfile, _e$response, _e$response$data, _error, profileData, profileSpecifiedData, profileDataObj, checkoutBody, res, _e$response2, _e$response3;
2952
3277
 
2953
3278
  return runtime_1.wrap(function _callee6$(_context6) {
2954
3279
  while (1) {
@@ -2972,14 +3297,14 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2972
3297
  case 5:
2973
3298
  updatedUserData = _context6.sent;
2974
3299
  _profileSpecifiedData = _get(updatedUserData, 'data.data');
2975
- _profileDataObj = setLoggedUserData(_profileSpecifiedData);
3300
+ _profileDataObj = setLoggedUserData$1(_profileSpecifiedData);
2976
3301
 
2977
3302
  if (isWindowDefined) {
2978
3303
  window.localStorage.setItem('user_data', JSON.stringify(_profileDataObj));
2979
3304
  }
2980
3305
 
2981
3306
  case 9:
2982
- _checkoutBody = collectCheckoutBody(values);
3307
+ _checkoutBody = collectCheckoutBody(values, userData);
2983
3308
  _context6.next = 12;
2984
3309
  return postOnCheckout(_checkoutBody, access_token);
2985
3310
 
@@ -2996,27 +3321,30 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2996
3321
  lastNameLogged: lastNameLogged
2997
3322
  }, showDOB);
2998
3323
  bodyFormData = createRegisterFormData(values, checkoutBodyForRegistration);
2999
- access_token_register = null;
3000
- _context6.prev = 19;
3324
+ _context6.prev = 18;
3325
+ setLoading(true);
3001
3326
  _context6.next = 22;
3002
3327
  return register(bodyFormData);
3003
3328
 
3004
3329
  case 22:
3005
3330
  resRegister = _context6.sent;
3006
- access_token_register = _get(resRegister, 'data.data.attributes.access_token');
3331
+ _xtfCookie = _get(resRegister, 'headers.x-tf-ecommerce');
3332
+ accessToken = _get(resRegister, 'data.data.attributes.access_token');
3007
3333
  refreshToken = _get(resRegister, 'data.data.attributes.refresh_token');
3008
- handleSetAccessToken(access_token_register);
3009
- tokens = {
3010
- accessToken: access_token_register,
3011
- refreshToken: refreshToken
3012
- };
3013
- onRegisterSuccess(tokens);
3014
- _context6.next = 34;
3334
+ userProfile = _get(resRegister, 'data.data.attributes.user_profile');
3335
+ onRegisterSuccess({
3336
+ xtfCookie: _xtfCookie,
3337
+ accessToken: accessToken,
3338
+ refreshToken: refreshToken,
3339
+ userProfile: userProfile
3340
+ });
3341
+ _context6.next = 35;
3015
3342
  break;
3016
3343
 
3017
3344
  case 30:
3018
3345
  _context6.prev = 30;
3019
- _context6.t0 = _context6["catch"](19);
3346
+ _context6.t0 = _context6["catch"](18);
3347
+ setLoading(false);
3020
3348
 
3021
3349
  if (axios.isAxiosError(_context6.t0)) {
3022
3350
  _error = _context6.t0 == null ? void 0 : (_e$response = _context6.t0.response) == null ? void 0 : (_e$response$data = _e$response.data) == null ? void 0 : _e$response$data.message;
@@ -3045,33 +3373,34 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3045
3373
 
3046
3374
  return _context6.abrupt("return");
3047
3375
 
3048
- case 34:
3049
- _context6.next = 36;
3050
- return getProfileData(access_token_register);
3376
+ case 35:
3377
+ _context6.next = 37;
3378
+ return getProfileData();
3051
3379
 
3052
- case 36:
3380
+ case 37:
3053
3381
  profileData = _context6.sent;
3054
3382
  profileSpecifiedData = _get(profileData, 'data.data');
3055
- profileDataObj = setLoggedUserData(profileSpecifiedData);
3383
+ profileDataObj = setLoggedUserData$1(profileSpecifiedData);
3056
3384
 
3057
3385
  if (isWindowDefined) {
3058
3386
  window.localStorage.setItem('user_data', JSON.stringify(profileDataObj));
3059
3387
  }
3060
3388
 
3061
- checkoutBody = collectCheckoutBody(values);
3062
- _context6.next = 43;
3063
- return postOnCheckout(checkoutBody, access_token_register);
3389
+ checkoutBody = collectCheckoutBody(values, profileDataObj);
3390
+ _context6.next = 44;
3391
+ return postOnCheckout(checkoutBody);
3064
3392
 
3065
- case 43:
3393
+ case 44:
3066
3394
  res = _context6.sent;
3067
3395
  removeReferralKey();
3068
3396
  handleSubmit(values, formikHelpers, eventId, res);
3069
- _context6.next = 51;
3397
+ _context6.next = 53;
3070
3398
  break;
3071
3399
 
3072
- case 48:
3073
- _context6.prev = 48;
3400
+ case 49:
3401
+ _context6.prev = 49;
3074
3402
  _context6.t1 = _context6["catch"](0);
3403
+ setLoading(false);
3075
3404
 
3076
3405
  if (axios.isAxiosError(_context6.t1)) {
3077
3406
  if (((_e$response2 = _context6.t1.response) == null ? void 0 : _e$response2.data.error) === 'invalid_token') {
@@ -3090,12 +3419,17 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3090
3419
  onSubmitError(_context6.t1);
3091
3420
  }
3092
3421
 
3093
- case 51:
3422
+ case 53:
3423
+ _context6.prev = 53;
3424
+ setLoading(false);
3425
+ return _context6.finish(53);
3426
+
3427
+ case 56:
3094
3428
  case "end":
3095
3429
  return _context6.stop();
3096
3430
  }
3097
3431
  }
3098
- }, _callee6, null, [[0, 48], [19, 30]]);
3432
+ }, _callee6, null, [[0, 49, 53, 56], [18, 30]]);
3099
3433
  }));
3100
3434
 
3101
3435
  function onSubmit(_x2, _x3) {
@@ -3114,7 +3448,8 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3114
3448
  setValues: props.setValues,
3115
3449
  setUserValues: setUserValues,
3116
3450
  onGetStatesSuccess: onGetStatesSuccess,
3117
- onGetStatesError: onGetStatesError
3451
+ onGetStatesError: onGetStatesError,
3452
+ shouldFetchCountries: shouldFetchCountries
3118
3453
  }), React__default.createElement("div", {
3119
3454
  className: "billing-info-container " + theme
3120
3455
  }, React__default.createElement(SnackbarAlert, {
@@ -3127,8 +3462,10 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3127
3462
  }
3128
3463
  }), !isLoggedIn && React__default.createElement("div", {
3129
3464
  className: "account-actions-block"
3130
- }, React__default.createElement("div", null, accountInfoTitle), React__default.createElement("div", null, "Login & skip ahead:"), React__default.createElement("div", {
3131
- className: "login-block"
3465
+ }, React__default.createElement("div", {
3466
+ className: "action-item"
3467
+ }, React__default.createElement("div", null, accountInfoTitle), React__default.createElement("div", null, "Login & skip ahead:")), React__default.createElement("div", {
3468
+ className: "action-item login-block"
3132
3469
  }, React__default.createElement("button", {
3133
3470
  className: "login-register-button",
3134
3471
  type: "button",
@@ -3186,7 +3523,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3186
3523
  validate: getValidateFunctions(element, states, props.values),
3187
3524
  setFieldValue: props.setFieldValue,
3188
3525
  onBlur: props.handleBlur,
3189
- component: element.type === 'checkbox' ? CheckboxField : element.type === 'select' ? SelectField : element.type === 'phone' ? FormikPhoneNumberField : element.type === 'date' ? DatePickerField : CustomField,
3526
+ component: element.type === 'checkbox' ? CheckboxField : element.type === 'select' ? SelectField : element.type === 'phone' ? PhoneNumberField : element.type === 'date' ? DatePickerField : CustomField,
3190
3527
  selectOptions: element.name === 'country' ? countries : element.name === 'state' ? states : [],
3191
3528
  theme: theme
3192
3529
  })));
@@ -3194,7 +3531,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3194
3531
  }));
3195
3532
  }), !_isEmpty(ticketHoldersFields.fields) && React__default.createElement("div", {
3196
3533
  className: "ticket-holders-fields"
3197
- }, React__default.createElement("p", null, ticketHoldersFields.label), _map(ticketsQuantity, function (_item, index) {
3534
+ }, React__default.createElement("h2", null, ticketHoldersFields.label), _map(ticketsQuantity, function (_item, index) {
3198
3535
  return React__default.createElement("div", {
3199
3536
  key: _item
3200
3537
  }, React__default.createElement("h5", null, "Ticket ", index + 1), _map(ticketHoldersFields.fields, function (group) {
@@ -3213,7 +3550,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3213
3550
  label: element.label,
3214
3551
  type: element.type,
3215
3552
  required: true,
3216
- component: element.type === 'checkbox' ? CheckboxField : CustomField,
3553
+ component: element.type === 'checkbox' ? CheckboxField : element.type === 'phone' ? PhoneNumberField : CustomField,
3217
3554
  validate: combineValidators(element.required ? requiredValidator : function () {}, element.onValidate ? element.onValidate : function () {})
3218
3555
  }));
3219
3556
  })));
@@ -3229,6 +3566,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3229
3566
  size: 26
3230
3567
  }) : buttonName))));
3231
3568
  }), showModalLogin && React__default.createElement(LoginModal, {
3569
+ logo: logo,
3232
3570
  onClose: function onClose() {
3233
3571
  setShowModalLogin(false);
3234
3572
  },
@@ -3246,20 +3584,37 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
3246
3584
 
3247
3585
  _onGetProfileDataSuccess(data);
3248
3586
  },
3249
- onGetProfileDataError: onGetProfileDataError
3250
- }), showModalRegister && React__default.createElement(RegisterModal, {
3587
+ onGetProfileDataError: onGetProfileDataError,
3588
+ showSignUpButton: showSignUpButton,
3589
+ showForgotPasswordButton: showForgotPasswordButton,
3590
+ onForgotPassword: function onForgotPassword() {
3591
+ setShowModalLogin(false);
3592
+ setShowModalForgotPassword(true);
3593
+ },
3594
+ onSignup: function onSignup() {
3595
+ setShowModalLogin(false);
3596
+ setShowModalSignup(true);
3597
+ }
3598
+ }), showModalSignup && React__default.createElement(SignupModal, {
3251
3599
  onClose: function onClose() {
3252
- setShowModalRegister(false);
3600
+ setShowModalSignup(false);
3253
3601
  },
3254
- onRegister: function onRegister() {
3255
- setShowModalRegister(false);
3602
+ onLogin: function onLogin() {
3603
+ setShowModalSignup(false);
3604
+ setShowModalLogin(true);
3256
3605
  },
3257
- onGetProfileDataSuccess: function onGetProfileDataSuccess(data) {
3258
- fetchCart();
3259
-
3260
- _onGetProfileDataSuccess(data);
3606
+ onRegisterSuccess: onRegisterSuccess,
3607
+ onRegisterError: onRegisterError
3608
+ }), showModalForgotPassword && React__default.createElement(ForgotPasswordModal, {
3609
+ onClose: function onClose() {
3610
+ setShowModalForgotPassword(false);
3611
+ },
3612
+ onLogin: function onLogin() {
3613
+ setShowModalForgotPassword(false);
3614
+ setShowModalLogin(true);
3261
3615
  },
3262
- onGetProfileDataError: onGetProfileDataError
3616
+ onForgotPasswordSuccess: onForgotPasswordSuccess,
3617
+ onForgotPasswordError: onForgotPasswordError
3263
3618
  }));
3264
3619
  };
3265
3620
 
@@ -3478,7 +3833,7 @@ var CheckoutForm = function CheckoutForm(_ref) {
3478
3833
  onSubmit: handleSubmit
3479
3834
  }, React__default.createElement("div", {
3480
3835
  className: "card_form_inner"
3481
- }, React__default.createElement("label", {
3836
+ }, React__default.createElement("div", {
3482
3837
  className: "card_number_element"
3483
3838
  }, React__default.createElement("span", {
3484
3839
  className: "card_label_text"
@@ -3488,19 +3843,21 @@ var CheckoutForm = function CheckoutForm(_ref) {
3488
3843
  onChange: _identity,
3489
3844
  onBlur: _identity,
3490
3845
  onFocus: _identity
3491
- })), React__default.createElement("label", {
3846
+ })), React__default.createElement("div", {
3847
+ className: "elements"
3848
+ }, React__default.createElement("div", {
3492
3849
  className: "expiration_element"
3493
3850
  }, React__default.createElement("span", {
3494
3851
  className: "card_label_text"
3495
3852
  }, "Expiration date"), React__default.createElement(reactStripeJs.CardExpiryElement, {
3496
3853
  options: _extends({}, options, stripeCardOptions)
3497
- })), React__default.createElement("label", {
3854
+ })), React__default.createElement("div", {
3498
3855
  className: "cvc_element"
3499
3856
  }, React__default.createElement("span", {
3500
3857
  className: "card_label_text"
3501
3858
  }, "CVC"), React__default.createElement(reactStripeJs.CardCvcElement, {
3502
3859
  options: _extends({}, options, stripeCardOptions)
3503
- })), !disableZipSection && React__default.createElement("label", {
3860
+ }))), !disableZipSection && React__default.createElement("div", {
3504
3861
  className: "zip_element"
3505
3862
  }, React__default.createElement("p", {
3506
3863
  className: "card_label_text"
@@ -3590,7 +3947,9 @@ var PaymentContainer = function PaymentContainer(_ref) {
3590
3947
  _ref$onCountdownFinis = _ref.onCountdownFinish,
3591
3948
  onCountdownFinish = _ref$onCountdownFinis === void 0 ? function () {} : _ref$onCountdownFinis,
3592
3949
  _ref$enableTimer = _ref.enableTimer,
3593
- enableTimer = _ref$enableTimer === void 0 ? false : _ref$enableTimer;
3950
+ enableTimer = _ref$enableTimer === void 0 ? false : _ref$enableTimer,
3951
+ _ref$enablePaymentPla = _ref.enablePaymentPlan,
3952
+ enablePaymentPlan = _ref$enablePaymentPla === void 0 ? false : _ref$enablePaymentPla;
3594
3953
 
3595
3954
  var _useState = React.useState(initialReviewValues),
3596
3955
  reviewData = _useState[0],
@@ -3605,16 +3964,20 @@ var PaymentContainer = function PaymentContainer(_ref) {
3605
3964
  setError = _useState3[1];
3606
3965
 
3607
3966
  var _useState4 = React.useState(false),
3608
- paymentIsLoading = _useState4[0],
3609
- setPaymentIsLoading = _useState4[1];
3967
+ showPaymentPlanSection = _useState4[0],
3968
+ setShowPaymentPlanSection = _useState4[1];
3969
+
3970
+ var _useState5 = React.useState(false),
3971
+ paymentIsLoading = _useState5[0],
3972
+ setPaymentIsLoading = _useState5[1];
3610
3973
 
3611
- var _useState5 = React.useState(true),
3612
- paymentDataIsLoading = _useState5[0],
3613
- setPaymentDataIsLoading = _useState5[1];
3974
+ var _useState6 = React.useState(true),
3975
+ paymentDataIsLoading = _useState6[0],
3976
+ setPaymentDataIsLoading = _useState6[1];
3614
3977
 
3615
- var _useState6 = React.useState([]),
3616
- conditions = _useState6[0],
3617
- setConditions = _useState6[1];
3978
+ var _useState7 = React.useState([]),
3979
+ conditions = _useState7[0],
3980
+ setConditions = _useState7[1];
3618
3981
 
3619
3982
  var showFormTitle = Boolean(formTitle);
3620
3983
  var showErrorText = Boolean(errorText);
@@ -3741,7 +4104,7 @@ var PaymentContainer = function PaymentContainer(_ref) {
3741
4104
  case 3:
3742
4105
  order_hash = reviewData.order_details.order_hash;
3743
4106
 
3744
- if (!(total === "0.00")) {
4107
+ if (!(total === '0.00')) {
3745
4108
  _context3.next = 10;
3746
4109
  break;
3747
4110
  }
@@ -3792,8 +4155,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
3792
4155
  };
3793
4156
  }();
3794
4157
 
3795
- var themeMui = styles$1.createTheme(themeOptions);
3796
- return React__default.createElement(styles$1.ThemeProvider, {
4158
+ var themeMui = styles.createTheme(themeOptions);
4159
+ return React__default.createElement(styles.ThemeProvider, {
3797
4160
  theme: themeMui
3798
4161
  }, React__default.createElement("div", {
3799
4162
  className: "payment_page"
@@ -3826,11 +4189,33 @@ var PaymentContainer = function PaymentContainer(_ref) {
3826
4189
  }, label), React__default.createElement("div", {
3827
4190
  className: className + " order_info_text"
3828
4191
  }, normalizer(orderData[id], orderData.currency)));
3829
- })), total !== "0.00" ? React__default.createElement("div", {
4192
+ })), enablePaymentPlan && React__default.createElement("div", {
4193
+ className: "payment_toggle"
4194
+ }, React__default.createElement("label", {
4195
+ htmlFor: "togBtn",
4196
+ className: "switch"
4197
+ }, React__default.createElement("input", {
4198
+ type: "checkbox",
4199
+ id: "togBtn",
4200
+ disabled: true,
4201
+ onChange: function onChange() {
4202
+ return setShowPaymentPlanSection(!showPaymentPlanSection);
4203
+ }
4204
+ }), React__default.createElement("div", {
4205
+ className: "slider round"
4206
+ }), React__default.createElement("span", {
4207
+ className: "tog_text"
4208
+ }, "Click to checkout using Payment Plan"))), showPaymentPlanSection && React__default.createElement("div", {
4209
+ className: "payment_plan"
4210
+ }, React__default.createElement("h2", null, "PAYMENT PLAN"), React__default.createElement("div", {
4211
+ className: "plan_block"
4212
+ }, React__default.createElement("h3", null, "Mbrand Payment Plan Terms"), React__default.createElement("p", null, "By clicking on the \u201CConfirm Payment Plan\u201D button, you are starting your payment plan of 2 payments of $115.00, which will be drawn from your account every 2 weeks, with the first payment taken later today."), React__default.createElement("p", null, "This includes a non-refundable admin fee of $3.00 per payment."), React__default.createElement("p", {
4213
+ className: "payment_note"
4214
+ }, "NOTE: If today\u2019s payment fails, your payment plan will not activate, and your tickets will not be issued until you complete your final payment."), React__default.createElement("p", null, "If you do not complete your payements, your order will be canceled. Your first payment of $115.00, plus the non-refundable admin fee of $3.00 will not be refunded."), React__default.createElement("p", null, "Your payment will proceed with the card ending in **** 4242."))), total !== '0.00' ? React__default.createElement("div", {
3830
4215
  className: "payment_info"
3831
4216
  }, React__default.createElement("div", {
3832
4217
  className: "payment_info_label"
3833
- }, "Please provide your payment information"), showErrorText && React__default.createElement("p", {
4218
+ }, "ORDER CONFIRMATION"), showErrorText && React__default.createElement("p", {
3834
4219
  className: "payment_info__error"
3835
4220
  }, errorText), React__default.createElement("div", null, React__default.createElement(reactStripeJs.Elements, {
3836
4221
  stripe: getStripePromise(reviewData),
@@ -3860,7 +4245,7 @@ var PaymentContainer = function PaymentContainer(_ref) {
3860
4245
  }
3861
4246
  }, paymentIsLoading ? React__default.createElement(CircularProgress, {
3862
4247
  size: 26
3863
- }) : "Complete Registration")))));
4248
+ }) : 'Complete Registration')))));
3864
4249
  };
3865
4250
 
3866
4251
  var config = {
@@ -4024,7 +4409,9 @@ var SocialButtons = function SocialButtons(_ref2) {
4024
4409
  };
4025
4410
 
4026
4411
  var ConfirmationContainer = function ConfirmationContainer(_ref) {
4027
- var isReferralEnabled = _ref.isReferralEnabled,
4412
+ var _ref$hasCopyIcon = _ref.hasCopyIcon,
4413
+ hasCopyIcon = _ref$hasCopyIcon === void 0 ? true : _ref$hasCopyIcon,
4414
+ isReferralEnabled = _ref.isReferralEnabled,
4028
4415
  showDefaultShareButtons = _ref.showDefaultShareButtons,
4029
4416
  _ref$messengerAppId = _ref.messengerAppId,
4030
4417
  messengerAppId = _ref$messengerAppId === void 0 ? '' : _ref$messengerAppId,
@@ -4123,7 +4510,16 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4123
4510
 
4124
4511
  return React__default.createElement("div", {
4125
4512
  className: "confirmation-page"
4126
- }, data && React__default.createElement(React__default.Fragment, null, React__default.createElement("p", {
4513
+ }, data && React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
4514
+ className: 'header-container'
4515
+ }, React__default.createElement("div", {
4516
+ className: 'header-product-image'
4517
+ }, React__default.createElement("img", {
4518
+ className: 'product-image',
4519
+ src: data.product_image
4520
+ })), React__default.createElement("div", {
4521
+ className: "header-product-text"
4522
+ }, React__default.createElement("p", {
4127
4523
  className: "title"
4128
4524
  }, "Your Tickets are Confirmed!"), React__default.createElement("div", {
4129
4525
  className: "share-message-section"
@@ -4131,7 +4527,7 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4131
4527
  className: "main"
4132
4528
  }, "Your tickets have been emailed to you"), React__default.createElement("span", {
4133
4529
  className: "helper"
4134
- }, "Please bring them with you to the event")), data.disable_referral === false && isReferralEnabled && React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
4530
+ }, "Please bring them with you to the event")))), data.disable_referral === false && isReferralEnabled && React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
4135
4531
  className: "referral_text_image_section"
4136
4532
  }, React__default.createElement("div", {
4137
4533
  className: "referral_text_section"
@@ -4148,6 +4544,7 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4148
4544
  }, " Invite friends "), "and we'll refund up to", React__default.createElement("span", {
4149
4545
  className: "strong-text"
4150
4546
  }, " 100% "), "of your ticket money, if they buy tickets as well!")), React__default.createElement("img", {
4547
+ className: 'body-product-image',
4151
4548
  src: data.product_image,
4152
4549
  alt: "No Data"
4153
4550
  })), React__default.createElement("div", {
@@ -4177,10 +4574,12 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4177
4574
  navigator.clipboard.writeText(_get(inputRef, 'current.value'));
4178
4575
  onLinkCopied();
4179
4576
  }
4180
- }, React__default.createElement("img", {
4577
+ }, hasCopyIcon ? React__default.createElement("img", {
4181
4578
  src: "https://img.icons8.com/office/50/000000/copy.png",
4182
4579
  alt: "copy"
4183
- })))), (showDefaultShareButtons || !!shareButtons.length) && React__default.createElement(SocialButtons, {
4580
+ }) : React__default.createElement("span", {
4581
+ className: 'copy-icon'
4582
+ }, "Copy")))), (showDefaultShareButtons || !!shareButtons.length) && React__default.createElement(SocialButtons, {
4184
4583
  showDefaultShareButtons: showDefaultShareButtons,
4185
4584
  name: data.product_name,
4186
4585
  appId: messengerAppId,
@@ -4204,141 +4603,93 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4204
4603
  }))))));
4205
4604
  };
4206
4605
 
4207
- var getTicketSelectOptions = function getTicketSelectOptions(maxCount, minCount, multiplier) {
4208
- if (maxCount === void 0) {
4209
- maxCount = 10;
4210
- }
4211
-
4212
- if (minCount === void 0) {
4213
- minCount = 1;
4214
- }
4215
-
4216
- if (multiplier === void 0) {
4217
- multiplier = 1;
4218
- }
4219
-
4220
- var options = [{
4221
- label: 0,
4222
- value: 0
4223
- }];
4224
-
4225
- for (var i = minCount; i <= Math.min(50, maxCount); i += multiplier) {
4226
- options.push({
4227
- label: i,
4228
- value: i
4229
- });
4230
- }
4231
-
4232
- return options;
4606
+ var isTimeExpired = function isTimeExpired(startDate, timezone) {
4607
+ return !moment(startDate).isAfter(moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss'));
4233
4608
  };
4234
4609
 
4235
- var TicketRow = function TicketRow(_ref) {
4236
- var ticketTier = _ref.ticketTier,
4237
- prevTicketTier = _ref.prevTicketTier,
4238
- selectedTickets = _ref.selectedTickets,
4239
- handleTicketSelect = _ref.handleTicketSelect;
4240
- var soldOutMessage = ticketTier.soldOutMessage ? ("" + ticketTier.soldOutMessage).toUpperCase() : 'SOLD OUT';
4241
- var isSalesClosed = !ticketTier.salesStarted || ticketTier.salesEnded;
4242
- var options = getTicketSelectOptions(ticketTier.maxQuantity, ticketTier.minQuantity, ticketTier.multiplier);
4243
- var ticketsClosedMessage = !ticketTier.salesStarted ? 'Sales not started' : 'Sales Ended';
4244
- var onSaleContent = isSalesClosed ? ticketsClosedMessage : React__default.createElement("div", {
4245
- className: "get-tickets"
4246
- }, React__default.createElement(Box, {
4247
- className: "get-tickets__selectbox"
4248
- }, React__default.createElement(FormControl, {
4249
- fullWidth: true
4250
- }, React__default.createElement(Select, {
4251
- sx: {
4252
- borderRadius: 0
4253
- },
4254
- value: selectedTickets[ticketTier.id] ? selectedTickets[ticketTier.id] : 0,
4255
- onChange: handleTicketSelect,
4256
- displayEmpty: true,
4257
- inputProps: {
4258
- 'aria-label': 'Without label'
4259
- },
4260
- MenuProps: {
4261
- PaperProps: {
4262
- sx: {
4263
- maxHeight: 150
4264
- },
4265
- className: 'get-tickets-paper'
4266
- }
4267
- }
4268
- }, options.map(function (option, index) {
4269
- return React__default.createElement(MenuItem, {
4270
- key: index,
4271
- value: option.value
4272
- }, option.value);
4273
- })))));
4274
- var returnValue = '';
4610
+ function Countdown(_ref) {
4611
+ var startDate = _ref.startDate,
4612
+ _ref$timezone = _ref.timezone,
4613
+ timezone = _ref$timezone === void 0 ? moment.tz.guess() : _ref$timezone,
4614
+ _ref$title = _ref.title,
4615
+ title = _ref$title === void 0 ? '' : _ref$title,
4616
+ _ref$message = _ref.message,
4617
+ message = _ref$message === void 0 ? '' : _ref$message,
4618
+ _ref$showMessage = _ref.showMessage,
4619
+ showMessage = _ref$showMessage === void 0 ? false : _ref$showMessage,
4620
+ _ref$disableLeadingZe = _ref.disableLeadingZero,
4621
+ disableLeadingZero = _ref$disableLeadingZe === void 0 ? false : _ref$disableLeadingZe,
4622
+ _ref$callback = _ref.callback,
4623
+ callback = _ref$callback === void 0 ? function () {} : _ref$callback,
4624
+ isLoggedIn = _ref.isLoggedIn;
4275
4625
 
4276
- if (ticketTier.sold_out || !ticketTier.displayTicket || ticketTier.soldOut) {
4277
- returnValue = soldOutMessage;
4278
- }
4626
+ var _useState = React.useState(''),
4627
+ duration = _useState[0],
4628
+ setDuration = _useState[1];
4279
4629
 
4280
- if (ticketTier.displayTicket) {
4281
- returnValue = onSaleContent;
4282
- }
4630
+ var _useState2 = React.useState(false),
4631
+ timeExpired = _useState2[0],
4632
+ setTimeExpired = _useState2[1];
4283
4633
 
4284
- if (_get(prevTicketTier, 'in_stock')) {
4285
- returnValue = 'SOON';
4286
- }
4634
+ React.useEffect(function () {
4635
+ setTimeExpired(isTimeExpired(startDate, timezone));
4636
+ }, []);
4637
+ React.useEffect(function () {
4638
+ var timer;
4287
4639
 
4288
- return React__default.createElement(React__default.Fragment, null, returnValue, " ");
4289
- };
4640
+ if (!timeExpired) {
4641
+ timer = setInterval(function () {
4642
+ if (isTimeExpired(startDate, timezone)) {
4643
+ clearInterval(timer);
4644
+ setTimeExpired(true);
4645
+ callback();
4646
+ return;
4647
+ }
4290
4648
 
4291
- var TicketsSection = function TicketsSection(_ref) {
4292
- var ticketsList = _ref.ticketsList,
4293
- selectedTickets = _ref.selectedTickets,
4294
- handleTicketSelect = _ref.handleTicketSelect,
4295
- codeIsApplied = _ref.codeIsApplied,
4296
- sortBySoldOut = _ref.sortBySoldOut,
4297
- ticketsHeaderComponent = _ref.ticketsHeaderComponent,
4298
- hideTicketsHeader = _ref.hideTicketsHeader;
4299
- var sortedTicketsList = sortBySoldOut ? _sortBy(_sortBy(ticketsList, 'sortOrder'), 'soldOut') : _sortBy(ticketsList, 'sortOrder');
4300
- return React__default.createElement(React__default.Fragment, null, !hideTicketsHeader && ticketsHeaderComponent, sortedTicketsList.map(function (ticket, i, arr) {
4301
- var isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut;
4649
+ var currentDate = moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss');
4650
+ var diffTime = moment(startDate).diff(currentDate);
4651
+ var duration = moment.duration(diffTime);
4652
+ var dateArr = {
4653
+ year: duration.years(),
4654
+ month: duration.months(),
4655
+ day: duration.days(),
4656
+ hour: duration.hours(),
4657
+ minute: duration.minutes(),
4658
+ second: duration.seconds()
4659
+ };
4660
+ var timeLeft = '';
4302
4661
 
4303
- var ticketSelect = function ticketSelect(event) {
4304
- var value = event.target.value;
4305
- handleTicketSelect(ticket.id, value);
4306
- };
4662
+ for (var date in dateArr) {
4663
+ var unit = dateArr[date] === 1 ? date : date + 's';
4664
+ var val = dateArr[date];
4307
4665
 
4308
- var ticketIsDiscounted = false;
4666
+ if (!disableLeadingZero && String(dateArr[date]).length === 1) {
4667
+ val = '0' + dateArr[date];
4668
+ }
4309
4669
 
4310
- if (ticket.oldPrice && codeIsApplied && !isSoldOut && ticket.oldPrice !== ticket.price) {
4311
- ticketIsDiscounted = true;
4670
+ if (timeLeft) {
4671
+ timeLeft += ", " + val + " " + unit;
4672
+ } else if (dateArr[date]) {
4673
+ timeLeft += val + " " + unit;
4674
+ }
4675
+ }
4676
+
4677
+ setDuration(timeLeft);
4678
+ }, 1000);
4312
4679
  }
4313
4680
 
4314
- var ticketIsFree = +ticket.price === 0;
4315
- var ticketPrice = isSoldOut ? 'SOLD OUT' : ticketIsFree ? 'FREE' : "$ " + (+ticket.price).toFixed(2);
4316
- return React__default.createElement("div", {
4317
- key: ticket.id || ticket.name,
4318
- className: "event-detail__tier " + (isSoldOut ? 'disabled' : '')
4319
- }, React__default.createElement("div", {
4320
- className: "event-detail__tier-name"
4321
- }, ticket.displayName || ticket.name), React__default.createElement("div", {
4322
- className: "event-tickets-container"
4323
- }, React__default.createElement("div", {
4324
- className: "event-detail__tier-price"
4325
- }, ticketIsDiscounted && React__default.createElement("p", {
4326
- className: "old-price"
4327
- }, "$ ", (+ticket.oldPrice).toFixed(2)), React__default.createElement("p", null, ticketPrice), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
4328
- className: "fees"
4329
- }, ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)')), React__default.createElement("div", {
4330
- className: "event-detail__tier-state",
4331
- style: {
4332
- minWidth: 55
4333
- }
4334
- }, React__default.createElement(TicketRow, {
4335
- ticketTier: ticket,
4336
- prevTicketTier: arr[i - 1],
4337
- selectedTickets: selectedTickets,
4338
- handleTicketSelect: ticketSelect
4339
- }))));
4340
- }));
4341
- };
4681
+ return function () {
4682
+ clearInterval(timer);
4683
+ };
4684
+ }, [timeExpired]);
4685
+ return React__default.createElement(React__default.Fragment, null, !timeExpired && duration && React__default.createElement("div", {
4686
+ className: "countdown " + (!isLoggedIn ? 'countdown-on-bottom' : '')
4687
+ }, React__default.createElement("div", null, React__default.createElement("p", {
4688
+ className: 'title'
4689
+ }, title), React__default.createElement("p", null, duration)), showMessage && React__default.createElement("p", {
4690
+ className: 'message'
4691
+ }, message)));
4692
+ }
4342
4693
 
4343
4694
  var generateQuantity = function generateQuantity(n) {
4344
4695
  var quantityList = [];
@@ -4504,13 +4855,46 @@ var WaitingList = function WaitingList(_ref) {
4504
4855
  }) : 'ADD TO WAITING LIST')))));
4505
4856
  };
4506
4857
 
4858
+ var AccessCodeSection = function AccessCodeSection(_ref) {
4859
+ var code = _ref.code,
4860
+ setCode = _ref.setCode,
4861
+ updateTickets = _ref.updateTickets;
4862
+ var isAccessCodeHasValue = !!code.trim();
4863
+ return React__default.createElement("div", {
4864
+ className: "access-code-block"
4865
+ }, React__default.createElement("div", {
4866
+ className: "access-code-block"
4867
+ }, React__default.createElement("p", {
4868
+ className: "access-code-text"
4869
+ }, "Access code required")), React__default.createElement("input", {
4870
+ className: "access-code-input",
4871
+ placeholder: "",
4872
+ onChange: function onChange(e) {
4873
+ setCode(e.target.value);
4874
+ },
4875
+ onKeyPress: function onKeyPress(event) {
4876
+ if (event.key === 'Enter' && isAccessCodeHasValue) {
4877
+ updateTickets(true);
4878
+ }
4879
+ }
4880
+ }), React__default.createElement(Button$1, {
4881
+ className: "access-submit-button",
4882
+ onClick: function onClick() {
4883
+ if (isAccessCodeHasValue) {
4884
+ updateTickets(true);
4885
+ }
4886
+ }
4887
+ }, "ENTER"));
4888
+ };
4889
+
4507
4890
  var PromoCodeSection = function PromoCodeSection(_ref) {
4508
4891
  var code = _ref.code,
4509
4892
  codeIsApplied = _ref.codeIsApplied,
4510
4893
  showPromoInput = _ref.showPromoInput,
4511
4894
  setCode = _ref.setCode,
4512
4895
  setShowPromoInput = _ref.setShowPromoInput,
4513
- updateTickets = _ref.updateTickets;
4896
+ updateTickets = _ref.updateTickets,
4897
+ setCodeIsApplied = _ref.setCodeIsApplied;
4514
4898
  var isPromoCodeHasValue = !!code.trim();
4515
4899
 
4516
4900
  var renderInputField = function renderInputField() {
@@ -4529,7 +4913,7 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
4529
4913
  onKeyPress: function onKeyPress(event) {
4530
4914
  if (event.key === 'Enter' && isPromoCodeHasValue) {
4531
4915
  setShowPromoInput(false);
4532
- updateTickets(true);
4916
+ updateTickets(true, 'promo');
4533
4917
  }
4534
4918
  }
4535
4919
  }), React__default.createElement(Button$1, {
@@ -4537,7 +4921,7 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
4537
4921
  onClick: function onClick() {
4538
4922
  if (isPromoCodeHasValue) {
4539
4923
  setShowPromoInput(false);
4540
- updateTickets(true);
4924
+ updateTickets(true, 'promo');
4541
4925
  }
4542
4926
  }
4543
4927
  }, "APPLY"));
@@ -4556,129 +4940,12 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
4556
4940
  className: "promo-code-button",
4557
4941
  placeholder: "Promo Codes",
4558
4942
  onClick: function onClick() {
4943
+ setCodeIsApplied(false);
4559
4944
  setShowPromoInput(true);
4560
4945
  }
4561
4946
  }, "Got a promo code? Click here"), showPromoInput && renderInputField());
4562
4947
  };
4563
4948
 
4564
- var AccessCodeSection = function AccessCodeSection(_ref) {
4565
- var code = _ref.code,
4566
- setCode = _ref.setCode,
4567
- updateTickets = _ref.updateTickets;
4568
- var isAccessCodeHasValue = !!code.trim();
4569
- return React__default.createElement("div", {
4570
- className: "access-code-block"
4571
- }, React__default.createElement("div", {
4572
- className: "access-code-block"
4573
- }, React__default.createElement("p", {
4574
- className: "access-code-text"
4575
- }, "Access code required")), React__default.createElement("input", {
4576
- className: "access-code-input",
4577
- placeholder: "",
4578
- onChange: function onChange(e) {
4579
- setCode(e.target.value);
4580
- },
4581
- onKeyPress: function onKeyPress(event) {
4582
- if (event.key === 'Enter' && isAccessCodeHasValue) {
4583
- updateTickets(true);
4584
- }
4585
- }
4586
- }), React__default.createElement(Button$1, {
4587
- className: "access-submit-button",
4588
- onClick: function onClick() {
4589
- if (isAccessCodeHasValue) {
4590
- updateTickets(true);
4591
- }
4592
- }
4593
- }, "ENTER"));
4594
- };
4595
-
4596
- var isTimeExpired = function isTimeExpired(startDate, timezone) {
4597
- return !moment(startDate).isAfter(moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss'));
4598
- };
4599
-
4600
- function Countdown(_ref) {
4601
- var startDate = _ref.startDate,
4602
- _ref$timezone = _ref.timezone,
4603
- timezone = _ref$timezone === void 0 ? moment.tz.guess() : _ref$timezone,
4604
- _ref$title = _ref.title,
4605
- title = _ref$title === void 0 ? '' : _ref$title,
4606
- _ref$message = _ref.message,
4607
- message = _ref$message === void 0 ? '' : _ref$message,
4608
- _ref$disableLeadingZe = _ref.disableLeadingZero,
4609
- disableLeadingZero = _ref$disableLeadingZe === void 0 ? false : _ref$disableLeadingZe,
4610
- _ref$callback = _ref.callback,
4611
- callback = _ref$callback === void 0 ? function () {} : _ref$callback,
4612
- isLoggedIn = _ref.isLoggedIn;
4613
-
4614
- var _useState = React.useState(''),
4615
- duration = _useState[0],
4616
- setDuration = _useState[1];
4617
-
4618
- var _useState2 = React.useState(false),
4619
- timeExpired = _useState2[0],
4620
- setTimeExpired = _useState2[1];
4621
-
4622
- React.useEffect(function () {
4623
- setTimeExpired(isTimeExpired(startDate, timezone));
4624
- }, []);
4625
- React.useEffect(function () {
4626
- var timer;
4627
-
4628
- if (!timeExpired) {
4629
- timer = setInterval(function () {
4630
- if (isTimeExpired(startDate, timezone)) {
4631
- clearInterval(timer);
4632
- setTimeExpired(true);
4633
- callback();
4634
- return;
4635
- }
4636
-
4637
- var currentDate = moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss');
4638
- var diffTime = moment(startDate).diff(currentDate);
4639
- var duration = moment.duration(diffTime);
4640
- var dateArr = {
4641
- year: duration.years(),
4642
- month: duration.months(),
4643
- day: duration.days(),
4644
- hour: duration.hours(),
4645
- minute: duration.minutes(),
4646
- second: duration.seconds()
4647
- };
4648
- var timeLeft = '';
4649
-
4650
- for (var date in dateArr) {
4651
- var unit = dateArr[date] === 1 ? date : date + 's';
4652
- var val = dateArr[date];
4653
-
4654
- if (!disableLeadingZero && String(dateArr[date]).length === 1) {
4655
- val = '0' + dateArr[date];
4656
- }
4657
-
4658
- if (timeLeft) {
4659
- timeLeft += ", " + val + " " + unit;
4660
- } else if (dateArr[date]) {
4661
- timeLeft += val + " " + unit;
4662
- }
4663
- }
4664
-
4665
- setDuration(timeLeft);
4666
- }, 1000);
4667
- }
4668
-
4669
- return function () {
4670
- clearInterval(timer);
4671
- };
4672
- }, [timeExpired]);
4673
- return React__default.createElement(React__default.Fragment, null, !timeExpired && duration && React__default.createElement("div", {
4674
- className: "countdown " + (!isLoggedIn ? 'countdown-on-bottom' : '')
4675
- }, React__default.createElement("div", null, React__default.createElement("p", {
4676
- className: 'title'
4677
- }, title), React__default.createElement("p", null, duration)), React__default.createElement("p", {
4678
- className: 'message'
4679
- }, message)));
4680
- }
4681
-
4682
4949
  var ReferralLogic = function ReferralLogic(props) {
4683
4950
  var eventId = props.eventId;
4684
4951
  var isWindowDefined = typeof window !== 'undefined';
@@ -4716,9 +4983,144 @@ var ReferralLogic = function ReferralLogic(props) {
4716
4983
  }, _callee, null, [[0, 6]]);
4717
4984
  }))();
4718
4985
  }
4719
- }
4720
- }, []);
4721
- return null;
4986
+ }
4987
+ }, []);
4988
+ return null;
4989
+ };
4990
+
4991
+ var getTicketSelectOptions = function getTicketSelectOptions(maxCount, minCount, multiplier) {
4992
+ if (maxCount === void 0) {
4993
+ maxCount = 10;
4994
+ }
4995
+
4996
+ if (minCount === void 0) {
4997
+ minCount = 1;
4998
+ }
4999
+
5000
+ if (multiplier === void 0) {
5001
+ multiplier = 1;
5002
+ }
5003
+
5004
+ var options = [{
5005
+ label: 0,
5006
+ value: 0
5007
+ }];
5008
+
5009
+ for (var i = minCount; i <= Math.min(50, maxCount); i += multiplier) {
5010
+ options.push({
5011
+ label: i,
5012
+ value: i
5013
+ });
5014
+ }
5015
+
5016
+ return options;
5017
+ };
5018
+
5019
+ var TicketRow = function TicketRow(_ref) {
5020
+ var ticketTier = _ref.ticketTier,
5021
+ prevTicketTier = _ref.prevTicketTier,
5022
+ selectedTickets = _ref.selectedTickets,
5023
+ handleTicketSelect = _ref.handleTicketSelect;
5024
+ var soldOutMessage = ticketTier.soldOutMessage ? ("" + ticketTier.soldOutMessage).toUpperCase() : 'SOLD OUT';
5025
+ var isSalesClosed = !ticketTier.salesStarted || ticketTier.salesEnded;
5026
+ var options = getTicketSelectOptions(ticketTier.maxQuantity, ticketTier.minQuantity, ticketTier.multiplier);
5027
+ var ticketsClosedMessage = !ticketTier.salesStarted ? 'Sales not started' : 'Sales Ended';
5028
+ var onSaleContent = React__default.createElement("div", {
5029
+ className: "get-tickets"
5030
+ }, React__default.createElement(Box, {
5031
+ className: "get-tickets__selectbox"
5032
+ }, React__default.createElement(FormControl, {
5033
+ fullWidth: true
5034
+ }, React__default.createElement(Select, {
5035
+ sx: {
5036
+ borderRadius: 0
5037
+ },
5038
+ value: selectedTickets[ticketTier.id] ? selectedTickets[ticketTier.id] : 0,
5039
+ onChange: handleTicketSelect,
5040
+ displayEmpty: true,
5041
+ inputProps: {
5042
+ 'aria-label': 'Without label'
5043
+ },
5044
+ MenuProps: {
5045
+ PaperProps: {
5046
+ sx: {
5047
+ maxHeight: 150
5048
+ },
5049
+ className: 'get-tickets-paper'
5050
+ }
5051
+ }
5052
+ }, options.map(function (option, index) {
5053
+ return React__default.createElement(MenuItem, {
5054
+ key: index,
5055
+ value: option.value
5056
+ }, option.value);
5057
+ })))));
5058
+ var returnValue = ''; // ticketTier.soldOut === false --> means that ticket is in the stock
5059
+
5060
+ var isSoldOut = ticketTier.sold_out || !ticketTier.displayTicket || ticketTier.soldOut || ticketTier.soldOut === false;
5061
+
5062
+ if (isSoldOut) {
5063
+ returnValue = soldOutMessage;
5064
+ } else if (isSalesClosed) {
5065
+ returnValue = ticketsClosedMessage;
5066
+ } else if (ticketTier.displayTicket && ticketTier.maxQuantity) {
5067
+ returnValue = onSaleContent;
5068
+ } else if (_get(prevTicketTier, 'in_stock')) {
5069
+ returnValue = 'SOON';
5070
+ }
5071
+
5072
+ return React__default.createElement(React__default.Fragment, null, returnValue, " ");
5073
+ };
5074
+
5075
+ var TicketsSection = function TicketsSection(_ref) {
5076
+ var ticketsList = _ref.ticketsList,
5077
+ selectedTickets = _ref.selectedTickets,
5078
+ handleTicketSelect = _ref.handleTicketSelect,
5079
+ sortBySoldOut = _ref.sortBySoldOut,
5080
+ ticketsHeaderComponent = _ref.ticketsHeaderComponent,
5081
+ hideTicketsHeader = _ref.hideTicketsHeader;
5082
+ var sortedTicketsList = sortBySoldOut ? _sortBy(_sortBy(ticketsList, 'sortOrder'), 'soldOut') : _sortBy(ticketsList, 'sortOrder');
5083
+ return React__default.createElement(React__default.Fragment, null, !hideTicketsHeader && ticketsHeaderComponent, sortedTicketsList.map(function (ticket, i, arr) {
5084
+ var isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut;
5085
+
5086
+ var ticketSelect = function ticketSelect(event) {
5087
+ var value = event.target.value;
5088
+ handleTicketSelect(ticket.id, value);
5089
+ };
5090
+
5091
+ var ticketIsDiscounted = false;
5092
+
5093
+ if (ticket.oldPrice && !isSoldOut && ticket.oldPrice !== ticket.price) {
5094
+ ticketIsDiscounted = true;
5095
+ }
5096
+
5097
+ var ticketIsFree = +ticket.price === 0;
5098
+ var ticketPrice = isSoldOut ? 'SOLD OUT' : ticketIsFree ? 'FREE' : "$ " + (+ticket.price).toFixed(2);
5099
+ return React__default.createElement("div", {
5100
+ key: ticket.id || ticket.name,
5101
+ className: "event-detail__tier " + (isSoldOut ? 'disabled' : '')
5102
+ }, React__default.createElement("div", {
5103
+ className: "event-detail__tier-name"
5104
+ }, ticket.displayName || ticket.name), React__default.createElement("div", {
5105
+ className: "event-tickets-container"
5106
+ }, React__default.createElement("div", {
5107
+ className: "event-detail__tier-price"
5108
+ }, ticketIsDiscounted && React__default.createElement("p", {
5109
+ className: "old-price"
5110
+ }, "$ ", (+ticket.oldPrice).toFixed(2)), React__default.createElement("p", null, ticketPrice), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
5111
+ className: "fees"
5112
+ }, ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)')), React__default.createElement("div", {
5113
+ className: "event-detail__tier-state",
5114
+ style: {
5115
+ minWidth: 55
5116
+ }
5117
+ }, React__default.createElement(TicketRow, {
5118
+ ticketTier: ticket,
5119
+ prevTicketTier: arr[i - 1],
5120
+ selectedTickets: selectedTickets,
5121
+ handleTicketSelect: ticketSelect
5122
+ }))));
5123
+ }));
4722
5124
  };
4723
5125
 
4724
5126
  var TicketsContainer = function TicketsContainer(_ref) {
@@ -4734,6 +5136,10 @@ var TicketsContainer = function TicketsContainer(_ref) {
4734
5136
  onGetTicketsSuccess = _ref$onGetTicketsSucc === void 0 ? function () {} : _ref$onGetTicketsSucc,
4735
5137
  _ref$onGetTicketsErro = _ref.onGetTicketsError,
4736
5138
  onGetTicketsError = _ref$onGetTicketsErro === void 0 ? function () {} : _ref$onGetTicketsErro,
5139
+ _ref$onLogoutSuccess = _ref.onLogoutSuccess,
5140
+ onLogoutSuccess = _ref$onLogoutSuccess === void 0 ? function () {} : _ref$onLogoutSuccess,
5141
+ _ref$onLogoutError = _ref.onLogoutError,
5142
+ onLogoutError = _ref$onLogoutError === void 0 ? function () {} : _ref$onLogoutError,
4737
5143
  _ref$theme = _ref.theme,
4738
5144
  theme = _ref$theme === void 0 ? 'light' : _ref$theme,
4739
5145
  _ref$queryPromoCode = _ref.queryPromoCode,
@@ -4747,6 +5153,8 @@ var TicketsContainer = function TicketsContainer(_ref) {
4747
5153
  hideSessionButtons = _ref$hideSessionButto === void 0 ? false : _ref$hideSessionButto,
4748
5154
  _ref$hideWaitingList = _ref.hideWaitingList,
4749
5155
  hideWaitingList = _ref$hideWaitingList === void 0 ? false : _ref$hideWaitingList,
5156
+ _ref$enableBillingInf = _ref.enableBillingInfoAutoCreate,
5157
+ enableBillingInfoAutoCreate = _ref$enableBillingInf === void 0 ? true : _ref$enableBillingInf,
4750
5158
  _ref$isButtonScrollab = _ref.isButtonScrollable,
4751
5159
  isButtonScrollable = _ref$isButtonScrollab === void 0 ? false : _ref$isButtonScrollab,
4752
5160
  _ref$sortBySoldOut = _ref.sortBySoldOut,
@@ -4758,15 +5166,18 @@ var TicketsContainer = function TicketsContainer(_ref) {
4758
5166
  ActionsSectionComponent = _ref.actionsSectionComponent,
4759
5167
  ticketsHeaderComponent = _ref.ticketsHeaderComponent,
4760
5168
  _ref$hideTicketsHeade = _ref.hideTicketsHeader,
4761
- hideTicketsHeader = _ref$hideTicketsHeade === void 0 ? false : _ref$hideTicketsHeade;
5169
+ hideTicketsHeader = _ref$hideTicketsHeade === void 0 ? false : _ref$hideTicketsHeade,
5170
+ _ref$enableInfluencer = _ref.enableInfluencersSection,
5171
+ enableInfluencersSection = _ref$enableInfluencer === void 0 ? true : _ref$enableInfluencer;
4762
5172
 
4763
5173
  var _useState = React.useState({}),
4764
5174
  selectedTickets = _useState[0],
4765
5175
  setSelectedTickets = _useState[1];
4766
5176
 
4767
5177
  var isWindowDefined = typeof window !== 'undefined';
5178
+ var xtfCookie = getCookieByName('X-TF-ECOMMERCE');
4768
5179
 
4769
- var _useState2 = React.useState(isWindowDefined ? !!window.localStorage.getItem('access_token') : false),
5180
+ var _useState2 = React.useState((isWindowDefined ? !!window.localStorage.getItem('access_token') : false) || !!xtfCookie),
4770
5181
  isLogged = _useState2[0],
4771
5182
  setIsLogged = _useState2[1];
4772
5183
 
@@ -4837,17 +5248,50 @@ var TicketsContainer = function TicketsContainer(_ref) {
4837
5248
  !!eventId && getTicketsApi();
4838
5249
  }, [eventId]);
4839
5250
 
4840
- var handleLogout = function handleLogout() {
4841
- if (isWindowDefined) {
4842
- window.localStorage.removeItem('access_token');
4843
- window.localStorage.removeItem('user_data');
4844
- setIsLogged(false);
5251
+ var handleLogout = /*#__PURE__*/function () {
5252
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
5253
+ var _event;
5254
+
5255
+ return runtime_1.wrap(function _callee$(_context) {
5256
+ while (1) {
5257
+ switch (_context.prev = _context.next) {
5258
+ case 0:
5259
+ _context.prev = 0;
5260
+ _context.next = 3;
5261
+ return logout();
4845
5262
 
4846
- var _event = new window.CustomEvent('tf-logout');
5263
+ case 3:
5264
+ onLogoutSuccess();
5265
+
5266
+ if (isWindowDefined) {
5267
+ window.localStorage.removeItem('access_token');
5268
+ window.localStorage.removeItem('user_data');
5269
+ setIsLogged(false);
5270
+ _event = new window.CustomEvent('tf-logout');
5271
+ deleteCookieByName('X-TF-ECOMMERCE');
5272
+ window.document.dispatchEvent(_event);
5273
+ }
4847
5274
 
4848
- window.document.dispatchEvent(_event);
4849
- }
4850
- };
5275
+ _context.next = 10;
5276
+ break;
5277
+
5278
+ case 7:
5279
+ _context.prev = 7;
5280
+ _context.t0 = _context["catch"](0);
5281
+ onLogoutError(_context.t0);
5282
+
5283
+ case 10:
5284
+ case "end":
5285
+ return _context.stop();
5286
+ }
5287
+ }
5288
+ }, _callee, null, [[0, 7]]);
5289
+ }));
5290
+
5291
+ return function handleLogout() {
5292
+ return _ref2.apply(this, arguments);
5293
+ };
5294
+ }();
4851
5295
 
4852
5296
  React.useEffect(function () {
4853
5297
  try {
@@ -4856,7 +5300,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
4856
5300
 
4857
5301
  if (userData.country === '') {
4858
5302
  handleLogout();
4859
- window.open("https://www.ticketfairy.com/account/change_information?need_country=true");
5303
+ window.open('https://www.ticketfairy.com/account/change_information?need_country=true');
4860
5304
  }
4861
5305
  }
4862
5306
  } catch (e) {}
@@ -4879,34 +5323,34 @@ var TicketsContainer = function TicketsContainer(_ref) {
4879
5323
  }
4880
5324
  };
4881
5325
 
4882
- function getTicketsApi(_x) {
5326
+ function getTicketsApi(_x, _x2) {
4883
5327
  return _getTicketsApi.apply(this, arguments);
4884
5328
  }
4885
5329
 
4886
5330
  function _getTicketsApi() {
4887
- _getTicketsApi = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(isUpdateingCode) {
5331
+ _getTicketsApi = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee3(isUpdateingCode, type) {
4888
5332
  var response, eventResponse, attributes, _event2;
4889
5333
 
4890
- return runtime_1.wrap(function _callee2$(_context2) {
5334
+ return runtime_1.wrap(function _callee3$(_context3) {
4891
5335
  while (1) {
4892
- switch (_context2.prev = _context2.next) {
5336
+ switch (_context3.prev = _context3.next) {
4893
5337
  case 0:
4894
- _context2.prev = 0;
5338
+ _context3.prev = 0;
4895
5339
  isUpdateingCode ? setCodeIsLoading(true) : setIsLoading(true);
4896
- _context2.next = 4;
5340
+ _context3.next = 4;
4897
5341
  return getTickets(eventId, code);
4898
5342
 
4899
5343
  case 4:
4900
- response = _context2.sent;
4901
- _context2.next = 7;
5344
+ response = _context3.sent;
5345
+ _context3.next = 7;
4902
5346
  return getEvent(eventId);
4903
5347
 
4904
5348
  case 7:
4905
- eventResponse = _context2.sent;
5349
+ eventResponse = _context3.sent;
4906
5350
 
4907
5351
  if (response.data.success) {
4908
5352
  attributes = _get(response, 'data.data.attributes');
4909
- setCodeIsApplied(attributes.ValidPromoCode);
5353
+ type === 'promo' && setCodeIsApplied(attributes.ValidPromoCode);
4910
5354
  setTickets(_get(attributes, 'tickets'));
4911
5355
  setShowWaitingList(attributes.showWaitingList);
4912
5356
  onGetTicketsSuccess(response.data);
@@ -4920,42 +5364,42 @@ var TicketsContainer = function TicketsContainer(_ref) {
4920
5364
  setEvent(_event2);
4921
5365
  }
4922
5366
 
4923
- _context2.next = 15;
5367
+ _context3.next = 15;
4924
5368
  break;
4925
5369
 
4926
5370
  case 12:
4927
- _context2.prev = 12;
4928
- _context2.t0 = _context2["catch"](0);
5371
+ _context3.prev = 12;
5372
+ _context3.t0 = _context3["catch"](0);
4929
5373
 
4930
- if (axios.isAxiosError(_context2.t0)) {
4931
- onGetTicketsError(_context2.t0);
5374
+ if (axios.isAxiosError(_context3.t0)) {
5375
+ onGetTicketsError(_context3.t0);
4932
5376
  }
4933
5377
 
4934
5378
  case 15:
4935
- _context2.prev = 15;
5379
+ _context3.prev = 15;
4936
5380
  setIsLoading(false);
4937
5381
  setCodeIsLoading(false);
4938
- return _context2.finish(15);
5382
+ return _context3.finish(15);
4939
5383
 
4940
5384
  case 19:
4941
5385
  case "end":
4942
- return _context2.stop();
5386
+ return _context3.stop();
4943
5387
  }
4944
5388
  }
4945
- }, _callee2, null, [[0, 12, 15, 19]]);
5389
+ }, _callee3, null, [[0, 12, 15, 19]]);
4946
5390
  }));
4947
5391
  return _getTicketsApi.apply(this, arguments);
4948
5392
  }
4949
5393
 
4950
5394
  var handleTicketSelect = function handleTicketSelect(key, value) {
4951
5395
  setSelectedTickets(function (prevState) {
4952
- var _ref2;
5396
+ var _ref3;
4953
5397
 
4954
5398
  if (Object.keys(prevState)[0] !== key && !value) {
4955
5399
  return prevState;
4956
5400
  }
4957
5401
 
4958
- return _ref2 = {}, _ref2[key] = value, _ref2;
5402
+ return _ref3 = {}, _ref3[key] = value, _ref3;
4959
5403
  });
4960
5404
  };
4961
5405
 
@@ -4966,14 +5410,14 @@ var TicketsContainer = function TicketsContainer(_ref) {
4966
5410
  };
4967
5411
 
4968
5412
  var handleBook = /*#__PURE__*/function () {
4969
- var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
5413
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
4970
5414
  var _product_options, _product_options2, _ticket_types;
4971
5415
 
4972
5416
  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;
4973
5417
 
4974
- return runtime_1.wrap(function _callee$(_context) {
5418
+ return runtime_1.wrap(function _callee2$(_context2) {
4975
5419
  while (1) {
4976
- switch (_context.prev = _context.next) {
5420
+ switch (_context2.prev = _context2.next) {
4977
5421
  case 0:
4978
5422
  setHandleBookIsLoading(true);
4979
5423
  ticket = _find(tickets, function (item) {
@@ -4994,15 +5438,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
4994
5438
  }, _ticket_types)
4995
5439
  }
4996
5440
  };
4997
- _context.prev = 6;
4998
- _context.next = 9;
5441
+ _context2.prev = 6;
5442
+ _context2.next = 9;
4999
5443
  return addToCart(eventId, data);
5000
5444
 
5001
5445
  case 9:
5002
- result = _context.sent;
5446
+ result = _context2.sent;
5003
5447
 
5004
5448
  if (!(result.status === 200)) {
5005
- _context.next = 28;
5449
+ _context2.next = 33;
5006
5450
  break;
5007
5451
  }
5008
5452
 
@@ -5014,7 +5458,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5014
5458
  total = '';
5015
5459
 
5016
5460
  if (!skipBillingPage) {
5017
- _context.next = 27;
5461
+ _context2.next = 32;
5018
5462
  break;
5019
5463
  }
5020
5464
 
@@ -5023,15 +5467,29 @@ var TicketsContainer = function TicketsContainer(_ref) {
5023
5467
  userData = _isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
5024
5468
  access_token = _isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
5025
5469
  checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketQuantity, userData);
5026
- _context.next = 24;
5470
+
5471
+ if (!enableBillingInfoAutoCreate) {
5472
+ _context2.next = 28;
5473
+ break;
5474
+ }
5475
+
5476
+ _context2.next = 25;
5027
5477
  return postOnCheckout(checkoutBody, access_token);
5028
5478
 
5029
- case 24:
5030
- checkoutResult = _context.sent;
5479
+ case 25:
5480
+ _context2.t0 = _context2.sent;
5481
+ _context2.next = 29;
5482
+ break;
5483
+
5484
+ case 28:
5485
+ _context2.t0 = null;
5486
+
5487
+ case 29:
5488
+ checkoutResult = _context2.t0;
5031
5489
  hash = _get(checkoutResult, 'data.data.attributes.hash');
5032
5490
  total = _get(checkoutResult, 'data.data.attributes.total');
5033
5491
 
5034
- case 27:
5492
+ case 32:
5035
5493
  onAddToCartSuccess({
5036
5494
  skip_billing_page: skipBillingPage,
5037
5495
  names_required: nameIsRequired,
@@ -5042,44 +5500,46 @@ var TicketsContainer = function TicketsContainer(_ref) {
5042
5500
  total: total
5043
5501
  });
5044
5502
 
5045
- case 28:
5046
- _context.next = 33;
5503
+ case 33:
5504
+ _context2.next = 38;
5047
5505
  break;
5048
5506
 
5049
- case 30:
5050
- _context.prev = 30;
5051
- _context.t0 = _context["catch"](6);
5507
+ case 35:
5508
+ _context2.prev = 35;
5509
+ _context2.t1 = _context2["catch"](6);
5052
5510
 
5053
- if (axios.isAxiosError(_context.t0)) {
5054
- onAddToCartError(_context.t0);
5511
+ if (axios.isAxiosError(_context2.t1)) {
5512
+ onAddToCartError(_context2.t1);
5055
5513
  }
5056
5514
 
5057
- case 33:
5058
- _context.prev = 33;
5515
+ case 38:
5516
+ _context2.prev = 38;
5059
5517
  setHandleBookIsLoading(false);
5060
- return _context.finish(33);
5518
+ return _context2.finish(38);
5061
5519
 
5062
- case 36:
5520
+ case 41:
5063
5521
  case "end":
5064
- return _context.stop();
5522
+ return _context2.stop();
5065
5523
  }
5066
5524
  }
5067
- }, _callee, null, [[6, 30, 33, 36]]);
5525
+ }, _callee2, null, [[6, 35, 38, 41]]);
5068
5526
  }));
5069
5527
 
5070
5528
  return function handleBook() {
5071
- return _ref3.apply(this, arguments);
5529
+ return _ref4.apply(this, arguments);
5072
5530
  };
5073
5531
  }();
5074
5532
 
5075
- var updateTickets = function updateTickets(isUpdateingCode) {
5076
- getTicketsApi(isUpdateingCode);
5533
+ var updateTickets = function updateTickets(isUpdateingCode, type) {
5534
+ getTicketsApi(isUpdateingCode, type);
5077
5535
  };
5078
5536
 
5079
5537
  var isTicketOnSale = _some(tickets, function (item) {
5080
5538
  return item.salesStarted && !item.salesEnded && !item.soldOut;
5081
5539
  });
5082
5540
 
5541
+ var eventHasTickets = !_isEmpty(tickets);
5542
+ var isSalesClosed = event == null ? void 0 : event.salesEnded;
5083
5543
  var themeMui = material.createTheme(themeOptions);
5084
5544
  React.useEffect(function () {
5085
5545
  isWindowDefined && window.document.addEventListener('custom-logout', handleLogout);
@@ -5115,6 +5575,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5115
5575
  }) : null;
5116
5576
  var externalUrl = event == null ? void 0 : event.redirectUrl;
5117
5577
  var eventSaleIsNotStarted = !(event != null && event.salesStarted) && (event == null ? void 0 : event.salesStart);
5578
+ var influencers = event != null && event.referralsEnabled ? event == null ? void 0 : event.referrals : [];
5118
5579
  return React__default.createElement(privateTheming.ThemeProvider, {
5119
5580
  theme: themeMui
5120
5581
  }, !isLoading && React__default.createElement(ReferralLogic, {
@@ -5124,34 +5585,35 @@ var TicketsContainer = function TicketsContainer(_ref) {
5124
5585
  style: contentStyle
5125
5586
  }, isLoading ? React__default.createElement(Loader, null) : React__default.createElement("div", {
5126
5587
  ref: ticketsContainerRef
5127
- }, React__default.createElement(TicketsSection, {
5588
+ }, !isSalesClosed && React__default.createElement(TicketsSection, {
5128
5589
  ticketsList: tickets,
5129
5590
  selectedTickets: selectedTickets,
5130
5591
  handleTicketSelect: handleTicketSelect,
5131
- codeIsApplied: codeIsApplied,
5132
5592
  sortBySoldOut: sortBySoldOut,
5133
5593
  ticketsHeaderComponent: ticketsHeaderComponent,
5134
5594
  hideTicketsHeader: hideTicketsHeader || _isEmpty(tickets)
5135
- }), externalUrl ? null : event != null && event.salesEnded ? React__default.createElement("p", {
5595
+ }), externalUrl ? null : isSalesClosed ? React__default.createElement("p", {
5136
5596
  className: "event-closed-message " + (!isLoggedIn ? 'event-closed-on-bottom' : '')
5137
5597
  }, "Sales for this event are closed.") : eventSaleIsNotStarted ? React__default.createElement(Countdown, {
5138
5598
  startDate: event.salesStart,
5139
5599
  timezone: event.timezone,
5140
5600
  title: "Sales start in:",
5141
5601
  message: "No tickets are currently available for this event.",
5602
+ showMessage: !eventHasTickets,
5142
5603
  callback: updateTickets,
5143
5604
  disableLeadingZero: disableCountdownLeadingZero,
5144
5605
  isLoggedIn: isLoggedIn
5145
5606
  }) : null, showWaitingList && event.salesStarted && !hideWaitingList && React__default.createElement(WaitingList, {
5146
5607
  tickets: tickets,
5147
5608
  eventId: eventId
5148
- }), codeIsLoading ? React__default.createElement(Loader, null) : showAccessCodeSection ? React__default.createElement(AccessCodeSection, {
5609
+ }), codeIsLoading ? React__default.createElement(Loader, null) : isSalesClosed ? null : showAccessCodeSection ? React__default.createElement(AccessCodeSection, {
5149
5610
  code: code,
5150
5611
  setCode: setCode,
5151
5612
  updateTickets: updateTickets
5152
5613
  }) : showPromoCodeSection ? React__default.createElement(PromoCodeSection, {
5153
5614
  code: code,
5154
5615
  codeIsApplied: codeIsApplied,
5616
+ setCodeIsApplied: setCodeIsApplied,
5155
5617
  showPromoInput: showPromoInput,
5156
5618
  setShowPromoInput: setShowPromoInput,
5157
5619
  setCode: setCode,
@@ -5177,7 +5639,18 @@ var TicketsContainer = function TicketsContainer(_ref) {
5177
5639
  }, "Log out"))) : ''), showLoginModal ? React__default.createElement(LoginModal, {
5178
5640
  onClose: handleOnClose,
5179
5641
  onLogin: handleOnLogin
5180
- }) : null));
5642
+ }) : null), enableInfluencersSection && influencers.length ? React__default.createElement("div", {
5643
+ className: "event-influencers"
5644
+ }, React__default.createElement("h3", null, React__default.createElement("span", null, "TOP"), " INFLUENCERS"), React__default.createElement("ol", {
5645
+ className: "influencer-list"
5646
+ }, influencers.map(function (influencer, i) {
5647
+ var _influencer$lastName;
5648
+
5649
+ return React__default.createElement("li", {
5650
+ className: "influencer-item",
5651
+ key: i
5652
+ }, influencer.firstName + " " + ((_influencer$lastName = influencer.lastName) == null ? void 0 : _influencer$lastName.charAt(0)), ' ');
5653
+ }))) : null);
5181
5654
  };
5182
5655
 
5183
5656
  var EventInfoItem = function EventInfoItem(_ref) {
@@ -5197,10 +5670,8 @@ var tableConfig = function tableConfig(key) {
5197
5670
  switch (key) {
5198
5671
  default:
5199
5672
  config = {
5200
- header: ['Order No.', 'Date', 'Event', 'Total'],
5673
+ header: [],
5201
5674
  body: [function (row) {
5202
- return row.id;
5203
- }, function (row) {
5204
5675
  return row.date;
5205
5676
  }, function (row) {
5206
5677
  return React__default.createElement(EventInfoItem, {
@@ -5247,13 +5718,14 @@ var MyTicketsContainer = function MyTicketsContainer(_ref) {
5247
5718
  var _data$orders;
5248
5719
 
5249
5720
  var _ref$handleDetailsInf = _ref.handleDetailsInfo,
5250
- handleDetailsInfo = _ref$handleDetailsInf === void 0 ? function () {} : _ref$handleDetailsInf,
5721
+ handleDetailsInfo = _ref$handleDetailsInf === void 0 ? _identity : _ref$handleDetailsInf,
5251
5722
  _ref$onGetOrdersSucce = _ref.onGetOrdersSuccess,
5252
- onGetOrdersSuccess = _ref$onGetOrdersSucce === void 0 ? function () {} : _ref$onGetOrdersSucce,
5723
+ onGetOrdersSuccess = _ref$onGetOrdersSucce === void 0 ? _identity : _ref$onGetOrdersSucce,
5253
5724
  _ref$onGetOrdersError = _ref.onGetOrdersError,
5254
- onGetOrdersError = _ref$onGetOrdersError === void 0 ? function () {} : _ref$onGetOrdersError,
5725
+ onGetOrdersError = _ref$onGetOrdersError === void 0 ? _identity : _ref$onGetOrdersError,
5255
5726
  _ref$theme = _ref.theme,
5256
- theme = _ref$theme === void 0 ? 'dark' : _ref$theme;
5727
+ theme = _ref$theme === void 0 ? 'dark' : _ref$theme,
5728
+ logo = _ref.logo;
5257
5729
 
5258
5730
  var _useState = React.useState(null),
5259
5731
  data = _useState[0],
@@ -5363,24 +5835,20 @@ var MyTicketsContainer = function MyTicketsContainer(_ref) {
5363
5835
 
5364
5836
  return React__default.createElement("div", {
5365
5837
  className: "my-ticket " + theme
5366
- }, loading && React__default.createElement("div", {
5367
- className: "loading"
5368
- }, React__default.createElement(CircularProgress, null)), !isLogged ? React__default.createElement("div", {
5369
- className: "account-actions-block"
5370
- }, React__default.createElement("div", {
5371
- className: "login-block"
5372
- }, React__default.createElement("button", {
5373
- className: "login-register-button",
5374
- type: "button",
5375
- onClick: function onClick() {
5376
- setShowModalLogin(true);
5377
- }
5378
- }, "Login"), React__default.createElement("div", {
5379
- className: "logo-image-container"
5380
- }, React__default.createElement("img", {
5381
- src: theme === 'dark' ? 'https://www.ticketfairy.com/resources/images/logo-ttf.svg' : 'https://www.ticketfairy.com/resources/images/logo-ttf-black.svg',
5382
- alt: "nodata"
5383
- })))) : null, data && React__default.createElement(React__default.Fragment, null, React__default.createElement(Autocomplete, {
5838
+ }, React__default.createElement(React__default.Fragment, null, showModalLogin || !isLogged && React__default.createElement(LoginModal, {
5839
+ onClose: function onClose() {
5840
+ setShowModalLogin(false);
5841
+ },
5842
+ onLogin: function onLogin() {
5843
+ setShowModalLogin(false);
5844
+ setUserExpired(false);
5845
+ setIsLogged(true);
5846
+ },
5847
+ userExpired: userExpired,
5848
+ logo: logo
5849
+ })), data && React__default.createElement(React__default.Fragment, null, React__default.createElement("h2", null, "My Ticket Orders"), React__default.createElement("div", {
5850
+ className: "order_event"
5851
+ }, React__default.createElement(Autocomplete, {
5384
5852
  disablePortal: true,
5385
5853
  id: "combo-box-demo",
5386
5854
  getOptionLabel: function getOptionLabel(option) {
@@ -5396,7 +5864,12 @@ var MyTicketsContainer = function MyTicketsContainer(_ref) {
5396
5864
  label: "Events"
5397
5865
  }));
5398
5866
  }
5399
- }), React__default.createElement(TableContainer, {
5867
+ }), React__default.createElement("button", {
5868
+ type: "button",
5869
+ className: "clear"
5870
+ }, "CLEAR")), loading ? React__default.createElement("div", {
5871
+ className: "loading"
5872
+ }, React__default.createElement(CircularProgress, null)) : React__default.createElement(React__default.Fragment, null, React__default.createElement(TableContainer, {
5400
5873
  component: Paper,
5401
5874
  className: "my-ticket-table"
5402
5875
  }, React__default.createElement(Table, {
@@ -5419,7 +5892,7 @@ var MyTicketsContainer = function MyTicketsContainer(_ref) {
5419
5892
  page: data.page,
5420
5893
  onPageChange: handleChangePage,
5421
5894
  onRowsPerPageChange: handleChangeRowsPerPage
5422
- })), React__default.createElement(React__default.Fragment, null, showModalLogin && React__default.createElement(LoginModal, {
5895
+ }))), React__default.createElement(React__default.Fragment, null, showModalLogin && React__default.createElement(LoginModal, {
5423
5896
  onClose: function onClose() {
5424
5897
  setShowModalLogin(false);
5425
5898
  },
@@ -5436,29 +5909,94 @@ var TicketsTable = function TicketsTable(_ref) {
5436
5909
  var _ref$tickets = _ref.tickets,
5437
5910
  tickets = _ref$tickets === void 0 ? [] : _ref$tickets,
5438
5911
  _ref$handleSellTicket = _ref.handleSellTicket,
5439
- handleSellTicket = _ref$handleSellTicket === void 0 ? function () {} : _ref$handleSellTicket,
5912
+ handleSellTicket = _ref$handleSellTicket === void 0 ? _identity : _ref$handleSellTicket,
5440
5913
  _ref$handleRemoveFrom = _ref.handleRemoveFromResale,
5441
- handleRemoveFromResale = _ref$handleRemoveFrom === void 0 ? function () {} : _ref$handleRemoveFrom;
5914
+ handleRemoveFromResale = _ref$handleRemoveFrom === void 0 ? _identity : _ref$handleRemoveFrom,
5915
+ _ref$icon = _ref.icon,
5916
+ icon = _ref$icon === void 0 ? '' : _ref$icon;
5917
+
5918
+ var _useState = React.useState(null),
5919
+ pdfError = _useState[0],
5920
+ setPdfError = _useState[1];
5921
+
5442
5922
  return React__default.createElement("div", {
5443
5923
  className: "tickets-box"
5444
- }, React__default.createElement("h4", {
5924
+ }, React__default.createElement(SnackbarAlert, {
5925
+ type: "error",
5926
+ isOpen: !!pdfError,
5927
+ message: pdfError || '',
5928
+ onClose: function onClose() {
5929
+ return setPdfError(null);
5930
+ }
5931
+ }), React__default.createElement("h4", {
5445
5932
  className: "sub-title"
5446
5933
  }, "Your Tickets"), React__default.createElement(TableContainer, {
5447
5934
  component: Paper
5448
5935
  }, React__default.createElement(Table, {
5449
5936
  "aria-label": "collapsible table"
5450
- }, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, React__default.createElement(TableCell, null, "Ticket ID"), React__default.createElement(TableCell, null, "Ticket Type"), React__default.createElement(TableCell, null, "Ticket Holder Name"), React__default.createElement(TableCell, null, "Status"), React__default.createElement(TableCell, null, "Download"), React__default.createElement(TableCell, null))), React__default.createElement(TableBody, null, tickets.map(function (ticket, index) {
5937
+ }, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, React__default.createElement(TableCell, null), React__default.createElement(TableCell, null), React__default.createElement(TableCell, null), React__default.createElement(TableCell, null), React__default.createElement(TableCell, null), React__default.createElement(TableCell, null))), React__default.createElement(TableBody, null, tickets.map(function (ticket, index) {
5451
5938
  var _ticket$add_ons;
5452
5939
 
5453
5940
  return React__default.createElement(React.Fragment, {
5454
5941
  key: index
5455
- }, React__default.createElement(TableRow, null, React__default.createElement(TableCell, null, ticket.hash), React__default.createElement(TableCell, null, ticket.ticket_type), React__default.createElement(TableCell, null, ticket.holder_name), React__default.createElement(TableCell, null, ticket.status), React__default.createElement(TableCell, null, ticket.status !== "Sold" && React__default.createElement("span", {
5942
+ }, React__default.createElement(TableRow, null, React__default.createElement(TableCell, null, React__default.createElement("div", {
5943
+ className: "cell-block"
5944
+ }, React__default.createElement("span", null, "Ticket ID"), React__default.createElement("span", null, ticket.hash))), React__default.createElement(TableCell, null, React__default.createElement("div", {
5945
+ className: "cell-block"
5946
+ }, React__default.createElement("span", null, "Ticket Type"), React__default.createElement("span", null, ticket.ticket_type))), React__default.createElement(TableCell, null, React__default.createElement("div", {
5947
+ className: "cell-block"
5948
+ }, React__default.createElement("span", null, "Ticket Holder"), React__default.createElement("span", null, ticket.holder_name))), React__default.createElement(TableCell, null, React__default.createElement("div", {
5949
+ className: "cell-block"
5950
+ }, React__default.createElement("span", null, "Status"), React__default.createElement("span", null, ticket.status))), ticket.pdf_link && ticket.status !== "Sold" ? React__default.createElement(TableCell, null, Boolean(icon) && React__default.createElement("img", {
5951
+ src: icon,
5952
+ alt: "nodata"
5953
+ }), React__default.createElement("span", {
5456
5954
  "aria-hidden": true,
5457
5955
  className: "action-button",
5458
- onClick: function onClick() {
5459
- return downloadPDF(ticket.pdf_link);
5460
- }
5461
- }, "Download")), React__default.createElement(TableCell, null, ticket.is_sellable && React__default.createElement("span", {
5956
+ onClick: function () {
5957
+ var _onClick = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
5958
+ var pdfDownloadError;
5959
+ return runtime_1.wrap(function _callee$(_context) {
5960
+ while (1) {
5961
+ switch (_context.prev = _context.next) {
5962
+ case 0:
5963
+ _context.prev = 0;
5964
+ _context.next = 3;
5965
+ return downloadPDF(ticket.pdf_link);
5966
+
5967
+ case 3:
5968
+ pdfDownloadError = _context.sent;
5969
+
5970
+ if (pdfDownloadError) {
5971
+ setPdfError(pdfDownloadError == null ? void 0 : pdfDownloadError.message);
5972
+ }
5973
+
5974
+ _context.next = 10;
5975
+ break;
5976
+
5977
+ case 7:
5978
+ _context.prev = 7;
5979
+ _context.t0 = _context["catch"](0);
5980
+
5981
+ if (_context.t0 && typeof _context.t0 === 'string') {
5982
+ setPdfError(_context.t0);
5983
+ }
5984
+
5985
+ case 10:
5986
+ case "end":
5987
+ return _context.stop();
5988
+ }
5989
+ }
5990
+ }, _callee, null, [[0, 7]]);
5991
+ }));
5992
+
5993
+ function onClick() {
5994
+ return _onClick.apply(this, arguments);
5995
+ }
5996
+
5997
+ return onClick;
5998
+ }()
5999
+ }, "Download")) : null, React__default.createElement(TableCell, null, ticket.is_sellable && React__default.createElement("span", {
5462
6000
  "aria-hidden": true,
5463
6001
  className: "action-button",
5464
6002
  onClick: function onClick() {
@@ -5482,13 +6020,13 @@ var TicketsTable = function TicketsTable(_ref) {
5482
6020
  })))));
5483
6021
  };
5484
6022
 
5485
- var _excluded$3 = ["label", "field", "theme"];
6023
+ var _excluded$2 = ["label", "field", "theme"];
5486
6024
  var RadioField = function RadioField(_ref) {
5487
6025
  var label = _ref.label,
5488
6026
  field = _ref.field,
5489
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
6027
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
5490
6028
 
5491
- var customTheme = styles.useTheme();
6029
+ var customTheme = styles$1.useTheme();
5492
6030
  return React__default.createElement(FormGroup, null, React__default.createElement(FormControlLabel, {
5493
6031
  control: React__default.createElement(Radio, Object.assign({}, field, rest)),
5494
6032
  label: label,
@@ -5498,7 +6036,7 @@ var RadioField = function RadioField(_ref) {
5498
6036
  }));
5499
6037
  };
5500
6038
 
5501
- var style$1 = {
6039
+ var style$3 = {
5502
6040
  position: 'absolute',
5503
6041
  top: '50%',
5504
6042
  left: '50%',
@@ -5511,33 +6049,33 @@ var style$1 = {
5511
6049
  maxHeight: '85vh',
5512
6050
  overflow: 'auto'
5513
6051
  };
5514
- var schema = /*#__PURE__*/yup.object().shape({
5515
- to: /*#__PURE__*/yup.string().required(),
5516
- first_name: /*#__PURE__*/yup.string().when('to', {
6052
+ var schema = /*#__PURE__*/Yup.object().shape({
6053
+ to: /*#__PURE__*/Yup.string().required(),
6054
+ first_name: /*#__PURE__*/Yup.string().when('to', {
5517
6055
  is: function is(to) {
5518
6056
  return to === 'friend';
5519
6057
  },
5520
- then: /*#__PURE__*/yup.string().required('First Name is required')
6058
+ then: /*#__PURE__*/Yup.string().required('First Name is required')
5521
6059
  }),
5522
- last_name: /*#__PURE__*/yup.string().when('to', {
6060
+ last_name: /*#__PURE__*/Yup.string().when('to', {
5523
6061
  is: function is(to) {
5524
6062
  return to === 'friend';
5525
6063
  },
5526
- then: /*#__PURE__*/yup.string().required('Last Name is required')
6064
+ then: /*#__PURE__*/Yup.string().required('Last Name is required')
5527
6065
  }),
5528
- email: /*#__PURE__*/yup.string().when('to', {
6066
+ email: /*#__PURE__*/Yup.string().when('to', {
5529
6067
  is: function is(to) {
5530
6068
  return to === 'friend';
5531
6069
  },
5532
- then: /*#__PURE__*/yup.string().email('Invalid email').required('Email is required')
6070
+ then: /*#__PURE__*/Yup.string().email('Invalid email').required('Email is required')
5533
6071
  }),
5534
- confirm_email: /*#__PURE__*/yup.string().when('to', {
6072
+ confirm_email: /*#__PURE__*/Yup.string().when('to', {
5535
6073
  is: function is(to) {
5536
6074
  return to === 'friend';
5537
6075
  },
5538
- then: /*#__PURE__*/yup.string().email('Invalid email').oneOf([yup.ref('email'), null], 'Emails must match').required('Confirm Email is required')
6076
+ then: /*#__PURE__*/Yup.string().email('Invalid email').oneOf([Yup.ref('email'), null], 'Emails must match').required('Confirm Email is required')
5539
6077
  }),
5540
- confirm: /*#__PURE__*/yup.boolean().oneOf([true])
6078
+ confirm: /*#__PURE__*/Yup.boolean().oneOf([true])
5541
6079
  });
5542
6080
  var initialValues = {
5543
6081
  to: 'friend',
@@ -5567,7 +6105,7 @@ var TicketResaleModal = function TicketResaleModal(_ref) {
5567
6105
  "aria-describedby": "modal-modal-description",
5568
6106
  className: 'resale-modal'
5569
6107
  }, React__default.createElement(Box, {
5570
- style: style$1
6108
+ style: style$3
5571
6109
  }, React__default.createElement("h3", null, "Sell Ticket"), React__default.createElement("div", null, React__default.createElement("h3", null, "Ticket Details"), React__default.createElement("div", null, React__default.createElement("h4", null, "Event"), React__default.createElement("p", null, event_name)), React__default.createElement("div", null, React__default.createElement("h4", null, "Ticket Holder"), React__default.createElement("p", null, holder_name)), React__default.createElement("div", null, React__default.createElement("h4", null, "Ticket ID"), React__default.createElement("p", null, hash))), React__default.createElement("div", null, React__default.createElement("h3", null, "Sell to Whom"), React__default.createElement(formik.Formik, {
5572
6110
  initialValues: initialValues,
5573
6111
  validationSchema: schema,
@@ -5633,12 +6171,12 @@ var TicketResaleModal = function TicketResaleModal(_ref) {
5633
6171
  type: 'text',
5634
6172
  component: CustomField
5635
6173
  }))))), ticket_type_is_active && React__default.createElement("div", null, React__default.createElement(formik.Field, {
5636
- name: 'to',
5637
- label: 'I will sell my ticket to anyone who wants to buy it',
5638
- type: 'radio',
5639
- value: 'anyone',
6174
+ name: "to",
6175
+ label: "I will sell my ticket to anyone who wants to buy it",
6176
+ type: "radio",
6177
+ value: "anyone",
5640
6178
  component: RadioField
5641
- })), React__default.createElement("div", null, React__default.createElement("h4", null, "Terms of Resale"), React__default.createElement("p", null, "I confirm that I want to sell this ticket and that, if someone chooses to buy it, I will no longer own it or have the right to ask for it back."), React__default.createElement("p", null, "I also understand that, if no one chooses to buy it, it remains my property, is valid for entry to ", React__default.createElement("strong", null, event_name), " and I will not receive any refund."), React__default.createElement("p", null, "If my ticket is sold, the original card I used to buy my ticket will be refunded with the original amount paid, minus a small handling fee of ", React__default.createElement("strong", null, currency + resale_fee_amount), ", and that any existing refunds due to me for referring sales for this event are no longer valid."), React__default.createElement(formik.Field, {
6179
+ })), React__default.createElement("div", null, React__default.createElement("h4", null, "Terms of Resale"), React__default.createElement("p", null, "I confirm that I want to sell this ticket and that, if someone chooses to buy it, I will no longer own it or have the right to ask for it back."), React__default.createElement("p", null, "I also understand that, if no one chooses to buy it, it remains my property, is valid for entry to ", React__default.createElement("strong", null, event_name), " and I will not receive any refund."), React__default.createElement("p", null, "If my ticket is sold, the original card I used to buy my ticket will be refunded with the original amount paid, minus a small handling fee of ", React__default.createElement("strong", null, (currency || '') + " " + (resale_fee_amount || '')), ", and that any existing refunds due to me for referring sales for this event are no longer valid."), React__default.createElement(formik.Field, {
5642
6180
  name: 'confirm',
5643
6181
  label: 'I agree',
5644
6182
  type: 'checkbox',
@@ -5652,7 +6190,7 @@ var TicketResaleModal = function TicketResaleModal(_ref) {
5652
6190
  }))));
5653
6191
  };
5654
6192
 
5655
- var style$2 = {
6193
+ var style$4 = {
5656
6194
  position: 'absolute',
5657
6195
  top: '50%',
5658
6196
  left: '50%',
@@ -5680,7 +6218,7 @@ var ConfirmModal = function ConfirmModal(_ref) {
5680
6218
  "aria-describedby": "modal-modal-description",
5681
6219
  className: 'confirm-modal'
5682
6220
  }, React__default.createElement(Box, {
5683
- style: style$2
6221
+ style: style$4
5684
6222
  }, React__default.createElement("p", null, message), React__default.createElement("div", {
5685
6223
  className: 'footer'
5686
6224
  }, React__default.createElement(Button, {
@@ -5698,10 +6236,15 @@ var getTotal = function getTotal(data) {
5698
6236
  var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
5699
6237
  var _data$items, _data$items$ticket_ty, _data$items2, _data$items2$add_ons;
5700
6238
 
5701
- var _ref$onGetOrdersSucce = _ref.onGetOrdersSuccess,
6239
+ var _ref$columns = _ref.columns,
6240
+ columns = _ref$columns === void 0 ? [] : _ref$columns,
6241
+ _ref$onGetOrdersSucce = _ref.onGetOrdersSuccess,
5702
6242
  onGetOrdersSuccess = _ref$onGetOrdersSucce === void 0 ? function () {} : _ref$onGetOrdersSucce,
5703
6243
  _ref$onGetOrdersError = _ref.onGetOrdersError,
5704
- onGetOrdersError = _ref$onGetOrdersError === void 0 ? function () {} : _ref$onGetOrdersError;
6244
+ onGetOrdersError = _ref$onGetOrdersError === void 0 ? function () {} : _ref$onGetOrdersError,
6245
+ onReturnButtonClick = _ref.onReturnButtonClick,
6246
+ _ref$personalLinkIcon = _ref.personalLinkIcon,
6247
+ personalLinkIcon = _ref$personalLinkIcon === void 0 ? '' : _ref$personalLinkIcon;
5705
6248
 
5706
6249
  var _useState = React.useState({}),
5707
6250
  data = _useState[0],
@@ -5902,6 +6445,12 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
5902
6445
  };
5903
6446
  }();
5904
6447
 
6448
+ var orderSummery = "ID " + data.id + ", placed";
6449
+
6450
+ if (data.date) {
6451
+ orderSummery += " " + data.date;
6452
+ }
6453
+
5905
6454
  return React__default.createElement("div", {
5906
6455
  className: "order-details"
5907
6456
  }, loading ? React__default.createElement("div", {
@@ -5910,19 +6459,47 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
5910
6459
  className: "layout-title"
5911
6460
  }, "Order Details"), React__default.createElement("div", {
5912
6461
  className: "order-summary-box"
5913
- }, React__default.createElement("h4", {
6462
+ }, React__default.createElement("div", {
6463
+ className: "summary-block"
6464
+ }, React__default.createElement("div", {
6465
+ className: "summary-item"
6466
+ }, React__default.createElement("h6", {
5914
6467
  className: "sub-title"
5915
- }, "Order Summary"), React__default.createElement("div", {
6468
+ }, "Order Summary"), React__default.createElement("p", null, orderSummery)), React__default.createElement("div", {
6469
+ className: "summary-item"
6470
+ }, React__default.createElement("div", {
6471
+ className: "return-button-container"
6472
+ }, React__default.createElement("button", {
6473
+ type: "button",
6474
+ className: "return-button",
6475
+ onClick: function onClick() {
6476
+ if (typeof window !== 'undefined') {
6477
+ window.location.assign('/orders');
6478
+ }
6479
+ }
6480
+ }, "Back to Orders")))), React__default.createElement("div", {
5916
6481
  className: "personal-link"
5917
- }, React__default.createElement("b", null, "Your personal share link for this event is: "), React__default.createElement("a", {
6482
+ }, React__default.createElement("div", {
6483
+ className: "link-item"
6484
+ }, React__default.createElement("span", null, "Personal Share Link: "), React__default.createElement("a", {
5918
6485
  href: data == null ? void 0 : data.personal_share_link,
5919
6486
  target: "_blank",
5920
6487
  rel: "noreferrer"
5921
- }, data == null ? void 0 : data.personal_share_link)), React__default.createElement(TableContainer, {
6488
+ }, Boolean(personalLinkIcon) && React__default.createElement("img", {
6489
+ src: personalLinkIcon,
6490
+ alt: "Icon"
6491
+ }), data == null ? void 0 : data.personal_share_link)), React__default.createElement("div", {
6492
+ className: "link-item"
6493
+ }, React__default.createElement("p", null, "So far, you\u2019ve referred " + data.sales_referred + " tickets"))), data != null && data.sales_referred ? React__default.createElement("div", {
6494
+ className: "total-referrer"
6495
+ }, React__default.createElement("b", null, "So far, you've referred ", data.sales_referred, " tickets.")) : null, React__default.createElement(TableContainer, {
5922
6496
  component: Paper
5923
6497
  }, React__default.createElement(Table, {
6498
+ className: "tt-type",
5924
6499
  "aria-label": "collapsible table"
5925
- }, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, React__default.createElement(TableCell, null, "Items"), React__default.createElement(TableCell, null, "Price"), React__default.createElement(TableCell, null, "Quantity"), React__default.createElement(TableCell, null, "Total"))), React__default.createElement(TableBody, null, data == null ? void 0 : (_data$items = data.items) == null ? void 0 : (_data$items$ticket_ty = _data$items.ticket_types) == null ? void 0 : _data$items$ticket_ty.map(function (ticket, index) {
6500
+ }, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, _map(columns, function (item) {
6501
+ return React__default.createElement(TableCell, null, item.label || '');
6502
+ }))), React__default.createElement(TableBody, null, data == null ? void 0 : (_data$items = data.items) == null ? void 0 : (_data$items$ticket_ty = _data$items.ticket_types) == null ? void 0 : _data$items$ticket_ty.map(function (ticket, index) {
5926
6503
  return React__default.createElement(TableRow, {
5927
6504
  key: index
5928
6505
  }, React__default.createElement(TableCell, null, React__default.createElement("b", null, "Ticket Type: "), ticket.name), React__default.createElement(TableCell, null, ticket.currency + ticket.price), React__default.createElement(TableCell, null, ticket.quantity), React__default.createElement(TableCell, null, ticket.currency + ticket.total));
@@ -5942,7 +6519,9 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
5942
6519
  type: "button",
5943
6520
  className: "return-button",
5944
6521
  onClick: function onClick() {
5945
- if (typeof window !== 'undefined') {
6522
+ if (onReturnButtonClick) {
6523
+ onReturnButtonClick(data);
6524
+ } else if (typeof window !== 'undefined') {
5946
6525
  window.location.assign('/orders');
5947
6526
  }
5948
6527
  }
@@ -5957,6 +6536,120 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
5957
6536
  }));
5958
6537
  };
5959
6538
 
6539
+ var Schema$1 = /*#__PURE__*/Yup.object().shape({
6540
+ password: /*#__PURE__*/Yup.string().min(6, 'Password must have 5+ characters').required('Required'),
6541
+ password_confirmation: /*#__PURE__*/Yup.string().required('Required').oneOf([/*#__PURE__*/Yup.ref('password'), null], 'Passwords must match')
6542
+ });
6543
+ var ResetPasswordContainer = function ResetPasswordContainer(_ref) {
6544
+ var _ref$token = _ref.token,
6545
+ tokenProps = _ref$token === void 0 ? '' : _ref$token,
6546
+ _ref$onResetPasswordS = _ref.onResetPasswordSuccess,
6547
+ onResetPasswordSuccess = _ref$onResetPasswordS === void 0 ? function () {} : _ref$onResetPasswordS,
6548
+ _ref$onResetPasswordE = _ref.onResetPasswordError,
6549
+ onResetPasswordError = _ref$onResetPasswordE === void 0 ? function () {} : _ref$onResetPasswordE;
6550
+
6551
+ var _useState = React.useState(false),
6552
+ loading = _useState[0],
6553
+ setLoading = _useState[1];
6554
+
6555
+ return React__default.createElement("div", {
6556
+ className: "reset-password"
6557
+ }, React__default.createElement("div", {
6558
+ className: "title"
6559
+ }, "Change Password"), React__default.createElement(formik.Formik, {
6560
+ initialValues: {
6561
+ password: '',
6562
+ password_confirmation: ''
6563
+ },
6564
+ validationSchema: Schema$1,
6565
+ onSubmit: function () {
6566
+ var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(values) {
6567
+ var token, params, payload, res;
6568
+ return runtime_1.wrap(function _callee$(_context) {
6569
+ while (1) {
6570
+ switch (_context.prev = _context.next) {
6571
+ case 0:
6572
+ _context.prev = 0;
6573
+ setLoading(true);
6574
+
6575
+ if (tokenProps) {
6576
+ token = tokenProps;
6577
+ } else {
6578
+ if (typeof window !== 'undefined') {
6579
+ params = new URL("" + window.location).searchParams;
6580
+ token = params.get('token');
6581
+ }
6582
+ }
6583
+
6584
+ payload = _extends({
6585
+ token: token
6586
+ }, values);
6587
+ _context.next = 6;
6588
+ return resetPassword(payload);
6589
+
6590
+ case 6:
6591
+ res = _context.sent;
6592
+ onResetPasswordSuccess(res);
6593
+ _context.next = 13;
6594
+ break;
6595
+
6596
+ case 10:
6597
+ _context.prev = 10;
6598
+ _context.t0 = _context["catch"](0);
6599
+
6600
+ if (axios.isAxiosError(_context.t0)) {
6601
+ onResetPasswordError(_context.t0);
6602
+ }
6603
+
6604
+ case 13:
6605
+ _context.prev = 13;
6606
+ setLoading(false);
6607
+ return _context.finish(13);
6608
+
6609
+ case 16:
6610
+ case "end":
6611
+ return _context.stop();
6612
+ }
6613
+ }
6614
+ }, _callee, null, [[0, 10, 13, 16]]);
6615
+ }));
6616
+
6617
+ function onSubmit(_x) {
6618
+ return _onSubmit.apply(this, arguments);
6619
+ }
6620
+
6621
+ return onSubmit;
6622
+ }()
6623
+ }, function (_ref2) {
6624
+ var isValid = _ref2.isValid,
6625
+ dirty = _ref2.dirty;
6626
+ return React__default.createElement(formik.Form, null, React__default.createElement("div", {
6627
+ className: "body"
6628
+ }, React__default.createElement("div", {
6629
+ className: "field-item"
6630
+ }, React__default.createElement(formik.Field, {
6631
+ name: "password",
6632
+ label: "New Password",
6633
+ type: "password",
6634
+ component: CustomField
6635
+ })), React__default.createElement("div", {
6636
+ className: "field-item"
6637
+ }, React__default.createElement(formik.Field, {
6638
+ name: "password_confirmation",
6639
+ label: "Confirm Password",
6640
+ type: "password",
6641
+ component: CustomField
6642
+ }))), React__default.createElement("div", {
6643
+ className: "action-button"
6644
+ }, React__default.createElement("button", {
6645
+ type: "submit",
6646
+ disabled: !(isValid && dirty)
6647
+ }, loading ? React__default.createElement(material.CircularProgress, {
6648
+ size: "22px"
6649
+ }) : 'Submit')));
6650
+ }));
6651
+ };
6652
+
5960
6653
  var TicketResaleContainer = function TicketResaleContainer(_ref) {
5961
6654
  var _ref$onProcessTicketS = _ref.onProcessTicketSuccess,
5962
6655
  onProcessTicketSuccess = _ref$onProcessTicketS === void 0 ? function () {} : _ref$onProcessTicketS,
@@ -6068,7 +6761,7 @@ var TicketResaleContainer = function TicketResaleContainer(_ref) {
6068
6761
  }, React__default.createElement("h3", null, successMessage ? successMessage : error)));
6069
6762
  };
6070
6763
 
6071
- var style$3 = {
6764
+ var style$5 = {
6072
6765
  position: 'absolute',
6073
6766
  top: '10%',
6074
6767
  left: '50%',
@@ -6092,7 +6785,7 @@ var RedirectModal = function RedirectModal(_ref) {
6092
6785
  "aria-describedby": "modal-modal-description",
6093
6786
  className: "redirect-modal"
6094
6787
  }, React__default.createElement(Box, {
6095
- style: style$3
6788
+ style: style$5
6096
6789
  }, React__default.createElement("p", null, message), React__default.createElement("div", {
6097
6790
  className: "footer"
6098
6791
  }, React__default.createElement("button", {
@@ -6100,7 +6793,7 @@ var RedirectModal = function RedirectModal(_ref) {
6100
6793
  }, "OK"))));
6101
6794
  };
6102
6795
 
6103
- var style$4 = {
6796
+ var style$6 = {
6104
6797
  position: 'absolute',
6105
6798
  top: '50%',
6106
6799
  left: '50%',
@@ -6206,7 +6899,7 @@ var RsvpContainer = function RsvpContainer(_ref) {
6206
6899
  "aria-describedby": "modal-modal-description",
6207
6900
  className: "rsvp-modal"
6208
6901
  }, React__default.createElement(Box, {
6209
- style: style$4,
6902
+ style: style$6,
6210
6903
  className: "rsvp-modal-box"
6211
6904
  }, React__default.createElement("div", {
6212
6905
  className: "rsvp-modal-container"
@@ -6249,11 +6942,13 @@ var RsvpContainer = function RsvpContainer(_ref) {
6249
6942
 
6250
6943
  exports.BillingInfoContainer = BillingInfoContainer;
6251
6944
  exports.ConfirmationContainer = ConfirmationContainer;
6945
+ exports.ForgotPasswordModal = ForgotPasswordModal;
6252
6946
  exports.LoginModal = LoginModal;
6253
6947
  exports.MyTicketsContainer = MyTicketsContainer;
6254
6948
  exports.OrderDetailsContainer = OrderDetailsContainer;
6255
6949
  exports.PaymentContainer = PaymentContainer;
6256
6950
  exports.RedirectModal = RedirectModal;
6951
+ exports.ResetPasswordContainer = ResetPasswordContainer;
6257
6952
  exports.RsvpContainer = RsvpContainer;
6258
6953
  exports.TicketResaleContainer = TicketResaleContainer;
6259
6954
  exports.TicketsContainer = TicketsContainer;