tf-checkout-react 1.0.77 → 1.0.81

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 (39) hide show
  1. package/dist/api/index.d.ts +1 -0
  2. package/dist/components/billing-info-container/index.d.ts +1 -1
  3. package/dist/components/common/FormikPhoneNumberField.d.ts +1 -1
  4. package/dist/components/countdown/index.d.ts +11 -0
  5. package/dist/components/orderDetailsContainer/ticketsTable.d.ts +13 -1
  6. package/dist/components/paymentContainer/index.d.ts +5 -2
  7. package/dist/components/ticketsContainer/PromoCodeSection.d.ts +2 -1
  8. package/dist/components/ticketsContainer/index.d.ts +10 -1
  9. package/dist/components/waitingList/index.d.ts +1 -2
  10. package/dist/hooks/usePrevious.d.ts +1 -0
  11. package/dist/tf-checkout-react.cjs.development.js +458 -156
  12. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  13. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  14. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  15. package/dist/tf-checkout-react.esm.js +460 -158
  16. package/dist/tf-checkout-react.esm.js.map +1 -1
  17. package/dist/tf-checkout-styles.css +1 -1
  18. package/dist/utils/downloadPDF.d.ts +1 -0
  19. package/dist/utils/index.d.ts +1 -0
  20. package/package.json +2 -1
  21. package/src/api/index.ts +9 -0
  22. package/src/components/billing-info-container/index.tsx +19 -6
  23. package/src/components/common/CheckboxField.tsx +13 -9
  24. package/src/components/common/FormikPhoneNumberField.tsx +2 -1
  25. package/src/components/countdown/index.tsx +89 -0
  26. package/src/components/countdown/style.css +10 -0
  27. package/src/components/loginModal/index.tsx +2 -0
  28. package/src/components/orderDetailsContainer/ticketsTable.tsx +66 -60
  29. package/src/components/paymentContainer/index.tsx +6 -3
  30. package/src/components/stripePayment/index.tsx +3 -3
  31. package/src/components/ticketsContainer/PromoCodeSection.tsx +46 -32
  32. package/src/components/ticketsContainer/TicketsSection.tsx +10 -6
  33. package/src/components/ticketsContainer/index.tsx +191 -70
  34. package/src/components/ticketsContainer/style.css +7 -0
  35. package/src/components/waitingList/index.tsx +3 -9
  36. package/src/components/waitingList/style.css +4 -2
  37. package/src/hooks/usePrevious.tsx +9 -0
  38. package/src/utils/downloadPDF.tsx +30 -0
  39. package/src/utils/index.ts +2 -1
@@ -12,6 +12,7 @@ var _identity = _interopDefault(require('lodash/identity'));
12
12
  var _map = _interopDefault(require('lodash/map'));
13
13
  var _get = _interopDefault(require('lodash/get'));
14
14
  var _includes = _interopDefault(require('lodash/includes'));
15
+ var _isEqual = _interopDefault(require('lodash/isEqual'));
15
16
  var axios = _interopDefault(require('axios'));
16
17
  var _forEach = _interopDefault(require('lodash/forEach'));
17
18
  var material = require('@mui/material');
@@ -44,6 +45,8 @@ var _has = _interopDefault(require('lodash/has'));
44
45
  var FormControl = _interopDefault(require('@mui/material/FormControl'));
45
46
  var MenuItem = _interopDefault(require('@mui/material/MenuItem'));
46
47
  var SVG = _interopDefault(require('react-inlinesvg'));
48
+ var moment = _interopDefault(require('moment-timezone'));
49
+ var privateTheming = require('@mui/private-theming');
47
50
  var Table = _interopDefault(require('@mui/material/Table'));
48
51
  var TableBody = _interopDefault(require('@mui/material/TableBody'));
49
52
  var TableCell = _interopDefault(require('@mui/material/TableCell'));
@@ -994,6 +997,61 @@ var ErrorFocusInternal = /*#__PURE__*/function (_Component) {
994
997
 
995
998
  var ErrorFocus = /*#__PURE__*/formik.connect(ErrorFocusInternal);
996
999
 
1000
+ var downloadPDF = function downloadPDF(pdfUrl) {
1001
+ if (typeof window === 'undefined') return;
1002
+ var accessToken = localStorage.getItem('access_token');
1003
+ if (!accessToken) return;
1004
+ fetch(pdfUrl, {
1005
+ headers: {
1006
+ Authorization: "Bearer " + accessToken
1007
+ }
1008
+ }).then( /*#__PURE__*/function () {
1009
+ var _ref = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(response) {
1010
+ var blobValue, fileNameHeader, fileName;
1011
+ return runtime_1.wrap(function _callee$(_context) {
1012
+ while (1) {
1013
+ switch (_context.prev = _context.next) {
1014
+ case 0:
1015
+ _context.next = 2;
1016
+ return response.blob();
1017
+
1018
+ case 2:
1019
+ blobValue = _context.sent;
1020
+ fileNameHeader = response.headers.get("content-disposition") || '';
1021
+ fileName = fileNameHeader.split('"')[1];
1022
+ return _context.abrupt("return", {
1023
+ blobValue: blobValue,
1024
+ fileName: fileName
1025
+ });
1026
+
1027
+ case 6:
1028
+ case "end":
1029
+ return _context.stop();
1030
+ }
1031
+ }
1032
+ }, _callee);
1033
+ }));
1034
+
1035
+ return function (_x) {
1036
+ return _ref.apply(this, arguments);
1037
+ };
1038
+ }()).then(function (_ref2) {
1039
+ var blobValue = _ref2.blobValue,
1040
+ fileName = _ref2.fileName;
1041
+ if (!fileName) return;
1042
+ var file = new Blob([blobValue], {
1043
+ type: 'application/pdf'
1044
+ });
1045
+ var fileURL = URL.createObjectURL(file);
1046
+ var link = document.createElement('a');
1047
+ link.href = fileURL;
1048
+ link.setAttribute('download', fileName);
1049
+ document.body.appendChild(link);
1050
+ link.click();
1051
+ document.body.removeChild(link);
1052
+ });
1053
+ };
1054
+
997
1055
  var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, logedInValues) {
998
1056
  var ticket_holders = [];
999
1057
  var first_name = _get(logedInValues, 'firstName') || _get(logedInValues, 'first_name') || '';
@@ -1134,6 +1192,14 @@ var handleSetAccessToken = function handleSetAccessToken(token) {
1134
1192
  }
1135
1193
  }
