tf-checkout-react 1.3.51 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/api/index.d.ts +6 -1
  2. package/dist/components/common/Loader.d.ts +1 -1
  3. package/dist/components/idVerificationContainer/constants.d.ts +2 -0
  4. package/dist/components/index.d.ts +1 -0
  5. package/dist/components/seatMapContainer/SeatMapComponent.d.ts +8 -0
  6. package/dist/components/seatMapContainer/TicketsSection.d.ts +9 -0
  7. package/dist/components/seatMapContainer/addToCart.d.ts +21 -0
  8. package/dist/components/seatMapContainer/index.d.ts +2 -0
  9. package/dist/components/seatMapContainer/utils.d.ts +14 -0
  10. package/dist/components/stripePayment/index.d.ts +2 -2
  11. package/dist/components/ticketsContainer/TicketRow.d.ts +3 -1
  12. package/dist/components/ticketsContainer/TicketsSection.d.ts +5 -1
  13. package/dist/components/ticketsContainer/index.d.ts +6 -2
  14. package/dist/index.d.ts +1 -0
  15. package/dist/tf-checkout-react.cjs.development.js +1435 -128
  16. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  17. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  18. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  19. package/dist/tf-checkout-react.esm.js +1436 -130
  20. package/dist/tf-checkout-react.esm.js.map +1 -1
  21. package/dist/tf-checkout-styles.css +1 -1
  22. package/dist/types/order-data.d.ts +3 -0
  23. package/dist/utils/createCheckoutDataBodyWithDefaultHolder.d.ts +9 -2
  24. package/package.json +12 -4
  25. package/src/.d.ts +4 -3
  26. package/src/api/index.ts +89 -6
  27. package/src/components/billing-info-container/index.tsx +111 -102
  28. package/src/components/common/Loader.tsx +6 -8
  29. package/src/components/common/dist/PhoneNumberField.js +96 -0
  30. package/src/components/confirmationContainer/index.tsx +11 -9
  31. package/src/components/idVerificationContainer/constants.ts +2 -0
  32. package/src/components/idVerificationContainer/index.tsx +54 -13
  33. package/src/components/index.ts +2 -1
  34. package/src/components/orderDetailsContainer/index.tsx +54 -23
  35. package/src/components/paymentContainer/index.tsx +167 -33
  36. package/src/components/seatMapContainer/SeatMapComponent.tsx +73 -0
  37. package/src/components/seatMapContainer/TicketsSection.tsx +254 -0
  38. package/src/components/seatMapContainer/addToCart.ts +82 -0
  39. package/src/components/seatMapContainer/index.tsx +408 -0
  40. package/src/components/seatMapContainer/utils.ts +138 -0
  41. package/src/components/stripePayment/index.tsx +23 -18
  42. package/src/components/ticketsContainer/TicketRow.tsx +28 -13
  43. package/src/components/ticketsContainer/TicketsSection.tsx +85 -2
  44. package/src/components/ticketsContainer/index.tsx +57 -12
  45. package/src/components/ticketsContainer/style.css +0 -3
  46. package/src/hooks/usePixel.ts +35 -1
  47. package/src/index.ts +2 -1
  48. package/src/types/order-data.ts +3 -0
  49. package/src/types/seatMap.d.ts +154 -0
  50. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +6 -2
@@ -58,6 +58,7 @@ var stripeJs = require('@stripe/stripe-js');
58
58
  var reactShare = require('react-share');
59
59
  var privateTheming = require('@mui/private-theming');
60
60
  var jwt_decode = _interopDefault(require('jwt-decode'));
61
+ var _filter = _interopDefault(require('lodash/filter'));
61
62
  var _some = _interopDefault(require('lodash/some'));
62
63
  var Button$1 = _interopDefault(require('react-bootstrap/Button'));
63
64
  var moment = _interopDefault(require('moment-timezone'));
@@ -74,6 +75,15 @@ var TableRow = _interopDefault(require('@mui/material/TableRow'));
74
75
  var _has = _interopDefault(require('lodash/has'));
75
76
  var _isNull = _interopDefault(require('lodash/isNull'));
76
77
  var _reverse = _interopDefault(require('lodash/reverse'));
78
+ var lodash = require('lodash');
79
+ var _keys = _interopDefault(require('lodash/keys'));
80
+ var _values = _interopDefault(require('lodash/values'));
81
+ var moment$1 = _interopDefault(require('moment'));
82
+ require('tf-seat-map-view/dist/index.css');
83
+ var ReactDom = _interopDefault(require('react-dom'));
84
+ var SeatMapView = _interopDefault(require('tf-seat-map-view'));
85
+ var InputLabel = _interopDefault(require('@mui/material/InputLabel'));
86
+ var reactBootstrap = require('react-bootstrap');
77
87
 
78
88
  function _regeneratorRuntime() {
79
89
  _regeneratorRuntime = function () {
@@ -734,6 +744,7 @@ publicRequest.interceptors.response.use(function (response) {
734
744
  return Promise.reject(error);
735
745
  });
736
746
  publicRequest.interceptors.request.use(function (config) {
747
+ var _document$cookie;
737
748
  var guestToken = isWindowDefined ? window.localStorage.getItem('auth_guest_token') : null;
738
749
  var userData = isWindowDefined ? window.localStorage.getItem('user_data') : null;
739
750
  var accessToken = isWindowDefined ? window.localStorage.getItem('access_token') : null;
@@ -756,6 +767,13 @@ publicRequest.interceptors.request.use(function (config) {
756
767
  });
757
768
  config.headers = _updatedHeaders2;
758
769
  }
770
+ var additionalCookiesHeaderValue = (_document$cookie = document.cookie) != null ? _document$cookie : '';
771
+ if (additionalCookiesHeaderValue !== '') {
772
+ var _updatedHeaders3 = _extends({}, config.headers, {
773
+ 'Additional-Cookies': additionalCookiesHeaderValue
774
+ });
775
+ config.headers = _updatedHeaders3;
776
+ }
759
777
  if (CONFIGS.X_SOURCE_ORIGIN) {
760
778
  var _updatedHeaders4 = _extends({}, config.headers, {
761
779
  'X-Source-Origin': CONFIGS.X_SOURCE_ORIGIN
@@ -1046,6 +1064,121 @@ var getCheckoutPageConfigs = /*#__PURE__*/function () {
1046
1064
  return _ref3.apply(this, arguments);
1047
1065
  };
1048
1066
  }();
1067
+ // seat map <--start-->
1068
+ // const makeId = (length = 20) => {
1069
+ // let result = ''
1070
+ // const characters =
1071
+ // 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
1072
+ // const charactersLength = characters.length
1073
+ // for (let i = 0; i < length; i++) {
1074
+ // result += characters.charAt(Math.floor(Math.random() * charactersLength))
1075
+ // }
1076
+ // return result
1077
+ // }
1078
+ var getSeatMapData = /*#__PURE__*/function () {
1079
+ var _ref4 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(eventId) {
1080
+ var reservedSeatsHash, params, response;
1081
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
1082
+ while (1) switch (_context4.prev = _context4.next) {
1083
+ case 0:
1084
+ localStorage.setItem('tierId', '');
1085
+ reservedSeatsHash = getQueryVariable('reserved_seats_hash');
1086
+ params = {};
1087
+ if (reservedSeatsHash) {
1088
+ params.reserved_seats_hash = reservedSeatsHash;
1089
+ }
1090
+ _context4.next = 6;
1091
+ return publicRequest.get("v1/event/" + eventId + "/seat-map-data", {
1092
+ params: params
1093
+ });
1094
+ case 6:
1095
+ response = _context4.sent;
1096
+ return _context4.abrupt("return", response.data);
1097
+ case 8:
1098
+ case "end":
1099
+ return _context4.stop();
1100
+ }
1101
+ }, _callee4);
1102
+ }));
1103
+ return function getSeatMapData(_x3) {
1104
+ return _ref4.apply(this, arguments);
1105
+ };
1106
+ }();
1107
+ var getSeatMapStatuses = /*#__PURE__*/function () {
1108
+ var _ref5 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(eventId) {
1109
+ var response;
1110
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
1111
+ while (1) switch (_context5.prev = _context5.next) {
1112
+ case 0:
1113
+ _context5.next = 2;
1114
+ return publicRequest.get("v1/event/" + eventId + "/seats/status");
1115
+ case 2:
1116
+ response = _context5.sent;
1117
+ return _context5.abrupt("return", response.data);
1118
+ case 4:
1119
+ case "end":
1120
+ return _context5.stop();
1121
+ }
1122
+ }, _callee5);
1123
+ }));
1124
+ return function getSeatMapStatuses(_x4) {
1125
+ return _ref5.apply(this, arguments);
1126
+ };
1127
+ }();
1128
+ var reserveSeat = /*#__PURE__*/function () {
1129
+ var _ref6 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(eventId, tierId, seatId) {
1130
+ var response;
1131
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
1132
+ while (1) switch (_context6.prev = _context6.next) {
1133
+ case 0:
1134
+ _context6.next = 2;
1135
+ return publicRequest.post("v1/event/" + eventId + "/seats/reserve", {
1136
+ data: {
1137
+ tierId: tierId,
1138
+ seatId: seatId,
1139
+ ttl: 10
1140
+ }
1141
+ });
1142
+ case 2:
1143
+ response = _context6.sent;
1144
+ return _context6.abrupt("return", response.data);
1145
+ case 4:
1146
+ case "end":
1147
+ return _context6.stop();
1148
+ }
1149
+ }, _callee6);
1150
+ }));
1151
+ return function reserveSeat(_x5, _x6, _x7) {
1152
+ return _ref6.apply(this, arguments);
1153
+ };
1154
+ }();
1155
+ var removeSeatReserve = /*#__PURE__*/function () {
1156
+ var _ref7 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(eventId, tierId, seatIds) {
1157
+ var response;
1158
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
1159
+ while (1) switch (_context7.prev = _context7.next) {
1160
+ case 0:
1161
+ _context7.next = 2;
1162
+ return publicRequest["delete"]("v1/event/" + eventId + "/seats/delete-reserved", {
1163
+ data: {
1164
+ tierId: tierId,
1165
+ seatIds: seatIds
1166
+ }
1167
+ });
1168
+ case 2:
1169
+ response = _context7.sent;
1170
+ return _context7.abrupt("return", response.data);
1171
+ case 4:
1172
+ case "end":
1173
+ return _context7.stop();
1174
+ }
1175
+ }, _callee7);
1176
+ }));
1177
+ return function removeSeatReserve(_x8, _x9, _x10) {
1178
+ return _ref7.apply(this, arguments);
1179
+ };
1180
+ }();
1181
+ // seat map <--end-->
1049
1182
  function getPixelScript(id, pageOptions) {
1050
1183
  var response = publicRequest.get("v1/event/" + id + "/track", {
1051
1184
  params: {
@@ -1058,54 +1191,54 @@ function getPixelScript(id, pageOptions) {
1058
1191
  }
1059
1192
  // ID Verification
1060
1193
  var getNetverifyUrl = /*#__PURE__*/function () {
1061
- var _ref4 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
1194
+ var _ref8 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
1062
1195
  var response;
1063
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
1064
- while (1) switch (_context4.prev = _context4.next) {
1196
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
1197
+ while (1) switch (_context8.prev = _context8.next) {
1065
1198
  case 0:
1066
- _context4.next = 2;
1199
+ _context8.next = 2;
1067
1200
  return publicRequest.get('v1/authenticate/verify');
1068
1201
  case 2:
1069
- response = _context4.sent;
1070
- return _context4.abrupt("return", response.data);
1202
+ response = _context8.sent;
1203
+ return _context8.abrupt("return", response.data);
1071
1204
  case 4:
1072
1205
  case "end":
1073
- return _context4.stop();
1206
+ return _context8.stop();
1074
1207
  }
1075
- }, _callee4);
1208
+ }, _callee8);
1076
1209
  }));
1077
1210
  return function getNetverifyUrl() {
1078
- return _ref4.apply(this, arguments);
1211
+ return _ref8.apply(this, arguments);
1079
1212
  };
1080
1213
  }();
1081
1214
  var checkVerificationStatus = /*#__PURE__*/function () {
1082
- var _ref5 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
1215
+ var _ref9 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
1083
1216
  var response;
1084
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
1085
- while (1) switch (_context5.prev = _context5.next) {
1217
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
1218
+ while (1) switch (_context9.prev = _context9.next) {
1086
1219
  case 0:
1087
- _context5.next = 2;
1220
+ _context9.next = 2;
1088
1221
  return publicRequest.get('v1/authenticate/get-verification-info');
1089
1222
  case 2:
1090
- response = _context5.sent;
1091
- return _context5.abrupt("return", response.data);
1223
+ response = _context9.sent;
1224
+ return _context9.abrupt("return", response.data);
1092
1225
  case 4:
1093
1226
  case "end":
1094
- return _context5.stop();
1227
+ return _context9.stop();
1095
1228
  }
1096
- }, _callee5);
1229
+ }, _callee9);
1097
1230
  }));
1098
1231
  return function checkVerificationStatus() {
1099
- return _ref5.apply(this, arguments);
1232
+ return _ref9.apply(this, arguments);
1100
1233
  };
1101
1234
  }();
1102
1235
  var updateVerificationStatus = /*#__PURE__*/function () {
1103
- var _ref6 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
1236
+ var _ref10 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
1104
1237
  var response;
1105
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
1106
- while (1) switch (_context6.prev = _context6.next) {
1238
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
1239
+ while (1) switch (_context10.prev = _context10.next) {
1107
1240
  case 0:
1108
- _context6.next = 2;
1241
+ _context10.next = 2;
1109
1242
  return publicRequest.patch('v1/authenticate/verify', {
1110
1243
  data: {
1111
1244
  verification: {
@@ -1114,16 +1247,37 @@ var updateVerificationStatus = /*#__PURE__*/function () {
1114
1247
  }
1115
1248
  });
1116
1249
  case 2:
1117
- response = _context6.sent;
1118
- return _context6.abrupt("return", response.data);
1250
+ response = _context10.sent;
1251
+ return _context10.abrupt("return", response.data);
1119
1252
  case 4:
1120
1253
  case "end":
1121
- return _context6.stop();
1254
+ return _context10.stop();
1122
1255
  }
1123
- }, _callee6);
1256
+ }, _callee10);
1124
1257
  }));
