tf-checkout-react 1.0.75 → 1.0.79

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 (42) hide show
  1. package/dist/api/index.d.ts +1 -0
  2. package/dist/components/billing-info-container/index.d.ts +7 -2
  3. package/dist/components/billing-info-container/utils.d.ts +1 -0
  4. package/dist/components/common/FormikPhoneNumberField.d.ts +1 -1
  5. package/dist/components/countdown/index.d.ts +11 -0
  6. package/dist/components/orderDetailsContainer/ticketsTable.d.ts +13 -1
  7. package/dist/components/paymentContainer/index.d.ts +9 -2
  8. package/dist/components/ticketsContainer/index.d.ts +9 -1
  9. package/dist/components/waitingList/index.d.ts +1 -2
  10. package/dist/tf-checkout-react.cjs.development.js +505 -177
  11. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  12. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  13. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  14. package/dist/tf-checkout-react.esm.js +498 -170
  15. package/dist/tf-checkout-react.esm.js.map +1 -1
  16. package/dist/tf-checkout-styles.css +1 -1
  17. package/dist/utils/createCheckoutDataBodyWithDefaultHolder.d.ts +7 -0
  18. package/dist/utils/downloadPDF.d.ts +1 -0
  19. package/dist/utils/index.d.ts +2 -0
  20. package/package.json +2 -1
  21. package/src/api/index.ts +9 -0
  22. package/src/components/billing-info-container/index.tsx +25 -27
  23. package/src/components/billing-info-container/utils.ts +2 -1
  24. package/src/components/common/CheckboxField.tsx +19 -8
  25. package/src/components/common/CustomField.tsx +7 -0
  26. package/src/components/common/FormikPhoneNumberField.tsx +11 -1
  27. package/src/components/common/SelectField.tsx +5 -1
  28. package/src/components/countdown/index.tsx +89 -0
  29. package/src/components/countdown/style.css +10 -0
  30. package/src/components/loginModal/index.tsx +2 -0
  31. package/src/components/orderDetailsContainer/ticketsTable.tsx +66 -60
  32. package/src/components/paymentContainer/index.tsx +9 -11
  33. package/src/components/stripePayment/index.tsx +4 -4
  34. package/src/components/ticketsContainer/PromoCodeSection.tsx +3 -2
  35. package/src/components/ticketsContainer/TicketsSection.tsx +10 -6
  36. package/src/components/ticketsContainer/index.tsx +236 -76
  37. package/src/components/ticketsContainer/style.css +7 -0
  38. package/src/components/waitingList/index.tsx +3 -9
  39. package/src/components/waitingList/style.css +4 -2
  40. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +51 -0
  41. package/src/utils/downloadPDF.tsx +22 -0
  42. package/src/utils/index.ts +2 -0
@@ -7,7 +7,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
7
7
  var React = require('react');
8
8
  var React__default = _interopDefault(React);
9
9
  var formik = require('formik');
10
- var LoadingButton = _interopDefault(require('@mui/lab/LoadingButton'));
10
+ var Button = _interopDefault(require('@mui/material/Button'));
11
11
  var _identity = _interopDefault(require('lodash/identity'));
12
12
  var _map = _interopDefault(require('lodash/map'));
13
13
  var _get = _interopDefault(require('lodash/get'));
@@ -21,12 +21,13 @@ var _flatMapDeep = _interopDefault(require('lodash/flatMapDeep'));
21
21
  var _isArray = _interopDefault(require('lodash/isArray'));
22
22
  var nanoid = require('nanoid');
23
23
  var TextField = _interopDefault(require('@mui/material/TextField'));
24
+ var styles = require('@mui/styles');
24
25
  var FormGroup = _interopDefault(require('@mui/material/FormGroup'));
25
26
  var FormControlLabel = _interopDefault(require('@mui/material/FormControlLabel'));
26
27
  var Checkbox = _interopDefault(require('@mui/material/Checkbox'));
27
28
  var Select = _interopDefault(require('@mui/material/Select'));
28
29
  var MuiPhoneNumber = _interopDefault(require('material-ui-phone-number'));
29
- var styles = require('@mui/material/styles');
30
+ var styles$1 = require('@mui/material/styles');
30
31
  var Container = _interopDefault(require('@mui/material/Container'));
31
32
  var CircularProgress = _interopDefault(require('@mui/material/CircularProgress'));
32
33
  var Alert = _interopDefault(require('@mui/material/Alert'));
@@ -36,14 +37,15 @@ var reactShare = require('react-share');
36
37
  var _some = _interopDefault(require('lodash/some'));
37
38
  var _find = _interopDefault(require('lodash/find'));
38
39
  var _isEmpty = _interopDefault(require('lodash/isEmpty'));
39
- var Button = _interopDefault(require('react-bootstrap/Button'));
40
+ var Button$1 = _interopDefault(require('react-bootstrap/Button'));
40
41
  var jwt_decode = _interopDefault(require('jwt-decode'));
41
42
  var _sortBy = _interopDefault(require('lodash/sortBy'));
42
43
  var _has = _interopDefault(require('lodash/has'));
43
44
  var FormControl = _interopDefault(require('@mui/material/FormControl'));
44
45
  var MenuItem = _interopDefault(require('@mui/material/MenuItem'));
45
- var Button$1 = _interopDefault(require('@mui/material/Button'));
46
46
  var SVG = _interopDefault(require('react-inlinesvg'));
47
+ var moment = _interopDefault(require('moment-timezone'));
48
+ var privateTheming = require('@mui/private-theming');
47
49
  var Table = _interopDefault(require('@mui/material/Table'));
48
50
  var TableBody = _interopDefault(require('@mui/material/TableBody'));
49
51
  var TableCell = _interopDefault(require('@mui/material/TableCell'));
@@ -994,6 +996,84 @@ var ErrorFocusInternal = /*#__PURE__*/function (_Component) {
994
996
 
995
997
  var ErrorFocus = /*#__PURE__*/formik.connect(ErrorFocusInternal);
996
998
 
999
+ var downloadPDF = function downloadPDF(pdfUrl) {
1000
+ if (typeof window === 'undefined') return;
1001
+ var accessToken = localStorage.getItem('access_token');
1002
+ if (!accessToken) return;
1003
+ fetch(pdfUrl, {
1004
+ headers: {
1005
+ Authorization: "Bearer " + accessToken
1006
+ }
1007
+ }).then( /*#__PURE__*/function () {
1008
+ var _ref = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(response) {
1009
+ var blobValue;
1010
+ return runtime_1.wrap(function _callee$(_context) {
1011
+ while (1) {
1012
+ switch (_context.prev = _context.next) {
1013
+ case 0:
1014
+ _context.next = 2;
1015
+ return response.blob();
1016
+
1017
+ case 2:
1018
+ blobValue = _context.sent;
1019
+ return _context.abrupt("return", blobValue);
1020
+
1021
+ case 4:
1022
+ case "end":
1023
+ return _context.stop();
1024
+ }
1025
+ }
1026
+ }, _callee);
1027
+ }));
1028
+
1029
+ return function (_x) {
1030
+ return _ref.apply(this, arguments);
1031
+ };
1032
+ }()).then(function (blobValue) {
1033
+ var file = new Blob([blobValue], {
1034
+ type: 'application/pdf'
1035
+ });
1036
+ var fileURL = URL.createObjectURL(file);
1037
+ window.open(fileURL);
1038
+ });
1039
+ };
1040
+
1041
+ var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, logedInValues) {
1042
+ var ticket_holders = [];
1043
+ var first_name = _get(logedInValues, 'firstName') || _get(logedInValues, 'first_name') || '';
1044
+ var last_name = _get(logedInValues, 'lastName', '') || _get(logedInValues, 'last_name') || '';
1045
+
1046
+ var phone = _get(logedInValues, 'phone', '');
1047
+
1048
+ var email = _get(logedInValues, 'email', '');
1049
+
1050
+ for (var i = 0; i <= ticketsQuantity - 1; i++) {
1051
+ var individualHolder = i ? {
1052
+ first_name: '',
1053
+ last_name: '',
1054
+ phone: '',
1055
+ email: ''
1056
+ } : {
1057
+ first_name: first_name,
1058
+ last_name: last_name,
1059
+ phone: phone,
1060
+ email: email
1061
+ };
1062
+ ticket_holders.push(individualHolder);
1063
+ }
1064
+
1065
+ var body = {
1066
+ attributes: _extends({}, logedInValues, {
1067
+ email: email,
1068
+ confirm_email: email,
1069
+ first_name: first_name,
1070
+ last_name: last_name,
1071
+ ticket_holders: ticket_holders
1072
+ })
1073
+ };
1074
+ return body;
1075
+ };
1076
+
997
1077
  var isWindowDefined = typeof window !== 'undefined';