1136
1194
  };
1195
+ function getEvent(id) {
1196
+ var response = publicRequest.get("v1/event/" + id, {
1197
+ headers: ttfHeaders
1198
+ })["catch"](function (error) {
1199
+ throw error;
1200
+ });
1201
+ return response;
1202
+ }
1137
1203
  function getTickets(id, promoCode) {
1138
1204
  var response = publicRequest.get("v1/event/" + id + "/tickets/", {
1139
1205
  headers: promoCode ? _extends({}, ttfHeaders, {
@@ -1269,7 +1335,7 @@ var LoginModal = function LoginModal(_ref) {
1269
1335
  },
1270
1336
  onSubmit: function () {
1271
1337
  var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(_ref2) {
1272
- var email, password, bodyFormData, resAutorize, bodyFormDataToken, resAccessToken, accessToken, profileResponse, profileSpecifiedData, profileDataObj, _e$response, _e$response$data, _error;
1338
+ var email, password, bodyFormData, resAutorize, bodyFormDataToken, resAccessToken, accessToken, profileResponse, profileSpecifiedData, profileDataObj, event, _e$response, _e$response$data, _error;
1273
1339
 
1274
1340
  return runtime_1.wrap(function _callee$(_context) {
1275
1341
  while (1) {
@@ -1348,6 +1414,8 @@ var LoginModal = function LoginModal(_ref) {
1348
1414
  if (typeof window !== 'undefined') {
1349
1415
  window.localStorage.setItem('user_data', JSON.stringify(profileDataObj));
1350
1416
  window.localStorage.setItem('access_token', accessToken);
1417
+ event = new window.CustomEvent('tf-login');
1418
+ window.document.dispatchEvent(event);
1351
1419
  }
1352
1420
 
1353
1421
  onLogin();
@@ -1853,18 +1921,22 @@ var CustomField = function CustomField(_ref) {
1853
1921
 
1854
1922
  var _excluded$1 = ["label", "field", "selectOptions", "theme", "setFieldValue"];
1855
1923
  var CheckboxField = function CheckboxField(_ref) {
1924
+ var _rest$form, _field$name, _rest$form2, _field$name2;
1925
+
1856
1926
  var label = _ref.label,
1857
1927
  field = _ref.field,
1858
1928
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1859
1929
 
1860
1930
  var customTheme = styles.useTheme();
1861
- return React__default.createElement(FormGroup, null, React__default.createElement(FormControlLabel, {
1931
+ return React__default.createElement(material.FormControl, {
1932
+ 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 : ""])
1933
+ }, React__default.createElement(FormGroup, null, React__default.createElement(FormControlLabel, {
1862
1934
  control: React__default.createElement(Checkbox, Object.assign({}, field, rest)),
1863
1935
  label: label,
1864
1936
  componentsProps: {
1865
1937
  typography: customTheme == null ? void 0 : customTheme.checkbox
1866
1938
  }
1867
- }));
1939
+ })), !!(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);
1868
1940
  };
1869
1941
 
1870
1942
  var SelectField = function SelectField(_ref) {
@@ -1998,6 +2070,7 @@ var FormikPhoneNumberField = function FormikPhoneNumberField(_ref) {
1998
2070
  _ref$form = _ref.form,
1999
2071
  touched = _ref$form.touched,
2000
2072
  errors = _ref$form.errors,
2073
+ initialValues = _ref$form.initialValues,
2001
2074
  setFieldValue = _ref.setFieldValue,
2002
2075
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
2003
2076
 
@@ -2007,6 +2080,7 @@ var FormikPhoneNumberField = function FormikPhoneNumberField(_ref) {
2007
2080
  var customTheme = styles.useTheme();
2008
2081
  return React__default.createElement(MuiPhoneNumber, Object.assign({
2009
2082
  name: 'phone',
2083
+ value: initialValues.phone,
2010
2084
  onChange: function onChange(e) {
2011
2085
  return setFieldValue("phone", removePlusSign(e));
2012
2086
  },
@@ -2027,6 +2101,14 @@ var FormikPhoneNumberField = function FormikPhoneNumberField(_ref) {
2027
2101
  }, rest));
2028
2102
  };
2029
2103
 
2104
+ var usePrevious = function usePrevious(value) {
2105
+ var ref = React.useRef();
2106
+ React.useEffect(function () {
2107
+ ref.current = value;
2108
+ });
2109
+ return ref.current;
2110
+ };
2111
+
2030
2112
  var LogicRunner = function LogicRunner(_ref) {
2031
2113
  var values = _ref.values,
2032
2114
  setStates = _ref.setStates,
@@ -2164,7 +2246,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2164
2246
  _ref3$onGetStatesErro = _ref3.onGetStatesError,
2165
2247
  onGetStatesError = _ref3$onGetStatesErro === void 0 ? function () {} : _ref3$onGetStatesErro,
2166
2248
  _ref3$onGetProfileDat = _ref3.onGetProfileDataSuccess,
2167
- onGetProfileDataSuccess = _ref3$onGetProfileDat === void 0 ? function () {} : _ref3$onGetProfileDat,
2249
+ _onGetProfileDataSuccess = _ref3$onGetProfileDat === void 0 ? function () {} : _ref3$onGetProfileDat,
2168
2250
  _ref3$onGetProfileDat2 = _ref3.onGetProfileDataError,
2169
2251
  onGetProfileDataError = _ref3$onGetProfileDat2 === void 0 ? function () {} : _ref3$onGetProfileDat2,
2170
2252
  _ref3$onAuthorizeSucc = _ref3.onAuthorizeSuccess,
@@ -2180,6 +2262,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2180
2262
  accountInfoTitle = _ref3$accountInfoTitl === void 0 ? '' : _ref3$accountInfoTitl,
2181
2263
  hideLogo = _ref3.hideLogo,
2182
2264
  themeOptions = _ref3.themeOptions;
2265
+
2183
2266
  var themeMui = styles$1.createTheme(themeOptions);
2184
2267
  var isWindowDefined = typeof window !== 'undefined';
2185
2268
  var userData = isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
@@ -2254,9 +2337,14 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2254
2337
 
2255
2338
  var optedInFieldValue = _get(cartInfoData, 'optedIn', false);
2256
2339
 
2257
- var hideTtfOptIn = _get(cartInfoData, 'hide_ttf_opt_in', true);
2340
+ var ttfOptIn = _get(cartInfoData, 'ttfOptIn', false);
2341
+
2342
+ var hideTtfOptIn = _get(cartInfoData, 'hide_ttf_opt_in', true); // Get prevProps
2258
2343
 
2259
- if (!_get(dataWithUniqueIds, '[0].uniqueId')) {
2344
+
2345
+ var prevData = usePrevious(data);
2346
+
2347
+ if (!_get(dataWithUniqueIds, '[0].uniqueId') || !_isEqual(prevData, data)) {
2260
2348
  setDataWithUniqueIds(assingUniqueIds(data));
2261
2349
  }
2262
2350
 
@@ -2411,7 +2499,8 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2411
2499
  lastName: profileDataObj.last_name
2412
2500
  }));
2413
2501
  window.localStorage.setItem('user_data', JSON.stringify(profileDataObj));
2414
- onGetProfileDataSuccess(userDataResponse.data);
2502
+
2503
+ _onGetProfileDataSuccess(userDataResponse.data);
2415
2504
 
2416
2505
  case 10:
2417
2506
  _context4.next = 15;
@@ -2447,7 +2536,8 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2447
2536
  initialValues: getInitialValues(dataWithUniqueIds, _extends({}, initialValues, {
2448
2537
  country: _get(userData, 'country', '') || "1",
2449
2538
  state: _get(userData, 'state', '') || "1",
2450
- brand_opt_in: optedInFieldValue
2539
+ brand_opt_in: optedInFieldValue,
2540
+ ttf_opt_in: ttfOptIn
2451
2541
  }), userValues),
2452
2542
  enableReinitialize: true,
2453
2543
  onSubmit: function () {
@@ -2691,13 +2781,13 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2691
2781
  var groupClassname = group.groupClassname,
2692
2782
  groupItems = group.groupItems;
2693
2783
  return React__default.createElement("div", {
2694
- key: group.uniqueId
2784
+ key: group.id
2695
2785
  }, React__default.createElement("div", {
2696
2786
  className: groupClassname
2697
2787
  }, _map(groupItems, function (element) {
2698
2788
  return React__default.createElement("div", {
2699
2789
  className: element.className,
2700
- key: element.uniqueId
2790
+ key: element.name
2701
2791
  }, React__default.createElement(formik.Field, {
2702
2792
  name: element.name + "-" + index,
2703
2793
  label: element.label,
@@ -2731,7 +2821,11 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2731
2821
  userExpired: userExpired,
2732
2822
  onAuthorizeSuccess: onAuthorizeSuccess,
2733
2823
  onAuthorizeError: onAuthorizeError,
2734
- onGetProfileDataSuccess: onGetProfileDataSuccess,
2824
+ onGetProfileDataSuccess: function onGetProfileDataSuccess(data) {
2825
+ fetchCart();
2826
+
2827
+ _onGetProfileDataSuccess(data);
2828
+ },
2735
2829
  onGetProfileDataError: onGetProfileDataError
2736
2830
  }), showModalRegister && React__default.createElement(RegisterModal, {
2737
2831
  onClose: function onClose() {
@@ -2740,7 +2834,11 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2740
2834
  onRegister: function onRegister() {
2741
2835
  setShowModalRegister(false);
2742
2836
  },
2743
- onGetProfileDataSuccess: onGetProfileDataSuccess,
2837
+ onGetProfileDataSuccess: function onGetProfileDataSuccess(data) {
2838
+ fetchCart();
2839
+
2840
+ _onGetProfileDataSuccess(data);
2841
+ },
2744
2842
  onGetProfileDataError: onGetProfileDataError
2745
2843
  }));
2746
2844
  };
@@ -2964,7 +3062,7 @@ var CheckoutForm = function CheckoutForm(_ref) {
2964
3062
  }, React__default.createElement("span", {
2965
3063
  className: "card_label_text"
2966
3064
  }, "Card number"), React__default.createElement(reactStripeJs.CardNumberElement, {
2967
- options: _extends({}, options.style, stripeCardOptions),
3065
+ options: _extends({}, options, stripeCardOptions),
2968
3066
  onReady: _identity,
2969
3067
  onChange: _identity,
2970
3068
  onBlur: _identity,
@@ -2974,13 +3072,13 @@ var CheckoutForm = function CheckoutForm(_ref) {
2974
3072
  }, React__default.createElement("span", {
2975
3073
  className: "card_label_text"
2976
3074
  }, "Expiration date"), React__default.createElement(reactStripeJs.CardExpiryElement, {
2977
- options: _extends({}, options.style, stripeCardOptions)
3075
+ options: _extends({}, options, stripeCardOptions)
2978
3076
  })), React__default.createElement("label", {
2979
3077
  className: "cvc_element"
2980
3078
  }, React__default.createElement("span", {
2981
3079
  className: "card_label_text"
2982
3080
  }, "CVC"), React__default.createElement(reactStripeJs.CardCvcElement, {
2983
- options: _extends({}, options.style, stripeCardOptions)
3081
+ options: _extends({}, options, stripeCardOptions)
2984
3082
  })), !disableZipSection && React__default.createElement("label", {
2985
3083
  className: "zip_element"
2986
3084
  }, React__default.createElement("p", {
@@ -3072,7 +3170,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
3072
3170
  stripeCardOptions = _ref$stripeCardOption === void 0 ? {} : _ref$stripeCardOption,
3073
3171
  _ref$disableZipSectio = _ref.disableZipSection,
3074
3172
  disableZipSection = _ref$disableZipSectio === void 0 ? false : _ref$disableZipSectio,
3075
- themeOptions = _ref.themeOptions;
3173
+ themeOptions = _ref.themeOptions,
3174
+ elementsOptions = _ref.elementsOptions;
3076
3175
 
3077
3176
  var _useState = React.useState(initialReviewValues),
3078
3177
  reviewData = _useState[0],
@@ -3293,7 +3392,8 @@ var PaymentContainer = function PaymentContainer(_ref) {
3293
3392
  }, "Please provide your payment information"), showErrorText && React__default.createElement("p", {
3294
3393
  className: "payment_info__error"
3295
3394
  }, errorText), React__default.createElement("div", null, React__default.createElement(reactStripeJs.Elements, {
3296
- stripe: getStripePromise(reviewData)
3395
+ stripe: getStripePromise(reviewData),
3396
+ options: elementsOptions
3297
3397
  }, React__default.createElement(CheckoutForm, {
3298
3398
  stripe_client_secret: _get(reviewData, 'payment_method.stripe_client_secret'),
3299
3399
  total: orderData.total,
@@ -3776,12 +3876,14 @@ var TicketsSection = function TicketsSection(_ref) {
3776
3876
  style: {
3777
3877
  minWidth: 55
3778
3878
  }
3779
- }, React__default.createElement(TicketRow, {
3879
+ }, ticket.salesStarted ? React__default.createElement(TicketRow, {
3780
3880
  ticketTier: ticket,
3781
3881
  prevTicketTier: arr[i - 1],
3782
3882
  selectedTickets: selectedTickets,
3783
3883
  handleTicketSelect: ticketSelect
3784
- }))));
3884
+ }) : React__default.createElement("p", {
3885
+ className: 'ticket-not-started-message'
3886
+ }, "Sales not started"))));
3785
3887
  }));
3786
3888
  };
3787
3889
 
@@ -3801,8 +3903,7 @@ var generateQuantity = function generateQuantity(n) {
3801
3903
  var WaitingList = function WaitingList(_ref) {
3802
3904
  var _ref$tickets = _ref.tickets,
3803
3905
  tickets = _ref$tickets === void 0 ? {} : _ref$tickets,
3804
- eventId = _ref.eventId,
3805
- isPromotionsEnabled = _ref.isPromotionsEnabled;
3906
+ eventId = _ref.eventId;
3806
3907
 
3807
3908
  var _useState = React.useState(false),
3808
3909
  showSuccessMessage = _useState[0],
@@ -3877,9 +3978,7 @@ var WaitingList = function WaitingList(_ref) {
3877
3978
  className: "success-message"
3878
3979
  }, React__default.createElement("p", {
3879
3980
  className: "added-success-message"
3880
- }, "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", {
3881
- className: "no-tickets-text"
3882
- }, "No tickets are currently available for this event."), React__default.createElement("h2", null, "WAITING LIST"), React__default.createElement(formik.Formik, {
3981
+ }, "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, {
3883
3982
  initialValues: {
3884
3983
  ticketTypeId: '',
3885
3984
  quantity: '',
@@ -3969,10 +4068,42 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
3969
4068
  promoCodeIsApplied = _ref.promoCodeIsApplied,
3970
4069
  showPromoInput = _ref.showPromoInput,
3971
4070
  isPromotionsEnabled = _ref.isPromotionsEnabled,
3972
- isAllTicketsSoldOut = _ref.isAllTicketsSoldOut,
3973
4071
  setPromoCode = _ref.setPromoCode,
3974
4072
  setPromoCodeUpdated = _ref.setPromoCodeUpdated,
3975
- setShowPromoInput = _ref.setShowPromoInput;
4073
+ setShowPromoInput = _ref.setShowPromoInput,
4074
+ isAccessCodeEnabled = _ref.isAccessCodeEnabled;
4075
+ var isPromoCodeHasValue = !!promoCode.trim();
4076
+
4077
+ var renderInputField = function renderInputField() {
4078
+ return React__default.createElement("div", {
4079
+ className: "promo-code-block"
4080
+ }, React__default.createElement("div", {
4081
+ className: "promo-code-block"
4082
+ }, React__default.createElement("p", {
4083
+ className: "promo-code-text"
4084
+ }, isAccessCodeEnabled ? 'Access code required' : 'Promo code')), React__default.createElement("input", {
4085
+ className: "promo-code-input",
4086
+ placeholder: "",
4087
+ onChange: function onChange(e) {
4088
+ setPromoCode(e.target.value);
4089
+ },
4090
+ onKeyPress: function onKeyPress(event) {
4091
+ if (event.key === 'Enter' && isPromoCodeHasValue) {
4092
+ setPromoCodeUpdated(promoCode);
4093
+ setShowPromoInput(false);
4094
+ }
4095
+ }
4096
+ }), React__default.createElement(Button$1, {
4097
+ className: "promo-submit-button",
4098
+ onClick: function onClick() {
4099
+ if (isPromoCodeHasValue) {
4100
+ setPromoCodeUpdated(promoCode);
4101
+ setShowPromoInput(false);
4102
+ }
4103
+ }
4104
+ }, isAccessCodeEnabled ? 'ENTER' : 'APPLY'));
4105
+ };
4106
+
3976
4107
  return React__default.createElement("div", null, promoCodeIsApplied ? React__default.createElement("div", {
3977
4108
  className: "alert-info"
3978
4109
  }, React__default.createElement(SVG, {
@@ -3980,35 +4111,95 @@ var PromoCodeSection = function PromoCodeSection(_ref) {
3980
4111
  preProcessor: function preProcessor(code) {
3981
4112
  return code.replace(/fill=".*?"/g, 'fill="currentColor"');
3982
4113
  }
3983
- }), React__default.createElement("p", null, "PROMO CODE APPLIED SUCCESSFULLY")) : null, showPromoInput && React__default.createElement("div", {
3984
- className: "promo-code-block"
3985
- }, React__default.createElement("input", {
3986
- placeholder: "Promo Code",
3987
- onChange: function onChange(e) {
3988
- setPromoCode(e.target.value);
3989
- },
3990
- onKeyPress: function onKeyPress(event) {
3991
- if (event.key === 'Enter') {
3992
- setPromoCodeUpdated(promoCode);
3993
- }
3994
- }
3995
- }), React__default.createElement(Button$1, {
3996
- className: "promo-apply-button",
3997
- placeholder: "Promo Code",
3998
- onClick: function onClick() {
3999
- setPromoCodeUpdated(promoCode);
4000
- }
4001
- }, "Apply")), isPromotionsEnabled && !showPromoInput && isAllTicketsSoldOut && React__default.createElement("p", {
4002
- className: "promo-code-text"
4003
- }, "Access code needed"), isPromotionsEnabled && !showPromoInput ? React__default.createElement(Button$1, {
4114
+ }), React__default.createElement("p", {
4115
+ className: "promo-code-success"
4116
+ }, "PROMO CODE APPLIED SUCCESSFULLY")) : null, showPromoInput && renderInputField(), isPromotionsEnabled && !showPromoInput && !isAccessCodeEnabled ? React__default.createElement(Button$1, {
4004
4117
  className: "promo-code-button",
4005
4118
  placeholder: "Promo Codes",
4006
4119
  onClick: function onClick() {
4007
4120
  setShowPromoInput(true);
4008
4121
  }
4009
- }, "Got a promo code? Click here") : null);
4122
+ }, "Got a promo code? Click here") : !isPromotionsEnabled && !showPromoInput && isAccessCodeEnabled && !promoCodeIsApplied ? renderInputField() : null);
4123
+ };
4124
+
4125
+ var isTimeExpired = function isTimeExpired(startDate, timezone) {
4126
+ return !moment(startDate).isAfter(moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss'));
4010
4127
  };
4011
4128
 
4129
+ function Countdown(_ref) {
4130
+ var startDate = _ref.startDate,
4131
+ _ref$timezone = _ref.timezone,
4132
+ timezone = _ref$timezone === void 0 ? moment.tz.guess() : _ref$timezone,
4133
+ _ref$title = _ref.title,
4134
+ title = _ref$title === void 0 ? '' : _ref$title,
4135
+ _ref$message = _ref.message,
4136
+ message = _ref$message === void 0 ? '' : _ref$message,
4137
+ _ref$callback = _ref.callback,
4138
+ callback = _ref$callback === void 0 ? function () {} : _ref$callback;
4139
+
4140
+ var _useState = React.useState(''),
4141
+ duration = _useState[0],
4142
+ setDuration = _useState[1];
4143
+
4144
+ var _useState2 = React.useState(false),
4145
+ timeExpired = _useState2[0],
4146
+ setTimeExpired = _useState2[1];
4147
+
4148
+ React.useEffect(function () {
4149
+ setTimeExpired(isTimeExpired(startDate, timezone));
4150
+ }, []);
4151
+ React.useEffect(function () {
4152
+ var timer;
4153
+
4154
+ if (!timeExpired) {
4155
+ timer = setInterval(function () {
4156
+ if (isTimeExpired(startDate, timezone)) {
4157
+ clearInterval(timer);
4158
+ setTimeExpired(true);
4159
+ callback();
4160
+ }
4161
+
4162
+ var currentDate = moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss');
4163
+ var diffTime = moment(startDate).diff(currentDate);
4164
+ var duration = moment.duration(diffTime);
4165
+ var dateArr = {
4166
+ year: duration.years(),
4167
+ month: duration.months(),
4168
+ day: duration.days(),
4169
+ hour: duration.hours(),
4170
+ minute: duration.minutes(),
4171
+ second: duration.seconds()
4172
+ };
4173
+ var timeLeft = '';
4174
+
4175
+ for (var date in dateArr) {
4176
+ var unit = dateArr[date] === 1 ? date : date + 's';
4177
+ var val = String(dateArr[date]).length === 1 ? '0' + dateArr[date] : dateArr[date];
4178
+
4179
+ if (timeLeft) {
4180
+ timeLeft += ", " + val + " " + unit;
4181
+ } else if (dateArr[date]) {
4182
+ timeLeft += val + " " + unit;
4183
+ }
4184
+ }
4185
+
4186
+ setDuration(timeLeft);
4187
+ }, 1000);
4188
+ }
4189
+
4190
+ return function () {
4191
+ clearInterval(timer);
4192
+ };
4193
+ }, [timeExpired]);
4194
+ return React__default.createElement(React__default.Fragment, null, !timeExpired && duration && React__default.createElement("div", {
4195
+ className: 'countdown'
4196
+ }, React__default.createElement("div", null, React__default.createElement("p", {
4197
+ className: 'title'
4198
+ }, title), React__default.createElement("p", null, duration)), React__default.createElement("p", {
4199
+ className: 'message'
4200
+ }, message)));
4201
+ }
4202
+
4012
4203
  function Loader$1() {
4013
4204
  return React__default.createElement("div", {
4014
4205
  className: "loader-container"
@@ -4016,7 +4207,8 @@ function Loader$1() {
4016
4207
  }
4017
4208
 
4018
4209
  var TicketsContainer = function TicketsContainer(_ref) {
4019
- var getTicketsLabel = _ref.getTicketsLabel,
4210
+ var onLoginSuccess = _ref.onLoginSuccess,
4211
+ getTicketsLabel = _ref.getTicketsLabel,
4020
4212
  eventId = _ref.eventId,
4021
4213
  onAddToCartSuccess = _ref.onAddToCartSuccess,
4022
4214
  _ref$contentStyle = _ref.contentStyle,
@@ -4032,43 +4224,62 @@ var TicketsContainer = function TicketsContainer(_ref) {
4032
4224
  _ref$queryPromoCode = _ref.queryPromoCode,
4033
4225
  queryPromoCode = _ref$queryPromoCode === void 0 ? '' : _ref$queryPromoCode,
4034
4226
  _ref$isPromotionsEnab = _ref.isPromotionsEnabled,
4035
- isPromotionsEnabled = _ref$isPromotionsEnab === void 0 ? true : _ref$isPromotionsEnab;
4227
+ isPromotionsEnabled = _ref$isPromotionsEnab === void 0 ? true : _ref$isPromotionsEnab,
4228
+ themeOptions = _ref.themeOptions,
4229
+ _ref$isAccessCodeEnab = _ref.isAccessCodeEnabled,
4230
+ isAccessCodeEnabled = _ref$isAccessCodeEnab === void 0 ? false : _ref$isAccessCodeEnab,
4231
+ _ref$hideSessionButto = _ref.hideSessionButtons,
4232
+ hideSessionButtons = _ref$hideSessionButto === void 0 ? false : _ref$hideSessionButto;
4036
4233
 
4037
4234
  var _useState = React.useState({}),
4038
4235
  selectedTickets = _useState[0],
4039
4236
  setSelectedTickets = _useState[1];
4040
4237
 
4041
- var _useState2 = React.useState([]),
4042
- tickets = _useState2[0],
4043
- setTickets = _useState2[1];
4238
+ var isWindowDefined = typeof window !== 'undefined';
4044
4239
 
4045
- var _useState3 = React.useState(false),
4046
- showWaitingList = _useState3[0],
4047
- setShowWaitingList = _useState3[1];
4240
+ var _useState2 = React.useState(isWindowDefined ? !!window.localStorage.getItem('access_token') : false),
4241
+ isLogged = _useState2[0],
4242
+ setIsLogged = _useState2[1];
4048
4243
 
4049
- var _useState4 = React.useState(false),
4050
- isLoading = _useState4[0],
4051
- setIsLoading = _useState4[1];
4244
+ var _React$useState = React__default.useState(false),
4245
+ showLoginModal = _React$useState[0],
4246
+ setShowLoginModal = _React$useState[1];
4247
+
4248
+ var _useState3 = React.useState([]),
4249
+ tickets = _useState3[0],
4250
+ setTickets = _useState3[1];
4251
+
4252
+ var _useState4 = React.useState(null),
4253
+ event = _useState4[0],
4254
+ setEvent = _useState4[1];
4052
4255
 
4053
4256
  var _useState5 = React.useState(false),
4054
- handleBookIsLoading = _useState5[0],
4055
- setHandleBookIsLoading = _useState5[1];
4257
+ showWaitingList = _useState5[0],
4258
+ setShowWaitingList = _useState5[1];
4056
4259
 
4057
- var _useState6 = React.useState(''),
4058
- promoCode = _useState6[0],
4059
- setPromoCode = _useState6[1];
4260
+ var _useState6 = React.useState(false),
4261
+ isLoading = _useState6[0],
4262
+ setIsLoading = _useState6[1];
4060
4263
 
4061
- var _useState7 = React.useState(queryPromoCode),
4062
- promoCodeUpdated = _useState7[0],
4063
- setPromoCodeUpdated = _useState7[1];
4264
+ var _useState7 = React.useState(false),
4265
+ handleBookIsLoading = _useState7[0],
4266
+ setHandleBookIsLoading = _useState7[1];
4064
4267
 
4065
- var _useState8 = React.useState(false),
4066
- showPromoInput = _useState8[0],
4067
- setShowPromoInput = _useState8[1];
4268
+ var _useState8 = React.useState(''),
4269
+ promoCode = _useState8[0],
4270
+ setPromoCode = _useState8[1];
4068
4271
 
4069
- var _useState9 = React.useState(false),
4070
- promoCodeIsApplied = _useState9[0],
4071
- setPromoCodeIsApplied = _useState9[1];
4272
+ var _useState9 = React.useState(queryPromoCode),
4273
+ promoCodeUpdated = _useState9[0],
4274
+ setPromoCodeUpdated = _useState9[1];
4275
+
4276
+ var _useState10 = React.useState(false),
4277
+ showPromoInput = _useState10[0],
4278
+ setShowPromoInput = _useState10[1];
4279
+
4280
+ var _useState11 = React.useState(false),
4281
+ promoCodeIsApplied = _useState11[0],
4282
+ setPromoCodeIsApplied = _useState11[1];
4072
4283
 
4073
4284
  React.useEffect(function () {
4074
4285
  if (typeof window !== 'undefined') {
@@ -4085,62 +4296,103 @@ var TicketsContainer = function TicketsContainer(_ref) {
4085
4296
  }
4086
4297
  }, []);
4087
4298
  React.useEffect(function () {
4088
- function getTicketsApi() {
4089
- return _getTicketsApi.apply(this, arguments);
4090
- }
4299
+ getTicketsApi();
4300
+ }, [eventId, promoCodeUpdated]);
4091
4301
 
4092
- function _getTicketsApi() {
4093
- _getTicketsApi = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
4094
- var response, attributes;
4095
- return runtime_1.wrap(function _callee$(_context) {
4096
- while (1) {
4097
- switch (_context.prev = _context.next) {
4098
- case 0:
4099
- _context.prev = 0;
4100
- setIsLoading(true);
4101
- _context.next = 4;
4102
- return getTickets(eventId, promoCodeUpdated);
4103
-
4104
- case 4:
4105
- response = _context.sent;
4106
-
4107
- if (response.data.success) {
4108
- setCustomHeader(response);
4109
- attributes = _get(response, 'data.data.attributes');
4110
- setPromoCodeIsApplied(attributes.ValidPromoCode);
4111
- setTickets(_get(attributes, 'tickets'));
4112
- setShowWaitingList(attributes.showWaitingList);
4113
- onGetTicketsSuccess(response.data);
4114
- }
4302
+ var handleLogout = function handleLogout() {
4303
+ if (isWindowDefined) {
4304
+ window.localStorage.removeItem('access_token');
4305
+ window.localStorage.removeItem('user_data');
4306
+ setIsLogged(false);
4115
4307
 
4116
- _context.next = 11;
4117
- break;
4308
+ var _event = new window.CustomEvent('tf-logout');
4118
4309
 
4119
- case 8:
4120
- _context.prev = 8;
4121
- _context.t0 = _context["catch"](0);
4310
+ window.document.dispatchEvent(_event);
4311
+ }
4312
+ };
4122
4313
 
4123
- if (axios.isAxiosError(_context.t0)) {
4124
- onGetTicketsError(_context.t0);
4125
- }
4314
+ var handleExternalLogin = function handleExternalLogin() {
4315
+ setIsLogged(true);
4316
+ };
4126
4317
 
4127
- case 11:
4128
- _context.prev = 11;
4129
- setIsLoading(false);
4130
- return _context.finish(11);
4318
+ var handleOnClose = function handleOnClose() {
4319
+ setShowLoginModal(false);
4320
+ };
4131
4321
 
4132
- case 14:
4133
- case "end":
4134
- return _context.stop();
4135
- }
4136
- }
4137
- }, _callee, null, [[0, 8, 11, 14]]);
4138
- }));
4139
- return _getTicketsApi.apply(this, arguments);
4322
+ var handleOnLogin = function handleOnLogin() {
4323
+ setShowLoginModal(false);
4324
+ setIsLogged(true);
4325
+
4326
+ if (onLoginSuccess) {
4327
+ onLoginSuccess();
4140
4328
  }
4329
+ };
4141
4330
 
4142
- getTicketsApi();
4143
- }, [eventId, promoCodeUpdated]);
4331
+ function getTicketsApi() {
4332
+ return _getTicketsApi.apply(this, arguments);
4333
+ }
4334
+
4335
+ function _getTicketsApi() {
4336
+ _getTicketsApi = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
4337
+ var response, eventResponse, attributes, _event2;
4338
+
4339
+ return runtime_1.wrap(function _callee2$(_context2) {
4340
+ while (1) {
4341
+ switch (_context2.prev = _context2.next) {
4342
+ case 0:
4343
+ _context2.prev = 0;
4344
+ setIsLoading(true);
4345
+ _context2.next = 4;
4346
+ return getTickets(eventId, promoCodeUpdated);
4347
+
4348
+ case 4:
4349
+ response = _context2.sent;
4350
+ _context2.next = 7;
4351
+ return getEvent(eventId);
4352
+
4353
+ case 7:
4354
+ eventResponse = _context2.sent;
4355
+
4356
+ if (response.data.success) {
4357
+ setCustomHeader(response);
4358
+ attributes = _get(response, 'data.data.attributes');
4359
+ setPromoCodeIsApplied(attributes.ValidPromoCode);
4360
+ setTickets(_get(attributes, 'tickets'));
4361
+ setShowWaitingList(attributes.showWaitingList);
4362
+ onGetTicketsSuccess(response.data);
4363
+ setPromoCode('');
4364
+ }
4365
+
4366
+ if (eventResponse.data.success) {
4367
+ _event2 = _get(eventResponse, 'data.data.attributes');
4368
+ setEvent(_event2);
4369
+ }
4370
+
4371
+ _context2.next = 15;
4372
+ break;
4373
+
4374
+ case 12:
4375
+ _context2.prev = 12;
4376
+ _context2.t0 = _context2["catch"](0);
4377
+
4378
+ if (axios.isAxiosError(_context2.t0)) {
4379
+ onGetTicketsError(_context2.t0);
4380
+ }
4381
+
4382
+ case 15:
4383
+ _context2.prev = 15;
4384
+ setIsLoading(false);
4385
+ return _context2.finish(15);
4386
+
4387
+ case 18:
4388
+ case "end":
4389
+ return _context2.stop();
4390
+ }
4391
+ }
4392
+ }, _callee2, null, [[0, 12, 15, 18]]);
4393
+ }));
4394
+ return _getTicketsApi.apply(this, arguments);
4395
+ }
4144
4396
 
4145
4397
  var handleTicketSelect = function handleTicketSelect(key, value) {
4146
4398
  setSelectedTickets(function (prevState) {
@@ -4154,15 +4406,21 @@ var TicketsContainer = function TicketsContainer(_ref) {
4154
4406
  });
4155
4407
  };
4156
4408
 
4409
+ var handleOrdersClick = function handleOrdersClick() {
4410
+ if (isWindowDefined) {
4411
+ window.location.href = '/orders';
4412
+ }
4413
+ };
4414
+
4157
4415
  var handleBook = /*#__PURE__*/function () {
4158
- var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2() {
4416
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
4159
4417
  var _product_options, _product_options2, _ticket_types;
4160
4418
 
4161
- 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;
4419
+ 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;
4162
4420
 
4163
- return runtime_1.wrap(function _callee2$(_context2) {
4421
+ return runtime_1.wrap(function _callee$(_context) {
4164
4422
  while (1) {
4165
- switch (_context2.prev = _context2.next) {
4423
+ switch (_context.prev = _context.next) {
4166
4424
  case 0:
4167
4425
  setHandleBookIsLoading(true);
4168
4426
  ticket = _find(tickets, function (item) {
@@ -4183,15 +4441,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
4183
4441
  }, _ticket_types)
4184
4442
  }
4185
4443
  };
4186
- _context2.prev = 6;
4187
- _context2.next = 9;
4444
+ _context.prev = 6;
4445
+ _context.next = 9;
4188
4446
  return addToCart(eventId, data);
4189
4447
 
4190
4448
  case 9:
4191
- result = _context2.sent;
4449
+ result = _context.sent;
4192
4450
 
4193
4451
  if (!(result.status === 200)) {
4194
- _context2.next = 27;
4452
+ _context.next = 27;
4195
4453
  break;
4196
4454
  }
4197
4455
 
@@ -4202,21 +4460,21 @@ var TicketsContainer = function TicketsContainer(_ref) {
4202
4460
  hash = '';
4203
4461
 
4204
4462
  if (!skipBillingPage) {
4205
- _context2.next = 26;
4463
+ _context.next = 26;
4206
4464
  break;
4207
4465
  }
4208
4466
 
4209
4467
  // Get user data for checkout data
4210
- isWindowDefined = typeof window !== 'undefined';
4211
- userData = isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
4212
- access_token = isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
4468
+ _isWindowDefined = typeof window !== 'undefined';
4469
+ userData = _isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
4470
+ access_token = _isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
4213
4471
  ticketsQuantity = Object.keys(selectedTickets).length;
4214
4472
  checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, userData);
4215
- _context2.next = 24;
4473
+ _context.next = 24;
4216
4474
  return postOnCheckout(checkoutBody, access_token);
4217
4475
 
4218
4476
  case 24:
4219
- checkoutResult = _context2.sent;
4477
+ checkoutResult = _context.sent;
4220
4478
  hash = _get(checkoutResult, 'data.data.attributes.hash');
4221
4479
 
4222
4480
  case 26:
@@ -4229,28 +4487,28 @@ var TicketsContainer = function TicketsContainer(_ref) {
4229
4487
  });
4230
4488
 
4231
4489
  case 27:
4232
- _context2.next = 32;
4490
+ _context.next = 32;
4233
4491
  break;
4234
4492
 
4235
4493
  case 29:
4236
- _context2.prev = 29;
4237
- _context2.t0 = _context2["catch"](6);
4494
+ _context.prev = 29;
4495
+ _context.t0 = _context["catch"](6);
4238
4496
 
4239
- if (axios.isAxiosError(_context2.t0)) {
4240
- onAddToCartError(_context2.t0);
4497
+ if (axios.isAxiosError(_context.t0)) {
4498
+ onAddToCartError(_context.t0);
4241
4499
  }
4242
4500
 
4243
4501
  case 32:
4244
- _context2.prev = 32;
4502
+ _context.prev = 32;
4245
4503
  setHandleBookIsLoading(false);
4246
- return _context2.finish(32);
4504
+ return _context.finish(32);
4247
4505
 
4248
4506
  case 35:
4249
4507
  case "end":
4250
- return _context2.stop();
4508
+ return _context.stop();
4251
4509
  }
4252
4510
  }
4253
- }, _callee2, null, [[6, 29, 32, 35]]);
4511
+ }, _callee, null, [[6, 29, 32, 35]]);
4254
4512
  }));
4255
4513
 
4256
4514
  return function handleBook() {
@@ -4258,10 +4516,29 @@ var TicketsContainer = function TicketsContainer(_ref) {
4258
4516
  };
4259
4517
  }();
4260
4518
 
4519
+ var updateTickets = function updateTickets() {
4520
+ getTicketsApi();
4521
+ };
4522
+
4261
4523
  var isAllTicketsSoldOut = !_some(tickets, function (item) {
4262
4524
  return !(item.sold_out || item.soldOut);
4263
4525
  });
4264
- return React__default.createElement("div", {
4526
+ var themeMui = material.createTheme(themeOptions);
4527
+ React.useEffect(function () {
4528
+ isWindowDefined && window.document.addEventListener('custom-logout', handleLogout);
4529
+ return function () {
4530
+ isWindowDefined && window.document.removeEventListener('custom-logout', handleLogout);
4531
+ };
4532
+ }, []);
4533
+ React.useEffect(function () {
4534
+ isWindowDefined && window.document.addEventListener('custom-login', handleExternalLogin);
4535
+ return function () {
4536
+ isWindowDefined && window.document.removeEventListener('custom-login', handleExternalLogin);
4537
+ };
4538
+ }, []);
4539
+ return React__default.createElement(privateTheming.ThemeProvider, {
4540
+ theme: themeMui
4541
+ }, React__default.createElement("div", {
4265
4542
  className: "get-tickets-page " + theme,
4266
4543
  style: contentStyle
4267
4544
  }, isLoading ? React__default.createElement(Loader$1, null) : React__default.createElement("div", null, React__default.createElement(TicketsSection, {
@@ -4269,10 +4546,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
4269
4546
  selectedTickets: selectedTickets,
4270
4547
  handleTicketSelect: handleTicketSelect,
4271
4548
  promoCodeIsApplied: promoCodeIsApplied
4272
- }), showWaitingList && React__default.createElement(WaitingList, {
4549
+ }), event != null && event.salesEnded ? React__default.createElement("p", null, "Sales for this event are closed.") : event != null && event.salesStart ? React__default.createElement(Countdown, {
4550
+ startDate: event.salesStart,
4551
+ timezone: event.timezone,
4552
+ title: "Sales start in:",
4553
+ message: "No tickets are currently available for this event.",
4554
+ callback: updateTickets
4555
+ }) : null, showWaitingList && event.salesStarted && React__default.createElement(WaitingList, {
4273
4556
  tickets: tickets,
4274
- eventId: eventId,
4275
- isPromotionsEnabled: isPromotionsEnabled
4557
+ eventId: eventId
4276
4558
  }), React__default.createElement(PromoCodeSection, {
4277
4559
  promoCode: promoCode,
4278
4560
  promoCodeIsApplied: promoCodeIsApplied,
@@ -4281,12 +4563,30 @@ var TicketsContainer = function TicketsContainer(_ref) {
4281
4563
  setPromoCodeUpdated: setPromoCodeUpdated,
4282
4564
  setShowPromoInput: setShowPromoInput,
4283
4565
  isPromotionsEnabled: isPromotionsEnabled,
4566
+ isAccessCodeEnabled: isAccessCodeEnabled,
4284
4567
  isAllTicketsSoldOut: isAllTicketsSoldOut
4285
4568
  }), !isAllTicketsSoldOut && React__default.createElement(Button$1, {
4286
4569
  "aria-hidden": true,
4287
4570
  className: "book-button " + (handleBookIsLoading || _isEmpty(selectedTickets) || Object.values(selectedTickets)[0] === 0 ? 'disabled' : ''),
4288
4571
  onClick: !handleBookIsLoading && !_isEmpty(selectedTickets) && Object.values(selectedTickets)[0] > 0 ? handleBook : function () {}
4289
- }, getTicketsLabel || 'GET TICKETS')));
4572
+ }, getTicketsLabel || 'GET TICKETS'), isLogged && !hideSessionButtons ? React__default.createElement("div", {
4573
+ className: "session-wrapper"
4574
+ }, React__default.createElement("span", {
4575
+ className: "session-container"
4576
+ }, React__default.createElement(Button$1, {
4577
+ variant: "outline-light",
4578
+ className: "session-buttons",
4579
+ onClick: handleOrdersClick
4580
+ }, "My Orders")), React__default.createElement("span", {
4581
+ className: "session-container"
4582
+ }, React__default.createElement(Button$1, {
4583
+ variant: "outline-light",
4584
+ className: "session-buttons",
4585
+ onClick: handleLogout
4586
+ }, "Log out"))) : ''), showLoginModal ? React__default.createElement(LoginModal, {
4587
+ onClose: handleOnClose,
4588
+ onLogin: handleOnLogin
4589
+ }) : null));
4290
4590
  };
4291
4591
 
4292
4592
  var EventInfoItem = function EventInfoItem(_ref) {
@@ -4494,9 +4794,9 @@ var TicketsTable = function TicketsTable(_ref) {
4494
4794
  var _ref$tickets = _ref.tickets,
4495
4795
  tickets = _ref$tickets === void 0 ? [] : _ref$tickets;
4496
4796
  return React__default.createElement("div", {
4497
- className: 'tickets-box'
4797
+ className: "tickets-box"
4498
4798
  }, React__default.createElement("h4", {
4499
- className: 'sub-title'
4799
+ className: "sub-title"
4500
4800
  }, "Your Tickets"), React__default.createElement(TableContainer, {
4501
4801
  component: Paper
4502
4802
  }, React__default.createElement(Table, {
@@ -4506,14 +4806,16 @@ var TicketsTable = function TicketsTable(_ref) {
4506
4806
 
4507
4807
  return React__default.createElement(React.Fragment, {
4508
4808
  key: index
4509
- }, 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", {
4510
- className: 'download-button',
4511
- href: ticket.pdf_link,
4512
- download: true
4809
+ }, 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", {
4810
+ "aria-hidden": true,
4811
+ className: "download-button",
4812
+ onClick: function onClick() {
4813
+ return downloadPDF(ticket.pdf_link);
4814
+ }
4513
4815
  }, "Download"))), !!((_ticket$add_ons = ticket.add_ons) != null && _ticket$add_ons.length) && React__default.createElement(TableRow, null, React__default.createElement(TableCell, {
4514
4816
  colSpan: 5
4515
4817
  }, React__default.createElement(Table, {
4516
- className: 'ticket-add-on-table'
4818
+ className: "ticket-add-on-table"
4517
4819
  }, 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) {
4518
4820
  return React__default.createElement(TableRow, {
4519
4821
  key: index