1125
1258
  return function updateVerificationStatus() {
1126
- return _ref6.apply(this, arguments);
1259
+ return _ref10.apply(this, arguments);
1260
+ };
1261
+ }();
1262
+ var checkCustomerOrder = /*#__PURE__*/function () {
1263
+ var _ref11 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(orderHash) {
1264
+ var response;
1265
+ return _regeneratorRuntime().wrap(function _callee11$(_context11) {
1266
+ while (1) switch (_context11.prev = _context11.next) {
1267
+ case 0:
1268
+ _context11.next = 2;
1269
+ return publicRequest.get("v1/order/" + orderHash + "/verify-customer-order");
1270
+ case 2:
1271
+ response = _context11.sent;
1272
+ return _context11.abrupt("return", response.data);
1273
+ case 4:
1274
+ case "end":
1275
+ return _context11.stop();
1276
+ }
1277
+ }, _callee11);
1278
+ }));
1279
+ return function checkCustomerOrder(_x11) {
1280
+ return _ref11.apply(this, arguments);
1127
1281
  };
1128
1282
  }();
1129
1283
 
@@ -1144,6 +1298,32 @@ function appendScriptsToHeader(code) {
1144
1298
  }
1145
1299
  }
1146
1300
  }
1301
+ var addGTagToHeader = function addGTagToHeader(tagId, links) {
1302
+ var _document, _document2;
1303
+ if ((_document = document) != null && _document.head && (_document2 = document) != null && _document2.body && tagId) {
1304
+ var script = document.createElement('script');
1305
+ script.innerHTML = ("(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','" + tagId + "');").trim();
1306
+ document.head.append(script);
1307
+ var scriptBody = document.createElement('noscript');
1308
+ scriptBody.innerHTML = "<iframe src=\"https://www.googletagmanager.com/ns.html?id=" + tagId + "\"\n height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe>";
1309
+ document.body.append(scriptBody);
1310
+ window.dataLayer = window.dataLayer || [];
1311
+ window.gtag = function gtag() {
1312
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1313
+ args[_key] = arguments[_key];
1314
+ }
1315
+ window.dataLayer.push(args);
1316
+ };
1317
+ if (links) {
1318
+ var _window;
1319
+ (_window = window) == null ? void 0 : _window.gtag('set', 'linker', {
1320
+ 'domains': links
1321
+ });
1322
+ }
1323
+ window.gtag('js', new Date());
1324
+ window.gtag('config', tagId);
1325
+ }
1326
+ };
1147
1327
  var usePixel = /*#__PURE__*/function () {
1148
1328
  var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(eventId, options) {
1149
1329
  var getScript;
@@ -1152,7 +1332,7 @@ var usePixel = /*#__PURE__*/function () {
1152
1332
  case 0:
1153
1333
  getScript = /*#__PURE__*/function () {
1154
1334
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
1155
- var response, pixels;
1335
+ var response, pixels, brandGoogleTagKey, eventGoogleTagKey, eventGoogleTagManagerLinkerDomains;
1156
1336
  return _regeneratorRuntime().wrap(function _callee$(_context) {
1157
1337
  while (1) switch (_context.prev = _context.next) {
1158
1338
  case 0:
@@ -1169,17 +1349,24 @@ var usePixel = /*#__PURE__*/function () {
1169
1349
  response = _context.sent;
1170
1350
  pixels = _get(response, 'data.data.attributes.pixels', '');
1171
1351
  appendScriptsToHeader(pixels);
1172
- _context.next = 13;
1352
+ brandGoogleTagKey = _get(response, 'data.data.attributes.brandGoogleTagKey', '');
1353
+ eventGoogleTagKey = _get(response, 'data.data.attributes.eventGoogleTagKey', '');
1354
+ eventGoogleTagManagerLinkerDomains = _get(response, 'data.data.attributes.eventGoogleTagManagerLinkerDomains', '');
1355
+ addGTagToHeader(brandGoogleTagKey, eventGoogleTagManagerLinkerDomains);
1356
+ if (eventGoogleTagKey) {
1357
+ addGTagToHeader(eventGoogleTagKey, eventGoogleTagManagerLinkerDomains);
1358
+ }
1359
+ _context.next = 18;
1173
1360
  break;
1174
- case 10:
1175
- _context.prev = 10;
1361
+ case 15:
1362
+ _context.prev = 15;
1176
1363
  _context.t0 = _context["catch"](2);
1177
1364
  console.error(_context.t0);
1178
- case 13:
1365
+ case 18:
1179
1366
  case "end":
1180
1367
  return _context.stop();
1181
1368
  }
1182
- }, _callee, null, [[2, 10]]);
1369
+ }, _callee, null, [[2, 15]]);
1183
1370
  }));
1184
1371
  return function getScript() {
1185
1372
  return _ref2.apply(this, arguments);
@@ -2104,11 +2291,11 @@ var PhoneNumberField = function PhoneNumberField(_ref) {
2104
2291
  }));
2105
2292
  };
2106
2293
 
2107
- function Loader() {
2294
+ var Loader = function Loader() {
2108
2295
  return React__default.createElement("div", {
2109
2296
  className: "loader-container"
2110
2297
  }, React__default.createElement(CircularProgress, null));
2111
- }
2298
+ };
2112
2299
 
2113
2300
  var NativeSelectField = function NativeSelectField(_ref) {
2114
2301
  var label = _ref.label,
@@ -2826,15 +3013,18 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
2826
3013
  var _useState14 = React.useState(true),
2827
3014
  loading = _useState14[0],
2828
3015
  setLoading = _useState14[1];
2829
- var _useState15 = React.useState(true),
2830
- isCountriesLoading = _useState15[0],
2831
- setIsCountriesLoading = _useState15[1];
2832
- var _useState16 = React.useState(null),
2833
- error = _useState16[0],
2834
- setError = _useState16[1];
2835
- var _useState17 = React.useState(false),
2836
- phoneValidationIsLoading = _useState17[0],
2837
- setPhoneValidationIsLoading = _useState17[1];
3016
+ var _useState15 = React.useState(false),
3017
+ cardLoading = _useState15[0],
3018
+ setCardLoading = _useState15[1];
3019
+ var _useState16 = React.useState(true),
3020
+ isCountriesLoading = _useState16[0],
3021
+ setIsCountriesLoading = _useState16[1];
3022
+ var _useState17 = React.useState(null),
3023
+ error = _useState17[0],
3024
+ setError = _useState17[1];
3025
+ var _useState18 = React.useState(false),
3026
+ phoneValidationIsLoading = _useState18[0],
3027
+ setPhoneValidationIsLoading = _useState18[1];
2838
3028
  var emailLogged = _get(userData, 'email', '') || _get(userValues, 'email', '');
2839
3029
  var firstNameLogged = _get(userData, 'first_name', '') || _get(userValues, 'first_name', '');
2840
3030
  var lastNameLogged = _get(userData, 'last_name', '') || _get(userValues, 'last_name', '');
@@ -2843,6 +3033,7 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
2843
3033
  var eventId = getQueryVariable('event_id') || '';
2844
3034
  var optedInFieldValue = brandOptIn ? brandOptIn : _get(cartInfoData, 'optedIn', false);
2845
3035
  var ttfOptIn = Boolean(_get(cartInfoData, 'ttfOptIn', false));
3036
+ var isTable = Boolean(_get(cartInfoData, 'is_table', false));
2846
3037
  var hideTtfOptIn = _get(cartInfoData, 'hide_ttf_opt_in', true);
2847
3038
  var expirationTime = _get(cartInfoData, 'expiresAt');
2848
3039
  var flagRequirePhone = getQueryVariable('phone_required') === 'true';
@@ -2851,9 +3042,9 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
2851
3042
  var flagFreeTicket = getQueryVariable('free_ticket') === 'true';
2852
3043
  var hidePhoneField = getQueryVariable('hide_phone_field') === 'true';
2853
3044
  var hideWalletAddressField = !collectOptionalWalletAddress && !collectMandatoryWalletAddress;
2854
- var _useState18 = React.useState(),
2855
- pendingVerificationMessage = _useState18[0],
2856
- setPendingVerificationMessage = _useState18[1];
3045
+ var _useState19 = React.useState(),
3046
+ pendingVerificationMessage = _useState19[0],
3047
+ setPendingVerificationMessage = _useState19[1];
2857
3048
  // Get prevProps
2858
3049
  var prevData = React.useRef(data);
2859
3050
  var addAddOnsInAttributes = function addAddOnsInAttributes(checkoutBody) {
@@ -2933,9 +3124,10 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
2933
3124
  while (1) switch (_context3.prev = _context3.next) {
2934
3125
  case 0:
2935
3126
  _context3.prev = 0;
2936
- _context3.next = 3;
3127
+ setCardLoading(true);
3128
+ _context3.next = 4;
2937
3129
  return getCart();
2938
- case 3:
3130
+ case 4:
2939
3131
  res = _context3.sent;
2940
3132
  setCustomHeader(res);
2941
3133
  cartInfo = _get(res, 'data.data.attributes');
@@ -2945,19 +3137,23 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
2945
3137
  return nanoid.nanoid();
2946
3138
  }));
2947
3139
  onGetCartSuccess(res.data);
2948
- _context3.next = 15;
3140
+ _context3.next = 16;
2949
3141
  break;
2950
- case 12:
2951
- _context3.prev = 12;
3142
+ case 13:
3143
+ _context3.prev = 13;
2952
3144
  _context3.t0 = _context3["catch"](0);
2953
3145
  if (axios.isAxiosError(_context3.t0)) {
2954
3146
  onGetCartError(_context3.t0);
2955
3147
  }
2956
- case 15:
3148
+ case 16:
3149
+ _context3.prev = 16;
3150
+ setCardLoading(false);
3151
+ return _context3.finish(16);
3152
+ case 19:
2957
3153
  case "end":
2958
3154
  return _context3.stop();
2959
3155
  }
2960
- }, _callee3, null, [[0, 12]]);
3156
+ }, _callee3, null, [[0, 13, 16, 19]]);
2961
3157
  }));
2962
3158
  return function fetchCart() {
2963
3159
  return _ref6.apply(this, arguments);
@@ -3096,9 +3292,12 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
3096
3292
  page: 'billing',
3097
3293
  pageUrl: pageUrl
3098
3294
  });