998
1078
  var ttfHeaders = {
999
1079
  Accept: 'application/vnd.api+json',
@@ -1098,6 +1178,14 @@ var handleSetAccessToken = function handleSetAccessToken(token) {
1098
1178
  }
1099
1179
  }
1100
1180
  };
1181
+ function getEvent(id) {
1182
+ var response = publicRequest.get("v1/event/" + id, {
1183
+ headers: ttfHeaders
1184
+ })["catch"](function (error) {
1185
+ throw error;
1186
+ });
1187
+ return response;
1188
+ }
1101
1189
  function getTickets(id, promoCode) {
1102
1190
  var response = publicRequest.get("v1/event/" + id + "/tickets/", {
1103
1191
  headers: promoCode ? _extends({}, ttfHeaders, {
@@ -1233,7 +1321,7 @@ var LoginModal = function LoginModal(_ref) {
1233
1321
  },
1234
1322
  onSubmit: function () {
1235
1323
  var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(_ref2) {
1236
- var email, password, bodyFormData, resAutorize, bodyFormDataToken, resAccessToken, accessToken, profileResponse, profileSpecifiedData, profileDataObj, _e$response, _e$response$data, _error;
1324
+ var email, password, bodyFormData, resAutorize, bodyFormDataToken, resAccessToken, accessToken, profileResponse, profileSpecifiedData, profileDataObj, event, _e$response, _e$response$data, _error;
1237
1325
 
1238
1326
  return runtime_1.wrap(function _callee$(_context) {
1239
1327
  while (1) {
@@ -1312,6 +1400,8 @@ var LoginModal = function LoginModal(_ref) {
1312
1400
  if (typeof window !== 'undefined') {
1313
1401
  window.localStorage.setItem('user_data', JSON.stringify(profileDataObj));
1314
1402
  window.localStorage.setItem('access_token', accessToken);
1403
+ event = new window.CustomEvent('tf-login');
1404
+ window.document.dispatchEvent(event);
1315
1405
  }
1316
1406
 
1317
1407
  onLogin();
@@ -1658,7 +1748,7 @@ var setLoggedUserData = function setLoggedUserData(data) {
1658
1748
  country: (data == null ? void 0 : data.country) || '',
1659
1749
  phone: (data == null ? void 0 : data.phone) || '',
1660
1750
  street_address: (data == null ? void 0 : data.streetAddress) || '',
1661
- state: (data == null ? void 0 : data.state) || '',
1751
+ state: (data == null ? void 0 : data.stateId) || '',
1662
1752
  zip: (data == null ? void 0 : data.zip) || (data == null ? void 0 : data.zipCode) || ''
1663
1753
  };
1664
1754
  };
@@ -1784,6 +1874,7 @@ var CustomField = function CustomField(_ref) {
1784
1874
  var error = _get(errors, field.name);
1785
1875
 
1786
1876
  var isTouched = Boolean(_get(touched, field.name)) || _includes(field.name, 'holder') && !!error && !!submitCount;
1877
+ var customTheme = styles.useTheme();
1787
1878
  return React__default.createElement(TextField, Object.assign({
1788
1879
  id: field.name,
1789
1880
  label: label,
@@ -1798,6 +1889,12 @@ var CustomField = function CustomField(_ref) {
1798
1889
  MenuProps: {
1799
1890
  className: theme
1800
1891
  }
1892
+ },
1893
+ InputLabelProps: {
1894
+ sx: customTheme == null ? void 0 : customTheme.input
1895
+ },
1896
+ inputProps: {
1897
+ sx: customTheme == null ? void 0 : customTheme.input
1801
1898
  }
1802
1899
  }, field), isSelectField ? _map(selectOptions, function (option) {
1803
1900
  return React__default.createElement("option", {
@@ -1810,14 +1907,22 @@ var CustomField = function CustomField(_ref) {
1810
1907
 
1811
1908
  var _excluded$1 = ["label", "field", "selectOptions", "theme", "setFieldValue"];
1812
1909
  var CheckboxField = function CheckboxField(_ref) {
1910
+ var _rest$form, _field$name, _rest$form2, _field$name2;
1911
+
1813
1912
  var label = _ref.label,
1814
1913
  field = _ref.field,
1815
1914
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1816
1915
 
1817
- return React__default.createElement(FormGroup, null, React__default.createElement(FormControlLabel, {
1916
+ var customTheme = styles.useTheme();
1917
+ return React__default.createElement(material.FormControl, {
1918
+ 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 : ""])
1919
+ }, React__default.createElement(FormGroup, null, React__default.createElement(FormControlLabel, {
1818
1920
  control: React__default.createElement(Checkbox, Object.assign({}, field, rest)),
1819
- label: label
1820
- }));
1921
+ label: label,
1922
+ componentsProps: {
1923
+ typography: customTheme == null ? void 0 : customTheme.checkbox
1924
+ }
1925
+ })), !!(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);
1821
1926
  };
1822
1927
 
1823
1928
  var SelectField = function SelectField(_ref) {
@@ -1835,9 +1940,11 @@ var SelectField = function SelectField(_ref) {
1835
1940
 
1836
1941
  var error = _get(errors, field.name);
1837
1942
 
1943
+ var customTheme = styles.useTheme();
1838
1944
  return React__default.createElement(material.FormControl, {
1839
1945
  fullWidth: true
1840
1946
  }, React__default.createElement(material.InputLabel, {
1947
+ style: customTheme == null ? void 0 : customTheme.input,
1841
1948
  htmlFor: field.name,
1842
1949
  error: !!error && isTouched,
1843
1950
  shrink: true
@@ -1855,7 +1962,9 @@ var SelectField = function SelectField(_ref) {
1855
1962
  MenuProps: {
1856
1963
  className: theme
1857
1964
  }
1858
- }, field), _map(selectOptions, function (option) {
1965
+ }, field, {
1966
+ style: customTheme == null ? void 0 : customTheme.input
1967
+ }), _map(selectOptions, function (option) {
1859
1968
  return React__default.createElement("option", {
1860
1969
  key: option.value,
1861
1970
  value: option.value,
@@ -1947,14 +2056,17 @@ var FormikPhoneNumberField = function FormikPhoneNumberField(_ref) {
1947
2056
  _ref$form = _ref.form,
1948
2057
  touched = _ref$form.touched,
1949
2058
  errors = _ref$form.errors,
2059
+ initialValues = _ref$form.initialValues,
1950
2060
  setFieldValue = _ref.setFieldValue,
1951
2061
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1952
2062
 
1953
2063
  var error = _get(errors, field.name);
1954
2064
 
1955
2065
  var isTouched = Boolean(_get(touched, field.name));
2066
+ var customTheme = styles.useTheme();
1956
2067
  return React__default.createElement(MuiPhoneNumber, Object.assign({
1957
2068
  name: 'phone',
2069
+ value: initialValues.phone,
1958
2070
  onChange: function onChange(e) {
1959
2071
  return setFieldValue("phone", removePlusSign(e));
1960
2072
  },
@@ -1965,6 +2077,12 @@ var FormikPhoneNumberField = function FormikPhoneNumberField(_ref) {
1965
2077
  error: !!error && isTouched,
1966
2078
  helperText: isTouched && error,
1967
2079
  fullWidth: true,
2080
+ InputLabelProps: {
2081
+ sx: customTheme == null ? void 0 : customTheme.input
2082
+ },
2083
+ InputProps: {
2084
+ sx: customTheme == null ? void 0 : customTheme.input
2085
+ },
1968
2086
  autoFormat: false
1969
2087
  }, rest));
1970
2088
  };
@@ -1977,10 +2095,11 @@ var LogicRunner = function LogicRunner(_ref) {
1977
2095
  setUserValues = _ref.setUserValues,
1978
2096
  onGetStatesSuccess = _ref.onGetStatesSuccess,
1979
2097
  onGetStatesError = _ref.onGetStatesError;
2098
+ var prevCountry = React.useRef(values.country);
1980
2099
  React.useEffect(function () {
1981
2100
  var fetchStates = /*#__PURE__*/function () {
1982
2101
  var _ref2 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
1983
- var _mappedStates$0$value, _mappedStates$, res, mappedStates;
2102
+ var res, mappedStates, _mappedStates$0$value, _mappedStates$;
1984
2103
 
1985
2104
  return runtime_1.wrap(function _callee$(_context) {
1986
2105
  while (1) {
@@ -1999,7 +2118,12 @@ var LogicRunner = function LogicRunner(_ref) {
1999
2118
  };
2000
2119
  });
2001
2120
  setStates(mappedStates);
2002
- setFieldValue('state', (_mappedStates$0$value = (_mappedStates$ = mappedStates[0]) == null ? void 0 : _mappedStates$.value) != null ? _mappedStates$0$value : '');
2121
+
2122
+ if (prevCountry.current !== values.country) {
2123
+ setFieldValue('state', (_mappedStates$0$value = (_mappedStates$ = mappedStates[0]) == null ? void 0 : _mappedStates$.value) != null ? _mappedStates$0$value : '');
2124
+ prevCountry.current = values.country;
2125
+ }
2126
+
2003
2127
  onGetStatesSuccess(res.data);
2004
2128
  _context.next = 13;
2005
2129
  break;
@@ -2037,13 +2161,13 @@ var LogicRunner = function LogicRunner(_ref) {
2037
2161
  var parsedData = JSON.parse(userDataEncoded);
2038
2162
  var mappedValues = {
2039
2163
  firstName: (parsedData == null ? void 0 : parsedData.first_name) || '',
2040
- lastName: parsedData == null ? void 0 : parsedData.last_name,
2164
+ lastName: (parsedData == null ? void 0 : parsedData.last_name) || '',
2041
2165
  email: (parsedData == null ? void 0 : parsedData.email) || '',
2042
2166
  phone: (parsedData == null ? void 0 : parsedData.phone) || '',
2043
2167
  confirmEmail: (parsedData == null ? void 0 : parsedData.email) || '',
2044
2168
  state: (parsedData == null ? void 0 : parsedData.state) || '',
2045
2169
  street_address: (parsedData == null ? void 0 : parsedData.street_address) || '',
2046
- country: (parsedData == null ? void 0 : parsedData.country) || 1,
2170
+ country: (parsedData == null ? void 0 : parsedData.country) || "1",
2047
2171
  zip: (parsedData == null ? void 0 : parsedData.zip) || '',
2048
2172
  brand_opt_in: (parsedData == null ? void 0 : parsedData.brand_opt_in) || '',
2049
2173
  city: (parsedData == null ? void 0 : parsedData.city) || '',
@@ -2114,15 +2238,9 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2114
2238
  pIsLoggedIn = _ref3$isLoggedIn === void 0 ? false : _ref3$isLoggedIn,
2115
2239
  _ref3$accountInfoTitl = _ref3.accountInfoTitle,
2116
2240
  accountInfoTitle = _ref3$accountInfoTitl === void 0 ? '' : _ref3$accountInfoTitl,
2117
- fontFamily = _ref3.fontFamily,
2118
- hideLogo = _ref3.hideLogo;
2119
- var themeMui = styles.createTheme({
2120
- typography: {
2121
- allVariants: {
2122
- fontFamily: fontFamily
2123
- }
2124
- }
2125
- });
2241
+ hideLogo = _ref3.hideLogo,
2242
+ themeOptions = _ref3.themeOptions;
2243
+ var themeMui = styles$1.createTheme(themeOptions);
2126
2244
  var isWindowDefined = typeof window !== 'undefined';
2127
2245
  var userData = isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
2128
2246
  var access_token = isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
@@ -2248,7 +2366,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2248
2366
  setCountries(_map(_get(res, 'data.data'), function (item, key) {
2249
2367
  return {
2250
2368
  label: item,
2251
- value: Number(key)
2369
+ value: key
2252
2370
  };
2253
2371
  }));
2254
2372
  onGetCountriesSuccess(res.data);
@@ -2348,7 +2466,10 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2348
2466
  userDataResponse = _context4.sent;
2349
2467
  profileSpecifiedData = _get(userDataResponse, 'data.data');
2350
2468
  profileDataObj = setLoggedUserData(profileSpecifiedData);
2351
- setUserValues(profileDataObj);
2469
+ setUserValues(_extends({}, profileDataObj, {
2470
+ firstName: profileDataObj.first_name,
2471
+ lastName: profileDataObj.last_name
2472
+ }));
2352
2473
  window.localStorage.setItem('user_data', JSON.stringify(profileDataObj));
2353
2474
  onGetProfileDataSuccess(userDataResponse.data);
2354
2475
 
@@ -2380,13 +2501,12 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2380
2501
  React.useEffect(function () {
2381
2502
  fetchUserData(access_token);
2382
2503
  }, [access_token]);
2383
- return React__default.createElement(styles.ThemeProvider, {
2504
+ return React__default.createElement(styles$1.ThemeProvider, {
2384
2505
  theme: themeMui
2385
2506
  }, React__default.createElement(formik.Formik, {
2386
2507
  initialValues: getInitialValues(dataWithUniqueIds, _extends({}, initialValues, {
2387
- firstName: firstNameLogged,
2388
- lastName: lastNameLogged,
2389
- country: 1,
2508
+ country: _get(userData, 'country', '') || "1",
2509
+ state: _get(userData, 'state', '') || "1",
2390
2510
  brand_opt_in: optedInFieldValue
2391
2511
  }), userValues),
2392
2512
  enableReinitialize: true,
@@ -2650,17 +2770,14 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2650
2770
  }));
2651
2771
  })), React__default.createElement("div", {
2652
2772
  className: "button-container"
2653
- }, React__default.createElement(LoadingButton, {
2773
+ }, React__default.createElement(Button, {
2654
2774
  type: "submit",
2655
2775
  variant: "contained",
2656
2776
  className: "login-register-button",
2657
- loadingIndicator: React__default.createElement(material.CircularProgress, {
2658
- color: "inherit",
2659
- size: 26
2660
- }),
2661
- loading: props.isSubmitting,
2662
2777
  disabled: props.isSubmitting
2663
- }, buttonName))));
2778
+ }, props.isSubmitting ? React__default.createElement(material.CircularProgress, {
2779
+ size: 26
2780
+ }) : buttonName))));
2664
2781
  }), showModalLogin && React__default.createElement(LoginModal, {
2665
2782
  onClose: function onClose() {
2666
2783
  setShowModalLogin(false);
@@ -2907,7 +3024,7 @@ var CheckoutForm = function CheckoutForm(_ref) {
2907
3024
  }, React__default.createElement("span", {
2908
3025
  className: "card_label_text"
2909
3026
  }, "Card number"), React__default.createElement(reactStripeJs.CardNumberElement, {
2910
- options: _extends({}, options.style, stripeCardOptions),
3027
+ options: _extends({}, options, stripeCardOptions),
2911
3028
  onReady: _identity,
2912
3029
  onChange: _identity,
2913
3030
  onBlur: _identity,
@@ -2917,13 +3034,13 @@ var CheckoutForm = function CheckoutForm(_ref) {
2917
3034
  }, React__default.createElement("span", {
2918
3035
  className: "card_label_text"
2919
3036
  }, "Expiration date"), React__default.createElement(reactStripeJs.CardExpiryElement, {
2920
- options: _extends({}, options.style, stripeCardOptions)
3037
+ options: _extends({}, options, stripeCardOptions)
2921
3038
  })), React__default.createElement("label", {
2922
3039
  className: "cvc_element"
2923
3040
  }, React__default.createElement("span", {
2924
3041
  className: "card_label_text"
2925
3042
  }, "CVC"), React__default.createElement(reactStripeJs.CardCvcElement, {
2926
- options: _extends({}, options.style, stripeCardOptions)
3043
+ options: _extends({}, options, stripeCardOptions)
2927
3044
  })), !disableZipSection && React__default.createElement("label", {
2928
3045
  className: "zip_element"
2929
3046
  }, React__default.createElement("p", {
@@ -2951,7 +3068,9 @@ var CheckoutForm = function CheckoutForm(_ref) {
2951
3068
  }, React__default.createElement("button", {
2952
3069
  disabled: buttonIsDiabled,
2953
3070
  type: "submit"
2954
- }, isLoading ? React__default.createElement(CircularProgress, null) : "Pay " + getCurrencySymbolByCurrency(currency) + total))));
3071
+ }, isLoading ? React__default.createElement(CircularProgress, {
3072
+ size: 26
3073
+ }) : "Pay " + getCurrencySymbolByCurrency(currency) + total))));
2955
3074
  };
2956
3075
 
2957
3076
  var publishableKey = CONFIGS.STRIPE_PUBLISHABLE_KEY || '';
@@ -3013,7 +3132,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
3013
3132
  stripeCardOptions = _ref$stripeCardOption === void 0 ? {} : _ref$stripeCardOption,
3014
3133
  _ref$disableZipSectio = _ref.disableZipSection,
3015
3134
  disableZipSection = _ref$disableZipSectio === void 0 ? false : _ref$disableZipSectio,
3016
- fontFamily = _ref.fontFamily;
3135
+ themeOptions = _ref.themeOptions,
3136
+ elementsOptions = _ref.elementsOptions;
3017
3137
 
3018
3138
  var _useState = React.useState(initialReviewValues),
3019
3139
  reviewData = _useState[0],
@@ -3197,14 +3317,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
3197
3317
  };
3198
3318
  }();
3199
3319
 
3200
- var themeMui = styles.createTheme({
3201
- typography: {
3202
- allVariants: {
3203
- fontFamily: fontFamily
3204
- }
3205
- }
3206
- });
3207
- return React__default.createElement(styles.ThemeProvider, {
3320
+ var themeMui = styles$1.createTheme(themeOptions);
3321
+ return React__default.createElement(styles$1.ThemeProvider, {
3208
3322
  theme: themeMui
3209
3323
  }, React__default.createElement("div", {
3210
3324
  className: "payment_page"
@@ -3240,7 +3354,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
3240
3354
  }, "Please provide your payment information"), showErrorText && React__default.createElement("p", {
3241
3355
  className: "payment_info__error"
3242
3356
  }, errorText), React__default.createElement("div", null, React__default.createElement(reactStripeJs.Elements, {
3243
- stripe: getStripePromise(reviewData)
3357
+ stripe: getStripePromise(reviewData),
3358
+ options: elementsOptions
3244
3359
  }, React__default.createElement(CheckoutForm, {
3245
3360
  stripe_client_secret: _get(reviewData, 'payment_method.stripe_client_secret'),
3246
3361
  total: orderData.total,
@@ -3723,12 +3838,14 @@ var TicketsSection = function TicketsSection(_ref) {
3723
3838
  style: {
3724
3839
  minWidth: 55
3725
3840
  }
3726
- }, React__default.createElement(TicketRow, {
3841
+ }, ticket.salesStarted ? React__default.createElement(TicketRow, {
3727
3842
  ticketTier: ticket,
3728
3843
  prevTicketTier: arr[i - 1],
3729
3844
  selectedTickets: selectedTickets,
3730
3845
  handleTicketSelect: ticketSelect
3731
- }))));
3846
+ }) : React__default.createElement("p", {
3847
+ className: 'ticket-not-started-message'
3848
+ }, "Sales not started"))));
3732
3849
  }));
3733
3850
  };
3734
3851
 
@@ -3748,8 +3865,7 @@ var generateQuantity = function generateQuantity(n) {
3748
3865
  var WaitingList = function WaitingList(_ref) {
3749
3866
  var _ref$tickets = _ref.tickets,
3750
3867
  tickets = _ref$tickets === void 0 ? {} : _ref$tickets,
3751
- eventId = _ref.eventId,
3752
- isPromotionsEnabled = _ref.isPromotionsEnabled;
3868
+ eventId = _ref.eventId;
3753
3869
 
3754
3870
  var _useState = React.useState(false),
3755
3871
  showSuccessMessage = _useState[0],
@@ -3824,9 +3940,7 @@ var WaitingList = function WaitingList(_ref) {
3824
3940
  className: "success-message"
3825
3941
  }, React__default.createElement("p", {
3826
3942
  className: "added-success-message"
3827
- }, "You've been added to the waiting list!"), React__default.createElement("p", null, "You'll be notified if tickets become available.")) : React__default.createElement(React__default.Fragment, null, !isPromotionsEnabled && React__default.createElement("p", {
3828
- className: "no-tickets-text"
3829
- }, "No tickets are currently available for this event."), React__default.createElement("h2", null, "WAITING LIST"), React__default.createElement(formik.Formik, {
3943
+ }, "You've been added to the waiting list!"), React__default.createElement("p", null, "You'll be notified if tickets become available.")) : React__default.createElement(React__default.Fragment, null, React__default.createElement("h2", null, "WAITING LIST"), React__default.createElement(formik.Formik, {
3830
3944
  initialValues: {
3831
3945
  ticketTypeId: '',
3832
3946
  quantity: '',
@@ -3888,7 +4002,7 @@ var WaitingList = function WaitingList(_ref) {
3888
4002
  return emailValidator(value);
3889
4003
  }),
3890
4004
  component: CustomField
3891
- })), React__default.createElement(Button$1, {
4005
+ })), React__default.createElement(Button, {
3892
4006
  type: "submit",
3893
4007
  variant: "contained",
3894
4008
  className: "waiting-list-button"
@@ -3927,10 +4041,12 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
3927
4041
  preProcessor: function preProcessor(code) {
3928
4042
  return code.replace(/fill=".*?"/g, 'fill="currentColor"');
3929
4043
  }
3930
- }), React__default.createElement("p", null, "PROMO CODE APPLIED SUCCESSFULLY")) : null, showPromoInput && React__default.createElement("div", {
4044
+ }), React__default.createElement("p", {
4045
+ className: "promo-code-success"
4046
+ }, "PROMO CODE APPLIED SUCCESSFULLY")) : null, showPromoInput && React__default.createElement("div", {
3931
4047
  className: "promo-code-block"
3932
- }, React__default.createElement("input", {
3933
- placeholder: "Promo Code",
4048
+ }, React__default.createElement("label", null, "PROMO CODE"), React__default.createElement("input", {
4049
+ placeholder: "",
3934
4050
  onChange: function onChange(e) {
3935
4051
  setPromoCode(e.target.value);
3936
4052
  },
@@ -3939,7 +4055,7 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
3939
4055
  setPromoCodeUpdated(promoCode);
3940
4056
  }
3941
4057
  }
3942
- }), React__default.createElement(Button, {
4058
+ }), React__default.createElement(Button$1, {
3943
4059
  className: "promo-apply-button",
3944
4060
  placeholder: "Promo Code",
3945
4061
  onClick: function onClick() {
@@ -3947,7 +4063,7 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
3947
4063
  }
3948
4064
  }, "Apply")), isPromotionsEnabled && !showPromoInput && isAllTicketsSoldOut && React__default.createElement("p", {
3949
4065
  className: "promo-code-text"
3950
- }, "Access code needed"), isPromotionsEnabled && !showPromoInput ? React__default.createElement(Button, {
4066
+ }, "Access code needed"), isPromotionsEnabled && !showPromoInput ? React__default.createElement(Button$1, {
3951
4067
  className: "promo-code-button",
3952
4068
  placeholder: "Promo Codes",
3953
4069
  onClick: function onClick() {
@@ -3956,6 +4072,84 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
3956
4072
  }, "Got a promo code? Click here") : null);
3957
4073
  };
3958
4074
 
4075
+ var isTimeExpired = function isTimeExpired(startDate, timezone) {
4076
+ return !moment(startDate).isAfter(moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss'));
4077
+ };
4078
+
4079
+ function Countdown(_ref) {
4080
+ var startDate = _ref.startDate,
4081
+ _ref$timezone = _ref.timezone,
4082
+ timezone = _ref$timezone === void 0 ? moment.tz.guess() : _ref$timezone,
4083
+ _ref$title = _ref.title,
4084
+ title = _ref$title === void 0 ? '' : _ref$title,
4085
+ _ref$message = _ref.message,
4086
+ message = _ref$message === void 0 ? '' : _ref$message,
4087
+ _ref$callback = _ref.callback,
4088
+ callback = _ref$callback === void 0 ? function () {} : _ref$callback;
4089
+
4090
+ var _useState = React.useState(''),
4091
+ duration = _useState[0],
4092
+ setDuration = _useState[1];
4093
+
4094
+ var _useState2 = React.useState(false),
4095
+ timeExpired = _useState2[0],
4096
+ setTimeExpired = _useState2[1];
4097
+
4098
+ React.useEffect(function () {
4099
+ setTimeExpired(isTimeExpired(startDate, timezone));
4100
+ }, []);
4101
+ React.useEffect(function () {
4102
+ var timer;
4103
+
4104
+ if (!timeExpired) {
4105
+ timer = setInterval(function () {
4106
+ if (isTimeExpired(startDate, timezone)) {
4107
+ clearInterval(timer);
4108
+ setTimeExpired(true);
4109
+ callback();
4110
+ }
4111
+
4112
+ var currentDate = moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss');
4113
+ var diffTime = moment(startDate).diff(currentDate);
4114
+ var duration = moment.duration(diffTime);
4115
+ var dateArr = {
4116
+ year: duration.years(),
4117
+ month: duration.months(),
4118
+ day: duration.days(),
4119
+ hour: duration.hours(),
4120
+ minute: duration.minutes(),
4121
+ second: duration.seconds()
4122
+ };
4123
+ var timeLeft = '';
4124
+
4125
+ for (var date in dateArr) {
4126
+ var unit = dateArr[date] === 1 ? date : date + 's';
4127
+ var val = String(dateArr[date]).length === 1 ? '0' + dateArr[date] : dateArr[date];
4128
+
4129
+ if (timeLeft) {
4130
+ timeLeft += ", " + val + " " + unit;
4131
+ } else if (dateArr[date]) {
4132
+ timeLeft += val + " " + unit;
4133
+ }
4134
+ }
4135
+
4136
+ setDuration(timeLeft);
4137
+ }, 1000);
4138
+ }
4139
+
4140
+ return function () {
4141
+ clearInterval(timer);
4142
+ };
4143
+ }, [timeExpired]);
4144
+ return React__default.createElement(React__default.Fragment, null, !timeExpired && duration && React__default.createElement("div", {
4145
+ className: 'countdown'
4146
+ }, React__default.createElement("div", null, React__default.createElement("p", {
4147
+ className: 'title'
4148
+ }, title), React__default.createElement("p", null, duration)), React__default.createElement("p", {
4149
+ className: 'message'
4150
+ }, message)));
4151
+ }
4152
+
3959
4153
  function Loader$1() {
3960
4154
  return React__default.createElement("div", {
3961
4155
  className: "loader-container"
@@ -3963,7 +4157,8 @@ function Loader$1() {
3963
4157
  }
3964
4158
 
3965
4159
  var TicketsContainer = function TicketsContainer(_ref) {
3966
- var getTicketsLabel = _ref.getTicketsLabel,
4160
+ var onLoginSuccess = _ref.onLoginSuccess,
4161
+ getTicketsLabel = _ref.getTicketsLabel,
3967
4162
  eventId = _ref.eventId,
3968
4163
  onAddToCartSuccess = _ref.onAddToCartSuccess,
3969
4164
  _ref$contentStyle = _ref.contentStyle,
@@ -3979,43 +4174,58 @@ var TicketsContainer = function TicketsContainer(_ref) {
3979
4174
  _ref$queryPromoCode = _ref.queryPromoCode,
3980
4175
  queryPromoCode = _ref$queryPromoCode === void 0 ? '' : _ref$queryPromoCode,
3981
4176
  _ref$isPromotionsEnab = _ref.isPromotionsEnabled,
3982
- isPromotionsEnabled = _ref$isPromotionsEnab === void 0 ? true : _ref$isPromotionsEnab;
4177
+ isPromotionsEnabled = _ref$isPromotionsEnab === void 0 ? true : _ref$isPromotionsEnab,
4178
+ themeOptions = _ref.themeOptions;
3983
4179
 
3984
4180
  var _useState = React.useState({}),
3985
4181
  selectedTickets = _useState[0],
3986
4182
  setSelectedTickets = _useState[1];
3987
4183
 
3988
- var _useState2 = React.useState([]),
3989
- tickets = _useState2[0],
3990
- setTickets = _useState2[1];
4184
+ var isWindowDefined = typeof window !== 'undefined';
3991
4185
 
3992
- var _useState3 = React.useState(false),
3993
- showWaitingList = _useState3[0],
3994
- setShowWaitingList = _useState3[1];
4186
+ var _useState2 = React.useState(isWindowDefined ? !!window.localStorage.getItem('access_token') : false),
4187
+ isLogged = _useState2[0],
4188
+ setIsLogged = _useState2[1];
3995
4189
 
3996
- var _useState4 = React.useState(false),
3997
- isLoading = _useState4[0],
3998
- setIsLoading = _useState4[1];
4190
+ var _React$useState = React__default.useState(false),
4191
+ showLoginModal = _React$useState[0],
4192
+ setShowLoginModal = _React$useState[1];
4193
+
4194
+ var _useState3 = React.useState([]),
4195
+ tickets = _useState3[0],
4196
+ setTickets = _useState3[1];
4197
+
4198
+ var _useState4 = React.useState(null),
4199
+ event = _useState4[0],
4200
+ setEvent = _useState4[1];
3999
4201
 
4000
4202
  var _useState5 = React.useState(false),
4001
- handleBookIsLoading = _useState5[0],
4002
- setHandleBookIsLoading = _useState5[1];
4203
+ showWaitingList = _useState5[0],
4204
+ setShowWaitingList = _useState5[1];
4003
4205
 
4004
- var _useState6 = React.useState(''),
4005
- promoCode = _useState6[0],
4006
- setPromoCode = _useState6[1];
4206
+ var _useState6 = React.useState(false),
4207
+ isLoading = _useState6[0],
4208
+ setIsLoading = _useState6[1];
4007
4209
 
4008
- var _useState7 = React.useState(queryPromoCode),
4009
- promoCodeUpdated = _useState7[0],
4010
- setPromoCodeUpdated = _useState7[1];
4210
+ var _useState7 = React.useState(false),
4211
+ handleBookIsLoading = _useState7[0],
4212
+ setHandleBookIsLoading = _useState7[1];
4011
4213
 
4012
- var _useState8 = React.useState(false),
4013
- showPromoInput = _useState8[0],
4014
- setShowPromoInput = _useState8[1];
4214
+ var _useState8 = React.useState(''),
4215
+ promoCode = _useState8[0],
4216
+ setPromoCode = _useState8[1];
4015
4217
 
4016
- var _useState9 = React.useState(false),
4017
- promoCodeIsApplied = _useState9[0],
4018
- setPromoCodeIsApplied = _useState9[1];
4218
+ var _useState9 = React.useState(queryPromoCode),
4219
+ promoCodeUpdated = _useState9[0],
4220
+ setPromoCodeUpdated = _useState9[1];
4221
+
4222
+ var _useState10 = React.useState(false),
4223
+ showPromoInput = _useState10[0],
4224
+ setShowPromoInput = _useState10[1];
4225
+
4226
+ var _useState11 = React.useState(false),
4227
+ promoCodeIsApplied = _useState11[0],
4228
+ setPromoCodeIsApplied = _useState11[1];
4019
4229
 
4020
4230
  React.useEffect(function () {
4021
4231
  if (typeof window !== 'undefined') {
@@ -4032,62 +4242,102 @@ var TicketsContainer = function TicketsContainer(_ref) {
4032
4242
  }
4033
4243
  }, []);
4034
4244
  React.useEffect(function () {
4035
- function getTicketsApi() {
4036
- return _getTicketsApi.apply(this, arguments);
4037
- }
4245
+ getTicketsApi();
4246
+ }, [eventId, promoCodeUpdated]);
4038
4247
 
4039
- function _getTicketsApi() {
4040
- _getTicketsApi = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
4041
- var response, attributes;
4042
- return runtime_1.wrap(function _callee$(_context) {
4043
- while (1) {
4044
- switch (_context.prev = _context.next) {
4045
- case 0:
4046
- _context.prev = 0;
4047
- setIsLoading(true);
4048
- _context.next = 4;
4049
- return getTickets(eventId, promoCodeUpdated);
4050
-
4051
- case 4:
4052
- response = _context.sent;
4053
-
4054
- if (response.data.success) {
4055
- setCustomHeader(response);
4056
- attributes = _get(response, 'data.data.attributes');
4057
- setPromoCodeIsApplied(attributes.ValidPromoCode);
4058
- setTickets(_get(attributes, 'tickets'));
4059
- setShowWaitingList(attributes.showWaitingList);
4060
- onGetTicketsSuccess(response.data);
4061
- }
4248
+ var handleLogout = function handleLogout() {
4249
+ if (isWindowDefined) {
4250
+ window.localStorage.removeItem('access_token');
4251
+ window.localStorage.removeItem('user_data');
4252
+ setIsLogged(false);
4062
4253
 
4063
- _context.next = 11;
4064
- break;
4254
+ var _event = new window.CustomEvent('tf-logout');
4065
4255
 
4066
- case 8:
4067
- _context.prev = 8;
4068
- _context.t0 = _context["catch"](0);
4256
+ window.document.dispatchEvent(_event);
4257
+ }
4258
+ };
4069
4259
 
4070
- if (axios.isAxiosError(_context.t0)) {
4071
- onGetTicketsError(_context.t0);
4072
- }
4260
+ var handleExternalLogin = function handleExternalLogin() {
4261
+ setIsLogged(true);
4262
+ };
4073
4263
 
4074
- case 11:
4075
- _context.prev = 11;
4076
- setIsLoading(false);
4077
- return _context.finish(11);
4264
+ var handleOnClose = function handleOnClose() {
4265
+ setShowLoginModal(false);
4266
+ };
4078
4267
 
4079
- case 14:
4080
- case "end":
4081
- return _context.stop();
4082
- }
4083
- }
4084
- }, _callee, null, [[0, 8, 11, 14]]);
4085
- }));
4086
- return _getTicketsApi.apply(this, arguments);
4268
+ var handleOnLogin = function handleOnLogin() {
4269
+ setShowLoginModal(false);
4270
+ setIsLogged(true);
4271
+
4272
+ if (onLoginSuccess) {
4273
+ onLoginSuccess();
4087
4274
  }
4275
+ };
4088
4276
 
4089
- getTicketsApi();
4090
- }, [eventId, promoCodeUpdated]);
4277
+ function getTicketsApi() {
4278
+ return _getTicketsApi.apply(this, arguments);
4279
+ }
4280
+
4281
+ function _getTicketsApi() {
4282
+ _getTicketsApi = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
4283
+ var response, eventResponse, attributes, _event2;
4284
+
4285
+ return runtime_1.wrap(function _callee2$(_context2) {
4286
+ while (1) {
4287
+ switch (_context2.prev = _context2.next) {
4288
+ case 0:
4289
+ _context2.prev = 0;
4290
+ setIsLoading(true);
4291
+ _context2.next = 4;
4292
+ return getTickets(eventId, promoCodeUpdated);
4293
+
4294
+ case 4:
4295
+ response = _context2.sent;
4296
+ _context2.next = 7;
4297
+ return getEvent(eventId);
4298
+
4299
+ case 7:
4300
+ eventResponse = _context2.sent;
4301
+
4302
+ if (response.data.success) {
4303
+ setCustomHeader(response);
4304
+ attributes = _get(response, 'data.data.attributes');
4305
+ setPromoCodeIsApplied(attributes.ValidPromoCode);
4306
+ setTickets(_get(attributes, 'tickets'));
4307
+ setShowWaitingList(attributes.showWaitingList);
4308
+ onGetTicketsSuccess(response.data);
4309
+ }
4310
+
4311
+ if (eventResponse.data.success) {
4312
+ _event2 = _get(eventResponse, 'data.data.attributes');
4313
+ setEvent(_event2);
4314
+ }
4315
+
4316
+ _context2.next = 15;
4317
+ break;
4318
+
4319
+ case 12:
4320
+ _context2.prev = 12;
4321
+ _context2.t0 = _context2["catch"](0);
4322
+
4323
+ if (axios.isAxiosError(_context2.t0)) {
4324
+ onGetTicketsError(_context2.t0);
4325
+ }
4326
+
4327
+ case 15:
4328
+ _context2.prev = 15;
4329
+ setIsLoading(false);
4330
+ return _context2.finish(15);
4331
+
4332
+ case 18:
4333
+ case "end":
4334
+ return _context2.stop();
4335
+ }
4336
+ }
4337
+ }, _callee2, null, [[0, 12, 15, 18]]);
4338
+ }));
4339
+ return _getTicketsApi.apply(this, arguments);
4340
+ }
4091
4341
 
4092
4342
  var handleTicketSelect = function handleTicketSelect(key, value) {
4093
4343
  setSelectedTickets(function (prevState) {
@@ -4101,15 +4351,21 @@ var TicketsContainer = function TicketsContainer(_ref) {
4101
4351
  });
4102
4352
  };
4103
4353
 
4354
+ var handleOrdersClick = function handleOrdersClick() {
4355
+ if (isWindowDefined) {
4356
+ window.location.href = '/orders';
4357
+ }
4358
+ };
4359
+
4104
4360
  var handleBook = /*#__PURE__*/function () {
4105
- var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
4361
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
4106
4362
  var _product_options, _product_options2, _ticket_types;
4107
4363
 
4108
- 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;
4364
+ 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, skipBillingPage, nameIsRequired, ageIsRequired, hash, _isWindowDefined, userData, access_token, ticketsQuantity, checkoutBody, checkoutResult;
4109
4365
 
4110
- return runtime_1.wrap(function _callee2$(_context2) {
4366
+ return runtime_1.wrap(function _callee$(_context) {
4111
4367
  while (1) {
4112
- switch (_context2.prev = _context2.next) {
4368
+ switch (_context.prev = _context.next) {
4113
4369
  case 0:
4114
4370
  setHandleBookIsLoading(true);
4115
4371
  ticket = _find(tickets, function (item) {
@@ -4130,45 +4386,74 @@ var TicketsContainer = function TicketsContainer(_ref) {
4130
4386
  }, _ticket_types)
4131
4387
  }
4132
4388
  };
4133
- _context2.prev = 6;
4134
- _context2.next = 9;
4389
+ _context.prev = 6;
4390
+ _context.next = 9;
4135
4391
  return addToCart(eventId, data);
4136
4392
 
4137
4393
  case 9:
4138
- result = _context2.sent;
4139
-
4140
- if (result.status === 200) {
4141
- setCustomHeader(result);
4142
- onAddToCartSuccess({
4143
- skip_billing_page: (_result$data$data$att = result == null ? void 0 : (_result$data = result.data) == null ? void 0 : (_result$data$data = _result$data.data) == null ? void 0 : (_result$data$data$att2 = _result$data$data.attributes) == null ? void 0 : _result$data$data$att2.skip_billing_page) != null ? _result$data$data$att : false,
4144
- names_required: (_result$data$data$att3 = result == null ? void 0 : (_result$data2 = result.data) == null ? void 0 : (_result$data2$data = _result$data2.data) == null ? void 0 : (_result$data2$data$at = _result$data2$data.attributes) == null ? void 0 : _result$data2$data$at.names_required) != null ? _result$data$data$att3 : false,
4145
- age_required: (_result$data$data$att4 = result == null ? void 0 : (_result$data3 = result.data) == null ? void 0 : (_result$data3$data = _result$data3.data) == null ? void 0 : (_result$data3$data$at = _result$data3$data.attributes) == null ? void 0 : _result$data3$data$at.age_required) != null ? _result$data$data$att4 : false,
4146
- event_id: String(eventId)
4147
- });
4394
+ result = _context.sent;
4395
+
4396
+ if (!(result.status === 200)) {
4397
+ _context.next = 27;
4398
+ break;
4148
4399
  }
4149
4400
 
4150
- _context2.next = 16;
4401
+ setCustomHeader(result);
4402
+ skipBillingPage = (_result$data$data$att = result == null ? void 0 : (_result$data = result.data) == null ? void 0 : (_result$data$data = _result$data.data) == null ? void 0 : (_result$data$data$att2 = _result$data$data.attributes) == null ? void 0 : _result$data$data$att2.skip_billing_page) != null ? _result$data$data$att : false;
4403
+ nameIsRequired = (_result$data$data$att3 = result == null ? void 0 : (_result$data2 = result.data) == null ? void 0 : (_result$data2$data = _result$data2.data) == null ? void 0 : (_result$data2$data$at = _result$data2$data.attributes) == null ? void 0 : _result$data2$data$at.names_required) != null ? _result$data$data$att3 : false;
4404
+ ageIsRequired = (_result$data$data$att4 = result == null ? void 0 : (_result$data3 = result.data) == null ? void 0 : (_result$data3$data = _result$data3.data) == null ? void 0 : (_result$data3$data$at = _result$data3$data.attributes) == null ? void 0 : _result$data3$data$at.age_required) != null ? _result$data$data$att4 : false;
4405
+ hash = '';
4406
+
4407
+ if (!skipBillingPage) {
4408
+ _context.next = 26;
4409
+ break;
4410
+ }
4411
+
4412
+ // Get user data for checkout data
4413
+ _isWindowDefined = typeof window !== 'undefined';
4414
+ userData = _isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
4415
+ access_token = _isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
4416
+ ticketsQuantity = Object.keys(selectedTickets).length;
4417
+ checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, userData);
4418
+ _context.next = 24;
4419
+ return postOnCheckout(checkoutBody, access_token);
4420
+
4421
+ case 24:
4422
+ checkoutResult = _context.sent;
4423
+ hash = _get(checkoutResult, 'data.data.attributes.hash');
4424
+
4425
+ case 26:
4426
+ onAddToCartSuccess({
4427
+ skip_billing_page: skipBillingPage,
4428
+ names_required: nameIsRequired,
4429
+ age_required: ageIsRequired,
4430
+ event_id: String(eventId),
4431
+ hash: hash
4432
+ });
4433
+
4434
+ case 27:
4435
+ _context.next = 32;
4151
4436
  break;
4152
4437
 
4153
- case 13:
4154
- _context2.prev = 13;
4155
- _context2.t0 = _context2["catch"](6);
4438
+ case 29:
4439
+ _context.prev = 29;
4440
+ _context.t0 = _context["catch"](6);
4156
4441
 
4157
- if (axios.isAxiosError(_context2.t0)) {
4158
- onAddToCartError(_context2.t0);
4442
+ if (axios.isAxiosError(_context.t0)) {
4443
+ onAddToCartError(_context.t0);
4159
4444
  }
4160
4445
 
4161
- case 16:
4162
- _context2.prev = 16;
4446
+ case 32:
4447
+ _context.prev = 32;
4163
4448
  setHandleBookIsLoading(false);
4164
- return _context2.finish(16);
4449
+ return _context.finish(32);
4165
4450
 
4166
- case 19:
4451
+ case 35:
4167
4452
  case "end":
4168
- return _context2.stop();
4453
+ return _context.stop();
4169
4454
  }
4170
4455
  }
4171
- }, _callee2, null, [[6, 13, 16, 19]]);
4456
+ }, _callee, null, [[6, 29, 32, 35]]);
4172
4457
  }));
4173
4458
 
4174
4459
  return function handleBook() {
@@ -4176,10 +4461,29 @@ var TicketsContainer = function TicketsContainer(_ref) {
4176
4461
  };
4177
4462
  }();
4178
4463
 
4464
+ var updateTickets = function updateTickets() {
4465
+ getTicketsApi();
4466
+ };
4467
+
4179
4468
  var isAllTicketsSoldOut = !_some(tickets, function (item) {
4180
4469
  return !(item.sold_out || item.soldOut);
4181
4470
  });
4182
- return React__default.createElement("div", {
4471
+ var themeMui = material.createTheme(themeOptions);
4472
+ React.useEffect(function () {
4473
+ isWindowDefined && window.document.addEventListener('custom-logout', handleLogout);
4474
+ return function () {
4475
+ isWindowDefined && window.document.removeEventListener('custom-logout', handleLogout);
4476
+ };
4477
+ }, []);
4478
+ React.useEffect(function () {
4479
+ isWindowDefined && window.document.addEventListener('custom-login', handleExternalLogin);
4480
+ return function () {
4481
+ isWindowDefined && window.document.removeEventListener('custom-login', handleExternalLogin);
4482
+ };
4483
+ }, []);
4484
+ return React__default.createElement(privateTheming.ThemeProvider, {
4485
+ theme: themeMui
4486
+ }, React__default.createElement("div", {
4183
4487
  className: "get-tickets-page " + theme,
4184
4488
  style: contentStyle
4185
4489
  }, isLoading ? React__default.createElement(Loader$1, null) : React__default.createElement("div", null, React__default.createElement(TicketsSection, {
@@ -4187,10 +4491,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
4187
4491
  selectedTickets: selectedTickets,
4188
4492
  handleTicketSelect: handleTicketSelect,
4189
4493
  promoCodeIsApplied: promoCodeIsApplied
4190
- }), showWaitingList && React__default.createElement(WaitingList, {
4494
+ }), event != null && event.salesEnded ? React__default.createElement("p", null, "Sales for this event are closed.") : event != null && event.salesStart ? React__default.createElement(Countdown, {
4495
+ startDate: event.salesStart,
4496
+ timezone: event.timezone,
4497
+ title: "Sales start in:",
4498
+ message: "No tickets are currently available for this event.",
4499
+ callback: updateTickets
4500
+ }) : null, showWaitingList && event.salesStarted && React__default.createElement(WaitingList, {
4191
4501
  tickets: tickets,
4192
- eventId: eventId,
4193
- isPromotionsEnabled: isPromotionsEnabled
4502
+ eventId: eventId
4194
4503
  }), React__default.createElement(PromoCodeSection, {
4195
4504
  promoCode: promoCode,
4196
4505
  promoCodeIsApplied: promoCodeIsApplied,
@@ -4200,11 +4509,28 @@ var TicketsContainer = function TicketsContainer(_ref) {
4200
4509
  setShowPromoInput: setShowPromoInput,
4201
4510
  isPromotionsEnabled: isPromotionsEnabled,
4202
4511
  isAllTicketsSoldOut: isAllTicketsSoldOut
4203
- }), !isAllTicketsSoldOut && React__default.createElement(Button, {
4512
+ }), !isAllTicketsSoldOut && React__default.createElement(Button$1, {
4204
4513
  "aria-hidden": true,
4205
4514
  className: "book-button " + (handleBookIsLoading || _isEmpty(selectedTickets) || Object.values(selectedTickets)[0] === 0 ? 'disabled' : ''),
4206
4515
  onClick: !handleBookIsLoading && !_isEmpty(selectedTickets) && Object.values(selectedTickets)[0] > 0 ? handleBook : function () {}
4207
- }, getTicketsLabel || 'GET TICKETS')));
4516
+ }, getTicketsLabel || 'GET TICKETS'), isLogged ? React__default.createElement("div", {
4517
+ className: "session-wrapper"
4518
+ }, React__default.createElement("span", {
4519
+ className: "session-container"
4520
+ }, React__default.createElement(Button$1, {
4521
+ variant: "outline-light",
4522
+ className: "session-buttons",
4523
+ onClick: handleOrdersClick
4524
+ }, "My Orders")), React__default.createElement("span", {
4525
+ className: "session-container"
4526
+ }, React__default.createElement(Button$1, {
4527
+ variant: "outline-light",
4528
+ className: "session-buttons",
4529
+ onClick: handleLogout
4530
+ }, "Log out"))) : ''), showLoginModal ? React__default.createElement(LoginModal, {
4531
+ onClose: handleOnClose,
4532
+ onLogin: handleOnLogin
4533
+ }) : null));
4208
4534
  };
4209
4535
 
4210
4536
  var EventInfoItem = function EventInfoItem(_ref) {
@@ -4412,9 +4738,9 @@ var TicketsTable = function TicketsTable(_ref) {
4412
4738
  var _ref$tickets = _ref.tickets,
4413
4739
  tickets = _ref$tickets === void 0 ? [] : _ref$tickets;
4414
4740
  return React__default.createElement("div", {
4415
- className: 'tickets-box'
4741
+ className: "tickets-box"
4416
4742
  }, React__default.createElement("h4", {
4417
- className: 'sub-title'
4743
+ className: "sub-title"
4418
4744
  }, "Your Tickets"), React__default.createElement(TableContainer, {
4419
4745
  component: Paper
4420
4746
  }, React__default.createElement(Table, {
@@ -4424,14 +4750,16 @@ var TicketsTable = function TicketsTable(_ref) {
4424
4750
 
4425
4751
  return React__default.createElement(React.Fragment, {
4426
4752
  key: index
4427
- }, 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, React__default.createElement("a", {
4428
- className: 'download-button',
4429
- href: ticket.pdf_link,
4430
- download: true
4753
+ }, 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, React__default.createElement("span", {
4754
+ "aria-hidden": true,
4755
+ className: "download-button",
4756
+ onClick: function onClick() {
4757
+ return downloadPDF(ticket.pdf_link);
4758
+ }
4431
4759
  }, "Download"))), !!((_ticket$add_ons = ticket.add_ons) != null && _ticket$add_ons.length) && React__default.createElement(TableRow, null, React__default.createElement(TableCell, {
4432
4760
  colSpan: 5
4433
4761
  }, React__default.createElement(Table, {
4434
- className: 'ticket-add-on-table'
4762
+ className: "ticket-add-on-table"
4435
4763
  }, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, React__default.createElement(TableCell, null, "Add-On"), React__default.createElement(TableCell, null, "Status"))), React__default.createElement(TableBody, null, ticket.add_ons.map(function (add_on, index) {
4436
4764
  return React__default.createElement(TableRow, {
4437
4765
  key: index