summit-registration-lite 2.0.27 → 2.0.28

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.
package/dist/index.js ADDED
@@ -0,0 +1,2819 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define("summit-registration-lite", [], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["summit-registration-lite"] = factory();
8
+ else
9
+ root["summit-registration-lite"] = factory();
10
+ })(this, function() {
11
+ return /******/ (() => { // webpackBootstrap
12
+ /******/ var __webpack_modules__ = ({
13
+
14
+ /***/ 802:
15
+ /***/ ((module) => {
16
+
17
+ module.exports = "data:image/svg+xml,%3c!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e %3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 812.24 471.64' style='enable-background:new 0 0 812.24 471.64;' xml:space='preserve'%3e %3cstyle type='text/css'%3e .st0%7bfill:%230C64C8;%7d %3c/style%3e %3cg%3e %3cpath d='M170.89,146.78l-64.77,178.08h535.23l64.77-178.08L170.89,146.78L170.89,146.78z M384.48,309.44H341.7l-25.6-80.85 l-29.41,80.85h-42.6l41.94-115.3h-65.52l-9.29,25.54h56.62l-10.8,29.7h-56.62l-21.84,60.06h-45.63l53.39-146.78h153.49l25.72,81.24 l29.56-81.24h42.75L384.48,309.44z'/%3e %3cg%3e %3cpath class='st0' d='M588.49,162.71v50.86c-4-4.27-8.59-7.47-13.76-9.61s-10.92-3.21-17.26-3.21c-13.01,0-23.73,4.67-32.17,14.02 c-8.44,9.34-12.66,22.83-12.66,40.45c0,15.75,3.82,29.13,11.46,40.15c7.64,11.01,18.69,16.52,33.17,16.52 c7.2,0,13.74-1.54,19.61-4.6c4.4-2.34,9.27-6.84,14.61-13.52v15.72h38.12V162.71H588.49z M583.59,275.94 c-3.47,4.07-7.8,6.11-13.01,6.11c-4.87,0-8.96-2.02-12.26-6.06s-4.95-10.4-4.95-19.07c0-9.28,1.6-15.88,4.8-19.82 s7.17-5.91,11.91-5.91c5.4,0,9.87,2.05,13.41,6.16c3.53,4.1,5.3,10.33,5.3,18.67C588.79,265.23,587.05,271.87,583.59,275.94z'/%3e %3cpath class='st0' d='M473.92,207.72c-14.37,0-26.03,7.27-26.03,16.25v2.96v45.48h9.09l3.47,37.09h26.95l3.47-37.09h9.09v-45.48 v-2.96C499.95,214.99,488.29,207.72,473.92,207.72z'/%3e %3cellipse transform='matrix(2.075247e-03 -1 1 2.075247e-03 290.6104 655.8611)' class='st0' cx='473.92' cy='182.32' rx='19.87' ry='19.86'/%3e %3c/g%3e %3c/g%3e %3c/svg%3e"
18
+
19
+ /***/ })
20
+
21
+ /******/ });
22
+ /************************************************************************/
23
+ /******/ // The module cache
24
+ /******/ var __webpack_module_cache__ = {};
25
+ /******/
26
+ /******/ // The require function
27
+ /******/ function __webpack_require__(moduleId) {
28
+ /******/ // Check if module is in cache
29
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
30
+ /******/ if (cachedModule !== undefined) {
31
+ /******/ return cachedModule.exports;
32
+ /******/ }
33
+ /******/ // Create a new module (and put it into the cache)
34
+ /******/ var module = __webpack_module_cache__[moduleId] = {
35
+ /******/ // no module.id needed
36
+ /******/ // no module.loaded needed
37
+ /******/ exports: {}
38
+ /******/ };
39
+ /******/
40
+ /******/ // Execute the module function
41
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
42
+ /******/
43
+ /******/ // Return the exports of the module
44
+ /******/ return module.exports;
45
+ /******/ }
46
+ /******/
47
+ /************************************************************************/
48
+ /******/ /* webpack/runtime/compat get default export */
49
+ /******/ (() => {
50
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
51
+ /******/ __webpack_require__.n = (module) => {
52
+ /******/ var getter = module && module.__esModule ?
53
+ /******/ () => (module['default']) :
54
+ /******/ () => (module);
55
+ /******/ __webpack_require__.d(getter, { a: getter });
56
+ /******/ return getter;
57
+ /******/ };
58
+ /******/ })();
59
+ /******/
60
+ /******/ /* webpack/runtime/define property getters */
61
+ /******/ (() => {
62
+ /******/ // define getter functions for harmony exports
63
+ /******/ __webpack_require__.d = (exports, definition) => {
64
+ /******/ for(var key in definition) {
65
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
66
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
67
+ /******/ }
68
+ /******/ }
69
+ /******/ };
70
+ /******/ })();
71
+ /******/
72
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
73
+ /******/ (() => {
74
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
75
+ /******/ })();
76
+ /******/
77
+ /******/ /* webpack/runtime/make namespace object */
78
+ /******/ (() => {
79
+ /******/ // define __esModule on exports
80
+ /******/ __webpack_require__.r = (exports) => {
81
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
82
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
83
+ /******/ }
84
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
85
+ /******/ };
86
+ /******/ })();
87
+ /******/
88
+ /************************************************************************/
89
+ var __webpack_exports__ = {};
90
+ // This entry need to be wrapped in an IIFE because it need to be in strict mode.
91
+ (() => {
92
+ "use strict";
93
+ // ESM COMPAT FLAG
94
+ __webpack_require__.r(__webpack_exports__);
95
+
96
+ // EXPORTS
97
+ __webpack_require__.d(__webpack_exports__, {
98
+ "default": () => (/* binding */ summit_registration_lite)
99
+ });
100
+
101
+ ;// CONCATENATED MODULE: external "react"
102
+ const external_react_namespaceObject = require("react");
103
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject);
104
+ ;// CONCATENATED MODULE: external "react-redux"
105
+ const external_react_redux_namespaceObject = require("react-redux");
106
+ ;// CONCATENATED MODULE: external "redux"
107
+ const external_redux_namespaceObject = require("redux");
108
+ ;// CONCATENATED MODULE: external "redux-thunk"
109
+ const external_redux_thunk_namespaceObject = require("redux-thunk");
110
+ var external_redux_thunk_default = /*#__PURE__*/__webpack_require__.n(external_redux_thunk_namespaceObject);
111
+ ;// CONCATENATED MODULE: external "redux-persist"
112
+ const external_redux_persist_namespaceObject = require("redux-persist");
113
+ ;// CONCATENATED MODULE: external "redux-persist/es/storage"
114
+ const storage_namespaceObject = require("redux-persist/es/storage");
115
+ var storage_default = /*#__PURE__*/__webpack_require__.n(storage_namespaceObject);
116
+ ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/utils/actions"
117
+ const actions_namespaceObject = require("openstack-uicore-foundation/lib/utils/actions");
118
+ ;// CONCATENATED MODULE: external "sweetalert2"
119
+ const external_sweetalert2_namespaceObject = require("sweetalert2");
120
+ var external_sweetalert2_default = /*#__PURE__*/__webpack_require__.n(external_sweetalert2_namespaceObject);
121
+ ;// CONCATENATED MODULE: ./src/utils/payment-providers/lawpay-provider.js
122
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
123
+
124
+
125
+
126
+
127
+ class LawPayProvider {
128
+ constructor({
129
+ reservation,
130
+ summitId,
131
+ userProfile,
132
+ access_token,
133
+ apiBaseUrl,
134
+ dispatch: _dispatch
135
+ }) {
136
+ _defineProperty(this, "payTicket", ({
137
+ token = null
138
+ }) => async dispatch => {
139
+ var _this$userProfile, _this$userProfile2, _this$userProfile3, _this$userProfile4, _this$userProfile5, _this$userProfile6;
140
+
141
+ // Pay using affinity lawpay
142
+ const errorHandler = (err, res) => (dispatch, state) => {
143
+ let code = err.status;
144
+
145
+ switch (code) {
146
+ case 404:
147
+ {
148
+ let msg = res.body.message;
149
+ external_sweetalert2_default().fire("Validation Error", msg, "warning");
150
+ }
151
+ break;
152
+
153
+ case 500:
154
+ {
155
+ let msg = res.body.message;
156
+ external_sweetalert2_default().fire("Validation Error", msg, "warning");
157
+ }
158
+ break;
159
+
160
+ default:
161
+ (0,actions_namespaceObject.authErrorHandler)(err, res)(dispatch, state);
162
+ break;
163
+ }
164
+ };
165
+
166
+ let params = {
167
+ access_token: this.access_token,
168
+ expand: 'tickets,' + 'tickets.owner,' + 'tickets.owner.extra_questions,' + 'tickets.badge,' + 'tickets.badge.type,' + 'tickets.badge.type.access_levels,' + 'tickets.badge.type.features,' + 'tickets.ticket_type,' + 'tickets.ticket_type.taxes'
169
+ };
170
+ let normalizedEntity = {
171
+ billing_address_1: token ? token.address1 : ((_this$userProfile = this.userProfile) === null || _this$userProfile === void 0 ? void 0 : _this$userProfile.address1) || '',
172
+ billing_address_2: ((_this$userProfile2 = this.userProfile) === null || _this$userProfile2 === void 0 ? void 0 : _this$userProfile2.address2) || '',
173
+ billing_address_zip_code: token ? token.postal_code : ((_this$userProfile3 = this.userProfile) === null || _this$userProfile3 === void 0 ? void 0 : _this$userProfile3.postal_code) || '',
174
+ billing_address_city: ((_this$userProfile4 = this.userProfile) === null || _this$userProfile4 === void 0 ? void 0 : _this$userProfile4.locality) || '',
175
+ billing_address_state: ((_this$userProfile5 = this.userProfile) === null || _this$userProfile5 === void 0 ? void 0 : _this$userProfile5.region) || '',
176
+ billing_address_country: ((_this$userProfile6 = this.userProfile) === null || _this$userProfile6 === void 0 ? void 0 : _this$userProfile6.country) || ''
177
+ };
178
+
179
+ if (token) {
180
+ normalizedEntity['payment_method_id'] = token.id;
181
+ }
182
+
183
+ this.dispatch(startWidgetLoading());
184
+ return (0,actions_namespaceObject.putRequest)(null, (0,actions_namespaceObject.createAction)(PAY_RESERVATION), `${this.apiBaseUrl}/api/v1/summits/${this.summitId}/orders/${this.reservation.hash}/checkout`, normalizedEntity, errorHandler // entity
185
+ )(params)(this.dispatch).then(payload => {
186
+ this.dispatch(stopWidgetLoading());
187
+ this.dispatch((0,actions_namespaceObject.createAction)(CLEAR_RESERVATION)({}));
188
+ this.dispatch(changeStep(3));
189
+ return payload;
190
+ }).catch(e => {
191
+ this.dispatch(removeReservedTicket());
192
+ this.dispatch(changeStep(1));
193
+ this.dispatch(stopWidgetLoading());
194
+ return e;
195
+ }); // The payment has succeeded. Display a success message.
196
+ });
197
+
198
+ this.reservation = reservation;
199
+ this.summitId = summitId;
200
+ this.userProfile = userProfile;
201
+ this.access_token = access_token;
202
+ this.apiBaseUrl = apiBaseUrl;
203
+ this.dispatch = _dispatch;
204
+ }
205
+
206
+ }
207
+ ;// CONCATENATED MODULE: ./src/utils/payment-providers/stripe-provider.js
208
+ function stripe_provider_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
209
+
210
+
211
+
212
+
213
+
214
+ class StripeProvider {
215
+ constructor({
216
+ reservation,
217
+ summitId,
218
+ userProfile,
219
+ access_token,
220
+ apiBaseUrl,
221
+ dispatch: _dispatch
222
+ }) {
223
+ stripe_provider_defineProperty(this, "payTicket", ({
224
+ token = null,
225
+ stripe = null,
226
+ zipCode = null
227
+ }) => async dispatch => {
228
+ var _this$userProfile, _this$userProfile2, _this$userProfile3, _this$userProfile4, _this$userProfile5;
229
+
230
+ const errorHandler = (err, res) => (dispatch, state) => {
231
+ let code = err.status;
232
+
233
+ switch (code) {
234
+ case 404:
235
+ {
236
+ let msg = res.body.message;
237
+ external_sweetalert2_default().fire("Validation Error", msg, "warning");
238
+ }
239
+ break;
240
+
241
+ case 500:
242
+ {
243
+ let msg = res.body.message;
244
+ external_sweetalert2_default().fire("Validation Error", msg, "warning");
245
+ }
246
+ break;
247
+
248
+ default:
249
+ (0,actions_namespaceObject.authErrorHandler)(err, res)(dispatch, state);
250
+ break;
251
+ }
252
+ };
253
+
254
+ let params = {
255
+ access_token: this.access_token,
256
+ expand: 'tickets,' + 'tickets.owner,' + 'tickets.owner.extra_questions,' + 'tickets.badge,' + 'tickets.badge.type,' + 'tickets.badge.type.access_levels,' + 'tickets.badge.type.features,' + 'tickets.ticket_type,' + 'tickets.ticket_type.taxes'
257
+ };
258
+ let normalizedEntity = {
259
+ billing_address_1: ((_this$userProfile = this.userProfile) === null || _this$userProfile === void 0 ? void 0 : _this$userProfile.address1) || '',
260
+ billing_address_2: ((_this$userProfile2 = this.userProfile) === null || _this$userProfile2 === void 0 ? void 0 : _this$userProfile2.address2) || '',
261
+ billing_address_zip_code: zipCode,
262
+ billing_address_city: ((_this$userProfile3 = this.userProfile) === null || _this$userProfile3 === void 0 ? void 0 : _this$userProfile3.locality) || '',
263
+ billing_address_state: ((_this$userProfile4 = this.userProfile) === null || _this$userProfile4 === void 0 ? void 0 : _this$userProfile4.region) || '',
264
+ billing_address_country: ((_this$userProfile5 = this.userProfile) === null || _this$userProfile5 === void 0 ? void 0 : _this$userProfile5.country) || ''
265
+ };
266
+ dispatch(startWidgetLoading());
267
+
268
+ if (this.reservation.amount > 0) {
269
+ const {
270
+ id
271
+ } = token;
272
+ stripe.confirmCardPayment(this.reservation.payment_gateway_client_token, {
273
+ payment_method: {
274
+ card: {
275
+ token: id
276
+ }
277
+ }
278
+ }).then(result => {
279
+ if (result.error) {
280
+ // Reserve error.message in your UI.
281
+ external_sweetalert2_default().fire(result.error.message, "Please retry purchase.", "warning");
282
+ this.dispatch(changeStep(1));
283
+ this.dispatch(removeReservedTicket());
284
+ this.dispatch(stopWidgetLoading());
285
+ } else {
286
+ return (0,actions_namespaceObject.putRequest)(null, (0,actions_namespaceObject.createAction)(PAY_RESERVATION), `${this.apiBaseUrl}/api/v1/summits/${this.summitId}/orders/${this.reservation.hash}/checkout`, normalizedEntity, errorHandler // entity
287
+ )(params)(this.dispatch).then(payload => {
288
+ this.dispatch(stopWidgetLoading());
289
+ this.dispatch((0,actions_namespaceObject.createAction)(CLEAR_RESERVATION)({}));
290
+ this.dispatch(changeStep(3));
291
+ return payload;
292
+ }).catch(e => {
293
+ this.dispatch(stopWidgetLoading());
294
+ return e;
295
+ }); // The payment has succeeded. Display a success message.
296
+ }
297
+ }).catch(e => {
298
+ this.dispatch(removeReservedTicket());
299
+ this.dispatch(changeStep(1));
300
+ this.dispatch(stopWidgetLoading());
301
+ return e;
302
+ });
303
+ } else {
304
+ // FREE TICKET
305
+ return (0,actions_namespaceObject.putRequest)(null, (0,actions_namespaceObject.createAction)(PAY_RESERVATION), `${this.apiBaseUrl}/api/v1/summits/${this.summitId}/orders/${this.reservation.hash}/checkout`, normalizedEntity, errorHandler // entity
306
+ )(params)(this.dispatch).then(payload => {
307
+ this.dispatch(stopWidgetLoading());
308
+ this.dispatch((0,actions_namespaceObject.createAction)(CLEAR_RESERVATION)({}));
309
+ this.dispatch(changeStep(3));
310
+ return payload;
311
+ }).catch(e => {
312
+ this.dispatch(removeReservedTicket());
313
+ this.dispatch(changeStep(1));
314
+ this.dispatch(stopWidgetLoading());
315
+ return e;
316
+ }); // The payment has succeeded. Display a success message.
317
+ }
318
+ });
319
+
320
+ this.reservation = reservation;
321
+ this.summitId = summitId;
322
+ this.userProfile = userProfile;
323
+ this.access_token = access_token;
324
+ this.apiBaseUrl = apiBaseUrl;
325
+ this.dispatch = _dispatch;
326
+ }
327
+
328
+ }
329
+ ;// CONCATENATED MODULE: ./src/utils/payment-providers/payment-provider-factory.js
330
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
331
+
332
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { payment_provider_factory_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
333
+
334
+ function payment_provider_factory_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
335
+
336
+
337
+
338
+ class PaymentProviderFactory {}
339
+
340
+ payment_provider_factory_defineProperty(PaymentProviderFactory, "build", (provider, params = {}) => {
341
+ let currentProvider = null;
342
+
343
+ switch (provider) {
344
+ case 'LawPay':
345
+ {
346
+ currentProvider = new LawPayProvider(_objectSpread({}, params));
347
+ break;
348
+ }
349
+
350
+ case 'Stripe':
351
+ {
352
+ currentProvider = new StripeProvider(_objectSpread({}, params));
353
+ break;
354
+ }
355
+ }
356
+
357
+ return currentProvider;
358
+ });
359
+ ;// CONCATENATED MODULE: ./src/actions.js
360
+ function actions_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
361
+
362
+ function actions_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? actions_ownKeys(Object(source), !0).forEach(function (key) { actions_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : actions_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
363
+
364
+ function actions_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
365
+
366
+ /**
367
+ * Copyright 2020 OpenStack Foundation
368
+ * Licensed under the Apache License, Version 2.0 (the "License");
369
+ * you may not use this file except in compliance with the License.
370
+ * You may obtain a copy of the License at
371
+ * http://www.apache.org/licenses/LICENSE-2.0
372
+ * Unless required by applicable law or agreed to in writing, software
373
+ * distributed under the License is distributed on an "AS IS" BASIS,
374
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
375
+ * See the License for the specific language governing permissions and
376
+ * limitations under the License.
377
+ **/
378
+
379
+
380
+
381
+
382
+ const START_WIDGET_LOADING = 'START_WIDGET_LOADING';
383
+ const STOP_WIDGET_LOADING = 'STOP_WIDGET_LOADING';
384
+ const LOAD_INITIAL_VARS = 'LOAD_INITIAL_VARS';
385
+ const CHANGE_STEP = 'CHANGE_STEP';
386
+ const GET_TICKET_TYPES = 'GET_TICKET_TYPES';
387
+ const GET_TAX_TYPES = 'GET_TAX_TYPES';
388
+ const CREATE_RESERVATION = 'CREATE_RESERVATION';
389
+ const CREATE_RESERVATION_SUCCESS = 'CREATE_RESERVATION_SUCCESS';
390
+ const CREATE_RESERVATION_ERROR = 'CREATE_RESERVATION_ERROR';
391
+ const DELETE_RESERVATION = 'DELETE_RESERVATION';
392
+ const DELETE_RESERVATION_SUCCESS = 'DELETE_RESERVATION_SUCCESS';
393
+ const DELETE_RESERVATION_ERROR = 'DELETE_RESERVATION_ERROR';
394
+ const PAY_RESERVATION = 'PAY_RESERVATION';
395
+ const CLEAR_RESERVATION = 'CLEAR_RESERVATION';
396
+ const SET_PASSWORDLESS_LOGIN = 'SET_PASSWORDLESS_LOGIN';
397
+ const SET_PASSWORDLESS_LENGTH = 'SET_PASSWORDLESS_LENGTH';
398
+ const SET_PASSWORDLESS_ERROR = 'SET_PASSWORDLESS_ERROR';
399
+ const GO_TO_LOGIN = 'GO_TO_LOGIN';
400
+ const startWidgetLoading = (0,actions_namespaceObject.createAction)(START_WIDGET_LOADING);
401
+ const stopWidgetLoading = (0,actions_namespaceObject.createAction)(STOP_WIDGET_LOADING);
402
+ const loadSession = settings => dispatch => {
403
+ dispatch((0,actions_namespaceObject.createAction)(LOAD_INITIAL_VARS)(settings));
404
+ };
405
+ /*********************************************************************************/
406
+
407
+ /* TICKETS */
408
+
409
+ /*********************************************************************************/
410
+ // api/v1/summits/{id}/ticket-types
411
+ // api/v1/summits/{id}/tax-types
412
+
413
+ const getTicketTypes = summitId => async (dispatch, getState, {
414
+ apiBaseUrl,
415
+ getAccessToken
416
+ }) => {
417
+ try {
418
+ const accessToken = await getAccessToken();
419
+ let params = {
420
+ expand: 'badge_type,badge_type.access_levels,badge_type.badge_features',
421
+ access_token: accessToken
422
+ };
423
+ dispatch(startWidgetLoading());
424
+ return (0,actions_namespaceObject.getRequest)(null, (0,actions_namespaceObject.createAction)(GET_TICKET_TYPES), `${apiBaseUrl}/api/v1/summits/${summitId}/ticket-types`, actions_namespaceObject.authErrorHandler)(params)(dispatch).then(() => {
425
+ dispatch(stopWidgetLoading());
426
+ });
427
+ } catch (e) {
428
+ return Promise.reject();
429
+ }
430
+ };
431
+ const getTaxesTypes = summitId => async (dispatch, getState, {
432
+ apiBaseUrl,
433
+ getAccessToken
434
+ }) => {
435
+ try {
436
+ const accessToken = await getAccessToken();
437
+ let params = {
438
+ access_token: accessToken
439
+ };
440
+ dispatch(startWidgetLoading());
441
+ return (0,actions_namespaceObject.getRequest)(null, (0,actions_namespaceObject.createAction)(GET_TAX_TYPES), `${apiBaseUrl}/api/v1/summits/${summitId}/tax-types`, actions_namespaceObject.authErrorHandler)(params)(dispatch).then(() => {
442
+ dispatch(stopWidgetLoading());
443
+ });
444
+ } catch (e) {
445
+ return Promise.reject();
446
+ }
447
+ };
448
+ const reserveTicket = ({
449
+ provider,
450
+ personalInformation,
451
+ ticket,
452
+ ticketQuantity
453
+ }, {
454
+ onError
455
+ }) => async (dispatch, getState, {
456
+ apiBaseUrl,
457
+ getAccessToken
458
+ }) => {
459
+ const {
460
+ registrationLiteState: {
461
+ settings: {
462
+ summitId
463
+ }
464
+ }
465
+ } = getState();
466
+ let {
467
+ firstName,
468
+ lastName,
469
+ email,
470
+ company,
471
+ promoCode
472
+ } = personalInformation;
473
+ dispatch(startWidgetLoading());
474
+ const access_token = await getAccessToken();
475
+ const tickets = [...Array(ticketQuantity)].map(() => ({
476
+ type_id: ticket.id,
477
+ promo_code: promoCode || null
478
+ })); // Only set the attendee for the first ticket.
479
+
480
+ tickets[0].attendee_first_name = firstName;
481
+ tickets[0].attendee_last_name = lastName;
482
+ tickets[0].attendee_email = email;
483
+ let params = {
484
+ access_token,
485
+ expand: 'tickets,tickets.owner,tickets.ticket_type,tickets.ticket_type.taxes'
486
+ };
487
+ const normalizedEntity = normalizeReservation({
488
+ owner_email: email,
489
+ owner_first_name: firstName,
490
+ owner_last_name: lastName,
491
+ owner_company: company,
492
+ tickets
493
+ });
494
+
495
+ const errorHandler = (err, res) => (dispatch, state) => {
496
+ if (res && res.statusCode === 412 && onError) return onError(err, res);
497
+
498
+ if (res && res.statusCode === 404) {
499
+ const msg = res.body.message;
500
+ external_sweetalert2_default().fire("Validation Error", msg, "warning");
501
+ return;
502
+ }
503
+
504
+ if (res && res.statusCode === 500) {
505
+ const msg = res.body.message;
506
+ external_sweetalert2_default().fire("Server Error", msg, "error");
507
+ return;
508
+ }
509
+
510
+ return (0,actions_namespaceObject.authErrorHandler)(err, res)(dispatch, state);
511
+ };
512
+
513
+ return (0,actions_namespaceObject.postRequest)((0,actions_namespaceObject.createAction)(CREATE_RESERVATION), (0,actions_namespaceObject.createAction)(CREATE_RESERVATION_SUCCESS), `${apiBaseUrl}/api/v1/summits/${summitId}/orders/reserve`, normalizedEntity, errorHandler // entity
514
+ )(params)(dispatch).then(payload => {
515
+ dispatch(stopWidgetLoading());
516
+ payload.response.promo_code = promoCode || null;
517
+
518
+ if (!payload.response.amount) {
519
+ dispatch(payTicketWithProvider(provider));
520
+ return payload;
521
+ }
522
+
523
+ dispatch(changeStep(2));
524
+ return payload;
525
+ }).catch(e => {
526
+ dispatch((0,actions_namespaceObject.createAction)(CREATE_RESERVATION_ERROR)(e));
527
+ dispatch(stopWidgetLoading());
528
+ return e;
529
+ });
530
+ };
531
+ const removeReservedTicket = () => async (dispatch, getState, {
532
+ apiBaseUrl,
533
+ getAccessToken
534
+ }) => {
535
+ let {
536
+ registrationLiteState: {
537
+ settings: {
538
+ summitId
539
+ },
540
+ reservation: {
541
+ hash
542
+ }
543
+ }
544
+ } = getState();
545
+ const access_token = await getAccessToken();
546
+ let params = {
547
+ access_token,
548
+ expand: 'tickets,tickets.owner'
549
+ };
550
+ dispatch(startWidgetLoading());
551
+ return (0,actions_namespaceObject.deleteRequest)((0,actions_namespaceObject.createAction)(DELETE_RESERVATION), (0,actions_namespaceObject.createAction)(DELETE_RESERVATION_SUCCESS), `${apiBaseUrl}/api/v1/summits/${summitId}/orders/${hash}`, {}, actions_namespaceObject.authErrorHandler // entity
552
+ )(params)(dispatch).then(payload => {
553
+ dispatch(stopWidgetLoading());
554
+ dispatch(changeStep(1));
555
+ return payload;
556
+ }).catch(e => {
557
+ dispatch((0,actions_namespaceObject.createAction)(DELETE_RESERVATION_ERROR)(e));
558
+ dispatch(changeStep(1));
559
+ dispatch(stopWidgetLoading());
560
+ return e;
561
+ });
562
+ };
563
+ const payTicketWithProvider = (provider, params = {}) => async (dispatch, getState, {
564
+ apiBaseUrl,
565
+ getAccessToken
566
+ }) => {
567
+ let {
568
+ registrationLiteState: {
569
+ settings: {
570
+ summitId,
571
+ userProfile
572
+ },
573
+ reservation
574
+ }
575
+ } = getState();
576
+ const access_token = await getAccessToken();
577
+ dispatch(startWidgetLoading());
578
+ const currentProvider = PaymentProviderFactory.build(provider, {
579
+ reservation,
580
+ summitId,
581
+ userProfile,
582
+ access_token,
583
+ apiBaseUrl,
584
+ dispatch
585
+ });
586
+ return dispatch(currentProvider.payTicket(actions_objectSpread({}, params)));
587
+ };
588
+ const changeStep = step => (dispatch, getState) => {
589
+ dispatch(startWidgetLoading());
590
+ dispatch((0,actions_namespaceObject.createAction)(CHANGE_STEP)(step));
591
+ dispatch(stopWidgetLoading());
592
+ };
593
+ const goToLogin = () => (dispatch, getState) => {
594
+ dispatch((0,actions_namespaceObject.createAction)(GO_TO_LOGIN)());
595
+ };
596
+ const getLoginCode = (email, getPasswordlessCode) => async (dispatch, getState) => {
597
+ dispatch((0,actions_namespaceObject.createAction)(SET_PASSWORDLESS_LOGIN)(email));
598
+ return new Promise((resolve, reject) => {
599
+ getPasswordlessCode(email).then(res => {
600
+ dispatch((0,actions_namespaceObject.createAction)(SET_PASSWORDLESS_LENGTH)(res.response));
601
+ resolve(res);
602
+ }, err => {
603
+ reject(err);
604
+ });
605
+ });
606
+ };
607
+ const passwordlessLogin = (code, loginWithCode) => async (dispatch, getState) => {
608
+ const {
609
+ registrationLiteState: {
610
+ passwordless: {
611
+ email
612
+ }
613
+ }
614
+ } = getState();
615
+ return new Promise((resolve, reject) => {
616
+ loginWithCode(code, email).then(res => {
617
+ if (res) {
618
+ dispatch((0,actions_namespaceObject.createAction)(SET_PASSWORDLESS_ERROR)());
619
+ }
620
+
621
+ resolve(res);
622
+ }, err => {
623
+ reject(err);
624
+ });
625
+ });
626
+ };
627
+ const isInPersonTicketType = ticketType => {
628
+ /** check is the current order has or not IN_PERSON tickets types **/
629
+ if (ticketType.hasOwnProperty("badge_type")) {
630
+ let badgeType = ticketType.badge_type;
631
+ return badgeType.access_levels.some(al => {
632
+ return al.name == 'IN_PERSON';
633
+ });
634
+ }
635
+
636
+ return false;
637
+ };
638
+
639
+ const normalizeReservation = entity => {
640
+ const normalizedEntity = actions_objectSpread({}, entity);
641
+
642
+ if (!entity.owner_company.id) {
643
+ normalizedEntity['owner_company'] = entity.owner_company.name;
644
+ } else {
645
+ delete normalizedEntity['owner_company'];
646
+ normalizedEntity['owner_company_id'] = entity.owner_company.id;
647
+ }
648
+
649
+ return normalizedEntity;
650
+ };
651
+ ;// CONCATENATED MODULE: ./src/reducer.js
652
+ function reducer_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
653
+
654
+ function reducer_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? reducer_ownKeys(Object(source), !0).forEach(function (key) { reducer_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : reducer_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
655
+
656
+ function reducer_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
657
+
658
+ /**
659
+ * Copyright 2020 OpenStack Foundation
660
+ * Licensed under the Apache License, Version 2.0 (the "License");
661
+ * you may not use this file except in compliance with the License.
662
+ * You may obtain a copy of the License at
663
+ * http://www.apache.org/licenses/LICENSE-2.0
664
+ * Unless required by applicable law or agreed to in writing, software
665
+ * distributed under the License is distributed on an "AS IS" BASIS,
666
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
667
+ * See the License for the specific language governing permissions and
668
+ * limitations under the License.
669
+ **/
670
+
671
+ const DEFAULT_STATE = {
672
+ reservation: null,
673
+ checkout: null,
674
+ step: 0,
675
+ widgetLoading: false,
676
+ passwordless: {
677
+ email: null,
678
+ otp_length: 0,
679
+ code_sent: false,
680
+ error: false
681
+ },
682
+ ticketTypes: [],
683
+ taxTypes: [],
684
+ settings: {
685
+ apiBaseUrl: null,
686
+ summitId: null,
687
+ marketingData: null,
688
+ userProfile: null
689
+ }
690
+ };
691
+
692
+ const RegistrationLiteReducer = (state = DEFAULT_STATE, action) => {
693
+ const {
694
+ type,
695
+ payload
696
+ } = action;
697
+
698
+ switch (type) {
699
+ case START_WIDGET_LOADING:
700
+ {
701
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
702
+ widgetLoading: true
703
+ });
704
+ }
705
+
706
+ case STOP_WIDGET_LOADING:
707
+ {
708
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
709
+ widgetLoading: false
710
+ });
711
+ }
712
+
713
+ case LOAD_INITIAL_VARS:
714
+ const {
715
+ marketingData,
716
+ summitData,
717
+ apiBaseUrl,
718
+ profileData
719
+ } = payload;
720
+ Object.keys(marketingData).forEach(setting => {
721
+ if (getComputedStyle(document.documentElement).getPropertyValue(`--${setting}`)) {
722
+ document.documentElement.style.setProperty(`--${setting}`, marketingData[setting]);
723
+ document.documentElement.style.setProperty(`--${setting}50`, `${marketingData[setting]}50`);
724
+ }
725
+ });
726
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
727
+ reservation: null,
728
+ checkout: null,
729
+ passwordless: reducer_objectSpread({}, DEFAULT_STATE.passwordless),
730
+ settings: reducer_objectSpread(reducer_objectSpread({}, DEFAULT_STATE.settings), {}, {
731
+ marketingData: marketingData,
732
+ summitId: summitData.id,
733
+ userProfile: profileData,
734
+ apiBaseUrl: apiBaseUrl
735
+ })
736
+ });
737
+
738
+ case CHANGE_STEP:
739
+ {
740
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
741
+ step: payload
742
+ });
743
+ }
744
+
745
+ case GET_TICKET_TYPES:
746
+ {
747
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
748
+ ticketTypes: payload.response.data
749
+ });
750
+ }
751
+
752
+ case GET_TAX_TYPES:
753
+ {
754
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
755
+ taxTypes: payload.response.data
756
+ });
757
+ }
758
+
759
+ case GO_TO_LOGIN:
760
+ {
761
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
762
+ passwordless: reducer_objectSpread(reducer_objectSpread({}, state.passwordless), {}, {
763
+ code_sent: false,
764
+ error: false
765
+ })
766
+ });
767
+ }
768
+
769
+ case SET_PASSWORDLESS_LOGIN:
770
+ {
771
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
772
+ passwordless: reducer_objectSpread(reducer_objectSpread({}, state.passwordless), {}, {
773
+ email: payload,
774
+ error: false
775
+ })
776
+ });
777
+ }
778
+
779
+ case SET_PASSWORDLESS_LENGTH:
780
+ {
781
+ const {
782
+ otp_length
783
+ } = payload;
784
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
785
+ passwordless: reducer_objectSpread(reducer_objectSpread({}, state.passwordless), {}, {
786
+ otp_length,
787
+ code_sent: true,
788
+ error: false
789
+ })
790
+ });
791
+ }
792
+
793
+ case SET_PASSWORDLESS_ERROR:
794
+ {
795
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
796
+ passwordless: reducer_objectSpread(reducer_objectSpread({}, state.passwordless), {}, {
797
+ error: true
798
+ })
799
+ });
800
+ }
801
+
802
+ case CREATE_RESERVATION_SUCCESS:
803
+ {
804
+ const reservation = payload.response;
805
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
806
+ reservation
807
+ });
808
+ }
809
+
810
+ case DELETE_RESERVATION_SUCCESS:
811
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
812
+ reservation: null
813
+ });
814
+
815
+ case CLEAR_RESERVATION:
816
+ {
817
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
818
+ reservation: null
819
+ });
820
+ }
821
+
822
+ case PAY_RESERVATION:
823
+ {
824
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
825
+ checkout: payload.response,
826
+ reservation: null,
827
+ userProfile: null
828
+ });
829
+ }
830
+
831
+ default:
832
+ {
833
+ return state;
834
+ }
835
+ }
836
+ };
837
+
838
+ /* harmony default export */ const reducer = (RegistrationLiteReducer);
839
+ ;// CONCATENATED MODULE: ./src/store.js
840
+ /**
841
+ * Copyright 2019
842
+ * Licensed under the Apache License, Version 2.0 (the "License");
843
+ * you may not use this file except in compliance with the License.
844
+ * You may obtain a copy of the License at
845
+ * http://www.apache.org/licenses/LICENSE-2.0
846
+ * Unless required by applicable law or agreed to in writing, software
847
+ * distributed under the License is distributed on an "AS IS" BASIS,
848
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
849
+ * See the License for the specific language governing permissions and
850
+ * limitations under the License.
851
+ **/
852
+
853
+
854
+
855
+ // default: localStorage if web, AsyncStorage if react-native
856
+
857
+
858
+ let store, persistor;
859
+ const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || external_redux_namespaceObject.compose;
860
+ const getStore = (clientId, apiBaseUrl, getAccessToken) => {
861
+ if (store) return store;
862
+ const config = {
863
+ key: `root_registration_lite_${clientId}`,
864
+ storage: (storage_default()),
865
+ blacklist: ['ticketTypes', 'taxTypes'] // do not persist these keys
866
+
867
+ };
868
+ const reducers = (0,external_redux_persist_namespaceObject.persistCombineReducers)(config, {
869
+ registrationLiteState: reducer
870
+ });
871
+ store = (0,external_redux_namespaceObject.createStore)(reducers, composeEnhancers((0,external_redux_namespaceObject.applyMiddleware)(external_redux_thunk_default().withExtraArgument({
872
+ apiBaseUrl: apiBaseUrl,
873
+ getAccessToken: getAccessToken
874
+ }))));
875
+ return store;
876
+ };
877
+ const getPersistor = () => {
878
+ if (persistor) return persistor;
879
+
880
+ const onRehydrateComplete = () => {};
881
+
882
+ persistor = (0,external_redux_persist_namespaceObject.persistStore)(store, null, onRehydrateComplete);
883
+ return persistor;
884
+ };
885
+ ;// CONCATENATED MODULE: external "redux-persist/integration/react"
886
+ const react_namespaceObject = require("redux-persist/integration/react");
887
+ ;// CONCATENATED MODULE: external "react-spring"
888
+ const external_react_spring_namespaceObject = require("react-spring");
889
+ ;// CONCATENATED MODULE: external "react-use"
890
+ const external_react_use_namespaceObject = require("react-use");
891
+ ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components/ajaxloader"
892
+ const ajaxloader_namespaceObject = require("openstack-uicore-foundation/lib/components/ajaxloader");
893
+ var ajaxloader_default = /*#__PURE__*/__webpack_require__.n(ajaxloader_namespaceObject);
894
+ ;// CONCATENATED MODULE: ./src/styles/general.module.scss
895
+ // extracted by mini-css-extract-plugin
896
+ /* harmony default export */ const general_module = ({"modal":"modal___G3Cmq","modalContent":"modalContent___lIaqw","outerWrapper":"outerWrapper___OWXyi","innerWrapper":"innerWrapper___mIrBF","title":"title___Tbvkl"});
897
+ ;// CONCATENATED MODULE: ./src/components/login/index.module.scss
898
+ // extracted by mini-css-extract-plugin
899
+ /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","loginCode":"loginCode___dDBup","input":"input___QR9sA"});
900
+ ;// CONCATENATED MODULE: ./src/components/login/index.js
901
+ /**
902
+ * Copyright 2020 OpenStack Foundation
903
+ * Licensed under the Apache License, Version 2.0 (the "License");
904
+ * you may not use this file except in compliance with the License.
905
+ * You may obtain a copy of the License at
906
+ * http://www.apache.org/licenses/LICENSE-2.0
907
+ * Unless required by applicable law or agreed to in writing, software
908
+ * distributed under the License is distributed on an "AS IS" BASIS,
909
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
910
+ * See the License for the specific language governing permissions and
911
+ * limitations under the License.
912
+ **/
913
+
914
+
915
+
916
+ const LoginComponent = ({
917
+ options,
918
+ login,
919
+ allowsNativeAuth,
920
+ allowsOtpAuthlogin,
921
+ getLoginCode,
922
+ getPasswordlessCode
923
+ }) => {
924
+ const [email, setEmail] = (0,external_react_namespaceObject.useState)('');
925
+ const [emailError, setEmailError] = (0,external_react_namespaceObject.useState)();
926
+
927
+ const isValidEmail = email => {
928
+ const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
929
+ return re.test(String(email).toLowerCase());
930
+ };
931
+
932
+ const loginCode = () => {
933
+ let isValid = isValidEmail(email);
934
+ setEmailError(!isValid);
935
+
936
+ if (isValid) {
937
+ getLoginCode(email, getPasswordlessCode);
938
+ }
939
+ };
940
+
941
+ return /*#__PURE__*/external_react_default().createElement("div", {
942
+ className: `${index_module.loginWrapper} step-wrapper`
943
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
944
+ className: `${index_module.innerWrapper}`
945
+ }, /*#__PURE__*/external_react_default().createElement("div", {
946
+ className: index_module.loginCode
947
+ }, "Enter your email to begin registration:", /*#__PURE__*/external_react_default().createElement("div", {
948
+ className: index_module.input
949
+ }, /*#__PURE__*/external_react_default().createElement("input", {
950
+ placeholder: "youremail@example.com",
951
+ value: email,
952
+ onChange: e => setEmail(e.target.value),
953
+ onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
954
+ "data-testid": "email-input"
955
+ }), /*#__PURE__*/external_react_default().createElement("button", {
956
+ onClick: () => loginCode(),
957
+ "data-testid": "email-button"
958
+ }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
959
+ "data-testid": "email-error"
960
+ }, "Please enter a valid email address")), /*#__PURE__*/external_react_default().createElement("span", null, "Or you may login with one of the following:"), options.map((o, index) => {
961
+ return o.provider_param ? /*#__PURE__*/external_react_default().createElement("div", {
962
+ className: `${index_module.button}`,
963
+ key: `provider-${o.provider_param}`,
964
+ "data-testid": "login-button",
965
+ style: {
966
+ color: o.button_border_color ? o.button_border_color : '#ffffff',
967
+ border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
968
+ backgroundColor: o.button_color,
969
+ backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
970
+ backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
971
+ },
972
+ onClick: () => login(o.provider_param)
973
+ }, o.provider_label) : allowsNativeAuth ? /*#__PURE__*/external_react_default().createElement("div", {
974
+ className: `${index_module.button}`,
975
+ key: `provider-fnid`,
976
+ "data-testid": "login-button",
977
+ style: {
978
+ color: o.button_border_color ? o.button_border_color : '#ffffff',
979
+ border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
980
+ backgroundColor: o.button_color,
981
+ backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
982
+ backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
983
+ },
984
+ onClick: () => login(o.provider_param)
985
+ }, o.provider_label) : null;
986
+ }), allowsOtpAuthlogin && /*#__PURE__*/external_react_default().createElement("div", {
987
+ className: index_module.loginCode
988
+ }, "or get a login code emailed to you", /*#__PURE__*/external_react_default().createElement("div", {
989
+ className: index_module.input
990
+ }, /*#__PURE__*/external_react_default().createElement("input", {
991
+ placeholder: "youremail@example.com",
992
+ value: email,
993
+ onChange: e => setEmail(e.target.value),
994
+ onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
995
+ "data-testid": "email-input"
996
+ }), /*#__PURE__*/external_react_default().createElement("button", {
997
+ onClick: () => loginCode(),
998
+ "data-testid": "email-button"
999
+ }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
1000
+ "data-testid": "email-error"
1001
+ }, "Please enter a valid email adress")))));
1002
+ };
1003
+
1004
+ /* harmony default export */ const login = (LoginComponent);
1005
+ ;// CONCATENATED MODULE: external "prop-types"
1006
+ const external_prop_types_namespaceObject = require("prop-types");
1007
+ ;// CONCATENATED MODULE: ./src/components/payment/index.module.scss
1008
+ // extracted by mini-css-extract-plugin
1009
+ /* harmony default export */ const payment_index_module = ({"title":"title___LksVm","form":"form___v5GIx","fieldWrapper":"fieldWrapper___Eoe61"});
1010
+ ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components"
1011
+ const components_namespaceObject = require("openstack-uicore-foundation/lib/components");
1012
+ ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/utils/methods"
1013
+ const methods_namespaceObject = require("openstack-uicore-foundation/lib/utils/methods");
1014
+ ;// CONCATENATED MODULE: ./src/components/lawpay-form/index.module.scss
1015
+ // extracted by mini-css-extract-plugin
1016
+ /* harmony default export */ const lawpay_form_index_module = ({"form":"form___zXb7s","fieldWrapper":"fieldWrapper___G4Wqw","inputWrapper":"inputWrapper___Yz5zB","fieldRow":"fieldRow___NfZdJ","addressField":"addressField___vmAQh","lawpayWrapper":"lawpayWrapper___hpUBf","dateWrapper":"dateWrapper___XDfqs","dropdown":"dropdown___l3_bk","fieldError":"fieldError___Igq3U"});
1017
+ ;// CONCATENATED MODULE: ./src/components/lawpay-form/index.js
1018
+ function lawpay_form_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1019
+
1020
+ function lawpay_form_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? lawpay_form_ownKeys(Object(source), !0).forEach(function (key) { lawpay_form_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : lawpay_form_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1021
+
1022
+ function lawpay_form_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1023
+
1024
+ /**
1025
+ * Copyright 2022 OpenStack Foundation
1026
+ * Licensed under the Apache License, Version 2.0 (the "License");
1027
+ * you may not use this file except in compliance with the License.
1028
+ * You may obtain a copy of the License at
1029
+ * http://www.apache.org/licenses/LICENSE-2.0
1030
+ * Unless required by applicable law or agreed to in writing, software
1031
+ * distributed under the License is distributed on an "AS IS" BASIS,
1032
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1033
+ * See the License for the specific language governing permissions and
1034
+ * limitations under the License.
1035
+ **/
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+ const LawPayForm = ({
1044
+ reservation,
1045
+ payTicket,
1046
+ userProfile,
1047
+ marketingData,
1048
+ providerKey,
1049
+ provider,
1050
+ timestamp
1051
+ }) => {
1052
+ const [hostedFields, setHostedFields] = (0,external_react_namespaceObject.useState)(null);
1053
+ const [lawPayFields, setLawPayFields] = (0,external_react_namespaceObject.useState)({
1054
+ exp_month: '',
1055
+ exp_year: '',
1056
+ postal_code: userProfile.postal_code || '',
1057
+ address1: userProfile.address1 || ''
1058
+ });
1059
+ const [lawPayErrors, setLawPayErrors] = (0,external_react_namespaceObject.useState)({
1060
+ exp_month: '',
1061
+ exp_year: '',
1062
+ postal_code: '',
1063
+ credit_card_number: '',
1064
+ cvv: '',
1065
+ address1: ''
1066
+ });
1067
+ const style = {
1068
+ color: marketingData.color_text_dark,
1069
+ "font-size": '16px',
1070
+ "font-weight": 'inherit',
1071
+ '::placeholder': {
1072
+ color: marketingData.color_text_input_hints
1073
+ }
1074
+ };
1075
+ const hostedFieldsConfiguration = {
1076
+ publicKey: `${providerKey}`,
1077
+ fields: [{
1078
+ selector: "#my_credit_card_field_id",
1079
+ input: {
1080
+ type: "credit_card_number",
1081
+ placeholder: "Credit Card Number",
1082
+ css: style
1083
+ }
1084
+ }, {
1085
+ selector: "#my_cvv_field_id",
1086
+ input: {
1087
+ type: "cvv",
1088
+ placeholder: "CCV",
1089
+ css: style
1090
+ }
1091
+ }]
1092
+ };
1093
+
1094
+ const hostedFieldsCallBack = state => {
1095
+ let fieldErrors = {};
1096
+ state.fields.map(f => {
1097
+ if (f.focus && f.error !== 'Input field is empty') fieldErrors = lawpay_form_objectSpread(lawpay_form_objectSpread({}, fieldErrors), {}, {
1098
+ [f.type]: f.error
1099
+ });
1100
+ });
1101
+ setLawPayErrors(lawpay_form_objectSpread(lawpay_form_objectSpread({}, lawPayErrors), fieldErrors));
1102
+ };
1103
+
1104
+ (0,external_react_namespaceObject.useEffect)(() => {
1105
+ if (window.AffiniPay && !hostedFields) {
1106
+ setHostedFields(window.AffiniPay.HostedFields.initializeFields(hostedFieldsConfiguration, hostedFieldsCallBack));
1107
+ }
1108
+ }, [reservation]);
1109
+
1110
+ const onExpireChange = ev => {
1111
+ setLawPayFields(lawpay_form_objectSpread(lawpay_form_objectSpread({}, lawPayFields), {}, {
1112
+ [ev.target.id]: ev.target.value
1113
+ }));
1114
+ };
1115
+
1116
+ const formHasErrors = () => {
1117
+ let errors = {};
1118
+ Object.keys(lawPayFields).map(key => {
1119
+ if (!lawPayFields[key] || lawPayFields[key] === '') {
1120
+ errors = lawpay_form_objectSpread(lawpay_form_objectSpread({}, errors), {}, {
1121
+ [key]: 'This field is required.'
1122
+ });
1123
+ }
1124
+ });
1125
+ setLawPayErrors(lawpay_form_objectSpread(lawpay_form_objectSpread({}, lawPayErrors), errors));
1126
+ return Object.keys(errors).length > 0;
1127
+ };
1128
+
1129
+ const onSubmit = async event => {
1130
+ event.preventDefault();
1131
+
1132
+ if (!hostedFields) {
1133
+ // Affinity Pay has not loaded yet. Make sure to disable
1134
+ // form submission until Affinity Pay has loaded.
1135
+ return;
1136
+ }
1137
+
1138
+ if (!formHasErrors()) {
1139
+ try {
1140
+ const token = await hostedFields.getPaymentToken({
1141
+ "postal_code": lawPayFields.postal_code,
1142
+ "address1": lawPayFields.address1,
1143
+ "exp_year": lawPayFields.exp_year,
1144
+ "exp_month": lawPayFields.exp_month,
1145
+ "email": userProfile.email,
1146
+ "name": `${reservation.owner_first_name} ${reservation.owner_last_name}`,
1147
+ "reference": `summit_${reservation.summit_id}_order_${reservation.id}`
1148
+ });
1149
+ payTicket(provider, {
1150
+ token
1151
+ });
1152
+ } catch (error) {
1153
+ external_sweetalert2_default().fire("Payment error", error.message, "warning");
1154
+ }
1155
+ }
1156
+ };
1157
+
1158
+ const ddl_month = [{
1159
+ label: '1 - January',
1160
+ value: '01'
1161
+ }, {
1162
+ label: '2 - February',
1163
+ value: '02'
1164
+ }, {
1165
+ label: '3 - March',
1166
+ value: '03'
1167
+ }, {
1168
+ label: '4 - April',
1169
+ value: '04'
1170
+ }, {
1171
+ label: '5 - May',
1172
+ value: '05'
1173
+ }, {
1174
+ label: '6 - June',
1175
+ value: '06'
1176
+ }, {
1177
+ label: '7 - July',
1178
+ value: '07'
1179
+ }, {
1180
+ label: '8 - August',
1181
+ value: '08'
1182
+ }, {
1183
+ label: '9 - September',
1184
+ value: '09'
1185
+ }, {
1186
+ label: '10 - October',
1187
+ value: '10'
1188
+ }, {
1189
+ label: '11 - November',
1190
+ value: '11'
1191
+ }, {
1192
+ label: '12 - December',
1193
+ value: '12'
1194
+ }];
1195
+ const current_year = (0,methods_namespaceObject.epochToMomentTimeZone)(timestamp, 'utc').year();
1196
+ const year_ddl = Array.from({
1197
+ length: 15
1198
+ }, (_, i) => {
1199
+ return {
1200
+ label: `${current_year + i}`,
1201
+ value: `${current_year + i}`
1202
+ };
1203
+ });
1204
+ const customStyles = {
1205
+ option: (provided, {
1206
+ isFocused,
1207
+ isSelected
1208
+ }) => {
1209
+ return lawpay_form_objectSpread(lawpay_form_objectSpread({}, provided), {}, {
1210
+ backgroundColor: isFocused ? 'var(--color-primary)' : isSelected ? 'var(--color-primary)' : undefined,
1211
+ color: 'var(--color_text_dark)',
1212
+ ':active': lawpay_form_objectSpread(lawpay_form_objectSpread({}, provided[':active']), {}, {
1213
+ backgroundColor: isSelected ? 'var(--color-primary)' : undefined
1214
+ })
1215
+ });
1216
+ },
1217
+ placeholder: (provided, state) => lawpay_form_objectSpread(lawpay_form_objectSpread({}, provided), {}, {
1218
+ color: 'var(--color_text_input_hints)'
1219
+ }),
1220
+ menu: (provided, state) => lawpay_form_objectSpread(lawpay_form_objectSpread({}, provided), {}, {
1221
+ color: 'var(--color_text_dark)',
1222
+ zIndex: '100'
1223
+ }),
1224
+ menuList: provided => lawpay_form_objectSpread(lawpay_form_objectSpread({}, provided), {}, {
1225
+ maxHeight: 160
1226
+ }),
1227
+ singleValue: (provided, state) => {
1228
+ const opacity = state.isDisabled ? 0.5 : 1;
1229
+ const transition = 'opacity 300ms';
1230
+ const color = 'var(--color_text_dark)';
1231
+ return lawpay_form_objectSpread(lawpay_form_objectSpread({}, provided), {}, {
1232
+ opacity,
1233
+ transition,
1234
+ color
1235
+ });
1236
+ }
1237
+ };
1238
+ return /*#__PURE__*/external_react_default().createElement("form", {
1239
+ className: lawpay_form_index_module.form,
1240
+ id: "payment-form",
1241
+ onSubmit: onSubmit
1242
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1243
+ className: lawpay_form_index_module.fieldWrapper
1244
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1245
+ className: lawpay_form_index_module.inputWrapper
1246
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1247
+ id: "my_credit_card_field_id",
1248
+ className: lawpay_form_index_module.lawpayWrapper
1249
+ }), /*#__PURE__*/external_react_default().createElement("i", {
1250
+ className: "fa fa-credit-card"
1251
+ })), lawPayErrors.credit_card_number && /*#__PURE__*/external_react_default().createElement("div", {
1252
+ className: lawpay_form_index_module.fieldError
1253
+ }, lawPayErrors.credit_card_number)), /*#__PURE__*/external_react_default().createElement("div", {
1254
+ className: lawpay_form_index_module.fieldWrapper
1255
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1256
+ className: lawpay_form_index_module.dateWrapper
1257
+ }, /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement(components_namespaceObject.Dropdown, {
1258
+ styles: customStyles,
1259
+ className: lawpay_form_index_module.dropdown,
1260
+ placeholder: "Month",
1261
+ onChange: onExpireChange,
1262
+ id: "exp_month",
1263
+ options: ddl_month
1264
+ }), lawPayErrors.exp_month && /*#__PURE__*/external_react_default().createElement("div", {
1265
+ className: lawpay_form_index_module.fieldError
1266
+ }, lawPayErrors.exp_month)), /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement(components_namespaceObject.Dropdown, {
1267
+ styles: customStyles,
1268
+ className: lawpay_form_index_module.dropdown,
1269
+ placeholder: "Year",
1270
+ onChange: onExpireChange,
1271
+ id: "exp_year",
1272
+ options: year_ddl
1273
+ }), lawPayErrors.exp_year && /*#__PURE__*/external_react_default().createElement("div", {
1274
+ className: lawpay_form_index_module.fieldError
1275
+ }, lawPayErrors.exp_year)))), /*#__PURE__*/external_react_default().createElement("div", {
1276
+ className: lawpay_form_index_module.fieldWrapper
1277
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1278
+ className: lawpay_form_index_module.fieldRow
1279
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1280
+ className: lawpay_form_index_module.inputWrapper
1281
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1282
+ id: "my_cvv_field_id",
1283
+ className: lawpay_form_index_module.lawpayWrapper
1284
+ })), /*#__PURE__*/external_react_default().createElement("div", {
1285
+ className: lawpay_form_index_module.inputWrapper
1286
+ }, /*#__PURE__*/external_react_default().createElement("input", {
1287
+ type: "text",
1288
+ name: "postal_code",
1289
+ placeholder: "ZIP Code *",
1290
+ value: lawPayFields.postal_code,
1291
+ onChange: e => setLawPayFields(lawpay_form_objectSpread(lawpay_form_objectSpread({}, lawPayFields), {}, {
1292
+ postal_code: e.target.value
1293
+ }))
1294
+ }))), /*#__PURE__*/external_react_default().createElement("div", {
1295
+ className: lawpay_form_index_module.fieldRow
1296
+ }, lawPayErrors.cvv && /*#__PURE__*/external_react_default().createElement("div", {
1297
+ className: lawpay_form_index_module.fieldError
1298
+ }, lawPayErrors.cvv), lawPayErrors.postal_code && /*#__PURE__*/external_react_default().createElement("div", {
1299
+ className: lawpay_form_index_module.fieldError
1300
+ }, lawPayErrors.postal_code))), /*#__PURE__*/external_react_default().createElement("div", {
1301
+ className: lawpay_form_index_module.fieldWrapper
1302
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1303
+ className: `${lawpay_form_index_module.inputWrapper} ${lawpay_form_index_module.addressField}`
1304
+ }, /*#__PURE__*/external_react_default().createElement("input", {
1305
+ type: "text",
1306
+ name: "address1",
1307
+ placeholder: "Address *",
1308
+ value: lawPayFields.address1,
1309
+ onChange: e => setLawPayFields(lawpay_form_objectSpread(lawpay_form_objectSpread({}, lawPayFields), {}, {
1310
+ address1: e.target.value
1311
+ }))
1312
+ })), lawPayErrors.address1 && /*#__PURE__*/external_react_default().createElement("div", {
1313
+ className: lawpay_form_index_module.fieldError
1314
+ }, lawPayErrors.address1)));
1315
+ };
1316
+
1317
+ const mapStateToProps = ({
1318
+ registrationLiteState
1319
+ }) => ({
1320
+ marketingData: registrationLiteState.settings.marketingData
1321
+ });
1322
+
1323
+ /* harmony default export */ const lawpay_form = ((0,external_react_redux_namespaceObject.connect)(mapStateToProps, null)(LawPayForm));
1324
+ ;// CONCATENATED MODULE: external "@stripe/stripe-js"
1325
+ const stripe_js_namespaceObject = require("@stripe/stripe-js");
1326
+ ;// CONCATENATED MODULE: external "@stripe/react-stripe-js"
1327
+ const react_stripe_js_namespaceObject = require("@stripe/react-stripe-js");
1328
+ ;// CONCATENATED MODULE: external "react-hook-form"
1329
+ const external_react_hook_form_namespaceObject = require("react-hook-form");
1330
+ ;// CONCATENATED MODULE: external "lodash/merge"
1331
+ const merge_namespaceObject = require("lodash/merge");
1332
+ var merge_default = /*#__PURE__*/__webpack_require__.n(merge_namespaceObject);
1333
+ ;// CONCATENATED MODULE: ./src/components/stripe-form/index.module.scss
1334
+ // extracted by mini-css-extract-plugin
1335
+ /* harmony default export */ const stripe_form_index_module = ({"form":"form___DoT3x","fieldWrapper":"fieldWrapper___wa1Ks","inputWrapper":"inputWrapper___CbXhF","fieldError":"fieldError___QrMYW"});
1336
+ ;// CONCATENATED MODULE: ./src/components/stripe-form/index.js
1337
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1338
+
1339
+ /**
1340
+ * Copyright 2020 OpenStack Foundation
1341
+ * Licensed under the Apache License, Version 2.0 (the "License");
1342
+ * you may not use this file except in compliance with the License.
1343
+ * You may obtain a copy of the License at
1344
+ * http://www.apache.org/licenses/LICENSE-2.0
1345
+ * Unless required by applicable law or agreed to in writing, software
1346
+ * distributed under the License is distributed on an "AS IS" BASIS,
1347
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1348
+ * See the License for the specific language governing permissions and
1349
+ * limitations under the License.
1350
+ **/
1351
+
1352
+
1353
+
1354
+
1355
+
1356
+
1357
+
1358
+ const stripeErrorCodeMap = {
1359
+ 'incomplete_number': {
1360
+ field: 'cardNumber',
1361
+ message: 'This field is required.'
1362
+ },
1363
+ 'incorrect_number': {
1364
+ field: 'cardNumber'
1365
+ },
1366
+ 'invalid_number': {
1367
+ field: 'cardNumber'
1368
+ },
1369
+ 'card_declined': {
1370
+ field: 'cardNumber'
1371
+ },
1372
+ 'incomplete_cvc': {
1373
+ field: 'cardCvc',
1374
+ message: 'This field is required.'
1375
+ },
1376
+ 'incorrect_cvc': {
1377
+ field: 'cardCvc'
1378
+ },
1379
+ 'invalid_cvc': {
1380
+ field: 'cardCvc'
1381
+ },
1382
+ 'incomplete_expiry': {
1383
+ field: 'cardExpiry',
1384
+ message: 'This field is required.'
1385
+ },
1386
+ 'invalid_expiry_month': {
1387
+ field: 'cardExpiry'
1388
+ },
1389
+ 'invalid_expiry_year': {
1390
+ field: 'cardExpiry'
1391
+ },
1392
+ 'expired_card': {
1393
+ field: 'cardExpiry'
1394
+ }
1395
+ };
1396
+
1397
+ const StripeForm = ({
1398
+ reservation,
1399
+ payTicket,
1400
+ userProfile,
1401
+ marketingData,
1402
+ stripeOptions,
1403
+ provider
1404
+ }) => {
1405
+ const stripe = (0,react_stripe_js_namespaceObject.useStripe)();
1406
+ const elements = (0,react_stripe_js_namespaceObject.useElements)();
1407
+ const [stripeErrors, setStripeErrors] = (0,external_react_namespaceObject.useState)({});
1408
+ const {
1409
+ register,
1410
+ handleSubmit,
1411
+ formState: {
1412
+ errors
1413
+ }
1414
+ } = (0,external_react_hook_form_namespaceObject.useForm)();
1415
+ const stripeStyle = merge_default()({}, {
1416
+ base: {
1417
+ // Add your base input styles here. For example: #d4e5f4
1418
+ color: marketingData.color_text_dark,
1419
+ fontSize: '16px',
1420
+ //fontFamily: 'inherit',
1421
+ backgroundColor: '#ffffff',
1422
+ '::placeholder': {
1423
+ color: marketingData.color_text_input_hints
1424
+ }
1425
+ },
1426
+ invalid: {
1427
+ color: '#e5424d',
1428
+ ':focus': {
1429
+ color: '#3486cd'
1430
+ }
1431
+ }
1432
+ }, stripeOptions === null || stripeOptions === void 0 ? void 0 : stripeOptions.style);
1433
+
1434
+ const onSubmit = async data => {
1435
+ setStripeErrors({});
1436
+
1437
+ if (!stripe) {
1438
+ // Stripe.js has not loaded yet. Make sure to disable
1439
+ // form submission until Stripe.js has loaded.
1440
+ return;
1441
+ }
1442
+
1443
+ const cardElement = elements.getElement(react_stripe_js_namespaceObject.CardNumberElement); // @see https://stripe.com/docs/js/tokens_sources/create_token?type=cardElement
1444
+
1445
+ const {
1446
+ error,
1447
+ token
1448
+ } = await stripe.createToken(cardElement, {
1449
+ name: `${reservation.owner_first_name} ${reservation.owner_last_name}`,
1450
+ address_line1: userProfile.address1 || '',
1451
+ address_line2: userProfile.address2 || '',
1452
+ address_city: userProfile.locality || '',
1453
+ address_state: userProfile.region || '',
1454
+ address_zip: data.zipCode,
1455
+ address_country: userProfile.country || '',
1456
+ email: userProfile.email
1457
+ });
1458
+
1459
+ if (token) {
1460
+ payTicket(provider, {
1461
+ token,
1462
+ stripe,
1463
+ zipCode: data.zipCode
1464
+ });
1465
+ } else if (error) {
1466
+ if (stripeErrorCodeMap[error.code]) {
1467
+ setStripeErrors({
1468
+ [stripeErrorCodeMap[error.code].field]: stripeErrorCodeMap[error.code].message || error.message
1469
+ });
1470
+ } else {
1471
+ external_sweetalert2_default().fire("Payment error", error.message, "warning");
1472
+ }
1473
+ }
1474
+ };
1475
+
1476
+ return /*#__PURE__*/external_react_default().createElement("form", {
1477
+ className: stripe_form_index_module.form,
1478
+ id: "payment-form",
1479
+ onSubmit: handleSubmit(onSubmit)
1480
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1481
+ className: stripe_form_index_module.fieldWrapper
1482
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1483
+ className: stripe_form_index_module.inputWrapper
1484
+ }, /*#__PURE__*/external_react_default().createElement(react_stripe_js_namespaceObject.CardNumberElement, {
1485
+ options: {
1486
+ style: stripeStyle,
1487
+ placeholder: '1234 1234 1234 1234 *'
1488
+ }
1489
+ }), /*#__PURE__*/external_react_default().createElement("i", {
1490
+ className: "fa fa-credit-card"
1491
+ })), stripeErrors.cardNumber && /*#__PURE__*/external_react_default().createElement("div", {
1492
+ className: stripe_form_index_module.fieldError
1493
+ }, stripeErrors.cardNumber)), /*#__PURE__*/external_react_default().createElement("div", {
1494
+ className: stripe_form_index_module.fieldWrapper
1495
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1496
+ className: stripe_form_index_module.inputWrapper
1497
+ }, /*#__PURE__*/external_react_default().createElement(react_stripe_js_namespaceObject.CardExpiryElement, {
1498
+ options: {
1499
+ style: stripeStyle,
1500
+ placeholder: 'MM / YY *'
1501
+ }
1502
+ })), stripeErrors.cardExpiry && /*#__PURE__*/external_react_default().createElement("div", {
1503
+ className: stripe_form_index_module.fieldError
1504
+ }, stripeErrors.cardExpiry)), /*#__PURE__*/external_react_default().createElement("div", {
1505
+ className: stripe_form_index_module.fieldWrapper
1506
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1507
+ className: stripe_form_index_module.inputWrapper
1508
+ }, /*#__PURE__*/external_react_default().createElement(react_stripe_js_namespaceObject.CardCvcElement, {
1509
+ options: {
1510
+ style: stripeStyle,
1511
+ placeholder: 'CVC *'
1512
+ }
1513
+ })), stripeErrors.cardCvc && /*#__PURE__*/external_react_default().createElement("div", {
1514
+ className: stripe_form_index_module.fieldError
1515
+ }, stripeErrors.cardCvc)), /*#__PURE__*/external_react_default().createElement("div", {
1516
+ className: stripe_form_index_module.fieldWrapper
1517
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1518
+ className: stripe_form_index_module.inputWrapper
1519
+ }, /*#__PURE__*/external_react_default().createElement("input", _extends({
1520
+ type: "text",
1521
+ placeholder: "ZIP Code *",
1522
+ onChange: e => setZipCode(e.target.value)
1523
+ }, register("zipCode", {
1524
+ required: true
1525
+ })))), errors.zipCode && /*#__PURE__*/external_react_default().createElement("div", {
1526
+ className: stripe_form_index_module.fieldError
1527
+ }, "This field is required.")));
1528
+ };
1529
+
1530
+ const stripe_form_mapStateToProps = ({
1531
+ registrationLiteState
1532
+ }) => ({
1533
+ marketingData: registrationLiteState.settings.marketingData
1534
+ });
1535
+
1536
+ /* harmony default export */ const stripe_form = ((0,external_react_redux_namespaceObject.connect)(stripe_form_mapStateToProps, null)(StripeForm));
1537
+ ;// CONCATENATED MODULE: ./src/components/stripe-component/index.js
1538
+ /**
1539
+ * Copyright 2020 OpenStack Foundation
1540
+ * Licensed under the Apache License, Version 2.0 (the "License");
1541
+ * you may not use this file except in compliance with the License.
1542
+ * You may obtain a copy of the License at
1543
+ * http://www.apache.org/licenses/LICENSE-2.0
1544
+ * Unless required by applicable law or agreed to in writing, software
1545
+ * distributed under the License is distributed on an "AS IS" BASIS,
1546
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1547
+ * See the License for the specific language governing permissions and
1548
+ * limitations under the License.
1549
+ **/
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+ const stripe_component_StripeProvider = ({
1557
+ userProfile,
1558
+ reservation,
1559
+ payTicket,
1560
+ providerKey,
1561
+ provider,
1562
+ stripeOptions
1563
+ }) => {
1564
+ const stripePromise = (0,external_react_namespaceObject.useMemo)(() => (0,stripe_js_namespaceObject.loadStripe)(providerKey), [providerKey]);
1565
+ const options = {
1566
+ fonts: stripeOptions === null || stripeOptions === void 0 ? void 0 : stripeOptions.fonts
1567
+ };
1568
+ return /*#__PURE__*/external_react_default().createElement(react_stripe_js_namespaceObject.Elements, {
1569
+ options: options,
1570
+ stripe: stripePromise
1571
+ }, /*#__PURE__*/external_react_default().createElement(stripe_form, {
1572
+ reservation: reservation,
1573
+ payTicket: payTicket,
1574
+ userProfile: userProfile,
1575
+ stripeOptions: stripeOptions,
1576
+ provider: provider
1577
+ }));
1578
+ };
1579
+
1580
+ /* harmony default export */ const stripe_component = (stripe_component_StripeProvider);
1581
+ ;// CONCATENATED MODULE: external "react-helmet"
1582
+ const external_react_helmet_namespaceObject = require("react-helmet");
1583
+ ;// CONCATENATED MODULE: ./src/components/payment/index.js
1584
+ function payment_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1585
+
1586
+ function payment_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? payment_ownKeys(Object(source), !0).forEach(function (key) { payment_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : payment_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1587
+
1588
+ function payment_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1589
+
1590
+ /**
1591
+ * Copyright 2020 OpenStack Foundation
1592
+ * Licensed under the Apache License, Version 2.0 (the "License");
1593
+ * you may not use this file except in compliance with the License.
1594
+ * You may obtain a copy of the License at
1595
+ * http://www.apache.org/licenses/LICENSE-2.0
1596
+ * Unless required by applicable law or agreed to in writing, software
1597
+ * distributed under the License is distributed on an "AS IS" BASIS,
1598
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1599
+ * See the License for the specific language governing permissions and
1600
+ * limitations under the License.
1601
+ **/
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+
1611
+ const PaymentComponent = ({
1612
+ isActive,
1613
+ userProfile,
1614
+ reservation,
1615
+ payTicket,
1616
+ providerKey,
1617
+ provider,
1618
+ stripeOptions,
1619
+ timestamp
1620
+ }) => {
1621
+ const [ref, {
1622
+ height
1623
+ }] = (0,external_react_use_namespaceObject.useMeasure)();
1624
+ const toggleAnimation = (0,external_react_spring_namespaceObject.useSpring)({
1625
+ config: payment_objectSpread({
1626
+ bounce: 0
1627
+ }, external_react_spring_namespaceObject.config.stiff),
1628
+ from: {
1629
+ opacity: 0,
1630
+ height: 0
1631
+ },
1632
+ to: {
1633
+ opacity: 1,
1634
+ height: isActive ? height + 10 : 0,
1635
+ marginBottom: isActive ? 5 : 0
1636
+ }
1637
+ });
1638
+ return /*#__PURE__*/external_react_default().createElement("div", {
1639
+ className: `${payment_index_module.outerWrapper} step-wrapper`
1640
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
1641
+ className: `${payment_index_module.innerWrapper}`
1642
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1643
+ className: payment_index_module.title
1644
+ }, /*#__PURE__*/external_react_default().createElement("span", null, "Payment")), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
1645
+ style: payment_objectSpread({
1646
+ overflow: `${isActive ? '' : 'hidden'}`
1647
+ }, toggleAnimation)
1648
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1649
+ ref: ref
1650
+ }, provider === 'Stripe' && /*#__PURE__*/external_react_default().createElement(stripe_component, {
1651
+ provider: provider,
1652
+ providerKey: providerKey,
1653
+ reservation: reservation,
1654
+ payTicket: payTicket,
1655
+ userProfile: userProfile,
1656
+ stripeOptions: stripeOptions
1657
+ }), provider === 'LawPay' && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement(external_react_helmet_namespaceObject.Helmet, null, /*#__PURE__*/external_react_default().createElement("script", {
1658
+ src: "https://cdn.affinipay.com/hostedfields/1.1.1/fieldGen_1.1.1.js"
1659
+ })), /*#__PURE__*/external_react_default().createElement(lawpay_form, {
1660
+ provider: provider,
1661
+ reservation: reservation,
1662
+ payTicket: payTicket,
1663
+ userProfile: userProfile,
1664
+ providerKey: providerKey,
1665
+ timestamp: timestamp
1666
+ })))))));
1667
+ };
1668
+
1669
+ /* harmony default export */ const payment = (PaymentComponent);
1670
+ ;// CONCATENATED MODULE: external "react-tooltip"
1671
+ const external_react_tooltip_namespaceObject = require("react-tooltip");
1672
+ var external_react_tooltip_default = /*#__PURE__*/__webpack_require__.n(external_react_tooltip_namespaceObject);
1673
+ ;// CONCATENATED MODULE: ./src/helpers/capitalizeFirstLetter.js
1674
+ const capitalizeFirstLetter = string => string.charAt(0).toUpperCase() + string.slice(1);
1675
+ ;// CONCATENATED MODULE: ./src/helpers/formatErrorMessage.js
1676
+
1677
+ const formatErrorMessage = string => {
1678
+ const errorMessage = capitalizeFirstLetter(string);
1679
+ return `${errorMessage}${errorMessage.endsWith('.') ? '' : '.'}`;
1680
+ };
1681
+ ;// CONCATENATED MODULE: ./src/components/personal-information/index.module.scss
1682
+ // extracted by mini-css-extract-plugin
1683
+ /* harmony default export */ const personal_information_index_module = ({"title":"title___ECoNz","form":"form___lDFka","fieldWrapper":"fieldWrapper___Mi_nL","inputWrapper":"inputWrapper___PEQFR","readOnly":"readOnly___WRazF","fieldError":"fieldError___ksJVe","companies":"companies___kmGFB","moreInfo":"moreInfo___cQYdZ","moreInfoTooltip":"moreInfoTooltip___lslgT","ticketQuantityNotice":"ticketQuantityNotice___L6gis","formErrors":"formErrors___dQQMe"});
1684
+ ;// CONCATENATED MODULE: ./src/components/personal-information/index.js
1685
+ function personal_information_extends() { personal_information_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return personal_information_extends.apply(this, arguments); }
1686
+
1687
+ function personal_information_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1688
+
1689
+ function personal_information_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? personal_information_ownKeys(Object(source), !0).forEach(function (key) { personal_information_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : personal_information_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1690
+
1691
+ function personal_information_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1692
+
1693
+ /**
1694
+ * Copyright 2020 OpenStack Foundation
1695
+ * Licensed under the Apache License, Version 2.0 (the "License");
1696
+ * you may not use this file except in compliance with the License.
1697
+ * You may obtain a copy of the License at
1698
+ * http://www.apache.org/licenses/LICENSE-2.0
1699
+ * Unless required by applicable law or agreed to in writing, software
1700
+ * distributed under the License is distributed on an "AS IS" BASIS,
1701
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1702
+ * See the License for the specific language governing permissions and
1703
+ * limitations under the License.
1704
+ **/
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+ const PersonalInfoComponent = ({
1715
+ isActive,
1716
+ changeForm,
1717
+ reservation,
1718
+ userProfile,
1719
+ summitId,
1720
+ handleCompanyError,
1721
+ formValues,
1722
+ formErrors,
1723
+ showMultipleTicketTexts
1724
+ }) => {
1725
+ var _errors$email, _errors$email2;
1726
+
1727
+ const [personalInfo, setPersonalInfo] = (0,external_react_namespaceObject.useState)({
1728
+ firstName: userProfile.given_name || '',
1729
+ lastName: userProfile.family_name || '',
1730
+ email: userProfile.email || '',
1731
+ company: {
1732
+ id: null,
1733
+ name: ''
1734
+ },
1735
+ promoCode: ''
1736
+ });
1737
+ const [companyError, setCompanyError] = (0,external_react_namespaceObject.useState)(false);
1738
+ const {
1739
+ register,
1740
+ handleSubmit,
1741
+ formState: {
1742
+ errors
1743
+ }
1744
+ } = (0,external_react_hook_form_namespaceObject.useForm)();
1745
+ (0,external_react_namespaceObject.useEffect)(() => {
1746
+ if (reservation) {
1747
+ setPersonalInfo({
1748
+ firstName: reservation.owner_first_name ? reservation.owner_first_name : personalInfo.firstName,
1749
+ lastName: reservation.owner_last_name ? reservation.owner_last_name : personalInfo.lastName,
1750
+ email: reservation.owner_email ? reservation.owner_email : personalInfo.email,
1751
+ company: {
1752
+ id: null,
1753
+ name: reservation.owner_company ? reservation.owner_company : personalInfo.company
1754
+ }
1755
+ });
1756
+ }
1757
+ }, []);
1758
+
1759
+ const onCompanyChange = ev => {
1760
+ const newCompany = ev.target.value;
1761
+ setCompanyError(false);
1762
+ setPersonalInfo(personal_information_objectSpread(personal_information_objectSpread({}, personalInfo), {}, {
1763
+ company: newCompany
1764
+ }));
1765
+ };
1766
+
1767
+ const onSubmit = data => {
1768
+ if (!personalInfo.company.name) {
1769
+ setCompanyError(true);
1770
+ return;
1771
+ }
1772
+
1773
+ setPersonalInfo(personal_information_objectSpread(personal_information_objectSpread({}, personalInfo), data));
1774
+ changeForm(personal_information_objectSpread(personal_information_objectSpread({}, personalInfo), data));
1775
+ };
1776
+
1777
+ const [ref, {
1778
+ height
1779
+ }] = (0,external_react_use_namespaceObject.useMeasure)();
1780
+ const toggleAnimation = (0,external_react_spring_namespaceObject.useSpring)({
1781
+ config: personal_information_objectSpread({
1782
+ bounce: 0
1783
+ }, external_react_spring_namespaceObject.config.stiff),
1784
+ from: {
1785
+ opacity: 0,
1786
+ height: 0
1787
+ },
1788
+ to: {
1789
+ opacity: 1,
1790
+ height: isActive ? height + 10 : 0
1791
+ }
1792
+ });
1793
+ const customStyles = {
1794
+ menuList: provided => personal_information_objectSpread(personal_information_objectSpread({}, provided), {}, {
1795
+ maxHeight: 120
1796
+ })
1797
+ };
1798
+ return /*#__PURE__*/external_react_default().createElement("div", {
1799
+ className: `${personal_information_index_module.outerWrapper} step-wrapper`
1800
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
1801
+ className: `${personal_information_index_module.innerWrapper}`
1802
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1803
+ className: personal_information_index_module.title
1804
+ }, /*#__PURE__*/external_react_default().createElement("span", null, "Personal Information"), !isActive && /*#__PURE__*/external_react_default().createElement("div", {
1805
+ "data-testid": "personal-info"
1806
+ }, /*#__PURE__*/external_react_default().createElement("span", null, `${personalInfo.firstName} ${personalInfo.lastName} ${personalInfo.company.name ? `- ${personalInfo.company.name}` : ''}`), /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", null, personalInfo.email))), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
1807
+ style: personal_information_objectSpread({
1808
+ overflow: `${isActive ? '' : 'hidden'}`
1809
+ }, toggleAnimation)
1810
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1811
+ ref: ref
1812
+ }, formValues.ticketQuantity > 1 && /*#__PURE__*/external_react_default().createElement("div", {
1813
+ className: `${personal_information_index_module.ticketQuantityNotice} alert alert-info`
1814
+ }, "Please note that 1 ticket from this order will be automatically assigned to you; the rest will remain unassigned, with the option to re-assign all tickets after purchase."), /*#__PURE__*/external_react_default().createElement("form", {
1815
+ id: "personal-info-form",
1816
+ onSubmit: handleSubmit(onSubmit),
1817
+ className: personal_information_index_module.form,
1818
+ "data-testid": "personal-form"
1819
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1820
+ className: personal_information_index_module.fieldWrapper
1821
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1822
+ className: personal_information_index_module.inputWrapper
1823
+ }, /*#__PURE__*/external_react_default().createElement("input", personal_information_extends({
1824
+ type: "text",
1825
+ placeholder: "First name *",
1826
+ defaultValue: personalInfo.firstName || ''
1827
+ }, register("firstName", {
1828
+ required: true,
1829
+ maxLength: 80
1830
+ }), {
1831
+ "data-testid": "first-name"
1832
+ }))), errors.firstName && /*#__PURE__*/external_react_default().createElement("div", {
1833
+ className: personal_information_index_module.fieldError,
1834
+ "data-testid": "first-name-error"
1835
+ }, "This field is required.")), /*#__PURE__*/external_react_default().createElement("div", {
1836
+ className: personal_information_index_module.fieldWrapper
1837
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1838
+ className: personal_information_index_module.inputWrapper
1839
+ }, /*#__PURE__*/external_react_default().createElement("input", personal_information_extends({
1840
+ type: "text",
1841
+ placeholder: "Last name *",
1842
+ defaultValue: personalInfo.lastName || ''
1843
+ }, register("lastName", {
1844
+ required: true,
1845
+ maxLength: 100
1846
+ }), {
1847
+ "data-testid": "last-name"
1848
+ }))), errors.lastName && /*#__PURE__*/external_react_default().createElement("div", {
1849
+ className: personal_information_index_module.fieldError,
1850
+ "data-testid": "last-name-error"
1851
+ }, "This field is required.")), /*#__PURE__*/external_react_default().createElement("div", {
1852
+ className: personal_information_index_module.fieldWrapper
1853
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1854
+ className: personal_information_index_module.inputWrapper
1855
+ }, /*#__PURE__*/external_react_default().createElement("input", personal_information_extends({
1856
+ type: "text",
1857
+ placeholder: "Email *",
1858
+ className: personal_information_index_module.readOnly,
1859
+ readOnly: true,
1860
+ defaultValue: personalInfo.email || ''
1861
+ }, register("email", {
1862
+ required: true,
1863
+ pattern: /^\S+@\S+$/i
1864
+ }), {
1865
+ "data-testid": "email"
1866
+ }))), ((_errors$email = errors.email) === null || _errors$email === void 0 ? void 0 : _errors$email.type) === 'required' && /*#__PURE__*/external_react_default().createElement("div", {
1867
+ className: personal_information_index_module.fieldError,
1868
+ "data-testid": "email-error-required"
1869
+ }, "This field is required."), ((_errors$email2 = errors.email) === null || _errors$email2 === void 0 ? void 0 : _errors$email2.type) === 'pattern' && /*#__PURE__*/external_react_default().createElement("div", {
1870
+ className: personal_information_index_module.fieldError,
1871
+ "data-testid": "email-error-invalid"
1872
+ }, "The email is invalid.")), /*#__PURE__*/external_react_default().createElement("div", {
1873
+ className: personal_information_index_module.fieldWrapper
1874
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1875
+ className: personal_information_index_module.companies
1876
+ }, /*#__PURE__*/external_react_default().createElement(components_namespaceObject.RegistrationCompanyInput, {
1877
+ id: "company",
1878
+ styles: customStyles,
1879
+ summitId: summitId,
1880
+ onChange: onCompanyChange,
1881
+ onError: handleCompanyError,
1882
+ value: personalInfo.company
1883
+ }), companyError && /*#__PURE__*/external_react_default().createElement("div", {
1884
+ className: personal_information_index_module.fieldError,
1885
+ "data-testid": "company-error"
1886
+ }, "This field is required."))), /*#__PURE__*/external_react_default().createElement("div", {
1887
+ className: personal_information_index_module.fieldWrapper
1888
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1889
+ className: personal_information_index_module.inputWrapper
1890
+ }, /*#__PURE__*/external_react_default().createElement("input", personal_information_extends({
1891
+ type: "text",
1892
+ placeholder: "Promo Code"
1893
+ }, register("promoCode")))))), showMultipleTicketTexts && /*#__PURE__*/external_react_default().createElement("a", {
1894
+ className: personal_information_index_module.moreInfo,
1895
+ "data-tip": true,
1896
+ "data-for": "promo-code-info"
1897
+ }, /*#__PURE__*/external_react_default().createElement("i", {
1898
+ className: "glyphicon glyphicon-info-sign",
1899
+ "aria-hidden": "true"
1900
+ }), ` `, "Have multiple promo codes?"), /*#__PURE__*/external_react_default().createElement((external_react_tooltip_default()), {
1901
+ id: "promo-code-info"
1902
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1903
+ className: personal_information_index_module.moreInfoTooltip
1904
+ }, "Promo code will be applied to all tickets in this order. If you wish to utilize more than one promo code, simply place another order after you complete this registration order. Only one promo code can be applied per order.")), formErrors.length > 0 && /*#__PURE__*/external_react_default().createElement("div", {
1905
+ className: `${personal_information_index_module.formErrors} alert alert-danger`
1906
+ }, formErrors.map((error, index) => /*#__PURE__*/external_react_default().createElement("div", {
1907
+ key: index
1908
+ }, formatErrorMessage(error)))))))));
1909
+ };
1910
+
1911
+ /* harmony default export */ const personal_information = (PersonalInfoComponent);
1912
+ ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components/raw-html"
1913
+ const raw_html_namespaceObject = require("openstack-uicore-foundation/lib/components/raw-html");
1914
+ var raw_html_default = /*#__PURE__*/__webpack_require__.n(raw_html_namespaceObject);
1915
+ ;// CONCATENATED MODULE: ./src/components/ticket-type/index.module.scss
1916
+ // extracted by mini-css-extract-plugin
1917
+ /* harmony default export */ const ticket_type_index_module = ({"title":"title___DNZyl","summary":"summary___quWdZ","crossOut":"crossOut___QZ7dy","discount":"discount___sEK_Q","promo":"promo___F8lPO","form":"form___aoo7w","dropdown":"dropdown____HWg0","quantity":"quantity___SIEQZ","soldOut":"soldOut___Hatfr","moreInfo":"moreInfo___LmwOe","moreInfoTooltip":"moreInfoTooltip___nOBf1","inPersonDisclaimer":"inPersonDisclaimer___PXGTz"});
1918
+ ;// CONCATENATED MODULE: ./src/helpers/getTicketMaxQuantity.js
1919
+ const getTicketMaxQuantity = ticket => ticket ? Math.min((ticket.quantity_2_sell || Number.MAX_SAFE_INTEGER) - ticket.quantity_sold, ticket.max_quantity_per_order || Number.MAX_SAFE_INTEGER) : 0;
1920
+ ;// CONCATENATED MODULE: ./src/components/ticket-dropdown/index.module.scss
1921
+ // extracted by mini-css-extract-plugin
1922
+ /* harmony default export */ const ticket_dropdown_index_module = ({"placeholder":"placeholder___pcdCn","selectedTicket":"selectedTicket___qkbpH","inPersonDisclaimer":"inPersonDisclaimer___z_DzO","dropdown":"dropdown___mfbPG","soldOut":"soldOut___rBLC0"});
1923
+ ;// CONCATENATED MODULE: ./src/components/ticket-dropdown/index.js
1924
+ /**
1925
+ * Copyright 2020 OpenStack Foundation
1926
+ * Licensed under the Apache License, Version 2.0 (the "License");
1927
+ * you may not use this file except in compliance with the License.
1928
+ * You may obtain a copy of the License at
1929
+ * http://www.apache.org/licenses/LICENSE-2.0
1930
+ * Unless required by applicable law or agreed to in writing, software
1931
+ * distributed under the License is distributed on an "AS IS" BASIS,
1932
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1933
+ * See the License for the specific language governing permissions and
1934
+ * limitations under the License.
1935
+ **/
1936
+
1937
+
1938
+
1939
+
1940
+
1941
+ const TicketDropdownComponent = ({
1942
+ selectedTicket,
1943
+ ticketTypes,
1944
+ onTicketSelect
1945
+ }) => {
1946
+ const [active, setActive] = (0,external_react_namespaceObject.useState)(false);
1947
+
1948
+ const ticketSelect = ticket => {
1949
+ onTicketSelect(ticket);
1950
+ setActive(!active);
1951
+ };
1952
+
1953
+ const date = new Date();
1954
+ let now_utc = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()) / 1000;
1955
+ return /*#__PURE__*/external_react_default().createElement("div", {
1956
+ className: `${ticket_dropdown_index_module.outerWrapper}`
1957
+ }, /*#__PURE__*/external_react_default().createElement("div", {
1958
+ className: ticket_dropdown_index_module.placeholder,
1959
+ onClick: () => setActive(!active),
1960
+ "data-testid": "ticket-dropdown"
1961
+ }, selectedTicket ? /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", {
1962
+ className: ticket_dropdown_index_module.selectedTicket,
1963
+ "data-testid": "selected-ticket"
1964
+ }, `${selectedTicket.name} - $${selectedTicket.cost} ${selectedTicket.currency}`), /*#__PURE__*/external_react_default().createElement("i", {
1965
+ className: "fa fa-chevron-down"
1966
+ })) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", {
1967
+ "data-testid": "no-ticket"
1968
+ }, "Select a ticket"), /*#__PURE__*/external_react_default().createElement("i", {
1969
+ className: "fa fa-chevron-down"
1970
+ }))), active && /*#__PURE__*/external_react_default().createElement("div", {
1971
+ className: ticket_dropdown_index_module.dropdown,
1972
+ "data-testid": "ticket-list"
1973
+ }, ticketTypes.map(t => {
1974
+ const maxQuantity = getTicketMaxQuantity(t);
1975
+ const isTicketSoldOut = maxQuantity < 1;
1976
+
1977
+ if (t.sales_start_date === null && t.sales_end_date === null || now_utc >= t.sales_start_date && now_utc <= t.sales_end_date) {
1978
+ return /*#__PURE__*/external_react_default().createElement("div", {
1979
+ key: t.id,
1980
+ className: isTicketSoldOut ? ticket_dropdown_index_module.soldOut : '',
1981
+ onClick: () => {
1982
+ if (isTicketSoldOut) return;
1983
+ ticketSelect(t);
1984
+ }
1985
+ }, t.name, " -", ` `, !isTicketSoldOut && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "$", t.cost, " ", t.currency), isTicketSoldOut && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "Sold Out"));
1986
+ }
1987
+ })));
1988
+ };
1989
+
1990
+ /* harmony default export */ const ticket_dropdown = (TicketDropdownComponent);
1991
+ ;// CONCATENATED MODULE: ./src/helpers/formatCurrency.js
1992
+ const _excluded = ["locale"];
1993
+
1994
+ function formatCurrency_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1995
+
1996
+ function formatCurrency_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? formatCurrency_ownKeys(Object(source), !0).forEach(function (key) { formatCurrency_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : formatCurrency_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1997
+
1998
+ function formatCurrency_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1999
+
2000
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
2001
+
2002
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
2003
+
2004
+ const formatCurrency = (value, _ref) => {
2005
+ let {
2006
+ locale = 'en-US'
2007
+ } = _ref,
2008
+ options = _objectWithoutProperties(_ref, _excluded);
2009
+
2010
+ const defaultOptions = {
2011
+ currency: 'USD',
2012
+ minimumFractionDigits: 0,
2013
+ maximumFractionDigits: 0
2014
+ };
2015
+ const formatter = new Intl.NumberFormat(locale, formatCurrency_objectSpread(formatCurrency_objectSpread({
2016
+ style: 'currency'
2017
+ }, defaultOptions), options));
2018
+ return formatter.format(value);
2019
+ };
2020
+ ;// CONCATENATED MODULE: ./src/components/ticket-type/index.js
2021
+ function ticket_type_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2022
+
2023
+ function ticket_type_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ticket_type_ownKeys(Object(source), !0).forEach(function (key) { ticket_type_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ticket_type_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2024
+
2025
+ function ticket_type_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2026
+
2027
+ /**
2028
+ * Copyright 2020 OpenStack Foundation
2029
+ * Licensed under the Apache License, Version 2.0 (the "License");
2030
+ * you may not use this file except in compliance with the License.
2031
+ * You may obtain a copy of the License at
2032
+ * http://www.apache.org/licenses/LICENSE-2.0
2033
+ * Unless required by applicable law or agreed to in writing, software
2034
+ * distributed under the License is distributed on an "AS IS" BASIS,
2035
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2036
+ * See the License for the specific language governing permissions and
2037
+ * limitations under the License.
2038
+ **/
2039
+
2040
+
2041
+
2042
+
2043
+
2044
+
2045
+
2046
+
2047
+
2048
+
2049
+
2050
+ const TicketTypeComponent = ({
2051
+ ticketTypes,
2052
+ isActive,
2053
+ changeForm,
2054
+ reservation,
2055
+ inPersonDisclaimer,
2056
+ showMultipleTicketTexts
2057
+ }) => {
2058
+ const [ticket, setTicket] = (0,external_react_namespaceObject.useState)(null);
2059
+ const [quantity, setQuantity] = (0,external_react_namespaceObject.useState)(1);
2060
+ const minQuantity = 1;
2061
+ const maxQuantity = getTicketMaxQuantity(ticket);
2062
+ const [ref, {
2063
+ height
2064
+ }] = (0,external_react_use_namespaceObject.useMeasure)();
2065
+ const toggleAnimation = (0,external_react_spring_namespaceObject.useSpring)({
2066
+ config: ticket_type_objectSpread({
2067
+ bounce: 0
2068
+ }, external_react_spring_namespaceObject.config.stiff),
2069
+ from: {
2070
+ opacity: 0,
2071
+ height: 0
2072
+ },
2073
+ to: {
2074
+ opacity: 1,
2075
+ height: isActive ? height + 10 : 0
2076
+ }
2077
+ });
2078
+ (0,external_react_namespaceObject.useEffect)(() => {
2079
+ var _reservation$tickets;
2080
+
2081
+ if (reservation && ((_reservation$tickets = reservation.tickets) === null || _reservation$tickets === void 0 ? void 0 : _reservation$tickets.length) > 0) {
2082
+ setTicket(ticketTypes.find(t => t.id === reservation.tickets[0].ticket_type_id));
2083
+ }
2084
+ }, []);
2085
+ (0,external_react_namespaceObject.useEffect)(() => {
2086
+ changeForm({
2087
+ ticketType: ticket,
2088
+ ticketQuantity: quantity
2089
+ });
2090
+ }, [ticket, quantity]);
2091
+
2092
+ const handleTicketChange = t => {
2093
+ setTicket(t);
2094
+ setQuantity(minQuantity);
2095
+ };
2096
+
2097
+ const incrementQuantity = () => setQuantity(quantity + 1);
2098
+
2099
+ const decrementQuantity = () => setQuantity(quantity - 1);
2100
+
2101
+ return /*#__PURE__*/external_react_default().createElement("div", {
2102
+ className: `${ticket_type_index_module.outerWrapper} step-wrapper`
2103
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
2104
+ className: ticket_type_index_module.innerWrapper
2105
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2106
+ className: ticket_type_index_module.title
2107
+ }, /*#__PURE__*/external_react_default().createElement("span", null, "Ticket"), /*#__PURE__*/external_react_default().createElement("div", {
2108
+ className: ticket_type_index_module.summary
2109
+ }, /*#__PURE__*/external_react_default().createElement("span", null, ticket && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, ticket.name, ` `, "(", quantity, "):", ` `, !isActive && (reservation === null || reservation === void 0 ? void 0 : reservation.discount_amount) > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", {
2110
+ className: ticket_type_index_module.crossOut
2111
+ }, formatCurrency(ticket.cost * quantity, {
2112
+ currency: ticket.currency
2113
+ })), ` `, /*#__PURE__*/external_react_default().createElement("span", {
2114
+ className: ticket_type_index_module.discount
2115
+ }, formatCurrency(reservation.raw_amount - reservation.discount_amount, {
2116
+ currency: ticket.currency
2117
+ })), ` `), !(reservation !== null && reservation !== void 0 && reservation.discount_amount) && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, formatCurrency(ticket.cost * quantity, {
2118
+ currency: ticket.currency
2119
+ }), ` `), ticket.currency, !isActive && (reservation === null || reservation === void 0 ? void 0 : reservation.discount_amount) > 0 && /*#__PURE__*/external_react_default().createElement("span", {
2120
+ className: ticket_type_index_module.promo
2121
+ }, "Promo code applied"), !isActive && (reservation === null || reservation === void 0 ? void 0 : reservation.taxes_amount) > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("br", null), "Taxes: $", reservation === null || reservation === void 0 ? void 0 : reservation.taxes_amount, " ", ticket === null || ticket === void 0 ? void 0 : ticket.currency)), !ticket && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "No ticket selected")))), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
2122
+ style: ticket_type_objectSpread({
2123
+ overflow: 'hidden'
2124
+ }, toggleAnimation)
2125
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2126
+ ref: ref
2127
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2128
+ className: ticket_type_index_module.form
2129
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2130
+ className: ticket_type_index_module.dropdown
2131
+ }, /*#__PURE__*/external_react_default().createElement(ticket_dropdown, {
2132
+ selectedTicket: ticket,
2133
+ ticketTypes: ticketTypes,
2134
+ onTicketSelect: handleTicketChange
2135
+ })), ticket && /*#__PURE__*/external_react_default().createElement("div", {
2136
+ className: ticket_type_index_module.quantity
2137
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2138
+ className: "input-group"
2139
+ }, /*#__PURE__*/external_react_default().createElement("span", {
2140
+ className: "input-group-btn"
2141
+ }, /*#__PURE__*/external_react_default().createElement("button", {
2142
+ "aria-label": "remove a ticket",
2143
+ className: "btn btn-default",
2144
+ onClick: decrementQuantity,
2145
+ disabled: maxQuantity === 0 || quantity === minQuantity
2146
+ }, /*#__PURE__*/external_react_default().createElement("i", {
2147
+ className: "fa fa-minus"
2148
+ }))), /*#__PURE__*/external_react_default().createElement("input", {
2149
+ className: "form-control",
2150
+ "aria-label": "ticket quanity",
2151
+ name: "ticket_quantity",
2152
+ type: "text",
2153
+ value: quantity,
2154
+ readOnly: true,
2155
+ disabled: maxQuantity === 0
2156
+ }), /*#__PURE__*/external_react_default().createElement("span", {
2157
+ className: "input-group-btn"
2158
+ }, /*#__PURE__*/external_react_default().createElement("button", {
2159
+ "aria-label": "add a ticket",
2160
+ className: "btn btn-default",
2161
+ onClick: incrementQuantity,
2162
+ disabled: maxQuantity === 0 || quantity >= maxQuantity
2163
+ }, /*#__PURE__*/external_react_default().createElement("i", {
2164
+ className: "glyphicon glyphicon-plus"
2165
+ })))))), showMultipleTicketTexts && /*#__PURE__*/external_react_default().createElement("a", {
2166
+ className: ticket_type_index_module.moreInfo,
2167
+ "data-tip": true,
2168
+ "data-for": "ticket-quantity-info"
2169
+ }, /*#__PURE__*/external_react_default().createElement("i", {
2170
+ className: "glyphicon glyphicon-info-sign",
2171
+ "aria-hidden": "true"
2172
+ }), ` `, "Need multiple ticket types?"), /*#__PURE__*/external_react_default().createElement((external_react_tooltip_default()), {
2173
+ id: "ticket-quantity-info"
2174
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2175
+ className: ticket_type_index_module.moreInfoTooltip
2176
+ }, "To purchase more than one ticket type, simply place another order after this registration order is complete. Only one ticket type can be chosen per order.")))), inPersonDisclaimer && ticket && isInPersonTicketType(ticket) && /*#__PURE__*/external_react_default().createElement("div", {
2177
+ className: ticket_type_index_module.inPersonDisclaimer
2178
+ }, /*#__PURE__*/external_react_default().createElement((raw_html_default()), null, inPersonDisclaimer)))));
2179
+ };
2180
+
2181
+ /* harmony default export */ const ticket_type = (TicketTypeComponent);
2182
+ ;// CONCATENATED MODULE: ./src/components/button-bar/index.module.scss
2183
+ // extracted by mini-css-extract-plugin
2184
+ /* harmony default export */ const button_bar_index_module = ({"button":"button___MZBIY","outerWrapper":"outerWrapper___XRnaq","innerWrapper":"innerWrapper___LFsOH","registration":"registration___jdf6T","actions":"actions___Gsf0y"});
2185
+ ;// CONCATENATED MODULE: ./src/components/button-bar/index.js
2186
+ /**
2187
+ * Copyright 2020 OpenStack Foundation
2188
+ * Licensed under the Apache License, Version 2.0 (the "License");
2189
+ * you may not use this file except in compliance with the License.
2190
+ * You may obtain a copy of the License at
2191
+ * http://www.apache.org/licenses/LICENSE-2.0
2192
+ * Unless required by applicable law or agreed to in writing, software
2193
+ * distributed under the License is distributed on an "AS IS" BASIS,
2194
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2195
+ * See the License for the specific language governing permissions and
2196
+ * limitations under the License.
2197
+ **/
2198
+
2199
+
2200
+
2201
+
2202
+ const ButtonBarComponent = ({
2203
+ step,
2204
+ changeStep,
2205
+ formValues,
2206
+ removeReservedTicket,
2207
+ inPersonDisclaimer
2208
+ }) => {
2209
+ const {
2210
+ ticketType
2211
+ } = formValues || {};
2212
+ const nextButtonText = inPersonDisclaimer && ticketType && isInPersonTicketType(ticketType) ? 'Accept' : 'Next';
2213
+ return /*#__PURE__*/external_react_default().createElement("div", {
2214
+ className: `${button_bar_index_module.outerWrapper}`
2215
+ }, step !== 3 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
2216
+ className: `${button_bar_index_module.innerWrapper}`
2217
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2218
+ className: button_bar_index_module.required
2219
+ }, step !== 0 && /*#__PURE__*/external_react_default().createElement("span", null, "* Required fields ", /*#__PURE__*/external_react_default().createElement("br", null), " ")), /*#__PURE__*/external_react_default().createElement("div", {
2220
+ className: button_bar_index_module.actions
2221
+ }, step !== 0 && step !== 2 && /*#__PURE__*/external_react_default().createElement("button", {
2222
+ className: `${button_bar_index_module.button} button`,
2223
+ onClick: () => changeStep(step - 1)
2224
+ }, "< Back"), step !== 0 && step === 2 && /*#__PURE__*/external_react_default().createElement("button", {
2225
+ className: `${button_bar_index_module.button} button`,
2226
+ onClick: () => removeReservedTicket()
2227
+ }, "< Back"), step === 0 && /*#__PURE__*/external_react_default().createElement("button", {
2228
+ disabled: !ticketType,
2229
+ className: `${button_bar_index_module.button} button`,
2230
+ onClick: () => changeStep(step + 1)
2231
+ }, nextButtonText), step === 1 && (ticketType === null || ticketType === void 0 ? void 0 : ticketType.cost) === 0 && /*#__PURE__*/external_react_default().createElement("button", {
2232
+ className: `${button_bar_index_module.button} button`,
2233
+ type: "submit",
2234
+ form: "personal-info-form"
2235
+ }, "Get Ticket"), step === 1 && (ticketType === null || ticketType === void 0 ? void 0 : ticketType.cost) > 0 && /*#__PURE__*/external_react_default().createElement("button", {
2236
+ className: `${button_bar_index_module.button} button`,
2237
+ type: "submit",
2238
+ form: "personal-info-form"
2239
+ }, "Next"), step === 2 && /*#__PURE__*/external_react_default().createElement("button", {
2240
+ className: `${button_bar_index_module.button} button`,
2241
+ type: "submit",
2242
+ form: "payment-form"
2243
+ }, "Pay Now")))));
2244
+ };
2245
+
2246
+ /* harmony default export */ const button_bar = (ButtonBarComponent);
2247
+ ;// CONCATENATED MODULE: ./src/components/purchase-complete/index.module.scss
2248
+ // extracted by mini-css-extract-plugin
2249
+ /* harmony default export */ const purchase_complete_index_module = ({"button":"button___XMN8a","wrapper":"wrapper___Jd5Xg","circle":"circle___lcN86","complete":"complete___HAHzl","actions":"actions___jJdPX","footer":"footer___FL9TW"});
2250
+ ;// CONCATENATED MODULE: ./src/components/purchase-complete/index.js
2251
+ /**
2252
+ * Copyright 2020 OpenStack Foundation
2253
+ * Licensed under the Apache License, Version 2.0 (the "License");
2254
+ * you may not use this file except in compliance with the License.
2255
+ * You may obtain a copy of the License at
2256
+ * http://www.apache.org/licenses/LICENSE-2.0
2257
+ * Unless required by applicable law or agreed to in writing, software
2258
+ * distributed under the License is distributed on an "AS IS" BASIS,
2259
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2260
+ * See the License for the specific language governing permissions and
2261
+ * limitations under the License.
2262
+ **/
2263
+
2264
+
2265
+
2266
+
2267
+ const PurchaseComplete = ({
2268
+ checkout,
2269
+ onPurchaseComplete,
2270
+ goToExtraQuestions,
2271
+ goToEvent,
2272
+ summit,
2273
+ supportEmail = "support@fntech.com"
2274
+ }) => {
2275
+ (0,external_react_namespaceObject.useEffect)(() => {
2276
+ onPurchaseComplete(checkout);
2277
+ }, []);
2278
+ const date = new Date();
2279
+ let now_utc = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()) / 1000;
2280
+ const isActive = summit.start_date < now_utc && summit.end_date > now_utc;
2281
+ const startDateFormatted = {
2282
+ date: (0,methods_namespaceObject.epochToMomentTimeZone)(summit.start_date, summit.time_zone_id).format('MMMM D'),
2283
+ time: (0,methods_namespaceObject.epochToMomentTimeZone)(summit.start_date, summit.time_zone_id).format('hh:mm A')
2284
+ };
2285
+
2286
+ const needExtraQuestions = () => {
2287
+ return summit.order_extra_questions.some(q => q.mandatory === true) ? true : false;
2288
+ };
2289
+
2290
+ return /*#__PURE__*/external_react_default().createElement("div", {
2291
+ className: purchase_complete_index_module.wrapper
2292
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2293
+ className: purchase_complete_index_module.circle
2294
+ }, /*#__PURE__*/external_react_default().createElement("i", {
2295
+ className: "fa fa-ticket"
2296
+ })), /*#__PURE__*/external_react_default().createElement("span", {
2297
+ className: purchase_complete_index_module.complete
2298
+ }, "Your order is complete"), isActive ? needExtraQuestions() ? /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", null, "This ticket requires additional details. ", /*#__PURE__*/external_react_default().createElement("br", null)), /*#__PURE__*/external_react_default().createElement("button", {
2299
+ className: `${purchase_complete_index_module.button} button`,
2300
+ onClick: () => goToExtraQuestions()
2301
+ }, "Finish now")) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("button", {
2302
+ className: `${purchase_complete_index_module.button} button`,
2303
+ onClick: () => goToEvent()
2304
+ }, "Access event now")) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", null, "The event will start on ", startDateFormatted.date, " at ", startDateFormatted.time, " ", summit.time_zone_label, " ", /*#__PURE__*/external_react_default().createElement("br", null), "This ticket requires additional details."), /*#__PURE__*/external_react_default().createElement("div", {
2305
+ className: purchase_complete_index_module.actions
2306
+ }, /*#__PURE__*/external_react_default().createElement("button", {
2307
+ className: `${purchase_complete_index_module.button} button`,
2308
+ onClick: () => goToExtraQuestions()
2309
+ }, "Finish Now"))), /*#__PURE__*/external_react_default().createElement("span", {
2310
+ className: purchase_complete_index_module.footer
2311
+ }, "For further assistance, please email ", /*#__PURE__*/external_react_default().createElement("a", {
2312
+ href: `mailto:${supportEmail}`
2313
+ }, supportEmail)));
2314
+ };
2315
+
2316
+ /* harmony default export */ const purchase_complete = (PurchaseComplete);
2317
+ ;// CONCATENATED MODULE: external "react-otp-input"
2318
+ const external_react_otp_input_namespaceObject = require("react-otp-input");
2319
+ var external_react_otp_input_default = /*#__PURE__*/__webpack_require__.n(external_react_otp_input_namespaceObject);
2320
+ ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.module.scss
2321
+ // extracted by mini-css-extract-plugin
2322
+ /* harmony default export */ const login_passwordless_index_module = ({"passwordlessWrapper":"passwordlessWrapper___BRQ_s","innerWrapper":"innerWrapper___nRLDi","logo":"logo___qNVrv","digits":"digits___Vu5iy","codeInput":"codeInput___LnTZe","error":"error___wZflZ","verify":"verify___IBgMl","button":"button___nBhtQ","link":"link___f6fDT","resend":"resend___Nma1U"});
2323
+ // EXTERNAL MODULE: ./src/assets/FNid_WHT_logo_rgb.svg
2324
+ var FNid_WHT_logo_rgb = __webpack_require__(802);
2325
+ var FNid_WHT_logo_rgb_default = /*#__PURE__*/__webpack_require__.n(FNid_WHT_logo_rgb);
2326
+ ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.js
2327
+ /**
2328
+ * Copyright 2020 OpenStack Foundation
2329
+ * Licensed under the Apache License, Version 2.0 (the "License");
2330
+ * you may not use this file except in compliance with the License.
2331
+ * You may obtain a copy of the License at
2332
+ * http://www.apache.org/licenses/LICENSE-2.0
2333
+ * Unless required by applicable law or agreed to in writing, software
2334
+ * distributed under the License is distributed on an "AS IS" BASIS,
2335
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2336
+ * See the License for the specific language governing permissions and
2337
+ * limitations under the License.
2338
+ **/
2339
+
2340
+
2341
+
2342
+
2343
+
2344
+
2345
+ const PasswordlessLoginComponent = ({
2346
+ email,
2347
+ codeLength,
2348
+ passwordlessLogin,
2349
+ loginWithCode,
2350
+ codeError,
2351
+ goToLogin,
2352
+ getLoginCode,
2353
+ getPasswordlessCode
2354
+ }) => {
2355
+ const [otpCode, setOtpCode] = (0,external_react_namespaceObject.useState)('');
2356
+ const [otpError, setOtpError] = (0,external_react_namespaceObject.useState)(false);
2357
+
2358
+ const tryPasswordlessLogin = code => {
2359
+ if (code.length === codeLength) {
2360
+ setOtpError(false);
2361
+ passwordlessLogin(otpCode, loginWithCode);
2362
+ } else {
2363
+ setOtpError(true);
2364
+ }
2365
+ };
2366
+
2367
+ const resendCode = () => {
2368
+ getLoginCode(email, getPasswordlessCode);
2369
+ };
2370
+
2371
+ return /*#__PURE__*/external_react_default().createElement("div", {
2372
+ className: `${login_passwordless_index_module.passwordlessWrapper} step-wrapper`
2373
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
2374
+ className: `${login_passwordless_index_module.innerWrapper}`
2375
+ }, /*#__PURE__*/external_react_default().createElement("img", {
2376
+ src: (FNid_WHT_logo_rgb_default()),
2377
+ alt: "FNid",
2378
+ className: login_passwordless_index_module.logo
2379
+ }), /*#__PURE__*/external_react_default().createElement("span", null, "We sent your single-use login code to ", /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
2380
+ "data-testid": "email"
2381
+ }, email), /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
2382
+ className: login_passwordless_index_module.digits,
2383
+ "data-testid": "code-digits"
2384
+ }, "Add the ", codeLength, " digit code below")), /*#__PURE__*/external_react_default().createElement("div", {
2385
+ className: login_passwordless_index_module.codeInput
2386
+ }, /*#__PURE__*/external_react_default().createElement((external_react_otp_input_default()), {
2387
+ value: otpCode,
2388
+ onChange: code => setOtpCode(code),
2389
+ numInputs: codeLength,
2390
+ shouldAutoFocus: true,
2391
+ hasErrored: otpError || codeError,
2392
+ errorStyle: {
2393
+ border: '1px solid #e5424d'
2394
+ },
2395
+ "data-testid": "otp-input"
2396
+ })), codeError && /*#__PURE__*/external_react_default().createElement("span", {
2397
+ className: login_passwordless_index_module.error,
2398
+ "data-testid": "error"
2399
+ }, "The code you entered it's incorrect. ", /*#__PURE__*/external_react_default().createElement("br", null), " Please try again."), /*#__PURE__*/external_react_default().createElement("div", {
2400
+ className: login_passwordless_index_module.verify
2401
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2402
+ className: `${login_passwordless_index_module.button} button`,
2403
+ onClick: () => tryPasswordlessLogin(otpCode),
2404
+ "data-testid": "verify"
2405
+ }, "Verify Email"), /*#__PURE__*/external_react_default().createElement("b", null, "or go back and ", /*#__PURE__*/external_react_default().createElement("span", {
2406
+ className: login_passwordless_index_module.link,
2407
+ onClick: () => goToLogin(),
2408
+ "data-testid": "go-back"
2409
+ }, "try another way")))), /*#__PURE__*/external_react_default().createElement("div", {
2410
+ className: login_passwordless_index_module.resend
2411
+ }, "Didn\u2019t receive it? Check your spam/junk folder, or ", /*#__PURE__*/external_react_default().createElement("span", {
2412
+ className: login_passwordless_index_module.link,
2413
+ onClick: () => resendCode(),
2414
+ "data-testid": "resend"
2415
+ }, "resend email"), " now.")));
2416
+ };
2417
+
2418
+ /* harmony default export */ const login_passwordless = (PasswordlessLoginComponent);
2419
+ ;// CONCATENATED MODULE: ./src/components/ticket-owned/index.module.scss
2420
+ // extracted by mini-css-extract-plugin
2421
+ /* harmony default export */ const ticket_owned_index_module = ({"ticketOwnedWrapper":"ticketOwnedWrapper___nhkDY","alert":"alert___c49oP"});
2422
+ ;// CONCATENATED MODULE: ./src/components/ticket-owned/index.js
2423
+ /**
2424
+ * Copyright 2020 OpenStack Foundation
2425
+ * Licensed under the Apache License, Version 2.0 (the "License");
2426
+ * you may not use this file except in compliance with the License.
2427
+ * You may obtain a copy of the License at
2428
+ * http://www.apache.org/licenses/LICENSE-2.0
2429
+ * Unless required by applicable law or agreed to in writing, software
2430
+ * distributed under the License is distributed on an "AS IS" BASIS,
2431
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2432
+ * See the License for the specific language governing permissions and
2433
+ * limitations under the License.
2434
+ **/
2435
+
2436
+
2437
+
2438
+ const TicketOwnedComponent = ({
2439
+ ownedTickets,
2440
+ ticketTypes
2441
+ }) => {
2442
+ const ownedTicketsString = (0,external_react_namespaceObject.useMemo)(() => ownedTickets.reduce((acc, ownedTicket) => {
2443
+ const ticketType = ticketTypes.find(type => type.id === ownedTicket.type_id);
2444
+ if (!ticketType) return acc;
2445
+ return `${acc}${acc ? ', ' : ''}${ownedTicket.qty} ${ticketType.name}${!ticketType.name.toLowerCase().endsWith('ticket') ? ' ticket' : ''}${ownedTicket.qty > 1 ? 's' : ''}`;
2446
+ }, ''), [ownedTickets, ticketTypes]);
2447
+ return /*#__PURE__*/external_react_default().createElement("div", {
2448
+ className: ticket_owned_index_module.ticketOwnedWrapper
2449
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2450
+ className: `${ticket_owned_index_module.alert} alert alert-warning`,
2451
+ role: "alert"
2452
+ }, "You have already ordered ", ownedTicketsString, ". If you would like to order more tickets, please do so below."));
2453
+ };
2454
+
2455
+ /* harmony default export */ const ticket_owned = (TicketOwnedComponent);
2456
+ ;// CONCATENATED MODULE: ./src/utils/utils.js
2457
+ /**
2458
+ * Copyright 2022 OpenStack Foundation
2459
+ * Licensed under the Apache License, Version 2.0 (the "License");
2460
+ * you may not use this file except in compliance with the License.
2461
+ * You may obtain a copy of the License at
2462
+ * http://www.apache.org/licenses/LICENSE-2.0
2463
+ * Unless required by applicable law or agreed to in writing, software
2464
+ * distributed under the License is distributed on an "AS IS" BASIS,
2465
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2466
+ * See the License for the specific language governing permissions and
2467
+ * limitations under the License.
2468
+ **/
2469
+ const getCurrentProvider = summit => {
2470
+ for (let profile of summit.payment_profiles) {
2471
+ if (profile.application_type === 'Registration') {
2472
+ return {
2473
+ publicKey: profile.test_mode_enabled ? profile.test_publishable_key : profile.live_publishable_key,
2474
+ provider: profile.provider
2475
+ };
2476
+ }
2477
+ }
2478
+
2479
+ return {
2480
+ publicKey: null,
2481
+ provider: ''
2482
+ };
2483
+ };
2484
+ ;// CONCATENATED MODULE: ./src/components/registration-lite.js
2485
+ const registration_lite_excluded = ["loadSession", "setMarketingSettings", "changeStep", "removeReservedTicket", "reserveTicket", "payTicketWithProvider", "onPurchaseComplete", "getTicketTypes", "getTaxesTypes", "getLoginCode", "passwordlessLogin", "goToLogin", "loginOptions", "allowsNativeAuth", "allowsOtpAuth", "reservation", "checkout", "ticketTypes", "taxTypes", "step", "passwordlessCodeSent", "passwordlessEmail", "passwordlessCode", "getPasswordlessCode", "passwordlessCodeError", "loginWithCode", "goToExtraQuestions", "goToEvent", "goToRegistration", "profileData", "summitData", "supportEmail", "ticketOwned", "ownedTickets", "widgetLoading", "loading", "inPersonDisclaimer", "userProfile", "handleCompanyError", "stripeOptions", "showMultipleTicketTexts"];
2486
+
2487
+ function registration_lite_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2488
+
2489
+ function registration_lite_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? registration_lite_ownKeys(Object(source), !0).forEach(function (key) { registration_lite_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : registration_lite_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2490
+
2491
+ function registration_lite_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2492
+
2493
+ function registration_lite_objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = registration_lite_objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
2494
+
2495
+ function registration_lite_objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
2496
+
2497
+ /**
2498
+ * Copyright 2020 OpenStack Foundation
2499
+ * Licensed under the Apache License, Version 2.0 (the "License");
2500
+ * you may not use this file except in compliance with the License.
2501
+ * You may obtain a copy of the License at
2502
+ * http://www.apache.org/licenses/LICENSE-2.0
2503
+ * Unless required by applicable law or agreed to in writing, software
2504
+ * distributed under the License is distributed on an "AS IS" BASIS,
2505
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2506
+ * See the License for the specific language governing permissions and
2507
+ * limitations under the License.
2508
+ **/
2509
+
2510
+
2511
+
2512
+
2513
+
2514
+
2515
+
2516
+
2517
+
2518
+
2519
+
2520
+
2521
+
2522
+
2523
+
2524
+
2525
+
2526
+
2527
+ const RegistrationLite = _ref => {
2528
+ var _formValues$ticketTyp, _formValues$ticketTyp2;
2529
+
2530
+ let {
2531
+ loadSession,
2532
+ setMarketingSettings,
2533
+ changeStep,
2534
+ removeReservedTicket,
2535
+ reserveTicket,
2536
+ payTicketWithProvider,
2537
+ onPurchaseComplete,
2538
+ getTicketTypes,
2539
+ getTaxesTypes,
2540
+ getLoginCode,
2541
+ passwordlessLogin,
2542
+ goToLogin,
2543
+ loginOptions,
2544
+ allowsNativeAuth,
2545
+ allowsOtpAuth,
2546
+ reservation,
2547
+ checkout,
2548
+ ticketTypes,
2549
+ taxTypes,
2550
+ step,
2551
+ passwordlessCodeSent,
2552
+ passwordlessEmail,
2553
+ passwordlessCode,
2554
+ getPasswordlessCode,
2555
+ passwordlessCodeError,
2556
+ loginWithCode,
2557
+ goToExtraQuestions,
2558
+ goToEvent,
2559
+ goToRegistration,
2560
+ profileData,
2561
+ summitData,
2562
+ supportEmail,
2563
+ ticketOwned,
2564
+ ownedTickets,
2565
+ widgetLoading,
2566
+ loading,
2567
+ inPersonDisclaimer,
2568
+ userProfile,
2569
+ handleCompanyError,
2570
+ stripeOptions,
2571
+ showMultipleTicketTexts
2572
+ } = _ref,
2573
+ rest = registration_lite_objectWithoutProperties(_ref, registration_lite_excluded);
2574
+
2575
+ const [registrationForm, setRegistrationForm] = (0,external_react_namespaceObject.useState)({
2576
+ values: {
2577
+ ticketType: null,
2578
+ ticketQuantity: 1,
2579
+ personalInformation: null,
2580
+ paymentInformation: null
2581
+ },
2582
+ errors: []
2583
+ });
2584
+ const {
2585
+ values: formValues,
2586
+ errors: formErrors
2587
+ } = registrationForm;
2588
+
2589
+ const setFormValues = values => setRegistrationForm(registration_lite_objectSpread(registration_lite_objectSpread({}, registrationForm), {}, {
2590
+ values
2591
+ }));
2592
+
2593
+ const setFormErrors = errors => setRegistrationForm(registration_lite_objectSpread(registration_lite_objectSpread({}, registrationForm), {}, {
2594
+ errors
2595
+ }));
2596
+
2597
+ const {
2598
+ publicKey,
2599
+ provider
2600
+ } = getCurrentProvider(summitData);
2601
+ (0,external_react_namespaceObject.useEffect)(() => {
2602
+ loadSession(registration_lite_objectSpread(registration_lite_objectSpread({}, rest), {}, {
2603
+ summitData,
2604
+ profileData
2605
+ }));
2606
+
2607
+ if (!profileData) {
2608
+ changeStep(0);
2609
+ }
2610
+ }, [profileData]);
2611
+ (0,external_react_namespaceObject.useEffect)(() => {
2612
+ if (summitData && profileData) {
2613
+ getTicketTypes(summitData.id).then(() => getTaxesTypes(summitData.id));
2614
+ }
2615
+ }, [summitData, profileData]);
2616
+ (0,external_react_namespaceObject.useEffect)(() => {
2617
+ if (step === 1 && formValues !== null && formValues !== void 0 && formValues.ticketType && formValues !== null && formValues !== void 0 && formValues.personalInformation) {
2618
+ reserveTicket({
2619
+ provider,
2620
+ personalInformation: formValues === null || formValues === void 0 ? void 0 : formValues.personalInformation,
2621
+ ticket: formValues === null || formValues === void 0 ? void 0 : formValues.ticketType,
2622
+ ticketQuantity: formValues === null || formValues === void 0 ? void 0 : formValues.ticketQuantity
2623
+ }, {
2624
+ onError: (err, res) => setFormErrors(res.body.errors)
2625
+ });
2626
+ }
2627
+
2628
+ if (step > 0 && !(formValues !== null && formValues !== void 0 && formValues.ticketType)) {
2629
+ changeStep(0);
2630
+ }
2631
+ }, [formValues]);
2632
+ (0,external_react_namespaceObject.useEffect)(() => {
2633
+ setFormErrors([]);
2634
+ }, [step]);
2635
+ const [ref, {
2636
+ height
2637
+ }] = (0,external_react_use_namespaceObject.useMeasure)();
2638
+ const toggleAnimation = (0,external_react_spring_namespaceObject.useSpring)({
2639
+ config: registration_lite_objectSpread({
2640
+ bounce: 0
2641
+ }, external_react_spring_namespaceObject.config.stiff),
2642
+ to: {
2643
+ opacity: (formValues === null || formValues === void 0 ? void 0 : (_formValues$ticketTyp = formValues.ticketType) === null || _formValues$ticketTyp === void 0 ? void 0 : _formValues$ticketTyp.cost) === 0 ? 0 : 1,
2644
+ height: (formValues === null || formValues === void 0 ? void 0 : (_formValues$ticketTyp2 = formValues.ticketType) === null || _formValues$ticketTyp2 === void 0 ? void 0 : _formValues$ticketTyp2.cost) === 0 ? 0 : height
2645
+ }
2646
+ });
2647
+
2648
+ const handleCloseClick = () => {
2649
+ // Reset the step when closed to avoid unexpected behavior from `useEffect`s w/in other steps.
2650
+ // (i.e., recalling `onPurchaseComplete` after a user completes one order, closes the window, and then reopens the registration widget)
2651
+ changeStep(0);
2652
+ rest.closeWidget();
2653
+ };
2654
+
2655
+ return /*#__PURE__*/external_react_default().createElement("div", {
2656
+ id: `${general_module.modal}`,
2657
+ className: "modal is-active"
2658
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2659
+ className: "modal-background"
2660
+ }), /*#__PURE__*/external_react_default().createElement("div", {
2661
+ className: `${general_module.modalContent} modal-content`
2662
+ }, /*#__PURE__*/external_react_default().createElement((ajaxloader_default()), {
2663
+ relative: true,
2664
+ color: '#ffffff',
2665
+ show: widgetLoading || loading,
2666
+ size: 80
2667
+ }), /*#__PURE__*/external_react_default().createElement("div", {
2668
+ className: `${general_module.outerWrapper} summit-registration-lite`
2669
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2670
+ className: general_module.innerWrapper
2671
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2672
+ className: general_module.title
2673
+ }, /*#__PURE__*/external_react_default().createElement("span", null, summitData.name), /*#__PURE__*/external_react_default().createElement("i", {
2674
+ className: "fa fa-close",
2675
+ "aria-label": "close",
2676
+ onClick: handleCloseClick
2677
+ })), /*#__PURE__*/external_react_default().createElement("div", {
2678
+ className: general_module.stepsWrapper
2679
+ }, !profileData && !passwordlessCodeSent && /*#__PURE__*/external_react_default().createElement(login, {
2680
+ options: loginOptions,
2681
+ allowsNativeAuth: allowsNativeAuth,
2682
+ allowsOtpAuth: allowsOtpAuth,
2683
+ login: provider => rest.authUser(provider),
2684
+ getLoginCode: getLoginCode,
2685
+ getPasswordlessCode: getPasswordlessCode
2686
+ }), !profileData && passwordlessCodeSent && /*#__PURE__*/external_react_default().createElement(login_passwordless, {
2687
+ codeLength: passwordlessCode,
2688
+ email: passwordlessEmail,
2689
+ passwordlessLogin: passwordlessLogin,
2690
+ loginWithCode: loginWithCode,
2691
+ codeError: passwordlessCodeError,
2692
+ goToLogin: goToLogin,
2693
+ getLoginCode: getLoginCode,
2694
+ getPasswordlessCode: getPasswordlessCode
2695
+ }), profileData && step !== 3 && ticketTypes.length > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, ticketOwned && /*#__PURE__*/external_react_default().createElement(ticket_owned, {
2696
+ ownedTickets: ownedTickets,
2697
+ ticketTypes: ticketTypes
2698
+ }), /*#__PURE__*/external_react_default().createElement(ticket_type, {
2699
+ ticketTypes: ticketTypes,
2700
+ inPersonDisclaimer: inPersonDisclaimer,
2701
+ taxTypes: taxTypes,
2702
+ reservation: reservation,
2703
+ isActive: step === 0,
2704
+ changeForm: ticketForm => setFormValues(registration_lite_objectSpread(registration_lite_objectSpread({}, formValues), ticketForm)),
2705
+ showMultipleTicketTexts: showMultipleTicketTexts
2706
+ }), /*#__PURE__*/external_react_default().createElement(personal_information, {
2707
+ isActive: step === 1,
2708
+ reservation: reservation,
2709
+ userProfile: profileData,
2710
+ summitId: summitData.id,
2711
+ changeForm: personalInformation => setFormValues(registration_lite_objectSpread(registration_lite_objectSpread({}, formValues), {}, {
2712
+ personalInformation
2713
+ })),
2714
+ handleCompanyError: handleCompanyError,
2715
+ formValues: formValues,
2716
+ formErrors: formErrors,
2717
+ showMultipleTicketTexts: showMultipleTicketTexts
2718
+ }), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
2719
+ style: registration_lite_objectSpread({}, toggleAnimation)
2720
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2721
+ ref: ref
2722
+ }, /*#__PURE__*/external_react_default().createElement(payment, {
2723
+ isActive: step === 2,
2724
+ reservation: reservation,
2725
+ payTicket: payTicketWithProvider,
2726
+ userProfile: profileData,
2727
+ timestamp: summitData.timestamp,
2728
+ provider: provider,
2729
+ providerKey: publicKey,
2730
+ stripeOptions: stripeOptions
2731
+ })))), profileData && step === 3 && /*#__PURE__*/external_react_default().createElement(purchase_complete, {
2732
+ checkout: checkout,
2733
+ summit: summitData,
2734
+ onPurchaseComplete: onPurchaseComplete,
2735
+ supportEmail: supportEmail,
2736
+ goToEvent: goToEvent,
2737
+ goToExtraQuestions: goToExtraQuestions
2738
+ })), profileData && step !== 3 && /*#__PURE__*/external_react_default().createElement(button_bar, {
2739
+ step: step,
2740
+ inPersonDisclaimer: inPersonDisclaimer,
2741
+ formValues: formValues,
2742
+ removeReservedTicket: removeReservedTicket,
2743
+ changeStep: changeStep
2744
+ })))));
2745
+ };
2746
+
2747
+ const registration_lite_mapStateToProps = ({
2748
+ registrationLiteState
2749
+ }) => ({
2750
+ widgetLoading: registrationLiteState.widgetLoading,
2751
+ reservation: registrationLiteState.reservation,
2752
+ userProfile: registrationLiteState.settings.userProfile,
2753
+ checkout: registrationLiteState.checkout,
2754
+ ticketTypes: registrationLiteState.ticketTypes,
2755
+ taxTypes: registrationLiteState.taxTypes,
2756
+ step: registrationLiteState.step,
2757
+ passwordlessEmail: registrationLiteState.passwordless.email,
2758
+ passwordlessCode: registrationLiteState.passwordless.otp_length,
2759
+ passwordlessCodeSent: registrationLiteState.passwordless.code_sent,
2760
+ passwordlessCodeError: registrationLiteState.passwordless.error
2761
+ });
2762
+
2763
+ RegistrationLite.defaultProps = {
2764
+ showMultipleTicketTexts: true
2765
+ };
2766
+ /* harmony default export */ const registration_lite = ((0,external_react_redux_namespaceObject.connect)(registration_lite_mapStateToProps, {
2767
+ loadSession: loadSession,
2768
+ changeStep: changeStep,
2769
+ reserveTicket: reserveTicket,
2770
+ removeReservedTicket: removeReservedTicket,
2771
+ payTicketWithProvider: payTicketWithProvider,
2772
+ getTicketTypes: getTicketTypes,
2773
+ getTaxesTypes: getTaxesTypes,
2774
+ getLoginCode: getLoginCode,
2775
+ passwordlessLogin: passwordlessLogin,
2776
+ goToLogin: goToLogin
2777
+ })(RegistrationLite));
2778
+ ;// CONCATENATED MODULE: ./src/summit-registration-lite.js
2779
+ /**
2780
+ * Copyright 2017 OpenStack Foundation
2781
+ * Licensed under the Apache License, Version 2.0 (the "License");
2782
+ * you may not use this file except in compliance with the License.
2783
+ * You may obtain a copy of the License at
2784
+ * http://www.apache.org/licenses/LICENSE-2.0
2785
+ * Unless required by applicable law or agreed to in writing, software
2786
+ * distributed under the License is distributed on an "AS IS" BASIS,
2787
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2788
+ * See the License for the specific language governing permissions and
2789
+ * limitations under the License.
2790
+ **/
2791
+
2792
+
2793
+
2794
+
2795
+
2796
+
2797
+ class RegistrationLiteWidget extends (external_react_default()).PureComponent {
2798
+ constructor(props) {
2799
+ super(props);
2800
+ this.store = getStore(props.clientId, props.apiBaseUrl, props.getAccessToken);
2801
+ }
2802
+
2803
+ render() {
2804
+ return /*#__PURE__*/external_react_default().createElement(external_react_redux_namespaceObject.Provider, {
2805
+ store: this.store
2806
+ }, /*#__PURE__*/external_react_default().createElement(react_namespaceObject.PersistGate, {
2807
+ persistor: getPersistor()
2808
+ }, /*#__PURE__*/external_react_default().createElement(registration_lite, this.props)));
2809
+ }
2810
+
2811
+ }
2812
+
2813
+ /* harmony default export */ const summit_registration_lite = (RegistrationLiteWidget);
2814
+ })();
2815
+
2816
+ /******/ return __webpack_exports__;
2817
+ /******/ })()
2818
+ ;
2819
+ });