3295
+ if (isTable) {
3296
+ dataWithUniqueIds[0].label = 'Get Your Tables';
3297
+ }
3099
3298
  return React__default.createElement(styles.ThemeProvider, {
3100
3299
  theme: themeMui
3101
- }, (loading || isCountriesLoading) && React__default.createElement(Backdrop, {
3300
+ }, (loading || cardLoading || isCountriesLoading) && React__default.createElement(Backdrop, {
3102
3301
  sx: {
3103
3302
  color: '#fff',
3104
3303
  backgroundColor: '#000000bd',
@@ -3313,7 +3512,7 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
3313
3512
  }, React__default.createElement("img", {
3314
3513
  src: theme === 'dark' ? 'https://www.ticketfairy.com/resources/images/logo-ttf.svg' : 'https://www.ticketfairy.com/resources/images/logo-ttf-black.svg',
3315
3514
  alt: "nodata"
3316
- })))), _map(dataWithUniqueIds, function (item) {
3515
+ })))), !cardLoading && _map(dataWithUniqueIds, function (item) {
3317
3516
  var label = item.label,
3318
3517
  labelClassName = item.labelClassName,
3319
3518
  fields = item.fields;
@@ -3793,12 +3992,15 @@ var getStripePromise = function getStripePromise(reviewData) {
3793
3992
  return stripeJs.loadStripe(stripePublishableKey, options);
3794
3993
  };
3795
3994
  var initialOrderValues = {
3995
+ id: '',
3796
3996
  product_name: '',
3797
3997
  ticketType: '',
3798
3998
  quantity: '',
3799
3999
  price: '',
3800
4000
  total: '',
3801
4001
  currency: '',
4002
+ guest_count: '',
4003
+ pay_now: '',
3802
4004
  add_ons: []
3803
4005
  };
3804
4006
  var initialReviewValues = {
@@ -3869,7 +4071,7 @@ var PaymentContainer = function PaymentContainer(_ref) {
3869
4071
  var eventId = getQueryVariable('event_id') || _get(reviewData, 'cart[0].product_id') || '';
3870
4072
  var hash = checkoutData.hash,
3871
4073
  total = checkoutData.total;
3872
- var isFreeTickets = !Number(total) && !Number(orderData.total);
4074
+ var isFreeTickets = !Number(total) && !Number(orderData.total) || !Number(orderData.pay_now);
3873
4075
  var pageUrl = isBrowser ? window.location.href.split('?')[0] : '';
3874
4076
  usePixel(eventId, {
3875
4077
  page: 'review',
@@ -3877,7 +4079,7 @@ var PaymentContainer = function PaymentContainer(_ref) {
3877
4079
  });
3878
4080
  React.useEffect(function () {
3879
4081
  _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
3880
- var response, _cart$, attributes, cart, order_details, _order_details$ticket, ticket, _orderData;
4082
+ var response, _cart$2, attributes, cart, order_details, _order_details$ticket, ticket, orderDataArray, _orderData;
3881
4083
  return _regeneratorRuntime().wrap(function _callee$(_context) {
3882
4084
  while (1) switch (_context.prev = _context.next) {
3883
4085
  case 0:
@@ -3891,14 +4093,30 @@ var PaymentContainer = function PaymentContainer(_ref) {
3891
4093
  setReviewData(attributes);
3892
4094
  cart = attributes.cart, order_details = attributes.order_details;
3893
4095
  _order_details$ticket = order_details.tickets, ticket = _order_details$ticket[0];
4096
+ orderDataArray = _map(order_details.tickets, function (item) {
4097
+ var _cart$;
4098
+ return {
4099
+ product_name: (_cart$ = cart[0]) == null ? void 0 : _cart$.product_name,
4100
+ ticketType: item == null ? void 0 : item.name,
4101
+ quantity: item == null ? void 0 : item.guest_count,
4102
+ price: item == null ? void 0 : item.price,
4103
+ id: item.id,
4104
+ count: item == null ? void 0 : item.quantity
4105
+ };
4106
+ });
3894
4107
  _orderData = {
3895
- product_name: (_cart$ = cart[0]) == null ? void 0 : _cart$.product_name,
4108
+ id: order_details == null ? void 0 : order_details.id,
4109
+ product_name: (_cart$2 = cart[0]) == null ? void 0 : _cart$2.product_name,
3896
4110
  ticketType: ticket == null ? void 0 : ticket.name,
3897
4111
  quantity: ticket == null ? void 0 : ticket.quantity,
3898
4112
  price: ticket == null ? void 0 : ticket.price,
3899
4113
  total: order_details == null ? void 0 : order_details.total,
3900
4114
  currency: order_details == null ? void 0 : order_details.currency,
3901
- add_ons: (order_details == null ? void 0 : order_details.add_ons) || []
4115
+ add_ons: (order_details == null ? void 0 : order_details.add_ons) || [],
4116
+ pay_now: (order_details == null ? void 0 : order_details.pay_now) || '',
4117
+ guest_count: (order_details == null ? void 0 : order_details.guest_count) || null,
4118
+ debt: (order_details == null ? void 0 : order_details.debt) || null,
4119
+ tableTypes: orderDataArray
3902
4120
  };
3903
4121
  setOrderData(_orderData);
3904
4122
  onGetPaymentDataSuccess(response.data);
@@ -3963,7 +4181,7 @@ var PaymentContainer = function PaymentContainer(_ref) {
3963
4181
  // 3. redirect to confirmation page
3964
4182
  var handlePaymentMiddleWare = /*#__PURE__*/function () {
3965
4183
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(error) {
3966
- var order_hash, paymentSuccessResponse;
4184
+ var order_hash, paymentSuccessResponse, isWindowDefined, _window;
3967
4185
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
3968
4186
  while (1) switch (_context3.prev = _context3.next) {
3969
4187
  case 0:
@@ -3995,6 +4213,20 @@ var PaymentContainer = function PaymentContainer(_ref) {
3995
4213
  if (paymentSuccessResponse.status === 200) {
3996
4214
  handlePayment(paymentSuccessResponse);
3997
4215
  setPaymentIsLoading(false);
4216
+ // clear seat-map related data from localStorage
4217
+ localStorage.removeItem('reservationData');
4218
+ localStorage.removeItem("reservationStart-" + eventId);
4219
+ localStorage.removeItem('ownReservations');
4220
+ localStorage.removeItem('tierId');
4221
+ isWindowDefined = typeof window !== "undefined";
4222
+ if (isWindowDefined) {
4223
+ (_window = window) == null ? void 0 : _window.dataLayer.push({
4224
+ 'event': 'Purchase',
4225
+ 'orderValue': orderData.total,
4226
+ 'orderCurrency': orderData.currency,
4227
+ 'orderId': orderData.id
4228
+ });
4229
+ }
3998
4230
  }
3999
4231
  _context3.next = 22;
4000
4232
  break;
@@ -4015,6 +4247,33 @@ var PaymentContainer = function PaymentContainer(_ref) {
4015
4247
  };
4016
4248
  }();
4017
4249
  var themeMui = styles.createTheme(themeOptions);
4250
+ var hasTableTypes = Boolean(Number(orderData.guest_count));
4251
+ var paymentFieldsData = hasTableTypes ? [{
4252
+ label: 'Event',
4253
+ id: 'product_name'
4254
+ }, {
4255
+ label: '',
4256
+ id: 'tableTypes'
4257
+ }, {
4258
+ label: 'Total (incl. fees, card processing and taxes)',
4259
+ id: 'total',
4260
+ normalizer: function normalizer(value, currency) {
4261
+ return currencyNormalizerCreator(createFixedFloatNormalizer(2)(parseFloat(value)), currency);
4262
+ }
4263
+ }, {
4264
+ label: 'Pay Now',
4265
+ id: 'pay_now',
4266
+ normalizer: function normalizer(value, currency) {
4267
+ return currencyNormalizerCreator(createFixedFloatNormalizer(2)(parseFloat(value)), currency);
4268
+ }
4269
+ }, {
4270
+ label: 'Pay On Check-in',
4271
+ id: 'debt',
4272
+ normalizer: function normalizer(value, currency) {
4273
+ return currencyNormalizerCreator(createFixedFloatNormalizer(2)(parseFloat(value)), currency);
4274
+ }
4275
+ }] : paymentFields;
4276
+ var isTable = orderData == null ? void 0 : orderData.guest_count;
4018
4277
  return React__default.createElement(styles.ThemeProvider, {
4019
4278
  theme: themeMui
4020
4279
  }, React__default.createElement("div", {
@@ -4029,11 +4288,14 @@ var PaymentContainer = function PaymentContainer(_ref) {
4029
4288
  variant: "filled"
4030
4289
  }, error), paymentDataIsLoading && React__default.createElement(Loader, null), !paymentDataIsLoading && React__default.createElement(Container, {
4031
4290
  maxWidth: "md"
4032
- }, showFormTitle && React__default.createElement("h1", null, formTitle), React__default.createElement("div", {
4291
+ }, showFormTitle && React__default.createElement("h1", null, isTable ? 'Get Your Tables' : formTitle), React__default.createElement("div", {
4033
4292
  className: "order_info_text"
4034
4293
  }, orderInfoLabel), React__default.createElement("div", {
4035
- className: "order_info_section"
4036
- }, _map(paymentFields, function (field) {
4294
+ className: "order_info_section",
4295
+ style: {
4296
+ display: hasTableTypes ? 'block' : 'grid'
4297
+ }
4298
+ }, _map(paymentFieldsData, function (field) {
4037
4299
  var id = field.id,
4038
4300
  label = field.label,
4039
4301
  _field$className = field.className,
@@ -4042,10 +4304,49 @@ var PaymentContainer = function PaymentContainer(_ref) {
4042
4304
  normalizer = _field$normalizer === void 0 ? _identity : _field$normalizer;
4043
4305
  var currency = orderData.currency;
4044
4306
  var value = orderData[id];
4307
+ var component = null;
4045
4308
  if (field.id === 'add_ons' && _isEmpty(value)) {
4046
4309
  return false;
4047
4310
  }
4048
- return React__default.createElement("div", {
4311
+ if (field.id === 'tableTypes') {
4312
+ var valueArray = value;
4313
+ component = React__default.createElement("div", {
4314
+ key: id,
4315
+ className: "order_info_block",
4316
+ style: {
4317
+ display: 'flex',
4318
+ flexDirection: 'column'
4319
+ }
4320
+ }, _map(valueArray, function (tableTypeItem) {
4321
+ return React__default.createElement("div", {
4322
+ key: tableTypeItem.id,
4323
+ style: {
4324
+ display: 'grid',
4325
+ gridTemplateColumns: '33% 33% 33%',
4326
+ gridColumnGap: '10%'
4327
+ }
4328
+ }, React__default.createElement("div", {
4329
+ className: "order_info_block"
4330
+ }, React__default.createElement("div", {
4331
+ className: "order_info_title"
4332
+ }, "Table Type"), React__default.createElement("div", {
4333
+ className: className + " order_info_text"
4334
+ }, tableTypeItem.ticketType)), React__default.createElement("div", {
4335
+ className: "order_info_block"
4336
+ }, React__default.createElement("div", {
4337
+ className: "order_info_title"
4338
+ }, "Number of Tables"), React__default.createElement("div", {
4339
+ className: className + " order_info_text"
4340
+ }, tableTypeItem.count)), React__default.createElement("div", {
4341
+ className: "order_info_block"
4342
+ }, React__default.createElement("div", {
4343
+ className: "order_info_title"
4344
+ }, "Guest Count"), React__default.createElement("div", {
4345
+ className: className + " order_info_text"
4346
+ }, tableTypeItem.quantity)));
4347
+ }));
4348
+ }
4349
+ return component || React__default.createElement("div", {
4049
4350
  key: id,
4050
4351
  className: "order_info_block"
4051
4352
  }, React__default.createElement("div", {
@@ -4095,7 +4396,7 @@ var PaymentContainer = function PaymentContainer(_ref) {
4095
4396
  options: elementsOptions
4096
4397
  }, React__default.createElement(CheckoutForm, {
4097
4398
  stripe_client_secret: _get(reviewData, 'payment_method.stripe_client_secret'),
4098
- total: orderData.total,
4399
+ total: orderData.guest_count ? orderData.pay_now : orderData.total,
4099
4400
  onSubmit: handlePaymentMiddleWare,
4100
4401
  error: error,
4101
4402
  currency: orderData.currency,
@@ -4295,12 +4596,12 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4295
4596
  _ref$shareButtons = _ref.shareButtons,
4296
4597
  shareButtons = _ref$shareButtons === void 0 ? [] : _ref$shareButtons,
4297
4598
  _ref$onGetConfirmatio = _ref.onGetConfirmationDataSuccess,
4298
- onGetConfirmationDataSuccess = _ref$onGetConfirmatio === void 0 ? function () {} : _ref$onGetConfirmatio,
4599
+ onGetConfirmationDataSuccess = _ref$onGetConfirmatio === void 0 ? _identity : _ref$onGetConfirmatio,
4299
4600
  _ref$onGetConfirmatio2 = _ref.onGetConfirmationDataError,
4300
- onGetConfirmationDataError = _ref$onGetConfirmatio2 === void 0 ? function () {} : _ref$onGetConfirmatio2,
4601
+ onGetConfirmationDataError = _ref$onGetConfirmatio2 === void 0 ? _identity : _ref$onGetConfirmatio2,
4301
4602
  orderHash = _ref.orderHash,
4302
4603
  _ref$onLinkCopied = _ref.onLinkCopied,
4303
- onLinkCopied = _ref$onLinkCopied === void 0 ? function () {} : _ref$onLinkCopied,
4604
+ onLinkCopied = _ref$onLinkCopied === void 0 ? _identity : _ref$onLinkCopied,
4304
4605
  clientLabel = _ref.clientLabel,
4305
4606
  _ref$showReferralsInf = _ref.showReferralsInfoText,
4306
4607
  showReferralsInfoText = _ref$showReferralsInf === void 0 ? false : _ref$showReferralsInf,
@@ -4317,7 +4618,7 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4317
4618
  hash: orderHash
4318
4619
  };
4319
4620
  var hash = dataDecoded.hash;
4320
- // 1. get payment complete data ---> v1/order/${orderHash}/payment/complete/
4621
+ var eventId = (data == null ? void 0 : data.product_id) || '';
4321
4622
  React.useEffect(function () {
4322
4623
  _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
4323
4624
  var _data$product_price, response, _data;
@@ -4386,7 +4687,6 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4386
4687
  confirmationMain = _confirmationLabels$c2 === void 0 ? 'Your tickets are available in My Tickets section' : _confirmationLabels$c2,
4387
4688
  _confirmationLabels$c3 = confirmationLabels.confirmationHelper,
4388
4689
  confirmationHelper = _confirmationLabels$c3 === void 0 ? 'Please bring them with you to the event' : _confirmationLabels$c3;
4389
- var eventId = (data == null ? void 0 : data.product_id) || '';
4390
4690
  var pageUrl = isBrowser ? window.location.href.split('?')[0] : '';
4391
4691
  usePixel(eventId, {
4392
4692
  page: 'complete',
@@ -4477,6 +4777,7 @@ var ConfirmationContainer = function ConfirmationContainer(_ref) {
4477
4777
  value: data.personal_share_link,
4478
4778
  onChange: onChangeShareLink
4479
4779
  }), React__default.createElement("div", {
4780
+ "aria-hidden": true,
4480
4781
  className: "share-by-link-copy-icon",
4481
4782
  onClick: function onClick() {
4482
4783
  navigator.clipboard.writeText(_get(inputRef, 'current.value'));
@@ -4980,14 +5281,21 @@ var TicketRow = function TicketRow(_ref) {
4980
5281
  var ticketTier = _ref.ticketTier,
4981
5282
  prevTicketTier = _ref.prevTicketTier,
4982
5283
  selectedTickets = _ref.selectedTickets,
4983
- handleTicketSelect = _ref.handleTicketSelect;
5284
+ handleTicketSelect = _ref.handleTicketSelect,
5285
+ isSeatMapAllowed = _ref.isSeatMapAllowed,
5286
+ tableType = _ref.tableType;
4984
5287
  var soldOutMessage = ticketTier.soldOutMessage ? ("" + ticketTier.soldOutMessage).toUpperCase() : 'SOLD OUT';
4985
5288
  var isSalesClosed = !ticketTier.salesStarted || ticketTier.salesEnded;
4986
- var options = getTicketSelectOptions(ticketTier.maxQuantity, ticketTier.minQuantity, ticketTier.multiplier);
5289
+ var maxCount = tableType ? ticketTier.maxGuests : ticketTier.maxQuantity;
5290
+ var minCount = tableType ? ticketTier.minGuests : ticketTier.minQuantity;
5291
+ var multiplier = ticketTier.multiplier;
5292
+ var options = getTicketSelectOptions(maxCount, minCount, multiplier);
4987
5293
  var ticketsClosedMessage = !ticketTier.salesStarted ? 'Sales not started' : 'Sales Ended';
5294
+ var canPurchaseTicket = ticketTier.displayTicket && ticketTier.maxQuantity;
5295
+ var isDirectPurchaseAllowed = _get(ticketTier, 'allowDirectPurchase', false);
4988
5296
  var onSaleContent = React__default.createElement("div", {
4989
5297
  className: "get-tickets"
4990
- }, React__default.createElement(Box, {
5298
+ }, ticketTier.isTable && React__default.createElement("span", null, "GUESTS"), React__default.createElement(Box, {
4991
5299
  className: "get-tickets__selectbox"
4992
5300
  }, React__default.createElement(FormControl, {
4993
5301
  fullWidth: true
@@ -5022,7 +5330,10 @@ var TicketRow = function TicketRow(_ref) {
5022
5330
  returnValue = soldOutMessage;
5023
5331
  } else if (isSalesClosed) {
5024
5332
  returnValue = ticketsClosedMessage;
5025
- } else if (ticketTier.displayTicket && ticketTier.maxQuantity) {
5333
+ } else if (canPurchaseTicket && isSeatMapAllowed && !isDirectPurchaseAllowed) {
5334
+ // Seat Map Tickets renderer logic
5335
+ returnValue = null;
5336
+ } else if (canPurchaseTicket) {
5026
5337
  returnValue = onSaleContent;
5027
5338
  } else if (_get(prevTicketTier, 'in_stock')) {
5028
5339
  returnValue = 'SOON';
@@ -5040,9 +5351,13 @@ var TicketsSection = function TicketsSection(_ref) {
5040
5351
  handleTicketSelect = _ref.handleTicketSelect,
5041
5352
  sortBySoldOut = _ref.sortBySoldOut,
5042
5353
  ticketsHeaderComponent = _ref.ticketsHeaderComponent,
5354
+ tableTicketsHeaderComponent = _ref.tableTicketsHeaderComponent,
5043
5355
  hideTicketsHeader = _ref.hideTicketsHeader,
5356
+ hideTableTicketsHeader = _ref.hideTableTicketsHeader,
5044
5357
  showGroupNameBlock = _ref.showGroupNameBlock,
5045
- currencySybmol = _ref.currencySybmol;
5358
+ currencySybmol = _ref.currencySybmol,
5359
+ isSeatMapAllowed = _ref.isSeatMapAllowed,
5360
+ tableTickets = _ref.tableTickets;
5046
5361
  var symbol = event.currency.symbol;
5047
5362
  var sortedTicketsList = sortBySoldOut ? _sortBy(_sortBy(ticketsList, 'sortOrder'), 'soldOut') : _sortBy(ticketsList, 'sortOrder');
5048
5363
  var showGroup = !!sortedTicketsList.find(function (ticket) {
@@ -5094,6 +5409,55 @@ var TicketsSection = function TicketsSection(_ref) {
5094
5409
  selectedTickets: selectedTickets,
5095
5410
  handleTicketSelect: ticketSelect
5096
5411
  })))));
5412
+ }), !hideTableTicketsHeader && tableTicketsHeaderComponent, tableTickets.map(function (ticket, i, arr) {
5413
+ var _arr2;
5414
+ var ticketPrice = priceSymbol + " " + (+ticket.price).toFixed(2);
5415
+ var ticketOldPrice = priceSymbol + " " + (+ticket.oldPrice).toFixed(2);
5416
+ var isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut;
5417
+ var ticketSelect = function ticketSelect(event) {
5418
+ var value = event.target.value;
5419
+ handleTicketSelect(ticket.id, value, true);
5420
+ };
5421
+ var ticketIsDiscounted = false;
5422
+ if (ticket.oldPrice && !isSoldOut && ticket.oldPrice !== ticket.price) {
5423
+ ticketIsDiscounted = true;
5424
+ }
5425
+ var ticketIsFree = +ticket.price === 0;
5426
+ var ticketPriceElem = isSoldOut ? 'SOLD OUT' : ticketIsFree ? 'FREE' : ticketPrice;
5427
+ var isNewGroupTicket = (ticket == null ? void 0 : ticket.groupName) !== ((_arr2 = arr[i - 1]) == null ? void 0 : _arr2.groupName);
5428
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(React__default.Fragment, {
5429
+ key: ticket.id || ticket.name
5430
+ }, showGroupNameBlock && showGroup && isNewGroupTicket ? React__default.createElement("div", {
5431
+ className: "event-detail__tier group-title"
5432
+ }, ticket.groupName || '') : null, React__default.createElement("div", {
5433
+ className: "event-detail__tier " + (isSoldOut ? 'disabled' : '')
5434
+ }, React__default.createElement("div", {
5435
+ className: "event-detail__tier-name"
5436
+ }, ticket.displayName || ticket.name), React__default.createElement("div", {
5437
+ className: "event-tickets-container"
5438
+ }, React__default.createElement("div", {
5439
+ className: "event-detail__tier-price"
5440
+ }, ticketIsDiscounted && React__default.createElement("p", {
5441
+ className: "old-price"
5442
+ }, ticketOldPrice), React__default.createElement("p", {
5443
+ className: isSoldOut ? 'sold-out' : ''
5444
+ }, ticketPriceElem), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
5445
+ className: "fees"
5446
+ }, ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'), ticket.depositPercent && React__default.createElement("p", {
5447
+ className: "deposits"
5448
+ }, ticket.depositPercent + '% DEPOSIT')), React__default.createElement("div", {
5449
+ className: "event-detail__tier-state",
5450
+ style: {
5451
+ minWidth: 55
5452
+ }
5453
+ }, React__default.createElement(TicketRow, {
5454
+ tableType: true,
5455
+ ticketTier: ticket,
5456
+ prevTicketTier: arr[i - 1],
5457
+ selectedTickets: selectedTickets,
5458
+ handleTicketSelect: ticketSelect,
5459
+ isSeatMapAllowed: isSeatMapAllowed
5460
+ }))))));
5097
5461
  }));
5098
5462
  };
5099
5463
 
@@ -5145,6 +5509,9 @@ var TicketsContainer = function TicketsContainer(_ref) {
5145
5509
  ticketsHeaderComponent = _ref.ticketsHeaderComponent,
5146
5510
  _ref$hideTicketsHeade = _ref.hideTicketsHeader,
5147
5511
  hideTicketsHeader = _ref$hideTicketsHeade === void 0 ? false : _ref$hideTicketsHeade,
5512
+ tableTicketsHeaderComponent = _ref.tableTicketsHeaderComponent,
5513
+ _ref$hideTableTickets = _ref.hideTableTicketsHeader,
5514
+ hideTableTicketsHeader = _ref$hideTableTickets === void 0 ? false : _ref$hideTableTickets,
5148
5515
  _ref$enableInfluencer = _ref.enableInfluencersSection,
5149
5516
  enableInfluencersSection = _ref$enableInfluencer === void 0 ? true : _ref$enableInfluencer,
5150
5517
  _ref$enableAddOns = _ref.enableAddOns,
@@ -5161,6 +5528,8 @@ var TicketsContainer = function TicketsContainer(_ref) {
5161
5528
  showGroupNameBlock = _ref$showGroupNameBlo === void 0 ? false : _ref$showGroupNameBlo,
5162
5529
  _ref$currencySybmol = _ref.currencySybmol,
5163
5530
  currencySybmol = _ref$currencySybmol === void 0 ? '' : _ref$currencySybmol,
5531
+ _ref$onReserveButtonC = _ref.onReserveButtonClick,
5532
+ onReserveButtonClick = _ref$onReserveButtonC === void 0 ? _identity : _ref$onReserveButtonC,
5164
5533
  _ref$onPendingVerific = _ref.onPendingVerification,
5165
5534
  onPendingVerification = _ref$onPendingVerific === void 0 ? _identity : _ref$onPendingVerific;
5166
5535
  var _useState = React.useState({}),
@@ -5364,13 +5733,16 @@ var TicketsContainer = function TicketsContainer(_ref) {
5364
5733
  }));
5365
5734
  return _getTicketsApi.apply(this, arguments);
5366
5735
  }
5367
- var handleTicketSelect = function handleTicketSelect(key, value) {
5736
+ var handleTicketSelect = function handleTicketSelect(key, value, isTable) {
5737
+ if (isTable === void 0) {
5738
+ isTable = false;
5739
+ }
5368
5740
  setSelectedTickets(function (prevState) {
5369
5741
  var _ref3;
5370
5742
  if (Object.keys(prevState)[0] !== key && !value) {
5371
5743
  return prevState;
5372
5744
  }
5373
- return _ref3 = {}, _ref3[key] = value, _ref3;
5745
+ return _ref3 = {}, _ref3[key] = value, _ref3.isTable = isTable, _ref3;
5374
5746
  });
5375
5747
  };
5376
5748
  var handleOrdersClick = function handleOrdersClick() {
@@ -5384,7 +5756,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5384
5756
  var handleBook = /*#__PURE__*/function () {
5385
5757
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
5386
5758
  var _product_options, _product_options2, _ticket_types;
5387
- var ticket, optionName, ticketId, ticketQuantity, data, result, pageConfigsDataResponse, _pageConfigsData$skip, _pageConfigsData$name, _pageConfigsData$age_, _pageConfigsData$phon, _pageConfigsData$hide, _pageConfigsData$has_, _pageConfigsData$free, _pageConfigsData$coll, _pageConfigsData$coll2, pageConfigsData, skipBillingPage, nameIsRequired, ageIsRequired, phoneIsRequired, hidePhoneField, hasAddOn, freeTicket, collectOptionalWalletAddress, collectMandatoryWalletAddress, hash, total, _isWindowDefined, userData, access_token, checkoutBody, checkoutResult, _e$response, _e$response$data, _e$response$data$data, _e$response2, _e$response2$data, message, _isInvalidLinkError, _isNotInvitedError;
5759
+ var ticket, optionName, ticketId, isTableType, productCartQuantity, ticketQuantity, data, result, pageConfigsDataResponse, _pageConfigsData$skip, _pageConfigsData$name, _pageConfigsData$age_, _pageConfigsData$phon, _pageConfigsData$hide, _pageConfigsData$has_, _pageConfigsData$free, _pageConfigsData$coll, _pageConfigsData$coll2, pageConfigsData, skipBillingPage, nameIsRequired, ageIsRequired, phoneIsRequired, hidePhoneField, hasAddOn, freeTicket, collectOptionalWalletAddress, collectMandatoryWalletAddress, hash, total, _isWindowDefined, userData, access_token, checkoutBody, checkoutResult, _e$response, _e$response$data, _e$response$data$data, _e$response2, _e$response2$data, message, _isInvalidLinkError, _isNotInvitedError;
5388
5760
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
5389
5761
  while (1) switch (_context2.prev = _context2.next) {
5390
5762
  case 0:
@@ -5394,11 +5766,13 @@ var TicketsContainer = function TicketsContainer(_ref) {
5394
5766
  }) || {};
5395
5767
  optionName = _get(ticket, 'optionName');
5396
5768
  ticketId = _get(ticket, 'id');
5397
- ticketQuantity = +selectedTickets[ticket.id];
5769
+ isTableType = _get(ticket, 'isTable', false);
5770
+ productCartQuantity = +selectedTickets[ticket.id];
5771
+ ticketQuantity = isTableType ? 1 : +selectedTickets[ticket.id];
5398
5772
  data = {
5399
5773
  attributes: {
5400
5774
  alternative_view_id: null,
5401
- product_cart_quantity: ticketQuantity,
5775
+ product_cart_quantity: productCartQuantity,
5402
5776
  product_options: (_product_options = {}, _product_options[optionName] = ticketId, _product_options),
5403
5777
  product_id: eventId,
5404
5778
  ticket_types: (_ticket_types = {}, _ticket_types[ticketId] = {
@@ -5407,32 +5781,32 @@ var TicketsContainer = function TicketsContainer(_ref) {
5407
5781
  }, _ticket_types)
5408
5782
  }
5409
5783
  };
5410
- _context2.prev = 6;
5411
- _context2.next = 9;
5784
+ _context2.prev = 8;
5785
+ _context2.next = 11;
5412
5786
  return addToCart(eventId, data);
5413
- case 9:
5787
+ case 11:
5414
5788
  result = _context2.sent;
5415
5789
  if (!enableAddOns) {
5416
- _context2.next = 16;
5790
+ _context2.next = 18;
5417
5791
  break;
5418
5792
  }
5419
- _context2.next = 13;
5793
+ _context2.next = 15;
5420
5794
  return getCheckoutPageConfigs();
5421
- case 13:
5795
+ case 15:
5422
5796
  _context2.t0 = _context2.sent;
5423
- _context2.next = 17;
5797
+ _context2.next = 19;
5424
5798
  break;
5425
- case 16:
5799
+ case 18:
5426
5800
  _context2.t0 = {
5427
5801
  status: 200,
5428
5802
  data: {
5429
5803
  attributes: _get(result, 'data.data.attributes')
5430
5804
  }
5431
5805
  };
5432
- case 17:
5806
+ case 19:
5433
5807
  pageConfigsDataResponse = _context2.t0;
5434
5808
  if (!(result.status === 200 && pageConfigsDataResponse.status === 200)) {
5435
- _context2.next = 48;
5809
+ _context2.next = 50;
5436
5810
  break;
5437
5811
  }
5438
5812
  pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {};
@@ -5450,7 +5824,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5450
5824
  _isWindowDefined = typeof window !== 'undefined';
5451
5825
  _isWindowDefined && window.localStorage.removeItem('add_ons');
5452
5826
  if (!(skipBillingPage && !hasAddOn)) {
5453
- _context2.next = 47;
5827
+ _context2.next = 49;
5454
5828
  break;
5455
5829
  }
5456
5830
  // Get user data for checkout data
@@ -5458,22 +5832,22 @@ var TicketsContainer = function TicketsContainer(_ref) {
5458
5832
  access_token = _isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
5459
5833
  checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketQuantity, userData);
5460
5834
  if (!enableBillingInfoAutoCreate) {
5461
- _context2.next = 43;
5835
+ _context2.next = 45;
5462
5836
  break;
5463
5837
  }
5464
- _context2.next = 40;
5838
+ _context2.next = 42;
5465
5839
  return postOnCheckout(checkoutBody, access_token, freeTicket);
5466
- case 40:
5840
+ case 42:
5467
5841
  _context2.t1 = _context2.sent;
5468
- _context2.next = 44;
5842
+ _context2.next = 46;
5469
5843
  break;
5470
- case 43:
5844
+ case 45:
5471
5845
  _context2.t1 = null;
5472
- case 44:
5846
+ case 46:
5473
5847
  checkoutResult = _context2.t1;
5474
5848
  hash = _get(checkoutResult, 'data.data.attributes.hash');
5475
5849
  total = _get(checkoutResult, 'data.data.attributes.total');
5476
- case 47:
5850
+ case 49:
5477
5851
  onAddToCartSuccess({
5478
5852
  skip_billing_page: skipBillingPage,
5479
5853
  names_required: nameIsRequired,
@@ -5488,12 +5862,12 @@ var TicketsContainer = function TicketsContainer(_ref) {
5488
5862
  total: total,
5489
5863
  hasAddOn: hasAddOn
5490
5864
  });
5491
- case 48:
5492
- _context2.next = 53;
5493
- break;
5494
5865
  case 50:
5495
- _context2.prev = 50;
5496
- _context2.t2 = _context2["catch"](6);
5866
+ _context2.next = 55;
5867
+ break;
5868
+ case 52:
5869
+ _context2.prev = 52;
5870
+ _context2.t2 = _context2["catch"](8);
5497
5871
  if ((_e$response = _context2.t2.response) != null && (_e$response$data = _e$response.data) != null && (_e$response$data$data = _e$response$data.data) != null && _e$response$data$data.hasUnverifiedOrder) {
5498
5872
  setPendingVerificationMessage((_e$response2 = _context2.t2.response) == null ? void 0 : (_e$response2$data = _e$response2.data) == null ? void 0 : _e$response2$data.message);
5499
5873
  } else if (axios.isAxiosError(_context2.t2)) {
@@ -5509,15 +5883,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
5509
5883
  setError(message);
5510
5884
  }
5511
5885
  }
5512
- case 53:
5513
- _context2.prev = 53;
5886
+ case 55:
5887
+ _context2.prev = 55;
5514
5888
  setHandleBookIsLoading(false);
5515
- return _context2.finish(53);
5516
- case 56:
5889
+ return _context2.finish(55);
5890
+ case 58:
5517
5891
  case "end":
5518
5892
  return _context2.stop();
5519
5893
  }
5520
- }, _callee2, null, [[6, 50, 53, 56]]);
5894
+ }, _callee2, null, [[8, 52, 55, 58]]);
5521
5895
  }));
5522
5896
  return function handleBook() {
5523
5897
  return _ref4.apply(this, arguments);
@@ -5581,7 +5955,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5581
5955
  }
5582
5956
  }
5583
5957
  };
5584
- var bookButtonIsDisabled = handleBookIsLoading || _isEmpty(selectedTickets) || Object.values(selectedTickets)[0] === 0;
5958
+ var bookButtonIsDisabled = (handleBookIsLoading || _isEmpty(selectedTickets) || Object.values(selectedTickets)[0] === 0) && !(event != null && event.flagSeatMapAllowed);
5585
5959
  var isTicketAvailable = _some(tickets, function (ticket) {
5586
5960
  return ticket.displayTicket && !ticket.soldOut && ticket.salesStarted;
5587
5961
  });
@@ -5609,6 +5983,17 @@ var TicketsContainer = function TicketsContainer(_ref) {
5609
5983
  setIsInvalidLinkError('');
5610
5984
  };
5611
5985
  var hideTopInfluencers = event == null ? void 0 : event.hideTopInfluencers;
5986
+ var isSeatMapAllowed = _get(event, 'seatMapAllowed', false);
5987
+ var isTableMapEnabled = _get(event, 'tableMapEnabled', false);
5988
+ var tableTickets = _filter(tickets, function (ticket) {
5989
+ return ticket.isTable;
5990
+ });
5991
+ var ordinarTickets = {};
5992
+ _forEach(tickets, function (ticket, key) {
5993
+ if (!ticket.isTable) {
5994
+ ordinarTickets[key] = ticket;
5995
+ }
5996
+ });
5612
5997
  return React__default.createElement(privateTheming.ThemeProvider, {
5613
5998
  theme: themeMui
5614
5999
  }, !isLoading && React__default.createElement(ReferralLogic, {
@@ -5645,14 +6030,18 @@ var TicketsContainer = function TicketsContainer(_ref) {
5645
6030
  ref: ticketsContainerRef
5646
6031
  }, !isSalesClosed && React__default.createElement(TicketsSection, {
5647
6032
  event: event,
5648
- ticketsList: tickets,
6033
+ ticketsList: ordinarTickets,
6034
+ tableTickets: tableTickets,
5649
6035
  selectedTickets: selectedTickets,
5650
6036
  handleTicketSelect: handleTicketSelect,
5651
6037
  sortBySoldOut: sortBySoldOut,
5652
6038
  ticketsHeaderComponent: ticketsHeaderComponent,
5653
- hideTicketsHeader: hideTicketsHeader || _isEmpty(tickets),
6039
+ tableTicketsHeaderComponent: tableTicketsHeaderComponent,
6040
+ hideTableTicketsHeader: hideTableTicketsHeader || _isEmpty(tableTickets),
6041
+ hideTicketsHeader: hideTicketsHeader || _isEmpty(ordinarTickets),
5654
6042
  showGroupNameBlock: showGroupNameBlock,
5655
- currencySybmol: currencySybmol
6043
+ currencySybmol: currencySybmol,
6044
+ isSeatMapAllowed: isSeatMapAllowed
5656
6045
  }), externalUrl ? null : isSalesClosed ? React__default.createElement("p", {
5657
6046
  className: "event-closed-message " + (!isLoggedIn ? 'event-closed-on-bottom' : '')
5658
6047
  }, "Sales for this event are closed.") : eventSaleIsNotStarted ? React__default.createElement(Countdown, {
@@ -5665,7 +6054,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
5665
6054
  disableLeadingZero: disableCountdownLeadingZero,
5666
6055
  isLoggedIn: isLoggedIn
5667
6056
  }) : null, showWaitingList && event.salesStarted && !hideWaitingList && React__default.createElement(WaitingList, {
5668
- tickets: tickets,
6057
+ tickets: ordinarTickets,
5669
6058
  eventId: eventId,
5670
6059
  defaultMaxQuantity: event.waitingListMaxQuantity
5671
6060
  }), codeIsLoading ? React__default.createElement(Loader, null) : isSalesClosed ? null : showAccessCodeSection ? React__default.createElement(AccessCodeSection, {
@@ -5687,7 +6076,11 @@ var TicketsContainer = function TicketsContainer(_ref) {
5687
6076
  "aria-hidden": true,
5688
6077
  className: "book-button \n " + (bookButtonIsDisabled ? 'disabled' : '') + " \n " + (isButtonScrollable ? 'is-scrollable' : '') + "\n " + (!isLoggedIn ? 'on-bottom' : '') + "\n ",
5689
6078
  onClick: handleGetTicketClick
5690
- }, getTicketsLabel || 'GET TICKETS'), isLogged && !hideSessionButtons ? React__default.createElement("div", {
6079
+ }, selectedTickets.isTable ? 'RESERVE TABLES' : getTicketsLabel || 'GET TICKETS'), isSeatMapAllowed && !(event != null && event.salesEnded) && isTicketAvailable && React__default.createElement(Button$1, {
6080
+ className: "reserve-button",
6081
+ "aria-hidden": true,
6082
+ onClick: onReserveButtonClick
6083
+ }, isTableMapEnabled ? 'Select on map' : 'Select your seats'), isLogged && !hideSessionButtons ? React__default.createElement("div", {
5691
6084
  className: "session-wrapper"
5692
6085
  }, React__default.createElement("span", {
5693
6086
  className: "session-container"
@@ -6490,6 +6883,17 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
6490
6883
  var date = moment.tz(data.date, data.timezone).format('dddd, DD MMMM YYYY');
6491
6884
  orderSummery += " " + date;
6492
6885
  }
6886
+ var columnsProps = data.tickets && data.tickets[0].is_table ? [{
6887
+ label: 'Items'
6888
+ }, {
6889
+ label: 'Price'
6890
+ }, {
6891
+ label: 'Guests count'
6892
+ }, {
6893
+ label: 'Deposit paid'
6894
+ }, {
6895
+ label: 'Remaining'
6896
+ }] : columns;
6493
6897
  return React__default.createElement("div", {
6494
6898
  className: "order-details"
6495
6899
  }, loading ? React__default.createElement("div", {
@@ -6536,12 +6940,14 @@ var OrderDetailsContainer = function OrderDetailsContainer(_ref) {
6536
6940
  }, React__default.createElement(Table, {
6537
6941
  className: "tt-type",
6538
6942
  "aria-label": "collapsible table"
6539
- }, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, _map(columns, function (item) {
6943
+ }, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, _map(columnsProps, function (item) {
6540
6944
  return React__default.createElement(TableCell, null, item.label || '');
6541
6945
  }))), React__default.createElement(TableBody, null, data == null ? void 0 : (_data$items = data.items) == null ? void 0 : (_data$items$ticket_ty = _data$items.ticket_types) == null ? void 0 : _data$items$ticket_ty.map(function (ticket, index) {
6542
- return React__default.createElement(TableRow, {
6946
+ return data != null && data.tickets && !(data != null && data.tickets[0].is_table) ? React__default.createElement(TableRow, {
6543
6947
  key: index
6544
- }, React__default.createElement(TableCell, null, React__default.createElement("b", null, "Ticket Type:"), " ", ticket.name), React__default.createElement(TableCell, null, ticket.currency + ticket.price), React__default.createElement(TableCell, null, ticket.quantity), React__default.createElement(TableCell, null, ticket.currency + ticket.total));
6948
+ }, React__default.createElement(TableCell, null, React__default.createElement("b", null, "Ticket Type:"), " ", ticket.name), React__default.createElement(TableCell, null, ticket.currency + ticket.price), React__default.createElement(TableCell, null, ticket.quantity), React__default.createElement(TableCell, null, ticket.currency + ticket.total)) : React__default.createElement(TableRow, {
6949
+ key: index
6950
+ }, React__default.createElement(TableCell, null, React__default.createElement("b", null, "Ticket Type:"), " ", ticket.name), React__default.createElement(TableCell, null, ticket.currency + ticket.price), React__default.createElement(TableCell, null, ticket.guests_count), React__default.createElement(TableCell, null, ticket.deposit_paid), React__default.createElement(TableCell, null, ticket.remaining));
6545
6951
  }), data == null ? void 0 : (_data$items2 = data.items) == null ? void 0 : (_data$items2$add_ons = _data$items2.add_ons) == null ? void 0 : _data$items2$add_ons.map(function (ticket, index) {
6546
6952
  return React__default.createElement(TableRow, {
6547
6953
  key: index
@@ -7423,16 +7829,850 @@ var AddonsContainter = function AddonsContainter(_ref) {
7423
7829
  }));
7424
7830
  };
7425
7831
 
7832
+ var addToCartFunc = /*#__PURE__*/function () {
7833
+ var _ref2 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
7834
+ var eventId, data, ticketQuantity, _ref$enableBillingInf, enableBillingInfoAutoCreate, isWindowDefined, result, pageConfigsDataResponse, pageConfigsData, _pageConfigsData$skip, skipBillingPage, _pageConfigsData$name, nameIsRequired, _pageConfigsData$age_, ageIsRequired, _pageConfigsData$phon, phoneIsRequired, _pageConfigsData$hide, hidePhoneField, _pageConfigsData$has_, hasAddOn, _pageConfigsData$free, freeTicket, _pageConfigsData$coll, collectOptionalWalletAddress, _pageConfigsData$coll2, collectMandatoryWalletAddress, hash, total, userData, checkoutBody, checkoutResult;
7835
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
7836
+ while (1) switch (_context.prev = _context.next) {
7837
+ case 0:
7838
+ eventId = _ref.eventId, data = _ref.data, ticketQuantity = _ref.ticketQuantity, _ref$enableBillingInf = _ref.enableBillingInfoAutoCreate, enableBillingInfoAutoCreate = _ref$enableBillingInf === void 0 ? true : _ref$enableBillingInf;
7839
+ isWindowDefined = typeof window !== 'undefined';
7840
+ _context.next = 4;
7841
+ return addToCart(eventId, data);
7842
+ case 4:
7843
+ result = _context.sent;
7844
+ _context.next = 7;
7845
+ return getCheckoutPageConfigs();
7846
+ case 7:
7847
+ pageConfigsDataResponse = _context.sent;
7848
+ if (!(result.status === 200 && pageConfigsDataResponse.status === 200)) {
7849
+ _context.next = 28;
7850
+ break;
7851
+ }
7852
+ pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {};
7853
+ _pageConfigsData$skip = pageConfigsData.skip_billing_page, skipBillingPage = _pageConfigsData$skip === void 0 ? false : _pageConfigsData$skip, _pageConfigsData$name = pageConfigsData.names_required, nameIsRequired = _pageConfigsData$name === void 0 ? false : _pageConfigsData$name, _pageConfigsData$age_ = pageConfigsData.age_required, ageIsRequired = _pageConfigsData$age_ === void 0 ? false : _pageConfigsData$age_, _pageConfigsData$phon = pageConfigsData.phone_required, phoneIsRequired = _pageConfigsData$phon === void 0 ? false : _pageConfigsData$phon, _pageConfigsData$hide = pageConfigsData.hide_phone_field, hidePhoneField = _pageConfigsData$hide === void 0 ? false : _pageConfigsData$hide, _pageConfigsData$has_ = pageConfigsData.has_add_on, hasAddOn = _pageConfigsData$has_ === void 0 ? false : _pageConfigsData$has_, _pageConfigsData$free = pageConfigsData.free_ticket, freeTicket = _pageConfigsData$free === void 0 ? false : _pageConfigsData$free, _pageConfigsData$coll = pageConfigsData.collect_optional_wallet_address, collectOptionalWalletAddress = _pageConfigsData$coll === void 0 ? false : _pageConfigsData$coll, _pageConfigsData$coll2 = pageConfigsData.collect_mandatory_wallet_address, collectMandatoryWalletAddress = _pageConfigsData$coll2 === void 0 ? false : _pageConfigsData$coll2;
7854
+ hash = '';
7855
+ total = '';
7856
+ isWindowDefined && window.localStorage.removeItem('add_ons');
7857
+ if (!(skipBillingPage && !hasAddOn)) {
7858
+ _context.next = 27;
7859
+ break;
7860
+ }
7861
+ // Get user data for checkout data
7862
+ userData = isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
7863
+ checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketQuantity, userData);
7864
+ if (!enableBillingInfoAutoCreate) {
7865
+ _context.next = 23;
7866
+ break;
7867
+ }
7868
+ _context.next = 20;
7869
+ return postOnCheckout(checkoutBody, undefined, freeTicket);
7870
+ case 20:
7871
+ _context.t0 = _context.sent;
7872
+ _context.next = 24;
7873
+ break;
7874
+ case 23:
7875
+ _context.t0 = null;
7876
+ case 24:
7877
+ checkoutResult = _context.t0;
7878
+ hash = _get(checkoutResult, 'data.data.attributes.hash') || '';
7879
+ total = _get(checkoutResult, 'data.data.attributes.total') || '';
7880
+ case 27:
7881
+ return _context.abrupt("return", {
7882
+ skip_billing_page: skipBillingPage,
7883
+ names_required: nameIsRequired,
7884
+ phone_required: phoneIsRequired,
7885
+ age_required: ageIsRequired,
7886
+ hide_phone_field: hidePhoneField,
7887
+ free_ticket: freeTicket,
7888
+ collect_optional_wallet_address: collectOptionalWalletAddress,
7889
+ collect_mandatory_wallet_address: collectMandatoryWalletAddress,
7890
+ event_id: String(eventId),
7891
+ hash: hash,
7892
+ total: total,
7893
+ hasAddOn: hasAddOn
7894
+ });
7895
+ case 28:
7896
+ return _context.abrupt("return", null);
7897
+ case 29:
7898
+ case "end":
7899
+ return _context.stop();
7900
+ }
7901
+ }, _callee);
7902
+ }));
7903
+ return function addToCartFunc(_x) {
7904
+ return _ref2.apply(this, arguments);
7905
+ };
7906
+ }();
7907
+
7908
+ var getTierIdBasedOnSeatId = function getTierIdBasedOnSeatId(seatId, eventSeats) {
7909
+ var tierId = '';
7910
+ _forEach(eventSeats, function (group) {
7911
+ _forEach(group.seats, function (seatsCount, rowId) {
7912
+ var _seatId$split = seatId.split(':'),
7913
+ row_id = _seatId$split[0],
7914
+ seat_id = _seatId$split[1];
7915
+ if (row_id === rowId && seat_id <= seatsCount) {
7916
+ tierId = Number(group.tier_id);
7917
+ return false;
7918
+ }
7919
+ return true;
7920
+ });
7921
+ });
7922
+ return tierId;
7923
+ };
7924
+ var getButtonLabel = function getButtonLabel(count, tableMapEnabled) {
7925
+ if (!count) {
7926
+ return tableMapEnabled ? "GET TABLES" : "GET TICKETS";
7927
+ } else if (count === 1) {
7928
+ return tableMapEnabled ? "GET " + count + " TABLE" : "GET " + count + " TICKET";
7929
+ }
7930
+ return tableMapEnabled ? "GET " + count + " TABLES" : "GET " + count + " TICKETS";
7931
+ };
7932
+ var getOwnReservationsBasedOnStatuses = function getOwnReservationsBasedOnStatuses(statuses) {
7933
+ var ownReservations = [];
7934
+ Object.keys(statuses).forEach(function (groupRowId) {
7935
+ return Object.keys(statuses[groupRowId]).forEach(function (seatIndex) {
7936
+ if (statuses[groupRowId][seatIndex] === 'OR') {
7937
+ ownReservations.push(groupRowId + ":" + seatIndex);
7938
+ } else if (statuses[groupRowId][seatIndex] === 'H') {
7939
+ statuses[groupRowId][seatIndex] = 'BLOCKED';
7940
+ }
7941
+ });
7942
+ });
7943
+ return ownReservations;
7944
+ };
7945
+ var getTicketDropdownData = function getTicketDropdownData(reservationData, tierReleations) {
7946
+ var ticketsDropdownsData = [];
7947
+ _forEach(reservationData, function (reservation) {
7948
+ if (tierReleations[reservation.tierId]) {
7949
+ var ticketsData = _values(tierReleations[reservation.tierId]);
7950
+ ticketsDropdownsData.push({
7951
+ seatId: reservation.seatId,
7952
+ tierId: reservation.tierId,
7953
+ ticketsData: ticketsData
7954
+ });
7955
+ } else {
7956
+ ticketsDropdownsData.push({
7957
+ seatId: reservation.seatId,
7958
+ tierId: reservation.tierId,
7959
+ ticketsData: [{
7960
+ ticket_type_tier_id: reservation.tierId,
7961
+ ticket_type_name: 'Please select Ticket Type',
7962
+ ticket_type_price: '',
7963
+ ticket_type_id: 'default'
7964
+ }]
7965
+ });
7966
+ }
7967
+ });
7968
+ return ticketsDropdownsData;
7969
+ };
7970
+ var getAddToCartRequestData = function getAddToCartRequestData(_ref) {
7971
+ var eventId = _ref.eventId,
7972
+ _ref$reservations = _ref.reservations,
7973
+ reservations = _ref$reservations === void 0 ? [] : _ref$reservations,
7974
+ _ref$selectedSeats = _ref.selectedSeats,
7975
+ selectedSeats = _ref$selectedSeats === void 0 ? [] : _ref$selectedSeats,
7976
+ _ref$selectedTickets = _ref.selectedTickets,
7977
+ selectedTickets = _ref$selectedTickets === void 0 ? [] : _ref$selectedTickets,
7978
+ _ref$guestCounts = _ref.guestCounts,
7979
+ guestCounts = _ref$guestCounts === void 0 ? {} : _ref$guestCounts;
7980
+ var hasGuests = !_isEmpty(guestCounts);
7981
+ var addToCartData = {
7982
+ attributes: {
7983
+ alternative_view_id: null,
7984
+ product_cart_quantity: reservations.length,
7985
+ product_options: {},
7986
+ product_id: eventId,
7987
+ ticket_types: {}
7988
+ }
7989
+ };
7990
+ var productOptions = {};
7991
+ var ticketTypes = {};
7992
+ _forEach(reservations, function (item, index) {
7993
+ var _ticketTypes$ticket$t, _product_options;
7994
+ var ticket = _find(selectedSeats[item], function (sitem) {
7995
+ return sitem.ticket_type_id === selectedTickets[item];
7996
+ });
7997
+ productOptions[ticket.ticket_type_option] = ticket.ticket_type_id;
7998
+ var ticketTypesKey = hasGuests ? index : ticket.ticket_type_id;
7999
+ var quantity = hasGuests ? guestCounts[item] : (((_ticketTypes$ticket$t = ticketTypes[ticket.ticket_type_id]) == null ? void 0 : _ticketTypes$ticket$t.quantity) || 0) + 1;
8000
+ ticketTypes[ticketTypesKey] = {
8001
+ quantity: quantity,
8002
+ product_options: (_product_options = {}, _product_options[ticket.ticket_type_option] = ticket.ticket_type_id, _product_options.ticket_price = ticket.ticket_type_price, _product_options)
8003
+ };
8004
+ });
8005
+ addToCartData.attributes.product_options = productOptions;
8006
+ addToCartData.attributes.ticket_types = ticketTypes;
8007
+ return addToCartData;
8008
+ };
8009
+ var getTierRelationsArray = function getTierRelationsArray(data) {
8010
+ var ticketTypeTireRelationsArray = [];
8011
+ _forEach(data, function (item) {
8012
+ ticketTypeTireRelationsArray.push.apply(ticketTypeTireRelationsArray, _values(item));
8013
+ });
8014
+ return ticketTypeTireRelationsArray;
8015
+ };
8016
+
8017
+ var CONTAINER_DEFAULT_ID = 'seat_map_default_container';
8018
+ var SeatMapComponent = function SeatMapComponent(props) {
8019
+ var seatMapProps = props.seatMapProps,
8020
+ mapContainerId = props.mapContainerId;
8021
+ var seatData = seatMapProps.seatData,
8022
+ statuses = seatMapProps.statuses,
8023
+ _seatMapProps$seatMap = seatMapProps.seatMapType,
8024
+ seatMapType = _seatMapProps$seatMap === void 0 ? null : _seatMapProps$seatMap,
8025
+ _seatMapProps$seatMap2 = seatMapProps.seatMapEvents,
8026
+ seatMapEvents = _seatMapProps$seatMap2 === void 0 ? {} : _seatMapProps$seatMap2,
8027
+ _seatMapProps$ticketT = seatMapProps.ticketTypeTierRelations,
8028
+ ticketTypeTierRelations = _seatMapProps$ticketT === void 0 ? {} : _seatMapProps$ticketT,
8029
+ tierPrices = seatMapProps.tierPrices,
8030
+ isReserving = seatMapProps.isReserving,
8031
+ predefinedSeats = seatMapProps.predefinedSeats;
8032
+ React.useEffect(function () {
8033
+ var parentElement = document.getElementById(mapContainerId || CONTAINER_DEFAULT_ID);
8034
+ // Temp solution
8035
+ window.tierPrices = tierPrices;
8036
+ if (Boolean(parentElement)) {
8037
+ var mapComponent = React__default.createElement(SeatMapView, {
8038
+ disabled: isReserving,
8039
+ loading: isReserving,
8040
+ events: seatMapEvents,
8041
+ isSelectionOn: false,
8042
+ seatData: seatData,
8043
+ statuses: statuses,
8044
+ ticketTypeTireRelationsArray: getTierRelationsArray(ticketTypeTierRelations),
8045
+ width: Math.min((parentElement == null ? void 0 : parentElement.clientWidth) || 800, 800),
8046
+ height: Math.min((parentElement == null ? void 0 : parentElement.clientWidth) || 800, 800),
8047
+ isBlockMap: seatMapType === 'block',
8048
+ isTableMap: seatMapType === 'table',
8049
+ predefinedSeats: predefinedSeats
8050
+ });
8051
+ ReactDom.render(mapComponent, parentElement);
8052
+ }
8053
+ }, [isReserving, mapContainerId, seatData, seatMapEvents, seatMapType, tierPrices, statuses, ticketTypeTierRelations]);
8054
+ return React__default.createElement("div", {
8055
+ id: CONTAINER_DEFAULT_ID
8056
+ });
8057
+ };
8058
+
8059
+ var TicketsSection$1 = function TicketsSection(props) {
8060
+ var ticketTypeTierRelations = props.ticketTypeTierRelations,
8061
+ reservedSeats = props.reservedSeats,
8062
+ _props$theme = props.theme,
8063
+ theme = _props$theme === void 0 ? 'light' : _props$theme,
8064
+ getTicketsBtnLabel = props.getTicketsBtnLabel,
8065
+ _props$contentStyle = props.contentStyle,
8066
+ contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle,
8067
+ _props$isButtonScroll = props.isButtonScrollable,
8068
+ isButtonScrollable = _props$isButtonScroll === void 0 ? false : _props$isButtonScroll,
8069
+ themeOptions = props.themeOptions,
8070
+ handleGetTicketClick = props.handleGetTicketClick,
8071
+ handleCancelReservation = props.handleCancelReservation,
8072
+ _props$ticketDeleteBu = props.ticketDeleteButtonContent,
8073
+ ticketDeleteButtonContent = _props$ticketDeleteBu === void 0 ? 'Delete' : _props$ticketDeleteBu,
8074
+ selectedTickets = props.selectedTickets,
8075
+ handleTicketSelect = props.handleTicketSelect,
8076
+ currencySymbol = props.currencySymbol,
8077
+ _props$tableMapEnable = props.tableMapEnabled,
8078
+ tableMapEnabled = _props$tableMapEnable === void 0 ? false : _props$tableMapEnable,
8079
+ guestCounts = props.guestCounts,
8080
+ setGuestCounts = props.setGuestCounts,
8081
+ isAddingToCart = props.isAddingToCart;
8082
+ var bookButtonIsDisabled = _some(selectedTickets, function (item) {
8083
+ return !item;
8084
+ }) || _isEmpty(reservedSeats) || reservedSeats.length !== _keys(selectedTickets).length;
8085
+ var themeMui = material.createTheme(themeOptions);
8086
+ var ticketsDropdownsData = getTicketDropdownData(reservedSeats, ticketTypeTierRelations);
8087
+ var handleTicketChange = function handleTicketChange(event, seatId) {
8088
+ var value = event.target.value;
8089
+ if (value !== 'default') {
8090
+ handleTicketSelect(value, seatId);
8091
+ }
8092
+ };
8093
+ return React__default.createElement(privateTheming.ThemeProvider, {
8094
+ theme: themeMui
8095
+ }, React__default.createElement("div", {
8096
+ className: "get-tickets-page " + theme,
8097
+ style: contentStyle
8098
+ }, React__default.createElement("div", {
8099
+ className: "tickets-section"
8100
+ }, _map(selectedTickets, function (ticketItem, key) {
8101
+ var dropdownData = _find(ticketsDropdownsData, function (item) {
8102
+ return item.seatId === key;
8103
+ }) || {};
8104
+ var selectedTicketData = _find(dropdownData.ticketsData, function (ticket) {
8105
+ return ticket.ticket_type_id === ticketItem;
8106
+ });
8107
+ // guest count dropdown options
8108
+ var startNum = Number(selectedTicketData == null ? void 0 : selectedTicketData.ticket_type_min_number_of_guests);
8109
+ var endNum = Number(selectedTicketData == null ? void 0 : selectedTicketData.ticket_type_max_number_of_guests);
8110
+ var numLength = endNum - startNum + 1;
8111
+ var showGuestCountDropdown = Boolean(startNum && endNum);
8112
+ // prices
8113
+ var guestPrice = (guestCounts[dropdownData.seatId] - startNum) * Number(selectedTicketData == null ? void 0 : selectedTicketData.guest_price);
8114
+ var finalPrice = createFixedFloatNormalizer(2)((selectedTicketData == null ? void 0 : selectedTicketData.ticket_type_price) + guestPrice);
8115
+ return React__default.createElement("div", {
8116
+ className: "ticket",
8117
+ key: key
8118
+ }, React__default.createElement("div", {
8119
+ className: "ticketsDropdowns"
8120
+ }, React__default.createElement(material.Select, {
8121
+ value: ticketItem || 'default',
8122
+ onChange: function onChange(event) {
8123
+ return handleTicketChange(event, dropdownData.seatId);
8124
+ },
8125
+ inputProps: {
8126
+ 'aria-label': 'Without label'
8127
+ },
8128
+ MenuProps: {
8129
+ PaperProps: {
8130
+ sx: {
8131
+ maxHeight: 150
8132
+ },
8133
+ className: 'get-tickets-paper'
8134
+ }
8135
+ },
8136
+ displayEmpty: true,
8137
+ sx: {
8138
+ borderRadius: 0
8139
+ }
8140
+ }, React__default.createElement(MenuItem, {
8141
+ value: 'default'
8142
+ }, "Please select " + (tableMapEnabled ? 'Table Type' : 'Ticket Type')), _map(dropdownData.ticketsData, function (option, index) {
8143
+ if (option.ticket_type_id !== 'default') {
8144
+ return React__default.createElement(MenuItem, {
8145
+ value: option.ticket_type_id,
8146
+ key: index
8147
+ }, option.ticket_type_name);
8148
+ }
8149
+ return null;
8150
+ })), React__default.createElement(reactBootstrap.Button, {
8151
+ className: "ticket-delete",
8152
+ onClick: function onClick() {
8153
+ handleCancelReservation(dropdownData.seatId, dropdownData.tierId);
8154
+ }
8155
+ }, ticketDeleteButtonContent)), selectedTicketData && React__default.createElement("div", {
8156
+ style: {
8157
+ display: 'flex',
8158
+ flexDirection: 'row'
8159
+ }
8160
+ }, React__default.createElement("div", {
8161
+ style: {
8162
+ width: '100%',
8163
+ display: 'flex',
8164
+ flexDirection: 'column',
8165
+ justifyContent: 'center'
8166
+ }
8167
+ }, React__default.createElement("div", {
8168
+ className: "ticketPrice"
8169
+ }, "Price:", React__default.createElement("span", {
8170
+ className: "ticketPrice-value"
8171
+ }, currencySymbol + " " + finalPrice)), !_isEmpty(selectedTicketData.ticket_type_deposit) && React__default.createElement("div", {
8172
+ className: "ticketDeposit"
8173
+ }, "Deposit:", React__default.createElement("span", {
8174
+ className: "ticketPrice-value"
8175
+ }, " " + (selectedTicketData == null ? void 0 : selectedTicketData.ticket_type_deposit) + "%"))), showGuestCountDropdown && React__default.createElement("div", {
8176
+ style: {
8177
+ width: '100%',
8178
+ display: 'flex',
8179
+ justifyContent: 'end',
8180
+ marginRight: 16
8181
+ }
8182
+ }, React__default.createElement(FormControl, {
8183
+ variant: "outlined",
8184
+ sx: {
8185
+ m: 1,
8186
+ minWidth: 80
8187
+ }
8188
+ }, React__default.createElement(InputLabel, {
8189
+ id: "demo-simple-select-standard-label",
8190
+ shrink: true
8191
+ }, "GUESTS"), React__default.createElement(material.Select, {
8192
+ label: "GUESTS",
8193
+ labelId: "demo-simple-select-standard-label",
8194
+ value: guestCounts[dropdownData.seatId] || startNum,
8195
+ onChange: function onChange(event) {
8196
+ var _extends2;
8197
+ setGuestCounts(_extends({}, guestCounts, (_extends2 = {}, _extends2[dropdownData.seatId] = Number(event.target.value), _extends2)));
8198
+ },
8199
+ inputProps: {
8200
+ 'aria-label': 'Without label'
8201
+ },
8202
+ MenuProps: {
8203
+ PaperProps: {
8204
+ sx: {
8205
+ maxHeight: 150
8206
+ },
8207
+ className: 'get-tickets-paper'
8208
+ }
8209
+ },
8210
+ displayEmpty: true,
8211
+ sx: {
8212
+ borderRadius: 0
8213
+ }
8214
+ }, _map(Array.from({
8215
+ length: numLength
8216
+ }, function (_, i) {
8217
+ return startNum + i;
8218
+ }), function (option, index) {
8219
+ return React__default.createElement(MenuItem, {
8220
+ value: option,
8221
+ key: index
8222
+ }, option);
8223
+ }))))));
8224
+ })), React__default.createElement("div", null, React__default.createElement(reactBootstrap.Button, {
8225
+ className: "book-button\n " + (bookButtonIsDisabled ? 'disabled' : '') + "\n " + (isButtonScrollable ? 'is-scrollable' : '') + "\n ",
8226
+ onClick: !bookButtonIsDisabled ? handleGetTicketClick : _identity,
8227
+ disabled: isAddingToCart
8228
+ }, isAddingToCart ? React__default.createElement(CircularProgress, {
8229
+ size: 20,
8230
+ style: {
8231
+ marginLeft: 10
8232
+ }
8233
+ }) : getTicketsBtnLabel || getButtonLabel(reservedSeats.length, tableMapEnabled)))));
8234
+ };
8235
+
8236
+ var SeatMapContainer = function SeatMapContainer(props) {
8237
+ var _props$event = props.event,
8238
+ eventId = _props$event.id,
8239
+ symbol = _props$event.currency.symbol,
8240
+ tableMapEnabled = _props$event.tableMapEnabled,
8241
+ country = _props$event.country,
8242
+ mapContainerId = props.mapContainerId,
8243
+ _props$timerMessage = props.timerMessage,
8244
+ timerMessage = _props$timerMessage === void 0 ? '' : _props$timerMessage,
8245
+ _props$onAddToCartSuc = props.onAddToCartSuccess,
8246
+ onAddToCartSuccess = _props$onAddToCartSuc === void 0 ? lodash.identity : _props$onAddToCartSuc,
8247
+ _props$onCountdownFin = props.onCountdownFinish,
8248
+ onCountdownFinish = _props$onCountdownFin === void 0 ? lodash.identity : _props$onCountdownFin,
8249
+ ticketDeleteButtonContent = props.ticketDeleteButtonContent;
8250
+ var _useState = React.useState({
8251
+ seatMap: ''
8252
+ }),
8253
+ seatMapData = _useState[0],
8254
+ setSeatMapData = _useState[1];
8255
+ var eventSeatsRef = React.useRef([]);
8256
+ var ticketTypeTierRelationsRef = React.useRef({});
8257
+ var _useState2 = React.useState({}),
8258
+ selectedTickets = _useState2[0],
8259
+ setSelectedTickets = _useState2[1];
8260
+ var _useState3 = React.useState(''),
8261
+ seatMapStatuses = _useState3[0],
8262
+ setSeatMapStatuses = _useState3[1];
8263
+ var _useState4 = React.useState([]),
8264
+ reservedSeats = _useState4[0],
8265
+ setReservedSeats = _useState4[1];
8266
+ var _useState5 = React.useState(false),
8267
+ isReserving = _useState5[0],
8268
+ setIsReserving = _useState5[1];
8269
+ var _useState6 = React.useState(false),
8270
+ isAddingToCart = _useState6[0],
8271
+ setIsAddingToCart = _useState6[1];
8272
+ var _useState7 = React.useState(null),
8273
+ error = _useState7[0],
8274
+ setError = _useState7[1];
8275
+ var _useState8 = React.useState(Date.now() <= Number(localStorage.getItem("reservationStart-" + eventId))),
8276
+ showTimer = _useState8[0],
8277
+ setShowTimer = _useState8[1];
8278
+ var _useState9 = React.useState({}),
8279
+ guestCounts = _useState9[0],
8280
+ setGuestCounts = _useState9[1];
8281
+ var updateGuestCounts = function updateGuestCounts(data) {
8282
+ _forEach(data, function (item) {
8283
+ var tierTickets = ticketTypeTierRelationsRef.current[item.tierId];
8284
+ var seatTicketsArray = _values(tierTickets);
8285
+ setGuestCounts(function (prevState) {
8286
+ var _extends2;
8287
+ return _extends({}, prevState, (_extends2 = {}, _extends2[item.seatId] = Number(seatTicketsArray[0].ticket_type_min_number_of_guests), _extends2));
8288
+ });
8289
+ });
8290
+ };
8291
+ var fetchSeatMapData = React.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
8292
+ var seatMapDataResponse, _seatMapDataResponse$, seatData, ticketTypeTierRelations, eventSeats, seatReservationTime, seatMapType, tierPrices, predefinedSeats;
8293
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
8294
+ while (1) switch (_context.prev = _context.next) {
8295
+ case 0:
8296
+ _context.prev = 0;
8297
+ _context.next = 3;
8298
+ return getSeatMapData(eventId);
8299
+ case 3:
8300
+ seatMapDataResponse = _context.sent;
8301
+ _seatMapDataResponse$ = seatMapDataResponse.data.attributes, seatData = _seatMapDataResponse$.seatData, ticketTypeTierRelations = _seatMapDataResponse$.ticketTypeTierRelations, eventSeats = _seatMapDataResponse$.eventSeats, seatReservationTime = _seatMapDataResponse$.seatReservationTime, seatMapType = _seatMapDataResponse$.seatMapType, tierPrices = _seatMapDataResponse$.tierPrices, predefinedSeats = _seatMapDataResponse$.predefinedSeats;
8302
+ eventSeatsRef.current = eventSeats;
8303
+ ticketTypeTierRelationsRef.current = ticketTypeTierRelations;
8304
+ setSeatMapData({
8305
+ seatMap: JSON.parse(seatData),
8306
+ seatReservationTime: seatReservationTime,
8307
+ seatMapType: seatMapType,
8308
+ tierPrices: tierPrices,
8309
+ predefinedSeats: predefinedSeats
8310
+ });
8311
+ _context.next = 13;
8312
+ break;
8313
+ case 10:
8314
+ _context.prev = 10;
8315
+ _context.t0 = _context["catch"](0);
8316
+ setError('Something went wrong');
8317
+ case 13:
8318
+ case "end":
8319
+ return _context.stop();
8320
+ }
8321
+ }, _callee, null, [[0, 10]]);
8322
+ })), [eventId]);
8323
+ var fetchSeatMapReservations = React.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
8324
+ var statusesResponse, statuses, reservationData, ownReservations;
8325
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
8326
+ while (1) switch (_context2.prev = _context2.next) {
8327
+ case 0:
8328
+ _context2.prev = 0;
8329
+ _context2.next = 3;
8330
+ return getSeatMapStatuses(eventId);
8331
+ case 3:
8332
+ statusesResponse = _context2.sent;
8333
+ statuses = _get(statusesResponse, 'data.attributes') || {};
8334
+ reservationData = [];
8335
+ ownReservations = getOwnReservationsBasedOnStatuses(statuses);
8336
+ _forEach(ownReservations, function (reservation) {
8337
+ var tierIdOfReservation = getTierIdBasedOnSeatId(reservation, eventSeatsRef.current);
8338
+ reservationData.push({
8339
+ seatId: reservation,
8340
+ tierId: tierIdOfReservation,
8341
+ type: 'reserve'
8342
+ });
8343
+ });
8344
+ localStorage.setItem('reservationData', JSON.stringify(reservationData));
8345
+ setSeatMapStatuses(statusesResponse.data.attributes);
8346
+ setReservedSeats(reservationData);
8347
+ // automatically set ticket/table type if it's the only one
8348
+ if (ticketTypeTierRelationsRef.current) {
8349
+ _forEach(reservationData, function (item) {
8350
+ var tierTickets = ticketTypeTierRelationsRef.current[item.tierId];
8351
+ var seatTicketsArray = _values(tierTickets);
8352
+ setSelectedTickets(function (prevState) {
8353
+ var _extends3;
8354
+ return _extends({}, prevState, (_extends3 = {}, _extends3[item.seatId] = seatTicketsArray.length === 1 ? seatTicketsArray[0].ticket_type_id : '', _extends3));
8355
+ });
8356
+ });
8357
+ if (_isEmpty(reservationData)) {
8358
+ setGuestCounts({});
8359
+ setSelectedTickets({});
8360
+ }
8361
+ }
8362
+ _context2.next = 17;
8363
+ break;
8364
+ case 14:
8365
+ _context2.prev = 14;
8366
+ _context2.t0 = _context2["catch"](0);
8367
+ setError('Something went wrong');
8368
+ case 17:
8369
+ case "end":
8370
+ return _context2.stop();
8371
+ }
8372
+ }, _callee2, null, [[0, 14]]);
8373
+ })), [eventId]);
8374
+ var startTimer = React.useCallback(function (duration) {
8375
+ setShowTimer(true);
8376
+ if (!localStorage.getItem("reservationStart-" + eventId)) {
8377
+ localStorage.setItem("reservationStart-" + eventId, String(Date.now() + duration));
8378
+ }
8379
+ }, []);
8380
+ var endTimer = React.useCallback(function () {
8381
+ localStorage.removeItem("reservationStart-" + eventId);
8382
+ setShowTimer(false);
8383
+ }, []);
8384
+ var handleSeatReservation = /*#__PURE__*/function () {
8385
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(eventId, tierId, seatId) {
8386
+ var reservationData, relations, _keys2, firstItem;
8387
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
8388
+ while (1) switch (_context3.prev = _context3.next) {
8389
+ case 0:
8390
+ setIsReserving(true);
8391
+ _context3.prev = 1;
8392
+ _context3.next = 4;
8393
+ return reserveSeat(eventId, tierId, seatId);
8394
+ case 4:
8395
+ _context3.next = 6;
8396
+ return fetchSeatMapReservations();
8397
+ case 6:
8398
+ startTimer(seatMapData.seatReservationTime * 60000);
8399
+ reservationData = JSON.parse(localStorage.getItem('reservationData') || '');
8400
+ setReservedSeats(reservationData);
8401
+ updateGuestCounts(reservationData);
8402
+ // automatically set ticket/table type if it's the only one
8403
+ relations = _keys(ticketTypeTierRelationsRef.current[tierId]);
8404
+ _keys2 = _keys(ticketTypeTierRelationsRef.current[tierId]), firstItem = _keys2[0];
8405
+ handleTicketSelect(relations.length === 1 ? firstItem : '', seatId);
8406
+ _context3.next = 18;
8407
+ break;
8408
+ case 15:
8409
+ _context3.prev = 15;
8410
+ _context3.t0 = _context3["catch"](1);
8411
+ setError('Something went wrong');
8412
+ case 18:
8413
+ _context3.prev = 18;
8414
+ setIsReserving(false);
8415
+ return _context3.finish(18);
8416
+ case 21:
8417
+ case "end":
8418
+ return _context3.stop();
8419
+ }
8420
+ }, _callee3, null, [[1, 15, 18, 21]]);
8421
+ }));
8422
+ return function handleSeatReservation(_x, _x2, _x3) {
8423
+ return _ref3.apply(this, arguments);
8424
+ };
8425
+ }();
8426
+ var handleCancelSeatReservtion = /*#__PURE__*/function () {
8427
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(eventId, tierId, seatId) {
8428
+ var reservationData, currentSelectedTickets;
8429
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
8430
+ while (1) switch (_context4.prev = _context4.next) {
8431
+ case 0:
8432
+ setIsReserving(true);
8433
+ _context4.prev = 1;
8434
+ _context4.next = 4;
8435
+ return removeSeatReserve(eventId, tierId, [seatId]);
8436
+ case 4:
8437
+ _context4.next = 6;
8438
+ return fetchSeatMapReservations();
8439
+ case 6:
8440
+ if (_isEmpty(JSON.parse(localStorage.getItem('reservationData')))) {
8441
+ endTimer();
8442
+ }
8443
+ reservationData = JSON.parse(localStorage.getItem('reservationData') || '');
8444
+ currentSelectedTickets = _extends({}, selectedTickets);
8445
+ delete currentSelectedTickets[seatId];
8446
+ setReservedSeats(reservationData);
8447
+ setSelectedTickets(currentSelectedTickets);
8448
+ _context4.next = 17;
8449
+ break;
8450
+ case 14:
8451
+ _context4.prev = 14;
8452
+ _context4.t0 = _context4["catch"](1);
8453
+ setError('Something went wrong');
8454
+ case 17:
8455
+ _context4.prev = 17;
8456
+ setIsReserving(false);
8457
+ return _context4.finish(17);
8458
+ case 20:
8459
+ case "end":
8460
+ return _context4.stop();
8461
+ }
8462
+ }, _callee4, null, [[1, 14, 17, 20]]);
8463
+ }));
8464
+ return function handleCancelSeatReservtion(_x4, _x5, _x6) {
8465
+ return _ref4.apply(this, arguments);
8466
+ };
8467
+ }();
8468
+ var onSeatClick = /*#__PURE__*/function () {
8469
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(seatInfo) {
8470
+ var _seatInfo$seat, tierId, seatId, status, reservationData;
8471
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
8472
+ while (1) switch (_context5.prev = _context5.next) {
8473
+ case 0:
8474
+ _seatInfo$seat = seatInfo.seat, tierId = _seatInfo$seat.tierId, seatId = _seatInfo$seat.seatId, status = _seatInfo$seat.status;
8475
+ reservationData = JSON.parse(localStorage.getItem('reservationData') || '[]');
8476
+ if (!(status === 'B' || status === 'R' || status === 'BLOCKED' || status === 'RE')) {
8477
+ _context5.next = 4;
8478
+ break;
8479
+ }
8480
+ return _context5.abrupt("return");
8481
+ case 4:
8482
+ if (_find(reservationData, function (data) {
8483
+ return data.seatId === seatId;
8484
+ })) {
8485
+ handleCancelSeatReservtion(eventId, tierId, seatId);
8486
+ } else if (reservationData.length >= 10) {
8487
+ setError('Limit exceeded');
8488
+ } else {
8489
+ handleSeatReservation(eventId, tierId, seatId);
8490
+ }
8491
+ case 5:
8492
+ case "end":
8493
+ return _context5.stop();
8494
+ }
8495
+ }, _callee5);
8496
+ }));
8497
+ return function onSeatClick(_x7) {
8498
+ return _ref5.apply(this, arguments);
8499
+ };
8500
+ }();
8501
+ var handleTicketSelect = function handleTicketSelect(ticketId, seatId) {
8502
+ var currentSelectedTickets = _extends({}, selectedTickets);
8503
+ currentSelectedTickets[seatId] = ticketId;
8504
+ setSelectedTickets(currentSelectedTickets);
8505
+ };
8506
+ var handleGetTicketBtnClick = /*#__PURE__*/function () {
8507
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
8508
+ var ticketsDropdownsData, selectedSeats, addToCartData, _addToCartData$attrib, response, message;
8509
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
8510
+ while (1) switch (_context6.prev = _context6.next) {
8511
+ case 0:
8512
+ setIsAddingToCart(true);
8513
+ ticketsDropdownsData = getTicketDropdownData(reservedSeats, ticketTypeTierRelationsRef.current);
8514
+ selectedSeats = {};
8515
+ _forEach(ticketsDropdownsData, function (ticketData) {
8516
+ var _extends4;
8517
+ selectedSeats = _extends({}, selectedSeats, (_extends4 = {}, _extends4[ticketData.seatId] = ticketData.ticketsData, _extends4));
8518
+ });
8519
+ addToCartData = getAddToCartRequestData({
8520
+ eventId: eventId,
8521
+ reservations: _map(reservedSeats, function (seat) {
8522
+ return seat.seatId;
8523
+ }),
8524
+ selectedSeats: selectedSeats,
8525
+ selectedTickets: selectedTickets,
8526
+ guestCounts: guestCounts
8527
+ });
8528
+ _context6.prev = 5;
8529
+ _context6.next = 8;
8530
+ return addToCartFunc({
8531
+ eventId: eventId,
8532
+ data: addToCartData,
8533
+ ticketQuantity: addToCartData == null ? void 0 : (_addToCartData$attrib = addToCartData.attributes) == null ? void 0 : _addToCartData$attrib.product_cart_quantity
8534
+ });
8535
+ case 8:
8536
+ response = _context6.sent;
8537
+ localStorage.removeItem('reservationData');
8538
+ onAddToCartSuccess(response);
8539
+ _context6.next = 16;
8540
+ break;
8541
+ case 13:
8542
+ _context6.prev = 13;
8543
+ _context6.t0 = _context6["catch"](5);
8544
+ if (axios.isAxiosError(_context6.t0)) {
8545
+ message = _get(_context6.t0, 'response.data.message', '');
8546
+ setError(message);
8547
+ }
8548
+ case 16:
8549
+ _context6.prev = 16;
8550
+ setIsAddingToCart(false);
8551
+ return _context6.finish(16);
8552
+ case 19:
8553
+ case "end":
8554
+ return _context6.stop();
8555
+ }
8556
+ }, _callee6, null, [[5, 13, 16, 19]]);
8557
+ }));
8558
+ return function handleGetTicketBtnClick() {
8559
+ return _ref6.apply(this, arguments);
8560
+ };
8561
+ }();
8562
+ React.useEffect(function () {
8563
+ if (Date.now() > Number(localStorage.getItem("reservationStart-" + eventId))) {
8564
+ setSelectedTickets({});
8565
+ setReservedSeats([]);
8566
+ }
8567
+ var makeRequests = /*#__PURE__*/function () {
8568
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
8569
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
8570
+ while (1) switch (_context7.prev = _context7.next) {
8571
+ case 0:
8572
+ _context7.prev = 0;
8573
+ _context7.next = 3;
8574
+ return fetchSeatMapData();
8575
+ case 3:
8576
+ fetchSeatMapReservations();
8577
+ _context7.next = 9;
8578
+ break;
8579
+ case 6:
8580
+ _context7.prev = 6;
8581
+ _context7.t0 = _context7["catch"](0);
8582
+ setError('Something went wrong');
8583
+ case 9:
8584
+ case "end":
8585
+ return _context7.stop();
8586
+ }
8587
+ }, _callee7, null, [[0, 6]]);
8588
+ }));
8589
+ return function makeRequests() {
8590
+ return _ref7.apply(this, arguments);
8591
+ };
8592
+ }();
8593
+ makeRequests();
8594
+ if (country) {
8595
+ localStorage.setItem('eventCountry', country);
8596
+ }
8597
+ var intervalId = setInterval(function () {
8598
+ fetchSeatMapReservations();
8599
+ }, 3000);
8600
+ return function () {
8601
+ clearInterval(intervalId);
8602
+ };
8603
+ }, [fetchSeatMapData, fetchSeatMapReservations]);
8604
+ return React__default.createElement(React__default.Fragment, null, error && React__default.createElement(material.Alert, {
8605
+ severity: "error",
8606
+ onClose: function onClose() {
8607
+ setError(null);
8608
+ },
8609
+ variant: "filled",
8610
+ style: {
8611
+ width: '350px'
8612
+ }
8613
+ }, error), showTimer && React__default.createElement(Countdown$1, {
8614
+ date: moment$1(Number(localStorage.getItem("reservationStart-" + eventId))).valueOf(),
8615
+ renderer: function renderer(props) {
8616
+ return React__default.createElement("div", {
8617
+ className: "reservation-countdown"
8618
+ }, React__default.createElement("span", {
8619
+ className: "reservation-message"
8620
+ }, timerMessage), React__default.createElement("span", {
8621
+ className: "reservation-timer"
8622
+ }, showZero(props.minutes), ":", showZero(props.seconds)));
8623
+ },
8624
+ onComplete: function onComplete() {
8625
+ endTimer();
8626
+ setSelectedTickets({});
8627
+ setReservedSeats([]);
8628
+ if (onCountdownFinish) {
8629
+ onCountdownFinish();
8630
+ }
8631
+ }
8632
+ }), React__default.createElement(TicketsSection$1, {
8633
+ selectedTickets: selectedTickets,
8634
+ handleTicketSelect: handleTicketSelect,
8635
+ handleCancelReservation: function handleCancelReservation(seatId, tireId) {
8636
+ return handleCancelSeatReservtion(eventId, tireId, seatId);
8637
+ },
8638
+ handleGetTicketClick: handleGetTicketBtnClick,
8639
+ isAddingToCart: isAddingToCart,
8640
+ reservedSeats: reservedSeats,
8641
+ ticketDeleteButtonContent: ticketDeleteButtonContent,
8642
+ ticketTypeTierRelations: ticketTypeTierRelationsRef.current,
8643
+ currencySymbol: symbol,
8644
+ tableMapEnabled: Boolean(tableMapEnabled),
8645
+ guestCounts: guestCounts,
8646
+ setGuestCounts: setGuestCounts
8647
+ }), seatMapData.seatMap && seatMapStatuses && React__default.createElement(SeatMapComponent, {
8648
+ seatMapProps: {
8649
+ seatData: seatMapData.seatMap,
8650
+ statuses: seatMapStatuses,
8651
+ tierPrices: seatMapData.tierPrices,
8652
+ seatMapType: seatMapData.seatMapType,
8653
+ ticketTypeTierRelations: ticketTypeTierRelationsRef.current,
8654
+ seatMapEvents: {
8655
+ onSeatClick: onSeatClick
8656
+ },
8657
+ isReserving: isReserving,
8658
+ predefinedSeats: seatMapData.predefinedSeats
8659
+ },
8660
+ mapContainerId: mapContainerId
8661
+ }));
8662
+ };
8663
+
7426
8664
  /* eslint-disable max-len */
7427
8665
  var VERIFICATION_STATUSES = {
7428
8666
  PENDING: 'PENDING',
7429
8667
  APPROVED: 'APPROVED_VERIFIED',
7430
- FAILED: 'FAILED'
8668
+ FAILED: 'FAILED',
8669
+ WRONG_CUSTOMER: 'WRONG_CUSTOMER'
7431
8670
  };
7432
8671
  var VERIFICATION_MESSAGES = {
7433
8672
  PENDING: 'Your ID verification is currently being processed. We will notify you as soon as it is completed. Thank you for your patience.',
7434
8673
  APPROVED: 'Your ID verification is approved!',
7435
- FAILED: 'Unfortunately your ID verification has failed. Please try again.'
8674
+ FAILED: 'Unfortunately your ID verification has failed. Please try again.',
8675
+ WRONG_CUSTOMER: 'The order does not belong to the customer.'
7436
8676
  };
7437
8677
 
7438
8678
  var IDVerification = function IDVerification(props) {
@@ -7469,7 +8709,7 @@ var IDVerification = function IDVerification(props) {
7469
8709
  }),
7470
8710
  modalData = _useState5[0],
7471
8711
  setModalData = _useState5[1];
7472
- var isAccountVerifiedOrPending = verificationStatus === VERIFICATION_STATUSES.APPROVED || verificationStatus === VERIFICATION_STATUSES.PENDING;
8712
+ var isAccountVerifiedOrPending = (verificationStatus === VERIFICATION_STATUSES.APPROVED || verificationStatus === VERIFICATION_STATUSES.PENDING) && verificationStatus !== VERIFICATION_STATUSES.WRONG_CUSTOMER;
7473
8713
  var handleClose = function handleClose() {
7474
8714
  setModalData({
7475
8715
  message: '',
@@ -7529,6 +8769,8 @@ var IDVerification = function IDVerification(props) {
7529
8769
  };
7530
8770
  }, []);
7531
8771
  React.useEffect(function () {
8772
+ var intervalId = null;
8773
+ var orderHash = getQueryVariable('order_hash') || '';
7532
8774
  var getUrl = /*#__PURE__*/function () {
7533
8775
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
7534
8776
  var urlResponse;
@@ -7599,17 +8841,81 @@ var IDVerification = function IDVerification(props) {
7599
8841
  return _ref3.apply(this, arguments);
7600
8842
  };
7601
8843
  }();
7602
- getUrl();
7603
- getVerificationStatus();
7604
- // Check the verification status every 30 seconds
7605
- var intervalId = setInterval(function () {
7606
- getVerificationStatus();
7607
- }, 10000);
8844
+ var getCustomerOrderStatus = /*#__PURE__*/function () {
8845
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
8846
+ var customerOrderResponse;
8847
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
8848
+ while (1) switch (_context4.prev = _context4.next) {
8849
+ case 0:
8850
+ _context4.prev = 0;
8851
+ _context4.next = 3;
8852
+ return checkCustomerOrder(orderHash);
8853
+ case 3:
8854
+ customerOrderResponse = _context4.sent;
8855
+ return _context4.abrupt("return", customerOrderResponse);
8856
+ case 7:
8857
+ _context4.prev = 7;
8858
+ _context4.t0 = _context4["catch"](0);
8859
+ throw _context4.t0;
8860
+ case 10:
8861
+ case "end":
8862
+ return _context4.stop();
8863
+ }
8864
+ }, _callee4, null, [[0, 7]]);
8865
+ }));
8866
+ return function getCustomerOrderStatus() {
8867
+ return _ref4.apply(this, arguments);
8868
+ };
8869
+ }();
8870
+ var makeRequests = /*#__PURE__*/function () {
8871
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
8872
+ var _error$response, _error$response$data;
8873
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
8874
+ while (1) switch (_context5.prev = _context5.next) {
8875
+ case 0:
8876
+ _context5.prev = 0;
8877
+ if (!orderHash) {
8878
+ _context5.next = 4;
8879
+ break;
8880
+ }
8881
+ _context5.next = 4;
8882
+ return getCustomerOrderStatus();
8883
+ case 4:
8884
+ getUrl();
8885
+ getVerificationStatus();
8886
+ // Check the verification status every 30 seconds
8887
+ intervalId = setInterval(function () {
8888
+ getVerificationStatus();
8889
+ }, 10000);
8890
+ _context5.next = 12;
8891
+ break;
8892
+ case 9:
8893
+ _context5.prev = 9;
8894
+ _context5.t0 = _context5["catch"](0);
8895
+ if (((_error$response = _context5.t0.response) == null ? void 0 : (_error$response$data = _error$response.data) == null ? void 0 : _error$response$data.message) === VERIFICATION_MESSAGES.WRONG_CUSTOMER) {
8896
+ setVerificationStatus(VERIFICATION_STATUSES.WRONG_CUSTOMER);
8897
+ setModalData({
8898
+ displaModal: true,
8899
+ hideCancelBtn: true,
8900
+ message: VERIFICATION_MESSAGES.WRONG_CUSTOMER
8901
+ });
8902
+ }
8903
+ case 12:
8904
+ case "end":
8905
+ return _context5.stop();
8906
+ }
8907
+ }, _callee5, null, [[0, 9]]);
8908
+ }));
8909
+ return function makeRequests() {
8910
+ return _ref5.apply(this, arguments);
8911
+ };
8912
+ }();
8913
+ makeRequests();
7608
8914
  // Clear the interval when the component unmounts
7609
8915
  return function () {
7610
8916
  return clearInterval(intervalId);
7611
8917
  };
7612
- }, [verificationStatus]);
8918
+ }, []);
7613
8919
  var iframe = function iframe(netverifyUrl) {
7614
8920
  // eslint-disable-next-line max-len
7615
8921
  var iframe = "<iframe allowFullScreen id=\"verificationIframe\" frameBorder=\"0\" width=\"100%\" height=\"570px\" allow=\"camera;fullscreen;accelerometer;gyroscope;magnetometer\" src=\"" + netverifyUrl + "\"></iframe>";
@@ -7844,6 +9150,7 @@ exports.PoweredBy = PoweredBy;
7844
9150
  exports.RedirectModal = RedirectModal;
7845
9151
  exports.ResetPasswordContainer = ResetPasswordContainer;
7846
9152
  exports.RsvpContainer = RsvpContainer;
9153
+ exports.SeatMapContainer = SeatMapContainer;
7847
9154
  exports.TicketResaleContainer = TicketResaleContainer;
7848
9155
  exports.TicketsContainer = TicketsContainer;
7849
9156
  exports.VERIFICATION_STATUSES = VERIFICATION_STATUSES;