tf-checkout-react 1.6.5 → 1.6.6
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/tf-checkout-react.cjs.development.js +24 -14
- package/dist/tf-checkout-react.cjs.development.js.map +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
- package/dist/tf-checkout-react.esm.js +24 -14
- package/dist/tf-checkout-react.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/api/common.ts +14 -0
- package/src/components/ticketsContainer/index.tsx +17 -23
- package/src/hooks/useLocalStorageListener.ts +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tf-checkout-react.cjs.production.min.js","sources":["../src/api/publicRequest.ts","../src/utils/setConfigs.ts","../src/utils/getQueryVariable.ts","../src/utils/formikErrorFocus.ts","../src/utils/getDomain.ts","../src/utils/cookies.ts","../src/utils/downloadPDF.tsx","../src/utils/createCheckoutDataBodyWithDefaultHolder.ts","../src/utils/createMarkup.ts","../src/utils/replaceVarInString.ts","../src/utils/isBrowser.ts","../src/utils/form.ts","../src/utils/auth.ts","../src/utils/customFields.ts","../src/utils/jsonUtils.ts","../src/api/interceptors.ts","../src/adapters/customFields.ts","../src/api/auth.ts","../src/api/orders.ts","../src/api/cart.ts","../src/api/checkout.ts","../src/api/common.ts","../src/api/payment.ts","../src/api/resale.ts","../src/api/guestTicketDelegation.ts","../src/api/index.ts","../src/hoc/CustomFields/index.tsx","../src/hooks/usePixel.ts","../src/components/common/SnackbarAlert.tsx","../src/components/common/CustomField.tsx","../src/components/common/PoweredBy.tsx","../src/components/forgotPasswordModal/index.tsx","../src/components/common/ModalComponent/index.tsx","../src/components/idVerificationContainer/VerificationPendingModal.tsx","../src/validators/index.ts","../src/components/loginModal/index.tsx","../src/components/signupModal/index.tsx","../src/utils/showZero.tsx","../src/components/timerWidget/index.tsx","../src/components/common/CheckboxField/index.tsx","../src/components/common/Checkbox.tsx","../src/components/common/PhoneNumberField.tsx","../src/components/common/Loader.tsx","../src/components/common/SelectField/index.tsx","../src/components/common/CopyMessageModal.tsx","../src/components/common/DatePickerField.tsx","../src/components/common/NativeSelectFeild/index.tsx","../src/components/common/RadioGroupField/index.tsx","../src/components/billing-info-container/utils.ts","../src/components/billing-info-container/index.tsx","../src/normalizers/index.ts","../src/utils/adaptStripeErrors.ts","../src/components/confirmModal/index.tsx","../src/components/stripePayment/index.tsx","../src/components/paymentContainer/PaymentPlanSection.tsx","../src/components/paymentContainer/index.tsx","../src/utils/getImage.ts","../src/components/common/socials.tsx","../src/components/confirmationContainer/config.ts","../src/components/confirmationContainer/social-buttons.tsx","../src/utils/isValidNumber.ts","../src/api/preRegistrationComplete.ts","../src/hooks/useCookieListener.ts","../src/components/countdown/index.tsx","../src/components/waitingList/index.tsx","../src/components/ticketsContainer/AccessCodeSection.tsx","../src/components/ticketsContainer/PromoCodeSection.tsx","../src/components/ticketsContainer/ReferralLogic.tsx","../src/components/ticketsContainer/TicketRow.tsx","../src/components/ticketsContainer/utils.ts","../src/components/ticketsContainer/TicketsSection.tsx","../src/components/myTicketsContainer/tableConfig.tsx","../src/components/myTicketsContainer/row.tsx","../src/components/common/RadioField.tsx","../src/components/ticketResaleModal/index.tsx","../src/components/orderDetailsContainer/CustomFieldsForm.tsx","../src/components/orderDetailsContainer/utils/index.tsx","../src/components/orderDetailsContainer/TicketHolderCustomFields.tsx","../src/components/orderDetailsContainer/ticketsTable.tsx","../src/components/resetPasswordContainer/index.tsx","../src/components/addonsContainer/adapters/index.tsx","../src/components/addonsContainer/AddonComponent.tsx","../src/components/addonsContainer/utils/index.tsx","../src/components/loginForm/index.tsx","../src/components/common/FieldSection/utils/index.tsx","../src/components/common/FieldSection/index.tsx","../src/components/registerForm/adapters/index.tsx","../src/components/registerForm/constants.tsx","../src/components/registerForm/index.tsx","../src/components/idVerificationContainer/constants.ts","../src/components/delegationsContainer/IssueTicketForm.tsx","../src/components/delegationsContainer/TicketsAssignedTable.tsx","../src/components/delegationsContainer/TicketsAvailableTable.tsx","../src/components/delegationsContainer/IssueComponent.tsx","../src/components/seatMapContainer/addToCart.ts","../src/components/seatMapContainer/utils.ts","../src/components/seatMapContainer/SeatMapComponent.tsx","../src/components/seatMapContainer/TicketsSection.tsx","../src/components/common/RedirectModal.tsx","../src/components/rsvpContainer/index.tsx","../src/components/preRegistration/constants.tsx","../src/components/preRegistration/utils.ts","../src/components/preRegistration/FieldsSection.tsx","../src/components/preRegistration/index.tsx","../src/components/preRegistration/Prewards.tsx","../src/components/common/CopyField.tsx","../src/components/preRegistration/ShareOptions.tsx","../src/components/preRegistration/PreRegistrationComplete.tsx","../src/components/preRegistration/Influancers.tsx","../src/components/addonsContainer/index.tsx","../src/components/addonsContainer/normalizers/index.ts","../src/components/confirmationContainer/index.tsx","../src/components/delegationsContainer/index.tsx","../src/components/idVerificationContainer/index.tsx","../src/components/myTicketsContainer/index.tsx","../src/components/orderDetailsContainer/index.tsx","../src/constants/index.ts","../src/components/preRegistration/PreRegistrationInformations.tsx","../src/components/seatMapContainer/index.tsx","../src/hooks/useOnline.ts","../src/components/ticketResale/index.tsx","../src/components/ticketsContainer/index.tsx","../src/hooks/useLocalStorageListener.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\n\nconst headers: { [key: string]: string } = {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json',\n}\n\nconst isWindowDefined = typeof window !== 'undefined'\nconst authGuestToken = isWindowDefined ? localStorage.getItem('auth_guest_token') : ''\nif (isWindowDefined && authGuestToken) {\n headers['Authorization-Guest'] = authGuestToken\n}\n\nexport const setAxiosHeader = (key: string, value: string | number) => {\n headers[key] = `${value}`\n}\n\ninterface IPublicRequest extends AxiosInstance {\n setBaseUrl: (baseUrl: string) => void;\n setGuestToken: (guestToken: string) => void;\n}\n\nexport const publicRequest: IPublicRequest = axios.create({\n baseURL: 'https://www.ticketfairy.com/api',\n headers,\n}) as IPublicRequest\n\npublicRequest.setBaseUrl = (baseUrl: string) =>\n (publicRequest.defaults.baseURL = baseUrl + '/api')\n\npublicRequest.setGuestToken = (guestToken: string) =>\n (publicRequest.defaults.headers.common['Authorization-Guest'] = guestToken)\n\nexport const setBaseUrl = (baseUrl: string) => {\n publicRequest.setBaseUrl(baseUrl)\n}\n","import _forEach from 'lodash/forEach'\n\nimport { publicRequest } from '../api/publicRequest'\n\nexport interface IConfigs {\n BASE_URL: string;\n CLIENT_ID: string;\n CLIENT_SECRET: string;\n STRIPE_PUBLISHABLE_KEY: string;\n X_SOURCE_ORIGIN: string;\n [key: string]: string | number;\n}\n\nexport const CONFIGS: IConfigs = {} as IConfigs\n\nexport const setConfigs = (configs: IConfigs) => {\n _forEach(configs, (value, key) => {\n CONFIGS[key] = value\n })\n\n publicRequest.setBaseUrl(CONFIGS.BASE_URL)\n}\n","export const getQueryVariable = (variable: string) => {\n if (typeof window !== 'undefined') {\n const query = window.location.search.substring(1)\n const vars = query.split('&')\n for (let i = 0; i < vars.length; i++) {\n const pair = vars[i].split('=')\n if (pair[0] === variable) {\n return decodeURIComponent(pair[1])\n }\n }\n }\n return false\n}\n","import { connect, FormikContextType } from 'formik'\nimport { Component } from 'react'\n\ninterface IProps {\n formik: FormikContextType<any>;\n}\n\nclass ErrorFocusInternal extends Component<IProps> {\n public componentDidUpdate(prevProps: IProps) {\n const { isSubmitting, isValidating, errors } = prevProps.formik\n const keys = Object.keys(errors)\n if (keys.length > 0 && isSubmitting && !isValidating) {\n const selector = `[name=\"${keys[0]}\"]`\n const errorElement = document.querySelector(selector) as HTMLElement\n if (errorElement) {\n errorElement.focus()\n }\n }\n }\n\n public render = () => null;\n}\n\nexport const ErrorFocus = connect<{}>(ErrorFocusInternal)\n","export function getDomain(url: string, subdomain?: string): string {\n let updatedUrl: any = url.replace(/(https?:\\/\\/)?(www.)?/i, '')\n\n if (!subdomain) {\n updatedUrl = updatedUrl.split('.')\n\n updatedUrl = updatedUrl.slice(updatedUrl.length - 2).join('.')\n }\n\n if (updatedUrl.indexOf('/') !== -1) {\n return updatedUrl.split('/')[0]\n }\n\n return updatedUrl\n}\n","import { getDomain } from './getDomain'\n\nexport function setCustomCookie(name: string, value: string, days = 5) {\n let expires = ''\n if (days) {\n const date = new Date()\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000)\n expires = '; expires=' + date.toUTCString()\n }\n if (typeof window !== 'undefined') {\n const domain = getDomain(window.location.hostname)\n document.cookie =\n name + '=' + (value || '') + expires + `; path=/; domain=${domain}`\n }\n}\n\nexport function getCookieByName(cname: string) {\n if (typeof window === 'undefined') return ''\n const name = cname + '='\n const ca = document.cookie.split(';')\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) === ' ') {\n c = c.substring(1)\n }\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length)\n }\n }\n return ''\n}\n\nexport function deleteCookieByName(name: string) {\n if (typeof window !== 'undefined') {\n const domain = getDomain(window.location.hostname)\n document.cookie =\n name +\n '=; Path=/' +\n `; domain=${domain}` +\n '; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'\n }\n}\n","import { getCookieByName } from './cookies'\n\nexport const downloadPDF = (pdfUrl: string) => {\n if (typeof window === 'undefined') return\n\n const xtfCookie = getCookieByName('X-TF-ECOMMERCE')\n\n if (!xtfCookie) return\n\n let headers = {}\n\n if (xtfCookie) {\n headers = {\n 'X-TF-ECOMMERCE': xtfCookie,\n }\n }\n\n return fetch(pdfUrl, {\n headers,\n credentials: 'include',\n })\n .then(async response => {\n const blobValue = await response.blob()\n const fileNameHeader = response.headers.get('content-disposition') || ''\n const fileName = fileNameHeader.split('\"')[1]\n return { blobValue, fileName }\n })\n .then(({ blobValue, fileName }) => {\n if (!fileName) {\n throw Error('Something went wrong.')\n }\n const file = new Blob([blobValue], { type: 'application/pdf' })\n const fileURL = URL.createObjectURL(file)\n const link = document.createElement('a')\n link.href = fileURL\n link.setAttribute('download', fileName)\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n })\n .catch(error => error)\n}\n","import _get from 'lodash/get'\n\ntype Type1 = string | number | null | undefined\ninterface ICheckoutBody {\n attributes: {\n [key: string]:\n | Type1\n | Record<string | number, Type1>\n | Array<Type1 | IticketHolder>;\n };\n data_capture?: {\n [key: string]: any;\n };\n}\n\ninterface IticketHolder {\n first_name?: string;\n last_name?: string;\n phone?: string;\n email?: string;\n}\n\ninterface IUserCredentialsValues {\n emailLogged?: string;\n firstNameLogged?: string;\n lastNameLogged?: string;\n}\n\nexport const createCheckoutDataBodyWithDefaultHolder = (\n ticketsQuantity: number,\n logedInValues: Record<string, string | undefined>,\n includeDob = false,\n userCredentials: IUserCredentialsValues = {}\n): ICheckoutBody => {\n const ticket_holders: IticketHolder[] = []\n\n const first_name =\n _get(logedInValues, 'firstName') ||\n _get(logedInValues, 'first_name') ||\n _get(userCredentials, 'firstNameLogged') ||\n ''\n\n const last_name =\n _get(logedInValues, 'lastName') ||\n _get(logedInValues, 'last_name') ||\n _get(userCredentials, 'lastNameLogged') ||\n ''\n const phone = _get(logedInValues, 'phone', '')\n const email =\n _get(logedInValues, 'email') || _get(userCredentials, 'emailLogged') || ''\n\n for (let i = 0; i <= ticketsQuantity - 1; i++) {\n const individualHolder = i\n ? { first_name: '', last_name: '', phone: '', email: '' }\n : { first_name, last_name, phone, email }\n\n ticket_holders.push(individualHolder)\n }\n\n const body: ICheckoutBody = {\n attributes: {\n ...logedInValues,\n email,\n confirm_email: email,\n first_name,\n last_name,\n ticket_holders,\n },\n }\n\n if (includeDob) {\n const holderAgeDate = new Date(_get(logedInValues, 'holderAge', ''))\n body.attributes.dob_day = holderAgeDate.getDate()\n body.attributes.dob_month = holderAgeDate.getMonth() + 1\n body.attributes.dob_year = holderAgeDate.getFullYear()\n }\n\n return body\n}\n","export const createMarkup = (data: string) => ({ __html: data })","export const replaceVarInString = (message = '', varArray: Array<string>) => {\n const re = new RegExp(/\\{.*?\\}/g)\n let index = 0\n return message.replace(re, _ => {\n const value = varArray[index] || ''\n index++\n return value\n })\n}\n","export const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined'\n","import _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\n\nexport const getFormInitialValues = (fieldsSections: IFormFieldsSection[]) => {\n const initialValues: { [key: string]: string | number | boolean } = {}\n const isWindowDefined = typeof window !== 'undefined'\n const userData = JSON.parse(\n isWindowDefined ? window.localStorage.getItem('user_data') || '{}' : '{}'\n ) as IProfileData\n\n _forEach(fieldsSections, item => {\n _forEach(item.fields, fieldItem => {\n switch (fieldItem.name) {\n case 'country':\n case 'numTickets':\n case 'state':\n initialValues[fieldItem.name] = ''\n break\n case 'brandOptIn':\n initialValues[fieldItem.name] = true\n break\n case 'confirmEmail':\n initialValues[fieldItem.name] =\n _get(userData, fieldItem.name) || _get(userData, 'email') || ''\n break\n default:\n initialValues[fieldItem.name] = _get(userData, fieldItem.name) || ''\n break\n }\n })\n })\n\n return initialValues\n}\n","export const setLoggedUserData = (data: IProfileData) => ({\n id: data.id,\n first_name: data.firstName,\n last_name: data.lastName,\n email: data.email,\n confirmEmail: data.email,\n city: data?.city || '',\n country: data?.countryId || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zipCode || '',\n})\n","import _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\n\nimport { IBillingInfoData } from '../types'\n\nexport const getDataWithCustomFields = (\n initialData: IBillingInfoData[],\n ticketHoldersFields: IBillingInfoData,\n customFields: any\n) => {\n // Custom Fields are not specified case\n if (_isEmpty(customFields)) {\n const dataWithCustomFields = { ...initialData }\n const ticketHoldersWithCustomFields = { ...ticketHoldersFields }\n return { dataWithCustomFields, ticketHoldersWithCustomFields }\n }\n\n // Add Custom Fields for Order\n const orderWithCustomFields = {\n groupClassname: 'billing-info-container__customFields',\n groupItems: [...customFields.orderFields],\n }\n const initialDataFields = [...initialData[0].fields]\n\n // Add Custom Fields to penultimate position\n initialDataFields.splice(initialDataFields.length - 1, 0, {\n ...orderWithCustomFields,\n })\n\n const dataWithCustomFields = [\n {\n ...initialData[0],\n fields: initialDataFields,\n },\n ]\n\n // Add Custom Fields for Ticket Holders\n const ticketHoldersFieldsArr = ticketHoldersFields.fields || []\n\n const ticketHoldersCustomFieldsBlueprint = {\n id: ticketHoldersFieldsArr.length + 1,\n customFields: true,\n groupClassname: 'billing-info-container__customFields',\n groupItems: [...customFields.ticketsFields],\n }\n\n const ticketHoldersWithCustomFields = {\n ...ticketHoldersFields,\n fields: _isEmpty(ticketHoldersFieldsArr)\n ? []\n : [...ticketHoldersFieldsArr, ticketHoldersCustomFieldsBlueprint],\n }\n\n return { dataWithCustomFields, ticketHoldersWithCustomFields }\n}\n\nexport const getFieldsKeys = (customFields: any) =>\n _map(customFields, field => field.name)\n","export const isJson = (value: any): boolean => {\n try {\n JSON.parse(value)\n } catch (e) {\n return false\n }\n return true\n}\n","import { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _get from 'lodash/get'\n\nimport { CONFIGS, isBrowser } from '../utils'\nimport { getCookieByName, setCustomCookie } from '../utils/cookies'\nimport { publicRequest } from './publicRequest'\n\npublicRequest.interceptors.request.use((config: AxiosRequestConfig) => {\n const guestToken = isBrowser ? window.localStorage.getItem('auth_guest_token') : null\n if (guestToken) {\n const updatedHeaders = {\n ...config.headers,\n 'Authorization-Guest': guestToken,\n }\n config.headers = updatedHeaders\n }\n\n const xtfCookie = getCookieByName('X-TF-ECOMMERCE')\n if (xtfCookie) {\n const updatedHeaders = {\n ...config.headers,\n 'X-TF-ECOMMERCE': xtfCookie,\n }\n config.headers = updatedHeaders\n }\n\n const additionalCookiesHeaderValue = isBrowser ? document.cookie ?? '' : ''\n if (additionalCookiesHeaderValue !== '') {\n const updatedHeaders = {\n ...config.headers,\n 'Additional-Cookies': additionalCookiesHeaderValue,\n }\n config.headers = updatedHeaders\n }\n\n if (CONFIGS.X_SOURCE_ORIGIN) {\n const updatedHeaders = {\n ...config.headers,\n 'X-Source-Origin': CONFIGS.X_SOURCE_ORIGIN,\n }\n config.headers = updatedHeaders\n }\n\n if (CONFIGS.BASE_URL) {\n config.baseURL = CONFIGS.BASE_URL + '/api'\n }\n\n return config\n})\n\npublicRequest.interceptors.response.use(\n (response: AxiosResponse) => {\n const authGuestToken: string | null = _get(\n response,\n 'headers.authorization-guest',\n ''\n )\n\n if (isBrowser && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n const xtfCookie = _get(response, 'headers.x-tf-ecommerce')\n const url = _get(response, 'config.url')\n const method = _get(response, 'config.method')\n\n if (xtfCookie && !(url === '/auth' && method === 'delete')) {\n setCustomCookie('X-TF-ECOMMERCE', xtfCookie)\n }\n\n return response\n },\n (error: AxiosError) => {\n if (error?.response?.status === 401) {\n if (isBrowser) {\n window.localStorage.removeItem('user_data')\n const errorType = error?.response?.data?.error\n if (errorType === 'invalid_token') {\n window.location.href = '/'\n }\n }\n }\n\n const authGuestToken = _get(error, 'response.headers.authorization-guest')\n if (isBrowser && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n return Promise.reject(error)\n }\n)\n","import _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _map from 'lodash/map'\n\nimport { IGroupItem } from '../types'\n\nexport const optionsAdapter = (options: any) => {\n const adaptedOptions = _map(options, option => ({\n id: option.id,\n label: option.name,\n value: option.value,\n }))\n return adaptedOptions\n}\n\nexport const fieldDataAdapter = (field: IGroupItem) => {\n const {\n name,\n label,\n required,\n description,\n type,\n options,\n ...restValues\n } = field\n\n const adaptedField: IGroupItem = {\n name,\n label,\n required,\n description,\n type,\n className: _get(restValues, 'settings.className', ''),\n value: _get(restValues, 'defaultValue'),\n }\n\n switch (type) {\n case 'textarea':\n adaptedField.type = 'text'\n adaptedField.multiline = true\n break\n case 'radio':\n adaptedField.radios = optionsAdapter(options)\n break\n case 'select_multi':\n adaptedField.isMultiple = true\n adaptedField.options = optionsAdapter(options)\n break\n case 'select':\n adaptedField.type = 'select_multi'\n adaptedField.isMultiple = false\n adaptedField.options = optionsAdapter(options)\n break\n default:\n break\n }\n\n return adaptedField\n}\n\nexport const customFieldsDataAdapter = (data: any) => {\n const adaptedTicketFields: Array<IGroupItem> = []\n const adaptedOrderFields: Array<IGroupItem> = []\n\n _forEach(data, field => {\n const ticketFields = _get(field, 'ticket.group.fields')\n const orderFields = _get(field, 'order.group.fields')\n\n _forEach(ticketFields, ticketField => {\n adaptedTicketFields.push(fieldDataAdapter(ticketField))\n })\n\n _forEach(orderFields, orderField => {\n adaptedOrderFields.push(fieldDataAdapter(orderField))\n })\n })\n\n return { ticketsFields: adaptedTicketFields, orderFields: adaptedOrderFields }\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { CONFIGS } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const authorize = async (\n data: IAuthorizeRequestData\n): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `/auth?clientId=${CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'}`,\n data\n )\n return response.data\n}\n\nexport const signUp = async (data: ISignupRequestData): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.post('auth/signup', { ...data })\n return response.data\n}\n\nexport const register = async (data: FormData): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.post('v1/oauth/register-rn', data)\n return response.data\n}\n\nexport const getProfileData = async (): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> = await publicRequest.get('/customer/profile/')\n return response.data\n}\n\nexport const logout = async (): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.delete('/auth')\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { CONFIGS } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const getOrders = async (\n page: number,\n limit: number,\n eventSlug: string\n): Promise<IOrdersResponse> => {\n const slug = eventSlug || CONFIGS.EVENT_SLUG || ''\n\n const response: AxiosResponse<IOrdersResponse, AxiosRequestConfig> =\n await publicRequest.get(\n `v1/account/orders/?page=${page}&limit=${limit}&filter[event]=${slug}&${\n CONFIGS.BRAND_SLUG\n ? `filter[brand]=${CONFIGS.BRAND_SLUG}&filter[subbrands]=true`\n : ''\n }`\n )\n\n return response.data\n}\n\nexport const getOrderDetails = async (orderId: string): Promise<IOrderResponse> => {\n const response: AxiosResponse<IOrderResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/account/order/${orderId}`)\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { isBrowser } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const addToCart = async (\n id: string | number,\n data: ICartRequestData\n): Promise<ICartResponse> => {\n const response: AxiosResponse<ICartResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `v1/event/${id}/add-to-cart/`,\n { data },\n {\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n },\n }\n )\n return response.data\n}\n\nexport const getCart = async (): Promise<IGetCartResponse> => {\n const response: AxiosResponse<IGetCartResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/cart`)\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from './publicRequest'\n\nexport const postOnCheckout = async (\n data: any,\n freeTicket = false\n): Promise<ICheckoutResponse> => {\n if (freeTicket) {\n delete data.attributes.city\n delete data.attributes.country\n delete data.attributes.state\n delete data.attributes.street_address\n }\n\n const response: AxiosResponse<ICheckoutResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `v1/on-checkout`,\n { data }\n )\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _forEach from 'lodash/forEach'\n\nimport { getQueryVariable, isBrowser } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const getEvent = async (\n id: string | number,\n pk?: string\n): Promise<IEventResponse> => {\n let referralValue = ''\n if (isBrowser) {\n const params = new URL(`${window.location}`)\n const referralId = params.searchParams.get('ttf_r') || ''\n const referral_key = window.localStorage.getItem('referral_key')\n const [, referralIdlocal] = (referral_key || '').split('.')\n referralValue = referralId || referralIdlocal\n }\n\n const response: AxiosResponse<IEventResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${id}`, {\n params: { pk },\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n 'Referrer-Id': isBrowser ? referralValue : '',\n },\n })\n return response.data\n}\n\nexport const getTickets = async (\n eventId: string | number,\n promoCode: string,\n pk?: string\n): Promise<ITicketsAdaptedResponse> => {\n const invitationHash = getQueryVariable('invitation-hash')\n const params = { pk } as Record<string, string | number | undefined>\n\n if (invitationHash) {\n params['invitation-hash'] = invitationHash\n }\n\n const headers = publicRequest.defaults.headers.common\n if (promoCode) {\n headers['Promotion-Event'] = String(eventId)\n headers['Promotion-Code'] = promoCode\n }\n\n const response: AxiosResponse<ITicketsResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/tickets/`, {\n params,\n headers,\n })\n\n const { tickets } = response.data.data.attributes\n const ticketsArr: ITicketData[] = []\n _forEach(tickets, item => {\n ticketsArr.push(item)\n })\n const adaptedResponse: AxiosResponse<ITicketsAdaptedResponse, AxiosRequestConfig> = {\n ...response,\n data: {\n ...response.data,\n data: {\n ...response.data.data,\n attributes: {\n ...response.data.data.attributes,\n tickets: ticketsArr,\n },\n },\n },\n }\n\n return adaptedResponse.data\n}\n\nexport const getCountries = async (): Promise<ICountriesResponse> => {\n const response: AxiosResponse<ICountriesResponse, AxiosRequestConfig> =\n await publicRequest.get('/countries/list')\n return response.data\n}\n\nexport const getStates = async (countryId: string | number): Promise<IStatesResponse> => {\n const response: AxiosResponse<IStatesResponse, AxiosRequestConfig> =\n await publicRequest.get(`/countries/${countryId}/states/`)\n return response.data\n}\n\nexport const sendRSVPInfo = async (\n eventId: number,\n data: { data: IRSVPRequestData }\n): Promise<IRSVPResponse> => {\n const response: AxiosResponse<IRSVPResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${eventId}/send-rsvp-info`, data)\n\n return response.data\n}\n\nexport const addToWaitingList = async (\n id: number,\n data: IWaitingListRequestData\n): Promise<IWaitingListResponse> => {\n const response: AxiosResponse<IWaitingListResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${id}/add_to_waiting_list`, {\n data,\n })\n\n return response.data\n}\n\nexport const postReferralVisits = async (\n eventId: string,\n referralId: string\n): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${eventId}/referrer/`, {\n referrer: `${referralId}`,\n })\n\n return response.data\n}\n\nexport const validatePhoneNumber = async (phone: string): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.get(`/v1/account/validate_phone?phone=${phone}`)\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\n\nimport { isBrowser } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const getPaymentData = async (hash: string): Promise<IPaymentDataResponse> => {\n const response: AxiosResponse<IPaymentDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/order/${hash}/review`, {\n headers: { 'Referer-Url': isBrowser ? document.referrer : '' },\n })\n\n return response.data\n}\n\nexport const handlePaymentSuccess = async (\n orderHash: string\n): Promise<IPaymentSuccessDataResponse> => {\n const response: AxiosResponse<IPaymentSuccessDataResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/order/${orderHash}/success`, undefined, {\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n },\n })\n return response.data\n}\n\nexport const handleFreeSuccess = async (\n orderHash: string\n): Promise<IFreeRegistrationDataResponse> => {\n const response: AxiosResponse<IFreeRegistrationDataResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `v1/order/${orderHash}/complete_free_registration`,\n undefined,\n { headers: { 'Referer-Url': isBrowser ? document.referrer : '' } }\n )\n return response.data\n}\n\nexport const getConfirmationData = async (\n orderHash: string\n): Promise<ICheckoutCompleteDataResponse> => {\n const response: AxiosResponse<ICheckoutCompleteDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/order/${orderHash}/payment/complete`)\n return response.data\n}\n\nexport const getConditions = async (\n eventId: string\n): Promise<IConditionsAdaptedDataResponse> => {\n const response: AxiosResponse<IConditionsDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/conditions`)\n\n const adaptedData: IConditionsAdaptedData[] = _map(\n response.data.data.attributes,\n item => ({\n id: nanoid(),\n text: item,\n checked: false,\n })\n )\n\n const returnData: AxiosResponse<IConditionsAdaptedDataResponse, AxiosRequestConfig> = {\n ...response,\n data: {\n ...response.data,\n data: {\n ...response.data.data,\n attributes: adaptedData,\n },\n },\n }\n\n return returnData.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from './publicRequest'\n\nexport const resaleTicket = async (\n data: FormData,\n hash: string\n): Promise<IResaleTicketResponse> => {\n const response: AxiosResponse<IResaleTicketResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/ticket/${hash}/sell`, data)\n\n return response.data\n}\n\nexport const removeFromResale = async (\n hash: string\n): Promise<IRemoveFromResaleResponse> => {\n const response: AxiosResponse<IRemoveFromResaleResponse, AxiosRequestConfig> =\n await publicRequest.delete(`v1/ticket/${hash}/sell`)\n\n return response.data\n}\n\nexport const processTicket = (hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/process`)\n\nexport const declineInvitation = (hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/decline`)\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from './publicRequest'\n\nexport const getCustomerExistsData = async (\n accessHash: string\n): Promise<ICheckCustomerExistsData> => {\n const response: AxiosResponse<ICheckCustomerExistsData, AxiosRequestConfig> =\n await publicRequest.get(`/v1/delegation-access/${accessHash}/customer-exists`)\n return response.data\n}\n\ninterface IDelegationTicketType {\n delegationMaxQuantity: number | string;\n}\n\ninterface IIssueTicketResponseData {\n delegationName: string;\n eventImage: string;\n eventName: string;\n ticketTypes: {\n [key: number]: IDelegationTicketType;\n };\n}\n\ninterface IIssueTicketResponse {\n data: {\n attributes: IIssueTicketResponseData;\n relationships: Array<any>;\n type: string;\n message: string;\n };\n}\n\nexport interface IDelegationsTicketType {\n [key: number]: {\n delegationMaxQuantity: string | number;\n delegationQuantityIssued: string | number;\n matrixRecordId: string | number;\n optionValue: string | number;\n };\n}\nexport interface IDelegationsData {\n delegationName: string;\n eventImage: string;\n eventName: string;\n ticketTypes: IDelegationsTicketType;\n tickets: Array<any>;\n}\n\ninterface IDelegationsResponse {\n data: {\n data: {\n attributes: IDelegationsData;\n relationships: Array<any>;\n type: string;\n };\n };\n}\n\nexport const getDelegationTickets = (\n accessHash: string\n): Promise<IDelegationsResponse> => {\n const res = publicRequest.get(`v1/delegation-access/${accessHash}/consumer-page-info`)\n return res\n}\n\nexport const issueTicket = async (\n accessHash: string,\n data: ITicketIssueData\n): Promise<IIssueTicketResponse> => {\n const response: AxiosResponse<IIssueTicketResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/delegation-access/${accessHash}/issue-ticket`, {\n data: {\n attributes: data,\n },\n })\n return response.data\n}\n","import './interceptors'\n\nimport { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _get from 'lodash/get'\n\nimport { customFieldsDataAdapter } from '../adapters'\nimport {\n GetNetverifyUrlResponseData,\n UpdateVerificationStatusResponseData,\n VerificationStatusResponseData,\n} from '../types/verification'\nimport { getQueryVariable, isBrowser } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport { authorize, getProfileData, signUp, register, logout } from './auth'\nexport { setAxiosHeader, setBaseUrl } from './publicRequest'\nexport { getOrders, getOrderDetails } from './orders'\nexport { addToCart, getCart } from './cart'\nexport { postOnCheckout } from './checkout'\n\nexport {\n getEvent,\n getTickets,\n getCountries,\n getStates,\n addToWaitingList,\n sendRSVPInfo,\n postReferralVisits,\n validatePhoneNumber,\n} from './common'\n\nexport {\n getPaymentData,\n getConditions,\n handlePaymentSuccess,\n handleFreeSuccess,\n getConfirmationData,\n} from './payment'\n\nexport {\n resaleTicket,\n removeFromResale,\n processTicket,\n declineInvitation,\n} from './resale'\n\nexport { issueTicket, getDelegationTickets } from './guestTicketDelegation'\n\nexport const setCustomHeader = (response: any) => {\n const guestHeaderResponseValue = _get(response, 'headers.authorization-guest')\n const guestHeaderExistingValue = _get(response, 'config.headers[Authorization-Guest]')\n const guestHeader = guestHeaderResponseValue || guestHeaderExistingValue\n\n if (guestHeader) {\n if (isBrowser) {\n window.localStorage.setItem('auth_guest_token', guestHeader)\n publicRequest.setGuestToken(guestHeader)\n }\n }\n}\n\nexport const handlePaymentData = (orderHash: string, data: any) => {\n const res = publicRequest\n .post(`v1/order/${orderHash}/pay`, {\n data: { attributes: { 'stripe-source': data } },\n })\n .catch(error => {\n throw error\n })\n return res\n}\n\nexport const createPaymentPlan = (orderHash: string, stripePaymentMethodId: string) => {\n const res = publicRequest\n .post(\n `v1/order/${orderHash}/payment_plan/create`,\n {\n stripe_payment_method_id: stripePaymentMethodId,\n },\n {\n headers: {\n 'Referer-Url': isBrowser ? document.referrer : '',\n },\n }\n )\n .catch(error => {\n throw error\n })\n return res\n}\n\n// forgot password\nexport const forgotPassword = (email: string) =>\n publicRequest.post(`/auth/restore-password`, { email })\n\n// reset password\ninterface IResetPasswordData {\n token: string;\n password: string;\n confirmPassword: string;\n}\nexport const resetPassword = (data: IResetPasswordData) =>\n publicRequest.post(`/auth/reset-password`, data)\n\nexport const getAddons = async (eventId: string) => {\n const result = await publicRequest.get(`/v1/event/${eventId}/add-ons`)\n const addons = _get(result, 'data.data.attributes', [])\n return addons\n}\n\nexport const selectAddons = (data: any) => {\n publicRequest.post(`v1/on-checkout`, data)\n}\n\nexport interface AttributesConfig {\n has_add_on: boolean;\n names_required: boolean;\n phone_required: boolean;\n minimum_age?: any;\n age_required: boolean;\n hide_phone_field: boolean;\n event_id: string;\n free_ticket: boolean;\n collect_mandatory_wallet_address: boolean;\n collect_optional_wallet_address: boolean;\n collect_mandatory_company: boolean;\n collect_optional_company: boolean;\n collect_mandatory_job_title: boolean;\n collect_optional_job_title: boolean;\n collect_mandatory_business_category: boolean;\n collect_optional_business_category: boolean;\n collect_mandatory_instagram: boolean;\n collect_optional_instagram: boolean;\n skip_billing_page: boolean;\n}\n\nexport interface ConfigsData {\n attributes: AttributesConfig;\n relationships: any[];\n type: string;\n}\n\nexport interface ResponseConfigs {\n data: ConfigsData;\n success: boolean;\n error: boolean;\n message: string;\n status: number;\n}\n\nexport const getCheckoutPageConfigs = async (): Promise<ResponseConfigs> => {\n const response = await publicRequest.get(`v1/checkout-configs`)\n return response.data\n}\n\n\nexport const getCustomFields = async (eventId: string) => {\n const response = await publicRequest.get(`/v1/event/${eventId}/custom_fields`)\n const customFields = _get(response, 'data.data.attributes', [])\n const adaptedResponse = customFieldsDataAdapter(customFields)\n return adaptedResponse\n}\n\nexport const updateOrderCustomFields = async (\n eventId: string,\n orderId: string,\n customFieldsData: Record<string, any>\n) => {\n const response = await publicRequest.put(`v1/event/${eventId}/order-data-capture`, {\n data: {\n attributes: {\n order_id: orderId,\n data_capture: customFieldsData,\n },\n },\n })\n return response\n}\n\nexport const updateTicketHoldersCustomFields = async (\n eventId: string,\n customFieldsData: Record<string, any>,\n ticketHash: string\n) => {\n const response = await publicRequest.put(`v1/event/${eventId}/ticket-data-capture`, {\n data: {\n attributes: {\n ticket_hash: ticketHash,\n ticket_data_capture: {\n [ticketHash]: customFieldsData,\n },\n },\n },\n })\n return response\n}\n\nexport const confirmPreRegistration = async (\n eventId: string | number,\n data: IConfirmPreRegistrationRequestData\n) => {\n const response = await publicRequest.post(\n `v1/event/${eventId}/pre-registration/confirm`,\n {\n data: {\n attributes: data,\n },\n }\n )\n return response.data\n}\n\n// seat map <--start-->\n\n// const makeId = (length = 20) => {\n// let result = ''\n// const characters =\n// 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n// const charactersLength = characters.length\n// for (let i = 0; i < length; i++) {\n// result += characters.charAt(Math.floor(Math.random() * charactersLength))\n// }\n// return result\n// }\n\nexport const getSeatMapData = async (\n eventId: string | number\n): Promise<SeatMapDataResponse> => {\n localStorage.setItem('tierId', '')\n const reservedSeatsHash = getQueryVariable('reserved_seats_hash')\n const params = {} as any\n if (reservedSeatsHash) {\n params.reserved_seats_hash = reservedSeatsHash\n }\n\n const response: AxiosResponse<SeatMapDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/seat-map-data`, { params })\n return response.data\n}\n\nexport const getSeatMapStatuses = async (\n eventId: string | number\n): Promise<SeatMapStatusesResponse> => {\n const response = await publicRequest.get(`v1/event/${eventId}/seats/status`)\n return response.data\n}\n\nexport const reserveSeat = async (\n eventId: string | number,\n tierId: string,\n seatId: string\n) => {\n const response = await publicRequest.post(`v1/event/${eventId}/seats/reserve`, {\n data: {\n tierId,\n seatId,\n ttl: 10,\n },\n })\n return response.data\n}\n\nexport const removeSeatReserve = async (\n eventId: string | number,\n tierId: string,\n seatIds: string[]\n) => {\n const response = await publicRequest.delete(\n `v1/event/${eventId}/seats/delete-reserved`,\n {\n data: {\n tierId,\n seatIds,\n },\n }\n )\n\n return response.data\n}\n\n// seat map <--end-->\nexport function getPixelScript(id: string | number, pageOptions: any) {\n const response = publicRequest.get(`v1/event/${id}/track`, {\n params: {\n page_url: pageOptions.pageUrl,\n page: pageOptions.page,\n order_hash: pageOptions.orderHash,\n },\n })\n return response\n}\n\n// ID Verification\nexport const getNetverifyUrl = async (): Promise<GetNetverifyUrlResponseData> => {\n const response: AxiosResponse<GetNetverifyUrlResponseData, AxiosRequestConfig> =\n await publicRequest.get('v1/authenticate/verify')\n return response.data\n}\n\nexport const checkVerificationStatus = async (): Promise<{\n data: VerificationStatusResponseData;\n}> => {\n const response: AxiosResponse<\n { data: VerificationStatusResponseData },\n AxiosRequestConfig\n > = await publicRequest.get('v1/authenticate/get-verification-info')\n return response.data\n}\n\nexport const updateVerificationStatus = async (): Promise<{\n data: UpdateVerificationStatusResponseData;\n}> => {\n const response: AxiosResponse<\n { data: UpdateVerificationStatusResponseData },\n AxiosRequestConfig\n > = await publicRequest.patch('v1/authenticate/verify', {\n data: {\n attributes: {\n verification: {\n verificationStatus: 'PENDING',\n },\n },\n },\n })\n return response.data\n}\n\nexport const checkCustomerOrder = async (orderHash: string): Promise<any> => {\n const response: AxiosResponse<any, AxiosRequestConfig> = await publicRequest.get(\n `v1/order/${orderHash}/verify-customer-order`\n )\n\n return response.data\n}\n\nexport const refreshSeatReservation = async (eventId: string, orderId: string) => {\n const response: AxiosResponse<any, AxiosRequestConfig> = await publicRequest.patch(\n `event/${eventId}/reservation/refresh/`,\n {\n order_id: orderId,\n }\n )\n return response\n}\n","import { CircularProgress } from '@mui/material'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useEffect, useState } from 'react'\n\nimport { getCustomFields } from '../../api'\nimport {\n getDataWithCustomFields,\n getFieldsKeys,\n getQueryVariable,\n} from '../../utils'\n\nconst withCustomFields = (Children: any) => (props: any) => {\n const {\n data = [],\n ticketHoldersFields = {\n id: 1,\n fields: [],\n },\n skipCustomFields = true,\n onGetCustomFieldsError = _identity,\n onGetCustomFieldsSuccess = _identity,\n ...args\n } = props\n\n const [lodaing, setLoading] = useState(!skipCustomFields)\n const [customFieldsData, setCustomFieldsData] = useState({} as any)\n const [customFieldsOrderKeys, setCustomFieldsOrderKeys] = useState([] as any)\n const [customFieldsTicketHolderKeys, setCustomFieldsTicketHolderKeys] = useState([] as any)\n\n const getFields = async () => {\n try {\n const eventId = getQueryVariable('event_id') || ''\n const customFields = await getCustomFields(eventId)\n\n const orderFieldsKeys = getFieldsKeys(_get(customFields, 'orderFields', []))\n const ticketHoldersFieldsKeys = getFieldsKeys(_get(customFields, 'ticketsFields', []))\n\n setCustomFieldsTicketHolderKeys(ticketHoldersFieldsKeys)\n setCustomFieldsOrderKeys(orderFieldsKeys)\n setCustomFieldsData(customFields)\n\n onGetCustomFieldsSuccess(customFields)\n } catch (e) {\n onGetCustomFieldsError(e)\n } finally {\n setLoading(false)\n }\n }\n\n useEffect(() => {\n if (!skipCustomFields) {\n getFields()\n }\n }, [])\n\n const {\n dataWithCustomFields,\n ticketHoldersWithCustomFields,\n } = getDataWithCustomFields(data, ticketHoldersFields, customFieldsData)\n\n if (lodaing) {\n return <CircularProgress size={50} />\n }\n\n return (\n <Children\n {...args}\n data={dataWithCustomFields}\n ticketHoldersFields={ticketHoldersWithCustomFields}\n customFieldsOrderKeys={customFieldsOrderKeys}\n customFieldsTicketHolderKeys={customFieldsTicketHolderKeys}\n />\n )\n}\n\nexport { withCustomFields }\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport _get from 'lodash/get'\nimport { useEffect } from 'react'\n\nimport { getPixelScript } from '../api'\nimport { isBrowser } from '../utils'\n\nexport interface pageOptions {\n pageUrl: string;\n page?: string;\n orderHash?: string;\n}\n\nfunction appendScriptsToHeader(code: string) {\n if (isBrowser && code) {\n const tempEl = document.createElement('div')\n tempEl.innerHTML = code\n const scripts = tempEl.getElementsByTagName('script')\n\n for (let index = 0; index < scripts.length; ++index) {\n const script = document.createElement('script')\n script.type = 'text/javascript'\n\n if (scripts[index].src) {\n script.src = scripts[index].src\n } else {\n script.innerHTML = scripts[index].innerHTML\n }\n\n document.head.appendChild(script)\n }\n }\n}\n\nconst addGTagToHeader = (tagId?: string, links?: string[]) => {\n if (document?.head && document?.body && tagId) {\n const script = document.createElement('script')\n script.innerHTML = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','${tagId}');`.trim()\n document.head.append(script)\n\n const scriptBody = document.createElement('noscript')\n scriptBody.innerHTML = `<iframe src=\"https://www.googletagmanager.com/ns.html?id=${tagId}\"\n height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe>`\n document.body.append(scriptBody);\n\n (window as any).dataLayer = (window as any).dataLayer || [];\n (window as any).gtag = function gtag(...args: any){(window as any).dataLayer.push(args)}\n if (links) {\n (window as any)?.gtag('set', 'linker', {\n 'domains': links\n })\n }\n (window as any).gtag('js', new Date());\n (window as any).gtag('config', tagId)\n }\n}\n\nexport const usePixel = async (\n eventId: string | number,\n options: pageOptions\n) => {\n const getScript = async () => {\n if (!eventId) return\n\n try {\n const response = await getPixelScript(eventId, options)\n const pixels = _get(response, 'data.data.attributes.pixels', '')\n appendScriptsToHeader(pixels)\n const brandGoogleTagKey = _get(response, 'data.data.attributes.brandGoogleTagKey', '')\n const eventGoogleTagKey = _get(response, 'data.data.attributes.eventGoogleTagKey', '')\n const eventGoogleTagManagerLinkerDomains = _get(response, 'data.data.attributes.eventGoogleTagManagerLinkerDomains', '')\n addGTagToHeader(brandGoogleTagKey, eventGoogleTagManagerLinkerDomains)\n if (eventGoogleTagKey) {\n addGTagToHeader(eventGoogleTagKey, eventGoogleTagManagerLinkerDomains)\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n useEffect(() => {\n getScript()\n }, [eventId])\n}","import React from 'react'\nimport { Alert, AlertColor, Snackbar, SnackbarOrigin } from '@mui/material'\n\ninterface ISnackbarAlertProps {\n isOpen: boolean\n message: string\n type: AlertColor\n position?: SnackbarOrigin\n autoHideDuration?: number\n variant?: 'filled' | 'standard' | 'outlined'\n\n onClose: () => void\n}\n\nconst SnackbarAlert = ({\n isOpen,\n message,\n type,\n position,\n autoHideDuration = 3000,\n variant,\n onClose,\n}: ISnackbarAlertProps) => {\n return (\n <div className=\"snackbar-alert-container\">\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={isOpen}\n anchorOrigin={position || { vertical: 'top', horizontal: 'center' }}\n onClose={onClose}\n classes={{\n root: 'snackbar-alert-snackbar-root',\n }}\n >\n <Alert\n severity={type}\n onClose={onClose}\n variant={variant || 'filled'}\n classes={{\n icon: 'snackbar-alert-icon',\n root: 'snackbar-alert-alert-root',\n action: 'snackbar-alert-action',\n message: 'snackbar-alert-message',\n filled: 'snackbar-alert-filled',\n }}\n >\n {message}\n </Alert>\n </Snackbar>\n </div>\n )\n}\n\nexport default SnackbarAlert\n","/* eslint-disable no-underscore-dangle */\nimport TextField from '@mui/material/TextField'\nimport { useTheme } from '@mui/styles'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport _includes from 'lodash/includes'\nimport _isFunction from 'lodash/isFunction'\nimport _isObject from 'lodash/isObject'\nimport _map from 'lodash/map'\nimport React, { useEffect, useRef, useState } from 'react'\n\nexport interface ISelectOption {\n label: string | number;\n value?: string | number;\n [key: string]: any;\n}\n\nexport interface ICustomField {\n onChange?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n label: string;\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n theme: 'dark' | 'light';\n // optional\n type?: string;\n selectOptions?: ISelectOption[];\n inputRef?:\n | { current: HTMLInputElement | null }\n | ((node: HTMLInputElement | null) => void);\n multiline?: boolean;\n minRows?: string | number;\n maxRows?: string | number;\n}\nexport interface IOtherProps {\n [key: string]: any;\n}\n\nexport const CustomField = ({\n label,\n type = 'text',\n field,\n selectOptions = [] as ISelectOption[],\n form: { touched, errors, submitCount },\n theme,\n inputProps: pInputProps = {},\n InputProps = {},\n inputRef,\n onChange,\n multiline = false,\n minRows = 3,\n maxRows,\n disabled,\n}: ICustomField & IOtherProps) => {\n const [isShrinked, setIsShrinked] = useState(Boolean(field.value))\n const _ref = useRef<HTMLInputElement>(null)\n const isAutoFilled = _ref.current?.matches(':-webkit-autofill')\n const isSelectField = type === 'select'\n const error = _get(errors, field.name)\n const isTouched =\n Boolean(_get(touched, field.name)) ||\n (_includes(field.name, 'holder') && !!error && !!submitCount)\n\n const customTheme: any = useTheme()\n const inputProps: any = { sx: customTheme?.input }\n\n useEffect(() => {\n if (_isFunction(inputRef)) {\n inputRef(_ref.current)\n } else if (_isObject(inputRef)) {\n inputRef.current = _ref.current\n }\n })\n\n return (\n <TextField\n disabled={disabled}\n placeholder=\"\"\n id={field.name}\n label={label}\n type={type}\n select={isSelectField}\n fullWidth={true}\n error={!!error && isTouched}\n helperText={isTouched && error}\n onFocus={() => {\n setIsShrinked(true)\n }}\n SelectProps={{\n native: true,\n className: theme,\n MenuProps: { className: theme },\n }}\n InputLabelProps={{\n sx: customTheme?.input,\n shrink: isShrinked || Boolean(field.value) || isAutoFilled,\n }}\n InputProps={InputProps}\n inputProps={{ ...inputProps, ...pInputProps }}\n inputRef={_ref}\n multiline={multiline}\n minRows={minRows}\n maxRows={maxRows}\n {...field}\n onBlur={(e: React.FocusEvent<any, Element>) => {\n setIsShrinked(Boolean(field.value))\n if (field.onBlur) {\n field.onBlur(e)\n }\n }}\n onChange={onChange ?? field.onChange}\n >\n {isSelectField\n ? _map(selectOptions, option => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))\n : null}\n </TextField>\n )\n}\n","import React from 'react'\n\nexport const PoweredBy = () => (\n <div className=\"powered-container\">\n <div className='powered-text'>Powered By</div>\n <img\n className='powered-img'\n alt=\"The Ticket Fairy\"\n src={\"https://cdn-checkout.s3.us-east-2.amazonaws.com/IconTicketFairy.svg\"}\n />\n <div className='powered-ttf'>\n The<strong>Ticket</strong>Fairy\n </div>\n </div>\n)\n","import './style.css'\n\nimport { Box, CircularProgress, Modal } from '@mui/material'\nimport axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik } from 'formik'\nimport React, { FC, useState } from 'react'\nimport * as Yup from 'yup'\n\nimport { forgotPassword } from '../../api'\nimport { CustomField } from '../common/CustomField'\nimport { PoweredBy } from '../common/PoweredBy'\n\nexport interface IForgotPasswordProps {\n onClose: () => void;\n onLoginButtonClick: () => void;\n onForgotPasswordSuccess: (res: any) => void;\n onForgotPasswordError: (e: AxiosError) => void;\n showPoweredByImage?: boolean;\n}\n\ninterface ValuesTypes {\n email: string;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#fff',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n}\n\nconst Schema = Yup.object().shape({\n email: Yup.string().email('Invalid email').required('Required'),\n})\n\nexport const ForgotPasswordModal: FC<IForgotPasswordProps> = ({\n onClose = () => {},\n onLoginButtonClick = () => {},\n onForgotPasswordSuccess = () => {},\n onForgotPasswordError = () => {},\n showPoweredByImage = false,\n}) => {\n const [loading, setLoading] = useState(false)\n\n const onForgotPassword = async ({ email }: ValuesTypes) => {\n try {\n setLoading(true)\n const { data } = await forgotPassword(email)\n\n onForgotPasswordSuccess(data)\n onClose()\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onForgotPasswordError(e)\n }\n } finally {\n setLoading(false)\n }\n }\n\n const _onClose = loading ? () => {} : onClose\n\n return (\n <Modal\n open={true}\n onClose={_onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"forgot-password-modal\"\n >\n <Box style={style}>\n <div>\n <Formik\n initialValues={{ email: '' }}\n validationSchema={Schema}\n onSubmit={onForgotPassword}\n >\n {({ isValid, dirty, handleSubmit }) => (\n <Form onSubmit={handleSubmit}>\n <div className=\"forgot-password-container\">\n <div className=\"title\">Password Reset</div>\n <div className=\"forgot-password-container__singleField\">\n <Field name=\"email\" label=\"Email\" component={CustomField} />\n </div>\n </div>\n <div className=\"forgot-password-action-button\">\n <button type=\"submit\" disabled={!(isValid && dirty)}>\n {loading ? <CircularProgress size=\"22px\" /> : 'Submit'}\n </button>\n </div>\n <div className=\"login\">\n <span onClick={onLoginButtonClick}>Back to Log In</span>\n </div>\n {showPoweredByImage ? <PoweredBy /> : null}\n </Form>\n )}\n </Formik>\n </div>\n </Box>\n </Modal>\n )\n}\n","import { Modal as MuiModal } from '@mui/material'\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport _map from 'lodash/map'\nimport React, { FC } from 'react'\n\nexport interface Action {\n id: string;\n label: string;\n onClick: () => void;\n disabled?: boolean;\n loading?: boolean;\n variant?: \"text\" | \"contained\" | \"outlined\";\n}\n\ninterface Props {\n onClose?: () => void;\n actions: Action[];\n modalClassName?: string;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto',\n}\n\nconst Modal: FC<Props> = ({\n onClose,\n actions = [],\n children,\n modalClassName = '',\n}) => (\n <MuiModal\n open={true}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className={`confirm-modal ${modalClassName}`}\n >\n <Box style={style}>\n <div className=\"modal-body\">{children}</div>\n <div className=\"footer\">\n {_map(actions, (action: Action) => (\n <Button\n key={action.id}\n onClick={action.onClick}\n disabled={action.disabled || action.loading}\n variant={action.variant || \"text\"}\n >\n {action.loading ? <CircularProgress size=\"22px\" /> : action.label}\n </Button>\n ))}\n </div>\n </Box>\n </MuiModal>\n)\n\nexport default Modal\n","import React, { useEffect, useState } from 'react'\n\nimport Modal, { Action } from '../common/ModalComponent'\n\ninterface IDVerificationProps {\n message?: string | null;\n displayModal?: boolean;\n actions?: Action[];\n onClose?: () => void;\n}\n\nexport const VerificationPendingModal = (props: IDVerificationProps) => {\n const { message, displayModal, actions, onClose } = props\n const [showModal, setShowModal] = useState(false)\n\n useEffect(() => {\n if (displayModal === undefined) {\n setShowModal(Boolean(message))\n }\n }, [message, displayModal])\n\n return showModal || displayModal ? (\n <div>\n <Modal\n modalClassName=\"id-verification-modal\"\n actions={\n actions || [\n {\n id: 'okay',\n label: 'OK',\n variant: 'contained',\n onClick: () => {\n setShowModal(false)\n\n if (onClose) {\n onClose()\n }\n },\n },\n ]\n }\n >\n <div>{message}</div>\n </Modal>\n </div>\n ) : null\n}\n","const emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\nexport const combineValidators = (...validators: any) => (...value: any) => {\n for (let i = 0; i < validators.length; ++i) {\n const error_message = validators[i](...value)\n if (error_message) return error_message\n }\n}\n\nexport function isFalsy(item: any) {\n try {\n if (\n !item || // handles most, like false, 0, null, etc\n (typeof item === 'object' &&\n Object.keys(item).length === 0 && // for empty objects, like {}, []\n !(typeof item.addEventListener === 'function')) // omit webpage elements\n ) {\n return true\n }\n } catch (err) {\n return true\n }\n\n return false\n}\n\nexport const requiredValidator = (\n value?: string | number | Array<string> | boolean,\n message?: string\n): string => {\n let errorMessage = ''\n\n if (isFalsy(typeof value === 'string' ? value.trim() : value)) {\n errorMessage = message || 'Required'\n }\n return errorMessage\n}\n\nexport const emailValidator = (email: string) =>\n !emailRegex.test(email) ? 'Please enter a valid email address' : ''\n","import './style.css'\n\nimport { TextField } from '@mui/material'\nimport Box from '@mui/material/Box'\nimport Modal from '@mui/material/Modal'\nimport axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { FC, useState } from 'react'\n\nimport { authorize, getProfileData } from '../../api'\nimport { isBrowser, setLoggedUserData } from '../../utils'\nimport { requiredValidator } from '../../validators'\nimport { PoweredBy } from '../common/PoweredBy'\n\nexport interface Props {\n onClose: () => void;\n onLogin: (res: IProfileData) => void;\n alreadyHasUser?: boolean;\n userExpired?: boolean;\n onAuthorizeSuccess?: (res: any) => void;\n onAuthorizeError?: (e: AxiosError) => void;\n onGetProfileDataSuccess?: (res: any) => void;\n onGetProfileDataError?: (e: AxiosError) => void;\n onForgotPassword?: () => void;\n onSignup?: () => void;\n modalClassname?: string;\n logo?: string;\n showForgotPasswordButton?: boolean;\n showSignUpButton?: boolean;\n showPoweredByImage?: boolean;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n}\n\nexport const LoginModal: FC<Props> = ({\n onClose,\n onLogin,\n alreadyHasUser = false,\n userExpired = false,\n onGetProfileDataSuccess = _identity,\n onGetProfileDataError = _identity,\n onForgotPassword = _identity,\n onSignup = _identity,\n modalClassname = '',\n logo,\n showForgotPasswordButton = false,\n showSignUpButton = false,\n showPoweredByImage = false,\n}) => {\n const [error, setError] = useState('')\n return (\n <Modal\n open={true}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className={`login-modal ${modalClassname}`}\n >\n <Box style={style}>\n <div>\n <Formik\n initialValues={{ email: '', password: '' }}\n onSubmit={async ({ email, password }) => {\n try {\n const body = { email, password }\n const authRes = await authorize(body)\n let profileResponse = null\n try {\n profileResponse = await getProfileData()\n onGetProfileDataSuccess(profileResponse.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n return\n }\n\n const profileSpecifiedData = profileResponse.data\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (isBrowser) {\n window.localStorage.setItem('user_data', JSON.stringify(profileDataObj))\n const event = new window.CustomEvent('tf-login')\n window.document.dispatchEvent(event)\n }\n onLogin(_get(authRes, 'data.data'))\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message || 'Error'\n setError(error)\n } else if (e instanceof Error) {\n setError(e?.message || 'Error')\n }\n }\n }}\n >\n {props => (\n <Form onSubmit={props.handleSubmit}>\n <div className=\"modal-title\">Login</div>\n <div className=\"login-logo-container\">\n <img\n className=\"login-logo-tff\"\n src={\n logo ||\n 'https://www.ticketfairy.com/resources/images/logo-ttf-black.svg'\n }\n alt=\"logo\"\n />\n </div>\n <div className=\"server_auth__error\">{error}</div>\n {alreadyHasUser && (\n <p className=\"info-text-for-login\">\n It appears this email is already attached to an account. Please log in\n here to complete your registration.\n </p>\n )}\n {userExpired && (\n <p className=\"info-text-for-login\">\n Your session has expired, please log in again.\n </p>\n )}\n <div className=\"login-modal-body\">\n <div className=\"login-modal-body__email\">\n <Field name={'email'} validate={requiredValidator}>\n {({ field, meta }: { [key: string]: any }) => (\n <TextField\n label={'Email'}\n type={'email'}\n fullWidth\n error={!!meta.error && meta.touched}\n helperText={meta.touched && meta.error}\n {...field}\n />\n )}\n </Field>\n </div>\n <div className=\"login-modal-body__password\">\n <Field name={'password'} validate={requiredValidator}>\n {({ field, meta }: { [key: string]: any }) => (\n <TextField\n label=\"Password\"\n type=\"password\"\n fullWidth\n error={!!meta.error && meta.touched}\n helperText={meta.touched && meta.error}\n {...field}\n />\n )}\n </Field>\n </div>\n <div className=\"login-action-button\">\n <button type=\"submit\">Login</button>\n </div>\n {showForgotPasswordButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onForgotPassword}>\n Forgot password?\n </span>\n </div>\n )}\n {showSignUpButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onSignup}>\n Sign up\n </span>\n </div>\n )}\n {showPoweredByImage ? <PoweredBy /> : null}\n </div>\n </Form>\n )}\n </Formik>\n </div>\n </Box>\n </Modal>\n )\n}\n","import './style.css'\n\nimport { Box, CircularProgress, Modal } from '@mui/material'\nimport axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik } from 'formik'\nimport React, { FC, useState } from 'react'\nimport * as Yup from 'yup'\n\nimport { register } from '../../api'\nimport { CONFIGS } from '../../utils'\nimport { CustomField } from '../common/CustomField'\nimport { PoweredBy } from '../common/PoweredBy'\n\ninterface ISignupProps {\n onClose: () => void;\n onLogin: () => void;\n onRegisterSuccess: (res: any) => void;\n onRegisterError: (e: AxiosError, email: string) => void;\n showPoweredByImage?: boolean;\n}\n\ninterface ValuesTypes {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n confirmPassword: string;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#fff',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n}\n\nconst SignupSchema = Yup.object().shape({\n firstName: Yup.string().required('Required'),\n lastName: Yup.string().required('Required'),\n email: Yup.string().email('Invalid email').required('Required'),\n password: Yup.string().min(6, 'Password must have 5+ characters').required('Required'),\n confirmPassword: Yup.string()\n .required('Required')\n .oneOf([Yup.ref('password'), null], 'Passwords must match'),\n})\n\nexport const SignupModal: FC<ISignupProps> = ({\n onClose = () => {},\n onLogin = () => {},\n onRegisterSuccess = () => {},\n onRegisterError = () => {},\n showPoweredByImage = false,\n}) => {\n const [loading, setLoading] = useState(false)\n\n const onSignup = async (values: ValuesTypes) => {\n try {\n setLoading(true)\n const formData = new FormData()\n formData.set('first_name', values.firstName)\n formData.set('last_name', values.lastName)\n formData.set('email', values.email)\n formData.set('password', values.password)\n formData.set('password_confirmation', values.confirmPassword)\n formData.append(\n 'client_id',\n CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'\n )\n formData.append(\n 'client_secret',\n CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9'\n )\n\n const res = await register(formData)\n\n onRegisterSuccess(res)\n onClose()\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onRegisterError(e, values.email)\n }\n } finally {\n setLoading(false)\n }\n }\n\n const _onClose = loading ? () => {} : onClose\n\n return (\n <Modal\n open={true}\n onClose={_onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"signup-modal\"\n >\n <Box style={style}>\n <div>\n <Formik\n initialValues={{\n firstName: '',\n lastName: '',\n email: '',\n password: '',\n confirmPassword: '',\n }}\n validationSchema={SignupSchema}\n onSubmit={onSignup}\n >\n {({ isValid, dirty, handleSubmit }) => (\n <Form onSubmit={handleSubmit}>\n <div className=\"signup-container\">\n <div className=\"title\">Create an Account</div>\n <div className=\"signup-container__twoFields\">\n <div className=\"is-half\">\n <Field\n name=\"firstName\"\n label=\"First Name\"\n component={CustomField}\n />\n </div>\n <div className=\"is-half\">\n <Field name=\"lastName\" label=\"Last Name\" component={CustomField} />\n </div>\n </div>\n <div className=\"signup-container__singleField\">\n <div className=\"\">\n <Field name=\"email\" label=\"Email\" component={CustomField} />\n </div>\n </div>\n <div className=\"signup-container__twoFields\">\n <div className=\"is-half\">\n <Field\n name=\"password\"\n label=\"Password\"\n type=\"password\"\n component={CustomField}\n />\n </div>\n <div className=\"is-half\">\n <Field\n name=\"confirmPassword\"\n label=\"Confirm Password\"\n type=\"password\"\n component={CustomField}\n />\n </div>\n </div>\n </div>\n <div className=\"signup-action-button\">\n <button type=\"submit\" disabled={!(isValid && dirty)}>\n {loading ? <CircularProgress size=\"22px\" /> : 'Submit'}\n </button>\n </div>\n <div className=\"login\">\n <span onClick={onLogin}>Login</span>\n </div>\n {showPoweredByImage ? <PoweredBy /> : null}\n </Form>\n )}\n </Formik>\n </div>\n </Box>\n </Modal>\n )\n}\n","import _isNumber from 'lodash/isNumber'\n\nexport const showZero = (value = 0) => {\n const intNumber = Number(value)\n return _isNumber(intNumber)\n ? intNumber >= 0 && intNumber < 10\n ? '0' + intNumber\n : intNumber\n : null\n}\n","import './style.css'\n\nimport _identity from 'lodash/identity'\nimport React, { memo, useState } from 'react'\nimport Countdown from 'react-countdown'\nimport SVG from 'react-inlinesvg'\n\nimport Cross from '../../assets/images/cross.svg'\nimport { showZero } from '../../utils/showZero'\n\nexport interface ITimerWidgetPage {\n expires_at: number;\n buyLoading?: boolean;\n onCountdownFinish?: () => void;\n}\n\nexport interface IRenderer {\n minutes: number;\n seconds: number;\n completed: number;\n handleCountdownFinish: () => void;\n}\n\nconst TimerWidget = ({\n expires_at,\n buyLoading,\n onCountdownFinish = _identity,\n}: ITimerWidgetPage) => {\n const [showTimer, setShowTimer] = useState(true)\n\n const handleCountdownFinish = () => {\n setShowTimer(false)\n if (!buyLoading) {\n onCountdownFinish()\n }\n }\n\n const renderer = ({\n minutes,\n seconds,\n completed,\n handleCountdownFinish,\n }: IRenderer) => {\n if (completed) {\n handleCountdownFinish()\n return null\n }\n return (\n <span>\n {showZero(minutes)}:{showZero(seconds)}\n </span>\n )\n }\n\n const hideTimer = () => {\n const timerRl: HTMLElement | null = document.querySelector('.timer')\n if (timerRl) {\n timerRl.style.visibility = 'hidden'\n }\n }\n\n return showTimer && !!expires_at ? (\n <div className=\"timer\">\n <div className=\"close-icon\" onClick={hideTimer}>\n <SVG src={Cross} width=\"10\" height=\"10\" fill=\"#fff\" />\n </div>\n <div className=\"toast-message\">\n <p>Please complete your purchase before the timer reaches zero.</p>\n <p className=\"countdown\">\n <Countdown\n date={Date.now() + expires_at * 1000}\n renderer={(props: any) =>\n renderer({\n ...props,\n handleCountdownFinish,\n })\n }\n />\n </p>\n </div>\n </div>\n ) : null\n}\n\nexport default memo(TimerWidget)\n","import { FormControl, FormHelperText } from '@mui/material'\nimport Checkbox from '@mui/material/Checkbox'\nimport FormControlLabel from '@mui/material/FormControlLabel'\nimport FormGroup from '@mui/material/FormGroup'\nimport { useTheme } from '@mui/styles'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport React from 'react'\n\ninterface ICheckboxField {\n label: string | number | JSX.Element;\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n}\n\nexport const CheckboxField = ({\n label,\n field,\n form: { touched, errors },\n}: ICheckboxField) => {\n const isTouched = Boolean(_get(touched, field.name, false))\n const errorText = _get(errors, field.name)\n const hasError = isTouched && Boolean(errorText)\n const customTheme: any = useTheme()\n\n return (\n <FormControl\n className={`checkbox-field ${hasError ? 'required-checkbox-field' : ''}`}\n error={hasError}\n >\n <FormGroup>\n <FormControlLabel\n control={<Checkbox {...field} checked={field.value} />}\n label={label}\n componentsProps={{ typography: customTheme?.checkbox }}\n />\n </FormGroup>\n {hasError && <FormHelperText>Required</FormHelperText>}\n </FormControl>\n )\n}\n","import { FormControl, FormHelperText } from '@mui/material'\nimport CheckboxMaterial from '@mui/material/Checkbox'\nimport FormControlLabel from '@mui/material/FormControlLabel'\nimport FormGroup from '@mui/material/FormGroup'\nimport { useTheme } from '@mui/styles'\nimport { FieldInputProps } from 'formik'\nimport React from 'react'\n\nexport interface ICheckboxField {\n label: string | number | JSX.Element;\n field?: FieldInputProps<any>;\n}\n\ninterface IOtherProps {\n [key: string]: any;\n}\n\nexport const Checkbox = ({\n label,\n field,\n selectOptions,\n theme,\n setFieldValue,\n disableDropdown,\n setPhoneValidationIsLoading,\n defaultCountry,\n required,\n uniqueId,\n dateFormat,\n datePlaceholder,\n isCountryCodeEditable,\n ...rest\n}: ICheckboxField & IOtherProps) => {\n const customTheme: any = useTheme()\n return (\n <FormControl error={!!(rest?.form?.errors && rest.form.errors[field?.name ?? ''])}>\n <FormGroup>\n <FormControlLabel\n control={<CheckboxMaterial {...field} {...rest} />}\n label={label}\n componentsProps={{\n typography: customTheme?.checkbox,\n }}\n />\n </FormGroup>\n {rest?.form?.errors && rest.form.errors[field?.name ?? ''] ? (\n <FormHelperText>Required</FormHelperText>\n ) : null}\n </FormControl>\n )\n}\n","import { FieldInputProps, FormikProps } from 'formik'\nimport _debounce from 'lodash/debounce'\nimport _get from 'lodash/get'\nimport MuiPhoneNumber from 'material-ui-phone-number'\nimport React, { useCallback, useEffect } from 'react'\n\nimport { validatePhoneNumber } from '../../api'\n\nexport interface IPhoneNumberField {\n label: string;\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n type: string;\n disableDropdown: boolean;\n fill: boolean;\n setPhoneValidationIsLoading: (isLoading: boolean) => void;\n\n // optional\n defaultCountry?: string;\n isCountryCodeEditable?: boolean;\n}\n\nexport const PhoneNumberField = ({\n label,\n field,\n form: {\n errors,\n touched,\n setFieldError,\n values,\n initialValues,\n setFieldValue,\n setFieldTouched,\n setErrors,\n },\n disableDropdown = true,\n defaultCountry = 'us',\n fill = false,\n setPhoneValidationIsLoading,\n isCountryCodeEditable,\n}: IPhoneNumberField) => {\n const error = _get(errors, field.name)\n const isTouched = Boolean(_get(touched, field.name))\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debounceCb = useCallback(\n _debounce((cb: () => void) => void cb(), 1000),\n []\n )\n\n useEffect(() => {\n if (field.value) {\n setPhoneValidationIsLoading(true)\n }\n\n debounceCb(async () => {\n try {\n if (!values[field.name]) {\n const newErrors = { ...errors }\n delete newErrors[field.name]\n setErrors(newErrors)\n return\n }\n if (values[field.name]) {\n await validatePhoneNumber(values[field.name])\n }\n if (errors[field.name]) {\n const newErrors = { ...errors }\n delete newErrors[field.name]\n setErrors(newErrors)\n }\n } catch (error) {\n const message = _get(\n error,\n 'response.data.message',\n 'Invalid phone number'\n )\n if (values[field.name] && errors[field.name] !== message) {\n setFieldError(field.name, message)\n }\n } finally {\n setPhoneValidationIsLoading(false)\n }\n })\n // eslint-disable-next-line\n }, [field.value])\n\n return (\n <>\n <MuiPhoneNumber\n name={field.name}\n value={fill ? values[field.name] : initialValues[field.name]}\n onChange={(value: any, country?: any) => {\n if (`+${country?.dialCode}` === value || value === '+') {\n setFieldValue(field.name, '')\n setFieldError(field.name, '')\n } else {\n setFieldTouched(field.name, true)\n setFieldValue(field.name, value)\n }\n }}\n variant=\"outlined\"\n defaultCountry={defaultCountry}\n disableDropdown={disableDropdown}\n label={label}\n error={!!error && (isTouched || fill)}\n helperText={(isTouched || fill) && error}\n fullWidth\n autoFormat={false}\n disableAreaCodes={true}\n countryCodeEditable={isCountryCodeEditable}\n />\n </>\n )\n}\n","import CircularProgress from '@mui/material/CircularProgress'\nimport React from 'react'\n\nexport const Loader = () => (\n <div className=\"loader-container\">\n <CircularProgress />\n </div>\n)\n","import { FormControl, InputLabel } from '@mui/material'\nimport Checkbox from '@mui/material/Checkbox'\nimport FormHelperText from '@mui/material/FormHelperText'\nimport ListItemText from '@mui/material/ListItemText'\nimport MenuItem from '@mui/material/MenuItem'\nimport OutlinedInput from '@mui/material/OutlinedInput'\nimport Select, { SelectChangeEvent } from '@mui/material/Select'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React from 'react'\n\ninterface ISelectOption {\n id: string | number;\n label: string | number;\n value: string | number;\n}\n\ninterface ISelectField {\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n options: ISelectOption[];\n\n // optional\n label?: string;\n isMultiple?: boolean;\n disabled?: boolean;\n onChange?: (e: SelectChangeEvent<string[]>) => void;\n}\n\nfunction SelectField({\n label,\n isMultiple,\n field,\n form: { touched, errors, setFieldValue },\n options = [],\n disabled,\n onChange = _identity,\n}: ISelectField) {\n const { name, value = [] } = field\n const selectId = `select-field-${name}`\n const error = _get(errors, name)\n const isTouched = Boolean(_get(touched, field.name))\n\n const handleChange = (event: SelectChangeEvent<string[]>) => {\n const {\n target: { value },\n } = event\n\n setFieldValue(name, value)\n onChange(event)\n }\n\n const getSelectedItemLabel = (selectedValue: any) => {\n const selectedItem = options.find(option => option.value === selectedValue)\n const label = _get(selectedItem, 'label', '')\n return label\n }\n\n return (\n <>\n <FormControl\n fullWidth={true}\n disabled={disabled}\n error={isTouched && Boolean(error)}\n >\n {label && <InputLabel id={selectId}>{label}</InputLabel>}\n <Select\n id={name}\n labelId={selectId}\n multiple={isMultiple}\n value={value || []}\n onChange={handleChange}\n input={<OutlinedInput label={label} />}\n renderValue={selected => {\n if (isMultiple) {\n const selectedLabels = _map(selected, (selectedValue: string) =>\n getSelectedItemLabel(selectedValue)\n )\n return selectedLabels.join(', ')\n }\n\n const selectedLabel = getSelectedItemLabel(selected)\n return selectedLabel\n }}\n sx={{ textAlign: 'start' }}\n >\n {options?.map((option: ISelectOption) => (\n <MenuItem key={option.label} value={option.value}>\n {isMultiple && <Checkbox checked={value.indexOf(option.value) > -1} />}\n <ListItemText primary={option.label} />\n </MenuItem>\n ))}\n </Select>\n {isTouched && Boolean(error) ? (\n <FormHelperText error>{error}</FormHelperText>\n ) : null}\n </FormControl>\n </>\n )\n}\n\nexport { SelectField }\n","import Modal from '@mui/material/Modal'\nimport React from 'react'\n\ninterface ICopyMessageModalProps {\n showCopyModal: boolean;\n onClose: () => void;\n}\n\nexport const CopyMessageModal = (props: ICopyMessageModalProps) => {\n const { showCopyModal = false, onClose } = props\n return (\n <Modal\n open={showCopyModal}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"success-copy-modal\"\n >\n <div className=\"message-copy-success-box\">\n <div className=\"message-copy-success\">\n <span>\n Copied to your clipboard! Now paste your link in a Snapchat message,\n </span>\n <span>your Instagram bio, Whatsapp, Facebook or a text :)</span>\n </div>\n <div className=\"footer\">\n <button className=\"footer-button\" type=\"button\" onClick={onClose}>\n OK\n </button>\n </div>\n </div>\n </Modal>\n )\n}\n","import { createTheme, ThemeProvider } from '@mui/material/styles'\nimport { DatePicker } from '@mui/x-date-pickers'\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport React from 'react'\n\nimport { CustomField } from './CustomField'\n\nconst DATE_SIZE = 32\nconst compactStyles = {\n '& > div': {\n minWidth: 256,\n },\n '& > div > div, & > div > div > div, & .MuiCalendarPicker-root': {\n width: 256,\n },\n '& .MuiTypography-caption': {\n width: DATE_SIZE,\n margin: 0,\n },\n '& .PrivatePickersSlideTransition-root': {\n minHeight: DATE_SIZE * 6,\n },\n '& .PrivatePickersSlideTransition-root [role=\"row\"]': {\n margin: 0,\n },\n '& .MuiPickersDay-dayWithMargin': {\n margin: 0,\n },\n '& .MuiPickersDay-root': {\n width: DATE_SIZE,\n height: DATE_SIZE,\n },\n '& .MuiPickersArrowSwitcher-spacer': {\n width: 0,\n },\n '& [role=\"presentation\"] .PrivatePickersFadeTransitionGroup-root': {\n marginRight: -1,\n },\n}\n\nconst compactStyleTheme = createTheme({\n components: {\n MuiPaper: {\n defaultProps: {\n sx: compactStyles,\n },\n },\n },\n})\n\nexport interface IDatePickerFieldProps {\n label: string;\n\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n theme: 'dark' | 'light';\n\n useCompact?: boolean;\n}\n\ninterface IOtherProps {\n [key: string]: any;\n}\n\nexport const DatePickerField = ({\n label,\n field,\n form,\n theme,\n useCompact = true,\n dateFormat = 'DD/MM/YYYY',\n placeholder = 'dd/mm/yyyy',\n}: IDatePickerFieldProps & IOtherProps) => (\n <ThemeProvider theme={useCompact ? compactStyleTheme : {}}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <DatePicker\n value={field.value || ''}\n onChange={value => form.setFieldValue(field.name, value)}\n PopperProps={{\n placement: 'bottom-start',\n }}\n showDaysOutsideCurrentMonth={true}\n disableFuture={true}\n inputFormat={dateFormat}\n mask=\"__/__/____\"\n renderInput={(params: any) => (\n <CustomField\n {...params}\n inputProps={{ ...params.inputProps, placeholder }}\n theme={theme}\n field={{\n ...field,\n onChange: (\n evt: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n if (params.inputProps && params.inputProps.onChange) {\n params.inputProps.onChange(evt)\n }\n },\n }}\n form={form}\n label={label}\n type=\"tel\"\n />\n )}\n />\n </LocalizationProvider>\n </ThemeProvider>\n)\n","import { FormControl, FormHelperText, InputLabel } from '@mui/material'\nimport Select from '@mui/material/Select'\nimport { useTheme } from '@mui/styles'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport _map from 'lodash/map'\nimport React from 'react'\n\nexport interface ISelectOption {\n label: string | number;\n value?: string | number;\n [key: string]: any;\n}\n\nexport interface ISelectField {\n label: string;\n\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n theme: 'dark' | 'light';\n\n // optional\n type?: string;\n selectOptions?: ISelectOption[];\n onChange?: (e: any) => void;\n}\n\ninterface IOtherProps {\n [key: string]: any;\n}\n\nexport const NativeSelectField = ({\n label,\n type = 'text',\n field,\n selectOptions = [] as ISelectOption[],\n form: { touched, errors, setFieldValue },\n theme,\n onChange = () => {},\n}: ISelectField & IOtherProps) => {\n const isTouched = Boolean(_get(touched, field.name))\n const error = _get(errors, field.name)\n\n const customTheme: any = useTheme()\n\n return (\n <FormControl fullWidth={true}>\n <InputLabel\n style={customTheme?.input}\n htmlFor={field.name}\n error={!!error && isTouched}\n shrink={true}\n >\n {label}\n </InputLabel>\n <Select\n id={field.name}\n label={label}\n type={type}\n fullWidth={true}\n error={!!error && isTouched}\n inputProps={{\n id: field.name,\n }}\n native={true}\n className={`Mui-Select ${theme}`}\n MenuProps={{ className: theme }}\n {...field}\n style={customTheme?.input}\n onChange={e => {\n onChange(e)\n setFieldValue(field.name, e.target.value)\n }}\n >\n {_map(selectOptions, option => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </Select>\n {isTouched && error ? (\n <FormHelperText error={!!error && isTouched}>{error}</FormHelperText>\n ) : null}\n </FormControl>\n )\n}\n","import FormControl from '@mui/material/FormControl'\nimport FormControlLabel from '@mui/material/FormControlLabel'\nimport FormHelperText from '@mui/material/FormHelperText'\nimport FormLabel from '@mui/material/FormLabel'\nimport Radio from '@mui/material/Radio'\nimport RadioGroup from '@mui/material/RadioGroup'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React from 'react'\n\nexport interface IRadio {\n id: string | number;\n label: string | number;\n value: string | number;\n [key: string]: any;\n}\n\nexport interface IRadioGroupField {\n label?: string;\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n radios: IRadio[];\n disabled?: boolean;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioGroupField = ({\n label,\n field,\n radios = [],\n disabled,\n form: { touched, errors, setFieldValue },\n onChange = _identity,\n}: IRadioGroupField) => {\n const radioId = `radio-${field.name}`\n const error = _get(errors, field.name)\n const isTouched = Boolean(_get(touched, field.name))\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target as HTMLInputElement\n setFieldValue(field.name, value)\n onChange(e)\n }\n\n if (!radios) return null\n\n return (\n <FormControl disabled={disabled} error={isTouched && Boolean(error)}>\n {isTouched && Boolean(error) ? (\n <FormHelperText className=\"radio-error\" error>\n {error}\n </FormHelperText>\n ) : null}\n {label && <FormLabel id={radioId}>{label}</FormLabel>}\n <RadioGroup\n aria-labelledby={radioId}\n name={field.name}\n value={field.value}\n onChange={handleChange}\n >\n {radios.map(radio => {\n const { id, label, value } = radio\n return (\n <FormControlLabel\n key={id}\n label={label}\n value={value}\n control={<Radio />}\n />\n )\n })}\n </RadioGroup>\n </FormControl>\n )\n}\n","import { FormikErrors, FormikValues } from 'formik'\nimport _flatMapDeep from 'lodash/flatMapDeep'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _isArray from 'lodash/isArray'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\nimport React from 'react'\n\nimport { AttributesConfig } from '../../api'\nimport { IGroupItem } from '../../types'\nimport { CONFIGS } from '../../utils'\nimport { combineValidators, requiredValidator } from '../../validators'\nimport {\n CheckboxField,\n CustomField,\n DatePickerField,\n PhoneNumberField,\n RadioGroupField,\n SelectField,\n} from '../common/index'\n\nexport interface ILoggedInValues {\n emailLogged?: string;\n firstNameLogged?: string;\n lastNameLogged?: string;\n}\n\nexport interface IValues {\n [key: string]: any;\n}\n\nexport const getInitialValues = (\n data: any = [],\n propsInitialValues: IValues = {},\n userValues: any = {},\n ticketHoldersFields: any = {},\n ticketsQuantity: any = []\n): IValues => {\n const results = _flatMapDeep(data, ({ fields }) =>\n _map(fields, ({ groupItems }) =>\n _map(groupItems, ({ name, value }) => ({ name, value }))\n )\n )\n\n // Add Ticket Holder default values for custom fields\n const ticketHoldersCustomFields =\n ticketHoldersFields?.fields?.find((groupItem: any) => groupItem.customFields)\n ?.groupItems || []\n const ticketHoldersCustomFieldsInitValues = {} as IValues\n const selectedTicketsCount =\n ticketsQuantity.length || localStorage.getItem('selectedTicketsQuantity') || 0\n\n if (!_isEmpty(ticketHoldersCustomFields)) {\n for (const customField of ticketHoldersCustomFields) {\n for (let i = 0; i < selectedTicketsCount; i++) {\n const fieldName = `${customField.name}-${i}`\n const fieldValue = customField.value\n ticketHoldersCustomFieldsInitValues[fieldName] = fieldValue\n }\n }\n }\n\n const initialValues: IValues = {}\n _forEach(results, groupItem => {\n const { name, value } = groupItem\n initialValues[name] = value || propsInitialValues[name] || userValues[name] || ''\n })\n\n // set logged in user as first ticket holder\n initialValues['holderFirstName-0'] =\n propsInitialValues.firstName || userValues.firstName || ''\n initialValues['holderLastName-0'] =\n propsInitialValues.lastName || userValues.lastName || ''\n initialValues['holderEmail-0'] = propsInitialValues.email || userValues.email || ''\n\n return { ...initialValues, ...ticketHoldersCustomFieldsInitValues }\n}\n\nexport const createRegisterFormData = (\n values: IValues = {},\n checkoutBody: { attributes: { [key: string]: any } },\n flagFreeTicket = false\n): FormData => {\n const bodyFormData = new FormData()\n bodyFormData.append('first_name', values.firstName)\n bodyFormData.append('last_name', values.lastName)\n bodyFormData.append('email', values.email)\n bodyFormData.append('password', values.password)\n bodyFormData.append('password_confirmation', values.confirmPassword)\n bodyFormData.append(\n 'client_id',\n CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'\n )\n bodyFormData.append(\n 'client_secret',\n CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9'\n )\n bodyFormData.append('check_cart_expiration', 'true')\n\n _forEach(checkoutBody.attributes, (item: any, key: string) => {\n if (\n !(flagFreeTicket && ['country', 'state', 'city', 'street_address'].includes(key))\n ) {\n bodyFormData.append(key, item)\n }\n })\n\n return bodyFormData\n}\n\nexport interface ICheckoutBody {\n attributes: {\n [key: string]: any;\n };\n data_capture?: {\n [key: string]: any;\n };\n}\n\ninterface IticketHolder {\n first_name?: string;\n last_name?: string;\n phone?: string;\n email?: string;\n}\n\nexport const createCheckoutDataBody = (\n ticketsQuantity: number,\n values: IValues = {},\n logedInValues: ILoggedInValues = {},\n includeDob = false\n): ICheckoutBody => {\n const { firstName, lastName, holderAge, confirmEmail, confirmPassword, ...restValues } =\n values\n\n const holders = []\n let ticket_holders: IticketHolder[] = []\n\n for (let i = 0; i <= ticketsQuantity; i++) {\n const individualHolder = Object.fromEntries(\n Object.entries(values).filter(([key, _val]) => key.includes(String(i)))\n )\n holders.push(individualHolder)\n }\n\n const filteredHolders = holders.filter(holder => Object.entries(holder).length > 0)\n ticket_holders = filteredHolders.map((item, index) => ({\n first_name: !index\n ? item[`holderFirstName-${index}`] || logedInValues.firstNameLogged || ''\n : item[`holderFirstName-${index}`] || '',\n last_name: !index\n ? item[`holderLastName-${index}`] || logedInValues.lastNameLogged || ''\n : item[`holderLastName-${index}`] || '',\n phone: item[`holderPhone-${index}`] || '',\n email: !index\n ? item[`holderEmail-${index}`] || logedInValues.emailLogged || ''\n : item[`holderEmail-${index}`] || '',\n }))\n\n const filteredRestValue: { [key: string]: any } = {}\n _forEach(restValues, (value, key) => {\n if (!key.includes('holder')) {\n filteredRestValue[key] = value\n }\n })\n\n const body: ICheckoutBody = {\n attributes: {\n ...filteredRestValue,\n email: restValues.email || logedInValues.emailLogged,\n confirm_email: restValues.email || logedInValues.emailLogged,\n first_name: firstName || logedInValues.firstNameLogged,\n last_name: lastName || logedInValues.lastNameLogged,\n ticket_holders,\n },\n }\n\n if (includeDob) {\n const holderAgeDate = new Date(holderAge)\n body.attributes.dob_day = holderAgeDate.getDate()\n body.attributes.dob_month = holderAgeDate.getMonth() + 1\n body.attributes.dob_year = holderAgeDate.getFullYear()\n }\n return body\n}\n\nexport const getValidateFunctions = (\n element: IGroupItem,\n states: Array<{ [key: string]: any }>,\n values: FormikValues,\n errors: FormikErrors<any>\n) => {\n const validationFunctions: any[] = []\n\n if (element.required) {\n if (element.name !== 'state' || (element.name === 'state' && states.length)) {\n validationFunctions.push(requiredValidator)\n }\n }\n\n if (element.onValidate) {\n validationFunctions.push(element.onValidate)\n }\n\n if (element.name === 'phone') {\n const invalidPhone = () =>\n errors.phone === 'Invalid phone number' ? 'Invalid phone number' : null\n validationFunctions.push(invalidPhone)\n }\n\n if (element.name === 'confirmEmail') {\n const isSameEmail = (confirmEmail?: string) =>\n values.email !== confirmEmail ? 'Please confirm your email address correctly' : null\n validationFunctions.push(isSameEmail)\n }\n\n if (element.name === 'confirmPassword') {\n const isSame = (confirmPassword?: string) =>\n values.password !== confirmPassword ? 'Password confirmation does not match' : null\n validationFunctions.push(isSame)\n }\n\n return combineValidators(...validationFunctions)\n}\n\nexport const assingUniqueIds = (data: any): any => {\n if (_get(data[0], 'uniqueId')) {\n return data\n }\n\n return _map(data, (item: any) => {\n _forEach(item, (itemValue: string, key) => {\n if (_isArray(itemValue) && !itemValue.some(item => typeof item === 'string')) {\n item[key] = assingUniqueIds(itemValue)\n }\n })\n\n return { ...item, uniqueId: nanoid() }\n })\n}\n\nexport const isRequiredField = (\n element: IGroupItem,\n configs?: null | AttributesConfig\n) => {\n const { name, required } = element\n const flagRequirePhone = _get(configs, 'phone_required', false)\n const collectMandatoryWalletAddress = _get(\n configs,\n 'collect_mandatory_wallet_address',\n false\n )\n\n if (\n required ||\n (name === 'phone' && flagRequirePhone) ||\n (name === 'data_capture[wallet_address]' && !collectMandatoryWalletAddress)\n ) {\n return true\n }\n\n return false\n}\n\nexport const getFieldLabel = (element: IGroupItem, configs?: null | AttributesConfig) => {\n if (isRequiredField(element, configs) || React.isValidElement(element.label)) {\n return element.label\n }\n\n return `${element.label} (optional)`\n}\n\nexport const getFieldComponent = (element: IGroupItem) => {\n const type = _get(element, 'type', 'text')\n\n const fieldComponentConfigs = {\n checkbox: CheckboxField,\n select: CustomField, // Temp change untill refactoring\n select_multi: SelectField,\n phone: PhoneNumberField,\n date: DatePickerField,\n radio: RadioGroupField,\n text: CustomField,\n }\n\n const fieldComponent = _get(fieldComponentConfigs, type, CustomField)\n return fieldComponent\n}\n","import './style.css'\n\nimport { CircularProgress, ThemeOptions } from '@mui/material'\nimport Backdrop from '@mui/material/Backdrop'\nimport Button from '@mui/material/Button'\nimport { createTheme, ThemeProvider } from '@mui/material/styles'\nimport { CSSProperties } from '@mui/styles'\nimport axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik, FormikHelpers, FormikProps, FormikValues } from 'formik'\nimport _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _includes from 'lodash/includes'\nimport _isEmpty from 'lodash/isEmpty'\nimport _isEqual from 'lodash/isEqual'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\nimport React, { FC, useEffect, useRef, useState } from 'react'\n\nimport {\n AttributesConfig,\n getCart,\n getCheckoutPageConfigs,\n getCountries,\n getProfileData,\n getStates,\n postOnCheckout,\n register,\n setCustomHeader,\n} from '../../api'\nimport { withCustomFields } from '../../hoc'\nimport { usePixel } from '../../hooks/usePixel'\nimport { IBillingInfoData } from '../../types'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n deleteCookieByName,\n getCookieByName,\n isBrowser,\n setLoggedUserData,\n} from '../../utils'\nimport { ErrorFocus } from '../../utils/formikErrorFocus'\nimport SnackbarAlert from '../common/SnackbarAlert'\nimport { ForgotPasswordModal } from '../forgotPasswordModal'\nimport { VerificationPendingModal } from '../idVerificationContainer/VerificationPendingModal'\nimport { LoginModal } from '../loginModal'\nimport { SignupModal } from '../signupModal'\nimport TimerWidget from '../timerWidget'\nimport {\n assingUniqueIds,\n createCheckoutDataBody,\n createRegisterFormData,\n getFieldComponent,\n getFieldLabel,\n getInitialValues,\n getValidateFunctions,\n ICheckoutBody,\n} from './utils'\n\nexport interface IBillingInfoPage {\n data?: IBillingInfoData[];\n ticketHoldersFields?: IBillingInfoData;\n handleSubmit?: (\n values: FormikValues,\n formikHelpers: FormikHelpers<FormikValues>,\n eventId: any,\n res: any\n ) => void;\n onRegisterSuccess?: (value: any) => void;\n onRegisterError?: (e: AxiosError, email: string) => void;\n onSubmitError?: (e: AxiosError) => void;\n onGetCartSuccess?: (res: any) => void;\n onGetCartError?: (e: AxiosError) => void;\n onGetCountriesSuccess?: (res: any) => void;\n onGetCountriesError?: (e: AxiosError) => void;\n onGetStatesSuccess?: (res: any) => void;\n onGetStatesError?: (e: AxiosError) => void;\n onGetProfileDataSuccess?: (res: any) => void;\n onGetProfileDataError?: (e: AxiosError) => void;\n onGetCheckoutConfigsSuccess?: (res: any) => void;\n onGetCheckoutConfigsError?: (e: AxiosError) => void;\n onLogin?: () => void;\n onLoginSuccess?: () => void;\n onErrorClose?: () => void;\n initialValues?: FormikValues;\n buttonName?: string;\n theme?: 'light' | 'dark';\n isLoggedIn?: boolean;\n accountInfoTitle?: string | JSX.Element;\n hideLogo?: boolean;\n themeOptions?: ThemeOptions & {\n input?: CSSProperties;\n checkbox?: CSSProperties;\n };\n hideErrorsAlertSection?: boolean;\n onSkipBillingPage: (data: any) => void;\n skipPage?: boolean;\n canSkipHolderNames?: boolean;\n shouldFetchCountries?: boolean;\n onForgotPasswordSuccess?: (res: any) => void;\n onForgotPasswordError?: (e: AxiosError) => void;\n onCountdownFinish?: () => void;\n enableTimer?: boolean;\n logo?: string;\n showForgotPasswordButton?: boolean;\n showSignUpButton?: boolean;\n brandOptIn?: boolean;\n showPoweredByImage?: boolean;\n isCountryCodeEditable?: boolean;\n customFieldsOrderKeys?: string[];\n customFieldsTicketHolderKeys?: string[];\n onPendingVerification?: () => void;\n}\n\nconst LogicRunner: FC<{\n brandOptIn?: boolean;\n values: any;\n setStates: React.Dispatch<any>;\n setFieldValue: any;\n setValues: any;\n setUserValues: any;\n onGetStatesSuccess: any;\n onGetStatesError: any;\n shouldFetchCountries: boolean;\n}> = ({\n values,\n setStates,\n setFieldValue,\n setValues,\n setUserValues,\n onGetStatesSuccess,\n onGetStatesError,\n shouldFetchCountries,\n brandOptIn,\n}) => {\n const prevCountry = useRef(values.country)\n useEffect(() => {\n const fetchStates = async () => {\n try {\n const res = await getStates(values.country)\n const mappedStates = _map(res.data, (item, key) => ({\n label: item,\n value: key,\n }))\n setStates(mappedStates)\n if (prevCountry.current !== values.country) {\n const stateExists = mappedStates.find(\n state => state.value === values.state\n )?.value\n setFieldValue('state', stateExists ?? mappedStates[0]?.value ?? '')\n prevCountry.current = values.country\n }\n onGetStatesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetStatesError(e)\n }\n }\n }\n shouldFetchCountries && fetchStates()\n }, [values.country, setStates, setFieldValue])\n const userDataEncoded = isBrowser ? window.localStorage.getItem('user_data') : ''\n useEffect(() => {\n // set user data from local storage\n const getStoredUserData = () => {\n if (isBrowser) {\n if (userDataEncoded) {\n try {\n const parsedData = JSON.parse(userDataEncoded)\n const mappedValues = {\n firstName: parsedData?.first_name || parsedData?.firstName || '',\n lastName: parsedData?.last_name || parsedData?.lastName || '',\n email: parsedData?.email || '',\n phone: parsedData?.phone || '',\n confirmEmail: parsedData?.email || '',\n state: parsedData?.state || '',\n street_address: parsedData?.street_address || '',\n country: parsedData?.country || '1',\n zip: parsedData?.zip || '',\n brand_opt_in: brandOptIn ? brandOptIn : parsedData?.brand_opt_in || false,\n city: parsedData?.city || '',\n confirmPassword: '',\n password: '',\n 'holderFirstName-0': parsedData?.first_name || parsedData?.firstName || '',\n 'holderLastName-0': parsedData?.last_name || parsedData?.lastName || '',\n 'holderEmail-0': parsedData?.email || '',\n }\n\n const extraDataJSON = window.localStorage.getItem('extraData')\n const extraData = extraDataJSON ? JSON.parse(extraDataJSON) : null\n\n setValues({ ...values, ...mappedValues, ...(extraData ?? {}) })\n setUserValues(mappedValues)\n } catch (e) {}\n }\n }\n }\n getStoredUserData()\n }, [userDataEncoded, setValues, setUserValues])\n return null\n }\n\nconst BillingInfoContainer = React.memo(\n ({\n data = [],\n ticketHoldersFields = {\n id: 1,\n fields: [],\n },\n initialValues = {},\n buttonName = 'Submit',\n handleSubmit = _identity,\n theme = 'light',\n onRegisterSuccess = _identity,\n onRegisterError = _identity,\n onSubmitError = _identity,\n onGetCartSuccess = _identity,\n onGetCartError = _identity,\n onGetCountriesSuccess = _identity,\n onGetCountriesError = _identity,\n onGetStatesSuccess = _identity,\n onGetStatesError = _identity,\n onGetProfileDataSuccess = _identity,\n onGetProfileDataError = _identity,\n onLogin,\n onLoginSuccess = _identity,\n isLoggedIn: pIsLoggedIn = false,\n accountInfoTitle = '',\n hideLogo,\n themeOptions,\n onErrorClose = _identity,\n hideErrorsAlertSection = false,\n onSkipBillingPage = _identity,\n skipPage = false,\n canSkipHolderNames = false,\n onForgotPasswordSuccess = _identity,\n onForgotPasswordError = _identity,\n shouldFetchCountries = true,\n onCountdownFinish = _identity,\n enableTimer = false,\n logo,\n showForgotPasswordButton = false,\n showSignUpButton = false,\n brandOptIn = false,\n showPoweredByImage = false,\n customFieldsOrderKeys,\n customFieldsTicketHolderKeys,\n isCountryCodeEditable = true,\n onPendingVerification = _identity,\n onGetCheckoutConfigsSuccess = _identity,\n onGetCheckoutConfigsError = _identity,\n }: IBillingInfoPage) => {\n const [extraData, setExtraData] = useState(null)\n const [isConfigLoading, setIsConfigLoading] = useState(true)\n const [configs, setConfigs] = useState<null | AttributesConfig>(null)\n const [isNewUser, setIsNewUser] = useState(false)\n const themeMui = createTheme(themeOptions)\n\n useEffect(() => {\n if (isBrowser) {\n const extraData = window.localStorage.getItem('extraData')\n if (extraData) {\n setExtraData(JSON.parse(extraData))\n }\n }\n getCheckoutPageConfigs()\n .then(data => {\n if (data?.data?.attributes) {\n setConfigs(data.data.attributes)\n setIsConfigLoading(false)\n }\n onGetCheckoutConfigsSuccess(data)\n })\n .catch(e => {\n setIsConfigLoading(false)\n onGetCheckoutConfigsError(e)\n })\n }, [isBrowser])\n\n const defaultCountry = isBrowser ? window.localStorage.getItem('eventCountry') : ''\n const userData =\n isBrowser && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n const [dataWithUniqueIds, setDataWithUniqueIds] = useState<IBillingInfoData[]>(\n assingUniqueIds(data)\n )\n const xtfCookie = getCookieByName('X-TF-ECOMMERCE')\n const [isLoggedIn, setIsLoggedIn] = useState(!!(pIsLoggedIn || xtfCookie))\n const [cartInfoData, setCartInfo] = useState<any>({})\n const [countries, setCountries] = useState<any>([])\n const [states, setStates] = useState<any>([])\n const [showModalLogin, setShowModalLogin] = useState(false)\n const [alreadyHasUser, setAlreadyHasUser] = useState(false)\n const [userExpired, setUserExpired] = useState(false)\n const [showModalSignup, setShowModalSignup] = useState(false)\n const [showModalForgotPassword, setShowModalForgotPassword] = useState(false)\n const [ticketsQuantity, setTicketsQuantity] = useState<string[]>([])\n const [userValues, setUserValues] = useState<any>({\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n confirmEmail: '',\n holderFirstName: '',\n holderLastName: '',\n holderAge: '',\n city: '',\n country: '',\n street_address: '',\n state: '',\n zip: '',\n })\n const [loading, setLoading] = useState(true)\n const [cardLoading, setCardLoading] = useState(false)\n const [isCountriesLoading, setIsCountriesLoading] = useState(true)\n const [error, setError] = useState(null)\n const [phoneValidationIsLoading, setPhoneValidationIsLoading] = useState(false)\n const emailLogged = _get(userData, 'email', '') || _get(userValues, 'email', '')\n const firstNameLogged =\n _get(userData, 'first_name', '') || _get(userValues, 'first_name', '')\n const lastNameLogged =\n _get(userData, 'last_name', '') || _get(userValues, 'last_name', '')\n const showDOB = configs?.age_required\n const showTicketHolders = configs?.names_required\n const eventId = configs?.event_id\n const optedInFieldValue: boolean = brandOptIn\n ? brandOptIn\n : _get(cartInfoData, 'optedIn', false)\n const ttfOptIn = Boolean(_get(cartInfoData, 'ttfOptIn', false))\n const isTable = Boolean(_get(cartInfoData, 'is_table', false))\n const hideTtfOptIn: boolean = _get(cartInfoData, 'hide_ttf_opt_in', true)\n const expirationTime = _get(cartInfoData, 'expiresAt')\n const flagRequirePhone = configs?.phone_required\n const collectMandatoryWalletAddress = configs?.collect_mandatory_wallet_address\n const collectOptionalWalletAddress = configs?.collect_optional_wallet_address\n const flagFreeTicket = configs?.free_ticket\n const hidePhoneField = configs?.hide_phone_field\n const hideWalletAddressField =\n !collectOptionalWalletAddress && !collectMandatoryWalletAddress\n const collectMandatoryCompany = configs?.collect_mandatory_company\n const collectOptionalCompany = configs?.collect_optional_company\n const hideCompanyField = !collectOptionalCompany && !collectMandatoryCompany\n const collectMandatoryJobTitle = configs?.collect_mandatory_job_title\n const collectOptionalJobTitle = configs?.collect_optional_job_title\n const hideJobTitleField = !collectMandatoryJobTitle && !collectOptionalJobTitle\n const collectMandatoryInstagram = configs?.collect_mandatory_instagram\n const collectOptionalInstagram = configs?.collect_optional_instagram\n const hideInstagramField = !collectMandatoryInstagram && !collectOptionalInstagram\n const collectMandatoryBusinessCategory = configs?.collect_mandatory_business_category\n const collectOptionalBusinessCategory = configs?.collect_optional_business_category\n const hideBusinessCategoryField =\n !collectMandatoryBusinessCategory && !collectOptionalBusinessCategory\n\n const [pendingVerificationMessage, setPendingVerificationMessage] = useState()\n\n // Get prevProps\n const prevData = useRef(data)\n\n const addAddOnsInAttributes = (checkoutBody: any) => {\n const selectedAddOns = window.localStorage.getItem('add_ons') || '{}'\n checkoutBody.attributes.add_ons = JSON.parse(selectedAddOns)\n }\n\n useEffect(() => {\n const hasUniqueId = _get(dataWithUniqueIds, '[0].uniqueId')\n const isEqualData = _isEqual(prevData.current, data)\n if (!hasUniqueId || !isEqualData) {\n setDataWithUniqueIds(assingUniqueIds(data))\n if (!isEqualData) {\n prevData.current = data\n }\n }\n }, [dataWithUniqueIds, data])\n\n const getQuantity = (cart: any = []) => {\n let qty = 0\n cart.forEach((item: any) => {\n qty += +item.quantity\n })\n return qty\n }\n\n useEffect(() => {\n if (pIsLoggedIn !== isLoggedIn || xtfCookie) {\n setIsLoggedIn(!!(pIsLoggedIn || xtfCookie))\n }\n }, [pIsLoggedIn, isLoggedIn, xtfCookie])\n\n //just once\n useEffect(() => {\n // fetch countries data\n const fetchCountries = async () => {\n try {\n const res = await getCountries()\n setCustomHeader(res)\n setCountries(res.data)\n setIsCountriesLoading(false)\n onGetCountriesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetCountriesError(e)\n }\n setIsCountriesLoading(false)\n }\n }\n shouldFetchCountries && fetchCountries()\n fetchCart()\n\n return () => {\n isBrowser && localStorage.removeItem('selectedTicketsQuantity')\n }\n }, [])\n\n // fetch cart data\n const fetchCart = async () => {\n try {\n setCardLoading(true)\n const res = await getCart()\n setCustomHeader(res)\n const cartInfo = res.data.attributes\n setCartInfo(cartInfo)\n const { cart = [] } = cartInfo\n setTicketsQuantity(new Array(getQuantity(cart)).fill(null).map(() => nanoid()))\n onGetCartSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetCartError(e)\n }\n } finally {\n setCardLoading(false)\n }\n }\n\n // fetch user data\n const fetchUserData = async () => {\n try {\n if (isLoggedIn) {\n const userDataResponse = await getProfileData()\n const profileSpecifiedData = _get(userDataResponse, 'data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n setUserValues({\n ...profileDataObj,\n firstName: profileDataObj.first_name,\n lastName: profileDataObj.last_name,\n })\n window.localStorage.setItem('user_data', JSON.stringify(profileDataObj))\n onGetProfileDataSuccess(userDataResponse.data)\n }\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n }\n }\n\n useEffect(() => {\n fetchUserData()\n fetchCart()\n }, [isLoggedIn])\n\n useEffect(() => {\n const collectPaymentData = async () => {\n if (\n skipPage &&\n !_isEmpty(ticketsQuantity) &&\n !showDOB &&\n !loading &&\n !isNewUser\n ) {\n setLoading(true)\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketsQuantity.length,\n userData\n )\n\n try {\n if (isBrowser) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const checkoutResponse = await postOnCheckout(checkoutBody, flagFreeTicket)\n removeReferralKey()\n onSkipBillingPage(checkoutResponse.data.attributes)\n setLoading(false)\n } catch (e) {\n onSubmitError(e)\n if (e.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(e.response?.data?.message)\n }\n }\n } else {\n setLoading(false)\n }\n }\n collectPaymentData()\n }, [skipPage, ticketsQuantity])\n\n const collectCheckoutBody = (\n values: Record<string, any>,\n profileData?: any\n ): Record<string, any> => {\n let checkoutBody = {} as ICheckoutBody\n\n // Auto collect ticket holders name when it was skipped optionally\n if (showDOB && !showTicketHolders && canSkipHolderNames) {\n checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketsQuantity.length,\n values,\n true,\n { emailLogged, firstNameLogged, lastNameLogged }\n )\n } else {\n checkoutBody = createCheckoutDataBody(\n ticketsQuantity.length,\n values,\n {\n emailLogged: emailLogged || profileData.email,\n firstNameLogged:\n firstNameLogged || profileData.first_name || profileData.firstName,\n lastNameLogged:\n lastNameLogged || profileData.last_name || profileData.lastName,\n },\n showDOB\n )\n }\n\n // Collect data_capture for Order Custom Fields\n const data_capture: Record<string, any> = {}\n _forEach(customFieldsOrderKeys, (key: string) => {\n data_capture[key] = values[key]\n\n // Delete from values list\n delete checkoutBody.attributes[key]\n })\n\n // Temp solution for hardcoded data capture values, to be deleted in the future\n const captureKeys = [\n 'businessCategory',\n 'company',\n 'instagram',\n 'jobTitle',\n 'wallet_address',\n ]\n\n captureKeys.forEach(key => {\n const path = `data_capture.${key}`\n const value = _get(values, path, '')\n\n if (value !== '') {\n data_capture[key] = value\n }\n\n const attributeKey = `data_capture[${key}]`\n delete checkoutBody.attributes?.[attributeKey]\n })\n\n // Collect data_capture for Ticket Holders Fields\n _forEach(checkoutBody.attributes.ticket_holders, (holder, holderIndex) => {\n const holderDataCapture: Record<string, any> = {}\n\n _forEach(customFieldsTicketHolderKeys, customFieldKey => {\n const customFieldHolderName = `${customFieldKey}-${holderIndex}`\n const customFieldHolderKey = values[customFieldHolderName] || ''\n holderDataCapture[customFieldKey] = customFieldHolderKey\n\n // Delete holder specific value from values list\n delete checkoutBody.attributes[customFieldHolderName]\n })\n\n // Assign Ticket Holder data_capture final value\n if (!_isEmpty(holderDataCapture)) {\n holder.ticket_data_capture = holderDataCapture\n }\n })\n\n return { attributes: { ...checkoutBody.attributes, data_capture } }\n }\n\n const removeReferralKey = () => {\n localStorage.removeItem('referral_key')\n }\n\n if (loading || (enableTimer && !expirationTime && isBrowser)) {\n if (expirationTime === 0) {\n // Redirect to homepage (countdown finished and browser reloaded case)\n window.location.href = '/'\n }\n }\n\n const selectedCountry =\n _find(countries, item => item.code.toLowerCase() === defaultCountry) || {}\n const initialCountry = selectedCountry.id || _get(userData, 'countryId', '') || '1'\n\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n usePixel(eventId || cartInfoData?.eventId, { page: 'billing', pageUrl })\n if (isTable) {\n dataWithUniqueIds[0].label = 'Get Your Tables'\n }\n return (\n <ThemeProvider theme={themeMui}>\n {(loading || cardLoading || isCountriesLoading || isConfigLoading) && (\n <Backdrop\n sx={{ color: '#fff', backgroundColor: '#000000bd', zIndex: 1205 }}\n open={true}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n )}\n {!!expirationTime && enableTimer && (\n <TimerWidget\n expires_at={expirationTime}\n onCountdownFinish={onCountdownFinish}\n />\n )}\n {!isCountriesLoading && !isConfigLoading && (\n <Formik\n initialValues={getInitialValues(\n dataWithUniqueIds,\n {\n country: initialCountry,\n state: _get(userData, 'stateId', '') || '1',\n brand_opt_in: optedInFieldValue,\n ttf_opt_in: ttfOptIn,\n data_capture: {\n instagram: _get(extraData, 'data_capture.instagram', ''),\n company: _get(extraData, 'data_capture.company', ''),\n businessCategory: _get(extraData, 'data_capture.businessCategory', ''),\n jobTitle: _get(extraData, 'data_capture.jobTitle', ''),\n },\n ...initialValues,\n },\n userValues,\n ticketHoldersFields,\n ticketsQuantity\n )}\n enableReinitialize={false}\n onSubmit={async (values, formikHelpers) => {\n try {\n if (isBrowser) {\n window.localStorage.setItem(\n 'extraData',\n JSON.stringify({\n data_capture: {\n instagram: _get(values, 'data_capture.instagram', ''),\n company: _get(values, 'data_capture.company', ''),\n businessCategory: _get(\n values,\n 'data_capture.businessCategory',\n ''\n ),\n jobTitle: _get(values, 'data_capture.jobTitle', ''),\n },\n })\n )\n }\n if (isLoggedIn) {\n const checkoutBody = collectCheckoutBody(values, userData)\n\n if (isBrowser) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const checkoutResponse = await postOnCheckout(\n checkoutBody,\n flagFreeTicket\n )\n removeReferralKey()\n // After checkout is successful recover updated profile and store it on local storage if needed\n if (isBrowser) {\n const updatedUserData = await getProfileData()\n const profileSpecifiedData = _get(updatedUserData, 'data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n }\n\n handleSubmit(\n values,\n formikHelpers as FormikHelpers<any>,\n eventId,\n checkoutResponse\n )\n return\n }\n const checkoutBodyForRegistration = createCheckoutDataBody(\n ticketsQuantity.length,\n values,\n { emailLogged, firstNameLogged, lastNameLogged },\n showDOB\n )\n const bodyFormData = createRegisterFormData(\n values,\n checkoutBodyForRegistration,\n flagFreeTicket\n )\n try {\n setLoading(true)\n const resRegister = await register(bodyFormData)\n const xtfCookie = _get(resRegister, 'headers.x-tf-ecommerce')\n const refreshToken = _get(resRegister, 'data.attributes.refresh_token')\n const userProfile = _get(resRegister, 'data.attributes.user_profile')\n\n setIsNewUser(true)\n onRegisterSuccess({\n xtfCookie,\n refreshToken,\n userProfile,\n })\n } catch (e) {\n setLoading(false)\n\n if (e.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(e.response?.data?.message)\n } else if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message\n if (_includes(error, 'You must be aged')) {\n formikHelpers.setFieldError('holderAge', error)\n }\n if (error?.password) {\n formikHelpers.setFieldError('password', error.password)\n formikHelpers.setFieldError('confirmPassword', error.password)\n }\n if (error?.email && !onLogin) {\n // False will stand for outside controll\n setAlreadyHasUser(true)\n setShowModalLogin(true)\n }\n\n if (\n _includes(error, 'The cart is expired') &&\n !hideErrorsAlertSection\n ) {\n setError(error)\n }\n\n onRegisterError(e, values.email)\n }\n return\n }\n const profileData = await getProfileData()\n const profileSpecifiedData = _get(profileData, 'data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (isBrowser) {\n window.localStorage.setItem('user_data', JSON.stringify(profileDataObj))\n }\n\n const checkoutBody = collectCheckoutBody(values, profileDataObj)\n\n if (isBrowser) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const checkoutResponse = await postOnCheckout(\n checkoutBody,\n flagFreeTicket\n )\n removeReferralKey()\n handleSubmit(\n values,\n formikHelpers as FormikHelpers<any>,\n eventId,\n checkoutResponse\n )\n } catch (e) {\n setLoading(false)\n if (e.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(e.response?.data?.message)\n } else if (axios.isAxiosError(e)) {\n if (\n e.response?.status === 401 ||\n e.response?.data?.error === 'invalid_token'\n ) {\n if (isBrowser) {\n window.localStorage.removeItem('user_data')\n setUserExpired(true)\n setShowModalLogin(true)\n setIsLoggedIn(false)\n setShowModalSignup(false)\n setShowModalForgotPassword(false)\n const event = new window.CustomEvent('tf-logout')\n deleteCookieByName('X-TF-ECOMMERCE')\n window.document.dispatchEvent(event)\n }\n }\n if (e.response?.data.message && !hideErrorsAlertSection) {\n setError(_get(e, 'response.data.message'))\n }\n onSubmitError(e)\n }\n } finally {\n setLoading(false)\n }\n }}\n >\n {(props: FormikProps<any>) => (\n <Form onSubmit={props.handleSubmit}>\n <ErrorFocus />\n <LogicRunner\n brandOptIn={brandOptIn}\n values={props.values}\n setStates={setStates}\n setFieldValue={props.setFieldValue}\n setValues={props.setValues}\n setUserValues={setUserValues}\n onGetStatesSuccess={onGetStatesSuccess}\n onGetStatesError={onGetStatesError}\n shouldFetchCountries={shouldFetchCountries}\n />\n <div className={`billing-info-container ${theme}`}>\n <SnackbarAlert\n type=\"error\"\n isOpen={!!error}\n message={error || ''}\n onClose={() => {\n setError(null)\n onErrorClose()\n }}\n />\n {!isLoggedIn && (\n <div className=\"account-actions-block\">\n <div className=\"action-item\">\n <div>{accountInfoTitle}</div>\n <div>Login & skip ahead:</div>\n </div>\n <div className=\"action-item login-block\">\n <button\n className=\"login-register-button\"\n type=\"button\"\n onClick={() => {\n // If outside login needed to skip package login functionallity\n if (onLogin) {\n onLogin()\n } else {\n setShowModalLogin(true)\n }\n }}\n >\n Login\n </button>\n {!hideLogo && (\n <div className=\"logo-image-container\">\n <img\n src={\n theme === 'dark'\n ? 'https://www.ticketfairy.com/resources/images/logo-ttf.svg'\n : 'https://www.ticketfairy.com/resources/images/logo-ttf-black.svg'\n }\n alt=\"nodata\"\n />\n </div>\n )}\n </div>\n </div>\n )}\n {!cardLoading &&\n _map(dataWithUniqueIds, item => {\n const { label, labelClassName, fields } = item\n return (\n <React.Fragment key={item.uniqueId}>\n <p className={labelClassName}>{label}</p>\n {_map(fields, group => {\n const { groupClassname, groupItems } = group\n return (\n <React.Fragment key={group.uniqueId}>\n <div className={groupClassname}>\n {_map(\n groupItems.filter(el => {\n if (el.name === 'holderAge' && !showDOB) {\n return false\n }\n if (el.name === 'ttf_opt_in' && hideTtfOptIn) {\n return false\n }\n if (el.name === 'phone') {\n if (!hidePhoneField) {\n el.required = flagRequirePhone\n } else {\n return false\n }\n }\n if (el.name === 'data_capture[wallet_address]') {\n if (collectMandatoryWalletAddress) {\n el.required = true\n }\n }\n if (el.name === 'data_capture[jobTitle]') {\n if (collectMandatoryJobTitle) {\n el.required = true\n }\n }\n if (el.name === 'data_capture[businessCategory]') {\n if (collectMandatoryBusinessCategory) {\n el.required = true\n }\n }\n if (el.name === 'data_capture[company]') {\n if (collectMandatoryCompany) {\n el.required = true\n }\n }\n if (el.name === 'data_capture[instagram]') {\n if (collectMandatoryInstagram) {\n el.required = true\n }\n }\n if (\n [\n 'street_address',\n 'country',\n 'state',\n 'city',\n ].includes(el.name)\n ) {\n if (flagFreeTicket) {\n el.required = false\n return false\n }\n }\n if (\n hideWalletAddressField &&\n (el.name === 'wallet-address-info' ||\n el.name === 'data_capture[wallet_address]')\n ) {\n return false\n }\n if (\n hideJobTitleField &&\n el.name === 'data_capture[jobTitle]'\n ) {\n return false\n }\n if (\n hideBusinessCategoryField &&\n el.name === 'data_capture[businessCategory]'\n ) {\n return false\n }\n if (\n hideCompanyField &&\n el.name === 'data_capture[company]'\n ) {\n return false\n }\n if (\n hideInstagramField &&\n (el.name === 'data_capture[instagram]' ||\n el.name === 'instagram-info')\n ) {\n return false\n }\n return true\n }),\n element =>\n [\n 'password',\n 'confirmPassword',\n 'password-info',\n ].includes(element.name) && isLoggedIn ? null : (\n <React.Fragment key={element.uniqueId}>\n <div\n className={`${element.className} ${\n props?.errors[element.name] || ''\n }`}\n >\n {element.component ? (\n element.component\n ) : (\n <Field\n {...element}\n type={\n element.type === 'radio' ||\n element.type === 'checkbox'\n ? undefined\n : element.type\n }\n setPhoneValidationIsLoading={\n element.type === 'phone'\n ? setPhoneValidationIsLoading\n : undefined\n }\n label={getFieldLabel(element, configs)}\n validate={getValidateFunctions(\n element,\n states,\n props.values,\n props.errors\n )}\n setFieldValue={props.setFieldValue}\n onBlur={props.handleBlur}\n component={getFieldComponent(element)}\n selectOptions={\n element.name === 'country'\n ? _map(countries, item => ({\n value: item.id,\n label: item.name,\n }))\n : element.name === 'state'\n ? [\n {\n label: element.label,\n value: '',\n disabled: true,\n },\n ...states,\n ]\n : element.selectOptions || []\n }\n theme={theme}\n defaultCountry={\n defaultCountry || element.defaultCountry\n }\n dateFormat={element.format}\n isCountryCodeEditable={\n isCountryCodeEditable\n }\n />\n )}\n </div>\n </React.Fragment>\n )\n )}\n </div>\n </React.Fragment>\n )\n })}\n </React.Fragment>\n )\n })}\n {!_isEmpty(ticketHoldersFields.fields) && (\n <div className=\"ticket-holders-fields\">\n <h2>{ticketHoldersFields.label}</h2>\n {_map(ticketsQuantity, (_item, index) => (\n <div key={_item}>\n <h5>Ticket {index + 1}</h5>\n {_map(ticketHoldersFields.fields, group => {\n const { id, groupClassname, groupItems } = group\n return (\n <div key={id}>\n <div className={groupClassname}>\n {_map(groupItems, element => (\n <div className={element.className} key={element.name}>\n <Field\n {...element}\n type={\n element.type === 'radio' ||\n element.type === 'checkbox'\n ? undefined\n : element.type\n }\n name={`${element.name}-${index}`}\n label={getFieldLabel(element, configs)}\n component={getFieldComponent(element)}\n validate={getValidateFunctions(\n element,\n states,\n props.values,\n props.errors\n )}\n setPhoneValidationIsLoading={\n setPhoneValidationIsLoading\n }\n defaultCountry={\n defaultCountry || element.defaultCountry\n }\n isCountryCodeEditable={isCountryCodeEditable}\n />\n </div>\n ))}\n </div>\n </div>\n )\n })}\n </div>\n ))}\n </div>\n )}\n <div className=\"button-container\">\n <Button\n type=\"submit\"\n variant=\"contained\"\n className=\"login-register-button\"\n disabled={props.isSubmitting || phoneValidationIsLoading}\n >\n {props.isSubmitting ? <CircularProgress size={26} /> : buttonName}\n </Button>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n )}\n {showModalLogin && (\n <LoginModal\n logo={logo}\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={() => {\n setShowModalLogin(false)\n setUserExpired(false)\n onLoginSuccess()\n }}\n alreadyHasUser={alreadyHasUser}\n userExpired={userExpired}\n onGetProfileDataSuccess={(data: any) => {\n fetchCart()\n onGetProfileDataSuccess(data)\n }}\n onGetProfileDataError={onGetProfileDataError}\n showSignUpButton={showSignUpButton}\n showForgotPasswordButton={showForgotPasswordButton}\n onForgotPassword={() => {\n setShowModalLogin(false)\n setShowModalForgotPassword(true)\n }}\n onSignup={() => {\n setShowModalLogin(false)\n setShowModalSignup(true)\n }}\n showPoweredByImage={showPoweredByImage}\n />\n )}\n {showModalSignup && (\n <SignupModal\n onClose={() => {\n setShowModalSignup(false)\n }}\n onLogin={() => {\n setShowModalSignup(false)\n setShowModalLogin(true)\n }}\n onRegisterSuccess={onRegisterSuccess}\n onRegisterError={onRegisterError}\n showPoweredByImage={showPoweredByImage}\n />\n )}\n {showModalForgotPassword && (\n <ForgotPasswordModal\n onClose={() => {\n setShowModalForgotPassword(false)\n }}\n onLoginButtonClick={() => {\n setShowModalForgotPassword(false)\n setShowModalLogin(true)\n }}\n onForgotPasswordSuccess={onForgotPasswordSuccess}\n onForgotPasswordError={onForgotPasswordError}\n showPoweredByImage={showPoweredByImage}\n />\n )}\n <VerificationPendingModal\n message={pendingVerificationMessage}\n onClose={() => {\n onPendingVerification()\n }}\n />\n </ThemeProvider>\n )\n }\n)\n\nconst WithCustomFieldsBillingInfoContainer = withCustomFields(BillingInfoContainer)\n\nexport { WithCustomFieldsBillingInfoContainer as BillingInfoContainer }\n","export const currencyNormalizerCreator = (\n value: string | number,\n currency: string\n) => (!value ? '' : `${getCurrencySymbolByCurrency(currency)} ${value}`)\n\nexport const createFixedFloatNormalizer = (fixedValue: number) => (\n value: string | number\n) => (value || `${value}` === '0' ? (+value).toFixed(fixedValue) : '')\n\nexport const getCurrencySymbolByCurrency = (currency = '') => {\n switch (currency) {\n case 'GBP':\n return '£'\n case 'EUR':\n return '€'\n case 'INR':\n return '₹'\n case 'JMD':\n return 'J$'\n case 'NZD':\n return 'NZ$'\n case 'MYR':\n return 'RM'\n case 'MXN':\n return 'Mex$'\n case 'SGD':\n return 'S$'\n case 'AUD':\n return 'A$'\n case 'ZAR':\n return 'R'\n case 'ke':\n return 'Ksh'\n case 'TRY':\n return '₺'\n case 'CAD':\n return 'CA$'\n case 'THB':\n return '฿'\n case 'ISK':\n return 'Kr'\n case 'SEK':\n return 'kr'\n default:\n return 'US$'\n }\n}\n\nexport const removePlusSign = (string = '') => string.replace('+', '')\n","import { StripeError } from '@stripe/stripe-js'\n\ntype stripeErrorReason = 'PAYMENT_ALREADY_CONFIRMED'\n\ninterface IAdaptedStripeError extends StripeError {\n isStripeError: boolean;\n errorReason?: stripeErrorReason;\n}\n\nexport const adaptStripeError = (error: StripeError): IAdaptedStripeError => {\n const adaptedError = { ...error, isStripeError: true }\n switch (error.code) {\n case 'payment_intent_unexpected_state':\n if (error?.payment_intent?.status === 'succeeded') {\n return {\n ...adaptedError,\n errorReason: 'PAYMENT_ALREADY_CONFIRMED',\n message:\n 'You cannot confirm this PaymentIntent because it has already succeeded after being previously confirmed.',\n }\n }\n return { ...adaptedError }\n default:\n return adaptedError\n }\n}\n","import Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Modal from '@mui/material/Modal'\nimport _identity from 'lodash/identity'\nimport React, { FC } from 'react'\n\ninterface Props {\n message: string;\n loading?: boolean;\n hideCancelBtn?: boolean;\n onClose?: () => void;\n onConfirm?: () => void;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto',\n}\n\nconst ConfirmModal: FC<Props> = ({\n message = '',\n loading = false,\n hideCancelBtn = false,\n onClose = _identity,\n onConfirm = _identity,\n}) => (\n <Modal\n open={true}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"confirm-modal\"\n >\n <Box style={style}>\n <p>{message}</p>\n <div className=\"footer\">\n {!hideCancelBtn && (\n <Button onClick={onClose} disabled={loading}>\n Cancel\n </Button>\n )}\n <Button onClick={onConfirm}>\n {loading ? <CircularProgress size=\"22px\" /> : 'OK'}\n </Button>\n </div>\n </Box>\n </Modal>\n)\n\nexport default ConfirmModal\n","import './style.css'\n\nimport CircularProgress from '@mui/material/CircularProgress'\nimport {\n CardCvcElement,\n CardExpiryElement,\n CardNumberElement,\n useElements,\n useStripe,\n} from '@stripe/react-stripe-js'\nimport { StripeCardNumberElementOptions } from '@stripe/stripe-js'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useEffect, useState } from 'react'\n\nimport { refreshSeatReservation } from '../../api'\nimport { getCurrencySymbolByCurrency } from '../../normalizers'\nimport { getQueryVariable } from '../../utils'\nimport { adaptStripeError } from '../../utils/adaptStripeErrors'\nimport { Checkbox } from '../common/index'\nimport ConfirmModal from '../confirmModal'\n\nconst options: StripeCardNumberElementOptions = {\n style: {\n base: {\n backgroundColor: '#000',\n fontSize: '18px',\n color: '#ffffff',\n letterSpacing: '1px',\n ':-webkit-autofill': {\n color: '#ffffff',\n },\n '::placeholder': {\n color: 'rgba(201, 201, 201, 0.5)',\n },\n },\n invalid: {\n color: '#E53935',\n },\n },\n}\n\nexport interface ICheckoutForm {\n total: string | number;\n currency: string;\n onSubmit: (error: any, data?: object) => Promise<any>;\n error?: string | null;\n stripeCardOptions?: StripeCardNumberElementOptions;\n stripe_client_secret: string;\n billing_info: { [key: string]: any };\n isLoading: any;\n handleSetLoading: (loading: any) => void;\n conditions: any;\n disableZipSection: boolean;\n paymentButtonText?: string;\n forPaymentPlan?: boolean;\n orderId?: string;\n hasSeatMapActions: boolean;\n}\n\ninterface AddressTypes {\n city: string;\n line1: string;\n state: string;\n postal_code?: string;\n}\n\nconst CheckoutForm = ({\n total,\n orderId,\n onSubmit = _identity,\n stripeCardOptions = {},\n error = null,\n stripe_client_secret,\n currency,\n billing_info,\n isLoading = false,\n handleSetLoading = _identity,\n conditions = [],\n disableZipSection,\n paymentButtonText,\n forPaymentPlan = false,\n hasSeatMapActions = false,\n}: ICheckoutForm) => {\n const stripe = useStripe()\n const elements = useElements()\n const [postalCode, setPostalCode] = useState<any>('')\n const [stripeError, setStripeError] = useState<any>(null)\n const [checkboxes, setCheckboxes] = useState<any>([])\n const [allowSubmit, setAllowSubmit] = useState(false)\n const eventId = getQueryVariable('event_id') || ''\n\n const handleSubmit = async (event: React.SyntheticEvent) => {\n setStripeError(null)\n try {\n event.preventDefault()\n\n if (!postalCode && !disableZipSection) {\n setStripeError({ message: 'Please enter your zip code.' })\n handleSetLoading(false)\n return\n }\n\n if (!stripe || !elements) {\n // Stripe.js has not loaded yet. Make sure to disable\n // form submission until Stripe.js has loaded.\n handleSetLoading(false)\n return\n }\n\n const card = elements.getElement(CardNumberElement)\n\n const address: AddressTypes = {\n city: billing_info.city,\n line1: billing_info.street_address,\n state: billing_info.state,\n }\n\n if (!disableZipSection) {\n address.postal_code = postalCode\n }\n\n if (forPaymentPlan) {\n const setupResponse = await stripe.confirmCardSetup(stripe_client_secret, {\n payment_method: { card: card || { token: '' } },\n })\n onSubmit(null, { paymentMethodId: setupResponse.setupIntent?.payment_method })\n return\n }\n\n const paymentMethodReq = await stripe.createPaymentMethod({\n type: 'card',\n card: card || { token: '' },\n billing_details: {\n address,\n },\n })\n\n if (paymentMethodReq.error) {\n setStripeError(paymentMethodReq.error || null)\n handleSetLoading(false)\n return\n }\n\n handleSetLoading(true)\n const { error } = await stripe.confirmCardPayment(stripe_client_secret, {\n payment_method: paymentMethodReq.paymentMethod.id,\n })\n\n if (error) {\n setStripeError(adaptStripeError(error))\n hasSeatMapActions && (await refreshSeatReservation(eventId, orderId || ''))\n handleSetLoading(false)\n return\n }\n\n onSubmit(null)\n } catch (e) {\n onSubmit(e)\n }\n }\n\n const handleCheckboxes = (e: any) => {\n const checkbox = e.target\n const updatedCheckedState = checkboxes.map((item: any) => {\n const value = item.id === checkbox.name ? !item.checked : item.checked\n return {\n ...item,\n checked: value,\n }\n })\n setCheckboxes(updatedCheckedState)\n }\n\n const onChangePostalCode = (e: any) => {\n setPostalCode(e.target.value)\n }\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const userData = JSON.parse(window.localStorage.getItem('user_data') || '')\n const zipCode = _get(userData, 'zip', '')\n zipCode && setPostalCode(zipCode)\n }\n }, [])\n\n useEffect(() => {\n if (conditions.length) {\n setCheckboxes(conditions)\n }\n }, [conditions])\n\n useEffect(() => {\n if (checkboxes.length) {\n const allChecked = checkboxes.every((item: any) => item?.checked === true)\n setAllowSubmit(allChecked)\n } else {\n setAllowSubmit(true)\n }\n }, [checkboxes])\n\n const buttonIsDiabled = !stripe || !!error || isLoading || !allowSubmit\n return (\n <div className=\"stripe_payment_container\">\n {!!stripeError && (\n <ConfirmModal\n hideCancelBtn\n onConfirm={() => {\n setStripeError(null)\n onSubmit(stripeError)\n }}\n message={stripeError?.message}\n />\n )}\n <form onSubmit={handleSubmit}>\n <div className=\"card_form_inner\">\n <div className=\"card_number_element\">\n <span className=\"card_label_text\">Card number</span>\n <CardNumberElement\n options={{ ...options, ...stripeCardOptions }}\n onReady={_identity}\n onChange={_identity}\n onBlur={_identity}\n onFocus={_identity}\n />\n </div>\n <div className=\"elements\">\n <div className=\"expiration_element\">\n <span className=\"card_label_text\">Expiration date</span>\n <CardExpiryElement options={{ ...options, ...stripeCardOptions }} />\n </div>\n <div className=\"cvc_element\">\n <span className=\"card_label_text\">CVC</span>\n <CardCvcElement options={{ ...options, ...stripeCardOptions }} />\n </div>\n </div>\n {!disableZipSection && (\n <div className=\"zip_element\">\n <p className=\"card_label_text\">ZIP</p>\n <input\n type=\"text\"\n value={postalCode}\n onChange={onChangePostalCode}\n placeholder=\"ZIP\"\n />\n </div>\n )}\n </div>\n {checkboxes?.map((checkbox: any) => (\n <div className={'billing-info-container__singleField'} key={checkbox.id}>\n <div className=\"conditions-block\">\n <Checkbox\n name={checkbox.id}\n label={checkbox.text}\n required={true}\n onChange={handleCheckboxes}\n checked={checkbox.checked}\n />\n </div>\n </div>\n ))}\n <div\n className={`payment_button ${buttonIsDiabled ? 'disabled-payment-button' : ''}`}\n >\n <button disabled={buttonIsDiabled} type=\"submit\">\n {isLoading ? (\n <CircularProgress size={26} />\n ) : forPaymentPlan ? (\n 'Confirm Payment Plan'\n ) : (\n `${paymentButtonText ? paymentButtonText : 'Pay'\n } ${getCurrencySymbolByCurrency(currency)}${total}`\n )}\n </button>\n </div>\n </form>\n </div>\n )\n}\n\nexport default CheckoutForm\n","import React from 'react'\n\nimport { createFixedFloatNormalizer, currencyNormalizerCreator } from '../../normalizers'\nimport { IPaymentPlanConfig } from '../../types/payment-plan-configuration'\nimport { Checkbox } from '../common'\n\ninterface PaymentPlanSectionProps {\n paymentPlanConfig: IPaymentPlanConfig;\n currency: string;\n paymentPlanUseSavedCard: boolean;\n setPaymentPlanUseSavedCard: (value: boolean) => void;\n}\n\nexport const PaymentPlanSection = (props: PaymentPlanSectionProps) => {\n const {\n paymentPlanConfig,\n currency,\n paymentPlanUseSavedCard,\n setPaymentPlanUseSavedCard,\n } = props\n\n return (\n <div className=\"payment_plan\">\n <h2 className=\"payment_plan_title\">Payment Plan Terms</h2>\n <div className=\"payment_plan_block\">\n <div className=\"payment_plan_text\">\n By clicking on the “Confirm Payment Plan” button, you are starting your payment\n plan of{' '}\n <span className=\"payment_plan_highlight\">\n {paymentPlanConfig.total_installments}\n </span>{' '}\n payments of{' '}\n <span className=\"payment_plan_highlight\">\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.price_per_installment),\n currency\n )}\n </span>\n , which will be drawn from your account every {paymentPlanConfig.interval} days,\n with the first payment taken later today.\n </div>\n {paymentPlanConfig.has_admin_fee && (\n <div className=\"payment_plan_text\">\n This includes a non-refundable admin fee of{' '}\n <span className=\"payment_plan_highlight\">\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.admin_fee),\n currency\n )}\n </span>{' '}\n per payment.\n </div>\n )}\n {paymentPlanConfig.requires_deposit && (\n <div className=\"payment_plan_text\">\n You will also be charged a single, non-refundable deposit of{' '}\n <span className=\"payment_plan_highlight\">\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.deposit),\n currency\n )}\n </span>\n .\n </div>\n )}\n <div className=\"payment_plan_text payment_plan_note payment_plan_highlight\">\n NOTE: If today’s payment fails, your plan will not activate. Your tickets will\n not be issued until you complete your final payment.\n </div>\n {!paymentPlanConfig.non_refundable_type && (\n <div className=\"payment_plan_text\">\n If you do not complete your payments, your order will be canceled. Your{' '}\n <span className=\"payment_plan_highlight\">\n first payment of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.price_per_installment),\n currency\n )}\n </span>\n {paymentPlanConfig.has_admin_fee && (\n <>\n , plus the{' '}\n <span className=\"payment_plan_highlight\">\n non-refundable admin-fee of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.admin_fee),\n currency\n )}\n </span>\n </>\n )}{' '}\n will not be refunded.\n </div>\n )}\n {paymentPlanConfig.non_refundable_type === 'percent' && (\n <div className=\"payment_plan_text\">\n If you do not complete your payments, you will receive{' '}\n <span className=\"payment_plan_highlight\">\n {createFixedFloatNormalizer(0)(\n 100 - paymentPlanConfig.non_refundable_amount\n )}\n %\n </span>{' '}\n of your money back\n {paymentPlanConfig.requires_deposit && (\n <>\n , excluding your{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.deposit),\n currency\n )}{' '}\n deposit\n </>\n )}\n .\n </div>\n )}\n {paymentPlanConfig.non_refundable_type === 'fixed' && (\n <div className=\"payment_plan_text\">\n If you do not complete your payments, you will receive all your money back\n {paymentPlanConfig.non_refundable_amount && (\n <>\n except for the non-refundable amount of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.non_refundable_amount),\n currency\n )}\n {paymentPlanConfig.requires_deposit && (\n <>\n , excluding your{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.deposit),\n currency\n )}{' '}\n deposit\n </>\n )}\n </>\n )}\n .\n </div>\n )}\n {!!paymentPlanConfig.saved_card?.stripe_payment_method_id && (\n <>\n {paymentPlanUseSavedCard && (\n <div className=\"payment_plan_text\">\n {' '}\n Your payment will proceed with the card ending in ****{' '}\n <span className=\"payment_plan_highlight\">\n {'' + paymentPlanConfig.saved_card.last_4_digits}\n </span>\n </div>\n )}\n <div>\n <Checkbox\n label={<span className=\"payment_plan_toggle_label\">Use this card</span>}\n required={true}\n onChange={() => {\n setPaymentPlanUseSavedCard(!paymentPlanUseSavedCard)\n }}\n checked={paymentPlanUseSavedCard}\n />\n </div>\n </>\n )}\n </div>\n </div>\n )\n}\n","/* eslint-disable max-len */\nimport './style.css'\n\nimport { ThemeOptions } from '@mui/material'\nimport Alert from '@mui/material/Alert'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Container from '@mui/material/Container'\nimport { createTheme, ThemeProvider } from '@mui/material/styles'\nimport { CSSProperties } from '@mui/styles'\nimport { Elements } from '@stripe/react-stripe-js'\nimport {\n loadStripe,\n StripeCardNumberElementOptions,\n StripeConstructorOptions,\n StripeElementsOptions,\n} from '@stripe/stripe-js'\nimport { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\nimport React, { useEffect, useState } from 'react'\n\nimport {\n createPaymentPlan,\n getConditions,\n getPaymentData,\n handleFreeSuccess,\n handlePaymentSuccess,\n} from '../../api'\nimport { usePixel } from '../../hooks/usePixel'\nimport { createFixedFloatNormalizer, currencyNormalizerCreator } from '../../normalizers'\nimport { IAddOn, IOrderData, IPaymentField } from '../../types'\nimport {\n IPaymentPlanConfig,\n IPaymentPlanConfigCard,\n} from '../../types/payment-plan-configuration'\nimport { CONFIGS, isBrowser } from '../../utils'\nimport { getQueryVariable } from '../../utils/getQueryVariable'\nimport { Checkbox, Loader } from '../common/index'\nimport StripePayment from '../stripePayment'\nimport TimerWidget from '../timerWidget'\nimport { PaymentPlanSection } from './PaymentPlanSection'\n\nconst publishableKey = CONFIGS.STRIPE_PUBLISHABLE_KEY || ''\n\nconst getStripePromise = (reviewData: any) => {\n const stripePublishableKey =\n _get(reviewData, 'payment_method.stripe_publishable_key') || publishableKey\n const stripeAccount = _get(reviewData, 'payment_method.stripe_connected_account')\n\n const options: StripeConstructorOptions = {}\n if (stripeAccount) {\n options.stripeAccount = stripeAccount\n }\n\n return loadStripe(stripePublishableKey, options)\n}\nexport interface IPaymentPage {\n paymentFields: IPaymentField[];\n handlePayment: any;\n checkoutData: any;\n formTitle?: string;\n errorText?: string;\n onErrorClose?: () => void;\n onGetPaymentDataSuccess: (value: any) => void;\n onGetPaymentDataError: (value: AxiosError) => void;\n onPaymentError: (value: AxiosError, slug?: string) => void;\n stripeCardOptions?: StripeCardNumberElementOptions;\n disableZipSection: boolean;\n themeOptions?: ThemeOptions & {\n input?: CSSProperties;\n checkbox?: CSSProperties;\n };\n elementsOptions?: StripeElementsOptions;\n onCountdownFinish?: () => void;\n enableTimer?: boolean;\n enablePaymentPlan?: boolean;\n paymentButtonText?: string;\n paymentInfoLabel?: string;\n orderInfoLabel?: string;\n}\n\nconst initialPaymentPlanConfiguration: IPaymentPlanConfig = {\n requires_deposit: false,\n deposit: 0,\n interval: 0,\n non_refundable_amount: 0,\n non_refundable_type: null,\n has_admin_fee: false,\n admin_fee: 0,\n total_installments: 0,\n price_per_installment: 0,\n stripe_setup_intent_secret: '',\n total: 0,\n saved_card: {\n last_4_digits: null,\n stripe_payment_method_id: null,\n } as IPaymentPlanConfigCard,\n}\n\nconst initialOrderValues: IOrderData = {\n id: '',\n product_name: '',\n ticketType: '',\n quantity: '',\n price: '',\n total: '',\n currency: '',\n guest_count: '',\n pay_now: '',\n add_ons: [] as IAddOn[],\n}\n\nconst initialReviewValues = {\n order_details: {\n id: '',\n order_hash: '',\n },\n payment_method: {\n stripe_client_secret: '',\n stripe_payment_plan_enabled: false,\n stripe_payment_plan_configuration: {} as any,\n },\n billing_info: {},\n event_details: {\n flagSeatMapAllowed: false,\n slug: ''\n },\n}\n\nexport const PaymentContainer = ({\n paymentFields = [],\n handlePayment,\n formTitle = 'Get Your Tickets',\n errorText,\n checkoutData,\n onErrorClose = _identity,\n onGetPaymentDataSuccess = _identity,\n onGetPaymentDataError = _identity,\n onPaymentError = _identity,\n stripeCardOptions = {},\n disableZipSection = false,\n themeOptions,\n elementsOptions,\n onCountdownFinish = _identity,\n enableTimer = false,\n enablePaymentPlan = true,\n paymentButtonText,\n orderInfoLabel = 'Order Review',\n paymentInfoLabel = 'Order Confirmation',\n}: IPaymentPage) => {\n const [reviewData, setReviewData] = useState(initialReviewValues)\n const [orderData, setOrderData] = useState(initialOrderValues)\n const [error, setError] = useState(null)\n const [showPaymentPlanSection, setShowPaymentPlanSection] = useState(false)\n const [paymentIsLoading, setPaymentIsLoading] = useState(false)\n const [paymentDataIsLoading, setPaymentDataIsLoading] = useState(true)\n const [conditions, setConditions] = useState<{ id: string, text: string }[]>([])\n const [paymentPlanIsAvailable, setPaymentPlanIsAvailable] = useState(false)\n const [paymentPlanConfig, setPaymentPlanConfig] = useState(\n initialPaymentPlanConfiguration\n )\n const [paymentPlanUseSavedCard, setPaymentPlanUseSavedCard] = useState(true)\n const [currency, setCurrency] = useState('')\n\n const showFormTitle = Boolean(formTitle)\n const showErrorText = Boolean(errorText)\n\n const eventId =\n getQueryVariable('event_id') || _get(reviewData, 'cart[0].product_id') || ''\n const { hash, total } = checkoutData\n const isFreeTickets =\n (!Number(total) && !Number(orderData.total)) || !Number(orderData.pay_now)\n\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n usePixel(eventId, { page: 'review', pageUrl })\n\n useEffect(() => {\n const paymentMethod = reviewData.payment_method || {}\n const paymentPlanAvailable =\n paymentMethod.stripe_payment_plan_enabled && enablePaymentPlan\n setPaymentPlanIsAvailable(paymentPlanAvailable)\n\n if (paymentPlanAvailable) {\n const paymentPlanConfig =\n paymentMethod.stripe_payment_plan_configuration || initialPaymentPlanConfiguration\n setPaymentPlanConfig(paymentPlanConfig)\n setPaymentPlanUseSavedCard(!!paymentPlanConfig.saved_card?.stripe_payment_method_id)\n if (isBrowser) {\n const sessionData = window.localStorage.getItem('paymentConfiguration')\n const session = sessionData ? JSON.parse(sessionData) : {}\n if (!!session && session?.orderId == reviewData.order_details?.id) {\n setPaymentPlanUseSavedCard(session.paymentPlanUseSavedCard ?? false)\n setShowPaymentPlanSection(session.showPaymentPlanSection ?? false)\n }\n }\n }\n }, [enablePaymentPlan, reviewData])\n\n useEffect(() => {\n updateSessionInformation()\n }, [showPaymentPlanSection, paymentPlanUseSavedCard])\n\n useEffect(() => {\n (async () => {\n try {\n const paymentDataResponse = await getPaymentData(hash)\n if (paymentDataResponse.success) {\n const attributes = paymentDataResponse?.data?.attributes\n setReviewData(attributes)\n const { cart, order_details } = attributes\n const {\n tickets: [ticket],\n } = order_details\n\n const orderDataArray = _map(order_details.tickets, item => ({\n product_name: cart[0]?.product_name,\n ticketType: item?.name,\n quantity: item?.guest_count,\n price: item?.price,\n id: item.id,\n count: item?.quantity,\n }))\n\n const orderData = {\n id: order_details?.id,\n product_name: cart[0]?.product_name,\n ticketType: ticket?.name,\n quantity: ticket?.quantity,\n price: ticket?.price,\n total: order_details?.total,\n currency: order_details?.currency,\n add_ons: order_details?.add_ons || [],\n pay_now: order_details?.pay_now || '',\n guest_count: order_details?.guest_count || '',\n debt: order_details?.debt || null,\n tableTypes: orderDataArray,\n }\n setOrderData(orderData)\n setCurrency(order_details?.currency)\n onGetPaymentDataSuccess(paymentDataResponse.data)\n }\n } catch (e) {\n setError(_get(e, 'response.data.message'))\n onGetPaymentDataError(e.response)\n } finally {\n setPaymentDataIsLoading(false)\n }\n })()\n }, [checkoutData])\n\n //just once\n useEffect(() => {\n // fetch conditions data\n const fetchConditions = async () => {\n if (eventId) {\n const conditionsResponse = await getConditions(eventId)\n const conditionsInfo = conditionsResponse.data.attributes\n console.log(\n '🚀 ~ file: index.tsx:258 ~ fetchConditions ~ conditionsInfo:',\n conditionsResponse\n )\n setConditions(\n conditionsInfo\n ? conditionsInfo.map((item: { text: any }) => ({\n id: nanoid(),\n text: item.text,\n checked: false,\n }))\n : []\n )\n }\n }\n fetchConditions()\n }, [])\n\n // 1. get payment data ---> v1/order/${hash}/review/ done\n // 2. handle payment ---> v1/order/${orderHash}/pay/\n // 3. redirect to confirmation page\n const handlePaymentMiddleWare = async (error: any, data?: object) => {\n try {\n if (error) {\n throw error\n }\n const {\n order_details: { order_hash },\n } = reviewData\n\n let paymentSuccessResponse\n\n if (isFreeTickets) {\n paymentSuccessResponse = await handleFreeSuccess(order_hash)\n } else if (paymentPlanIsAvailable && showPaymentPlanSection) {\n paymentSuccessResponse = await createPaymentPlan(\n order_hash,\n _get(data, 'paymentMethodId', '')\n )\n } else {\n paymentSuccessResponse = await handlePaymentSuccess(order_hash)\n }\n\n if (paymentSuccessResponse.status === 200) {\n handlePayment(paymentSuccessResponse)\n setPaymentIsLoading(false)\n\n // clear seat-map related data from localStorage\n localStorage.removeItem('reservationData')\n localStorage.removeItem(`reservationStart-${eventId}`)\n localStorage.removeItem('ownReservations')\n localStorage.removeItem('tierId')\n\n if (isBrowser) {\n (window as any)?.dataLayer?.push({\n event: 'Purchase',\n orderValue: orderData.total,\n orderCurrency: orderData.currency,\n orderId: orderData.id,\n })\n }\n }\n } catch (e) {\n setError(_get(e, 'response.data.message'))\n setPaymentIsLoading(false)\n onPaymentError(e.response || e, reviewData.event_details.slug)\n }\n }\n\n const showPaymentForm = () => {\n let showPaymentForm = !isFreeTickets\n\n if (\n paymentPlanIsAvailable &&\n showPaymentPlanSection &&\n !!paymentPlanConfig.saved_card?.stripe_payment_method_id\n ) {\n showPaymentForm = !paymentPlanUseSavedCard\n }\n\n return showPaymentForm\n }\n const updateSessionInformation = () => {\n if (isBrowser && !!orderData?.id) {\n window.localStorage.setItem(\n 'paymentConfiguration',\n JSON.stringify({\n paymentPlanUseSavedCard,\n showPaymentPlanSection,\n orderId: orderData?.id,\n })\n )\n }\n }\n\n const themeMui = createTheme(themeOptions)\n const hasTableTypes = Boolean(Number(orderData.guest_count))\n const paymentFieldsData = hasTableTypes\n ? [\n {\n label: 'Event',\n id: 'product_name',\n },\n {\n label: '',\n id: 'tableTypes',\n },\n {\n label: 'Total (incl. fees, card processing and taxes)',\n id: 'total',\n normalizer: (value: string, currency: string) =>\n currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(parseFloat(value)),\n currency\n ),\n },\n {\n label: 'Pay Now',\n id: 'pay_now',\n normalizer: (value: string, currency: string) =>\n currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(parseFloat(value)),\n currency\n ),\n },\n {\n label: 'Pay On Check-in',\n id: 'debt',\n normalizer: (value: string, currency: string) =>\n currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(parseFloat(value)),\n currency\n ),\n },\n ]\n : paymentFields\n const isTable = orderData?.guest_count\n return (\n <ThemeProvider theme={themeMui}>\n <div className=\"payment_page\">\n {enableTimer && (\n <TimerWidget\n expires_at={_get(reviewData, 'expires_at', 0)}\n buyLoading={paymentIsLoading}\n onCountdownFinish={onCountdownFinish}\n />\n )}\n {error && (\n <Alert severity=\"error\" onClose={onErrorClose} variant=\"filled\">\n {error}\n </Alert>\n )}\n {paymentDataIsLoading && <Loader />}\n {!paymentDataIsLoading && (\n <Container maxWidth=\"md\">\n {showFormTitle && <h1>{isTable ? 'Get Your Tables' : formTitle}</h1>}\n <div className=\"order_info_text\">{orderInfoLabel}</div>\n <div\n className=\"order_info_section\"\n style={{ display: hasTableTypes ? 'block' : 'grid' }}\n >\n {_map(paymentFieldsData, field => {\n const { id, label, className = '', normalizer = _identity } = field\n let value = orderData[id as keyof IOrderData]\n let component = null\n\n if (field.id === 'add_ons' && _isEmpty(value)) {\n return false\n }\n\n if (\n field.id === 'total' &&\n paymentPlanIsAvailable &&\n showPaymentPlanSection\n ) {\n value = '' + paymentPlanConfig.total\n }\n\n if (field.id === 'tableTypes') {\n const valueArray = value as Array<any>\n\n component = (\n <div\n key={id}\n className=\"order_info_block\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {_map(valueArray, tableTypeItem => (\n <div\n key={tableTypeItem.id}\n style={{\n display: 'grid',\n gridTemplateColumns: '33% 33% 33%',\n gridColumnGap: '10%',\n }}\n >\n <div className=\"order_info_block\">\n <div className=\"order_info_title\">Table Type</div>\n <div className={`${className} order_info_text`}>\n {tableTypeItem.ticketType}\n </div>\n </div>\n <div className=\"order_info_block\">\n <div className=\"order_info_title\">Number of Tables</div>\n <div className={`${className} order_info_text`}>\n {tableTypeItem.count}\n </div>\n </div>\n <div className=\"order_info_block\">\n <div className=\"order_info_title\">Guest Count</div>\n <div className={`${className} order_info_text`}>\n {tableTypeItem.quantity}\n </div>\n </div>\n </div>\n ))}\n </div>\n )\n }\n\n return (\n component || (\n <div key={id} className=\"order_info_block\">\n <div className=\"order_info_title\">{label}</div>\n <div className={`${className} order_info_text`}>\n {typeof value === 'string' || typeof value === 'number'\n ? normalizer(value, currency)\n : _map(value, item => (\n <div key={item.id} className=\"add-on-container\">\n <span>{item.quantity}</span>\n <span className=\"add-on-x\">{' x '}</span>\n <span>\n {item.groupName ? item.groupName + ' - ' : ''}\n </span>\n <span>{item.name}</span>\n <span>{' - '}</span>\n <span>\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(parseFloat(item.price)),\n currency\n )}\n </span>\n <span className=\"add-on-each\">{' each'}</span>\n </div>\n ))}\n </div>\n </div>\n )\n )\n })}\n </div>\n {!isFreeTickets && paymentPlanIsAvailable && (\n <div className=\"payment_toggle\">\n <Checkbox\n label={\n <span className=\"payment_plan_toggle_label\">\n Click to checkout using Payment Plan\n </span>\n }\n required={true}\n onChange={(_: any) => {\n setShowPaymentPlanSection(!showPaymentPlanSection)\n }}\n checked={showPaymentPlanSection}\n />\n </div>\n )}\n {showPaymentPlanSection && (\n <PaymentPlanSection\n paymentPlanConfig={paymentPlanConfig}\n currency={currency}\n paymentPlanUseSavedCard={paymentPlanUseSavedCard}\n setPaymentPlanUseSavedCard={setPaymentPlanUseSavedCard}\n />\n )}\n {showPaymentForm() ? (\n <div className=\"payment_info\">\n <div className=\"payment_info_label\">{paymentInfoLabel}</div>\n {showErrorText && <p className=\"payment_info__error\">{errorText}</p>}\n <div>\n <Elements\n stripe={getStripePromise(reviewData)}\n options={elementsOptions}\n >\n <StripePayment\n stripe_client_secret={\n paymentPlanIsAvailable && showPaymentPlanSection\n ? paymentPlanConfig.stripe_setup_intent_secret\n : _get(reviewData, 'payment_method.stripe_client_secret')\n }\n hasSeatMapActions={reviewData.event_details.flagSeatMapAllowed}\n total={orderData.guest_count ? orderData.pay_now : orderData.total}\n onSubmit={handlePaymentMiddleWare}\n error={error}\n orderId={orderData.id}\n currency={orderData.currency}\n billing_info={reviewData.billing_info}\n isLoading={paymentIsLoading}\n handleSetLoading={value => setPaymentIsLoading(value)}\n conditions={conditions}\n stripeCardOptions={stripeCardOptions}\n disableZipSection={disableZipSection}\n paymentButtonText={paymentButtonText}\n forPaymentPlan={paymentPlanIsAvailable && showPaymentPlanSection}\n />\n </Elements>\n </div>\n </div>\n ) : (\n <div\n className={`payment_button ${\n paymentIsLoading ? 'disabled-payment-button' : ''\n }`}\n >\n <button\n disabled={paymentIsLoading}\n type=\"button\"\n onClick={() => {\n setPaymentIsLoading(true)\n let data\n\n if (\n paymentPlanIsAvailable &&\n showPaymentPlanSection &&\n paymentPlanUseSavedCard\n ) {\n data = {\n paymentMethodId:\n paymentPlanConfig.saved_card?.stripe_payment_method_id,\n }\n }\n\n handlePaymentMiddleWare(null, data)\n }}\n >\n {paymentIsLoading ? (\n <CircularProgress size={26} />\n ) : isFreeTickets ? (\n 'Complete Registration'\n ) : (\n 'Confirm Payment Plan'\n )}\n </button>\n </div>\n )}\n </Container>\n )}\n </div>\n </ThemeProvider>\n )\n}\n","export const getImage = (name: string = ''): any => {\n let image: any = ''\n\n if (!name.trim().length) {\n return image\n }\n\n if (process.env.NODE_ENV === 'production') {\n image = require(`./images/${name}`)\n return image.default\n }\n\n return image\n}\n","import _identity from 'lodash/identity'\nimport React from 'react'\nimport SVG from 'react-inlinesvg'\n\nimport { getImage } from '../../utils/getImage'\n\ninterface IShareButtonProps {\n url: string;\n disabled: boolean;\n children: Node;\n}\n\nexport const SpotifyIcon = () => <SVG src={getImage('spotify.svg')} />\n\nexport const InstagramIcon = () => <SVG src={getImage('instagram.svg')} />\n\nexport const SocialButton = (props: IShareButtonProps) => {\n const { children, url, disabled } = props\n\n const handleClick = () => {\n window.open(url)\n }\n\n return (\n <button\n className={`react-share__ShareButton ${disabled ? 'disabled-action' : ''}`}\n type=\"button\"\n onClick={!disabled ? handleClick : _identity}\n >\n {children}\n </button>\n )\n}\n","import {\n EmailIcon,\n EmailShareButton,\n FacebookIcon,\n FacebookMessengerIcon,\n FacebookMessengerShareButton,\n FacebookShareButton,\n HatenaIcon,\n HatenaShareButton,\n InstapaperIcon,\n InstapaperShareButton,\n LineIcon,\n LineShareButton,\n LinkedinIcon,\n LinkedinShareButton,\n LivejournalIcon,\n LivejournalShareButton,\n MailruIcon,\n MailruShareButton,\n OKIcon,\n OKShareButton,\n PinterestIcon,\n PinterestShareButton,\n PocketIcon,\n PocketShareButton,\n RedditIcon,\n RedditShareButton,\n TelegramIcon,\n TelegramShareButton,\n TumblrIcon,\n TumblrShareButton,\n TwitterIcon,\n TwitterShareButton,\n ViberIcon,\n ViberShareButton,\n VKIcon,\n VKShareButton,\n WeiboIcon,\n WeiboShareButton,\n WhatsappIcon,\n WhatsappShareButton,\n WorkplaceIcon,\n WorkplaceShareButton,\n} from 'react-share'\n\nimport { InstagramIcon, SocialButton, SpotifyIcon } from '../common/socials'\n\nconst config: any = {\n facebook: { component: FacebookShareButton, icon: FacebookIcon },\n messenger: {\n component: FacebookMessengerShareButton,\n icon: FacebookMessengerIcon,\n },\n twitter: { component: TwitterShareButton, icon: TwitterIcon },\n linkedin: { component: LinkedinShareButton, icon: LinkedinIcon },\n pinterest: { component: PinterestShareButton, icon: PinterestIcon },\n vk: { component: VKShareButton, icon: VKIcon },\n ok: { component: OKShareButton, icon: OKIcon },\n telegram: { component: TelegramShareButton, icon: TelegramIcon },\n whatsapp: { component: WhatsappShareButton, icon: WhatsappIcon },\n reddit: { component: RedditShareButton, icon: RedditIcon },\n tumblr: { component: TumblrShareButton, icon: TumblrIcon },\n mailru: { component: MailruShareButton, icon: MailruIcon },\n email: { component: EmailShareButton, icon: EmailIcon },\n livejournal: { component: LivejournalShareButton, icon: LivejournalIcon },\n viber: { component: ViberShareButton, icon: ViberIcon },\n workplace: { component: WorkplaceShareButton, icon: WorkplaceIcon },\n line: { component: LineShareButton, icon: LineIcon },\n pocket: { component: PocketShareButton, icon: PocketIcon },\n instapaper: { component: InstapaperShareButton, icon: InstapaperIcon },\n weibo: { component: WeiboShareButton, icon: WeiboIcon },\n hatena: { component: HatenaShareButton, icon: HatenaIcon },\n instagram: { component: SocialButton, icon: InstagramIcon },\n spotify: { component: SocialButton, icon: SpotifyIcon },\n}\n\nexport default function(key: string) {\n return config[key]\n}\n","import _identity from 'lodash/identity'\nimport React, { ReactElement } from 'react'\n\nimport { isValidNumber } from '../../utils/isValidNumber'\nimport config from './config'\nimport { IShareButton } from './index'\n\nconst SocialComponent = ({\n mainLabel,\n subLabel,\n platform,\n shareData,\n points,\n onAfterShare,\n alreadyApplied,\n oneTimeAction,\n}: IShareButton) => {\n const Component = config(platform)?.component\n const Icon = config(platform)?.icon\n const isActionDisabled = alreadyApplied && oneTimeAction\n return (\n <>\n {Component && (\n <Component {...shareData} disabled={isActionDisabled}>\n <div\n onKeyDown={_identity}\n onClick={!isActionDisabled ? onAfterShare : _identity}\n className={`social-media-sharing ${platform}`}\n >\n <div className=\"share-icon\">\n <Icon size={32} round />\n </div>\n <span className=\"share-text\">\n <span className=\"main-label\">{mainLabel} </span>\n <span className=\"sub-label\">{subLabel}</span>\n </span>\n {isValidNumber(points) && (\n <div className=\"share-points\">\n <span className=\"points-count\">{points}</span>\n <span className=\"points-text\">Points</span>\n </div>\n )}\n </div>\n </Component>\n )}\n </>\n )\n}\n\ninterface SocialButtonsTypes {\n shareLink: string;\n name: string;\n appId: string;\n showDefaultShareButtons: boolean;\n shareButtons: IShareButton[];\n titleText?: string;\n footerText?: string | ReactElement;\n clientLabel?: string;\n showReferralsInfoText?: boolean;\n onAfterShare?: (eventActionId: string | undefined) => void;\n}\n\nconst SocialButtons = ({\n showDefaultShareButtons,\n shareLink,\n name,\n appId,\n shareButtons,\n titleText = 'or use one of these convenient buttons:',\n footerText = (\n <p>\n We <strong>never</strong> post on Facebook without your permission!\n </p>\n ) as ReactElement,\n clientLabel,\n onAfterShare = _identity,\n showReferralsInfoText = false,\n}: SocialButtonsTypes) => (\n <>\n {titleText && <div className=\"convenient_buttons\">{titleText}</div>}\n <div className=\"social-media-btns\">\n {showDefaultShareButtons && (\n <>\n <SocialComponent\n mainLabel=\"Share on\"\n subLabel=\"Facebook\"\n platform=\"facebook\"\n shareData={{\n quote: name,\n url: shareLink,\n }}\n />\n <SocialComponent\n mainLabel=\"Tweet to your\"\n subLabel=\"Followers\"\n platform=\"twitter\"\n shareData={{\n title: name,\n url: shareLink,\n }}\n />\n <SocialComponent\n mainLabel=\"Message friends on\"\n subLabel=\"Facebook\"\n platform=\"messenger\"\n shareData={{\n appId,\n url: shareLink,\n }}\n />\n <SocialComponent\n mainLabel=\"Message friends on\"\n subLabel=\"Whatsapp\"\n platform=\"whatsapp\"\n shareData={{\n title: name,\n url: shareLink,\n }}\n />\n </>\n )}\n {shareButtons.map((shareButton: IShareButton, index: number) => (\n <SocialComponent\n onAfterShare={() => onAfterShare(shareButton.eventActionId)}\n key={index}\n {...shareButton}\n />\n ))}\n </div>\n {showDefaultShareButtons || shareButtons.length ? footerText : null}\n {(showReferralsInfoText || Boolean(clientLabel)) && (\n <p className=\"note-message\">\n <span>\n *Please note, only purchases made from a different{' '}\n {clientLabel || 'Ticket Fairy'} account can count towards your referrals\n </span>\n <span>\n {' '}\n so please make sure you ask your friends to buy their own tickets using their\n own {clientLabel || 'Ticket Fairy'} account!\n </span>\n </p>\n )}\n </>\n)\n\nexport default SocialButtons\n","import _isNumber from 'lodash/isNumber'\n\nexport const isValidNumber = (value?: number | string): boolean => {\n if (isNaN(Number(value))) {\n return false\n }\n return _isNumber(Number(value))\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from '../api/publicRequest'\n\nexport const getPreRegistrationInfluancers = async (\n data: IInfluancersRequestData\n): Promise<IInfluancersResponseData> => {\n const response: AxiosResponse<IInfluancersResponseData, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${data.eventId}/pre-registration/influencers`)\n return response.data\n}\n\nexport const getPreRegistrationShareOptions = async (\n data: IShareOptionsRequestData\n): Promise<IShareOptionsResponseData> => {\n const response: AxiosResponse<IShareOptionsResponseData, AxiosRequestConfig> =\n await publicRequest.get(`/v1/pre-registration/${data.hash}/confirmation-page`)\n return response.data\n}\n\nexport const submitShareAction = async (\n data: ISubmitShareActionRequestData\n): Promise<ISubmitShareActionResponseData> => {\n const { eventActionId, accessToken, hash } = data\n\n const response: AxiosResponse<ISubmitShareActionResponseData, AxiosRequestConfig> =\n await publicRequest.post(`/v1/pre-registration/${hash}/submit-action`, {\n data: {\n attributes: {\n phase: 'pre-registration',\n eventActionId: Number(eventActionId),\n accessToken,\n },\n },\n })\n return response.data\n}\n","import { useEffect, useRef, useState } from 'react'\n\nimport { getCookieByName } from '../utils'\n\nexport const useCookieListener = (\n key: string,\n handler: (value: string | null) => void\n) => {\n const getCookie = () => getCookieByName(key)\n const [intervalValue, setIntervalValue] = useState<NodeJS.Timeout>()\n const cookieRef = useRef<string>(getCookie())\n\n const handleCookieChange = () => {\n const currentCookie = getCookie()\n const prevCookie = cookieRef.current\n\n if (currentCookie !== prevCookie) {\n cookieRef.current = getCookie()\n handler(cookieRef.current)\n }\n }\n\n useEffect(() => {\n const interval = setInterval(handleCookieChange, 500)\n setIntervalValue(interval)\n\n return () => {\n intervalValue && clearInterval(intervalValue)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n","import React, { useEffect, useState } from 'react'\nimport moment from 'moment-timezone'\nimport './style.css'\n\ninterface CountdownTypes {\n startDate: string;\n timezone?: string;\n title?: string;\n message?: string;\n showMessage?: boolean;\n disableLeadingZero?: boolean;\n callback?: () => void;\n isLoggedIn?: boolean;\n}\n\nconst isTimeExpired = (startDate: string, timezone: string) => {\n return !moment(startDate).isAfter(moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss'))\n}\n\nfunction Countdown({\n startDate,\n timezone = moment.tz.guess(),\n title = '',\n message = '',\n showMessage = false,\n disableLeadingZero = false,\n callback = () => {},\n isLoggedIn\n}: CountdownTypes) {\n const [duration, setDuration] = useState('')\n const [timeExpired, setTimeExpired] = useState(false)\n\n useEffect(() => {\n setTimeExpired(isTimeExpired(startDate, timezone))\n }, [])\n\n useEffect(() => {\n let timer: any;\n\n if(!timeExpired) {\n timer = setInterval(() => {\n if(isTimeExpired(startDate, timezone)) {\n clearInterval(timer)\n setTimeExpired(true)\n callback()\n return\n }\n\n const currentDate = moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss')\n const diffTime = moment(startDate).diff(currentDate)\n const duration = moment.duration(diffTime)\n const dateArr: any = {\n year: duration.years(),\n month: duration.months(),\n day: duration.days(),\n hour: duration.hours(),\n minute: duration.minutes(),\n second: duration.seconds(),\n }\n let timeLeft = ''\n \n for(let date in dateArr) {\n const unit = dateArr[date] === 1 ? date : date + 's'\n let val = dateArr[date]\n\n if (!disableLeadingZero && String(dateArr[date]).length === 1) {\n val = '0' + dateArr[date]\n }\n\n if(timeLeft) {\n timeLeft += `, ${val} ${unit}`\n } else if(dateArr[date]) {\n timeLeft += `${val} ${unit}`\n }\n }\n \n setDuration(timeLeft)\n }, 1000)\n }\n return () => {\n clearInterval(timer)\n }\n }, [timeExpired])\n\n return (\n <>\n {!timeExpired && duration && (\n <div className={`countdown ${!isLoggedIn ? 'countdown-on-bottom' : ''}`}>\n <div>\n <p className='title'>{title}</p>\n <p>{duration}</p>\n </div>\n {showMessage && <p className='message'>{message}</p>}\n </div>\n )}\n </>\n )\n}\n\nexport default Countdown\n","import './style.css'\n\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport { Field, Form, Formik } from 'formik'\nimport _find from 'lodash/find'\nimport React, { useState } from 'react'\n\nimport { addToWaitingList } from '../../api'\nimport { isBrowser } from '../../utils'\nimport { ErrorFocus } from '../../utils/formikErrorFocus'\nimport {\n combineValidators,\n emailValidator,\n requiredValidator,\n} from '../../validators'\nimport { CustomField } from '../common/index'\n\ninterface WaitingListProps {\n tickets: any;\n eventId: number;\n defaultMaxQuantity: number;\n}\n\ninterface WaitingListFields {\n ticketTypeId: string;\n quantity: string;\n firstName: string;\n lastName: string;\n email: string;\n}\n\nconst generateQuantity = (n: number) => {\n const quantityList = []\n for (let i = 1; i <= n; i++) {\n quantityList.push({ label: i, value: i })\n }\n return quantityList\n}\n\nconst WaitingList = ({\n tickets = {},\n eventId,\n defaultMaxQuantity = 10,\n}: WaitingListProps) => {\n const userData =\n isBrowser && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n\n const [showSuccessMessage, setShowSuccessMessage] = useState(false)\n const [loading, setLoading] = useState(false)\n const ticketTypesList = Object.values(tickets).map((d: any) => ({\n label: d.displayName,\n value: d.id,\n }))\n\n const showTicketsField = Boolean(ticketTypesList.length)\n\n const handleSubmit = async (values: WaitingListFields) => {\n try {\n setLoading(true)\n const response = await addToWaitingList(eventId, { attributes: values })\n\n if (response.success) {\n setShowSuccessMessage(true)\n }\n } catch (error) {\n } finally {\n setLoading(false)\n }\n }\n\n return (\n <div className=\"waiting-list\">\n {showSuccessMessage ? (\n <div className=\"success-message\">\n <p className=\"added-success-message\">You've been added to the waiting list!</p>\n <p>You'll be notified if tickets become available.</p>\n </div>\n ) : (\n <>\n <h2>WAITING LIST</h2>\n <Formik\n initialValues={{\n ticketTypeId: '',\n quantity: '',\n firstName: userData.first_name || '',\n lastName: userData.last_name || '',\n email: userData.email || '',\n }}\n onSubmit={handleSubmit}\n >\n {({ values, setFieldValue }) => {\n const selectedTicket = _find(tickets, n => n.id === values.ticketTypeId)\n return (\n <Form>\n <ErrorFocus />\n {showTicketsField && (\n <>\n <div className=\"field-item\">\n <Field\n name=\"ticketTypeId\"\n label=\"Type of Ticket\"\n type=\"select\"\n component={CustomField}\n onChange={(e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setFieldValue('ticketTypeId', e.target.value)\n setFieldValue('quantity', '')\n }}\n selectOptions={[\n { label: 'Type of Ticket', value: '', disabled: true },\n ...ticketTypesList,\n ]}\n />\n </div>\n <div className=\"field-item\">\n <Field\n name=\"quantity\"\n label=\"Quantity Requested\"\n type=\"select\"\n component={CustomField}\n selectOptions={[\n {\n label: 'Quantity Requested',\n value: '',\n disabled: true,\n },\n ...generateQuantity(selectedTicket?.waitingListMaxQuantity || (defaultMaxQuantity ?? 10)\n ),\n ]}\n />\n </div>\n </>\n )}\n <div className=\"field-item\">\n <Field\n name=\"firstName\"\n label=\"First name\"\n validate={(value: string) =>\n requiredValidator(value, 'Please enter your First name')\n }\n component={CustomField}\n />\n </div>\n <div className=\"field-item\">\n <Field\n name=\"lastName\"\n label=\"Last name\"\n validate={(value: string) =>\n requiredValidator(value, 'Please enter your Last name')\n }\n component={CustomField}\n />\n </div>\n <div className=\"field-item\">\n <Field\n name=\"email\"\n label=\"Email\"\n validate={combineValidators(\n (value: string) =>\n requiredValidator(value, 'Please enter your Email'),\n (value: string) => emailValidator(value)\n )}\n component={CustomField}\n />\n </div>\n\n <Button\n type=\"submit\"\n variant=\"contained\"\n className=\"waiting-list-button\"\n >\n {loading ? (\n <CircularProgress size=\"22px\" />\n ) : (\n 'ADD TO WAITING LIST'\n )}\n </Button>\n </Form>\n )\n }}\n </Formik>\n </>\n )}\n </div>\n )\n}\n\nexport default WaitingList\n","import React from 'react'\nimport Button from 'react-bootstrap/Button'\n\nexport interface IAccessCodeSectionProps {\n code: string;\n setCode: (value: string) => void;\n updateTickets: (value: boolean) => void;\n}\n\n// This section is seperate because additional changes layter may be applied to Access Code\n\nexport const AccessCodeSection = ({\n code,\n setCode,\n updateTickets\n}: IAccessCodeSectionProps) => {\n const isAccessCodeHasValue = !!code.trim()\n\n return (\n <div className=\"access-code-block\">\n <div className=\"access-code-block\">\n <p className=\"access-code-text\">\n Access code required\n </p>\n </div>\n <input\n className=\"access-code-input\"\n placeholder=\"\"\n onChange={e => {\n setCode(e.target.value)\n }}\n onKeyPress={event => {\n if (event.key === 'Enter' && isAccessCodeHasValue) {\n updateTickets(true)\n }\n }}\n />\n <Button\n className=\"access-submit-button\"\n onClick={() => {\n if (isAccessCodeHasValue) {\n updateTickets(true)\n }\n }}\n >\n ENTER\n </Button>\n </div>\n )\n}\n","import React from 'react'\nimport Button from 'react-bootstrap/Button'\nimport SVG from 'react-inlinesvg'\n\nimport DoneSvg from '../../assets/images/done.svg'\nimport XmarkSvg from '../../assets/images/xmark.svg'\n\nexport interface IPromoCodeSectionProps {\n code: string;\n codeIsApplied: boolean;\n showPromoInput: boolean;\n setCode: (value: string) => void;\n setShowPromoInput: (value: boolean) => void;\n updateTickets: (value: boolean, type: string) => void;\n setCodeIsApplied: (value: boolean) => void;\n codeIsInvalid: boolean;\n setCodeIsInvalid: (value: boolean) => void;\n promoText?: string;\n showAlertIcons?: boolean;\n}\n\nexport const PromoCodeSection = ({\n code,\n codeIsApplied,\n showPromoInput,\n setCode,\n setShowPromoInput,\n updateTickets,\n setCodeIsApplied,\n codeIsInvalid,\n setCodeIsInvalid,\n promoText,\n showAlertIcons\n}: IPromoCodeSectionProps) => {\n const isPromoCodeHasValue = !!code.trim()\n\n const renderInputField = () => (\n <div className=\"promo-code-block\">\n <div className=\"promo-code-block\">\n <p className=\"promo-code-text\">Promo code</p>\n </div>\n <input\n className=\"promo-code-input\"\n placeholder=\"\"\n onChange={e => {\n setCode(e.target.value)\n }}\n onKeyPress={event => {\n if (event.key === 'Enter' && isPromoCodeHasValue) {\n setShowPromoInput(false)\n updateTickets(true, 'promo')\n }\n }}\n />\n <Button\n className=\"promo-submit-button\"\n onClick={() => {\n if (isPromoCodeHasValue) {\n setShowPromoInput(false)\n updateTickets(true, 'promo')\n }\n }}\n >\n APPLY\n </Button>\n </div>\n )\n\n return (\n <div>\n {codeIsApplied ? (\n <div className=\"alert-info\">\n {showAlertIcons && (\n <SVG\n src={DoneSvg}\n preProcessor={code =>\n code.replace(/fill=\".*?\"/g, 'fill=\"currentColor\"')\n }\n />\n )}\n <p className=\"promo-code-success\">PROMO CODE APPLIED SUCCESSFULLY</p>\n </div>\n ) : null}\n {codeIsInvalid ? (\n <div className=\"alert-info fail\">\n {showAlertIcons && (\n <SVG\n src={XmarkSvg}\n />\n )}\n <p className=\"promo-code-fail\">Invalid Promo Code</p>\n </div>\n ) : null}\n {!showPromoInput && (\n <Button\n className=\"promo-code-button\"\n placeholder=\"Promo Codes\"\n onClick={() => {\n setCodeIsApplied(false)\n setShowPromoInput(true)\n setCodeIsInvalid(false)\n }}\n >\n {promoText ?? 'Got a promo code? Click here'}\n </Button>\n )}\n {showPromoInput && renderInputField()}\n </div>\n )\n}","import { useEffect } from 'react'\n\nimport { postReferralVisits } from '../../api'\n\ninterface IReferralLogicProps {\n eventId: string | number;\n}\n\nexport const ReferralLogic = (props: IReferralLogicProps) => {\n const { eventId } = props\n\n useEffect(() => {\n const isWindowDefined = typeof window !== 'undefined'\n\n if (isWindowDefined) {\n const params: URLSearchParams = new URL(`${window.location}`).searchParams\n const referralId = params.get('ttf_r') || params.get('referrer_id') || ''\n const referralValue = [eventId, '.', referralId].join('')\n const isAlreadyCounted = localStorage.getItem('referral_key') === referralValue\n\n if (referralId && eventId && !isAlreadyCounted) {\n (async () => {\n try {\n await postReferralVisits(`${eventId}`, referralId)\n localStorage.setItem('referral_key', referralValue)\n } catch (error) {}\n })()\n }\n }\n }, [eventId])\n\n return null\n}\n","import './style.css'\n\nimport Box from '@mui/material/Box'\nimport FormControl from '@mui/material/FormControl'\nimport MenuItem from '@mui/material/MenuItem'\nimport Select from '@mui/material/Select'\nimport _get from 'lodash/get'\nimport React from 'react'\n\nimport { defineIsSalesClosed, getTicketSelectOptions } from './utils'\n\ninterface ITicketRowProps {\n ticketTier: any;\n prevTicketTier: any;\n selectedTickets: any;\n handleTicketSelect: any;\n event: any;\n isSeatMapAllowed?: boolean;\n tableType?: boolean;\n}\n\nexport const TicketRow = ({\n ticketTier,\n prevTicketTier,\n selectedTickets,\n handleTicketSelect,\n event,\n isSeatMapAllowed,\n tableType,\n}: ITicketRowProps) => {\n const soldOutMessage = ticketTier.soldOutMessage\n ? `${ticketTier.soldOutMessage}`.toUpperCase()\n : 'SOLD OUT'\n const isSalesClosed = defineIsSalesClosed({\n salesStarted: ticketTier.salesStarted,\n salesEnded: ticketTier.salesEnded,\n presalesStarted: event?.presalesStarted,\n presalesEnded: event?.presalesEnded,\n presalesEnabled: event?.presales_enabled,\n })\n const maxCount = tableType ? ticketTier.maxGuests : ticketTier.maxQuantity\n const minCount = tableType ? ticketTier.minGuests : ticketTier.minQuantity\n const { multiplier } = ticketTier\n const options = getTicketSelectOptions(maxCount, minCount, multiplier)\n\n const ticketsClosedMessage = !ticketTier.salesStarted\n ? 'Sales not started'\n : 'Sales Ended'\n const canPurchaseTicket = ticketTier.displayTicket && ticketTier.maxQuantity\n const isDirectPurchaseAllowed = _get(ticketTier, 'allowDirectPurchase', false)\n\n const onSaleContent = (\n <div className=\"get-tickets\">\n {ticketTier.isTable && <span>GUESTS</span>}\n <Box className=\"get-tickets__selectbox\">\n <FormControl fullWidth>\n <Select\n sx={{ borderRadius: 0 }}\n value={selectedTickets[ticketTier.id] ? selectedTickets[ticketTier.id] : 0}\n onChange={handleTicketSelect}\n displayEmpty\n inputProps={{ 'aria-label': 'Without label' }}\n MenuProps={{\n PaperProps: {\n sx: { maxHeight: 150 },\n className: 'get-tickets-paper',\n },\n }}\n >\n {options.map((option, index) => (\n <MenuItem key={index} value={option.value}>\n {option.value}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Box>\n </div>\n )\n\n let returnValue: any = ''\n\n // ticketTier.soldOut === false --> means that ticket is in the stock\n const isSoldOut =\n ticketTier.sold_out ||\n !ticketTier.displayTicket ||\n ticketTier.soldOut ||\n ticketTier.soldOut === false\n\n if (isSoldOut) {\n returnValue = soldOutMessage\n } else if (isSalesClosed) {\n returnValue = ticketsClosedMessage\n } else if (canPurchaseTicket && isSeatMapAllowed && !isDirectPurchaseAllowed) {\n // Seat Map Tickets renderer logic\n returnValue = null\n } else if (\n canPurchaseTicket ||\n (canPurchaseTicket && event?.presalesStarted && !event?.presalesEnded)\n ) {\n returnValue = onSaleContent\n } else if (_get(prevTicketTier, 'in_stock')) {\n returnValue = 'SOON'\n }\n\n return <>{returnValue} </>\n}\n","export const getTicketSelectOptions = (maxCount = 10, minCount = 1, multiplier = 1) => {\n const options = [{ label: 0, value: 0 }]\n for (let i = minCount || 1; i <= Math.min(50, maxCount); i += multiplier) {\n options.push({ label: i, value: i })\n }\n return options\n}\n\ninterface eventDatesInfo {\n salesStarted: boolean;\n salesEnded: boolean;\n presalesStarted: boolean;\n presalesEnded: boolean;\n presalesEnabled: boolean;\n}\n\nexport const defineIsSalesClosed = (eventDatesInfo: eventDatesInfo): boolean => {\n const { salesStarted, salesEnded, presalesStarted, presalesEnded, presalesEnabled } =\n eventDatesInfo\n let isSalesClosed = false\n if (!salesStarted || (salesStarted && salesEnded)) {\n isSalesClosed = true\n }\n if (presalesEnabled) {\n if (\n (!presalesStarted && !presalesEnded) ||\n (presalesStarted && presalesEnded && !salesStarted)\n ) {\n isSalesClosed = true\n } else {\n isSalesClosed = false\n }\n }\n return isSalesClosed\n}\n","import './style.css'\n\nimport _sortBy from 'lodash/sortBy'\nimport React, { ReactNode } from 'react'\n\nimport { TicketRow } from './TicketRow'\n\ninterface ITicketsSectionProps {\n event: any;\n ticketsList: any;\n selectedTickets: any;\n handleTicketSelect: any;\n sortBySoldOut: boolean;\n hideTicketsHeader: boolean;\n hideTableTicketsHeader: boolean;\n tableTickets: any;\n ticketsHeaderComponent?: ReactNode;\n tableTicketsHeaderComponent?: ReactNode;\n showGroupNameBlock?: boolean;\n currencySybmol?: string;\n isSeatMapAllowed?: boolean;\n}\n\nexport const TicketsSection = ({\n event = { currency: {} },\n ticketsList,\n selectedTickets,\n handleTicketSelect,\n sortBySoldOut,\n ticketsHeaderComponent,\n tableTicketsHeaderComponent,\n hideTicketsHeader,\n hideTableTicketsHeader,\n showGroupNameBlock,\n currencySybmol,\n isSeatMapAllowed,\n tableTickets,\n}: ITicketsSectionProps) => {\n const {\n currency: { symbol },\n } = event\n const sortedTicketsList = sortBySoldOut\n ? _sortBy(_sortBy(ticketsList, 'sortOrder'), 'soldOut')\n : _sortBy(ticketsList, 'sortOrder')\n const showGroup = !!sortedTicketsList.find(ticket => ticket.groupName)\n const priceSymbol = currencySybmol ? currencySybmol : symbol\n return (\n <>\n {!hideTicketsHeader && ticketsHeaderComponent}\n {sortedTicketsList.map((ticket, i, arr) => {\n const ticketPrice = `${priceSymbol} ${(+ticket.price).toFixed(2)}`\n const ticketOldPrice = `${priceSymbol} ${(+ticket.oldPrice).toFixed(2)}`\n\n const isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut\n const ticketSelect = (event: any) => {\n const { value } = event.target\n handleTicketSelect(ticket.id, value)\n }\n\n let ticketIsDiscounted = false\n if (ticket.oldPrice && !isSoldOut && ticket.oldPrice !== ticket.price) {\n ticketIsDiscounted = true\n }\n\n const ticketIsFree = +ticket.price === 0\n const ticketPriceElem = isSoldOut\n ? 'SOLD OUT'\n : ticketIsFree\n ? 'FREE'\n : ticketPrice\n const isNewGroupTicket = ticket?.groupName !== arr[i - 1]?.groupName\n\n return (\n <React.Fragment key={ticket.id || ticket.name}>\n {showGroupNameBlock && showGroup && isNewGroupTicket ? (\n <div className=\"event-detail__tier group-title\">\n {ticket.groupName || ''}\n </div>\n ) : null}\n <div className={`event-detail__tier ${isSoldOut ? 'disabled' : ''}`}>\n <div className=\"event-detail__tier-name\">\n {ticket.displayName || ticket.name}\n </div>\n <div className=\"event-tickets-container\">\n <div className=\"event-detail__tier-price\">\n {ticketIsDiscounted && <p className=\"old-price\">{ticketOldPrice}</p>}\n <p className={isSoldOut ? 'sold-out' : ''}>{ticketPriceElem}</p>\n {!isSoldOut && !ticketIsFree && (\n <p className=\"fees\">\n {ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'}\n </p>\n )}\n </div>\n <div className=\"event-detail__tier-state\" style={{ minWidth: 55 }}>\n <TicketRow\n ticketTier={ticket}\n prevTicketTier={arr[i - 1]}\n selectedTickets={selectedTickets}\n handleTicketSelect={ticketSelect}\n event={event}\n />\n </div>\n </div>\n </div>\n </React.Fragment>\n )\n })}\n {!hideTableTicketsHeader && tableTicketsHeaderComponent}\n {tableTickets.map((ticket: any, i: any, arr: any) => {\n const ticketPrice = `${priceSymbol} ${(+ticket.price).toFixed(2)}`\n const ticketOldPrice = `${priceSymbol} ${(+ticket.oldPrice).toFixed(2)}`\n\n const isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut\n const ticketSelect = (event: any) => {\n const { value } = event.target\n handleTicketSelect(ticket.id, value, true)\n }\n\n let ticketIsDiscounted = false\n if (ticket.oldPrice && !isSoldOut && ticket.oldPrice !== ticket.price) {\n ticketIsDiscounted = true\n }\n\n const ticketIsFree = +ticket.price === 0\n const ticketPriceElem = isSoldOut\n ? 'SOLD OUT'\n : ticketIsFree\n ? 'FREE'\n : ticketPrice\n const isNewGroupTicket = ticket?.groupName !== arr[i - 1]?.groupName\n\n return (\n <>\n <React.Fragment key={ticket.id || ticket.name}>\n {showGroupNameBlock && showGroup && isNewGroupTicket ? (\n <div className=\"event-detail__tier group-title\">\n {ticket.groupName || ''}\n </div>\n ) : null}\n <div className={`event-detail__tier ${isSoldOut ? 'disabled' : ''}`}>\n <div className=\"event-detail__tier-name\">\n {ticket.displayName || ticket.name}\n </div>\n <div className=\"event-tickets-container\">\n <div className=\"event-detail__tier-price\">\n {ticketIsDiscounted && <p className=\"old-price\">{ticketOldPrice}</p>}\n <p className={isSoldOut ? 'sold-out' : ''}>{ticketPriceElem}</p>\n {!isSoldOut && !ticketIsFree && (\n <p className=\"fees\">\n {ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'}\n </p>\n )}\n {ticket.depositPercent && (\n <p className=\"deposits\">{ticket.depositPercent + '% DEPOSIT'}</p>\n )}\n </div>\n <div className=\"event-detail__tier-state\" style={{ minWidth: 55 }}>\n <TicketRow\n tableType={true}\n ticketTier={ticket}\n prevTicketTier={arr[i - 1]}\n selectedTickets={selectedTickets}\n handleTicketSelect={ticketSelect}\n isSeatMapAllowed={isSeatMapAllowed}\n event={event}\n />\n </div>\n </div>\n </div>\n </React.Fragment>\n </>\n )\n })}\n </>\n )\n}\n","import _map from 'lodash/map'\nimport moment from 'moment-timezone'\nimport React from 'react'\n\nconst EventInfoItem = ({ image, name }: EventInfoTypes) => (\n <div className=\"event-info\">\n <img src={image} alt=\"event\" />\n {name}\n </div>\n)\n\nconst tableConfig = (columns?: IColumnData[], key?: string) => {\n let config\n\n if (columns?.length) {\n return {\n header: _map(columns, item => item.label),\n body: _map(columns, item => {\n if (item.component) {\n const ItemComponent = item.component\n return (row: RowItems) => ({\n columnProps: item,\n component: <ItemComponent {...row} />,\n })\n }\n\n if (item.key === 'event') {\n return (row: RowItems) => ({\n columnProps: item,\n component: <EventInfoItem image={row.image} name={row.eventName} />,\n })\n }\n\n if (item.key === 'total') {\n return (row: RowItems) => ({\n columnProps: item,\n component: row.currency + row.amount,\n })\n }\n\n return (row: RowItems) => ({\n columnProps: item,\n component: item.normalizer\n ? item.normalizer(row[item.key as keyof RowItems])\n : row[item.key as keyof RowItems],\n })\n }) as ITableBodyType[],\n }\n }\n\n switch (key) {\n default:\n config = {\n header: ['Order No.', 'Date', 'Event', 'Total'],\n body: [\n (row: RowItems) => ({\n columnProps: {} as IColumnData,\n component: row.id,\n }),\n (row: RowItems) => ({\n columnProps: {} as IColumnData,\n component: row.timezone\n ? moment.tz(row.date, row.timezone).format('DD MMMM YYYY')\n : row.date,\n }),\n (row: RowItems) => ({\n columnProps: {} as IColumnData,\n component: <EventInfoItem image={row.image} name={row.eventName} />,\n }),\n (row: RowItems) => ({\n columnProps: {} as IColumnData,\n component: row.currency + row.amount,\n }),\n ] as ITableBodyType[],\n }\n }\n return config\n}\n\nexport default tableConfig\n","import TableCell from '@mui/material/TableCell'\nimport TableRow from '@mui/material/TableRow'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React from 'react'\n\nimport tableConfig from './tableConfig'\n\nconst Row = ({\n row,\n handleDetailsInfo,\n columns = [],\n hideDetailsButton,\n}: RowPropsTypes) => (\n <TableRow sx={{ '& > *': { borderBottom: 'unset' } }}>\n {tableConfig(columns).body.map((column: ITableBodyType, index: number) => (\n <TableCell\n component=\"th\"\n scope=\"row\"\n key={index}\n onClick={e => {\n const { columnProps, component }: IRowReturnType = column(row)\n const onCellClick = columnProps?.onCellClick || _identity\n const componentProps = _get(component, 'props', {})\n\n onCellClick(componentProps, e)\n }}\n >\n {column(row).component}\n </TableCell>\n ))}\n {!hideDetailsButton && (\n <TableCell component=\"th\" scope=\"row\">\n <button\n type=\"button\"\n className=\"order-details-button\"\n onClick={() => handleDetailsInfo(row.id)}\n >\n Details\n </button>\n </TableCell>\n )}\n </TableRow>\n)\n\nexport default Row\n","import React from 'react'\nimport FormGroup from '@mui/material/FormGroup'\nimport FormControlLabel from '@mui/material/FormControlLabel'\nimport Radio from '@mui/material/Radio';\nimport { FieldInputProps } from 'formik'\nimport { useTheme } from '@mui/styles'\n\nexport interface IRadioField {\n label: string | number | JSX.Element;\n field?: FieldInputProps<any>;\n}\n\ninterface IOtherProps {\n [key: string]: any;\n}\n\nexport const RadioField = ({\n label,\n field,\n theme,\n disableDropdown,\n ...rest\n}: IRadioField & IOtherProps) => {\n const customTheme: any = useTheme()\n return (\n <FormGroup>\n <FormControlLabel\n control={<Radio {...field} {...rest} />}\n label={label}\n componentsProps={{\n typography: customTheme?.checkbox\n }}\n />\n </FormGroup>\n )\n}\n","import './style.css'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Modal from '@mui/material/Modal'\nimport { Field, Form, Formik } from 'formik'\nimport React from 'react'\nimport SVG from 'react-inlinesvg'\nimport * as yup from 'yup'\n\nimport EmailSvg from '../../assets/images/email.svg'\nimport UserSvg from '../../assets/images/user.svg'\nimport { CheckboxField } from '../common/CheckboxField'\nimport { CustomField } from '../common/CustomField'\nimport { RadioField } from '../common/RadioField'\nimport { ITicketTypes } from '../orderDetailsContainer/ticketsTable'\n\ninterface Props {\n ticket: ITicketTypes;\n onClose: () => void;\n onSubmit: (values: InitialValuesTypes) => void;\n loading?: boolean;\n}\n\nexport interface InitialValuesTypes {\n to: string;\n first_name: string;\n last_name: string;\n email: string;\n confirm_email: string;\n confirm: boolean;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto'\n}\n\nconst schema = yup.object().shape({\n to: yup.string().required(),\n first_name: yup.string().when('to', {\n is: (to: string) => to === 'friend',\n then: yup.string().required('First Name is required')\n }),\n last_name: yup.string().when('to', {\n is: (to: string) => to === 'friend',\n then: yup.string().required('Last Name is required')\n }),\n email: yup.string().when('to', {\n is: (to: string) => to === 'friend',\n then: yup.string().email('Invalid email').required('Email is required')\n }),\n confirm_email: yup.string().when('to', {\n is: (to: string) => to === 'friend',\n then: yup.string().email('Invalid email').oneOf([yup.ref('email'), null], 'Emails must match').required('Confirm Email is required')\n }),\n confirm: yup.boolean().oneOf([true])\n})\n\nconst initialValues: InitialValuesTypes = {\n to: 'friend',\n first_name: '',\n last_name: '',\n email: '',\n confirm_email: '',\n confirm: false\n}\n\nexport const TicketResaleModal = ({\n ticket = {} as ITicketTypes,\n onClose = () => { },\n onSubmit = () => { },\n loading = false\n}: Props) => {\n const { hash, holder_name, event_name, currency, retain_amount_on_sale, ticket_type_is_active } = ticket\n\n return (\n <Modal\n open={true}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className='resale-modal'\n >\n <Box style={style}>\n <h3>Sell Ticket</h3>\n <div>\n <h3>Ticket Details</h3>\n <div>\n <h4>Event</h4>\n <p>{event_name}</p>\n </div>\n <div>\n <h4>Ticket Holder</h4>\n <p>{holder_name}</p>\n </div>\n <div>\n <h4>Ticket ID</h4>\n <p>{hash}</p>\n </div>\n </div>\n <div>\n <h3>Sell to Whom</h3>\n <Formik\n initialValues={initialValues}\n validationSchema={schema}\n onSubmit={onSubmit}\n >\n {({ values, isValid, dirty }) => (\n <Form>\n <div>\n <Field\n name='to'\n label='I want to sell the ticket to someone I know'\n type='radio'\n value='friend'\n component={RadioField}\n />\n {values.to === 'friend' && (\n <div className='sell-to-friend'>\n <div className='user-info-box'>\n <div className='field-box'>\n <div className='icon'>\n <SVG\n src={UserSvg}\n width='24'\n height='24'\n />\n </div>\n <Field\n name='first_name'\n label='First Name'\n type='text'\n component={CustomField}\n />\n </div>\n <div className='field-box'>\n <div className='empty-box' />\n <Field\n name='last_name'\n label='Last Name'\n type='text'\n component={CustomField}\n />\n </div>\n </div>\n <div className='email-info-box'>\n <div className='field-box'>\n <div className='icon'>\n <SVG\n src={EmailSvg}\n width='24'\n height='24'\n />\n </div>\n <Field\n name='email'\n label='Email address'\n type='text'\n component={CustomField}\n />\n </div>\n <div className='field-box'>\n <div className='empty-box' />\n <Field\n name='confirm_email'\n label='Confirm Email address'\n type='text'\n component={CustomField}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n {ticket_type_is_active && (\n <div>\n <Field\n name=\"to\"\n label=\"I will sell my ticket to anyone who wants to buy it\"\n type=\"radio\"\n value=\"anyone\"\n component={RadioField}\n />\n </div>\n )}\n <div>\n <h4>Terms of Resale</h4>\n <p>I confirm that I want to sell this ticket and that, if someone chooses to buy it, I will no longer own it or have the right to ask for it back.</p>\n <p>I also understand that, if no one chooses to buy it, it remains my property, is valid for entry to <strong>{event_name}</strong> and I will not receive any refund.</p>\n <p>If my ticket is sold, the original card I used to buy my ticket will be refunded with the original amount paid, minus a small handling fee of <strong>{`${currency ?? ''} ${retain_amount_on_sale ?? '0'}`}</strong>, and that any existing refunds due to me for referring sales for this event are no longer valid.</p>\n <Field\n name='confirm'\n label='I agree'\n type='checkbox'\n component={CheckboxField}\n />\n </div>\n <div className=\"resale-action-button\">\n <Button\n type=\"submit\"\n disabled={!(isValid && dirty)}\n >\n {loading ? <CircularProgress size=\"22px\" /> : 'Sell Ticket'}\n </Button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n </Box>\n </Modal>\n )\n}\n","import { Field, Form, Formik, FormikProps } from 'formik'\nimport _identity from 'lodash/identity'\nimport React from 'react'\n\nimport { fieldDataAdapter } from '../../adapters/customFields'\nimport {\n getFieldComponent,\n getFieldLabel,\n getValidateFunctions,\n} from '../billing-info-container/utils'\nimport { CustomFieldTypes } from './index'\n\ninterface HolderCustomFieldsProps {\n initialValues: { [key: string]: any };\n fields: Array<CustomFieldTypes>;\n handleFormSubmit?: (values: Record<string, any>) => void;\n handleFormClose?: () => void;\n}\n\nconst CustomFieldsForm = ({\n initialValues = {},\n fields = [],\n handleFormSubmit = _identity,\n handleFormClose = _identity,\n}: HolderCustomFieldsProps) => (\n <Formik\n initialValues={initialValues}\n onSubmit={values => handleFormSubmit(values)}\n enableReinitialize={true}\n >\n {(props: FormikProps<any>) => (\n <Form>\n <div className=\"updatable-custom-fields\">\n {fields.map((customField: CustomFieldTypes) => {\n const adaptedCustomField = fieldDataAdapter(customField)\n return (\n <Field\n key={customField.id}\n name={customField.name}\n label={getFieldLabel(customField)}\n component={getFieldComponent(adaptedCustomField)}\n validate={getValidateFunctions(\n customField,\n [],\n props.values,\n props.errors\n )}\n isMultiple={adaptedCustomField.isMultiple}\n radios={adaptedCustomField.radios}\n options={adaptedCustomField.options}\n />\n )\n })}\n </div>\n <div className=\"buttons-block\">\n <button\n className=\"cancel-btn\"\n type=\"button\"\n onClick={() => {\n props.resetForm()\n handleFormClose()\n }}\n >\n Cancel\n </button>\n <button className=\"submit-btn\" type=\"submit\">\n Update ticket\n </button>\n </div>\n </Form>\n )}\n </Formik>\n)\n\nexport { CustomFieldsForm }\n","import _isArray from 'lodash/isArray'\nimport _isEmpty from 'lodash/isEmpty'\n\nimport { CustomFieldOption, CustomFieldTypes } from '../index'\n\nconst getLabelForValue = (options: CustomFieldOption[], value: string | string[]): string => {\n const getLabel = (singleValue: string) => {\n const option = options.find(option => option.value === singleValue)\n return option ? option.name : ''\n }\n\n if (_isArray(value)) {\n const labels = value.map(getLabel)\n return labels.join(', ')\n }\n\n return getLabel(value as string)\n}\n\nexport const renderCustomFieldValue = (customField: CustomFieldTypes) => {\n if (customField.type === 'checkbox') {\n return customField.value ? 'Checked' : 'Unchecked'\n }\n\n if (_isEmpty(customField.value)) {\n return 'N/A'\n }\n\n if (customField.type === 'select' || customField.type === 'select_multi' || customField.type === 'radio') {\n return getLabelForValue(customField.options as CustomFieldOption[], customField.value)\n }\n\n return customField.value\n}\n\nexport const isFieldUpdatable = (field: CustomFieldTypes): boolean => {\n if (!field?.settings?.allowUpdate || (field?.type === 'checkbox' && field?.required)) {\n return false\n }\n return true\n}\n\nexport const createCustomFieldsUpdateBody = (\n updatedValues: Record<string, any>,\n notUpdatableCustomFieldsValues: Array<CustomFieldTypes> = []\n) =>\n notUpdatableCustomFieldsValues.reduce(\n (acc, customField) => {\n if (!isFieldUpdatable(customField)) {\n acc[customField.name] = customField.value\n }\n return acc\n },\n { ...updatedValues }\n )\n","import _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport React, { useMemo, useState } from 'react'\nimport SVG from 'react-inlinesvg'\n\nimport EditSvg from '../../assets/images/edit.svg'\nimport { CustomFieldsForm } from './CustomFieldsForm'\nimport { CustomFieldTypes } from './index'\nimport { ITicketTypes } from './ticketsTable'\nimport {\n createCustomFieldsUpdateBody,\n isFieldUpdatable,\n renderCustomFieldValue,\n} from './utils'\n\ninterface HolderCustomFieldsProps {\n ticket: ITicketTypes;\n holderCustomFields: CustomFieldTypes[];\n handleTicketHoldersUpdate: (values: Record<string, any>, ticketHash: string) => void;\n}\n\nconst TicketHolderCustomFields = ({\n ticket,\n holderCustomFields,\n handleTicketHoldersUpdate = _identity,\n}: HolderCustomFieldsProps) => {\n const [showHolderCustomFieldsSection, setShowHolderCustomFieldsSection] =\n useState(false)\n\n const [allowedHolderCustomFields, notAllowedHolderCustomFields] = useMemo(() => {\n const allowedFields: CustomFieldTypes[] = []\n const notAllowedFields: CustomFieldTypes[] = []\n\n holderCustomFields.forEach((field: CustomFieldTypes) => {\n if (isFieldUpdatable(field)) {\n allowedFields.push(field)\n } else {\n notAllowedFields.push(field)\n }\n })\n return [allowedFields, notAllowedFields]\n }, [holderCustomFields])\n\n const holderEditableFieldsFormInitialValues = useMemo(\n () => getHolderCustomFieldsInitialValues(holderCustomFields),\n [holderCustomFields]\n )\n\n const handleFormClose = () => {\n setShowHolderCustomFieldsSection(false)\n }\n\n const handleForSubmit = (values: Record<string, any>) => {\n // Collect all updatable and non updatable values for bulk update\n const fullUpdatableValues = createCustomFieldsUpdateBody(\n values,\n notAllowedHolderCustomFields\n )\n setShowHolderCustomFieldsSection(false)\n handleTicketHoldersUpdate(fullUpdatableValues, ticket.hash)\n }\n\n function getHolderCustomFieldsInitialValues(fields: Array<CustomFieldTypes>) {\n const initialValues: { [key: string]: string | boolean | string[] } = {}\n\n for (const field of fields) {\n if (isFieldUpdatable(field)) {\n initialValues[field.name] =\n field.type === 'checkbox' ? Boolean(field.value) : field.value || ''\n }\n }\n return initialValues\n }\n\n return (\n <>\n <div className=\"holder-custom-fields\">\n {!_isEmpty(allowedHolderCustomFields) && <SVG src={EditSvg} onClick={() => setShowHolderCustomFieldsSection(true)} />}\n {holderCustomFields.map((customField: CustomFieldTypes) => (\n <div className=\"info-item\" key={customField.id}>\n <b>{customField.label} :</b> {renderCustomFieldValue(customField)}\n </div>\n ))}\n </div>\n {showHolderCustomFieldsSection && (\n <div className=\"custom-fields-block show\">\n <p className=\"editable-ticket-id\">Edit ticket {ticket.hash}</p>\n <CustomFieldsForm\n initialValues={holderEditableFieldsFormInitialValues}\n fields={allowedHolderCustomFields}\n handleFormSubmit={handleForSubmit}\n handleFormClose={handleFormClose}\n />\n </div>\n )}\n </>\n )\n}\n\nexport { TicketHolderCustomFields }\n","import CircularProgress from '@mui/material/CircularProgress'\nimport Paper from '@mui/material/Paper'\nimport Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport React, { Fragment, useState } from 'react'\n\nimport { downloadPDF } from '../../utils'\nimport SnackbarAlert from '../common/SnackbarAlert'\nimport { CustomFieldTypes } from './index'\nimport { TicketHolderCustomFields } from './TicketHolderCustomFields'\n\ninterface IAddOnTypes {\n name: string;\n groupName: string;\n status: string;\n}\n\nexport interface ITicketTypes {\n add_ons?: IAddOnTypes[];\n hash: string;\n ticket_type: string;\n holder_name: string;\n status: string;\n pdf_link: string;\n is_sellable: boolean;\n is_on_sale?: boolean;\n event_name: string;\n currency: string;\n ticket_type_hash: string;\n ticket_type_is_active?: boolean;\n canSellTicket?: boolean;\n retain_amount_on_sale: number | string;\n ticketsTitle: string;\n}\n\nexport interface IActionColumns {\n download?: boolean;\n sell_ticket?: boolean;\n}\n\ninterface TicketsTableTypes {\n canSellTicket?: boolean;\n tickets: ITicketTypes[];\n columns: Array<{\n id?: string | number;\n key: keyof ITicketTypes & keyof IActionColumns;\n label: string | number | null | undefined;\n }>;\n handleSellTicket: (ticket: ITicketTypes) => void;\n handleRemoveFromResale: (ticket: ITicketTypes) => void;\n handleTicketHoldersUpdate: (values: Record<string, any>, ticketHash: string) => void;\n\n icon?: string;\n displayColumnNameInRow?: boolean;\n ticketsTitle?: string;\n ticketHoldersCustomFields?: Array<CustomFieldTypes>;\n}\n\ntype PdfDownload = {\n hash: string;\n loading: boolean;\n}\n\nconst TicketsTable = ({\n tickets = [],\n columns = [],\n icon = '',\n displayColumnNameInRow = false,\n canSellTicket = true,\n ticketsTitle = 'Your Tickets',\n ticketHoldersCustomFields = [],\n handleSellTicket = _identity,\n handleRemoveFromResale = _identity,\n handleTicketHoldersUpdate = _identity,\n}: TicketsTableTypes) => {\n const [pdfError, setPdfError] = useState<string | null>(null)\n const [pdfDownload, setPdfDownload] = useState<PdfDownload>({\n hash: '',\n loading: false,\n })\n\n const getRow = (ticket: ITicketTypes) =>\n _map(columns, (column, columnIndex) => {\n if (column.key === 'download') {\n const ticketIsDownloading =\n pdfDownload.loading && pdfDownload.hash === ticket.hash\n\n if (!ticket.pdf_link || ticket.status === 'Sold' || ticket.is_on_sale)\n return <TableCell key={columnIndex}>{null}</TableCell>\n\n return (\n <TableCell key={columnIndex}>\n {Boolean(icon) && <img src={icon} alt=\"nodata\" />}\n <span\n aria-hidden={true}\n className=\"action-button\"\n onClick={async () => {\n if (ticketIsDownloading) {\n return\n }\n\n setPdfDownload({ hash: ticket.hash, loading: true })\n try {\n const pdfDownloadError = await downloadPDF(ticket.pdf_link)\n if (pdfDownloadError) {\n setPdfError(pdfDownloadError?.message)\n }\n } catch (err) {\n if (err && typeof err === 'string') {\n setPdfError(err)\n }\n } finally {\n setPdfDownload({ hash: '', loading: false })\n }\n }}\n >\n {ticketIsDownloading ? <CircularProgress size=\"22px\" /> : 'Download'}\n </span>\n </TableCell>\n )\n }\n\n if (column.key === 'sell_ticket') {\n return (\n <TableCell key={columnIndex}>\n {ticket.is_sellable && canSellTicket && (\n <span\n aria-hidden={true}\n className=\"action-button\"\n onClick={() => handleSellTicket(ticket)}\n >\n Sell Ticket\n </span>\n )}\n {ticket.is_on_sale && (\n <span\n aria-hidden={true}\n className=\"action-button\"\n onClick={() => handleRemoveFromResale(ticket)}\n >\n Remove from Resale\n </span>\n )}\n </TableCell>\n )\n }\n\n return displayColumnNameInRow ? (\n <TableCell key={columnIndex}>\n <div className=\"cell-block\">\n <span>{column.label}</span>\n <span>{ticket[column.key]}</span>\n </div>\n </TableCell>\n ) : (\n <TableCell key={columnIndex}>\n <div className=\"cell-block\">\n <span>{ticket[column.key]}</span>\n </div>\n </TableCell>\n )\n })\n\n return (\n <div className=\"tickets-box\">\n <SnackbarAlert\n type=\"error\"\n isOpen={!!pdfError}\n message={pdfError || ''}\n onClose={() => setPdfError(null)}\n />\n <h4 className=\"sub-title tickets-title\">{ticketsTitle}</h4>\n <TableContainer component={Paper}>\n <Table aria-label=\"collapsible table\">\n {displayColumnNameInRow ? null : (\n <TableHead>\n <TableRow>\n {_map(columns, item => (\n <TableCell key={item.key}>{item.label || ''}</TableCell>\n ))}\n </TableRow>\n </TableHead>\n )}\n <TableBody>\n {tickets.map((ticket: ITicketTypes, index: number) => {\n const holderCustomFields = ticketHoldersCustomFields.filter(\n (field: CustomFieldTypes) => field?.ticketHash === ticket?.hash\n )\n\n return (\n <Fragment key={index}>\n <TableRow>{getRow(ticket)}</TableRow>\n {!_isEmpty(holderCustomFields) && (\n <TableRow>\n <TableCell colSpan={columns.length}>\n <TicketHolderCustomFields\n ticket={ticket}\n holderCustomFields={holderCustomFields}\n handleTicketHoldersUpdate={handleTicketHoldersUpdate}\n />\n </TableCell>\n </TableRow>\n )}\n {!!ticket.add_ons?.length && (\n <TableRow>\n <TableCell colSpan={6}>\n <Table className=\"ticket-add-on-table\">\n <TableHead>\n <TableRow>\n <TableCell>Add-On</TableCell>\n <TableCell>Status</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {ticket.add_ons.map((add_on: IAddOnTypes, index: number) => (\n <TableRow key={index}>\n <TableCell>\n {add_on.groupName && `${add_on.groupName}: `}{' '}\n {add_on.name}\n </TableCell>\n <TableCell>{add_on.status}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableCell>\n </TableRow>\n )}\n </Fragment>\n )\n })}\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n )\n}\n\nexport default TicketsTable\n","import React, { FC, useState } from 'react'\nimport { Field, Form, Formik } from 'formik'\nimport { CircularProgress } from '@mui/material'\nimport { CustomField } from '../common/CustomField'\nimport axios, { AxiosError } from 'axios'\nimport * as Yup from 'yup'\nimport { resetPassword } from '../../api'\nimport './style.css'\n\ninterface IResetPasswordProps {\n token?: string\n onResetPasswordSuccess?: (res: any) => void\n onResetPasswordError?: (e: AxiosError) => void\n}\n\nconst Schema = Yup.object().shape({\n password: Yup.string()\n .min(6, 'Password must have 5+ characters')\n .required('Required'),\n password_confirmation: Yup.string()\n .required('Required')\n .oneOf([Yup.ref('password'), null], 'Passwords must match'),\n})\n\nexport const ResetPasswordContainer: FC<IResetPasswordProps> = ({\n token: tokenProps = '',\n onResetPasswordSuccess = () => {},\n onResetPasswordError = () => {},\n}) => {\n const [loading, setLoading] = useState(false)\n return (\n <div className=\"reset-password\">\n <div className=\"title\">Change Password</div>\n <Formik\n initialValues={{ password: '', password_confirmation: '' }}\n validationSchema={Schema}\n onSubmit={async (values: any) => {\n try {\n setLoading(true)\n let token\n if (tokenProps) {\n token = tokenProps\n } else {\n if (typeof window !== 'undefined') {\n const params: URLSearchParams = new URL(`${window.location}`)\n .searchParams\n token = params.get('token')\n }\n }\n\n const payload = {\n token,\n ...values,\n }\n const res = await resetPassword(payload)\n onResetPasswordSuccess(res)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onResetPasswordError(e)\n }\n } finally {\n setLoading(false)\n }\n }}\n >\n {({ isValid, dirty }) => (\n <Form>\n <div className=\"body\">\n <div className=\"field-item\">\n <Field\n name=\"password\"\n label=\"New Password\"\n type=\"password\"\n component={CustomField}\n />\n </div>\n <div className=\"field-item\">\n <Field\n name=\"password_confirmation\"\n label=\"Confirm Password\"\n type=\"password\"\n component={CustomField}\n />\n </div>\n </div>\n <div className=\"action-button\">\n <button type=\"submit\" disabled={!(isValid && dirty)}>\n {loading ? <CircularProgress size=\"22px\" /> : 'Submit'}\n </button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n )\n}\n","import _get from 'lodash/get'\nimport _isEmpty from 'lodash/isEmpty'\n\nexport interface IAddOnsData {\n add_on_groups: Array<{ [key: string]: any }>;\n add_ons: Array<[]>;\n}\n\nexport const addonsWithGroupsAdapter = (data: IAddOnsData) => {\n const addonsData = { ...data }\n const addOnsGroups = _get(addonsData, 'add_on_groups', [])\n const addons = _get(addonsData, 'add_ons', [])\n\n if (!_isEmpty(addOnsGroups)) {\n const addOnGroupsWithVariants: any = []\n const addOnsWithoutVariants: any = []\n\n addons.forEach((addon: any) => {\n if (addon.attributes.addOnGroupId) {\n // Collect addons groups inside with their variants\n const currentGroupId = addon.attributes.addOnGroupId\n const exsistingGroupIndex = addOnGroupsWithVariants.findIndex(\n (item: any) => item.id === currentGroupId\n )\n\n if (addOnGroupsWithVariants[exsistingGroupIndex]) {\n const addOnGroup = addOnGroupsWithVariants[exsistingGroupIndex]\n addOnGroupsWithVariants[exsistingGroupIndex] = {\n ...addOnGroup,\n variants: [...addOnGroup.variants, ...addon.attributes],\n }\n } else {\n const group =\n addOnsGroups.find(group => group.attributes.id === currentGroupId) || {}\n\n addOnGroupsWithVariants.push({\n ...group.attributes,\n variants: [...addon.attributes],\n })\n }\n } else {\n addOnsWithoutVariants.push(addon.attributes)\n }\n })\n\n return addOnGroupsWithVariants.concat(addOnsWithoutVariants)\n }\n\n // Adapt only simple addons data\n const adaptedAddons = (addons as any[]).map((addon: any) => ({\n ...addon.attributes,\n }))\n return adaptedAddons\n}\n\nexport const cartAdapter = (cart: any) => {\n const cartData = _get(cart, 'data.attributes', [])\n const { expiresAt, cart: carts_arr } = cartData\n const { id, quantity } = carts_arr[0] || {}\n\n return { id, quantity, expiresAt }\n}\n","import { Field } from 'formik'\nimport _identity from 'lodash/identity'\nimport _isNull from 'lodash/isNull'\nimport React from 'react'\n\nimport { NativeSelectField } from '../common'\n\ninterface IAddonComponentProps {\n classNamePrefix: string;\n data: any;\n selectOptions: any;\n handleAddonChange?: (...res: any) => void;\n}\n\nconst AddonComponent = ({\n classNamePrefix = '',\n data,\n selectOptions,\n handleAddonChange = _identity,\n}: IAddonComponentProps) => {\n const { id, name, active, stock } = data\n\n return (\n <div key={id} className={`${classNamePrefix}_product_select_container`}>\n <div className={`${classNamePrefix}_product_select_block`} key={name}>\n <div className={`${classNamePrefix}_product_size`}>{name}</div>\n <div className={`${classNamePrefix}_product_qty_select_block`}>\n {!active || (!_isNull(stock) && stock <= 0) ? (\n <div className=\"sold_out\">SOLD OUT</div>\n ) : (\n <div className={`${classNamePrefix}_product_qty_select`}>\n <Field\n name={id}\n selectOptions={selectOptions}\n component={NativeSelectField}\n onChange={(e: any) => {\n const { value } = e.target\n handleAddonChange(id, value)\n }}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default AddonComponent\n","import _isEmpty from 'lodash/isEmpty'\nimport _isNull from 'lodash/isNull'\nimport _reverse from 'lodash/reverse'\nimport _sortBy from 'lodash/sortBy'\n\ninterface ObjectLiteral {\n [key: string]: any;\n}\n\nexport const generateSelectOptions = (minCount = 1, maxCount = 10) => {\n const options = []\n for (let i = minCount; i <= maxCount; i++) {\n options.push({ label: i, value: i })\n }\n return options\n}\n\nconst generateStockBasedOnLimitations = (\n addon: any,\n ticketQuantity: number\n) => {\n // Generate addon available stock count based on limitations\n const { flagLimitToTicketQuantity, maxQuantity, limitPerTicket } = addon\n\n let allowedStockCount\n\n // Generate stock\n if (flagLimitToTicketQuantity) {\n // Limited to ticket quantity case\n allowedStockCount = ticketQuantity\n } else if (maxQuantity && limitPerTicket) {\n const stockBasedOnLimitPerTicket = limitPerTicket * ticketQuantity\n // Both maximum quantity and limited to per ticket selected case, stock is minimum of them\n allowedStockCount =\n maxQuantity <= stockBasedOnLimitPerTicket\n ? maxQuantity\n : stockBasedOnLimitPerTicket\n } else if (maxQuantity && !limitPerTicket) {\n // Limited to maximum quantity case\n allowedStockCount = maxQuantity\n } else if (!maxQuantity && limitPerTicket) {\n // Limited to per ticket case\n allowedStockCount = limitPerTicket * ticketQuantity\n }\n\n return Number(allowedStockCount)\n}\n\nconst filterStockBasedOnAvailability = (\n generatedStock: any,\n availableStock: any\n) => {\n // Check generated stock count admissibility with addon stock availability\n let filteredStockCount = generatedStock\n\n if (generatedStock) {\n if (generatedStock > availableStock && !_isNull(availableStock)) {\n filteredStockCount = availableStock\n }\n } else {\n // Not set any restriction\n // Here 10 value is business logic\n filteredStockCount = 10\n\n if (!_isNull(availableStock) && availableStock < filteredStockCount) {\n filteredStockCount = availableStock\n }\n }\n\n return filteredStockCount\n}\n\nexport const getAddonSelectOptions = (addons: any, choosedTicketCount: any) => {\n const addonsWithOptions: ObjectLiteral = {}\n const groupsWithSelectedVariantsInfo: ObjectLiteral = {}\n const groupsWithVariants: ObjectLiteral = {}\n\n addons.forEach((addon: any) => {\n // Here addon can act either as simple Addon or Addon Group\n const {\n id,\n stock: simpleAddonStock,\n variants,\n active,\n flagLimitToTicketQuantity,\n maxQuantity,\n limitPerTicket,\n } = addon\n\n if (variants) {\n // Addon Group with inside addon variants case\n variants.forEach((variant: any) => {\n const { id: variantId, stock: variantStock } = variant\n\n // null checking is for unlimited stock value\n if (active && (variantStock > 0 || _isNull(variantStock))) {\n // Generate Addon Group allowed stock count based on limitations\n const stockBasedOnLimitation = generateStockBasedOnLimitations(\n addon,\n choosedTicketCount\n )\n\n // Detect if group has limitation or not\n if (flagLimitToTicketQuantity || maxQuantity || limitPerTicket) {\n // Generate Group with inside variants info\n if (groupsWithSelectedVariantsInfo[id]) {\n // Set group limit\n if (\n groupsWithSelectedVariantsInfo[id].limit <\n stockBasedOnLimitation\n ) {\n groupsWithSelectedVariantsInfo[\n id\n ].limit = stockBasedOnLimitation\n }\n\n // Set choosed variants info\n groupsWithSelectedVariantsInfo[id] = {\n ...groupsWithSelectedVariantsInfo[id],\n choosedVariants: {\n ...groupsWithSelectedVariantsInfo[id].choosedVariants,\n [variantId]: 0,\n },\n }\n } else {\n groupsWithSelectedVariantsInfo[id] = {\n limit: stockBasedOnLimitation,\n selectedCount: 0,\n choosedVariants: { [variantId]: 0 },\n }\n }\n }\n\n // Check stock admissibility with addon stock availability\n const allowedVariantStockCount = filterStockBasedOnAvailability(\n stockBasedOnLimitation,\n variantStock\n )\n\n // Generate options for variant\n const variantOptions = generateSelectOptions(\n 0,\n allowedVariantStockCount\n )\n\n addonsWithOptions[variantId] = [...variantOptions]\n\n // Generate Group with its variants list\n groupsWithVariants[id] = {\n ...groupsWithVariants[id],\n [variantId]: allowedVariantStockCount,\n }\n }\n })\n } else {\n // Simple addon case, null checking is for unlimited stock value\n if (active && (simpleAddonStock > 0 || _isNull(simpleAddonStock))) {\n // Generate Addon Group allowed stock count based on limitations\n const stockBasedOnLimitation = generateStockBasedOnLimitations(\n addon,\n choosedTicketCount\n )\n\n // Check stock admissibility with addon stock availability\n const allowedVariantStockCount = filterStockBasedOnAvailability(\n stockBasedOnLimitation,\n simpleAddonStock\n )\n\n const addonOptions = generateSelectOptions(0, allowedVariantStockCount)\n addonsWithOptions[id] = [...addonOptions]\n }\n }\n })\n\n return {\n addonsWithOptions,\n groupsWithSelectedVariantsInfo,\n groupsWithVariants,\n }\n}\n\nexport const getTicketRelatedAddons = (addons: any, ticketId: any) => {\n // Filter addons based on choosed ticket\n const filteredAddons: any = addons.filter(\n (addon: any) =>\n _isNull(addon.prerequisiteTicketTypeIds) ||\n addon.prerequisiteTicketTypeIds.includes(ticketId)\n )\n\n return filteredAddons\n}\n\nexport const getSortedAddons = (addons: any, sortDirection = 'asc') => {\n const addonsCopy = [...addons]\n\n addonsCopy.forEach(addon => {\n if (addon.variants) {\n const unsortedVariants: any = []\n addon.variants.forEach((variant: any) => {\n unsortedVariants.push({\n ...variant,\n sortOrder: Number(variant.sortOrder),\n })\n })\n addon.sortOrder = Number(addon.variants[0].sortOrder)\n const sortedVariants = _sortBy(\n unsortedVariants,\n variant => variant.sortOrder\n )\n addon.variants = sortedVariants\n } else {\n addon.sortOrder = Number(addon.sortOrder)\n }\n })\n\n const sortedAddons = _sortBy(addonsCopy, addon => addon.sortOrder)\n if (sortDirection === 'desc') {\n return _reverse(sortedAddons)\n }\n\n return sortedAddons\n}\n\nexport const isAtLeastOneAddonSelected = (value: any) => {\n const selectedAddons = Object.fromEntries(\n Object.entries(value).filter(([_, count]) => Number(count) !== 0)\n )\n\n return !_isEmpty(selectedAddons)\n}\n","import axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { FC, useState } from 'react'\n\nimport { authorize, getProfileData } from '../../api'\nimport { combineValidators, emailValidator, requiredValidator } from '../../validators'\nimport { CustomField } from '../common'\nimport { PoweredBy } from '../common/PoweredBy'\n\nexport interface ILoginFormProps {\n alreadyHasUser?: boolean;\n userExpired?: boolean;\n\n onLoginSuccess?: (res: IProfileData) => void;\n onLoginError?: (e: AxiosError) => void;\n\n onGetProfileDataSuccess?: (res: IProfileData) => void;\n onGetProfileDataError?: (e: AxiosError) => void;\n\n onForgotPasswordButtonClick?: () => void;\n onSignupButtonClick?: () => void;\n\n logo?: string;\n showForgotPasswordButton?: boolean;\n showSignUpButton?: boolean;\n showPoweredByImage?: boolean;\n}\n\n// interface IUserData {\n// id: string;\n// firstName: string;\n// lastName: string;\n// email: string;\n// city?: string;\n// country?: string;\n// countryId?: string;\n// phone?: string;\n// streetAddress?: string;\n// state?: string;\n// zip?: string;\n// zipCode?: string;\n// stateId?: string;\n// }\n\nexport const setLoggedUserData = (data: IProfileData) => ({\n id: data.id,\n first_name: data.firstName,\n last_name: data.lastName,\n email: data.email,\n confirmEmail: data.email,\n city: data?.city || '',\n country: data?.countryId || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zipCode || '',\n})\n\nexport const LoginForm: FC<ILoginFormProps> = ({\n alreadyHasUser = false,\n userExpired = false,\n\n onLoginSuccess = _identity,\n onLoginError = _identity,\n\n onGetProfileDataSuccess = _identity,\n onGetProfileDataError = _identity,\n\n onForgotPasswordButtonClick = _identity,\n onSignupButtonClick = _identity,\n\n logo,\n showForgotPasswordButton = false,\n showSignUpButton = false,\n showPoweredByImage = false,\n}) => {\n const [error, setError] = useState('')\n return (\n <div className=\"login-modal\">\n <Formik\n initialValues={{ email: '', password: '' }}\n onSubmit={async ({ email, password }) => {\n try {\n const body = { email, password }\n const authRes = await authorize(body)\n let profileResponse = null\n try {\n profileResponse = await getProfileData()\n onGetProfileDataSuccess(_get(profileResponse, 'data'))\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n return\n }\n\n const profileSpecifiedData = _get(profileResponse, 'data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (typeof window !== 'undefined') {\n window.localStorage.setItem('user_data', JSON.stringify(profileDataObj))\n const event = new window.CustomEvent('tf-login')\n window.document.dispatchEvent(event)\n }\n onLoginSuccess(_get(authRes, 'data'))\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message || 'Error'\n setError(error)\n onLoginError(e)\n } else if (e instanceof Error) {\n setError(e?.message || 'Error')\n }\n }\n }}\n >\n {props => (\n <Form onSubmit={props.handleSubmit}>\n <div className=\"modal-title\">Login</div>\n <div className=\"login-logo-container\">\n <img\n className=\"login-logo-tff\"\n src={\n logo ||\n 'https://www.ticketfairy.com/resources/images/logo-ttf-black.svg'\n }\n alt=\"logo\"\n />\n </div>\n <div className=\"server_auth__error\">{error}</div>\n {alreadyHasUser && (\n <p className=\"info-text-for-login\">\n It appears this email is already attached to an account. Please log in\n here to complete your registration.\n </p>\n )}\n {userExpired && (\n <p className=\"info-text-for-login\">\n Your session has expired, please log in again.\n </p>\n )}\n <div className=\"login-modal-body\">\n <div className=\"login-modal-body__email\">\n <Field\n name=\"email\"\n label=\"Email\"\n type=\"email\"\n component={CustomField}\n validate={combineValidators(requiredValidator, emailValidator)}\n />\n </div>\n <div className=\"login-modal-body__password\">\n <Field\n name=\"password\"\n label=\"Password\"\n type=\"password\"\n component={CustomField}\n validate={requiredValidator}\n />\n </div>\n <div className=\"login-action-button\">\n <button type=\"submit\">Login</button>\n </div>\n {showForgotPasswordButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onForgotPasswordButtonClick}>\n Forgot password?\n </span>\n </div>\n )}\n {showSignUpButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onSignupButtonClick}>\n Sign up\n </span>\n </div>\n )}\n {showPoweredByImage ? <PoweredBy /> : null}\n </div>\n </Form>\n )}\n </Formik>\n </div>\n )\n}\n","import { FormikValues } from 'formik'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\n\nimport { isBrowser } from '../../../../utils'\nimport { combineValidators, requiredValidator } from '../../../../validators'\n\nexport const getValidateFunctions = ({\n element,\n values,\n}: {\n element: IFormField;\n values: FormikValues;\n}) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const validationFunctions: any[] = []\n if (element.required) {\n validationFunctions.push(requiredValidator)\n }\n\n if (element.onValidate) {\n validationFunctions.push(element.onValidate)\n }\n\n if (element.name === 'confirmEmail') {\n const isSameEmail = (confirmEmail?: string) =>\n values.email !== confirmEmail\n ? 'Please confirm your email address correctly'\n : null\n validationFunctions.push(isSameEmail)\n }\n\n if (element.name === 'confirmPassword') {\n const isSame = (confirmPassword?: string) =>\n values.password !== confirmPassword\n ? 'Password confirmation does not match'\n : null\n\n validationFunctions.push(isSame)\n }\n\n return combineValidators(...validationFunctions)\n}\n\nexport const updateFormFieldsAttributes = (\n formFields: IFormFieldsSection[],\n attributes?: IFieldAttribute\n) => {\n if (attributes && !_isEmpty(attributes)) {\n const updatedFormFields = _map(formFields, fieldSection => {\n const fieldSectionAttributes = attributes[fieldSection.name] || {}\n\n const updatedFields = _map(fieldSection.fields, fieldItem => {\n const fieldItemAttributes = attributes[fieldItem.name] || {}\n return { ...fieldItem, ...fieldItemAttributes }\n })\n\n return {\n ...fieldSection,\n ...fieldSectionAttributes,\n fields: updatedFields,\n }\n })\n\n return updatedFormFields\n }\n return formFields\n}\n\nexport const getFieldClassNames = (id: string, existingClassNames: string) => {\n if (isBrowser) {\n const elem = document && document.getElementById(id)\n\n if ((elem?.parentElement?.clientWidth || 0) < 375) {\n return existingClassNames + ' full-width'\n }\n }\n\n return existingClassNames\n}\n\nexport const insertHTML = (elementId: string, text = '') => {\n if (isBrowser) {\n const elem = document && document.getElementById(elementId)\n\n if (!elem?.childNodes.length) {\n elem?.insertAdjacentHTML('afterbegin', text)\n }\n }\n\n return null\n}\n","import { Field, FormikValues } from 'formik'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { FC } from 'react'\n\nimport { replaceVarInString } from '../../../utils'\nimport {\n CheckboxField,\n CustomField,\n DatePickerField,\n PhoneNumberField,\n SelectField,\n} from '../index'\nimport { getFieldClassNames, getValidateFunctions, insertHTML } from './utils'\n\nexport interface IFieldsSectionProps {\n formFields?: IFormFieldsSection[];\n values: FormikValues;\n setFieldValue: (\n field: string,\n value: FormikValues | string | number,\n shouldValidate?: boolean | undefined\n ) => void;\n disableField?: string;\n countries?: { [key: string]: string | number }[];\n states?: { [key: string]: string | number }[];\n theme?: 'dark' | 'light';\n containerClass?: string;\n setPhoneValidationIsLoading?: (isLoading: boolean) => void;\n onFieldChange?: (name: string, value: string | number) => void;\n}\n\nconst SectionContainer: FC<{ className: string }> = ({\n children,\n className,\n}) => <div className={className}>{children}</div>\n\nexport const FieldsSection = ({\n formFields = [],\n countries = [],\n states = [],\n values,\n setFieldValue,\n theme,\n containerClass = '',\n setPhoneValidationIsLoading = _identity,\n onFieldChange = _identity,\n disableField,\n}: IFieldsSectionProps) => (\n <>\n {_map(formFields, (item, index) => {\n const {\n name,\n groupLabel,\n groupLabelVars = [],\n groupLabelClassName,\n groupClassName = '',\n fields,\n } = item\n return (\n <SectionContainer key={name} className={groupClassName}>\n <span id={`group_label_${index}`} className={groupLabelClassName}>\n {typeof groupLabel === 'string'\n ? insertHTML(\n `group_label_${index}`,\n replaceVarInString(groupLabel, groupLabelVars)\n )\n : groupLabel}\n </span>\n <div className={`fields-container ${groupClassName}`}>\n {_map(fields, (fieldData, fieldIndex) => {\n const {\n name,\n label,\n className = 'full-width',\n type,\n component,\n options = [],\n required,\n } = fieldData\n const id = `${name}-${fieldIndex}`\n const classNames = `${containerClass}-container__field ${className}`\n return (\n component || (\n <div\n key={name}\n id={id}\n className={getFieldClassNames(id, classNames)}\n >\n <Field\n disabled={name === disableField || name === 'state' && !states.length}\n name={name}\n label={`${label}${required ? '' : ' (optional)'}`}\n type={type}\n validate={name === 'state' && !states.length ? false : getValidateFunctions({\n element: fieldData,\n values,\n })}\n setFieldValue={setFieldValue}\n component={\n type === 'checkbox'\n ? CheckboxField\n : type === 'select'\n ? SelectField\n : type === 'phone'\n ? PhoneNumberField\n : type === 'date'\n ? DatePickerField\n : CustomField\n }\n options={\n name === 'country'\n ? countries\n : name === 'state'\n ? states\n : options\n }\n theme={theme}\n setPhoneValidationIsLoading={\n type === 'phone'\n ? setPhoneValidationIsLoading\n : undefined\n }\n onChange={(e: React.FormEvent<EventTarget>) => {\n const element = e.target as HTMLInputElement\n const { value } = element\n setFieldValue(name, value)\n onFieldChange(name, value)\n }}\n disableDropdown={fieldData.disableDropdown}\n />\n </div>\n )\n )\n })}\n </div>\n </SectionContainer>\n )\n })}\n </>\n)\n","import _map from 'lodash/map'\n\nexport const collectStates = (states: any) => {\n const mappedStates = _map(states, (item, key) => ({\n label: item,\n value: key,\n }))\n\n return mappedStates\n}\n","import React from 'react'\n\nexport const formDefaultFields: IFormFieldsSection[] = [\n {\n name: 'basic-info',\n groupLabel: 'Create your account.',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'firstName',\n label: 'First Name',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'lastName',\n label: 'Last Name',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n {\n name: 'confirmEmail',\n label: 'Confirm Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'billing-info',\n groupLabel: '',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'zip',\n label: 'Post Code/Zip',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'country',\n label: 'Country',\n type: 'select',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'password-info',\n groupLabel: (\n <div className=\"email-info-block\">\n <span>Choose a password for your new</span>\n <b> Mana Common </b>\n <span>account</span>\n </div>\n ),\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'password',\n label: 'Password',\n type: 'password',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'confirmPassword',\n label: 'Confirm Password',\n type: 'password',\n required: true,\n onValidate: null,\n },\n ],\n },\n]\n","import { Button, CircularProgress } from '@mui/material'\nimport axios, { AxiosError } from 'axios'\nimport { Form, Formik, FormikValues } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { FC, useEffect, useState } from 'react'\n\nimport { getCountries, getProfileData, getStates, register } from '../../api'\nimport { CONFIGS, getFormInitialValues, getQueryVariable } from '../../utils'\nimport { FieldsSection } from '../common/FieldSection'\nimport { updateFormFieldsAttributes } from '../common/FieldSection/utils'\nimport ConfirmModal from '../confirmModal'\nimport { collectStates } from './adapters'\nimport { formDefaultFields } from './constants'\n\ninterface IRegistrationProps {\n formFields?: Array<IFormFieldsSection>;\n additionalFieldAttribute?: IFieldAttribute;\n registrationType: string;\n onGetCountriesSuccess?: (res: any) => void;\n onGetCountriesError?: (e: AxiosError) => void;\n onRegisterAccountSuccess?: (res: any) => void;\n onRegisterAccountError?: (e: AxiosError) => void;\n onGetStatesSuccess?: (res: any) => void;\n onGetStatesError?: (e: AxiosError) => void;\n customerEmail: string;\n}\n\nexport const RegistrationForm: FC<IRegistrationProps> = ({\n formFields,\n additionalFieldAttribute,\n registrationType,\n customerEmail,\n onGetCountriesSuccess = _identity,\n onGetCountriesError = _identity,\n onRegisterAccountSuccess = _identity,\n onRegisterAccountError = _identity,\n onGetStatesSuccess = _identity,\n onGetStatesError = _identity,\n}) => {\n const [errorMessage, setErrorMessage] = useState('')\n const [countries, setCountries] = useState<{ [key: string]: string | number }[]>([])\n const [states, setStates] = useState<{ [key: string]: string | number }[]>([])\n const [phoneValidationIsLoading, setPhoneValidationIsLoading] = useState(false)\n const [showErrorModal, setshowErrorModal] = useState(false)\n\n const updatedFormFields = updateFormFieldsAttributes(\n formFields || formDefaultFields,\n additionalFieldAttribute\n )\n\n // Fetch countries data\n const fetchCountries = async () => {\n try {\n const res = await getCountries()\n setCountries(\n _map(res.data, item => ({\n label: item.name,\n value: item.id,\n }))\n )\n onGetCountriesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const errorMessage = e?.response?.data?.message || 'Error'\n setErrorMessage(errorMessage)\n onGetCountriesError(e)\n }\n }\n }\n\n // Fetch states data\n const fetchStates = async (countryId?: string | number) => {\n try {\n const fetchCountryId = countryId ? countryId : '1'\n const res = await getStates(fetchCountryId)\n const states = _get(res, 'data', [])\n const mappedStates = collectStates(states)\n setStates(mappedStates)\n onGetStatesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const errorMessage = e?.response?.data?.message || 'Error'\n onGetStatesError(errorMessage)\n }\n }\n }\n\n const handleRegisterAccount = async (values: FormikValues) => {\n const accessHash = getQueryVariable('hash') || ''\n\n try {\n const bodyFormData = new FormData()\n\n bodyFormData.append('first_name', values.firstName)\n bodyFormData.append('last_name', values.lastName)\n bodyFormData.append('email', values.email)\n bodyFormData.append('zip', values.zip)\n bodyFormData.append('city', values.city)\n bodyFormData.append('country', values.country)\n bodyFormData.append('password', values.password)\n bodyFormData.append('phone', values.phone || '')\n bodyFormData.append('password_confirmation', values.confirmPassword)\n bodyFormData.append('client_id', CONFIGS.CLIENT_ID)\n bodyFormData.append('client_secret', CONFIGS.CLIENT_SECRET)\n bodyFormData.append('register_for', registrationType)\n bodyFormData.append('delegation_access_hash', accessHash)\n\n await register(bodyFormData)\n const profileRes = await getProfileData()\n\n window.localStorage.setItem('user_data', JSON.stringify(_get(profileRes, 'data')))\n onRegisterAccountSuccess(profileRes)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n console.log(e)\n const errorMessage = e?.response?.data?.message || 'Error'\n onRegisterAccountError(e)\n setshowErrorModal(true)\n setErrorMessage(errorMessage)\n } else if (e instanceof Error) {\n setErrorMessage(e?.message || 'Error')\n }\n }\n }\n\n useEffect(() => {\n fetchCountries()\n fetchStates()\n }, [])\n\n return (\n <div className=\"register-form-container\">\n <h2>Create an account</h2>\n <div className=\"register-sub-title\">\n To manage your tickets, please create an account:\n </div>\n {showErrorModal && (\n <ConfirmModal\n hideCancelBtn={true}\n message={errorMessage}\n onClose={() => (window.location.href = '/')}\n onConfirm={() => (window.location.href = '/')}\n />\n )}\n {errorMessage && <div className=\"register-error\">{errorMessage}</div>}\n <Formik\n initialValues={{\n ...getFormInitialValues(updatedFormFields),\n email: customerEmail,\n }}\n enableReinitialize={true}\n onSubmit={handleRegisterAccount}\n >\n {props => (\n <Form>\n <div className=\"register-body\">\n <FieldsSection\n disableField={'email'}\n containerClass=\"register\"\n formFields={updatedFormFields}\n values={props.values}\n setFieldValue={props.setFieldValue}\n setPhoneValidationIsLoading={setPhoneValidationIsLoading}\n countries={countries}\n states={states}\n onFieldChange={(name, value) => {\n if (name === 'country') {\n fetchStates(value)\n }\n }}\n />\n </div>\n <div className=\"button-container\">\n <Button\n className=\"register-button\"\n type=\"submit\"\n disabled={props.isSubmitting || phoneValidationIsLoading}\n >\n {props.isSubmitting ? <CircularProgress size={26} /> : 'Create Account'}\n </Button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n )\n}\n","/* eslint-disable max-len */\nexport const VERIFICATION_STATUSES = {\n PENDING: 'PENDING',\n APPROVED: 'APPROVED_VERIFIED',\n FAILED: 'FAILED',\n WRONG_CUSTOMER: 'WRONG_CUSTOMER',\n}\n\nexport const VERIFICATION_PROVIDERS = {\n JUMIO: 'jumio',\n STRIPE: 'stripe'\n}\n\nexport const TRANSACTION_STATUSES = {\n ERROR: 'ERROR',\n SUCCESS: 'SUCCESS',\n}\n\nexport const VERIFICATION_MESSAGES = {\n PENDING:\n 'Your ID verification is currently being processed. We will notify you as soon as it is completed. Thank you for your patience.',\n APPROVED: 'Your ID verification is approved!',\n FAILED: 'Unfortunately your ID verification has failed. Please try again.',\n WRONG_CUSTOMER: 'The order does not belong to the customer.',\n}\n\nexport const DELEGATION_ACCESS_ERROR = 'Delegation Access not found'\n","import { CircularProgress } from '@mui/material'\nimport { Field, Form, Formik } from 'formik'\nimport _identity from 'lodash/identity'\nimport React from 'react'\n\nimport { requiredValidator } from '../../validators'\nimport { CheckboxField, SelectField } from '../common'\nimport { CustomField } from '../common/CustomField'\nimport { getValidateFunctions } from '../common/FieldSection/utils'\n\nexport interface IIssueTicketForm {\n classNamePrefix?: string;\n handleSubmit: (values: any, resetForm: any) => void;\n selectTicketTypeOptions: Array<any>;\n initialValues?: any;\n}\n\nconst IssueTicketForm = ({\n classNamePrefix = 'delegations',\n handleSubmit = _identity,\n selectTicketTypeOptions,\n initialValues,\n}: IIssueTicketForm) => (\n <div className={`${classNamePrefix}-issue-form`}>\n <Formik\n initialValues={initialValues}\n onSubmit={(values, { resetForm, setSubmitting }) => {\n delete values.confirm\n handleSubmit(values, { resetForm, setSubmitting })\n }}\n >\n {({ isValid, values, isSubmitting }) => (\n <Form>\n <div className=\"body\">\n <div className=\"field-item\">\n <div className=\"field_label\">Ticket Type</div>\n <Field\n name=\"ticketTypeId\"\n label=\"Ticket Type\"\n component={SelectField}\n validate={requiredValidator}\n options={selectTicketTypeOptions}\n />\n </div>\n <div className=\"field-item\">\n <div className=\"field_label\">Name</div>\n <Field\n name=\"firstName\"\n label=\"Name\"\n component={CustomField}\n validate={requiredValidator}\n />\n </div>\n <div className=\"field-item\">\n <div className=\"field_label\">Last Name</div>\n <Field\n name=\"lastName\"\n label=\"Last Name\"\n component={CustomField}\n validate={requiredValidator}\n />\n </div>\n <div className=\"field-item\">\n <div className=\"field_label\">Email</div>\n <Field\n name=\"email\"\n label=\"Email\"\n component={CustomField}\n validate={requiredValidator}\n />\n </div>\n <div className=\"field-item\">\n <div className=\"field_label\">Confirm Email</div>\n <Field\n name=\"confirmEmail\"\n label=\"Confirm Email\"\n component={CustomField}\n validate={getValidateFunctions({\n element: {\n name: 'confirmEmail',\n label: 'Confirm Email',\n required: true,\n },\n values,\n })}\n />\n </div>\n </div>\n <div className=\"field-item checkbox_item\">\n <Field\n name=\"confirm\"\n label=\"I agree to ManaCommon's privacy policy\"\n type=\"checkbox\"\n validate={requiredValidator}\n component={CheckboxField}\n />\n </div>\n <div className=\"action-button\">\n <button type=\"submit\" disabled={!isValid}>\n {isSubmitting ? <CircularProgress size=\"22px\" /> : 'Issue Ticket'}\n </button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n)\n\nexport default IssueTicketForm\n","import Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport React from 'react'\n\nexport interface ITicketsAssignedTable {\n tableTitle?: string;\n classNamePrefix?: string;\n noTicketsAssignedText?: string;\n issuePageData: {\n tickets: Array<any>;\n };\n}\n\nconst TicketsAssignedTable = ({\n tableTitle = 'Tickets assigned',\n classNamePrefix = 'delegations',\n issuePageData,\n noTicketsAssignedText = \"You haven't issued any tickets yet.\",\n}: ITicketsAssignedTable) => (\n <div className={`${classNamePrefix}-tables-block`}>\n <div className={`${classNamePrefix}-ticket-holder`}>{tableTitle}</div>\n {issuePageData.tickets?.length ? (\n <TableContainer className=\"my-ticket-table\">\n <Table aria-label=\"collapsible table\">\n <TableHead>\n <TableRow>\n <TableCell key={'Ticket Holder'}>{'Ticket Holder'}</TableCell>\n <TableCell key={'Ticket Type'}>{'Ticket Type'}</TableCell>\n <TableCell key={'Status'}>{'Status'}</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {issuePageData.tickets?.map((ticket: any) => (\n <TableRow key={ticket.id}>\n <TableCell key={ticket.id + 'type'}>\n {ticket.firstName + ' ' + ticket.lastName}\n </TableCell>\n <TableCell key={ticket.id + 'ticketType'}>{ticket.ticketType}</TableCell>\n <TableCell key={ticket.id + 'status'}>{ticket.status}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n ) : (\n noTicketsAssignedText\n )}\n </div>\n)\n\nexport default TicketsAssignedTable\n","import Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport _map from 'lodash/map'\nimport React from 'react'\n\nimport { IDelegationsTicketType } from '../../api/guestTicketDelegation'\n\nexport interface ITicketsAvailableTable {\n tableTitle?: string;\n classNamePrefix?: string;\n issuePageData: {\n ticketTypes: IDelegationsTicketType;\n };\n}\n\nconst TicketsAvailableTable = ({\n tableTitle = 'Tickets available',\n classNamePrefix = 'delegations',\n issuePageData,\n}: ITicketsAvailableTable) => (\n <div className={`${classNamePrefix}-tables-block`}>\n <div className={`${classNamePrefix}-ticket-holder`}>{tableTitle}</div>\n <TableContainer className=\"my-ticket-table\">\n <Table aria-label=\"collapsible table\">\n <TableHead>\n <TableRow>\n <TableCell key={1}>{'Ticket Type'}</TableCell>\n <TableCell key={2}>{'Total Quantity'}</TableCell>\n <TableCell key={3}>{'Quantity Issued'}</TableCell>\n <TableCell key={4}>{'Quantity Remaining'}</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {_map(issuePageData.ticketTypes, (val, key) => (\n <TableRow key={key}>\n <TableCell key={key + 'name'}>{val.optionValue}</TableCell>\n <TableCell key={key + 'maxQty'}>{val.delegationMaxQuantity}</TableCell>\n <TableCell key={key + 'issued'}>{val.delegationQuantityIssued}</TableCell>\n <TableCell key={key + 'remaining'}>\n {Number(val.delegationMaxQuantity) - Number(val.delegationQuantityIssued)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n)\n\nexport default TicketsAvailableTable\n","import axios, { AxiosError } from 'axios'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { useEffect, useState } from 'react'\n\nimport { IDelegationsData, IDelegationsTicketType } from '../../api/guestTicketDelegation'\nimport { getDelegationTickets, issueTicket } from '../../api/index'\nimport { CONFIGS, getQueryVariable } from '../../utils'\nimport { Loader } from '../common'\nimport ConfirmModal from '../confirmModal'\nimport { DELEGATION_ACCESS_ERROR } from '../idVerificationContainer/constants'\nimport IssueTicketForm from './IssueTicketForm'\nimport TicketsAssignedTable from './TicketsAssignedTable'\nimport TicketsAvailableTable from './TicketsAvailableTable'\n\nexport interface IssueTicketData {\n headTitle?: string;\n classNamePrefix?: string;\n onGetIssuePageDataSuccess?: () => void;\n onGetIssuePageDataError?: (e: AxiosError) => void;\n}\n\nconst IssueComponent = ({\n classNamePrefix = 'delegations',\n headTitle = 'Manage Your Guest Tickets',\n onGetIssuePageDataSuccess = _identity,\n onGetIssuePageDataError = _identity,\n}: IssueTicketData) => {\n const [loading, setLoading] = useState(true)\n const [showMaxQtyModal, setShowMaxQtyModal] = useState(false)\n const [showSuccessModal, setShowSuccessModal] = useState(false)\n const [error, setError] = useState('')\n const accessHash = getQueryVariable('hash') || ''\n const [issuePageData, setIssuePageData] = useState<IDelegationsData>(\n {} as IDelegationsData\n )\n\n useEffect(() => {\n const fetchDelegationTickets = async () => {\n try {\n const res = await getDelegationTickets(accessHash)\n setLoading(false)\n setIssuePageData(res?.data?.data?.attributes || {})\n onGetIssuePageDataSuccess()\n } catch (e) {\n setLoading(false)\n if (axios.isAxiosError(e)) {\n onGetIssuePageDataError(e)\n }\n }\n }\n fetchDelegationTickets()\n }, [showSuccessModal])\n const selectTicketTypeOptions = _map(\n issuePageData.ticketTypes || ({} as IDelegationsTicketType),\n (val, key) => ({\n value: key,\n label: val.optionValue,\n })\n )\n return (\n <div className={`${classNamePrefix}-container`}>\n {loading ? (\n <Loader />\n ) : (\n <>\n {showMaxQtyModal && (\n <ConfirmModal\n hideCancelBtn={true}\n message={error}\n onClose={() =>\n error === DELEGATION_ACCESS_ERROR\n ? (window.location.href = '/')\n : setShowMaxQtyModal(false)\n }\n onConfirm={() =>\n error === DELEGATION_ACCESS_ERROR\n ? (window.location.href = '/')\n : setShowMaxQtyModal(false)\n }\n />\n )}\n {showSuccessModal && (\n <ConfirmModal\n hideCancelBtn={true}\n message=\"Your ticket successfully issued.\"\n onClose={() => setShowSuccessModal(false)}\n onConfirm={() => setShowSuccessModal(false)}\n />\n )}\n <div className={`${classNamePrefix}-head-title`}>{headTitle}</div>\n <div className={`${classNamePrefix}-inner-blocks`}>\n <div className={`${classNamePrefix}-image-block`}>\n <img\n src={`${CONFIGS.BASE_URL}${issuePageData?.eventImage}`}\n alt=\"main_event_img\"\n title=\"\"\n />\n </div>\n <div className={`${classNamePrefix}-tables`}>\n <TicketsAvailableTable\n tableTitle=\"Tickets available\"\n issuePageData={issuePageData}\n classNamePrefix=\"delegations\"\n />\n <TicketsAssignedTable\n tableTitle=\"Tickets assigned\"\n issuePageData={issuePageData}\n classNamePrefix=\"delegations\"\n />\n <div className={`${classNamePrefix}-issue-block`}>\n <div className={`${classNamePrefix}-issue-title`}>Issue New Tickets</div>\n <div className={`${classNamePrefix}-issue-subtitle`}>\n Please select the type of tickets and enter recipient details:\n </div>\n </div>\n <IssueTicketForm\n classNamePrefix={'delegations'}\n handleSubmit={async (values: any, { resetForm, setSubmitting }) => {\n try {\n await issueTicket(accessHash, values)\n setShowSuccessModal(true)\n resetForm()\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message || 'Error'\n setError(error)\n } else if (e instanceof Error) {\n setError(e?.message || 'Error')\n }\n setShowMaxQtyModal(true)\n } finally {\n setLoading(false)\n setSubmitting(false)\n }\n }}\n selectTicketTypeOptions={selectTicketTypeOptions}\n initialValues={{\n ticketTypeId: '',\n firstName: '',\n lastName: '',\n email: '',\n confirmEmail: '',\n confirm: false,\n }}\n />\n </div>\n </div>\n </>\n )}\n </div>\n )\n}\n\nexport default IssueComponent\n","import _get from 'lodash/get'\n\nimport { addToCart, getCheckoutPageConfigs, postOnCheckout } from '../../api'\nimport { createCheckoutDataBodyWithDefaultHolder, isBrowser } from '../../utils'\n\ninterface IAddToCartFuncProps {\n eventId: string | number;\n data: any;\n ticketQuantity: number;\n enableBillingInfoAutoCreate?: boolean;\n}\n\nexport const addToCartFunc = async ({\n eventId,\n data,\n ticketQuantity,\n enableBillingInfoAutoCreate = true,\n}: IAddToCartFuncProps) => {\n const result = await addToCart(eventId, data)\n const pageConfigsDataResponse = await getCheckoutPageConfigs()\n\n if (result.status === 200 && pageConfigsDataResponse.status === 200) {\n const pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const {\n skip_billing_page: skipBillingPage = false,\n has_add_on: hasAddOn = false,\n free_ticket: freeTicket = false,\n } = pageConfigsData\n\n let hash: string | number | undefined = ''\n let total: string | number | undefined = ''\n\n isBrowser && window.localStorage.removeItem('add_ons')\n\n if (skipBillingPage && !hasAddOn) {\n // Get user data for checkout data\n const userData =\n isBrowser && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketQuantity,\n userData\n )\n\n const checkoutResponse = enableBillingInfoAutoCreate\n ? await postOnCheckout(checkoutBody, freeTicket)\n : null\n\n hash = checkoutResponse?.data?.attributes?.hash || ''\n total = checkoutResponse?.data?.attributes?.total || ''\n }\n\n return {\n skip_billing_page: skipBillingPage,\n event_id: String(eventId),\n hash,\n total,\n hasAddOn,\n }\n }\n\n return null\n}\n","import _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _isEmpty from 'lodash/isEmpty'\nimport _values from 'lodash/values'\n\nexport const getTierIdBasedOnSeatId = (seatId: string, eventSeats: Array<EventSeat>) => {\n let tierId: number | string = ''\n\n _forEach(eventSeats, group => {\n _forEach(group.seats, (seatsCount, rowId) => {\n const [row_id, seat_id] = seatId.split(':')\n if (row_id === rowId && seat_id <= seatsCount) {\n tierId = Number(group.tier_id)\n return false\n }\n return true\n })\n })\n\n return tierId\n}\n\nexport const getButtonLabel = (count: number, tableMapEnabled: boolean) => {\n if (!count) {\n return tableMapEnabled ? `GET TABLES` : `GET TICKETS`\n } else if (count === 1) {\n return tableMapEnabled ? `GET ${count} TABLE` : `GET ${count} TICKET`\n }\n return tableMapEnabled ? `GET ${count} TABLES` : `GET ${count} TICKETS`\n}\n\nexport const getOwnReservationsBasedOnStatuses = (statuses: any) => {\n const ownReservations: string[] = []\n Object.keys(statuses).forEach((groupRowId: string) =>\n Object.keys(statuses[groupRowId]).forEach((seatIndex: string | number) => {\n if (statuses[groupRowId][seatIndex] === 'OR') {\n ownReservations.push(`${groupRowId}:${seatIndex}`)\n } else if (statuses[groupRowId][seatIndex] === 'H') {\n statuses[groupRowId][seatIndex] = 'BLOCKED'\n }\n })\n )\n return ownReservations\n}\n\nexport const getTicketDropdownData = (\n reservationData: Array<SeatReservationData>,\n tierReleations: TicketTypeTierRelations\n) => {\n const ticketsDropdownsData: Array<ITicketsDropdownsData> = []\n _forEach(reservationData, reservation => {\n if (tierReleations[reservation.tierId]) {\n const ticketsData = _values(tierReleations[reservation.tierId])\n ticketsDropdownsData.push({\n seatId: reservation.seatId,\n tierId: reservation.tierId,\n ticketsData,\n })\n } else {\n ticketsDropdownsData.push({\n seatId: reservation.seatId,\n tierId: reservation.tierId,\n ticketsData: [\n {\n ticket_type_tier_id: reservation.tierId,\n ticket_type_name: 'Please select Ticket Type',\n ticket_type_price: '',\n ticket_type_id: 'default',\n },\n ],\n })\n }\n })\n return ticketsDropdownsData\n}\n\nexport const getAddToCartRequestData = ({\n eventId,\n reservations = [],\n selectedSeats = [],\n selectedTickets = [],\n guestCounts = {},\n}: any) => {\n const hasGuests = !_isEmpty(guestCounts)\n\n const addToCartData: ICartRequestData = {\n attributes: {\n alternative_view_id: null,\n product_cart_quantity: reservations.length,\n product_options: {},\n product_id: eventId,\n ticket_types: {},\n },\n }\n\n const productOptions = {} as any\n const ticketTypes = {} as any\n\n _forEach(reservations, (item, index) => {\n const ticket = _find(\n selectedSeats[item],\n sitem => sitem.ticket_type_id === selectedTickets[item]\n )\n productOptions[ticket.ticket_type_option] = ticket.ticket_type_id\n\n const ticketTypesKey = hasGuests ? index : ticket.ticket_type_id\n const quantity = hasGuests\n ? guestCounts[item]\n : (ticketTypes[ticket.ticket_type_id]?.quantity || 0) + 1\n\n ticketTypes[ticketTypesKey] = {\n quantity,\n product_options: {\n [ticket.ticket_type_option]: ticket.ticket_type_id,\n ticket_price: ticket.ticket_type_price,\n },\n }\n })\n\n addToCartData.attributes.product_options = productOptions\n addToCartData.attributes.ticket_types = ticketTypes\n\n return addToCartData\n}\n\nexport const getTierRelationsArray = (data: Array<TicketTypeTierRelationsData>) => {\n const ticketTypeTireRelationsArray: Array<string | number | null> = []\n _forEach(data, (item: TicketTypeTierRelationsData) => {\n ticketTypeTireRelationsArray.push(...(_values(item) as any))\n })\n\n return ticketTypeTireRelationsArray\n}\n","import 'tf-seat-map-view/dist/index.css'\n\nimport React, { useEffect } from 'react'\nimport ReactDom from 'react-dom'\nimport SeatMapView from 'tf-seat-map-view'\n\nimport { Loader } from '../common'\nimport { getTierRelationsArray } from './utils'\n\nconst CONTAINER_DEFAULT_ID = 'seat_map_default_container'\n\n// Temp solution\ndeclare global {\n interface Window {\n tierPrices: any;\n }\n}\n\nexport const SeatMapComponent = (props: ISeatMapContainerProps) => {\n const { seatMapProps, mapContainerId } = props\n const {\n seatData,\n statuses,\n seatMapType = null,\n seatMapEvents = {},\n ticketTypeTierRelations = {},\n tierPrices,\n isReserving,\n predefinedSeats,\n isLoadingSeatMapData,\n } = seatMapProps\n\n useEffect(() => {\n const parentElement = document.getElementById(mapContainerId || CONTAINER_DEFAULT_ID)\n\n // Temp solution\n window.tierPrices = tierPrices\n\n if (parentElement) {\n let mapComponent = null\n\n if (!(seatData && statuses) || isLoadingSeatMapData) {\n mapComponent = <Loader />\n } else {\n mapComponent = (\n <SeatMapView\n disabled={isReserving}\n loading={isReserving}\n events={seatMapEvents}\n isSelectionOn={false}\n seatData={seatData}\n statuses={statuses}\n ticketTypeTireRelationsArray={getTierRelationsArray(ticketTypeTierRelations)}\n width={Math.min(parentElement?.clientWidth || 800, 800)}\n height={Math.min(parentElement?.clientWidth || 800, 800)}\n isBlockMap={seatMapType === 'block'}\n isTableMap={seatMapType === 'table'}\n predefinedSeats={predefinedSeats}\n />\n )\n }\n\n ReactDom.render(mapComponent, parentElement)\n }\n }, [\n isReserving,\n mapContainerId,\n seatData,\n seatMapEvents,\n seatMapType,\n tierPrices,\n statuses,\n ticketTypeTierRelations,\n ])\n\n return <div id={CONTAINER_DEFAULT_ID} />\n}\n","import { CSSProperties } from '@emotion/serialize'\nimport { createTheme, Select, SelectChangeEvent, ThemeOptions } from '@mui/material'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport FormControl from '@mui/material/FormControl'\nimport InputLabel from '@mui/material/InputLabel'\nimport MenuItem from '@mui/material/MenuItem'\nimport Tooltip from '@mui/material/Tooltip'\nimport { ThemeProvider } from '@mui/private-theming'\nimport _find from 'lodash/find'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _keys from 'lodash/keys'\nimport _map from 'lodash/map'\nimport _some from 'lodash/some'\nimport React, { useState } from 'react'\nimport { Button } from 'react-bootstrap'\n\nimport { createFixedFloatNormalizer } from '../../normalizers'\nimport { createMarkup } from '../../utils'\nimport { getButtonLabel, getTicketDropdownData } from './utils'\n\nexport const TicketsSection = (\n props: ITicketsSectionProps & {\n themeOptions?: ThemeOptions & {\n input?: CSSProperties;\n checkbox?: CSSProperties;\n };\n }\n) => {\n const {\n ticketTypeTierRelations,\n reservedSeats,\n theme = 'light',\n getTicketsBtnLabel,\n contentStyle = {},\n isButtonScrollable = false,\n themeOptions,\n handleGetTicketClick,\n handleCancelReservation,\n ticketDeleteButtonContent = 'Delete',\n ticketInfoContent = 'Info',\n selectedTickets,\n handleTicketSelect,\n currencySymbol,\n tableMapEnabled = false,\n guestCounts,\n setGuestCounts,\n isAddingToCart,\n } = props\n\n const [selectedTicketsInfo, setSelectedTicketsInfo] = useState<{\n [seatId: string]: boolean | undefined;\n }>({})\n\n const bookButtonIsDisabled =\n _some(selectedTickets, item => !item) ||\n _isEmpty(reservedSeats) ||\n reservedSeats.length !== _keys(selectedTickets).length\n const themeMui = createTheme(themeOptions)\n\n const ticketsDropdownsData = getTicketDropdownData(\n reservedSeats,\n ticketTypeTierRelations\n )\n\n const handleTicketChange = (event: SelectChangeEvent<string>, seatId: string) => {\n const {\n target: { value },\n } = event\n\n if (value !== 'default') {\n handleTicketSelect(value, seatId)\n }\n }\n\n const handleShowtTicketInfo = (seatId: string) => {\n setSelectedTicketsInfo(prevState => ({ ...prevState, [seatId]: !prevState[seatId] }))\n }\n\n return (\n <ThemeProvider theme={themeMui}>\n <div className={`get-tickets-page ${theme}`} style={contentStyle}>\n <div className=\"tickets-section\">\n {_map(selectedTickets, (ticketItem: string, key: string) => {\n const dropdownData =\n _find(ticketsDropdownsData, item => item.seatId === key) ||\n ({} as ITicketsDropdownsData)\n\n const selectedTicketData = _find(\n dropdownData.ticketsData,\n ticket => ticket.ticket_type_id === ticketItem\n ) as TicketTypeTierRelationsData\n\n // guest count dropdown options\n const startNum = Number(selectedTicketData?.ticket_type_min_number_of_guests)\n const endNum = Number(selectedTicketData?.ticket_type_max_number_of_guests)\n const numLength = endNum - startNum + 1\n const showGuestCountDropdown = Boolean(startNum && endNum)\n const showDescription = Boolean(selectedTicketData?.description)\n\n // prices\n const guestPrice =\n (guestCounts[dropdownData.seatId] - startNum) *\n Number(selectedTicketData?.guest_price)\n\n const finalPrice = createFixedFloatNormalizer(2)(\n selectedTicketData?.ticket_type_price + guestPrice\n )\n\n return (\n <div className=\"ticket\" key={key}>\n <div className=\"ticketsDropdowns\">\n <Select\n value={ticketItem || 'default'}\n onChange={event => handleTicketChange(event, dropdownData.seatId)}\n inputProps={{ 'aria-label': 'Without label' }}\n MenuProps={{\n PaperProps: {\n sx: { maxHeight: 150 },\n className: 'get-tickets-paper',\n },\n }}\n displayEmpty\n sx={{ borderRadius: 0 }}\n >\n <MenuItem value={'default'}>\n {`Please select ${tableMapEnabled ? 'Table Type' : 'Ticket Type'}`}\n </MenuItem>\n {_map(dropdownData.ticketsData, (option, index) => {\n if (option.ticket_type_id !== 'default') {\n return (\n <MenuItem value={option.ticket_type_id} key={index}>\n {option.ticket_type_name}\n </MenuItem>\n )\n }\n return null\n })}\n </Select>\n <Button\n className=\"ticket-delete\"\n onClick={() => {\n handleCancelReservation(dropdownData.seatId, dropdownData.tierId)\n }}\n >\n {ticketDeleteButtonContent}\n </Button>\n </div>\n {selectedTicketData && (\n <>\n <div style={{ display: 'flex' }}>\n <div\n style={{\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n }}\n >\n <div className=\"ticketPrice\">\n Price:\n <span className=\"ticketPrice-value\">\n {`${currencySymbol} ${finalPrice}`}\n </span>\n <span className=\"fees\">\n {selectedTicketData.fee_included\n ? ' (incl. Fees)'\n : ' (excl. Fees)'}\n </span>\n </div>\n {!_isEmpty(selectedTicketData.ticket_type_deposit) && (\n <div className=\"ticketDeposit\">\n Deposit:\n <span className=\"ticketPrice-value\">\n {` ${selectedTicketData?.ticket_type_deposit}%`}\n </span>\n </div>\n )}\n </div>\n <div\n style={{\n width: '100%',\n display: 'flex',\n justifyContent: 'end',\n alignItems: 'center',\n marginRight: 16,\n }}\n >\n {showDescription && (\n <Tooltip\n title=\"View Ticket Info\"\n placement=\"left\"\n arrow\n componentsProps={{\n tooltip: {\n sx: {\n backgroundColor: 'common.black',\n marginRight: '6px !important',\n '& .MuiTooltip-arrow': {\n color: 'common.black',\n },\n },\n },\n }}\n >\n <div\n className=\"ticket-info\"\n onClick={() => handleShowtTicketInfo(dropdownData.seatId)}\n onKeyDown={() => handleShowtTicketInfo(dropdownData.seatId)}\n >\n {ticketInfoContent}\n </div>\n </Tooltip>\n )}\n {showGuestCountDropdown && (\n <FormControl variant=\"outlined\" sx={{ m: 1, minWidth: 80 }}>\n <InputLabel id=\"demo-simple-select-standard-label\" shrink>\n GUESTS\n </InputLabel>\n <Select\n label=\"GUESTS\"\n labelId=\"demo-simple-select-standard-label\"\n value={guestCounts[dropdownData.seatId] || startNum}\n onChange={event => {\n setGuestCounts({\n ...guestCounts,\n [dropdownData.seatId]: Number(event.target.value),\n })\n }}\n inputProps={{ 'aria-label': 'Without label' }}\n MenuProps={{\n PaperProps: {\n sx: { maxHeight: 150 },\n className: 'get-tickets-paper',\n },\n }}\n displayEmpty\n sx={{ borderRadius: 0 }}\n >\n {_map(\n Array.from({ length: numLength }, (_, i) => startNum + i),\n (option, index) => (\n <MenuItem value={option} key={index}>\n {option}\n </MenuItem>\n )\n )}\n </Select>\n </FormControl>\n )}\n </div>\n </div>\n {selectedTicketsInfo[dropdownData.seatId] && (\n <div\n className=\"ticket-description-content\"\n dangerouslySetInnerHTML={createMarkup(\n selectedTicketData.description || ''\n )}\n />\n )}\n </>\n )}\n </div>\n )\n })}\n </div>\n <div>\n <Button\n className={`book-button\n ${bookButtonIsDisabled ? 'disabled' : ''}\n ${isButtonScrollable ? 'is-scrollable' : ''}\n `}\n onClick={!bookButtonIsDisabled ? handleGetTicketClick : _identity}\n disabled={isAddingToCart}\n >\n {isAddingToCart ? (\n <CircularProgress size={20} style={{ marginLeft: 10 }} />\n ) : (\n getTicketsBtnLabel || getButtonLabel(reservedSeats.length, tableMapEnabled)\n )}\n </Button>\n </div>\n </div>\n </ThemeProvider>\n )\n}\n","import React from 'react'\nimport Modal from '@mui/material/Modal'\nimport Box from '@mui/material/Box'\n\ninterface IRedirectModal {\n message: string\n onClickOk: () => void\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '10%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto',\n}\n\nexport const RedirectModal = ({\n message = 'Your cart has expired. Please click on \"OK\" to return to the ticket selection page.',\n onClickOk = () => {},\n}: IRedirectModal) => {\n return (\n <Modal\n open={true}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"redirect-modal\"\n >\n <Box style={style}>\n <p>{message}</p>\n <div className=\"footer\">\n <button onClick={onClickOk}>OK</button>\n </div>\n </Box>\n </Modal>\n )\n}\n","import Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Modal from '@mui/material/Modal'\nimport { Field, Form, Formik } from 'formik'\nimport React, { useState } from 'react'\n\nimport { sendRSVPInfo } from '../../api'\nimport { isBrowser } from '../../utils'\nimport { combineValidators, emailValidator, requiredValidator } from '../../validators'\nimport { CustomField, Loader } from '../common/index'\n\ninterface IRsvpContainerPage {\n showSection?: boolean;\n eventId: number;\n}\n\ninterface IRSVPValuesTypes {\n email: string;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto',\n}\n\nexport const RsvpContainer = ({ showSection = false, eventId }: IRsvpContainerPage) => {\n const userDataEncoded = isBrowser ? window.localStorage.getItem('user_data') : ''\n const parsedData = JSON.parse(userDataEncoded || '{}')\n\n const [loading, setLoading] = useState(false)\n const [modal, setModal] = useState({ isOpen: false, text: '' })\n\n const handleModalClose = () => {\n setModal({ isOpen: false, text: '' })\n }\n\n const handleSubmit = async (values: IRSVPValuesTypes) => {\n try {\n setLoading(true)\n\n const requestData = { data: { email: values.email } }\n const response = await sendRSVPInfo(eventId, requestData)\n\n setModal({ isOpen: true, text: response.message })\n } catch (error) {\n if (error.response.status === 403) {\n setModal({ isOpen: true, text: error.response.data?.message })\n }\n } finally {\n setLoading(false)\n }\n }\n\n if (!showSection) {\n return null\n }\n\n return (\n <>\n <Modal\n open={modal.isOpen}\n onClose={handleModalClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"rsvp-modal\"\n >\n <Box style={style} className=\"rsvp-modal-box\">\n <div className=\"rsvp-modal-container\">\n <div className=\"rsvp-modal-header\">{modal.text}</div>\n <div className=\"rsvp-modal-button\">\n <button type=\"button\" onClick={handleModalClose}>\n OK\n </button>\n </div>\n </div>\n </Box>\n </Modal>\n <div className=\"rsvp-container\">\n {loading ? (\n <Loader />\n ) : (\n <>\n <div className=\"rsvp-header\">RSVP</div>\n <div className=\"rsvp-email-container\">\n <Formik\n initialValues={{\n email: parsedData?.email || '',\n }}\n onSubmit={handleSubmit}\n enableReinitialize\n >\n <Form>\n <div className=\"rsvp-email-input-container\">\n <Field\n name=\"email\"\n label=\"EMAIL ADDRESS\"\n type=\"email\"\n validate={combineValidators(\n (value: string) =>\n requiredValidator(value, 'Please enter your Email'),\n (value: string) => emailValidator(value)\n )}\n component={CustomField}\n />\n </div>\n <div className=\"rsvp-button-container\">\n <Button type=\"submit\">RSVP</Button>\n </div>\n </Form>\n </Formik>\n </div>\n </>\n )}\n </div>\n </>\n )\n}\n","import React from 'react'\n\nexport const formFieldsNotLoggedIn: IFormFieldsSection[] = [\n {\n name: 'basic-info',\n groupLabel: (\n <>\n <span>\n If you want to enter your details manually, please type them below to create an\n account, then click on\n </span>\n <b> Confirm Registration:</b>\n </>\n ),\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'firstName',\n label: 'First Name',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'lastName',\n label: 'Last Name',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n {\n name: 'confirmEmail',\n label: 'Confirm Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'billing-info',\n groupLabel: '',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'zip',\n label: 'Post Code/Zip',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'country',\n label: 'Country',\n type: 'select',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'password-info',\n groupLabel: (\n <div className=\"email-info-block\">\n <span>Choose a password for your new</span>\n <b> Mana Common </b>\n <span>account</span>\n </div>\n ),\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'password',\n label: 'Password',\n type: 'password',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'confirmPassword',\n label: 'Confirm Password',\n type: 'password',\n required: true,\n onValidate: null,\n },\n ],\n },\n]\n\nexport const formFieldsLoggedIn: IFormFieldsSection[] = [\n {\n name: 'basic-info-logged-in',\n groupLabel:\n 'To confirm your pre-registration for {event_name} simply click on the confirmation button below.',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n {\n name: 'confirmEmail',\n label: 'Confirm Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'billing-info-logged-in',\n groupLabel: '',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n name: 'numTickets',\n label: 'How many tickets do you want to buy?',\n type: 'select',\n required: true,\n options: new Array(10).fill(null).map((_, index) => ({\n label: index + 1,\n value: index + 1,\n })),\n onValidate: null,\n },\n {\n name: 'holderAge',\n label: 'Ticket Holder Age',\n type: 'date',\n required: true,\n onValidate: null,\n },\n {\n name: 'brandOptIn',\n label: 'I would like to be updated on Mana Common news, events and offers.',\n type: 'checkbox',\n },\n ],\n },\n]\n","import { FormikValues } from 'formik'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport _split from 'lodash/split'\n\nimport { combineValidators, requiredValidator } from '../../validators'\nimport { IShareButton } from '../confirmationContainer'\n\nexport const getValidateFunctions = ({\n element,\n values,\n}: {\n element: IFormField;\n values: FormikValues;\n}) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const validationFunctions: any[] = []\n if (element.required) {\n validationFunctions.push(requiredValidator)\n }\n\n if (element.onValidate) {\n validationFunctions.push(element.onValidate)\n }\n\n if (element.name === 'confirmEmail') {\n const isSameEmail = (confirmEmail?: string) =>\n values.email !== confirmEmail ? 'Please confirm your email address correctly' : null\n validationFunctions.push(isSameEmail)\n }\n\n if (element.name === 'confirmPassword') {\n const isSame = (confirmPassword?: string) =>\n values.password !== confirmPassword ? 'Password confirmation does not match' : null\n validationFunctions.push(isSame)\n }\n\n return combineValidators(...validationFunctions)\n}\n\nexport const getFormInitialValues = (fieldsSections: IFormFieldsSection[]) => {\n const initialValues: { [key: string]: string | number | boolean } = {}\n const isWindowDefined = typeof window !== 'undefined'\n const userData = JSON.parse(\n isWindowDefined ? window.localStorage.getItem('user_data') || '{}' : '{}'\n ) as IProfileData\n\n _forEach(fieldsSections, item => {\n _forEach(item.fields, fieldItem => {\n switch (fieldItem.name) {\n case 'country':\n case 'numTickets':\n initialValues[fieldItem.name] = 1\n break\n case 'brandOptIn':\n initialValues[fieldItem.name] = true\n break\n case 'confirmEmail':\n initialValues[fieldItem.name] =\n _get(userData, fieldItem.name) || _get(userData, 'email') || ''\n break\n default:\n initialValues[fieldItem.name] = _get(userData, fieldItem.name) || ''\n break\n }\n })\n })\n\n return initialValues\n}\n\nexport const updateFormFieldsAttributes = (\n formFields: IFormFieldsSection[],\n attributes?: IFieldAttribute\n) => {\n if (attributes && !_isEmpty(attributes)) {\n const updatedFormFields = _map(formFields, fieldSection => {\n const fieldSectionAttributes = attributes[fieldSection.name] || {}\n\n const updatedFields = _map(fieldSection.fields, fieldItem => {\n const fieldItemAttributes = attributes[fieldItem.name] || {}\n return { ...fieldItem, ...fieldItemAttributes }\n })\n\n return {\n ...fieldSection,\n ...fieldSectionAttributes,\n fields: updatedFields,\n }\n })\n\n return updatedFormFields\n }\n return formFields\n}\n\nexport const shareOptionsAdapter = (\n data: Array<IShareOptionsActionData>,\n shareUrl: string\n) => {\n const adaptedData: Array<IShareButton> = []\n _forEach(data, option => {\n if (option.action !== 'shared_url') {\n const [platform, method] = _split(option.action, '_')\n const mainLabel = method ? method[0].toUpperCase() + method.substring(1) : 'Share'\n adaptedData.push({\n mainLabel: option.action === 'twitter' ? 'Tweet' : mainLabel + ' on',\n subLabel:\n option.action === 'twitter'\n ? ' to your followers'\n : platform[0].toUpperCase() + platform.substring(1),\n platform,\n shareData: {\n quote: 'as',\n url: option.socialUrl || shareUrl,\n },\n points: option.point,\n eventActionId: option.id,\n oneTimeAction: option.oneTimeAction,\n alreadyApplied: option.alreadyApplied,\n })\n }\n })\n return adaptedData\n}\n\nexport const getShuffleMethodByName = (\n tokenShuffleMethod: string\n): ((value: string) => string) => {\n const reverseString = (value: string) => value.split('').reverse().join('')\n const symmetricShuffleString = (value: string) => {\n const lengthOfStr = value.length\n const part1 = value.substring(0, lengthOfStr / 2)\n return value.substring(lengthOfStr / 2) + part1\n }\n const shuffleEveryTwoSymbolsInString = (value: string): string => {\n const words = value.split('')\n let shuffledStr = ''\n for (let i = 0; i < words.length; i += 2) {\n shuffledStr = shuffledStr.concat(words[i + 1], words[i])\n }\n return shuffledStr\n }\n\n if (tokenShuffleMethod === 'reverse_string') {\n return reverseString\n } else if (tokenShuffleMethod === 'symmetric_shuffle_string') {\n return symmetricShuffleString\n } else if (tokenShuffleMethod === 'shuffle_every_two_symbols_in_string')\n return shuffleEveryTwoSymbolsInString\n return _identity\n}\n","import { Field, FormikValues } from 'formik'\nimport _map from 'lodash/map'\nimport React, { FC } from 'react'\n\nimport { replaceVarInString } from '../../utils'\nimport {\n CheckboxField,\n CustomField,\n NativeSelectField,\n PhoneNumberField,\n} from '../common'\nimport { DatePickerField } from '../common/DatePickerField'\nimport { getValidateFunctions } from './utils'\n\nconst isDocumentDefined = typeof document !== 'undefined'\n\nexport interface IFieldsSectionProps {\n formFields?: IFormFieldsSection[];\n values: FormikValues;\n setFieldValue: (\n field: string,\n value: FormikValues,\n shouldValidate?: boolean | undefined\n ) => void;\n\n countries?: { [key: string]: string | number }[];\n theme?: 'dark' | 'light';\n containerClass?: string;\n}\n\nconst SectionContainer: FC<{ className: string }> = ({\n children,\n className,\n}) => <div className={className}>{children}</div>\n\nconst insertHTML = (elementId: string, text = '') => {\n if (isDocumentDefined) {\n const elem = document && document.getElementById(elementId)\n\n if (!elem?.childNodes.length) {\n elem?.insertAdjacentHTML('afterbegin', text)\n }\n }\n\n return null\n}\n\nconst getFieldClassNames = (id: string, existingClassNames: string) => {\n if (isDocumentDefined) {\n const elem = document && document.getElementById(id)\n\n if ((elem?.parentElement?.clientWidth || 0) < 375) {\n return existingClassNames + ' full-width'\n }\n }\n\n return existingClassNames\n}\n\nexport const FieldsSection = ({\n formFields = [],\n\n countries = [],\n\n values,\n setFieldValue,\n theme,\n containerClass = '',\n}: IFieldsSectionProps) => (\n <>\n {_map(formFields, (item, index) => {\n const {\n name,\n groupLabel,\n groupLabelVars = [],\n groupLabelClassName,\n groupClassName = '',\n fields,\n } = item\n return (\n <SectionContainer key={name} className={groupClassName}>\n <span id={`group_label_${index}`} className={groupLabelClassName}>\n {typeof groupLabel === 'string'\n ? insertHTML(\n `group_label_${index}`,\n replaceVarInString(groupLabel, groupLabelVars)\n )\n : groupLabel}\n </span>\n <div className={`fields-container ${groupClassName}`}>\n {_map(fields, (fieldData, fieldIndex) => {\n const {\n name,\n label,\n className = 'full-width',\n type,\n component,\n options = [],\n } = fieldData\n const id = `${name}-${fieldIndex}`\n const classNames = `${containerClass}-container__field ${className}`\n\n return (\n component || (\n <div\n key={name}\n id={id}\n className={getFieldClassNames(id, classNames)}\n >\n <Field\n name={name}\n label={label}\n type={type}\n validate={getValidateFunctions({\n element: fieldData,\n values,\n })}\n setFieldValue={setFieldValue}\n component={\n type === 'checkbox'\n ? CheckboxField\n : type === 'select'\n ? NativeSelectField\n : type === 'phone'\n ? PhoneNumberField\n : type === 'date'\n ? DatePickerField\n : CustomField\n }\n selectOptions={name === 'country' ? countries : options}\n theme={theme}\n />\n </div>\n )\n )\n })}\n </div>\n </SectionContainer>\n )\n })}\n </>\n)\n","import { Button, CircularProgress } from '@mui/material'\nimport axios, { AxiosError } from 'axios'\nimport { Form, Formik, FormikValues } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { FC, useEffect, useState } from 'react'\n\nimport { confirmPreRegistration, getCountries, getProfileData, register } from '../../api'\nimport { useCookieListener } from '../../hooks/useCookieListener'\nimport { CONFIGS, getCookieByName, getQueryVariable } from '../../utils'\nimport SnackbarAlert from '../common/SnackbarAlert'\nimport ConfirmModal from '../confirmModal'\nimport { ForgotPasswordModal, IForgotPasswordProps } from '../forgotPasswordModal'\nimport { LoginModal, Props } from '../loginModal'\nimport { formFieldsLoggedIn, formFieldsNotLoggedIn } from './constants'\nimport { FieldsSection } from './FieldsSection'\nimport { getFormInitialValues, updateFormFieldsAttributes } from './utils'\n\nconst X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\nconst isWindowDefined = typeof window !== 'undefined'\n\ninterface IPreRegistrationProps extends Props, IForgotPasswordProps {\n eventId: string | number;\n formFields?: IFormFieldsSection[];\n additionalFieldAttribute?: IFieldAttribute;\n isPreregistrationStarted: boolean;\n onGetCountriesSuccess?: (res: any) => void;\n onGetCountriesError?: (e: AxiosError) => void;\n onConfirmationSuccess?: (res: any) => void;\n onConfirmationError?: (e: AxiosError) => void;\n onLoginSuccess?: (res: any) => void;\n}\n\nexport const PreRegistration: FC<IPreRegistrationProps> = ({\n eventId,\n formFields: pFormFields,\n additionalFieldAttribute,\n isPreregistrationStarted,\n logo,\n showForgotPasswordButton,\n onLoginSuccess = _identity,\n onForgotPasswordSuccess = _identity,\n onForgotPasswordError = _identity,\n onGetCountriesSuccess = _identity,\n onGetCountriesError = _identity,\n onConfirmationSuccess = _identity,\n onConfirmationError = _identity,\n}) => {\n const [error, setError] = useState('')\n const [showModalLogin, setShowModalLogin] = useState(false)\n const [alreadyHasUser, setAlreadyHasUser] = useState(false)\n const [showModalForgotPassword, setShowModalForgotPassword] = useState(false)\n const [countries, setCountries] = useState<{ [key: string]: string | number }[]>([])\n const [isLoggedIn, setIsLoggedIn] = useState(Boolean(getCookieByName(X_TF_ECOMMERCE)))\n const [confirmModalState, setConfirmModalState] = useState({ show: false, message: '' })\n const [, setUserData] = useState({} as IProfileData)\n useCookieListener(X_TF_ECOMMERCE, value => setIsLoggedIn(Boolean(value)))\n\n const formFields = updateFormFieldsAttributes(\n pFormFields || isLoggedIn ? formFieldsLoggedIn : formFieldsNotLoggedIn,\n additionalFieldAttribute\n )\n\n useEffect(() => {\n // fetch countries data\n const fetchCountries = async () => {\n try {\n const res = await getCountries()\n setCountries(\n _map(_get(res, 'data'), item => ({\n label: item.name,\n value: Number(item.id),\n }))\n )\n onGetCountriesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message || 'Error'\n setError(error)\n onGetCountriesError(e)\n }\n }\n }\n fetchCountries()\n }, [])\n\n const hash = getQueryVariable('hash') || ''\n const referrerId = getQueryVariable('referrer_id') || ''\n return (\n <div className=\"pre-registration-container\">\n <SnackbarAlert\n type=\"error\"\n isOpen={!!error}\n message={error || ''}\n onClose={() => {\n setError('')\n }}\n />\n {confirmModalState.show && (\n <ConfirmModal\n hideCancelBtn\n onConfirm={() => setConfirmModalState({ show: false, message: '' })}\n message={confirmModalState.message}\n />\n )}\n {!isLoggedIn && (\n <div className=\"account-actions-block\">\n <div className=\"action-item\">\n <div>\n <span>\n Create (or log in to) your account, then click on Confirm Registration.\n </span>\n <span> If you have a</span>\n <b> Mana Common </b>\n <span>account and password already</span>\n </div>\n </div>\n <div className=\"action-item login-block\">\n <button\n className=\"login-register-button\"\n type=\"button\"\n onClick={() => {\n setShowModalLogin(true)\n }}\n >\n Login\n </button>\n </div>\n </div>\n )}\n {showModalLogin && (\n <LoginModal\n logo={logo}\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={res => {\n setShowModalLogin(false)\n onLoginSuccess(res)\n }}\n showForgotPasswordButton={showForgotPasswordButton}\n onForgotPassword={() => {\n setShowModalLogin(false)\n setShowModalForgotPassword(true)\n }}\n alreadyHasUser={alreadyHasUser}\n />\n )}\n {showModalForgotPassword && (\n <ForgotPasswordModal\n onClose={() => {\n setShowModalForgotPassword(false)\n }}\n onLoginButtonClick={() => {\n setShowModalForgotPassword(false)\n setShowModalLogin(true)\n }}\n onForgotPasswordSuccess={onForgotPasswordSuccess}\n onForgotPasswordError={onForgotPasswordError}\n />\n )}\n <h2>Pre-Registration</h2>\n <Formik\n initialValues={getFormInitialValues(formFields)}\n enableReinitialize={true}\n onSubmit={async (values: FormikValues) => {\n try {\n if (isLoggedIn) {\n if (isPreregistrationStarted) {\n const updatedValues = { ...values }\n const holderAgeDate = new Date(values.holderAge)\n updatedValues.dobDay = holderAgeDate.getDate()\n updatedValues.dobMonth = holderAgeDate.getMonth() + 1\n updatedValues.dobYear = holderAgeDate.getFullYear()\n updatedValues.referrerId = referrerId\n updatedValues.shareHash = hash\n // remove date picker string value\n delete updatedValues.holderAge\n\n const confirmationData = await confirmPreRegistration(\n eventId,\n updatedValues as IConfirmPreRegistrationRequestData\n )\n if (isWindowDefined) {\n window.localStorage.setItem(\n 'pre-registration-hash',\n _get(confirmationData, 'attributes.hash')\n )\n }\n\n onConfirmationSuccess(confirmationData)\n } else {\n setConfirmModalState({\n show: true,\n message: 'The preregistration has not started',\n })\n }\n } else {\n const bodyFormData = new FormData()\n bodyFormData.append('first_name', values.firstName)\n bodyFormData.append('last_name', values.lastName)\n bodyFormData.append('email', values.email)\n bodyFormData.append('confirm_email', values.confirmEmail)\n bodyFormData.append('zip', values.zip)\n bodyFormData.append('country', values.country)\n bodyFormData.append('password', values.password)\n bodyFormData.append('password_confirmation', values.confirmPassword)\n bodyFormData.append('client_id', CONFIGS.CLIENT_ID)\n bodyFormData.append('client_secret', CONFIGS.CLIENT_SECRET)\n bodyFormData.append('register_for', 'prereg')\n\n const res = await register(bodyFormData)\n const profileRes = await getProfileData()\n onLoginSuccess(res.data)\n if (isWindowDefined) {\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(_get(profileRes, 'data'))\n )\n setUserData(_get(profileRes, 'data'))\n }\n }\n } catch (e) {\n let errorMessage = e?.message || 'Error'\n const emailErrors = e?.response?.data?.message?.email\n\n if (typeof e?.response?.data?.message === 'string') {\n errorMessage = e?.response?.data?.message\n }\n if (emailErrors?.length > 0) {\n if (emailErrors[0] === 'The email is already used') {\n setShowModalLogin(true)\n setAlreadyHasUser(true)\n }\n } else {\n setError(errorMessage)\n }\n\n onConfirmationError(e)\n }\n }}\n >\n {props => (\n <Form>\n <div className=\"login-modal-body\">\n <FieldsSection\n formFields={formFields}\n values={props.values}\n setFieldValue={props.setFieldValue}\n containerClass=\"pre-registration\"\n countries={countries}\n />\n </div>\n <div className=\"button-container\">\n <Button\n type=\"submit\"\n variant=\"contained\"\n className=\"login-register-button\"\n disabled={props.isSubmitting}\n >\n {props.isSubmitting ? (\n <CircularProgress size={26} />\n ) : isLoggedIn ? (\n 'Confirm Pre-Registration'\n ) : (\n 'Create Account'\n )}\n </Button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n )\n}\n","import _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport React from 'react'\n\nexport const Prewards = (props: IPrewardsProps) => {\n const {\n data,\n classNamePrefix = '',\n headerNode = (\n <>\n PRE\n <span>WARDS™</span>\n </>\n ),\n } = props\n return (\n <div className={`${classNamePrefix}_prewards`}>\n {!_isEmpty(data) && (\n <div className={`${classNamePrefix}_prewards_heder`}>{headerNode}</div>\n )}\n <div className={`${classNamePrefix}_prizes`}>\n {_map(data, prize => {\n const { description, name, image, id } = prize\n return (\n <div className={`${classNamePrefix}_prize`} key={id}>\n {image && <img className={`${classNamePrefix}_image`} alt=\"\" src={image} />}\n <div className={`${classNamePrefix}_info`}>\n <h4 className={`${classNamePrefix}_name`}>{name}</h4>\n {description && (\n <article className={`${classNamePrefix}_description`}>\n {description}\n </article>\n )}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n","import _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useRef } from 'react'\n\ninterface ICopyFieldProps {\n copyValue: string;\n onLinkCopied?: () => void;\n copyIconSrc?: string;\n copyTitle?: string;\n hasCopyIcon: boolean;\n classNamePrefix?: string;\n messageText?: string;\n}\n\nexport const CopyField = (props: ICopyFieldProps) => {\n const {\n copyValue,\n copyIconSrc = 'https://img.icons8.com/office/50/000000/copy.png',\n copyTitle = 'Copy',\n hasCopyIcon = false,\n onLinkCopied = _identity,\n classNamePrefix = '',\n messageText = '',\n } = props\n\n const inputRef = useRef(null)\n\n return (\n <>\n {messageText && <span className=\"message-text\">{messageText}</span>}\n <input\n ref={inputRef}\n className={`${classNamePrefix}_share-input`}\n defaultValue={copyValue}\n readOnly={true}\n />\n <div\n className={`${classNamePrefix}_share-by-link-copy-icon`}\n aria-hidden={true}\n onClick={() => {\n navigator.clipboard.writeText(_get(inputRef, 'current.value'))\n onLinkCopied()\n }}\n >\n {hasCopyIcon ? (\n <img src={copyIconSrc} alt=\"copy\" />\n ) : (\n <span className={`${classNamePrefix}_copy-icon`}>{copyTitle}</span>\n )}\n </div>\n </>\n )\n}\n","import _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _some from 'lodash/some'\nimport React from 'react'\n\nimport { submitShareAction } from '../../api/preRegistrationComplete'\nimport { CopyField } from '../common/CopyField'\nimport SocialButtons from '../confirmationContainer/social-buttons'\nimport { getShuffleMethodByName, shareOptionsAdapter } from './utils'\n\nexport const ShareOptions = (props: IShareOptionsProps) => {\n const {\n classNamePrefix,\n data,\n hasCopyIcon = true,\n onLinkCopied = _identity,\n headerText = 'Share with your friends here ...',\n hash,\n updateShareActionData,\n shareActionData,\n } = props\n\n const {\n attributes: { actions, shareUrl },\n } = data\n\n const shareButtons = shareOptionsAdapter(actions, shareUrl)\n const isShareLinkEnabled = _some(\n actions,\n (item: IShareOptionsActionData) => item.action === 'shared_url'\n )\n const onAfterShare = async (eventActionId: string | undefined) => {\n const { shareActionToken, tokenShuffleMethod } = shareActionData\n const accessToken = getShuffleMethodByName(tokenShuffleMethod)(shareActionToken)\n if (typeof eventActionId === 'string') {\n await submitShareAction({\n eventActionId,\n accessToken,\n hash,\n })\n updateShareActionData()\n }\n }\n\n return (\n <div className={`${classNamePrefix}_share_options`}>\n {!_isEmpty(actions) && (\n <>\n <div className={`${classNamePrefix}_share_header`}>{headerText}</div>\n <SocialButtons\n shareLink={data.attributes.shareUrl}\n name=\"\"\n appId=\"\"\n showDefaultShareButtons={false}\n shareButtons={shareButtons}\n titleText=\"\"\n footerText=\"\"\n onAfterShare={(eventActionId: string | undefined) =>\n onAfterShare(eventActionId)\n }\n />\n {isShareLinkEnabled && (\n <div className={`${classNamePrefix}_share_btn_inner`}>\n <CopyField\n copyValue={shareUrl}\n onLinkCopied={onLinkCopied}\n hasCopyIcon={hasCopyIcon}\n classNamePrefix={classNamePrefix}\n messageText=\"Share your link\"\n />\n </div>\n )}\n </>\n )}\n </div>\n )\n}\n","import axios, { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _isEmpaty from 'lodash/isEmpty'\nimport React, { FC, useEffect, useState } from 'react'\n\nimport {\n getPreRegistrationInfluancers,\n getPreRegistrationShareOptions,\n} from '../../api/preRegistrationComplete'\nimport { X_TF_ECOMMERCE } from '../../constants'\nimport { useCookieListener } from '../../hooks'\nimport { getCookieByName, getQueryVariable } from '../../utils'\nimport { CopyMessageModal } from '../common'\nimport ConfirmModal from '../confirmModal'\nimport { LoginModal } from '../loginModal'\nimport { Prewards } from './Prewards'\nimport { ShareOptions } from './ShareOptions'\n\nconst isWindowDefined = typeof window !== 'undefined'\n\nexport const PreRegistrationComplete: FC<\n IPreRegistrationCompleteProps & {\n onGetConfirmationDataError?: (error: AxiosError) => void;\n }\n> = ({\n eventId: pEventId,\n classNamePrefix = '',\n onLinkCopied = _identity,\n hasCopyIcon = false,\n pageHeader = 'Pre-Registration Confirmation',\n onGetConfirmationDataError = _identity,\n onGetConfirmationDataSuccess = _identity,\n pageMessage = 'Pre registration was successful!',\n onLoginSuccess = _identity,\n logo,\n}) => {\n const localStorageHash = isWindowDefined\n ? localStorage.getItem('pre-registration-hash')\n : ''\n const queryHash = getQueryVariable('hash') || ''\n queryHash &&\n isWindowDefined &&\n window.localStorage.setItem('pre-registration-hash', queryHash)\n const hash = queryHash || localStorageHash\n const [isLoggedIn, setIsLoggedIn] = useState(Boolean(getCookieByName(X_TF_ECOMMERCE)))\n const [showModalLogin, setShowModalLogin] = useState(!isLoggedIn)\n const [showCopyModal, setShowCopyModal] = useState(false)\n const [prizes, setPrizes] = useState([] as Array<IPrizeData>)\n const [shareOptions, setShareOptions] = useState({} as IShareOptionsData)\n const [shareActionData, setShareActionData] = useState(\n {} as ISubmitShareActionAttributes\n )\n const [error, setError] = useState({} as AxiosError)\n useCookieListener(X_TF_ECOMMERCE, value => setIsLoggedIn(Boolean(value)))\n useEffect(() => {\n const fetchConfirmationData = async () => {\n try {\n if (hash && isLoggedIn) {\n const shareOptionsData = await getPreRegistrationShareOptions({\n hash,\n })\n const { attributes } = shareOptionsData.data\n setShareOptions(shareOptionsData.data)\n setShareActionData({\n shareActionToken: attributes.shareActionToken,\n tokenShuffleMethod: attributes.tokenShuffleMethod,\n })\n const eventId = _get(shareOptionsData, 'data.attributes.eventId')\n if (eventId || pEventId) {\n const influencersData = await getPreRegistrationInfluancers({\n eventId: eventId || pEventId,\n })\n setPrizes(influencersData.data.attributes.prizes)\n }\n onGetConfirmationDataSuccess()\n }\n } catch (error) {\n if (axios.isAxiosError(error)) {\n setError(error.response?.data)\n }\n }\n }\n fetchConfirmationData()\n }, [\n pEventId,\n hash,\n onGetConfirmationDataError,\n onGetConfirmationDataSuccess,\n isLoggedIn,\n ])\n\n const onClose = () => {\n setShowCopyModal(false)\n }\n\n const updateShareActionData = async () => {\n if (hash) {\n const shareOptionsData = await getPreRegistrationShareOptions({\n hash,\n })\n setShareOptions(shareOptionsData.data)\n setShareActionData({\n shareActionToken: shareOptionsData.data.attributes.shareActionToken,\n tokenShuffleMethod: shareOptionsData.data.attributes.tokenShuffleMethod,\n })\n }\n }\n return (\n <>\n {isLoggedIn && _isEmpaty(error) ? (\n <div className={`${classNamePrefix}_pre_registration_complete_container`}>\n <CopyMessageModal showCopyModal={showCopyModal} onClose={onClose} />\n <p className={`${classNamePrefix}_pre_registration_complete_header`}>\n {pageHeader}\n </p>\n <div className={`${classNamePrefix}_pre_registration_complete_message`}>\n {pageMessage}\n </div>\n <div className={`${classNamePrefix}_pre_registration_complete_body`}>\n {!_isEmpaty(prizes) && (\n <Prewards classNamePrefix={classNamePrefix} data={prizes} />\n )}\n\n {!_isEmpaty(shareOptions) && (\n <ShareOptions\n classNamePrefix={classNamePrefix}\n data={shareOptions}\n onLinkCopied={() => {\n setShowCopyModal(true)\n onLinkCopied()\n }}\n shareActionData={shareActionData}\n updateShareActionData={updateShareActionData}\n hasCopyIcon={hasCopyIcon}\n hash={hash}\n />\n )}\n </div>\n </div>\n ) : (\n showModalLogin && (\n <LoginModal\n logo={logo}\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={res => {\n setShowModalLogin(false)\n onLoginSuccess(res)\n }}\n />\n )\n )}\n {!_isEmpaty(error) && (\n <ConfirmModal\n hideCancelBtn\n message={error.message}\n onConfirm={() => onGetConfirmationDataError(error)}\n />\n )}\n </>\n )\n}\n","import _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport React from 'react'\n\nexport const Influancers = (props: IInfluancersProps) => {\n const {\n data,\n classNamePrefix,\n headerNode = (\n <>\n TOP\n <span> INFLUANCERS</span>\n </>\n ),\n } = props\n return (\n <div className={`${classNamePrefix}_influencers_container`}>\n {!_isEmpty(data) && (\n <div className={`${classNamePrefix}_influencers_header`}>{headerNode}</div>\n )}\n <div className={`${classNamePrefix}_influencers`}>\n {_map(data, (influencer, index) => (\n <div key={influencer.prereg_id} className={`${classNamePrefix}_influencer`}>\n <span className={`${classNamePrefix}_influencer_index`}>{index + 1}</span>\n <span className={`${classNamePrefix}_influencer_title`}>INFLUENCER</span>\n <span className={`${classNamePrefix}_influencer_name`}>\n {influencer.name}\n </span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n","/* eslint-disable react/no-unescaped-entities */\n\nimport { CircularProgress } from '@mui/material'\nimport { Form, Formik } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useEffect, useState } from 'react'\n\nimport { getAddons, getCart, getCheckoutPageConfigs, postOnCheckout } from '../../api'\nimport { currencyNormalizerCreator } from '../../normalizers'\nimport { ICheckoutPageConfigs } from '../../types'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n createMarkup,\n getQueryVariable,\n isBrowser,\n} from '../../utils'\nimport { VerificationPendingModal } from '../idVerificationContainer/VerificationPendingModal'\nimport TimerWidget from '../timerWidget'\nimport { addonsWithGroupsAdapter, cartAdapter } from './adapters'\nimport AddonComponent from './AddonComponent'\nimport { getNormalizedPrice } from './normalizers'\nimport {\n generateSelectOptions,\n getAddonSelectOptions,\n getSortedAddons,\n getTicketRelatedAddons,\n isAtLeastOneAddonSelected,\n} from './utils'\n\nexport interface IAddonContainterProps {\n classNamePrefix?: string;\n enableBillingInfoAutoCreate?: boolean;\n enableTimer?: boolean;\n onGetAddonsPageInfoSuccess?: (res: any) => void;\n onGetAddonsPageInfoError?: (error: any) => void;\n onPostCheckoutSuccess?: (res: any) => void;\n onPostCheckoutError?: (error: any) => void;\n onConfirmSelectionSuccess?: (res: any) => void;\n onConfirmSelectionError?: (error: any) => void;\n onCountdownFinish?: () => void;\n onPendingVerification?: () => void;\n}\n\nexport interface ObjectLiteral {\n [key: string]: any;\n}\n\nexport const AddonsContainter = ({\n classNamePrefix = 'add_on',\n enableBillingInfoAutoCreate = true,\n enableTimer = false,\n onGetAddonsPageInfoSuccess = _identity,\n onGetAddonsPageInfoError = _identity,\n onPostCheckoutSuccess = _identity,\n onPostCheckoutError = _identity,\n onConfirmSelectionSuccess = _identity,\n onConfirmSelectionError = _identity,\n onCountdownFinish = _identity,\n onPendingVerification = _identity,\n}: IAddonContainterProps) => {\n const eventId = getQueryVariable('event_id')\n const [addons, setAddons] = useState<any>([])\n const [addonsOptions, setAddonsOptions] = useState<any>({})\n const [groupsWithSelectedVariants, setGroupsWithSelectedVariants] = useState<any>({})\n const [groupsWithInitialVariantsValues, setGroupsWithInitialVariantsValues] =\n useState<any>({})\n const [loading, setLoading] = useState(true)\n const [cartExpirationTime, setCartExpirationTime] = useState(0)\n const [pendingVerificationMessage, setPendingVerificationMessage] = useState()\n\n useEffect(() => {\n const getAddonsPageInfo = async () => {\n try {\n if (eventId) {\n setLoading(true)\n\n // Get choosed ticket info (id, count) from Cart request for addons options calculations\n const cart = await getCart()\n const { id: choosedTicketID, quantity, expiresAt } = cartAdapter(cart)\n const choosedTicketCount = Number(quantity)\n setCartExpirationTime(expiresAt)\n\n // Get and collect addons data\n const addonsData = await getAddons(eventId)\n const adaptedAddons = addonsWithGroupsAdapter(addonsData)\n const ticketRelatedAddons = getTicketRelatedAddons(\n adaptedAddons,\n choosedTicketID\n )\n const sortedTicketAddons = getSortedAddons(ticketRelatedAddons)\n\n setAddons(sortedTicketAddons)\n\n // Collect addons and addon group options\n const {\n addonsWithOptions,\n groupsWithSelectedVariantsInfo,\n groupsWithVariants,\n } = getAddonSelectOptions(adaptedAddons, choosedTicketCount)\n\n setAddonsOptions(addonsWithOptions)\n setGroupsWithSelectedVariants(groupsWithSelectedVariantsInfo)\n setGroupsWithInitialVariantsValues(groupsWithVariants)\n\n // Success callback props\n onGetAddonsPageInfoSuccess(addonsData)\n }\n } catch (e) {\n // Callback error props\n onGetAddonsPageInfoError(e)\n } finally {\n setLoading(false)\n }\n }\n\n getAddonsPageInfo()\n }, [])\n\n const recreateGroupVariantsSelectOptions = (groupId: any, changedGroupd: any) => {\n const { choosedVariants, limit, selectedCount } = changedGroupd\n const remainingGroupStock = limit - selectedCount\n const recreatedVariantsOptions: ObjectLiteral = {}\n\n // Regenerate variants allowed stock counts\n for (const variant in choosedVariants) {\n const variantId = variant\n const variantCurrSelectedValue = choosedVariants[variant]\n let allowedOptionCount\n\n // Formula for regenerating\n if (\n remainingGroupStock >=\n groupsWithInitialVariantsValues[groupId][variantId] - variantCurrSelectedValue\n ) {\n allowedOptionCount = groupsWithInitialVariantsValues[groupId][variantId]\n } else {\n allowedOptionCount = remainingGroupStock + variantCurrSelectedValue\n }\n\n recreatedVariantsOptions[variantId] = generateSelectOptions(0, allowedOptionCount)\n }\n\n setAddonsOptions((prevState: any) =>\n Object.assign({}, prevState, recreatedVariantsOptions)\n )\n }\n\n const onFieldChange = (id: any, value: any, addon: any) => {\n // If changeableGroup exsists it means that group with limitation variant was changed\n const changeableGroup = groupsWithSelectedVariants[addon.id]\n\n if (changeableGroup) {\n const currGroupId = addon.id\n const currSelectedVariantId = id\n const currSelectedVariantCount = Number(value)\n const currSelectedVariantPrevCount =\n groupsWithSelectedVariants[currGroupId].choosedVariants[currSelectedVariantId]\n\n const currSelectedGroupCount =\n changeableGroup.selectedCount +\n (currSelectedVariantCount - currSelectedVariantPrevCount)\n\n // Update Group info\n const updatedGroupsWithSelectedVariants = {\n ...groupsWithSelectedVariants,\n [currGroupId]: {\n ...groupsWithSelectedVariants[currGroupId],\n selectedCount: currSelectedGroupCount,\n choosedVariants: {\n ...groupsWithSelectedVariants[currGroupId].choosedVariants,\n [currSelectedVariantId]: currSelectedVariantCount,\n },\n },\n }\n setGroupsWithSelectedVariants(updatedGroupsWithSelectedVariants)\n\n // Recreate Select Options for Addon Group Variants\n recreateGroupVariantsSelectOptions(\n currGroupId,\n updatedGroupsWithSelectedVariants[currGroupId]\n )\n }\n }\n\n const handleConfirm = async (values: any, skipAddonPage?: boolean) => {\n try {\n const pageConfigsDataResponse = await getCheckoutPageConfigs()\n const pageConfigsData: ICheckoutPageConfigs =\n _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const skipBillingPage = pageConfigsData.skip_billing_page ?? false\n\n if (skipBillingPage && enableBillingInfoAutoCreate) {\n const ticketsQuantity = window.localStorage.getItem('quantity')\n const userData = JSON.parse(window.localStorage.getItem('user_data') || '{}')\n\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n Number(ticketsQuantity) || 0,\n userData\n )\n\n try {\n const checkoutResponse = await postOnCheckout({\n ...checkoutBody,\n attributes: {\n ...checkoutBody.attributes,\n ...(!skipAddonPage && { add_ons: values }),\n },\n })\n const hash = checkoutResponse?.data?.attributes?.hash || ''\n const total = checkoutResponse?.data?.attributes?.total || ''\n\n isBrowser && window.localStorage.removeItem('quantity')\n isBrowser && window.localStorage.removeItem('add_ons')\n\n onPostCheckoutSuccess(checkoutResponse?.data.attributes)\n onConfirmSelectionSuccess({\n skip_billing_page: skipBillingPage,\n event_id: String(eventId),\n hash,\n total,\n })\n } catch (error) {\n if (error.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(error.response?.data?.message)\n } else {\n onPostCheckoutError(error)\n onConfirmSelectionError(error)\n }\n }\n } else {\n if (isBrowser) {\n if (!skipAddonPage) {\n window.localStorage.setItem('add_ons', JSON.stringify(values))\n }\n\n onConfirmSelectionSuccess({\n skip_billing_page: skipBillingPage && enableBillingInfoAutoCreate,\n event_id: String(eventId),\n })\n } else {\n onConfirmSelectionError({\n error: true,\n message: 'Window is not defined',\n })\n }\n }\n } catch (e) {\n onConfirmSelectionError(e)\n }\n }\n\n const handleClearAddons = () => {\n window.localStorage.removeItem('add_ons')\n }\n\n if (loading) {\n return (\n <div className={`${classNamePrefix}_loader`}>\n <CircularProgress size={50} />\n </div>\n )\n }\n\n return (\n <>\n {!!cartExpirationTime && enableTimer && (\n <TimerWidget\n expires_at={cartExpirationTime}\n onCountdownFinish={() => {\n handleClearAddons()\n onCountdownFinish()\n }}\n />\n )}\n <div className={`${classNamePrefix}_container`}>\n <div className={`${classNamePrefix}_block`}>\n <div className={`${classNamePrefix}_line_block`}>\n <p className={`${classNamePrefix}_info_title`}>Get Your Tickets</p>\n <div className={`${classNamePrefix}_title`}>UPGRADES & ADD-ONS</div>\n <button\n type=\"button\"\n className={`${classNamePrefix}_skip`}\n onClick={() => {\n handleClearAddons()\n handleConfirm({}, true)\n }}\n >\n Skip\n </button>\n </div>\n <div className={`${classNamePrefix}_subtitle`}>\n PLEASE SELECT FROM THE OPTIONAL ADD-ONS BELOW\n </div>\n <Formik\n initialValues={{}}\n onSubmit={values => {\n handleConfirm(values)\n }}\n >\n {({ values }) => {\n const isConfirmDisabled = !isAtLeastOneAddonSelected(values)\n\n return (\n <Form autoComplete=\"off\" className=\"form_holder\">\n <>\n {addons.map((addon: any) => {\n const price = addon.feeIncluded ? addon.price : addon.cost\n const isAddonFree = Number(price) === 0\n\n const addonNormalizedPrice = isAddonFree\n ? 'FREE'\n : currencyNormalizerCreator(\n getNormalizedPrice(price),\n addon.currency\n )\n\n return (\n <div\n key={addon.id}\n className={`${classNamePrefix}_product_block`}\n >\n <div className={`${classNamePrefix}_product_images`}>\n {addon.imageUrl && (\n <div className={`${classNamePrefix}_product_image_block`}>\n <img src={addon.imageUrl} alt=\"No Data\" />\n </div>\n )}\n </div>\n <div className={`${classNamePrefix}_product_info_block`}>\n <div className={`${classNamePrefix}_product_title`}>\n {addon.name}\n </div>\n <div className={`${classNamePrefix}_product_price`}>\n {addonNormalizedPrice}\n {!isAddonFree && (\n <span className={`${classNamePrefix}_product_fee`}>\n {addon.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'}\n </span>\n )}\n </div>\n </div>\n <div\n className={`${classNamePrefix}_product_desc`}\n dangerouslySetInnerHTML={createMarkup(addon.description)}\n />\n <div className={`${classNamePrefix}_product_select_container`}>\n {addon.variants ? (\n addon.variants.map((variant: any) => (\n // Group Variants\n <AddonComponent\n key={variant.id}\n data={variant}\n selectOptions={addonsOptions[variant.id]}\n classNamePrefix={classNamePrefix}\n handleAddonChange={(id, value) =>\n onFieldChange(id, value, addon)\n }\n />\n ))\n ) : (\n // Simple Addon\n <AddonComponent\n key={addon.id}\n data={addon}\n selectOptions={addonsOptions[addon.id]}\n classNamePrefix={classNamePrefix}\n handleAddonChange={(id, value) =>\n onFieldChange(id, value, addon)\n }\n />\n )}\n </div>\n </div>\n )\n })}\n <button\n type=\"submit\"\n className={`${isConfirmDisabled ? `${classNamePrefix}_is_disabled` : ''\n } ${classNamePrefix}_submit_button`}\n disabled={isConfirmDisabled}\n >\n CONFIRM SELECTION\n </button>\n </>\n </Form>\n )\n }}\n </Formik>\n </div>\n </div>\n <VerificationPendingModal\n message={pendingVerificationMessage}\n onClose={() => {\n onPendingVerification()\n }}\n />\n </>\n )\n}\n","export const getNormalizedPrice = (value: any) => {\n const minimizedValue = Number(value) / 100\n const normalized = minimizedValue.toFixed(2)\n return normalized\n}","/* eslint-disable max-len */\nimport './style.css'\n\nimport axios, { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { SyntheticEvent, useEffect, useRef, useState } from 'react'\n\nimport { getConfirmationData } from '../../api'\nimport { usePixel } from '../../hooks/usePixel'\nimport { IReferralPromotion } from '../../types'\nimport { createMarkup, isBrowser } from '../../utils'\nimport { CopyMessageModal } from '../common'\nimport SocialButtons from './social-buttons'\n\nexport interface IShareButton {\n mainLabel: string;\n subLabel: string;\n platform: string;\n shareData: any;\n points?: number | string;\n onAfterShare?: (event: SyntheticEvent) => void;\n eventActionId?: string;\n oneTimeAction?: boolean;\n alreadyApplied?: boolean;\n}\n\nexport interface IConfirmationLabels {\n confirmationTitle?: string;\n confirmationMain?: string;\n confirmationHelper?: string;\n paymentPlanConfirmationTitle?: string;\n paymentPlanConfirmationMain?: string;\n paymentPlanConfirmationHelper?: string;\n}\n\nexport interface IConfirmationPage {\n hasCopyIcon?: boolean;\n isReferralEnabled: boolean;\n showDefaultShareButtons: boolean;\n messengerAppId: string;\n shareButtons: IShareButton[];\n onGetConfirmationDataSuccess: (res: ICheckoutCompleteData) => void;\n onGetConfirmationDataError: (e: AxiosError) => void;\n onLinkCopied: () => void;\n orderHash?: string;\n confirmationLabels: IConfirmationLabels;\n clientLabel?: string;\n showReferralsInfoText?: boolean;\n showCopyInfoModal?: boolean;\n showPricingNoteSection?: boolean;\n}\n\nexport const ConfirmationContainer = ({\n confirmationLabels,\n hasCopyIcon = true,\n isReferralEnabled,\n showDefaultShareButtons,\n messengerAppId = '',\n shareButtons = [],\n onGetConfirmationDataSuccess = _identity,\n onGetConfirmationDataError = _identity,\n orderHash,\n onLinkCopied = _identity,\n clientLabel,\n showReferralsInfoText = false,\n showCopyInfoModal = false,\n showPricingNoteSection = false,\n}: IConfirmationPage) => {\n const inputRef = useRef(null)\n const [data, setData] = useState<ICheckoutCompleteData | null>(null)\n const dataEncoded = (isBrowser && window.localStorage.getItem('checkoutData')) || ''\n const dataDecoded = dataEncoded ? JSON.parse(dataEncoded) : { hash: orderHash }\n const { hash } = dataDecoded\n const eventId = data?.product_id || ''\n\n useEffect(() => {\n (async () => {\n if (hash) {\n try {\n const confirmationDataResponse = await getConfirmationData(hash)\n const data = confirmationDataResponse.data.attributes\n data.personal_share_sales = data.personal_share_sales.map(salesItem => {\n const salesData: IReferralPromotion = {\n label: `If your friends buy ${salesItem.sales} tickets`,\n price: '',\n }\n if (salesItem.price === 0) {\n salesData.subLabel = 'Your ticket becomes'\n salesData.price = 'FREE!'\n } else {\n salesData.subLabel = 'Your ticket goes down to'\n salesData.price = data.currency.symbol + Number(salesItem.price).toFixed(2)\n }\n\n return salesData\n })\n data.personal_share_sales.unshift({\n label: 'Your ticket is currently',\n price: data.currency.symbol + data.product_price?.toFixed(2),\n })\n setData(data)\n onGetConfirmationDataSuccess(confirmationDataResponse.data.attributes)\n } catch (error) {\n if (axios.isAxiosError(error)) onGetConfirmationDataError(error)\n }\n }\n })()\n }, [hash])\n\n const [showCopyModal, setShowCopyModal] = useState(false)\n\n const onClose = () => {\n setShowCopyModal(false)\n }\n\n const onChangeShareLink = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newData = {\n ...data,\n personal_share_link: e.target.value,\n } as ICheckoutCompleteData\n setData(newData)\n }\n const {\n confirmationTitle = 'Your Tickets are Confirmed!',\n confirmationMain = 'Your tickets are available in My Tickets section',\n confirmationHelper = 'Please bring them with you to the event',\n paymentPlanConfirmationTitle = 'Your Tickets are Confirmed!',\n paymentPlanConfirmationMain = 'Your payment plan is pending and we are trying to take your initial payment. If your initial payment does not complete, your payment plan will be cancelled.',\n paymentPlanConfirmationHelper = 'You will receive a confirmation with your tickets once your final payment has been made.',\n } = confirmationLabels\n\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n usePixel(eventId, { page: 'complete', pageUrl, orderHash: hash })\n\n return (\n <div className=\"confirmation-page\">\n {showCopyInfoModal && (\n <CopyMessageModal onClose={onClose} showCopyModal={showCopyModal} />\n )}\n {data && (\n <>\n <div className=\"header-container\">\n <div className=\"header-product-image\">\n <img alt=\"\" className=\"product-image\" src={data.product_image} />\n </div>\n <div className=\"header-product-text\">\n <p className=\"title\">\n {data.is_payment_plan ? paymentPlanConfirmationTitle : confirmationTitle}\n </p>\n <div\n className=\"share-message-section\"\n dangerouslySetInnerHTML={\n data.custom_confirmation_page_text &&\n data.custom_confirmation_page_text_full_replacement\n ? createMarkup(data.custom_confirmation_page_text)\n : undefined\n }\n >\n {data.custom_confirmation_page_text &&\n data.custom_confirmation_page_text_full_replacement ? undefined : (\n <>\n {Boolean(data.is_payment_plan) && (\n <>\n <span className=\"main\">{paymentPlanConfirmationMain}</span>\n <span className=\"helper\">{paymentPlanConfirmationHelper}</span>\n </>\n )}\n {!data.is_payment_plan && (\n <>\n {data.attach_tickets ? (\n <span className=\"main\">\n Your tickets have been emailed to you\n </span>\n ) : (\n <span className=\"main\">{confirmationMain}</span>\n )}\n <span className=\"helper\">\n {data.attach_tickets\n ? 'Please bring them with you to the event'\n : confirmationHelper}\n </span>\n </>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n {data.custom_confirmation_page_text &&\n !data.custom_confirmation_page_text_full_replacement ? (\n <div\n className=\"custom-confirmation-page-text\"\n dangerouslySetInnerHTML={createMarkup(data.custom_confirmation_page_text)}\n />\n ) : null}\n {data.disable_referral === false && isReferralEnabled && (\n <>\n <div className=\"referral_text_image_section\">\n <div className=\"referral_text_section\">\n <div className=\"referral_title_text\">\n Your ticket can become\n <span className=\"strong-text\"> cheaper </span>\n or even\n <span className=\"strong-text\"> FREE!</span>\n </div>\n <div className=\"referral_text\">\n <span className=\"strong-text\"> Invite friends </span>\n and we'll refund up to\n <span className=\"strong-text\"> 100% </span>\n of your ticket money, if they buy tickets as well!\n </div>\n </div>\n <img\n className=\"body-product-image\"\n src={data.product_image}\n alt=\"No Data\"\n />\n </div>\n <div className=\"share_wrapper\">\n <div className=\"share_section\">\n <div className=\"invitation_section\">\n <div className=\"invitation_title\">\n How do you invite your friends?\n </div>\n <div className=\"share_buttons\">\n <div className=\"share-by-link\">\n <h5 className=\"share-by-link label\">Send them this link:</h5>\n <div className=\"share-btn-inner\">\n <input\n ref={inputRef}\n className=\"share-input\"\n value={data.personal_share_link}\n onChange={onChangeShareLink}\n />\n <div\n aria-hidden={true}\n className=\"share-by-link-copy-icon\"\n onClick={() => {\n navigator.clipboard.writeText(\n _get(inputRef, 'current.value')\n )\n setShowCopyModal(true)\n onLinkCopied()\n }}\n >\n {hasCopyIcon ? (\n <img\n src=\"https://img.icons8.com/office/50/000000/copy.png\"\n alt=\"copy\"\n />\n ) : (\n <span className=\"copy-icon\">Copy</span>\n )}\n </div>\n </div>\n </div>\n {(showDefaultShareButtons || !!shareButtons.length) && (\n <SocialButtons\n showDefaultShareButtons={showDefaultShareButtons}\n name={data.product_name}\n appId={messengerAppId}\n shareLink={data.personal_share_link}\n shareButtons={shareButtons}\n clientLabel={clientLabel}\n showReferralsInfoText={showReferralsInfoText}\n />\n )}\n </div>\n </div>\n </div>\n <div className=\"pricing-section\">\n <div className=\"invitation_title\">How much cheaper?</div>\n {_map(data.personal_share_sales, (pricing, index) => (\n <div key={index} className=\"pricing-section_wrapper\">\n <div className=\"pricing-section_label\">\n {pricing.label}\n {pricing.subLabel && (\n <div className=\"pricing-section_sublabel\">\n {pricing.subLabel}\n </div>\n )}\n </div>\n <div className=\"pricing-section_price\"> {pricing.price}</div>\n </div>\n ))}\n {showPricingNoteSection && (\n <div className=\"note-pricing-section\">\n ^ This is based on the most expensive ticket in your order.\n </div>\n )}\n </div>\n </div>\n </>\n )}\n </>\n )}\n </div>\n )\n}\n","import _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { FC, useEffect, useState } from 'react'\n\nimport { getCustomerExistsData } from '../../api/guestTicketDelegation'\nimport { Loader } from '../../components/common'\nimport { LoginForm } from '../../components/loginForm'\nimport { RegistrationForm } from '../../components/registerForm'\nimport { useCookieListener } from '../../hooks/useCookieListener'\nimport { getCookieByName, getQueryVariable } from '../../utils'\nimport IssueComponent from './IssueComponent'\n\ninterface IRegistrationProps {\n registerFormFields?: Array<IFormFieldsSection>;\n classNamePrefix?: string;\n logo?: string;\n onCustomerExistsError?: (error: any) => void;\n issuePageErrorText?: string;\n}\n\nconst X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\n\nexport const DelegationsContainer: FC<IRegistrationProps> = ({\n registerFormFields,\n classNamePrefix = 'guest-ticket-delegation',\n issuePageErrorText = 'You do not have access to manage these tickets.',\n onCustomerExistsError = _identity,\n logo,\n}) => {\n const [loading, setLoading] = useState(true)\n const [isLoggedIn, setIsLoggedIn] = useState(Boolean(getCookieByName(X_TF_ECOMMERCE)))\n const [isCustomerExsists, setIsCustomerExsists] = useState(false)\n const [issuePageError, setIssuePageError] = useState(false)\n const [customerEmail, setCustomerEmail] = useState('')\n const accessHash = getQueryVariable('hash') || ''\n\n useCookieListener(X_TF_ECOMMERCE, value => setIsLoggedIn(Boolean(value)))\n\n const onGetIssuePageDataError = () => {\n setIssuePageError(true)\n }\n\n useEffect(() => {\n const getCustomerData = async () => {\n try {\n const response = await getCustomerExistsData(accessHash)\n const isCustomerExsists = _get(response, 'data.attributes.customerExists', false)\n setIsCustomerExsists(isCustomerExsists)\n setCustomerEmail(_get(response, 'data.attributes.email', ''))\n setLoading(false)\n } catch (error) {\n onCustomerExistsError(error)\n }\n }\n\n getCustomerData()\n }, [])\n\n return (\n <div className={`${classNamePrefix}__container`}>\n {loading ? (\n <Loader />\n ) : issuePageError ? (\n <div className=\"issue_page_error\">{issuePageErrorText}</div>\n ) : isLoggedIn ? (\n <div>\n <IssueComponent\n classNamePrefix={classNamePrefix}\n onGetIssuePageDataError={onGetIssuePageDataError}\n />\n </div>\n ) : isCustomerExsists ? (\n <LoginForm logo={logo} />\n ) : (\n <RegistrationForm\n customerEmail={customerEmail}\n formFields={registerFormFields}\n registrationType=\"delegation\"\n />\n )}\n </div>\n )\n}\n","import Button from '@mui/material/Button'\nimport { AxiosError } from 'axios'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport React, { useEffect, useState } from 'react'\n\nimport {\n checkCustomerOrder,\n checkVerificationStatus,\n getNetverifyUrl,\n updateVerificationStatus,\n} from '../../api'\nimport {\n GetNetverifyUrlResponseData,\n VerificationStatusResponseData,\n} from '../../types/verification'\nimport { getQueryVariable, isBrowser, isJson } from '../../utils'\nimport Modal from '../common/ModalComponent'\nimport {\n VERIFICATION_MESSAGES,\n VERIFICATION_PROVIDERS,\n VERIFICATION_STATUSES,\n} from './constants'\n\ninterface IDVerificationProps {\n onGetVerifyUrlSuccess?: (response: GetNetverifyUrlResponseData) => void;\n onGetVerifyUrlError?: (error: AxiosError) => void;\n\n onGetVerificationStatusSuccess?: (response: {\n data: VerificationStatusResponseData;\n }) => void;\n onGetVerificationStatusError?: (error: AxiosError) => void;\n\n onVerificationMessageModalClose?: (status: string | null) => void;\n\n onPassVerificationStepsSuccess?: () => void;\n onPassVerificationStepsError?: (error: AxiosError | null) => void;\n}\n\nexport const IDVerification = (props: IDVerificationProps) => {\n const {\n onGetVerifyUrlSuccess = _identity,\n onGetVerifyUrlError = _identity,\n\n onGetVerificationStatusSuccess = _identity,\n onGetVerificationStatusError = _identity,\n\n onVerificationMessageModalClose = _identity,\n\n onPassVerificationStepsSuccess = _identity,\n onPassVerificationStepsError = _identity,\n } = props\n\n const [loadingStatus, setLoadingStatus] = useState(true)\n const [verificationStatus, setVerificationStatus] = useState<string | null>(null)\n const [showModal, setShowModal] = useState(false)\n const [netverifyUrl, setNetverifyUrl] = useState<string | null>(null)\n const [provider, setProvider] = useState<string | null>(null)\n const [hasError, setHasError] = useState<boolean>(false)\n const [lastError, setLastError] = useState(null)\n const [modalData, setModalData] = useState({\n message: '',\n hideCancelBtn: true,\n displaModal: false,\n })\n\n const isAccountVerifiedOrPending =\n (verificationStatus === VERIFICATION_STATUSES.APPROVED ||\n verificationStatus === VERIFICATION_STATUSES.PENDING) &&\n verificationStatus !== VERIFICATION_STATUSES.WRONG_CUSTOMER\n\n const handleClose = () => {\n setModalData({\n message: '',\n displaModal: false,\n hideCancelBtn: true,\n })\n\n onVerificationMessageModalClose(verificationStatus)\n }\n\n useEffect(() => {\n const callbackNetVerify = async (e: any) => {\n // Stripe Events\n if (e.data && e.origin === 'https://verify.stripe.com') {\n const { data } = e\n if (data.type === 'STRIPE_IDENTITY_CLOSE') {\n await getUrl()\n setShowModal(false)\n if (hasError) {\n setHasError(false)\n onPassVerificationStepsError(lastError)\n } else {\n setHasError(false)\n onPassVerificationStepsSuccess()\n }\n } else if (data.type === 'STRIPE_IDENTITY_ERROR') {\n setHasError(true)\n setLastError(data)\n }\n }\n\n if (e.data && isJson(e.data)) {\n try {\n const result = JSON.parse(e.data)\n if (\n result.payload &&\n (result.payload.value === 'success' ||\n result.payload.transactionStatus === 'SUCCESS')\n ) {\n await updateVerificationStatus()\n onPassVerificationStepsSuccess()\n } else if (\n result.payload &&\n (result.payload.value === 'error' ||\n result.payload.transactionStatus === 'ERROR')\n ) {\n setShowModal(false)\n onPassVerificationStepsError(result.payload)\n }\n } catch (e) {\n onPassVerificationStepsError(e)\n }\n }\n }\n\n window.addEventListener('message', callbackNetVerify)\n\n return () => {\n window.removeEventListener('message', callbackNetVerify)\n }\n }, [])\n\n const getUrl = async () => {\n try {\n const urlResponse = await getNetverifyUrl()\n setNetverifyUrl(urlResponse.netverifyUrl)\n setProvider(urlResponse.provider)\n onGetVerifyUrlSuccess(urlResponse)\n } catch (error) {\n onGetVerifyUrlError(error)\n }\n }\n\n useEffect(() => {\n let intervalId: any = null\n const orderHash = getQueryVariable('order_hash') || ''\n\n const getVerificationStatus = async () => {\n try {\n let verificationStatus = null\n // Gets te current status of the variable without modifying it\n setVerificationStatus(status => {\n verificationStatus = status\n return status\n })\n let provider = null\n // Gets te current status of the variable without modifying it\n setProvider(state => {\n provider = state\n return provider\n })\n let verifyUrl = null\n // Gets te current status of the variable without modifying it\n setNetverifyUrl(state => {\n verifyUrl = state\n return state\n })\n const statusResponse = await checkVerificationStatus()\n const { status } = statusResponse.data.attributes\n const isApproved = status === VERIFICATION_STATUSES.APPROVED\n\n if (verificationStatus !== status) {\n setVerificationStatus(status)\n setModalData({\n displaModal: isApproved || status === VERIFICATION_STATUSES.FAILED,\n hideCancelBtn: true,\n message: isApproved\n ? VERIFICATION_MESSAGES.APPROVED\n : status === VERIFICATION_STATUSES.FAILED\n ? VERIFICATION_MESSAGES.FAILED\n : status,\n })\n }\n if (\n provider === VERIFICATION_PROVIDERS.STRIPE &&\n verifyUrl === null &&\n !isApproved\n ) {\n getUrl()\n }\n onGetVerificationStatusSuccess(statusResponse)\n } catch (error) {\n onGetVerificationStatusError(error)\n } finally {\n setLoadingStatus(false)\n }\n }\n\n const getCustomerOrderStatus = async () => {\n const customerOrderResponse = await checkCustomerOrder(orderHash)\n return customerOrderResponse\n }\n\n const makeRequests = async () => {\n try {\n if (orderHash) {\n await getCustomerOrderStatus()\n }\n getUrl()\n getVerificationStatus()\n\n // Check the verification status every 30 seconds\n intervalId = setInterval(() => {\n getVerificationStatus()\n }, 10000)\n } catch (error) {\n if (error.response?.data?.message === VERIFICATION_MESSAGES.WRONG_CUSTOMER) {\n setVerificationStatus(VERIFICATION_STATUSES.WRONG_CUSTOMER)\n setModalData({\n displaModal: true,\n hideCancelBtn: true,\n message: VERIFICATION_MESSAGES.WRONG_CUSTOMER,\n })\n }\n }\n }\n\n makeRequests()\n\n // Clear the interval when the component unmounts\n return () => clearInterval(intervalId)\n }, [])\n\n const iframe = (netverifyUrl: string) => {\n // eslint-disable-next-line max-len\n const iframe = `<iframe allowFullScreen id=\"verificationIframe\" frameBorder=\"0\" width=\"100%\" height=\"570px\" allow=\"camera;fullscreen;accelerometer;gyroscope;magnetometer\" src=\"${netverifyUrl}\"></iframe>`\n return {\n __html: iframe,\n }\n }\n\n useEffect(() => {\n const orderHash = getQueryVariable('order_hash')\n\n if (isBrowser) {\n const checkoutData = JSON.parse(window.localStorage.getItem('checkoutData') || '{}')\n if (_isEmpty(checkoutData) && orderHash) {\n window.localStorage.setItem('checkoutData', JSON.stringify({ hash: orderHash }))\n }\n }\n }, [])\n\n return (\n <div>\n <h2 className=\"page-header\">Account Verification</h2>\n {loadingStatus ? null : (\n <>\n {!isAccountVerifiedOrPending && (\n <div className=\"verify-message\">\n To complete the purchase, please verify your identity.\n </div>\n )}\n {verificationStatus === VERIFICATION_STATUSES.APPROVED && (\n <div className=\"verify-message\">{VERIFICATION_MESSAGES.APPROVED}</div>\n )}\n {(verificationStatus === VERIFICATION_STATUSES.PENDING ||\n (provider === VERIFICATION_PROVIDERS.STRIPE &&\n netverifyUrl === null &&\n verificationStatus !== VERIFICATION_STATUSES.APPROVED)) && (\n <div className=\"verify-message\">{VERIFICATION_MESSAGES.PENDING}</div>\n )}\n {!isAccountVerifiedOrPending && netverifyUrl !== null && (\n <Button\n type=\"button\"\n variant=\"contained\"\n className=\"verify-button\"\n onClick={() => {\n setShowModal(true)\n }}\n >\n Verify\n </Button>\n )}\n </>\n )}\n\n {modalData.displaModal && (\n <Modal\n modalClassName=\"verification-message-modal\"\n actions={[\n {\n id: 'ok',\n label: 'Ok',\n variant: 'contained',\n onClick: handleClose,\n },\n ]}\n >\n <div className=\"verify-message\">{modalData.message}</div>\n </Modal>\n )}\n\n {showModal && (\n <Modal\n modalClassName=\"id-verification-modal\"\n actions={[\n {\n id: 'close',\n label: 'Close',\n variant: 'contained',\n onClick: () => {\n setShowModal(false)\n },\n },\n ]}\n >\n <div dangerouslySetInnerHTML={iframe(netverifyUrl || '')} />\n </Modal>\n )}\n </div>\n )\n}\n","import './style.css'\n\nimport Autocomplete from '@mui/material/Autocomplete'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Paper from '@mui/material/Paper'\nimport Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TablePagination from '@mui/material/TablePagination'\nimport TableRow from '@mui/material/TableRow'\nimport TextField from '@mui/material/TextField'\nimport axios from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useEffect, useState } from 'react'\n\nimport { getOrders } from '../../api'\nimport { getCookieByName } from '../../utils'\nimport { LoginModal } from '../loginModal'\nimport MyTicketsRow from './row'\nimport tableConfig from './tableConfig'\n\ninterface MyTicketsTypes {\n handleDetailsInfo: (id: string | number) => void;\n onGetOrdersSuccess: (res: any) => void;\n onGetOrdersError: (err: any) => void;\n logo?: string;\n theme?: 'light' | 'dark';\n selectEventsLabel?: string;\n openLoginModal?: () => void;\n hideDetailsButton?: boolean;\n columns?: IColumnData[];\n}\n\ninterface EventFilter {\n event_name: string;\n url_name: string;\n}\n\nexport const MyTicketsContainer = ({\n handleDetailsInfo = _identity,\n onGetOrdersSuccess = _identity,\n onGetOrdersError = _identity,\n theme = 'dark',\n selectEventsLabel = 'Events',\n logo,\n hideDetailsButton = false,\n columns = [],\n openLoginModal,\n}: MyTicketsTypes) => {\n const [data, setData] = useState<any>(null)\n const [loading, setLoading] = useState(true)\n const [limit, setLimit] = useState(10)\n const [filter, setFilter] = useState('')\n\n const isWindowDefined = typeof window !== 'undefined'\n const [isLogged, setIsLogged] = useState(\n isWindowDefined ? !!getCookieByName('X-TF-ECOMMERCE') : false\n )\n const [showModalLogin, setShowModalLogin] = useState(false)\n const [userExpired, setUserExpired] = useState(false)\n\n //just once\n useEffect(() => {\n fetchData(1, limit, filter)\n }, [isLogged])\n\n const fetchData = async (page: number, limit: number, eventSlug: string) => {\n try {\n setLoading(true)\n const response = await getOrders(page, limit, eventSlug)\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.attributes')\n data.page -= 1\n\n setData(data)\n } catch (error) {\n if (axios.isAxiosError(error)) {\n if (error.response?.data.error === 'invalid_token') {\n if (isWindowDefined) {\n window.localStorage.removeItem('user_data')\n setUserExpired(true)\n setShowModalLogin(true)\n }\n }\n }\n onGetOrdersError(error)\n } finally {\n setLoading(false)\n }\n }\n\n const handleChangePage = (_event: any, newPage: number) => {\n fetchData(newPage + 1, limit, filter)\n }\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {\n fetchData(1, +event.target.value, filter)\n setLimit(+event.target.value)\n }\n\n const onChange = (\n _event: React.SyntheticEvent<Element, Event>,\n eventFilter: EventFilter | null\n ) => {\n fetchData(1, limit, eventFilter?.url_name || '')\n setFilter(eventFilter?.url_name || '')\n }\n\n return (\n <div className={`my-ticket ${theme}`}>\n <>\n {showModalLogin || !isLogged ? (\n openLoginModal ? (\n openLoginModal()\n ) : (\n <LoginModal\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={() => {\n setShowModalLogin(false)\n setUserExpired(false)\n setIsLogged(true)\n }}\n userExpired={userExpired}\n logo={logo}\n />\n )\n ) : null}\n </>\n {data?.orders?.length ? (\n <>\n <h2>My Ticket Orders</h2>\n <Autocomplete\n disablePortal\n id=\"combo-box-demo\"\n getOptionLabel={(option: EventFilter) => option.event_name}\n onChange={onChange}\n options={data.purchased_events}\n sx={{ width: 300 }}\n renderInput={params => <TextField {...params} label={selectEventsLabel} />}\n />\n {loading ? (\n <div className=\"loading\">\n <CircularProgress />\n </div>\n ) : (\n <>\n <TableContainer component={Paper} className=\"my-ticket-table\">\n <Table aria-label=\"collapsible table\">\n <TableHead>\n <TableRow>\n {tableConfig(columns).header.map(\n (column: string, index: number) => (\n <TableCell key={index}>{column}</TableCell>\n )\n )}\n {!hideDetailsButton && <TableCell />}\n </TableRow>\n </TableHead>\n <TableBody>\n {data.orders?.map((row: RowItems) => (\n <MyTicketsRow\n key={row.id}\n row={row}\n handleDetailsInfo={handleDetailsInfo}\n columns={columns}\n hideDetailsButton={hideDetailsButton}\n />\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n <TablePagination\n rowsPerPageOptions={[10, 25, 100]}\n component=\"div\"\n count={data.total_count}\n rowsPerPage={limit}\n page={data.page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n />\n </>\n )}\n </>\n ) : (\n !loading && (\n <>\n <h2>My Ticket Orders</h2>\n <div className=\"no_orders_section\">\n <div className=\"nodata_title\">\n You have no current ticket orders on this account\n </div>\n <div className=\"nodata_subtitle\">\n Discover your next nite out <a href=\"/events\">here</a>.\n </div>\n </div>\n </>\n )\n )}\n <>\n {showModalLogin && (\n <LoginModal\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={() => {\n setShowModalLogin(false)\n setUserExpired(false)\n setIsLogged(true)\n }}\n userExpired={userExpired}\n />\n )}\n </>\n </div>\n )\n}\n","import './style.css'\n\nimport Paper from '@mui/material/Paper'\nimport Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport _find from 'lodash/find'\nimport _get from 'lodash/get'\nimport _has from 'lodash/has'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport moment from 'moment-timezone'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport SVG from 'react-inlinesvg'\n\nimport {\n getOrderDetails,\n removeFromResale,\n resaleTicket,\n updateOrderCustomFields,\n updateTicketHoldersCustomFields,\n} from '../../api'\nimport EditSvg from '../../assets/images/edit.svg'\nimport { isBrowser } from '../../utils'\nimport ConfirmModal from '../confirmModal'\nimport { InitialValuesTypes, TicketResaleModal } from '../ticketResaleModal'\nimport { CustomFieldsForm } from './CustomFieldsForm'\nimport TicketsTable, { IActionColumns, ITicketTypes } from './ticketsTable'\nimport { isFieldUpdatable, renderCustomFieldValue } from './utils'\n\ninterface TicketTypes {\n currency: string;\n discount: string;\n name: string;\n price: string;\n quantity: string;\n total: string;\n groupName: string;\n guests_count: string;\n deposit_paid: string;\n remaining: string;\n}\n\ninterface OrderDetailsTypes {\n columns: Array<{ label: string }>;\n onGetOrdersSuccess: (res: any) => void;\n onGetOrdersError: (err: any) => void;\n onReturnButtonClick: (data: any) => void;\n onRemoveFromResaleSuccess: () => void;\n onRemoveFromResaleError: (err: any) => void;\n onResaleTicketSuccess: () => void;\n onResaleTicketError: (err: any) => void;\n onUpdateOrderCustomFieldsSuccess: (val: any) => void;\n onUpdateOrderCustomFieldsError: (err: any) => void;\n onUpdateTicketHolderCustomFieldsSuccess: (val: any) => void;\n onUpdateTicketHolderCustomFieldsError: (err: any) => void;\n personalLinkIcon?: string;\n displayColumnNameInRow?: boolean;\n canSellTicket?: boolean;\n ticketsTableColumns?: Array<{\n id?: string | number;\n key: keyof ITicketTypes & keyof IActionColumns;\n label: string | number | null | undefined;\n }>;\n ordersPath?: string;\n orderId?: string | number;\n referralTitle?: string;\n itemsTitle?: string;\n ticketsTitle?: string;\n}\n\nexport interface CustomFieldOption {\n id: string;\n name: string;\n value: string;\n order: string;\n}\n\nexport interface CustomFieldTypes {\n description: string;\n enabled: string;\n id: string;\n label: string;\n name: string;\n orderId: string;\n required: boolean;\n settings: {\n showOnMyTickets: boolean;\n allowUpdate: boolean;\n className: string;\n };\n type: string;\n value: string | Array<string>;\n\n ticketHash?: string;\n options?: CustomFieldOption[];\n}\n\nconst getTotal = (data: any) => {\n if (data?.total && data?.tickets && data.tickets[0]?.currency)\n return data.tickets[0].currency + data.total\n if (!data?.total || !_has(data, 'items.ticket_types.length')) return ''\n\n return data.items.ticket_types[0].currency + data.total\n}\n\nexport const OrderDetailsContainer = ({\n columns = [],\n onGetOrdersSuccess = _identity,\n onGetOrdersError = _identity,\n onRemoveFromResaleSuccess = _identity,\n onRemoveFromResaleError = _identity,\n onResaleTicketSuccess = _identity,\n onResaleTicketError = _identity,\n onUpdateOrderCustomFieldsSuccess = _identity,\n onUpdateOrderCustomFieldsError = _identity,\n onUpdateTicketHolderCustomFieldsSuccess = _identity,\n onUpdateTicketHolderCustomFieldsError = _identity,\n onReturnButtonClick,\n personalLinkIcon = '',\n displayColumnNameInRow = false,\n canSellTicket = true,\n ticketsTableColumns,\n ordersPath,\n orderId: pOrderId,\n referralTitle = '',\n itemsTitle = '',\n ticketsTitle = 'Your Tickets',\n}: OrderDetailsTypes) => {\n const [data, setData] = useState<any>({})\n const [removeFromResaleLoading, setRemoveFromResaleLoading] = useState(false)\n const [resaleTicketLoading, setResaleTicketLoading] = useState(false)\n const [showResaleModal, setShowResaleModal] = useState(false)\n const [showRemoveResaleModal, setShowRemoveResaleModal] = useState(false)\n const [activeTicket, setActiveTicket] = useState<any>(null)\n const [showOrderCustomFieldsSection, setShowOrderCustomFieldsSection] = useState(false)\n\n const isTable = _get(data, 'tickets[0].is_table', false)\n const columnsProps = isTable\n ? [\n { label: 'Items' },\n { label: 'Price' },\n { label: 'Guests count' },\n { label: 'Deposit paid' },\n { label: 'Remaining' },\n ]\n : columns\n const ticketHoldersCustomFields = _get(data, 'ticket_data_capture', [])\n\n const orderCustomFields = _get(data, 'data_capture', [])\n const [orderUpdatableCustomFields, orderNotUpdatableCustomFields] = useMemo(() => {\n const allowedFields: CustomFieldTypes[] = []\n const notAllowedFields: CustomFieldTypes[] = []\n\n orderCustomFields.forEach((field: CustomFieldTypes) => {\n if (isFieldUpdatable(field)) {\n allowedFields.push(field)\n } else {\n notAllowedFields.push(field)\n }\n })\n return [allowedFields, notAllowedFields]\n }, [orderCustomFields])\n const orderEditableFieldsFormInitialValues = useMemo(() => {\n const initialValues = orderUpdatableCustomFields.map((field: CustomFieldTypes) => [\n field.name,\n field.type === 'checkbox' ? Boolean(field.value) : field.value || '',\n ])\n return Object.fromEntries(initialValues)\n }, [orderUpdatableCustomFields])\n\n let orderId = String(pOrderId) || ''\n if (isBrowser && !pOrderId) {\n const params: URLSearchParams = new URL(`${window.location}`).searchParams\n orderId = params.get('o') || ''\n }\n\n let orderSummery = `ID ${data.id}, placed`\n if (data.date && data.timezone) {\n const date = moment.tz(data.date, data.timezone).format('dddd, DD MMMM YYYY')\n orderSummery += ` ${date}`\n }\n\n useEffect(() => {\n (async () => {\n try {\n let orderId = pOrderId || ''\n if (isBrowser && !pOrderId) {\n const params: URLSearchParams = new URL(`${window.location}`).searchParams\n orderId = params.get('o') || ''\n }\n const response = await getOrderDetails(String(orderId))\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.attributes')\n setData(data)\n } catch (error) {\n onGetOrdersError(error)\n }\n })()\n }, [])\n\n const handleSellTicket = (ticket: ITicketTypes) => {\n const ticketTypesArr = data.items.ticket_types\n const sellTicketType = _find(\n ticketTypesArr,\n ticketType => ticketType.hash === ticket.ticket_type_hash\n )\n setActiveTicket({\n ...ticket,\n ticket_type_is_active: sellTicketType?.active,\n })\n setShowResaleModal(true)\n }\n\n const handleOnClose = () => {\n setShowResaleModal(false)\n setActiveTicket(null)\n }\n\n const handleOnSubmit = async (values: InitialValuesTypes) => {\n if (resaleTicketLoading) {\n return\n }\n\n try {\n setResaleTicketLoading(true)\n const { to, first_name, last_name, email, confirm_email, confirm } = values\n const formData = new FormData()\n formData.append('to', to)\n formData.append('first_name', first_name)\n formData.append('last_name', last_name)\n formData.append('email', email)\n formData.append('confirm_email', confirm_email)\n formData.append('confirm', String(confirm))\n\n await resaleTicket(formData, activeTicket.hash)\n const response = await getOrderDetails(orderId)\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.attributes')\n const updatedData = { ...data }\n updatedData?.tickets?.forEach((ticket: ITicketTypes) => {\n if (ticket.hash === activeTicket.hash) {\n ticket.is_sellable = false\n ticket.is_on_sale = true\n }\n })\n\n setData(updatedData)\n onResaleTicketSuccess()\n } catch (error) {\n onResaleTicketError(error)\n } finally {\n setShowResaleModal(false)\n setResaleTicketLoading(false)\n }\n }\n\n const handleRemoveFromResale = (ticket: ITicketTypes) => {\n setShowRemoveResaleModal(true)\n setActiveTicket(ticket)\n }\n\n const onCloseRemoveResale = () => {\n setShowRemoveResaleModal(false)\n setActiveTicket(null)\n }\n\n const onConfirmRemoveResale = async () => {\n if (removeFromResaleLoading) {\n return\n }\n\n try {\n setRemoveFromResaleLoading(true)\n await removeFromResale(activeTicket.hash)\n const response = await getOrderDetails(orderId)\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.attributes')\n const updatedData = { ...data }\n updatedData?.tickets?.forEach((ticket: ITicketTypes) => {\n if (ticket.hash === activeTicket.hash) {\n ticket.is_sellable = true\n ticket.is_on_sale = false\n }\n })\n\n setData(updatedData)\n onRemoveFromResaleSuccess()\n } catch (error) {\n onRemoveFromResaleError(error)\n } finally {\n setShowRemoveResaleModal(false)\n setRemoveFromResaleLoading(false)\n }\n }\n\n const handleOrderCustomFieldsUpdate = async (values: Record<string, any>) => {\n setShowOrderCustomFieldsSection(false)\n try {\n // Collect all updatable and non updatable values for bulk update\n const fullUpdatableValues = orderNotUpdatableCustomFields.reduce(\n (acc, customField) => {\n acc[customField.name] = customField.value\n return acc\n },\n { ...values }\n )\n const eventId = _get(data, 'event_id')\n const response = await updateOrderCustomFields(\n eventId,\n orderId,\n fullUpdatableValues\n )\n const updatedCustomFields = _get(response, 'data.data.attributes', [])\n\n setData((prevState: Record<string, any>) => ({\n ...prevState,\n data_capture: updatedCustomFields,\n }))\n onUpdateOrderCustomFieldsSuccess(response)\n } catch (error) {\n onUpdateOrderCustomFieldsError(error)\n }\n }\n\n const handleTicketHoldersUpdate = async (\n values: Record<string, any>,\n ticketHash: string\n ) => {\n try {\n const eventId = _get(data, 'event_id')\n const response = await updateTicketHoldersCustomFields(eventId, values, ticketHash)\n const updatedFields = _get(response, 'data.data.attributes', [])\n const notUpdatedFields = ticketHoldersCustomFields.filter(\n (field: CustomFieldTypes) => field.ticketHash !== ticketHash\n )\n\n setData((prevState: Record<string, any>) => ({\n ...prevState,\n ticket_data_capture: [...updatedFields, ...notUpdatedFields],\n }))\n onUpdateTicketHolderCustomFieldsSuccess(response)\n } catch (error) {\n onUpdateTicketHolderCustomFieldsError(error)\n }\n }\n\n return (\n <div className=\"order-details\">\n <div className=\"layout-block\">\n <h1 className=\"layout-title\">Order Details</h1>\n {!_isEmpty(orderUpdatableCustomFields) && (\n <SVG src={EditSvg} onClick={() => setShowOrderCustomFieldsSection(true)} />\n )}\n </div>\n <div className=\"order-summary-box\">\n <div className=\"summary-block\">\n <div className=\"summary-item\">\n <h6 className=\"sub-title\">Order Summary</h6>\n <p className=\"order-summary-date\">{orderSummery}</p>\n </div>\n <div className=\"summary-item\">\n <div className=\"return-button-container\">\n <button\n type=\"button\"\n className=\"return-button\"\n onClick={() => {\n if (isBrowser) {\n window.location.assign(ordersPath ?? '/orders')\n }\n }}\n >\n Back to Orders\n </button>\n </div>\n </div>\n </div>\n {!_isEmpty(orderCustomFields) && (\n <>\n <div className=\"custom-field-value-container\">\n {orderCustomFields.map((customField: CustomFieldTypes) => (\n <div className=\"info-item\" key={customField.id}>\n <b>{customField.label} :</b> {renderCustomFieldValue(customField)}\n </div>\n ))}\n </div>\n {!_isEmpty(orderUpdatableCustomFields) && (\n <div\n className={`custom-fields-block ${\n showOrderCustomFieldsSection ? 'show' : ''\n }`}\n >\n <p className=\"title\">Aditional Information Request</p>\n <CustomFieldsForm\n initialValues={orderEditableFieldsFormInitialValues}\n fields={orderUpdatableCustomFields}\n handleFormSubmit={handleOrderCustomFieldsUpdate}\n handleFormClose={() => setShowOrderCustomFieldsSection(false)}\n />\n </div>\n )}\n </>\n )}\n {!data?.disable_referral && (\n <>\n {referralTitle && (\n <h4 className=\"referral-title sub-title\">{referralTitle}</h4>\n )}\n <div className=\"personal-link\">\n <div className=\"link-item\">\n <span>Personal Share Link: </span>\n <a href={data?.personal_share_link} target=\"_blank\" rel=\"noreferrer\">\n {Boolean(personalLinkIcon) && <img src={personalLinkIcon} alt=\"Icon\" />}\n {data?.personal_share_link}\n </a>\n </div>\n {data?.sales_referred ? (\n <div className=\"link-item\">\n <p className=\"total-referrer\">{`So far, you’ve referred ${data.sales_referred} tickets`}</p>\n </div>\n ) : null}\n </div>\n </>\n )}\n {itemsTitle && <h4 className=\"items-title sub-title\">{itemsTitle}</h4>}\n <TableContainer component={Paper}>\n <Table className=\"tt-type\" aria-label=\"collapsible table\">\n <TableHead>\n <TableRow>\n {_map(columnsProps, item => (\n <TableCell>{item.label || ''}</TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.items?.ticket_types?.map((ticket: TicketTypes, index: number) =>\n data?.tickets && !data?.tickets[0].is_table ? (\n <TableRow key={index}>\n <TableCell>\n <b>Ticket Type:</b> {ticket.name}\n </TableCell>\n <TableCell>{ticket.currency + ticket.price}</TableCell>\n <TableCell>{ticket.quantity}</TableCell>\n <TableCell>{ticket.currency + ticket.total}</TableCell>\n </TableRow>\n ) : (\n <TableRow key={index}>\n <TableCell>\n <b>Ticket Type:</b> {ticket.name}\n </TableCell>\n <TableCell>{ticket.currency + ticket.price}</TableCell>\n <TableCell>{ticket.guests_count}</TableCell>\n <TableCell>{ticket.deposit_paid}</TableCell>\n <TableCell>{ticket.remaining}</TableCell>\n </TableRow>\n )\n )}\n {data?.items?.add_ons?.map((ticket: TicketTypes, index: number) => (\n <TableRow key={index}>\n <TableCell>\n <div>\n <b>Add-On</b>\n <div>\n {ticket.groupName && `${ticket.groupName}: `} {ticket.name}\n </div>\n </div>\n </TableCell>\n <TableCell>{ticket.currency + ticket.price}</TableCell>\n <TableCell>{ticket.quantity}</TableCell>\n <TableCell>{ticket.currency + ticket.total}</TableCell>\n </TableRow>\n ))}\n <TableRow className=\"total-row\">\n <TableCell />\n <TableCell />\n <TableCell>Total</TableCell>\n <TableCell>{getTotal(data)}</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n <TicketsTable\n ticketsTitle={ticketsTitle}\n tickets={data.tickets}\n columns={\n ticketsTableColumns?.length\n ? ticketsTableColumns\n : [\n { key: 'hash' as never, label: 'Ticket ID' },\n { key: 'ticket_type' as never, label: 'Ticket Type' },\n { key: 'holder_name' as never, label: 'Ticket Holder' },\n { key: 'status' as never, label: 'Status' },\n { key: 'download' as never, label: '' },\n { key: 'sell_ticket' as never, label: '' },\n ]\n }\n handleSellTicket={handleSellTicket}\n handleRemoveFromResale={handleRemoveFromResale}\n displayColumnNameInRow={displayColumnNameInRow}\n canSellTicket={canSellTicket}\n ticketHoldersCustomFields={ticketHoldersCustomFields}\n handleTicketHoldersUpdate={handleTicketHoldersUpdate}\n />\n <div className=\"return-button-container\">\n <button\n type=\"button\"\n className=\"return-button\"\n onClick={() => {\n if (onReturnButtonClick) {\n onReturnButtonClick(data)\n } else if (isBrowser) {\n window.location.assign(ordersPath ?? '/orders')\n }\n }}\n >\n Return to Order History\n </button>\n </div>\n {showResaleModal && (\n <TicketResaleModal\n ticket={activeTicket}\n onClose={handleOnClose}\n onSubmit={handleOnSubmit}\n loading={resaleTicketLoading}\n />\n )}\n {showRemoveResaleModal && (\n <ConfirmModal\n message=\"Are you sure you want to withdraw your ticket from resale?\"\n onClose={onCloseRemoveResale}\n onConfirm={onConfirmRemoveResale}\n loading={removeFromResaleLoading}\n />\n )}\n </div>\n )\n}\n","export const X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\n","import _identity from 'lodash/identity'\nimport _slice from 'lodash/slice'\nimport React, { useEffect, useState } from 'react'\n\nimport { getPreRegistrationInfluancers } from '../../api/preRegistrationComplete'\nimport { Influancers } from './Influancers'\nimport { Prewards } from './Prewards'\n\nexport const PreRegistrationInformations = (props: IPreRegistrationInformationProps) => {\n const {\n classNamePrefix,\n eventId,\n onGetPreregistrationDataSuccess = _identity,\n onGetPreregistrationDataError = _identity,\n influancersHeaderNode,\n prewardsHeaderNode,\n } = props\n\n const [prizes, setPrizes] = useState([] as Array<IPrizeData>)\n const [influencers, setInfluencers] = useState([] as Array<IInfluancerData>)\n const topInfluancers = _slice(influencers, 0, 10)\n useEffect(() => {\n const fetchPreregistrationData = async () => {\n try {\n const preregistrationData = await getPreRegistrationInfluancers({\n eventId,\n })\n setPrizes(preregistrationData.data.attributes.prizes)\n setInfluencers(preregistrationData.data.attributes.influencers)\n onGetPreregistrationDataSuccess()\n } catch (error) {\n if (error) {\n onGetPreregistrationDataError()\n }\n }\n }\n fetchPreregistrationData()\n }, [eventId, onGetPreregistrationDataError, onGetPreregistrationDataSuccess])\n\n return (\n <div className={`${classNamePrefix}_pre_registration_info_container`}>\n <Prewards\n headerNode={prewardsHeaderNode}\n data={prizes}\n classNamePrefix={classNamePrefix}\n />\n <Influancers\n headerNode={influancersHeaderNode}\n data={topInfluancers}\n classNamePrefix={classNamePrefix}\n />\n </div>\n )\n}\n","import { Alert } from '@mui/material'\nimport axios from 'axios'\nimport _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _isEqual from 'lodash/isEqual'\nimport _keys from 'lodash/keys'\nimport _map from 'lodash/map'\nimport _values from 'lodash/values'\nimport moment from 'moment'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport Countdown, { CountdownRenderProps } from 'react-countdown'\n\nimport {\n getSeatMapData,\n getSeatMapStatuses,\n removeSeatReserve,\n reserveSeat,\n} from '../../api'\nimport { useOnline } from '../../hooks/useOnline'\nimport { showZero } from '../../utils/showZero'\nimport { ReferralLogic } from '../ticketsContainer/ReferralLogic'\nimport { addToCartFunc } from './addToCart'\nimport { SeatMapComponent } from './SeatMapComponent'\nimport { TicketsSection } from './TicketsSection'\nimport {\n getAddToCartRequestData,\n getOwnReservationsBasedOnStatuses,\n getTicketDropdownData,\n getTierIdBasedOnSeatId,\n} from './utils'\n\nconst OFFLINE_MESSAGE = 'Offline.'\n\ninterface IGuestCounts {\n [key: string]: number;\n}\n\nexport const SeatMapContainer = (props: IMapContainerProps) => {\n const {\n event: {\n id: eventId,\n currency: { symbol },\n tableMapEnabled,\n country,\n },\n mapContainerId,\n timerMessage = '',\n onAddToCartSuccess = _identity,\n onCountdownFinish = _identity,\n ticketDeleteButtonContent,\n ticketInfoContent,\n } = props\n\n const [seatMapData, setSeatMapData] = useState({\n seatMap: '',\n } as {\n seatMap: string;\n seatReservationTime: number;\n seatMapType: string | null;\n tierPrices: any;\n predefinedSeats: any;\n })\n const eventSeatsRef = useRef([] as EventSeat[])\n const ticketTypeTierRelationsRef = useRef({} as TicketTypeTierRelations)\n const [selectedTickets, setSelectedTickets] = useState<{\n [seatId: string]: string;\n }>({})\n const [seatMapStatuses, setSeatMapStatuses] = useState('')\n const [reservedSeats, setReservedSeats] = useState<Array<SeatReservationData>>([])\n const [isLoadingSeatMapData, setIsLoadingSeatMapData] = useState(true)\n const [isLoadingStatuses, setIsLoadingStatuses] = useState(false)\n const [isReserving, setIsReserving] = useState(false)\n const [isAddingToCart, setIsAddingToCart] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [showTimer, setShowTimer] = useState(\n Date.now() <= Number(localStorage.getItem(`reservationStart-${eventId}`))\n )\n const [guestCounts, setGuestCounts] = useState<IGuestCounts>({} as IGuestCounts)\n const [isOnline, setIsOnline] = useState(true)\n const isGuestCountsSet = useRef(false)\n\n useOnline(setIsOnline)\n\n const updateGuestCounts = (data: any) => {\n _forEach(data, (item: any) => {\n const tierTickets = ticketTypeTierRelationsRef.current[item.tierId]\n const seatTicketsArray = _values(tierTickets)\n\n setGuestCounts((prevState: any) => ({\n [item.seatId]: Number(seatTicketsArray[0].ticket_type_min_number_of_guests),\n ...prevState,\n }))\n })\n }\n\n const fetchSeatMapData = useCallback(async () => {\n try {\n const seatMapDataResponse = await getSeatMapData(eventId)\n const {\n data: {\n attributes: {\n seatData,\n ticketTypeTierRelations,\n eventSeats,\n seatReservationTime,\n seatMapType,\n tierPrices,\n predefinedSeats,\n },\n },\n } = seatMapDataResponse\n eventSeatsRef.current = eventSeats\n ticketTypeTierRelationsRef.current = ticketTypeTierRelations\n setSeatMapData({\n seatMap: JSON.parse(seatData),\n seatReservationTime,\n seatMapType,\n tierPrices,\n predefinedSeats,\n })\n } catch (error) {\n setError('Something went wrong')\n } finally {\n setIsLoadingSeatMapData(false)\n }\n }, [eventId])\n\n const fetchSeatMapReservations = useCallback(async () => {\n if (isOnline) {\n try {\n const statusesResponse = await getSeatMapStatuses(eventId)\n const statuses = _get(statusesResponse, 'data.attributes') || {}\n const reservationData: Array<SeatReservationData> = []\n const ownReservations: string[] = getOwnReservationsBasedOnStatuses(statuses)\n\n _forEach(ownReservations, reservation => {\n const tierIdOfReservation = getTierIdBasedOnSeatId(\n reservation,\n eventSeatsRef.current\n ) as string\n reservationData.push({\n seatId: reservation,\n tierId: tierIdOfReservation,\n type: 'reserve',\n })\n })\n\n localStorage.setItem('reservationData', JSON.stringify(reservationData))\n\n if (!_isEqual(seatMapStatuses, statusesResponse.data.attributes)) {\n setSeatMapStatuses(statusesResponse.data.attributes)\n }\n if (!_isEqual(reservationData, reservedSeats)) {\n setReservedSeats(reservationData)\n }\n\n // automatically set ticket/table type if it's the only one\n if (\n ticketTypeTierRelationsRef.current &&\n !_isEqual(reservationData, reservedSeats)\n ) {\n if (!isGuestCountsSet.current) {\n updateGuestCounts(reservationData)\n isGuestCountsSet.current = true\n }\n _forEach(reservationData, (item: any) => {\n const tierTickets = ticketTypeTierRelationsRef.current[item.tierId]\n const seatTicketsArray = _values(tierTickets)\n\n setSelectedTickets((prevState: any) => ({\n ...prevState,\n [item.seatId]:\n seatTicketsArray.length === 1 ? seatTicketsArray[0].ticket_type_id : '',\n }))\n })\n\n if (_isEmpty(reservationData)) {\n setGuestCounts({})\n setSelectedTickets({})\n }\n }\n } catch (error) {\n setError('Something went wrong')\n }\n }\n }, [eventId, seatMapStatuses, reservedSeats, isOnline])\n\n const startTimer = useCallback(\n (duration: number) => {\n setShowTimer(true)\n\n if (!localStorage.getItem(`reservationStart-${eventId}`)) {\n localStorage.setItem(`reservationStart-${eventId}`, String(Date.now() + duration))\n }\n },\n [eventId]\n )\n\n const endTimer = useCallback(() => {\n localStorage.removeItem(`reservationStart-${eventId}`)\n setShowTimer(false)\n }, [eventId])\n\n const handleSeatReservation = async (\n eventId: string,\n tierId: string,\n seatId: string\n ) => {\n setIsReserving(true)\n try {\n await reserveSeat(eventId, tierId, seatId)\n await fetchSeatMapReservations()\n\n startTimer(seatMapData.seatReservationTime * 60000)\n const reservationData = JSON.parse(localStorage.getItem('reservationData') || '')\n setReservedSeats(reservationData)\n updateGuestCounts(reservationData)\n\n // automatically set ticket/table type if it's the only one\n const relations = _keys(ticketTypeTierRelationsRef.current[tierId])\n const [firstItem] = _keys(ticketTypeTierRelationsRef.current[tierId])\n handleTicketSelect(relations.length === 1 ? firstItem : '', seatId)\n } catch (error) {\n setError(\n error?.response?.data?.message === 'Selected seat is not available'\n ? // eslint-disable-next-line max-len\n 'No more of this ticket type are available right now - they’re either sold out or in people’s shopping carts. Try refreshing the page!'\n : 'Something went wrong'\n )\n } finally {\n setIsReserving(false)\n }\n }\n\n const handleCancelSeatReservtion = async (\n eventId: string,\n tierId: string,\n seatId: string\n ) => {\n setIsReserving(true)\n try {\n await removeSeatReserve(eventId, tierId, [seatId])\n await fetchSeatMapReservations()\n if (_isEmpty(JSON.parse(localStorage.getItem('reservationData') as string))) {\n endTimer()\n }\n const reservationData = JSON.parse(localStorage.getItem('reservationData') || '')\n const currentSelectedTickets = { ...selectedTickets }\n delete currentSelectedTickets[seatId]\n setReservedSeats(reservationData)\n setSelectedTickets(currentSelectedTickets)\n } catch (error) {\n setError('Something went wrong')\n } finally {\n setIsReserving(false)\n }\n }\n\n const onSeatClick = async (seatInfo: {\n seat: {\n tierId: string;\n seatId: string;\n status: string;\n };\n }) => {\n const {\n seat: { tierId, seatId, status },\n } = seatInfo\n\n const reservationData = JSON.parse(localStorage.getItem('reservationData') || '[]')\n if (status === 'B' || status === 'R' || status === 'BLOCKED' || status === 'RE')\n return\n if (_find(reservationData, data => data.seatId === seatId)) {\n handleCancelSeatReservtion(eventId, tierId, seatId)\n } else if (reservationData.length >= 10) {\n setError('Limit exceeded')\n } else {\n handleSeatReservation(eventId, tierId, seatId)\n }\n }\n\n const handleTicketSelect = (ticketId: string, seatId: string) => {\n const currentSelectedTickets = { ...selectedTickets }\n currentSelectedTickets[seatId] = ticketId\n setSelectedTickets(currentSelectedTickets)\n }\n\n const handleGetTicketBtnClick = async () => {\n setIsAddingToCart(true)\n const ticketsDropdownsData = getTicketDropdownData(\n reservedSeats,\n ticketTypeTierRelationsRef.current\n )\n let selectedSeats = {}\n _forEach(ticketsDropdownsData, ticketData => {\n selectedSeats = {\n ...selectedSeats,\n [ticketData.seatId]: ticketData.ticketsData,\n }\n })\n const addToCartData = getAddToCartRequestData({\n eventId,\n reservations: _map(reservedSeats, seat => seat.seatId),\n selectedSeats,\n selectedTickets,\n guestCounts,\n })\n try {\n const response = await addToCartFunc({\n eventId,\n data: addToCartData,\n ticketQuantity: addToCartData?.attributes?.product_cart_quantity,\n })\n localStorage.removeItem('reservationData')\n onAddToCartSuccess(response)\n } catch (error) {\n if (axios.isAxiosError(error)) {\n const message = _get(error, 'response.data.message', '')\n setError(message)\n }\n } finally {\n setIsAddingToCart(false)\n }\n }\n\n useEffect(() => {\n if (Date.now() > Number(localStorage.getItem(`reservationStart-${eventId}`))) {\n setSelectedTickets({})\n setReservedSeats([])\n }\n\n const makeRequests = async () => {\n try {\n setIsLoadingStatuses(true)\n await fetchSeatMapData()\n await fetchSeatMapReservations()\n } catch (error) {\n setError('Something went wrong')\n } finally {\n setIsLoadingStatuses(false)\n }\n }\n\n makeRequests()\n\n if (country) {\n localStorage.setItem('eventCountry', country)\n }\n }, [country, eventId, fetchSeatMapData])\n\n useEffect(() => {\n const intervalId = setInterval(() => {\n fetchSeatMapReservations()\n }, 3000)\n\n return () => {\n clearInterval(intervalId)\n }\n }, [fetchSeatMapReservations])\n\n useEffect(() => {\n if (!isOnline) {\n setError(OFFLINE_MESSAGE)\n } else if (isOnline && error === OFFLINE_MESSAGE) {\n setError(null)\n }\n }, [error, isOnline])\n\n return (\n <>\n {error && (\n <Alert\n severity=\"error\"\n onClose={() => {\n setError(null)\n }}\n variant=\"filled\"\n style={{ width: '350px' }}\n >\n {error}\n </Alert>\n )}\n {showTimer && (\n <Countdown\n date={moment(\n Number(localStorage.getItem(`reservationStart-${eventId}`))\n ).valueOf()}\n renderer={(props: CountdownRenderProps) => (\n <div className=\"reservation-countdown\">\n <span className=\"reservation-message\">{timerMessage}</span>\n <span className=\"reservation-timer\">\n {showZero(props.minutes)}:{showZero(props.seconds)}\n </span>\n </div>\n )}\n onComplete={() => {\n endTimer()\n setSelectedTickets({})\n setReservedSeats([])\n if (onCountdownFinish) {\n onCountdownFinish()\n }\n }}\n />\n )}\n {!isLoadingSeatMapData && !isLoadingStatuses && <ReferralLogic eventId={eventId} />}\n <TicketsSection\n selectedTickets={selectedTickets}\n handleTicketSelect={handleTicketSelect}\n handleCancelReservation={(seatId: string, tireId: string) =>\n handleCancelSeatReservtion(eventId, tireId, seatId)\n }\n handleGetTicketClick={handleGetTicketBtnClick}\n isAddingToCart={isAddingToCart}\n reservedSeats={reservedSeats}\n ticketDeleteButtonContent={ticketDeleteButtonContent}\n ticketInfoContent={ticketInfoContent}\n ticketTypeTierRelations={ticketTypeTierRelationsRef.current}\n currencySymbol={symbol}\n tableMapEnabled={Boolean(tableMapEnabled)}\n guestCounts={guestCounts}\n setGuestCounts={setGuestCounts}\n />\n <SeatMapComponent\n seatMapProps={{\n seatData: seatMapData.seatMap,\n statuses: seatMapStatuses,\n tierPrices: seatMapData.tierPrices,\n seatMapType: seatMapData.seatMapType,\n ticketTypeTierRelations: ticketTypeTierRelationsRef.current,\n seatMapEvents: { onSeatClick },\n isReserving,\n predefinedSeats: seatMapData.predefinedSeats,\n isLoadingSeatMapData,\n }}\n mapContainerId={mapContainerId}\n />\n </>\n )\n}\n","import { useEffect } from 'react'\n\nexport const useOnline = (handler: (value: boolean) => void) => {\n useEffect(() => {\n const handleOffline = () => {\n handler(false)\n }\n const handleOnline = () => {\n handler(true)\n }\n\n window.addEventListener('offline', handleOffline)\n window.addEventListener('online', handleOnline)\n\n return () => {\n window.removeEventListener('offline', handleOffline)\n window.removeEventListener('online', handleOnline)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n","import { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport React, { useEffect, useState } from 'react'\n\nimport { declineInvitation, processTicket } from '../../api'\n\nexport interface ITicketResaleContainer {\n onProcessTicketSuccess: (res: any) => void;\n onProcessTicketError: (e: AxiosError) => void;\n onDeclineTicketPurchaseSuccess: (res: any) => void;\n onDeclineTicketPurchaseError: (e: AxiosError) => void;\n orderHash?: string;\n billingPath?: string;\n defaultRedirection?: boolean;\n}\n\nexport const TicketResaleContainer = ({\n onProcessTicketSuccess = () => {},\n onProcessTicketError = () => {},\n onDeclineTicketPurchaseSuccess = () => {},\n onDeclineTicketPurchaseError = () => {},\n orderHash,\n billingPath,\n defaultRedirection = true,\n}: ITicketResaleContainer) => {\n const isWindowDefined = typeof window !== 'undefined'\n const [error, setError] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n\n useEffect(() => {\n (async () => {\n if (isWindowDefined) {\n const params: URLSearchParams = new URL(`${window.location}`).searchParams\n const hash = params.get('invitation_hash') || orderHash || null\n const isDeclined = params.get('decline') || false\n\n if (hash) {\n // Process of declining ticket purchase invitation\n if (isDeclined) {\n try {\n const response = await declineInvitation(hash)\n onDeclineTicketPurchaseSuccess(response)\n setSuccessMessage(\n \"Thanks for letting us know! We'll offer this ticket to someone else!\"\n )\n } catch (error) {\n setError(error?.response?.data?.message)\n onDeclineTicketPurchaseError(error.response)\n }\n return\n }\n\n try {\n const response = await processTicket(hash)\n const event_id = _get(response.data.data.attributes, 'event_id')\n\n onProcessTicketSuccess(response.data)\n if (defaultRedirection) {\n window.location.href = `${billingPath ?? '/billing/billing-info'}?event_id=${event_id}`\n }\n } catch (error) {\n setError(error?.response?.data?.message)\n onProcessTicketError(error.response)\n }\n } else {\n window.location.href = '/'\n }\n }\n })()\n }, [])\n\n return (\n <div className=\"ticket-resale-page\">\n <div className={`${successMessage ? 'success-block' : 'error-block'}`}>\n <h3>{successMessage ? successMessage : error}</h3>\n </div>\n </div>\n )\n}\n","import './style.css'\n\nimport { createTheme, ThemeOptions } from '@mui/material'\nimport Alert from '@mui/material/Alert'\nimport { ThemeProvider } from '@mui/private-theming'\nimport { CSSProperties } from '@mui/styles'\nimport axios, { AxiosError } from 'axios'\nimport _filter from 'lodash/filter'\nimport _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _includes from 'lodash/includes'\nimport _isEmpty from 'lodash/isEmpty'\nimport _some from 'lodash/some'\nimport moment from 'moment-timezone'\nimport React, { ReactNode, useEffect, useRef, useState } from 'react'\nimport Button from 'react-bootstrap/Button'\n\nimport {\n addToCart,\n getCheckoutPageConfigs,\n getEvent,\n getProfileData,\n getTickets,\n logout,\n postOnCheckout,\n} from '../../api'\nimport { getPreRegistrationInfluancers } from '../../api/preRegistrationComplete'\nimport { X_TF_ECOMMERCE } from '../../constants'\nimport { useCookieListener } from '../../hooks/useCookieListener'\nimport { useLocalStorageListener } from '../../hooks/useLocalStorageListener'\nimport { usePixel } from '../../hooks/usePixel'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n deleteCookieByName,\n getCookieByName,\n getQueryVariable,\n isBrowser,\n setLoggedUserData,\n} from '../../utils'\nimport { Loader } from '../common/index'\nimport { PoweredBy } from '../common/PoweredBy'\nimport ConfirmModal from '../confirmModal'\nimport Countdown from '../countdown'\nimport { VerificationPendingModal } from '../idVerificationContainer/VerificationPendingModal'\nimport { LoginModal } from '../loginModal'\nimport WaitingList from '../waitingList'\nimport { AccessCodeSection } from './AccessCodeSection'\nimport { PromoCodeSection } from './PromoCodeSection'\nimport { ReferralLogic } from './ReferralLogic'\nimport { TicketsSection } from './TicketsSection'\n\ninterface CartSuccess {\n skip_billing_page: boolean;\n event_id: string;\n hash?: string | number;\n total?: string | number;\n hasAddOn?: boolean;\n}\n\nexport interface IGetTickets {\n eventId: number;\n onAddToCartSuccess: (response: CartSuccess) => void;\n getTicketsLabel?: string;\n contentStyle?: React.CSSProperties;\n onAddToCartError: (e: AxiosError) => void;\n onGetTicketsSuccess: (response: any) => void;\n onGetTicketsPress: () => void;\n onGetTicketsError: (e: AxiosError) => void;\n onLogoutSuccess: () => void;\n onLogoutError: (e: AxiosError) => void;\n onGetProfileDataSuccess: (response: any) => void;\n onGetProfileDataError: (e: AxiosError) => void;\n onLoginSuccess: () => void;\n handleNotInvitedModalClose: () => void;\n handleInvalidLinkModalClose: () => void;\n theme?: 'light' | 'dark';\n queryPromoCode?: string;\n isPromotionsEnabled?: boolean;\n themeOptions?: ThemeOptions & {\n input?: CSSProperties;\n checkbox?: CSSProperties;\n };\n isAccessCodeEnabled?: boolean;\n hideSessionButtons?: boolean;\n hideWaitingList?: boolean;\n enableBillingInfoAutoCreate?: boolean;\n isButtonScrollable?: boolean;\n sortBySoldOut?: boolean;\n disableCountdownLeadingZero?: boolean;\n isLoggedIn?: boolean;\n actionsSectionComponent?: any;\n ticketsHeaderComponent?: ReactNode;\n hideTicketsHeader?: boolean;\n tableTicketsHeaderComponent?: ReactNode;\n hideTableTicketsHeader?: boolean;\n enableInfluencersSection?: boolean;\n enableAddOns?: boolean;\n ordersPath?: string;\n showPoweredByImage?: boolean;\n promoText?: string;\n showGroupNameBlock?: boolean;\n currencySybmol?: string;\n onReserveButtonClick?: () => void;\n onPendingVerification?: () => void;\n showAlertIcons?: boolean;\n}\n\nexport interface ITicket {\n id: string | number;\n [key: string]: string | number;\n}\n\ninterface IInfluencer {\n [key: string]: string | undefined;\n}\nexport interface ISelectedTickets {\n isTable: boolean;\n [key: string]: string | number | boolean;\n}\n\nexport const TicketsContainer = ({\n onLoginSuccess,\n getTicketsLabel,\n eventId,\n onAddToCartSuccess,\n contentStyle = {},\n onAddToCartError = _identity,\n onGetTicketsSuccess = _identity,\n onGetTicketsError = _identity,\n onLogoutSuccess = _identity,\n onLogoutError = _identity,\n onGetProfileDataSuccess = _identity,\n onGetProfileDataError = _identity,\n onGetTicketsPress = _identity,\n theme = 'light',\n queryPromoCode = '',\n isPromotionsEnabled = true,\n themeOptions,\n isAccessCodeEnabled = false,\n hideSessionButtons = false,\n hideWaitingList = false,\n enableBillingInfoAutoCreate = true,\n isButtonScrollable = false,\n sortBySoldOut = false,\n disableCountdownLeadingZero = false,\n isLoggedIn = false,\n actionsSectionComponent: ActionsSectionComponent,\n ticketsHeaderComponent,\n hideTicketsHeader = false,\n tableTicketsHeaderComponent,\n hideTableTicketsHeader = false,\n enableInfluencersSection = true,\n enableAddOns = true,\n handleNotInvitedModalClose = _identity,\n handleInvalidLinkModalClose = _identity,\n ordersPath,\n showPoweredByImage = false,\n promoText,\n showGroupNameBlock = false,\n currencySybmol = '',\n onReserveButtonClick = _identity,\n onPendingVerification = _identity,\n showAlertIcons = true,\n}: IGetTickets) => {\n const [selectedTickets, setSelectedTickets] = useState({} as ISelectedTickets)\n const isWindowDefined = typeof window !== 'undefined'\n const [isLogged, setIsLogged] = useState(Boolean(getCookieByName(X_TF_ECOMMERCE)))\n const [showLoginModal, setShowLoginModal] = useState(false)\n const [tickets, setTickets] = useState([] as ITicketData[])\n const [event, setEvent] = useState<any>(null)\n const [showWaitingList, setShowWaitingList] = useState(false)\n const [isLoading, setIsLoading] = useState(true)\n const [codeIsLoading, setCodeIsLoading] = useState(false)\n const [handleBookIsLoading, setHandleBookIsLoading] = useState(false)\n const [code, setCode] = useState(getQueryVariable('r') || queryPromoCode)\n const [showPromoInput, setShowPromoInput] = useState(false)\n const [codeIsApplied, setCodeIsApplied] = useState(false)\n const [codeIsInvalid, setCodeIsInvalid] = useState(false)\n const [showAccessCodeSection, setShowAccessCodeSection] = useState(isAccessCodeEnabled)\n const [showPromoCodeSection, setShowPromoCodeSection] = useState(isPromotionsEnabled)\n const [error, setError] = useState(null)\n const [isNotInvitedError, setIsNotInvitedError] = useState('')\n const [isInvalidLinkError, setIsInvalidLinkError] = useState('')\n const [pendingVerificationMessage, setPendingVerificationMessage] = useState()\n const [preregistereds, setPreregistereds] = useState([] as Array<IInfluancerData>)\n const [ticketsNotAvailableModalOpen, setTicketsNotAvailableModalOpen] = useState(false)\n const [isPreregistred, setIsPreregisred] = useState(checkUserPreregistration())\n const ticketsContainerRef = useRef<HTMLDivElement>(null)\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n useCookieListener(X_TF_ECOMMERCE, value => setIsLogged(Boolean(value)))\n useLocalStorageListener('user_data', (user: any) => {\n const isPreregistredUser = _some(preregistereds, item => item.email === user?.email)\n setIsPreregisred(isPreregistredUser)\n })\n usePixel(eventId, { pageUrl })\n\n useEffect(() => {\n window.localStorage.removeItem('extraData')\n }, [])\n\n useEffect(() => {\n if (eventId) {\n getTicketsApi()\n fetchPreregisteredsData()\n }\n }, [eventId])\n\n useEffect(() => {\n setIsPreregisred(checkUserPreregistration())\n }, [preregistereds])\n\n useEffect(() => {\n if (isLogged) {\n fetchUserData()\n .then(res => {\n window.localStorage.setItem('user_data', JSON.stringify(res))\n onGetProfileDataSuccess(res)\n })\n .catch(e => {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n })\n }\n }, [isLogged])\n\n const handleLogout = async () => {\n try {\n await logout()\n onLogoutSuccess()\n if (isBrowser) {\n window.localStorage.removeItem('user_data')\n setIsLogged(false)\n const event = new window.CustomEvent('tf-logout')\n deleteCookieByName('X-TF-ECOMMERCE')\n window.document.dispatchEvent(event)\n }\n } catch (e) {\n onLogoutError(e)\n }\n }\n\n const handleExternalLogin = () => {\n setIsLogged(true)\n }\n\n const handleOnClose = () => {\n setShowLoginModal(false)\n }\n\n const handleOnLogin = () => {\n setShowLoginModal(false)\n setIsLogged(true)\n if (onLoginSuccess) {\n onLoginSuccess()\n }\n }\n\n async function getTicketsApi(isUpdateingCode?: boolean, type?: string) {\n try {\n isUpdateingCode ? setCodeIsLoading(true) : setIsLoading(true)\n const previewKey = getQueryVariable('pk') || undefined\n const response = await getTickets(eventId, code, previewKey)\n const eventResponse = await getEvent(eventId, previewKey)\n if (response.success) {\n const attributes = response?.data?.attributes\n type === 'promo' && setCodeIsApplied(attributes.ValidPromoCode)\n type === 'promo' && setCodeIsInvalid(!attributes.ValidPromoCode)\n setTickets(attributes.tickets)\n setShowWaitingList(attributes.showWaitingList)\n onGetTicketsSuccess(response.data)\n setCode('')\n setShowAccessCodeSection(attributes.is_access_code)\n setShowPromoCodeSection(attributes.isPromotionsEnabled)\n }\n if (eventResponse.success) {\n const event = eventResponse.data.attributes\n setEvent(event)\n\n if (event.country && isBrowser) {\n window.localStorage.setItem('eventCountry', event.country)\n }\n }\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetTicketsError(e)\n setError(_get(e, 'response.data.message'))\n }\n } finally {\n setIsLoading(false)\n setCodeIsLoading(false)\n }\n }\n\n async function fetchPreregisteredsData() {\n try {\n const preregistrationData = await getPreRegistrationInfluancers({\n eventId,\n })\n setPreregistereds(preregistrationData.data.attributes.influencers)\n } catch (error) {\n if (axios.isAxiosError(error)) {\n setError(_get(error, 'response.data.message'))\n }\n }\n }\n\n const handleTicketSelect = (key: string, value: number | string, isTable = false) => {\n localStorage.setItem('selectedTicketsQuantity', value.toString())\n setSelectedTickets(prevState => {\n if (Object.keys(prevState)[0] !== key && !value) {\n return prevState\n }\n return {\n [key]: value,\n isTable,\n }\n })\n }\n\n function checkUserPreregistration() {\n const userDataString = isWindowDefined ? window.localStorage.getItem('user_data') : ''\n let isPreregistredUser = false\n if (userDataString) {\n const user = JSON.parse(userDataString)\n isPreregistredUser = _some(preregistereds, item => item.email === user?.email)\n }\n return isPreregistredUser\n }\n\n const handleOrdersClick = () => {\n if (isBrowser) {\n window.location.href = ordersPath ?? '/orders'\n }\n }\n\n const onErrorClose = () => {\n setError(null)\n }\n\n const handleBook = async () => {\n setHandleBookIsLoading(true)\n const ticket = _find(tickets, item => selectedTickets[item.id] > 0) || ({} as ITicket)\n const optionName = _get(ticket, 'optionName')\n const ticketId = _get(ticket, 'id')\n const isTableType = _get(ticket, 'isTable', false)\n const productCartQuantity = +selectedTickets[ticket.id]\n const ticketQuantity = isTableType ? 1 : +selectedTickets[ticket.id]\n\n const data: ICartRequestData = {\n attributes: {\n alternative_view_id: null,\n product_cart_quantity: productCartQuantity,\n product_options: {\n [optionName]: ticketId,\n },\n product_id: eventId,\n ticket_types: {\n [ticketId]: {\n product_options: {\n [optionName]: ticketId,\n ticket_price: ticket.price,\n },\n quantity: ticketQuantity,\n },\n },\n },\n }\n\n try {\n onGetTicketsPress()\n const result = await addToCart(eventId, data)\n const pageConfigsDataResponse = enableAddOns\n ? await getCheckoutPageConfigs()\n : {\n status: 200,\n data: { attributes: _get(result, 'data.attributes') },\n }\n\n if (result.status === 200 && pageConfigsDataResponse.status === 200) {\n const pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const skipBillingPage = pageConfigsData.skip_billing_page ?? false\n const hasAddOn = pageConfigsData.has_add_on ?? false\n const freeTicket = pageConfigsData.free_ticket ?? false\n\n let hash: string | number | undefined = ''\n let total: string | number | undefined = ''\n\n isBrowser && window.localStorage.removeItem('add_ons')\n\n if (skipBillingPage && !hasAddOn) {\n // Get user data for checkout data\n const userData =\n isBrowser && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketQuantity,\n userData\n )\n\n const checkoutResponse = enableBillingInfoAutoCreate\n ? await postOnCheckout(checkoutBody, freeTicket)\n : null\n\n hash = checkoutResponse?.data?.attributes?.hash || ''\n total = checkoutResponse?.data?.attributes?.total || ''\n }\n\n onAddToCartSuccess({\n skip_billing_page: skipBillingPage,\n event_id: String(eventId),\n hash,\n total,\n hasAddOn,\n })\n }\n } catch (e) {\n if (e.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(e.response?.data?.message)\n } else if (axios.isAxiosError(e)) {\n onAddToCartError(e)\n const message = _get(e, 'response.data.message', '')\n const isInvalidLinkError = _includes(\n message,\n 'No more of this ticket type are available right now'\n )\n const isNotInvitedError = _includes(\n message,\n 'You must have been invited to this event to attend'\n )\n\n if (isInvalidLinkError) {\n setIsInvalidLinkError(message)\n } else if (isNotInvitedError) {\n setIsNotInvitedError(message)\n } else {\n setError(message)\n }\n }\n } finally {\n setHandleBookIsLoading(false)\n }\n }\n\n const updateTickets = (isUpdateingCode?: boolean, type?: string) => {\n getTicketsApi(isUpdateingCode, type)\n }\n\n const fetchUserData = async () => {\n try {\n const userDataResponse = await getProfileData()\n const profileData = _get(userDataResponse, 'data')\n const profileDataObj = setLoggedUserData(profileData)\n return profileDataObj\n } catch (e) {\n throw new Error(e)\n }\n }\n\n const isTicketOnSale = _some(\n tickets,\n item =>\n (item.salesStarted || event?.presalesStarted) && !item.salesEnded && !item.soldOut\n )\n\n const eventHasTickets = !_isEmpty(tickets)\n const isSalesClosed = event?.salesEnded\n\n const themeMui = createTheme(themeOptions)\n\n useEffect(() => {\n window.document.addEventListener('custom-login', handleExternalLogin)\n window.document.addEventListener('custom-logout', handleLogout)\n\n return () => {\n window.document.removeEventListener('custom-login', handleExternalLogin)\n window.document.removeEventListener('custom-logout', handleLogout)\n }\n }, [])\n\n const handleGetTicketClick = () => {\n if (\n !handleBookIsLoading &&\n !_isEmpty(selectedTickets) &&\n Object.values(selectedTickets)[0] > 0\n ) {\n handleBook()\n } else {\n if (isButtonScrollable && ticketsContainerRef && ticketsContainerRef.current) {\n ticketsContainerRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'nearest',\n })\n }\n }\n }\n\n const handleNotAvailableTicketsClick = () => {\n if (!_isEmpty(selectedTickets)) {\n setTicketsNotAvailableModalOpen(true)\n }\n }\n\n const bookButtonIsDisabled =\n (handleBookIsLoading ||\n _isEmpty(selectedTickets) ||\n Object.values(selectedTickets)[0] === 0) &&\n !event?.flagSeatMapAllowed\n\n const isTicketAvailable = _some(\n tickets,\n ticket =>\n ticket.displayTicket &&\n !ticket.soldOut &&\n (ticket.salesStarted || (event?.presalesStarted && !event?.presalesEnded))\n )\n\n const wrappedActionsSectionComponent = React.isValidElement(ActionsSectionComponent)\n ? React.cloneElement(ActionsSectionComponent as React.ReactElement<any>, {\n handleGetTicketClick,\n isTicketOnSale,\n isTicketAvailable,\n })\n : null\n\n const externalUrl = event?.redirectUrl\n const eventSaleIsNotStarted =\n !event?.salesStarted && event?.salesStart && !isTicketAvailable\n const influencers = event?.referralsEnabled ? event?.referrals : []\n\n const canShowGetTicketBtn = () => {\n if (\n !wrappedActionsSectionComponent &&\n !eventSaleIsNotStarted &&\n isTicketOnSale &&\n !event?.salesEnded &&\n !externalUrl\n ) {\n return true\n }\n\n return false\n }\n\n const onClose = (value: string) => {\n if (value === 'notInvited') {\n handleNotInvitedModalClose()\n } else if (value === 'invalidLink') {\n handleInvalidLinkModalClose()\n }\n setIsNotInvitedError('')\n setIsInvalidLinkError('')\n }\n const hideTopInfluencers = event?.hideTopInfluencers\n const isSeatMapAllowed = _get(event, 'seatMapAllowed', false)\n const isTableMapEnabled = _get(event, 'tableMapEnabled', false)\n\n const notAvailableTicketsMessage = `Tickets for this event are not available until ${moment(\n event?.salesStart\n ).format(\n 'dddd, DD MMMM YYYY'\n )}. \\n If you pre-registered, log into your account first to buy your pre-sale ticket.`\n\n const tableTickets = _filter(tickets, (ticket: any) => ticket.isTable)\n const ordinarTickets = {} as ITicket\n _forEach(tickets, (ticket: any, key: string) => {\n if (!ticket.isTable) {\n ordinarTickets[key] = ticket\n }\n })\n return (\n <ThemeProvider theme={themeMui}>\n {!isLoading && <ReferralLogic eventId={eventId} />}\n <div className={`get-tickets-page ${theme}`} style={contentStyle}>\n {isInvalidLinkError && (\n <ConfirmModal\n message={isInvalidLinkError}\n hideCancelBtn={true}\n onClose={() => onClose('invalidLink')}\n onConfirm={() => onClose('invalidLink')}\n />\n )}\n {isNotInvitedError && (\n <ConfirmModal\n hideCancelBtn={true}\n message={isNotInvitedError}\n onClose={() => onClose('notInvited')}\n onConfirm={() => onClose('notInvited')}\n // loading={removeFromResaleLoading}\n />\n )}\n {error && (\n <Alert\n severity=\"error\"\n onClose={onErrorClose}\n variant=\"filled\"\n style={{ width: '350px' }}\n >\n {error}\n </Alert>\n )}\n {ticketsNotAvailableModalOpen && (\n <ConfirmModal\n message={notAvailableTicketsMessage}\n hideCancelBtn={true}\n onClose={() => onClose('invalidLink')}\n onConfirm={() => setTicketsNotAvailableModalOpen(false)}\n />\n )}\n {isLoading ? (\n <Loader />\n ) : (\n <div ref={ticketsContainerRef}>\n {!isSalesClosed && (\n <TicketsSection\n event={event}\n ticketsList={ordinarTickets}\n tableTickets={tableTickets}\n selectedTickets={selectedTickets}\n handleTicketSelect={handleTicketSelect}\n sortBySoldOut={sortBySoldOut}\n ticketsHeaderComponent={ticketsHeaderComponent}\n tableTicketsHeaderComponent={tableTicketsHeaderComponent}\n hideTableTicketsHeader={hideTableTicketsHeader || _isEmpty(tableTickets)}\n hideTicketsHeader={hideTicketsHeader || _isEmpty(ordinarTickets)}\n showGroupNameBlock={showGroupNameBlock}\n currencySybmol={currencySybmol}\n isSeatMapAllowed={isSeatMapAllowed}\n />\n )}\n {externalUrl ? null : isSalesClosed ? (\n <p\n className={`event-closed-message ${\n !isLoggedIn ? 'event-closed-on-bottom' : ''\n }`}\n >\n Sales for this event are closed.\n </p>\n ) : eventSaleIsNotStarted ? (\n <Countdown\n startDate={event.salesStart}\n timezone={event.timezone}\n title=\"Sales start in:\"\n message=\"No tickets are currently available for this event.\"\n showMessage={!eventHasTickets}\n callback={updateTickets}\n disableLeadingZero={disableCountdownLeadingZero}\n isLoggedIn={isLoggedIn}\n />\n ) : null}\n {showWaitingList && event.salesStarted && !hideWaitingList && (\n <WaitingList\n tickets={ordinarTickets}\n eventId={eventId}\n defaultMaxQuantity={event.waitingListMaxQuantity}\n />\n )}\n {codeIsLoading ? (\n <Loader />\n ) : isSalesClosed ? null : showAccessCodeSection ? (\n <AccessCodeSection\n code={code}\n setCode={setCode}\n updateTickets={updateTickets}\n />\n ) : showPromoCodeSection ? (\n <PromoCodeSection\n code={code}\n codeIsApplied={codeIsApplied}\n setCodeIsApplied={setCodeIsApplied}\n showPromoInput={showPromoInput}\n setShowPromoInput={setShowPromoInput}\n setCode={setCode}\n updateTickets={updateTickets}\n codeIsInvalid={codeIsInvalid}\n setCodeIsInvalid={setCodeIsInvalid}\n promoText={promoText}\n showAlertIcons={showAlertIcons}\n />\n ) : null}\n {wrappedActionsSectionComponent}\n {canShowGetTicketBtn() && (\n <Button\n aria-hidden={true}\n className={`book-button \n ${bookButtonIsDisabled ? 'disabled' : ''} \n ${isButtonScrollable ? 'is-scrollable' : ''}\n ${!isLoggedIn ? 'on-bottom' : ''}\n `}\n onClick={\n event?.salesStart &&\n event?.presalesStarted &&\n !event?.presalesEnded &&\n (!isPreregistred || !isLogged)\n ? handleNotAvailableTicketsClick\n : handleGetTicketClick\n }\n >\n {selectedTickets.isTable\n ? 'RESERVE TABLES'\n : getTicketsLabel || 'GET TICKETS'}\n </Button>\n )}\n {isSeatMapAllowed && !event?.salesEnded && isTicketAvailable && (\n <Button\n className=\"reserve-button\"\n aria-hidden={true}\n onClick={onReserveButtonClick}\n >\n {isTableMapEnabled ? 'Select on map' : 'Select your seats'}\n </Button>\n )}\n {isLogged && !hideSessionButtons ? (\n <div className=\"session-wrapper\">\n <span className=\"session-container\">\n <Button\n variant=\"outline-light\"\n className=\"session-buttons\"\n onClick={handleOrdersClick}\n >\n My Orders\n </Button>\n </span>\n <span className=\"session-container\">\n <Button\n variant=\"outline-light\"\n className=\"session-buttons\"\n onClick={handleLogout}\n >\n Log out\n </Button>\n </span>\n </div>\n ) : (\n ''\n )}\n </div>\n )}\n {showLoginModal ? (\n <LoginModal onClose={handleOnClose} onLogin={handleOnLogin} />\n ) : null}\n </div>\n {showPoweredByImage ? <PoweredBy /> : null}\n {enableInfluencersSection && !hideTopInfluencers && influencers.length ? (\n <div className=\"event-influencers\">\n <h3>\n <span>TOP</span> INFLUENCERS\n </h3>\n <ol className=\"influencer-list\">\n {influencers.map((influencer: IInfluencer, i: number) => (\n <li className=\"influencer-item\" key={i}>\n {`${influencer.firstName} ${influencer.lastName?.charAt(0)}`}{' '}\n </li>\n ))}\n </ol>\n </div>\n ) : null}\n <VerificationPendingModal\n message={pendingVerificationMessage}\n onClose={() => {\n onPendingVerification()\n }}\n />\n </ThemeProvider>\n )\n}\n","import { useEffect, useState } from 'react'\n\nexport function useLocalStorageListener(\n key: string,\n callback: (value: string | null) => void\n): string | null {\n const isWindowDefined = typeof window !== 'undefined'\n const [value, setValue] = useState<string | null>(\n isWindowDefined ? localStorage.getItem(key) : ''\n )\n\n useEffect(() => {\n const intervalId = setInterval(() => {\n const newValue = localStorage.getItem(key)\n if (newValue !== value) {\n setValue(newValue)\n callback(JSON.parse(newValue || ''))\n }\n }, 100)\n\n return () => {\n clearInterval(intervalId)\n }\n }, [key, value, callback])\n\n return value\n}\n"],"names":["headers","Accept","Content-Type","isWindowDefined","window","authGuestToken","localStorage","getItem","publicRequest","axios","create","baseURL","setBaseUrl","baseUrl","defaults","setGuestToken","guestToken","common","CONFIGS","getQueryVariable","variable","vars","location","search","substring","split","i","length","pair","decodeURIComponent","ErrorFocus","connect","componentDidUpdate","prevProps","formik","isSubmitting","isValidating","keys","Object","errors","errorElement","document","querySelector","focus","Component","getDomain","url","subdomain","updatedUrl","replace","slice","join","indexOf","getCookieByName","cname","name","ca","cookie","c","charAt","deleteCookieByName","domain","hostname","downloadPDF","pdfUrl","xtfCookie","X-TF-ECOMMERCE","fetch","credentials","then","response","_context","blob","blobValue","fileNameHeader","get","fileName","Error","file","Blob","type","fileURL","URL","createObjectURL","link","createElement","href","setAttribute","body","appendChild","click","removeChild","error","createCheckoutDataBodyWithDefaultHolder","ticketsQuantity","logedInValues","includeDob","userCredentials","ticket_holders","first_name","_get","last_name","phone","email","push","attributes","confirm_email","holderAgeDate","Date","dob_day","getDate","dob_month","getMonth","dob_year","getFullYear","createMarkup","data","__html","replaceVarInString","message","varArray","re","RegExp","index","_","value","isBrowser","getFormInitialValues","fieldsSections","initialValues","userData","JSON","parse","_forEach","item","fields","fieldItem","setLoggedUserData","id","firstName","lastName","confirmEmail","city","country","countryId","street_address","streetAddress","state","stateId","zip","zipCode","getFieldsKeys","customFields","_map","field","isJson","e","interceptors","request","use","config","updatedHeaders","Authorization-Guest","additionalCookiesHeaderValue","Additional-Cookies","X_SOURCE_ORIGIN","X-Source-Origin","BASE_URL","setItem","method","days","expires","date","setTime","getTime","toUTCString","setCustomCookie","_error$response","status","removeItem","_error$response2","_error$response2$data","Promise","reject","optionsAdapter","options","option","label","fieldDataAdapter","required","description","restValues","adaptedField","className","multiline","radios","isMultiple","customFieldsDataAdapter","adaptedTicketFields","adaptedOrderFields","ticketFields","orderFields","ticketField","orderField","ticketsFields","authorize","post","CLIENT_ID","register","_context3","getProfileData","_context4","logout","_context5","getOrders","page","limit","eventSlug","slug","EVENT_SLUG","BRAND_SLUG","getOrderDetails","orderId","_context2","addToCart","Referer-Url","referrer","getCart","postOnCheckout","freeTicket","getEvent","pk","referralValue","params","referralId","searchParams","referral_key","_split","referralIdlocal","Referrer-Id","getTickets","eventId","promoCode","invitationHash","String","ticketsArr","tickets","adaptedResponse","getCountries","getStates","sendRSVPInfo","addToWaitingList","_context6","postReferralVisits","_context7","validatePhoneNumber","_context8","getPaymentData","hash","handlePaymentSuccess","orderHash","undefined","handleFreeSuccess","getConfirmationData","getConditions","adaptedData","nanoid","text","checked","returnData","resaleTicket","removeFromResale","processTicket","declineInvitation","getCustomerExistsData","accessHash","getDelegationTickets","issueTicket","setCustomHeader","guestHeaderResponseValue","guestHeaderExistingValue","guestHeader","forgotPassword","getAddons","addons","getCheckoutPageConfigs","getCustomFields","updateOrderCustomFields","customFieldsData","put","order_id","data_capture","updateTicketHoldersCustomFields","ticketHash","ticket_hash","ticket_data_capture","confirmPreRegistration","getSeatMapData","reservedSeatsHash","reserved_seats_hash","getSeatMapStatuses","reserveSeat","tierId","seatId","_context9","ttl","removeSeatReserve","seatIds","_context10","getNetverifyUrl","_context11","checkVerificationStatus","_context12","updateVerificationStatus","_context13","patch","verification","verificationStatus","checkCustomerOrder","_context14","refreshSeatReservation","_context15","withCustomFields","Children","props","_props$ticketHoldersF","ticketHoldersFields","_props$skipCustomFiel","skipCustomFields","_props$onGetCustomFie","onGetCustomFieldsError","_identity","_props$onGetCustomFie2","onGetCustomFieldsSuccess","args","useState","lodaing","setLoading","setCustomFieldsData","customFieldsOrderKeys","setCustomFieldsOrderKeys","customFieldsTicketHolderKeys","setCustomFieldsTicketHolderKeys","getFields","orderFieldsKeys","ticketHoldersFieldsKeys","useEffect","initialData","_isEmpty","dataWithCustomFields","ticketHoldersWithCustomFields","orderWithCustomFields","groupClassname","groupItems","initialDataFields","splice","ticketHoldersFieldsArr","ticketHoldersCustomFieldsBlueprint","getDataWithCustomFields","React","CircularProgress","size","appendScriptsToHeader","code","tempEl","innerHTML","scripts","getElementsByTagName","script","src","head","addGTagToHeader","tagId","links","_document","_document2","trim","append","scriptBody","dataLayer","gtag","_window","domains","usePixel","getScript","page_url","pageOptions","pageUrl","order_hash","brandGoogleTagKey","eventGoogleTagKey","eventGoogleTagManagerLinkerDomains","console","SnackbarAlert","_ref$autoHideDuration","autoHideDuration","onClose","Snackbar","open","isOpen","anchorOrigin","position","vertical","horizontal","classes","root","Alert","severity","variant","icon","action","filled","CustomField","_ref2$type","_ref2$selectOptions","selectOptions","_ref2$form","form","touched","submitCount","theme","_ref2$inputProps","inputProps","pInputProps","_ref2$InputProps","InputProps","inputRef","onChange","_ref2$multiline","_ref2$minRows","minRows","maxRows","disabled","Boolean","isShrinked","setIsShrinked","_ref","useRef","isAutoFilled","current","_ref$current","matches","isSelectField","isTouched","_includes","customTheme","useTheme","sx","input","_isFunction","_isObject","TextField","placeholder","select","fullWidth","helperText","onFocus","SelectProps","native","MenuProps","InputLabelProps","shrink","onBlur","key","PoweredBy","alt","style","top","left","transform","minWidth","backgroundColor","border","outline","padding","Schema","Yup","shape","ForgotPasswordModal","_ref$onLoginButtonCli","onLoginButtonClick","_ref$onForgotPassword","onForgotPasswordSuccess","_ref$onForgotPassword2","onForgotPasswordError","_ref$showPoweredByIma","showPoweredByImage","loading","onForgotPassword","isAxiosError","Modal","Box","Formik","validationSchema","onSubmit","isValid","dirty","Form","handleSubmit","Field","component","onClick","maxHeight","overflow","_ref$actions","actions","_ref$modalClassName","modalClassName","MuiModal","children","Button","VerificationPendingModal","displayModal","showModal","setShowModal","emailRegex","combineValidators","validators","error_message","requiredValidator","errorMessage","addEventListener","err","isFalsy","emailValidator","test","LoginModal","onLogin","_ref$alreadyHasUser","alreadyHasUser","_ref$userExpired","userExpired","_ref$onGetProfileData","onGetProfileDataSuccess","_ref$onGetProfileData2","onGetProfileDataError","_ref$onSignup","onSignup","_ref$modalClassname","modalClassname","logo","_ref$showForgotPasswo","showForgotPasswordButton","_ref$showSignUpButton","showSignUpButton","setError","password","authRes","profileResponse","profileDataObj","stringify","event","CustomEvent","dispatchEvent","_e$response","_e$response$data","validate","meta","SignupSchema","min","confirmPassword","oneOf","SignupModal","_ref$onLogin","_ref$onRegisterSucces","onRegisterSuccess","_ref$onRegisterError","onRegisterError","values","formData","FormData","set","CLIENT_SECRET","showZero","intNumber","Number","_isNumber","TimerWidget","expires_at","buyLoading","_ref$onCountdownFinis","onCountdownFinish","setShowTimer","handleCountdownFinish","timerRl","visibility","SVG","width","height","fill","Countdown","now","renderer","minutes","seconds","completed","memo","CheckboxField","_ref$form","errorText","hasError","FormControl","FormGroup","FormControlLabel","control","Checkbox","componentsProps","typography","checkbox","FormHelperText","rest","_rest$form","CheckboxMaterial","_rest$form2","PhoneNumberField","setFieldError","setFieldValue","setFieldTouched","setErrors","_ref$disableDropdown","disableDropdown","_ref$defaultCountry","defaultCountry","_ref$fill","setPhoneValidationIsLoading","isCountryCodeEditable","debounceCb","useCallback","_debounce","cb","newErrors","MuiPhoneNumber","dialCode","autoFormat","disableAreaCodes","countryCodeEditable","Loader","SelectField","_ref$options","_ref$onChange","_field$value","selectId","getSelectedItemLabel","selectedValue","selectedItem","find","InputLabel","Select","labelId","multiple","target","OutlinedInput","renderValue","selected","textAlign","map","MenuItem","ListItemText","primary","CopyMessageModal","showCopyModal","compactStyleTheme","createTheme","components","MuiPaper","defaultProps","& > div","& > div > div, & > div > div > div, & .MuiCalendarPicker-root","& .MuiTypography-caption","margin","& .PrivatePickersSlideTransition-root","minHeight","DATE_SIZE","& .PrivatePickersSlideTransition-root [role=\"row\"]","& .MuiPickersDay-dayWithMargin","& .MuiPickersDay-root","& .MuiPickersArrowSwitcher-spacer","& [role=\"presentation\"] .PrivatePickersFadeTransitionGroup-root","marginRight","DatePickerField","_ref$useCompact","useCompact","_ref$dateFormat","dateFormat","_ref$placeholder","ThemeProvider","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","PopperProps","placement","showDaysOutsideCurrentMonth","disableFuture","inputFormat","mask","renderInput","evt","NativeSelectField","_ref$type","_ref$selectOptions","htmlFor","RadioGroupField","_ref$radios","radioId","FormLabel","RadioGroup","radio","Radio","getInitialValues","propsInitialValues","userValues","results","_flatMapDeep","ticketHoldersCustomFields","_ticketHoldersFields","_ticketHoldersFields$","groupItem","_ticketHoldersFields$2","ticketHoldersCustomFieldsInitValues","selectedTicketsCount","customField","createRegisterFormData","checkoutBody","flagFreeTicket","bodyFormData","includes","createCheckoutDataBody","holderAge","holders","individualHolder","fromEntries","entries","filter","_loop","holder","firstNameLogged","lastNameLogged","emailLogged","filteredRestValue","getValidateFunctions","element","states","validationFunctions","onValidate","assingUniqueIds","itemValue","_isArray","some","uniqueId","getFieldLabel","configs","flagRequirePhone","collectMandatoryWalletAddress","isRequiredField","isValidElement","getFieldComponent","select_multi","LogicRunner","setStates","setValues","setUserValues","onGetStatesSuccess","onGetStatesError","shouldFetchCountries","brandOptIn","prevCountry","mappedStates","res","stateExists","_mappedStates$find","_mappedStates$","fetchStates","userDataEncoded","parsedData","mappedValues","brand_opt_in","holderFirstName-0","holderLastName-0","holderEmail-0","extraDataJSON","extraData","getStoredUserData","WithCustomFieldsBillingInfoContainer","_ref4$ticketHoldersFi","_ref4$initialValues","_ref4$buttonName","buttonName","_ref4$handleSubmit","_ref4$theme","_ref4$onRegisterSucce","_ref4$onRegisterError","_ref4$onSubmitError","onSubmitError","_ref4$onGetCartSucces","onGetCartSuccess","_ref4$onGetCartError","onGetCartError","_ref4$onGetCountriesS","onGetCountriesSuccess","_ref4$onGetCountriesE","onGetCountriesError","_ref4$onGetStatesSucc","_ref4$onGetStatesErro","_ref4$onGetProfileDat","_ref4$onGetProfileDat2","_ref4$onLoginSuccess","onLoginSuccess","_ref4$isLoggedIn","isLoggedIn","pIsLoggedIn","_ref4$accountInfoTitl","accountInfoTitle","hideLogo","themeOptions","_ref4$onErrorClose","onErrorClose","_ref4$hideErrorsAlert","hideErrorsAlertSection","_ref4$onSkipBillingPa","onSkipBillingPage","_ref4$skipPage","skipPage","_ref4$canSkipHolderNa","canSkipHolderNames","_ref4$onForgotPasswor","_ref4$onForgotPasswor2","_ref4$shouldFetchCoun","_ref4$onCountdownFini","_ref4$enableTimer","enableTimer","_ref4$showForgotPassw","_ref4$showSignUpButto","_ref4$brandOptIn","_ref4$showPoweredByIm","_ref4$isCountryCodeEd","_ref4$onPendingVerifi","onPendingVerification","_ref4$onGetCheckoutCo","onGetCheckoutConfigsSuccess","_ref4$onGetCheckoutCo2","onGetCheckoutConfigsError","setExtraData","isConfigLoading","setIsConfigLoading","setConfigs","isNewUser","setIsNewUser","themeMui","_data$data","dataWithUniqueIds","setDataWithUniqueIds","setIsLoggedIn","cartInfoData","setCartInfo","countries","setCountries","showModalLogin","setShowModalLogin","setAlreadyHasUser","setUserExpired","showModalSignup","setShowModalSignup","showModalForgotPassword","setShowModalForgotPassword","setTicketsQuantity","holderFirstName","holderLastName","cardLoading","setCardLoading","isCountriesLoading","setIsCountriesLoading","phoneValidationIsLoading","showDOB","age_required","showTicketHolders","names_required","event_id","optedInFieldValue","ttfOptIn","isTable","hideTtfOptIn","expirationTime","phone_required","collect_mandatory_wallet_address","free_ticket","hidePhoneField","hide_phone_field","hideWalletAddressField","collect_optional_wallet_address","collectMandatoryCompany","collect_mandatory_company","hideCompanyField","collect_optional_company","collectMandatoryJobTitle","collect_mandatory_job_title","hideJobTitleField","collect_optional_job_title","collectMandatoryInstagram","collect_mandatory_instagram","hideInstagramField","collect_optional_instagram","collectMandatoryBusinessCategory","collect_mandatory_business_category","hideBusinessCategoryField","collect_optional_business_category","pendingVerificationMessage","setPendingVerificationMessage","prevData","addAddOnsInAttributes","selectedAddOns","add_ons","hasUniqueId","isEqualData","_isEqual","getQuantity","cart","qty","forEach","quantity","fetchCountries","fetchCart","cartInfo","_cartInfo$cart","Array","fetchUserData","profileSpecifiedData","userDataResponse","checkoutResponse","removeReferralKey","_e$response$data$data","hasUnverifiedOrder","_e$response2","_e$response2$data","collectPaymentData","collectCheckoutBody","profileData","_checkoutBody$attribu","holderIndex","holderDataCapture","customFieldKey","customFieldHolderName","initialCountry","_find","toLowerCase","Backdrop","color","zIndex","ttf_opt_in","instagram","company","businessCategory","jobTitle","enableReinitialize","formikHelpers","checkoutBodyForRegistration","resRegister","refreshToken","userProfile","_e$response3","_e$response3$data","_e$response3$data$dat","_e$response4","_e$response4$data","_e$response5","_e$response5$data","_e$response6","_e$response6$data","_e$response6$data$dat","_e$response7","_e$response7$data","_e$response8","_e$response9","_e$response9$data","_e$response10","Fragment","labelClassName","group","el","handleBlur","format","_item","currencyNormalizerCreator","currency","getCurrencySymbolByCurrency","createFixedFloatNormalizer","fixedValue","toFixed","adaptStripeError","adaptedError","isStripeError","payment_intent","_error$payment_intent","errorReason","ConfirmModal","_ref$loading","_ref$hideCancelBtn","hideCancelBtn","_ref$onClose","_ref$onConfirm","onConfirm","base","fontSize","letterSpacing",":-webkit-autofill","::placeholder","invalid","CheckoutForm","total","_ref$onSubmit","_ref$stripeCardOption","stripeCardOptions","_ref$error","stripe_client_secret","billing_info","_ref$isLoading","isLoading","_ref$handleSetLoading","handleSetLoading","_ref$conditions","conditions","disableZipSection","paymentButtonText","_ref$forPaymentPlan","forPaymentPlan","_ref$hasSeatMapAction","hasSeatMapActions","stripe","useStripe","elements","useElements","postalCode","setPostalCode","stripeError","setStripeError","checkboxes","setCheckboxes","allowSubmit","setAllowSubmit","preventDefault","card","getElement","CardNumberElement","address","line1","postal_code","confirmCardSetup","payment_method","token","paymentMethodId","setupIntent","_setupResponse$setupI","createPaymentMethod","billing_details","paymentMethodReq","confirmCardPayment","paymentMethod","handleCheckboxes","updatedCheckedState","allChecked","every","buttonIsDiabled","onReady","CardExpiryElement","CardCvcElement","PaymentPlanSection","paymentPlanConfig","paymentPlanUseSavedCard","setPaymentPlanUseSavedCard","total_installments","price_per_installment","interval","has_admin_fee","admin_fee","requires_deposit","deposit","non_refundable_type","non_refundable_amount","saved_card","_paymentPlanConfig$sa","stripe_payment_method_id","last_4_digits","publishableKey","STRIPE_PUBLISHABLE_KEY","getStripePromise","reviewData","stripePublishableKey","stripeAccount","loadStripe","initialPaymentPlanConfiguration","stripe_setup_intent_secret","initialOrderValues","product_name","ticketType","price","guest_count","pay_now","initialReviewValues","order_details","stripe_payment_plan_enabled","stripe_payment_plan_configuration","event_details","flagSeatMapAllowed","getImage","image","require","SocialButton","facebook","FacebookShareButton","FacebookIcon","messenger","FacebookMessengerShareButton","FacebookMessengerIcon","twitter","TwitterShareButton","TwitterIcon","linkedin","LinkedinShareButton","LinkedinIcon","pinterest","PinterestShareButton","PinterestIcon","vk","VKShareButton","VKIcon","ok","OKShareButton","OKIcon","telegram","TelegramShareButton","TelegramIcon","whatsapp","WhatsappShareButton","WhatsappIcon","reddit","RedditShareButton","RedditIcon","tumblr","TumblrShareButton","TumblrIcon","mailru","MailruShareButton","MailruIcon","EmailShareButton","EmailIcon","livejournal","LivejournalShareButton","LivejournalIcon","viber","ViberShareButton","ViberIcon","workplace","WorkplaceShareButton","WorkplaceIcon","line","LineShareButton","LineIcon","pocket","PocketShareButton","PocketIcon","instapaper","InstapaperShareButton","InstapaperIcon","weibo","WeiboShareButton","WeiboIcon","hatena","HatenaShareButton","HatenaIcon","spotify","SocialComponent","mainLabel","subLabel","platform","shareData","points","onAfterShare","alreadyApplied","oneTimeAction","_config","Icon","_config2","isActionDisabled","onKeyDown","round","isNaN","SocialButtons","showDefaultShareButtons","shareLink","appId","shareButtons","_ref2$titleText","titleText","_ref2$footerText","footerText","clientLabel","_ref2$onAfterShare","_ref2$showReferralsIn","showReferralsInfoText","quote","title","shareButton","eventActionId","getPreRegistrationInfluancers","getPreRegistrationShareOptions","submitShareAction","accessToken","phase","useCookieListener","handler","getCookie","intervalValue","setIntervalValue","cookieRef","handleCookieChange","setInterval","clearInterval","isTimeExpired","startDate","timezone","moment","isAfter","tz","_ref$timezone","guess","_ref$title","_ref$message","_ref$showMessage","showMessage","_ref$disableLeadingZe","disableLeadingZero","_ref$callback","callback","duration","setDuration","timeExpired","setTimeExpired","timer","currentDate","diffTime","diff","dateArr","year","years","month","months","day","hour","hours","minute","second","timeLeft","unit","val","generateQuantity","n","quantityList","WaitingList","_ref$defaultMaxQuanti","defaultMaxQuantity","showSuccessMessage","setShowSuccessMessage","ticketTypesList","d","displayName","showTicketsField","success","ticketTypeId","selectedTicket","waitingListMaxQuantity","AccessCodeSection","setCode","updateTickets","isAccessCodeHasValue","onKeyPress","PromoCodeSection","codeIsApplied","showPromoInput","setShowPromoInput","setCodeIsApplied","codeIsInvalid","setCodeIsInvalid","promoText","showAlertIcons","isPromoCodeHasValue","preProcessor","ReferralLogic","isAlreadyCounted","_asyncToGenerator","TicketRow","ticketTier","prevTicketTier","selectedTickets","handleTicketSelect","isSeatMapAllowed","tableType","soldOutMessage","toUpperCase","isSalesClosed","eventDatesInfo","salesStarted","presalesStarted","presalesEnded","salesEnded","presalesEnabled","defineIsSalesClosed","presales_enabled","maxCount","minCount","multiplier","Math","getTicketSelectOptions","maxGuests","maxQuantity","minGuests","minQuantity","ticketsClosedMessage","canPurchaseTicket","displayTicket","isDirectPurchaseAllowed","onSaleContent","borderRadius","displayEmpty","aria-label","PaperProps","returnValue","sold_out","soldOut","TicketsSection","ticketsList","ticketsHeaderComponent","tableTicketsHeaderComponent","hideTicketsHeader","hideTableTicketsHeader","showGroupNameBlock","currencySybmol","tableTickets","symbol","sortedTicketsList","sortBySoldOut","_sortBy","showGroup","ticket","groupName","priceSymbol","arr","ticketPrice","ticketOldPrice","oldPrice","isSoldOut","ticketIsDiscounted","ticketIsFree","ticketPriceElem","isNewGroupTicket","_arr","feeIncluded","_arr2","depositPercent","EventInfoItem","tableConfig","columns","header","ItemComponent","row","columnProps","eventName","amount","normalizer","Row","handleDetailsInfo","_ref$columns","hideDetailsButton","TableRow","& > *","borderBottom","column","TableCell","scope","onCellClick","RadioField","schema","yup","to","when","is","confirm","TicketResaleModal","holder_name","event_name","retain_amount_on_sale","ticket_type_is_active","CustomFieldsForm","_ref$fields","_ref$handleFormSubmit","handleFormSubmit","_ref$handleFormClose","handleFormClose","adaptedCustomField","resetForm","renderCustomFieldValue","getLabel","singleValue","getLabelForValue","isFieldUpdatable","settings","_field$settings","allowUpdate","TicketHolderCustomFields","holderCustomFields","_ref$handleTicketHold","handleTicketHoldersUpdate","showHolderCustomFieldsSection","setShowHolderCustomFieldsSection","useMemo","allowedFields","notAllowedFields","allowedHolderCustomFields","notAllowedHolderCustomFields","holderEditableFieldsFormInitialValues","getHolderCustomFieldsInitialValues","EditSvg","notUpdatableCustomFieldsValues","fullUpdatableValues","reduce","acc","TicketsTable","_ref$icon","_ref$displayColumnNam","displayColumnNameInRow","_ref$canSellTicket","canSellTicket","_ref$ticketsTitle","ticketsTitle","_ref$ticketHoldersCus","_ref$handleSellTicket","handleSellTicket","_ref$handleRemoveFrom","handleRemoveFromResale","pdfError","setPdfError","pdfDownload","setPdfDownload","TableContainer","Paper","Table","TableHead","TableBody","columnIndex","ticketIsDownloading","pdf_link","is_on_sale","pdfDownloadError","is_sellable","getRow","colSpan","_ticket$add_ons","add_on","password_confirmation","addonsWithGroupsAdapter","addonsData","addOnsGroups","addOnGroupsWithVariants","addOnsWithoutVariants","addon","addOnGroupId","currentGroupId","exsistingGroupIndex","findIndex","addOnGroup","variants","concat","cartAdapter","cartData","expiresAt","AddonComponent","classNamePrefix","_ref$handleAddonChang","handleAddonChange","active","stock","_isNull","generateSelectOptions","generateStockBasedOnLimitations","ticketQuantity","allowedStockCount","limitPerTicket","flagLimitToTicketQuantity","stockBasedOnLimitPerTicket","filterStockBasedOnAvailability","generatedStock","availableStock","filteredStockCount","getAddonSelectOptions","choosedTicketCount","addonsWithOptions","groupsWithSelectedVariantsInfo","groupsWithVariants","simpleAddonStock","variantId","variantStock","stockBasedOnLimitation","choosedVariants","selectedCount","allowedVariantStockCount","variantOptions","addonOptions","getTicketRelatedAddons","ticketId","prerequisiteTicketTypeIds","getSortedAddons","sortDirection","addonsCopy","unsortedVariants","sortOrder","sortedVariants","sortedAddons","_reverse","LoginForm","_ref$onLoginSuccess","_ref$onLoginError","onLoginError","onForgotPasswordButtonClick","_ref$onSignupButtonCl","onSignupButtonClick","getFieldClassNames","existingClassNames","elem","getElementById","parentElement","_elem$parentElement","clientWidth","SectionContainer","FieldsSection","formFields","_ref2$countries","_ref2$states","_ref2$containerClass","containerClass","_ref2$setPhoneValidat","_ref2$onFieldChange","onFieldChange","disableField","groupLabel","_item$groupLabelVars","groupLabelVars","_item$groupClassName","groupClassName","groupLabelClassName","elementId","childNodes","insertAdjacentHTML","insertHTML","fieldData","fieldIndex","_fieldData$className","_fieldData$options","collectStates","formDefaultFields","RegistrationForm","additionalFieldAttribute","registrationType","customerEmail","_ref$onGetCountriesSu","_ref$onGetCountriesEr","_ref$onRegisterAccoun","onRegisterAccountSuccess","_ref$onRegisterAccoun2","onRegisterAccountError","_ref$onGetStatesSucce","_ref$onGetStatesError","setErrorMessage","showErrorModal","setshowErrorModal","updatedFormFields","fieldSection","fieldSectionAttributes","updatedFields","updateFormFieldsAttributes","fetchCountryId","handleRegisterAccount","profileRes","log","VERIFICATION_STATUSES","PENDING","APPROVED","FAILED","WRONG_CUSTOMER","IssueTicketForm","_ref$handleSubmit","selectTicketTypeOptions","setSubmitting","TicketsAssignedTable","tableTitle","_ref$classNamePrefix","issuePageData","_ref$noTicketsAssigne","noTicketsAssignedText","_issuePageData$ticket","_issuePageData$ticket2","TicketsAvailableTable","ticketTypes","optionValue","delegationMaxQuantity","delegationQuantityIssued","IssueComponent","_ref$headTitle","headTitle","_ref$onGetIssuePageDa","onGetIssuePageDataSuccess","_ref$onGetIssuePageDa2","onGetIssuePageDataError","showMaxQtyModal","setShowMaxQtyModal","showSuccessModal","setShowSuccessModal","setIssuePageData","_res$data","_res$data$data","fetchDelegationTickets","eventImage","addToCartFunc","enableBillingInfoAutoCreate","result","pageConfigsDataResponse","pageConfigsData","skipBillingPage","_pageConfigsData$skip","skip_billing_page","hasAddOn","has_add_on","_checkoutResponse$dat","_checkoutResponse$dat2","_checkoutResponse$dat3","_checkoutResponse$dat4","getOwnReservationsBasedOnStatuses","statuses","ownReservations","groupRowId","seatIndex","getTicketDropdownData","reservationData","tierReleations","ticketsDropdownsData","reservation","ticketsData","_values","ticket_type_tier_id","ticket_type_name","ticket_type_price","ticket_type_id","getAddToCartRequestData","_ref$reservations","reservations","_ref$selectedSeats","selectedSeats","_ref$selectedTickets","_ref$guestCounts","guestCounts","hasGuests","addToCartData","alternative_view_id","product_cart_quantity","product_options","product_id","ticket_types","productOptions","sitem","ticket_type_option","_ticketTypes$ticket$t","ticket_price","SeatMapComponent","seatMapProps","mapContainerId","seatData","_seatMapProps$seatMap","seatMapType","_seatMapProps$seatMap2","seatMapEvents","_seatMapProps$ticketT","ticketTypeTierRelations","tierPrices","isReserving","predefinedSeats","isLoadingSeatMapData","ticketTypeTireRelationsArray","mapComponent","SeatMapView","events","isSelectionOn","isBlockMap","isTableMap","ReactDom","render","reservedSeats","_props$theme","getTicketsBtnLabel","_props$contentStyle","contentStyle","_props$isButtonScroll","isButtonScrollable","handleGetTicketClick","handleCancelReservation","_props$ticketDeleteBu","ticketDeleteButtonContent","_props$ticketInfoCont","ticketInfoContent","currencySymbol","_props$tableMapEnable","tableMapEnabled","setGuestCounts","isAddingToCart","selectedTicketsInfo","setSelectedTicketsInfo","bookButtonIsDisabled","_some","_keys","handleShowtTicketInfo","prevState","ticketItem","dropdownData","selectedTicketData","startNum","ticket_type_min_number_of_guests","endNum","ticket_type_max_number_of_guests","numLength","showGuestCountDropdown","showDescription","guestPrice","guest_price","finalPrice","handleTicketChange","display","flexDirection","justifyContent","fee_included","ticket_type_deposit","alignItems","Tooltip","arrow","tooltip","& .MuiTooltip-arrow","m","from","dangerouslySetInnerHTML","marginLeft","count","getButtonLabel","formFieldsNotLoggedIn","formFieldsLoggedIn","isDocumentDefined","Prewards","_props$classNamePrefi","_props$headerNode","headerNode","prize","CopyField","copyValue","_props$copyIconSrc","copyIconSrc","_props$copyTitle","copyTitle","_props$hasCopyIcon","hasCopyIcon","_props$onLinkCopied","onLinkCopied","_props$messageText","messageText","ref","defaultValue","readOnly","navigator","clipboard","writeText","ShareOptions","_props$headerText","headerText","updateShareActionData","shareActionData","shareUrl","socialUrl","point","shareOptionsAdapter","isShareLinkEnabled","tokenShuffleMethod","reverse","lengthOfStr","part1","words","shuffledStr","shareActionToken","Influancers","influencer","prereg_id","_ref$enableBillingInf","_ref$enableTimer","_ref$onGetAddonsPageI","onGetAddonsPageInfoSuccess","_ref$onGetAddonsPageI2","onGetAddonsPageInfoError","_ref$onPostCheckoutSu","onPostCheckoutSuccess","_ref$onPostCheckoutEr","onPostCheckoutError","_ref$onConfirmSelecti","onConfirmSelectionSuccess","_ref$onConfirmSelecti2","onConfirmSelectionError","_ref$onPendingVerific","setAddons","addonsOptions","setAddonsOptions","groupsWithSelectedVariants","setGroupsWithSelectedVariants","groupsWithInitialVariantsValues","setGroupsWithInitialVariantsValues","cartExpirationTime","setCartExpirationTime","_cartAdapter","choosedTicketID","adaptedAddons","ticketRelatedAddons","sortedTicketAddons","_getAddonSelectOption","getAddonsPageInfo","changeableGroup","currGroupId","currSelectedVariantId","currSelectedVariantCount","updatedGroupsWithSelectedVariants","groupId","changedGroupd","remainingGroupStock","recreatedVariantsOptions","variantCurrSelectedValue","assign","recreateGroupVariantsSelectOptions","handleConfirm","skipAddonPage","_error$response$data","_error$response$data$","handleClearAddons","selectedAddons","isConfirmDisabled","autoComplete","cost","isAddonFree","addonNormalizedPrice","getNormalizedPrice","imageUrl","confirmationLabels","_ref$hasCopyIcon","isReferralEnabled","_ref$messengerAppId","messengerAppId","_ref$shareButtons","_ref$onGetConfirmatio","onGetConfirmationDataSuccess","_ref$onGetConfirmatio2","onGetConfirmationDataError","_ref$onLinkCopied","_ref$showReferralsInf","_ref$showCopyInfoModa","showCopyInfoModal","_ref$showPricingNoteS","showPricingNoteSection","setData","dataEncoded","confirmationDataResponse","personal_share_sales","salesItem","salesData","sales","unshift","product_price","_data$product_price","setShowCopyModal","confirmationTitle","_confirmationLabels$c2","confirmationMain","_confirmationLabels$c3","confirmationHelper","_confirmationLabels$p","paymentPlanConfirmationTitle","_confirmationLabels$p2","paymentPlanConfirmationMain","_confirmationLabels$p3","paymentPlanConfirmationHelper","product_image","is_payment_plan","custom_confirmation_page_text","custom_confirmation_page_text_full_replacement","attach_tickets","disable_referral","personal_share_link","newData","pricing","registerFormFields","_ref$issuePageErrorTe","issuePageErrorText","_ref$onCustomerExists","onCustomerExistsError","isCustomerExsists","setIsCustomerExsists","issuePageError","setIssuePageError","setCustomerEmail","getCustomerData","onGetVerifyUrlSuccess","_props$onGetVerifyUrl2","onGetVerifyUrlError","_props$onGetVerificat","onGetVerificationStatusSuccess","_props$onGetVerificat2","onGetVerificationStatusError","_props$onVerification","onVerificationMessageModalClose","_props$onPassVerifica","onPassVerificationStepsSuccess","_props$onPassVerifica2","onPassVerificationStepsError","loadingStatus","setLoadingStatus","setVerificationStatus","netverifyUrl","setNetverifyUrl","provider","setProvider","setHasError","lastError","setLastError","displaModal","modalData","setModalData","isAccountVerifiedOrPending","callbackNetVerify","origin","getUrl","payload","transactionStatus","removeEventListener","urlResponse","intervalId","getVerificationStatus","verifyUrl","isApproved","statusResponse","getCustomerOrderStatus","makeRequests","checkoutData","iframe","_ref$onGetOrdersSucce","onGetOrdersSuccess","_ref$onGetOrdersError","onGetOrdersError","_ref$theme","_ref$selectEventsLabe","selectEventsLabel","_ref$hideDetailsButto","openLoginModal","setLimit","setFilter","isLogged","setIsLogged","fetchData","orders","_data$orders","Autocomplete","disablePortal","getOptionLabel","_event","eventFilter","url_name","purchased_events","_data$orders2","MyTicketsRow","TablePagination","rowsPerPageOptions","total_count","rowsPerPage","onPageChange","newPage","onRowsPerPageChange","_ref$onRemoveFromResa","onRemoveFromResaleSuccess","_ref$onRemoveFromResa2","onRemoveFromResaleError","_ref$onResaleTicketSu","onResaleTicketSuccess","_ref$onResaleTicketEr","onResaleTicketError","_ref$onUpdateOrderCus","onUpdateOrderCustomFieldsSuccess","_ref$onUpdateOrderCus2","onUpdateOrderCustomFieldsError","_ref$onUpdateTicketHo","onUpdateTicketHolderCustomFieldsSuccess","_ref$onUpdateTicketHo2","onUpdateTicketHolderCustomFieldsError","onReturnButtonClick","_ref$personalLinkIcon","personalLinkIcon","ticketsTableColumns","ordersPath","pOrderId","_ref$referralTitle","referralTitle","_ref$itemsTitle","itemsTitle","removeFromResaleLoading","setRemoveFromResaleLoading","resaleTicketLoading","setResaleTicketLoading","showResaleModal","setShowResaleModal","showRemoveResaleModal","setShowRemoveResaleModal","activeTicket","setActiveTicket","showOrderCustomFieldsSection","setShowOrderCustomFieldsSection","columnsProps","orderCustomFields","orderUpdatableCustomFields","orderNotUpdatableCustomFields","orderEditableFieldsFormInitialValues","orderSummery","handleOnSubmit","updatedData","_updatedData$tickets","onConfirmRemoveResale","_updatedData$tickets2","handleOrderCustomFieldsUpdate","updatedCustomFields","notUpdatedFields","rel","sales_referred","items","_data$items","_data$items$ticket_ty","is_table","guests_count","deposit_paid","remaining","_data$items2","_data$items2$add_ons","_data$tickets$","_has","getTotal","sellTicketType","ticket_type_hash","paymentFields","handlePayment","_ref$formTitle","formTitle","_ref$onErrorClose","_ref$onGetPaymentData","onGetPaymentDataSuccess","_ref$onGetPaymentData2","onGetPaymentDataError","_ref$onPaymentError","onPaymentError","_ref$disableZipSectio","elementsOptions","_ref$enablePaymentPla","enablePaymentPlan","_ref$orderInfoLabel","orderInfoLabel","_ref$paymentInfoLabel","paymentInfoLabel","setReviewData","orderData","setOrderData","showPaymentPlanSection","setShowPaymentPlanSection","paymentIsLoading","setPaymentIsLoading","paymentDataIsLoading","setPaymentDataIsLoading","setConditions","paymentPlanIsAvailable","setPaymentPlanIsAvailable","setPaymentPlanConfig","setCurrency","showFormTitle","showErrorText","isFreeTickets","paymentPlanAvailable","sessionData","session","_reviewData$order_det","updateSessionInformation","paymentDataResponse","_paymentDataResponse$","orderDataArray","_cart$","_cart$2","debt","tableTypes","conditionsInfo","conditionsResponse","fetchConditions","showPaymentForm","handlePaymentMiddleWare","paymentSuccessResponse","stripePaymentMethodId","_window$dataLayer","orderValue","orderCurrency","hasTableTypes","paymentFieldsData","parseFloat","Container","maxWidth","_field$className","_field$normalizer","tableTypeItem","gridTemplateColumns","gridColumnGap","_paymentPlanConfig$sa2","Elements","StripePayment","_paymentPlanConfig$sa3","pFormFields","isPreregistrationStarted","_ref$onConfirmationSu","onConfirmationSuccess","_ref$onConfirmationEr","onConfirmationError","show","confirmModalState","setConfirmModalState","setUserData","referrerId","updatedValues","dobDay","dobMonth","dobYear","shareHash","confirmationData","emailErrors","_e$response2$data$mes","pEventId","_ref$pageHeader","pageHeader","_ref$pageMessage","pageMessage","localStorageHash","queryHash","prizes","setPrizes","shareOptions","setShareOptions","setShareActionData","shareOptionsData","fetchConfirmationData","_isEmpaty","_props$onGetPreregist","onGetPreregistrationDataSuccess","_props$onGetPreregist2","onGetPreregistrationDataError","influancersHeaderNode","prewardsHeaderNode","setInfluencers","topInfluancers","_slice","preregistrationData","influencers","fetchPreregistrationData","_ref$onClickOk","onClickOk","tokenProps","_ref$onResetPasswordS","onResetPasswordSuccess","_ref$onResetPasswordE","onResetPasswordError","showSection","modal","setModal","handleModalClose","requestData","_props$timerMessage","timerMessage","_props$onAddToCartSuc","onAddToCartSuccess","_props$onCountdownFin","seatMap","seatMapData","setSeatMapData","eventSeatsRef","ticketTypeTierRelationsRef","setSelectedTickets","seatMapStatuses","setSeatMapStatuses","setReservedSeats","setIsLoadingSeatMapData","isLoadingStatuses","setIsLoadingStatuses","setIsReserving","setIsAddingToCart","showTimer","isOnline","setIsOnline","isGuestCountsSet","handleOffline","handleOnline","updateGuestCounts","seatTicketsArray","fetchSeatMapData","_seatMapDataResponse$","seatReservationTime","eventSeats","fetchSeatMapReservations","statusesResponse","tierIdOfReservation","seats","seatsCount","rowId","tier_id","startTimer","endTimer","handleSeatReservation","relations","_keys2","firstItem","handleCancelSeatReservtion","currentSelectedTickets","onSeatClick","seatInfo","_seatInfo$seat","seat","handleGetTicketBtnClick","ticketData","_addToCartData$attrib","valueOf","onComplete","tireId","onProcessTicketSuccess","_ref$onProcessTicketE","onProcessTicketError","_ref$onDeclineTicketP","onDeclineTicketPurchaseSuccess","_ref$onDeclineTicketP2","onDeclineTicketPurchaseError","billingPath","_ref$defaultRedirecti","defaultRedirection","successMessage","setSuccessMessage","isDeclined","getTicketsLabel","_ref$contentStyle","_ref$onAddToCartError","onAddToCartError","_ref$onGetTicketsSucc","onGetTicketsSuccess","_ref$onGetTicketsErro","onGetTicketsError","_ref$onLogoutSuccess","onLogoutSuccess","_ref$onLogoutError","onLogoutError","_ref$onGetTicketsPres","onGetTicketsPress","_ref$queryPromoCode","queryPromoCode","_ref$isPromotionsEnab","isPromotionsEnabled","_ref$isAccessCodeEnab","isAccessCodeEnabled","_ref$hideSessionButto","hideSessionButtons","_ref$hideWaitingList","hideWaitingList","_ref$isButtonScrollab","_ref$sortBySoldOut","_ref$disableCountdown","disableCountdownLeadingZero","_ref$isLoggedIn","ActionsSectionComponent","actionsSectionComponent","_ref$hideTicketsHeade","_ref$hideTableTickets","_ref$enableInfluencer","enableInfluencersSection","_ref$enableAddOns","enableAddOns","_ref$handleNotInvited","handleNotInvitedModalClose","_ref$handleInvalidLin","handleInvalidLinkModalClose","_ref$showGroupNameBlo","_ref$currencySybmol","_ref$onReserveButtonC","onReserveButtonClick","_ref$showAlertIcons","showLoginModal","setShowLoginModal","setTickets","setEvent","showWaitingList","setShowWaitingList","setIsLoading","codeIsLoading","setCodeIsLoading","handleBookIsLoading","setHandleBookIsLoading","showAccessCodeSection","setShowAccessCodeSection","showPromoCodeSection","setShowPromoCodeSection","isNotInvitedError","setIsNotInvitedError","isInvalidLinkError","setIsInvalidLinkError","preregistereds","setPreregistereds","ticketsNotAvailableModalOpen","setTicketsNotAvailableModalOpen","checkUserPreregistration","isPreregistred","setIsPreregisred","ticketsContainerRef","setValue","newValue","useLocalStorageListener","user","isPreregistredUser","getTicketsApi","fetchPreregisteredsData","handleLogout","handleExternalLogin","_getTicketsApi","isUpdateingCode","previewKey","eventResponse","_response$data","ValidPromoCode","is_access_code","_fetchPreregisteredsData","userDataString","handleBook","optionName","isTableType","isTicketOnSale","eventHasTickets","scrollIntoView","behavior","block","inline","isTicketAvailable","wrappedActionsSectionComponent","cloneElement","externalUrl","redirectUrl","eventSaleIsNotStarted","salesStart","referralsEnabled","referrals","hideTopInfluencers","isTableMapEnabled","notAvailableTicketsMessage","_filter","ordinarTickets","toString","_influencer$lastName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tf-checkout-react.cjs.production.min.js","sources":["../src/api/publicRequest.ts","../src/utils/setConfigs.ts","../src/utils/getQueryVariable.ts","../src/utils/formikErrorFocus.ts","../src/utils/getDomain.ts","../src/utils/cookies.ts","../src/utils/downloadPDF.tsx","../src/utils/createCheckoutDataBodyWithDefaultHolder.ts","../src/utils/createMarkup.ts","../src/utils/replaceVarInString.ts","../src/utils/isBrowser.ts","../src/utils/form.ts","../src/utils/auth.ts","../src/utils/customFields.ts","../src/utils/jsonUtils.ts","../src/api/interceptors.ts","../src/adapters/customFields.ts","../src/api/auth.ts","../src/api/orders.ts","../src/api/cart.ts","../src/api/checkout.ts","../src/api/common.ts","../src/api/payment.ts","../src/api/resale.ts","../src/api/guestTicketDelegation.ts","../src/api/index.ts","../src/hoc/CustomFields/index.tsx","../src/hooks/usePixel.ts","../src/components/common/SnackbarAlert.tsx","../src/components/common/CustomField.tsx","../src/components/common/PoweredBy.tsx","../src/components/forgotPasswordModal/index.tsx","../src/components/common/ModalComponent/index.tsx","../src/components/idVerificationContainer/VerificationPendingModal.tsx","../src/validators/index.ts","../src/components/loginModal/index.tsx","../src/components/signupModal/index.tsx","../src/utils/showZero.tsx","../src/components/timerWidget/index.tsx","../src/components/common/CheckboxField/index.tsx","../src/components/common/Checkbox.tsx","../src/components/common/PhoneNumberField.tsx","../src/components/common/Loader.tsx","../src/components/common/SelectField/index.tsx","../src/components/common/CopyMessageModal.tsx","../src/components/common/DatePickerField.tsx","../src/components/common/NativeSelectFeild/index.tsx","../src/components/common/RadioGroupField/index.tsx","../src/components/billing-info-container/utils.ts","../src/components/billing-info-container/index.tsx","../src/normalizers/index.ts","../src/utils/adaptStripeErrors.ts","../src/components/confirmModal/index.tsx","../src/components/stripePayment/index.tsx","../src/components/paymentContainer/PaymentPlanSection.tsx","../src/components/paymentContainer/index.tsx","../src/utils/getImage.ts","../src/components/common/socials.tsx","../src/components/confirmationContainer/config.ts","../src/components/confirmationContainer/social-buttons.tsx","../src/utils/isValidNumber.ts","../src/api/preRegistrationComplete.ts","../src/hooks/useCookieListener.ts","../src/components/countdown/index.tsx","../src/components/waitingList/index.tsx","../src/components/ticketsContainer/AccessCodeSection.tsx","../src/components/ticketsContainer/PromoCodeSection.tsx","../src/components/ticketsContainer/ReferralLogic.tsx","../src/components/ticketsContainer/TicketRow.tsx","../src/components/ticketsContainer/utils.ts","../src/components/ticketsContainer/TicketsSection.tsx","../src/components/myTicketsContainer/tableConfig.tsx","../src/components/myTicketsContainer/row.tsx","../src/components/common/RadioField.tsx","../src/components/ticketResaleModal/index.tsx","../src/components/orderDetailsContainer/CustomFieldsForm.tsx","../src/components/orderDetailsContainer/utils/index.tsx","../src/components/orderDetailsContainer/TicketHolderCustomFields.tsx","../src/components/orderDetailsContainer/ticketsTable.tsx","../src/components/resetPasswordContainer/index.tsx","../src/components/addonsContainer/adapters/index.tsx","../src/components/addonsContainer/AddonComponent.tsx","../src/components/addonsContainer/utils/index.tsx","../src/components/loginForm/index.tsx","../src/components/common/FieldSection/utils/index.tsx","../src/components/common/FieldSection/index.tsx","../src/components/registerForm/adapters/index.tsx","../src/components/registerForm/constants.tsx","../src/components/registerForm/index.tsx","../src/components/idVerificationContainer/constants.ts","../src/components/delegationsContainer/IssueTicketForm.tsx","../src/components/delegationsContainer/TicketsAssignedTable.tsx","../src/components/delegationsContainer/TicketsAvailableTable.tsx","../src/components/delegationsContainer/IssueComponent.tsx","../src/components/seatMapContainer/addToCart.ts","../src/components/seatMapContainer/utils.ts","../src/components/seatMapContainer/SeatMapComponent.tsx","../src/components/seatMapContainer/TicketsSection.tsx","../src/components/common/RedirectModal.tsx","../src/components/rsvpContainer/index.tsx","../src/components/preRegistration/constants.tsx","../src/components/preRegistration/utils.ts","../src/components/preRegistration/FieldsSection.tsx","../src/components/preRegistration/index.tsx","../src/components/preRegistration/Prewards.tsx","../src/components/common/CopyField.tsx","../src/components/preRegistration/ShareOptions.tsx","../src/components/preRegistration/PreRegistrationComplete.tsx","../src/components/preRegistration/Influancers.tsx","../src/components/addonsContainer/index.tsx","../src/components/addonsContainer/normalizers/index.ts","../src/components/confirmationContainer/index.tsx","../src/components/delegationsContainer/index.tsx","../src/components/idVerificationContainer/index.tsx","../src/components/myTicketsContainer/index.tsx","../src/components/orderDetailsContainer/index.tsx","../src/constants/index.ts","../src/components/preRegistration/PreRegistrationInformations.tsx","../src/components/seatMapContainer/index.tsx","../src/hooks/useOnline.ts","../src/components/ticketResale/index.tsx","../src/components/ticketsContainer/index.tsx","../src/hooks/useLocalStorageListener.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\n\nconst headers: { [key: string]: string } = {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json',\n}\n\nconst isWindowDefined = typeof window !== 'undefined'\nconst authGuestToken = isWindowDefined ? localStorage.getItem('auth_guest_token') : ''\nif (isWindowDefined && authGuestToken) {\n headers['Authorization-Guest'] = authGuestToken\n}\n\nexport const setAxiosHeader = (key: string, value: string | number) => {\n headers[key] = `${value}`\n}\n\ninterface IPublicRequest extends AxiosInstance {\n setBaseUrl: (baseUrl: string) => void;\n setGuestToken: (guestToken: string) => void;\n}\n\nexport const publicRequest: IPublicRequest = axios.create({\n baseURL: 'https://www.ticketfairy.com/api',\n headers,\n}) as IPublicRequest\n\npublicRequest.setBaseUrl = (baseUrl: string) =>\n (publicRequest.defaults.baseURL = baseUrl + '/api')\n\npublicRequest.setGuestToken = (guestToken: string) =>\n (publicRequest.defaults.headers.common['Authorization-Guest'] = guestToken)\n\nexport const setBaseUrl = (baseUrl: string) => {\n publicRequest.setBaseUrl(baseUrl)\n}\n","import _forEach from 'lodash/forEach'\n\nimport { publicRequest } from '../api/publicRequest'\n\nexport interface IConfigs {\n BASE_URL: string;\n CLIENT_ID: string;\n CLIENT_SECRET: string;\n STRIPE_PUBLISHABLE_KEY: string;\n X_SOURCE_ORIGIN: string;\n [key: string]: string | number;\n}\n\nexport const CONFIGS: IConfigs = {} as IConfigs\n\nexport const setConfigs = (configs: IConfigs) => {\n _forEach(configs, (value, key) => {\n CONFIGS[key] = value\n })\n\n publicRequest.setBaseUrl(CONFIGS.BASE_URL)\n}\n","export const getQueryVariable = (variable: string) => {\n if (typeof window !== 'undefined') {\n const query = window.location.search.substring(1)\n const vars = query.split('&')\n for (let i = 0; i < vars.length; i++) {\n const pair = vars[i].split('=')\n if (pair[0] === variable) {\n return decodeURIComponent(pair[1])\n }\n }\n }\n return false\n}\n","import { connect, FormikContextType } from 'formik'\nimport { Component } from 'react'\n\ninterface IProps {\n formik: FormikContextType<any>;\n}\n\nclass ErrorFocusInternal extends Component<IProps> {\n public componentDidUpdate(prevProps: IProps) {\n const { isSubmitting, isValidating, errors } = prevProps.formik\n const keys = Object.keys(errors)\n if (keys.length > 0 && isSubmitting && !isValidating) {\n const selector = `[name=\"${keys[0]}\"]`\n const errorElement = document.querySelector(selector) as HTMLElement\n if (errorElement) {\n errorElement.focus()\n }\n }\n }\n\n public render = () => null;\n}\n\nexport const ErrorFocus = connect<{}>(ErrorFocusInternal)\n","export function getDomain(url: string, subdomain?: string): string {\n let updatedUrl: any = url.replace(/(https?:\\/\\/)?(www.)?/i, '')\n\n if (!subdomain) {\n updatedUrl = updatedUrl.split('.')\n\n updatedUrl = updatedUrl.slice(updatedUrl.length - 2).join('.')\n }\n\n if (updatedUrl.indexOf('/') !== -1) {\n return updatedUrl.split('/')[0]\n }\n\n return updatedUrl\n}\n","import { getDomain } from './getDomain'\n\nexport function setCustomCookie(name: string, value: string, days = 5) {\n let expires = ''\n if (days) {\n const date = new Date()\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000)\n expires = '; expires=' + date.toUTCString()\n }\n if (typeof window !== 'undefined') {\n const domain = getDomain(window.location.hostname)\n document.cookie =\n name + '=' + (value || '') + expires + `; path=/; domain=${domain}`\n }\n}\n\nexport function getCookieByName(cname: string) {\n if (typeof window === 'undefined') return ''\n const name = cname + '='\n const ca = document.cookie.split(';')\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) === ' ') {\n c = c.substring(1)\n }\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length)\n }\n }\n return ''\n}\n\nexport function deleteCookieByName(name: string) {\n if (typeof window !== 'undefined') {\n const domain = getDomain(window.location.hostname)\n document.cookie =\n name +\n '=; Path=/' +\n `; domain=${domain}` +\n '; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'\n }\n}\n","import { getCookieByName } from './cookies'\n\nexport const downloadPDF = (pdfUrl: string) => {\n if (typeof window === 'undefined') return\n\n const xtfCookie = getCookieByName('X-TF-ECOMMERCE')\n\n if (!xtfCookie) return\n\n let headers = {}\n\n if (xtfCookie) {\n headers = {\n 'X-TF-ECOMMERCE': xtfCookie,\n }\n }\n\n return fetch(pdfUrl, {\n headers,\n credentials: 'include',\n })\n .then(async response => {\n const blobValue = await response.blob()\n const fileNameHeader = response.headers.get('content-disposition') || ''\n const fileName = fileNameHeader.split('\"')[1]\n return { blobValue, fileName }\n })\n .then(({ blobValue, fileName }) => {\n if (!fileName) {\n throw Error('Something went wrong.')\n }\n const file = new Blob([blobValue], { type: 'application/pdf' })\n const fileURL = URL.createObjectURL(file)\n const link = document.createElement('a')\n link.href = fileURL\n link.setAttribute('download', fileName)\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n })\n .catch(error => error)\n}\n","import _get from 'lodash/get'\n\ntype Type1 = string | number | null | undefined\ninterface ICheckoutBody {\n attributes: {\n [key: string]:\n | Type1\n | Record<string | number, Type1>\n | Array<Type1 | IticketHolder>;\n };\n data_capture?: {\n [key: string]: any;\n };\n}\n\ninterface IticketHolder {\n first_name?: string;\n last_name?: string;\n phone?: string;\n email?: string;\n}\n\ninterface IUserCredentialsValues {\n emailLogged?: string;\n firstNameLogged?: string;\n lastNameLogged?: string;\n}\n\nexport const createCheckoutDataBodyWithDefaultHolder = (\n ticketsQuantity: number,\n logedInValues: Record<string, string | undefined>,\n includeDob = false,\n userCredentials: IUserCredentialsValues = {}\n): ICheckoutBody => {\n const ticket_holders: IticketHolder[] = []\n\n const first_name =\n _get(logedInValues, 'firstName') ||\n _get(logedInValues, 'first_name') ||\n _get(userCredentials, 'firstNameLogged') ||\n ''\n\n const last_name =\n _get(logedInValues, 'lastName') ||\n _get(logedInValues, 'last_name') ||\n _get(userCredentials, 'lastNameLogged') ||\n ''\n const phone = _get(logedInValues, 'phone', '')\n const email =\n _get(logedInValues, 'email') || _get(userCredentials, 'emailLogged') || ''\n\n for (let i = 0; i <= ticketsQuantity - 1; i++) {\n const individualHolder = i\n ? { first_name: '', last_name: '', phone: '', email: '' }\n : { first_name, last_name, phone, email }\n\n ticket_holders.push(individualHolder)\n }\n\n const body: ICheckoutBody = {\n attributes: {\n ...logedInValues,\n email,\n confirm_email: email,\n first_name,\n last_name,\n ticket_holders,\n },\n }\n\n if (includeDob) {\n const holderAgeDate = new Date(_get(logedInValues, 'holderAge', ''))\n body.attributes.dob_day = holderAgeDate.getDate()\n body.attributes.dob_month = holderAgeDate.getMonth() + 1\n body.attributes.dob_year = holderAgeDate.getFullYear()\n }\n\n return body\n}\n","export const createMarkup = (data: string) => ({ __html: data })","export const replaceVarInString = (message = '', varArray: Array<string>) => {\n const re = new RegExp(/\\{.*?\\}/g)\n let index = 0\n return message.replace(re, _ => {\n const value = varArray[index] || ''\n index++\n return value\n })\n}\n","export const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined'\n","import _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\n\nexport const getFormInitialValues = (fieldsSections: IFormFieldsSection[]) => {\n const initialValues: { [key: string]: string | number | boolean } = {}\n const isWindowDefined = typeof window !== 'undefined'\n const userData = JSON.parse(\n isWindowDefined ? window.localStorage.getItem('user_data') || '{}' : '{}'\n ) as IProfileData\n\n _forEach(fieldsSections, item => {\n _forEach(item.fields, fieldItem => {\n switch (fieldItem.name) {\n case 'country':\n case 'numTickets':\n case 'state':\n initialValues[fieldItem.name] = ''\n break\n case 'brandOptIn':\n initialValues[fieldItem.name] = true\n break\n case 'confirmEmail':\n initialValues[fieldItem.name] =\n _get(userData, fieldItem.name) || _get(userData, 'email') || ''\n break\n default:\n initialValues[fieldItem.name] = _get(userData, fieldItem.name) || ''\n break\n }\n })\n })\n\n return initialValues\n}\n","export const setLoggedUserData = (data: IProfileData) => ({\n id: data.id,\n first_name: data.firstName,\n last_name: data.lastName,\n email: data.email,\n confirmEmail: data.email,\n city: data?.city || '',\n country: data?.countryId || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zipCode || '',\n})\n","import _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\n\nimport { IBillingInfoData } from '../types'\n\nexport const getDataWithCustomFields = (\n initialData: IBillingInfoData[],\n ticketHoldersFields: IBillingInfoData,\n customFields: any\n) => {\n // Custom Fields are not specified case\n if (_isEmpty(customFields)) {\n const dataWithCustomFields = { ...initialData }\n const ticketHoldersWithCustomFields = { ...ticketHoldersFields }\n return { dataWithCustomFields, ticketHoldersWithCustomFields }\n }\n\n // Add Custom Fields for Order\n const orderWithCustomFields = {\n groupClassname: 'billing-info-container__customFields',\n groupItems: [...customFields.orderFields],\n }\n const initialDataFields = [...initialData[0].fields]\n\n // Add Custom Fields to penultimate position\n initialDataFields.splice(initialDataFields.length - 1, 0, {\n ...orderWithCustomFields,\n })\n\n const dataWithCustomFields = [\n {\n ...initialData[0],\n fields: initialDataFields,\n },\n ]\n\n // Add Custom Fields for Ticket Holders\n const ticketHoldersFieldsArr = ticketHoldersFields.fields || []\n\n const ticketHoldersCustomFieldsBlueprint = {\n id: ticketHoldersFieldsArr.length + 1,\n customFields: true,\n groupClassname: 'billing-info-container__customFields',\n groupItems: [...customFields.ticketsFields],\n }\n\n const ticketHoldersWithCustomFields = {\n ...ticketHoldersFields,\n fields: _isEmpty(ticketHoldersFieldsArr)\n ? []\n : [...ticketHoldersFieldsArr, ticketHoldersCustomFieldsBlueprint],\n }\n\n return { dataWithCustomFields, ticketHoldersWithCustomFields }\n}\n\nexport const getFieldsKeys = (customFields: any) =>\n _map(customFields, field => field.name)\n","export const isJson = (value: any): boolean => {\n try {\n JSON.parse(value)\n } catch (e) {\n return false\n }\n return true\n}\n","import { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _get from 'lodash/get'\n\nimport { CONFIGS, isBrowser } from '../utils'\nimport { getCookieByName, setCustomCookie } from '../utils/cookies'\nimport { publicRequest } from './publicRequest'\n\npublicRequest.interceptors.request.use((config: AxiosRequestConfig) => {\n const guestToken = isBrowser ? window.localStorage.getItem('auth_guest_token') : null\n if (guestToken) {\n const updatedHeaders = {\n ...config.headers,\n 'Authorization-Guest': guestToken,\n }\n config.headers = updatedHeaders\n }\n\n const xtfCookie = getCookieByName('X-TF-ECOMMERCE')\n if (xtfCookie) {\n const updatedHeaders = {\n ...config.headers,\n 'X-TF-ECOMMERCE': xtfCookie,\n }\n config.headers = updatedHeaders\n }\n\n const additionalCookiesHeaderValue = isBrowser ? document.cookie ?? '' : ''\n if (additionalCookiesHeaderValue !== '') {\n const updatedHeaders = {\n ...config.headers,\n 'Additional-Cookies': additionalCookiesHeaderValue,\n }\n config.headers = updatedHeaders\n }\n\n if (CONFIGS.X_SOURCE_ORIGIN) {\n const updatedHeaders = {\n ...config.headers,\n 'X-Source-Origin': CONFIGS.X_SOURCE_ORIGIN,\n }\n config.headers = updatedHeaders\n }\n\n if (CONFIGS.BASE_URL) {\n config.baseURL = CONFIGS.BASE_URL + '/api'\n }\n\n return config\n})\n\npublicRequest.interceptors.response.use(\n (response: AxiosResponse) => {\n const authGuestToken: string | null = _get(\n response,\n 'headers.authorization-guest',\n ''\n )\n\n if (isBrowser && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n const xtfCookie = _get(response, 'headers.x-tf-ecommerce')\n const url = _get(response, 'config.url')\n const method = _get(response, 'config.method')\n\n if (xtfCookie && !(url === '/auth' && method === 'delete')) {\n setCustomCookie('X-TF-ECOMMERCE', xtfCookie)\n }\n\n return response\n },\n (error: AxiosError) => {\n if (error?.response?.status === 401) {\n if (isBrowser) {\n window.localStorage.removeItem('user_data')\n const errorType = error?.response?.data?.error\n if (errorType === 'invalid_token') {\n window.location.href = '/'\n }\n }\n }\n\n const authGuestToken = _get(error, 'response.headers.authorization-guest')\n if (isBrowser && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n return Promise.reject(error)\n }\n)\n","import _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _map from 'lodash/map'\n\nimport { IGroupItem } from '../types'\n\nexport const optionsAdapter = (options: any) => {\n const adaptedOptions = _map(options, option => ({\n id: option.id,\n label: option.name,\n value: option.value,\n }))\n return adaptedOptions\n}\n\nexport const fieldDataAdapter = (field: IGroupItem) => {\n const {\n name,\n label,\n required,\n description,\n type,\n options,\n ...restValues\n } = field\n\n const adaptedField: IGroupItem = {\n name,\n label,\n required,\n description,\n type,\n className: _get(restValues, 'settings.className', ''),\n value: _get(restValues, 'defaultValue'),\n }\n\n switch (type) {\n case 'textarea':\n adaptedField.type = 'text'\n adaptedField.multiline = true\n break\n case 'radio':\n adaptedField.radios = optionsAdapter(options)\n break\n case 'select_multi':\n adaptedField.isMultiple = true\n adaptedField.options = optionsAdapter(options)\n break\n case 'select':\n adaptedField.type = 'select_multi'\n adaptedField.isMultiple = false\n adaptedField.options = optionsAdapter(options)\n break\n default:\n break\n }\n\n return adaptedField\n}\n\nexport const customFieldsDataAdapter = (data: any) => {\n const adaptedTicketFields: Array<IGroupItem> = []\n const adaptedOrderFields: Array<IGroupItem> = []\n\n _forEach(data, field => {\n const ticketFields = _get(field, 'ticket.group.fields')\n const orderFields = _get(field, 'order.group.fields')\n\n _forEach(ticketFields, ticketField => {\n adaptedTicketFields.push(fieldDataAdapter(ticketField))\n })\n\n _forEach(orderFields, orderField => {\n adaptedOrderFields.push(fieldDataAdapter(orderField))\n })\n })\n\n return { ticketsFields: adaptedTicketFields, orderFields: adaptedOrderFields }\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { CONFIGS } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const authorize = async (\n data: IAuthorizeRequestData\n): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `/auth?clientId=${CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'}`,\n data\n )\n return response.data\n}\n\nexport const signUp = async (data: ISignupRequestData): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.post('auth/signup', { ...data })\n return response.data\n}\n\nexport const register = async (data: FormData): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.post('v1/oauth/register-rn', data)\n return response.data\n}\n\nexport const getProfileData = async (): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> = await publicRequest.get('/customer/profile/')\n return response.data\n}\n\nexport const logout = async (): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.delete('/auth')\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { CONFIGS } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const getOrders = async (\n page: number,\n limit: number,\n eventSlug: string\n): Promise<IOrdersResponse> => {\n const slug = eventSlug || CONFIGS.EVENT_SLUG || ''\n\n const response: AxiosResponse<IOrdersResponse, AxiosRequestConfig> =\n await publicRequest.get(\n `v1/account/orders/?page=${page}&limit=${limit}&filter[event]=${slug}&${\n CONFIGS.BRAND_SLUG\n ? `filter[brand]=${CONFIGS.BRAND_SLUG}&filter[subbrands]=true`\n : ''\n }`\n )\n\n return response.data\n}\n\nexport const getOrderDetails = async (orderId: string): Promise<IOrderResponse> => {\n const response: AxiosResponse<IOrderResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/account/order/${orderId}`)\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { isBrowser } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const addToCart = async (\n id: string | number,\n data: ICartRequestData\n): Promise<ICartResponse> => {\n const response: AxiosResponse<ICartResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `v1/event/${id}/add-to-cart/`,\n { data },\n {\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n },\n }\n )\n return response.data\n}\n\nexport const getCart = async (): Promise<IGetCartResponse> => {\n const response: AxiosResponse<IGetCartResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/cart`)\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from './publicRequest'\n\nexport const postOnCheckout = async (\n data: any,\n freeTicket = false\n): Promise<ICheckoutResponse> => {\n if (freeTicket) {\n delete data.attributes.city\n delete data.attributes.country\n delete data.attributes.state\n delete data.attributes.street_address\n }\n\n const response: AxiosResponse<ICheckoutResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `v1/on-checkout`,\n { data }\n )\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _forEach from 'lodash/forEach'\n\nimport { getQueryVariable, isBrowser } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const getEvent = async (\n id: string | number,\n pk?: string\n): Promise<IEventResponse> => {\n let referralValue = ''\n if (isBrowser) {\n const params = new URL(`${window.location}`)\n const referralId = params.searchParams.get('ttf_r') || ''\n const referral_key = window.localStorage.getItem('referral_key')\n const [, referralIdlocal] = (referral_key || '').split('.')\n referralValue = referralId || referralIdlocal\n }\n\n const response: AxiosResponse<IEventResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${id}`, {\n params: { pk },\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n 'Referrer-Id': isBrowser ? referralValue : '',\n },\n })\n return response.data\n}\n\nexport const getTickets = async (\n eventId: string | number,\n promoCode: string,\n pk?: string\n): Promise<ITicketsAdaptedResponse> => {\n const invitationHash = getQueryVariable('invitation-hash')\n const referralId = getQueryVariable('ttf_r')\n\n if (referralId) {\n window.localStorage.setItem('promoter_id', referralId)\n }\n\n const promoterId = window.localStorage.getItem('promoter_id')\n const params = { pk } as Record<string, string | number | undefined>\n\n if (invitationHash) {\n params['invitation-hash'] = invitationHash\n }\n\n const headers = publicRequest.defaults.headers.common\n\n if (promoterId) {\n headers['Promotion-Event'] = String(eventId)\n headers['Referrer-Id'] = isBrowser ? promoterId : ''\n }\n\n if (promoCode) {\n headers['Promotion-Event'] = String(eventId)\n headers['Promotion-Code'] = promoCode\n window.localStorage.removeItem('promoter_id')\n }\n\n const response: AxiosResponse<ITicketsResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/tickets/`, {\n params,\n headers,\n })\n\n const { tickets } = response.data.data.attributes\n const ticketsArr: ITicketData[] = []\n _forEach(tickets, item => {\n ticketsArr.push(item)\n })\n const adaptedResponse: AxiosResponse<ITicketsAdaptedResponse, AxiosRequestConfig> = {\n ...response,\n data: {\n ...response.data,\n data: {\n ...response.data.data,\n attributes: {\n ...response.data.data.attributes,\n tickets: ticketsArr,\n },\n },\n },\n }\n\n return adaptedResponse.data\n}\n\nexport const getCountries = async (): Promise<ICountriesResponse> => {\n const response: AxiosResponse<ICountriesResponse, AxiosRequestConfig> =\n await publicRequest.get('/countries/list')\n return response.data\n}\n\nexport const getStates = async (countryId: string | number): Promise<IStatesResponse> => {\n const response: AxiosResponse<IStatesResponse, AxiosRequestConfig> =\n await publicRequest.get(`/countries/${countryId}/states/`)\n return response.data\n}\n\nexport const sendRSVPInfo = async (\n eventId: number,\n data: { data: IRSVPRequestData }\n): Promise<IRSVPResponse> => {\n const response: AxiosResponse<IRSVPResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${eventId}/send-rsvp-info`, data)\n\n return response.data\n}\n\nexport const addToWaitingList = async (\n id: number,\n data: IWaitingListRequestData\n): Promise<IWaitingListResponse> => {\n const response: AxiosResponse<IWaitingListResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${id}/add_to_waiting_list`, {\n data,\n })\n\n return response.data\n}\n\nexport const postReferralVisits = async (\n eventId: string,\n referralId: string\n): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${eventId}/referrer/`, {\n referrer: `${referralId}`,\n })\n\n return response.data\n}\n\nexport const validatePhoneNumber = async (phone: string): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.get(`/v1/account/validate_phone?phone=${phone}`)\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\n\nimport { isBrowser } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport const getPaymentData = async (hash: string): Promise<IPaymentDataResponse> => {\n const response: AxiosResponse<IPaymentDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/order/${hash}/review`, {\n headers: { 'Referer-Url': isBrowser ? document.referrer : '' },\n })\n\n return response.data\n}\n\nexport const handlePaymentSuccess = async (\n orderHash: string\n): Promise<IPaymentSuccessDataResponse> => {\n const response: AxiosResponse<IPaymentSuccessDataResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/order/${orderHash}/success`, undefined, {\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n },\n })\n return response.data\n}\n\nexport const handleFreeSuccess = async (\n orderHash: string\n): Promise<IFreeRegistrationDataResponse> => {\n const response: AxiosResponse<IFreeRegistrationDataResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `v1/order/${orderHash}/complete_free_registration`,\n undefined,\n { headers: { 'Referer-Url': isBrowser ? document.referrer : '' } }\n )\n return response.data\n}\n\nexport const getConfirmationData = async (\n orderHash: string\n): Promise<ICheckoutCompleteDataResponse> => {\n const response: AxiosResponse<ICheckoutCompleteDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/order/${orderHash}/payment/complete`)\n return response.data\n}\n\nexport const getConditions = async (\n eventId: string\n): Promise<IConditionsAdaptedDataResponse> => {\n const response: AxiosResponse<IConditionsDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/conditions`)\n\n const adaptedData: IConditionsAdaptedData[] = _map(\n response.data.data.attributes,\n item => ({\n id: nanoid(),\n text: item,\n checked: false,\n })\n )\n\n const returnData: AxiosResponse<IConditionsAdaptedDataResponse, AxiosRequestConfig> = {\n ...response,\n data: {\n ...response.data,\n data: {\n ...response.data.data,\n attributes: adaptedData,\n },\n },\n }\n\n return returnData.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from './publicRequest'\n\nexport const resaleTicket = async (\n data: FormData,\n hash: string\n): Promise<IResaleTicketResponse> => {\n const response: AxiosResponse<IResaleTicketResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/ticket/${hash}/sell`, data)\n\n return response.data\n}\n\nexport const removeFromResale = async (\n hash: string\n): Promise<IRemoveFromResaleResponse> => {\n const response: AxiosResponse<IRemoveFromResaleResponse, AxiosRequestConfig> =\n await publicRequest.delete(`v1/ticket/${hash}/sell`)\n\n return response.data\n}\n\nexport const processTicket = (hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/process`)\n\nexport const declineInvitation = (hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/decline`)\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from './publicRequest'\n\nexport const getCustomerExistsData = async (\n accessHash: string\n): Promise<ICheckCustomerExistsData> => {\n const response: AxiosResponse<ICheckCustomerExistsData, AxiosRequestConfig> =\n await publicRequest.get(`/v1/delegation-access/${accessHash}/customer-exists`)\n return response.data\n}\n\ninterface IDelegationTicketType {\n delegationMaxQuantity: number | string;\n}\n\ninterface IIssueTicketResponseData {\n delegationName: string;\n eventImage: string;\n eventName: string;\n ticketTypes: {\n [key: number]: IDelegationTicketType;\n };\n}\n\ninterface IIssueTicketResponse {\n data: {\n attributes: IIssueTicketResponseData;\n relationships: Array<any>;\n type: string;\n message: string;\n };\n}\n\nexport interface IDelegationsTicketType {\n [key: number]: {\n delegationMaxQuantity: string | number;\n delegationQuantityIssued: string | number;\n matrixRecordId: string | number;\n optionValue: string | number;\n };\n}\nexport interface IDelegationsData {\n delegationName: string;\n eventImage: string;\n eventName: string;\n ticketTypes: IDelegationsTicketType;\n tickets: Array<any>;\n}\n\ninterface IDelegationsResponse {\n data: {\n data: {\n attributes: IDelegationsData;\n relationships: Array<any>;\n type: string;\n };\n };\n}\n\nexport const getDelegationTickets = (\n accessHash: string\n): Promise<IDelegationsResponse> => {\n const res = publicRequest.get(`v1/delegation-access/${accessHash}/consumer-page-info`)\n return res\n}\n\nexport const issueTicket = async (\n accessHash: string,\n data: ITicketIssueData\n): Promise<IIssueTicketResponse> => {\n const response: AxiosResponse<IIssueTicketResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/delegation-access/${accessHash}/issue-ticket`, {\n data: {\n attributes: data,\n },\n })\n return response.data\n}\n","import './interceptors'\n\nimport { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _get from 'lodash/get'\n\nimport { customFieldsDataAdapter } from '../adapters'\nimport {\n GetNetverifyUrlResponseData,\n UpdateVerificationStatusResponseData,\n VerificationStatusResponseData,\n} from '../types/verification'\nimport { getQueryVariable, isBrowser } from '../utils'\nimport { publicRequest } from './publicRequest'\n\nexport { authorize, getProfileData, signUp, register, logout } from './auth'\nexport { setAxiosHeader, setBaseUrl } from './publicRequest'\nexport { getOrders, getOrderDetails } from './orders'\nexport { addToCart, getCart } from './cart'\nexport { postOnCheckout } from './checkout'\n\nexport {\n getEvent,\n getTickets,\n getCountries,\n getStates,\n addToWaitingList,\n sendRSVPInfo,\n postReferralVisits,\n validatePhoneNumber,\n} from './common'\n\nexport {\n getPaymentData,\n getConditions,\n handlePaymentSuccess,\n handleFreeSuccess,\n getConfirmationData,\n} from './payment'\n\nexport {\n resaleTicket,\n removeFromResale,\n processTicket,\n declineInvitation,\n} from './resale'\n\nexport { issueTicket, getDelegationTickets } from './guestTicketDelegation'\n\nexport const setCustomHeader = (response: any) => {\n const guestHeaderResponseValue = _get(response, 'headers.authorization-guest')\n const guestHeaderExistingValue = _get(response, 'config.headers[Authorization-Guest]')\n const guestHeader = guestHeaderResponseValue || guestHeaderExistingValue\n\n if (guestHeader) {\n if (isBrowser) {\n window.localStorage.setItem('auth_guest_token', guestHeader)\n publicRequest.setGuestToken(guestHeader)\n }\n }\n}\n\nexport const handlePaymentData = (orderHash: string, data: any) => {\n const res = publicRequest\n .post(`v1/order/${orderHash}/pay`, {\n data: { attributes: { 'stripe-source': data } },\n })\n .catch(error => {\n throw error\n })\n return res\n}\n\nexport const createPaymentPlan = (orderHash: string, stripePaymentMethodId: string) => {\n const res = publicRequest\n .post(\n `v1/order/${orderHash}/payment_plan/create`,\n {\n stripe_payment_method_id: stripePaymentMethodId,\n },\n {\n headers: {\n 'Referer-Url': isBrowser ? document.referrer : '',\n },\n }\n )\n .catch(error => {\n throw error\n })\n return res\n}\n\n// forgot password\nexport const forgotPassword = (email: string) =>\n publicRequest.post(`/auth/restore-password`, { email })\n\n// reset password\ninterface IResetPasswordData {\n token: string;\n password: string;\n confirmPassword: string;\n}\nexport const resetPassword = (data: IResetPasswordData) =>\n publicRequest.post(`/auth/reset-password`, data)\n\nexport const getAddons = async (eventId: string) => {\n const result = await publicRequest.get(`/v1/event/${eventId}/add-ons`)\n const addons = _get(result, 'data.data.attributes', [])\n return addons\n}\n\nexport const selectAddons = (data: any) => {\n publicRequest.post(`v1/on-checkout`, data)\n}\n\nexport interface AttributesConfig {\n has_add_on: boolean;\n names_required: boolean;\n phone_required: boolean;\n minimum_age?: any;\n age_required: boolean;\n hide_phone_field: boolean;\n event_id: string;\n free_ticket: boolean;\n collect_mandatory_wallet_address: boolean;\n collect_optional_wallet_address: boolean;\n collect_mandatory_company: boolean;\n collect_optional_company: boolean;\n collect_mandatory_job_title: boolean;\n collect_optional_job_title: boolean;\n collect_mandatory_business_category: boolean;\n collect_optional_business_category: boolean;\n collect_mandatory_instagram: boolean;\n collect_optional_instagram: boolean;\n skip_billing_page: boolean;\n}\n\nexport interface ConfigsData {\n attributes: AttributesConfig;\n relationships: any[];\n type: string;\n}\n\nexport interface ResponseConfigs {\n data: ConfigsData;\n success: boolean;\n error: boolean;\n message: string;\n status: number;\n}\n\nexport const getCheckoutPageConfigs = async (): Promise<ResponseConfigs> => {\n const response = await publicRequest.get(`v1/checkout-configs`)\n return response.data\n}\n\n\nexport const getCustomFields = async (eventId: string) => {\n const response = await publicRequest.get(`/v1/event/${eventId}/custom_fields`)\n const customFields = _get(response, 'data.data.attributes', [])\n const adaptedResponse = customFieldsDataAdapter(customFields)\n return adaptedResponse\n}\n\nexport const updateOrderCustomFields = async (\n eventId: string,\n orderId: string,\n customFieldsData: Record<string, any>\n) => {\n const response = await publicRequest.put(`v1/event/${eventId}/order-data-capture`, {\n data: {\n attributes: {\n order_id: orderId,\n data_capture: customFieldsData,\n },\n },\n })\n return response\n}\n\nexport const updateTicketHoldersCustomFields = async (\n eventId: string,\n customFieldsData: Record<string, any>,\n ticketHash: string\n) => {\n const response = await publicRequest.put(`v1/event/${eventId}/ticket-data-capture`, {\n data: {\n attributes: {\n ticket_hash: ticketHash,\n ticket_data_capture: {\n [ticketHash]: customFieldsData,\n },\n },\n },\n })\n return response\n}\n\nexport const confirmPreRegistration = async (\n eventId: string | number,\n data: IConfirmPreRegistrationRequestData\n) => {\n const response = await publicRequest.post(\n `v1/event/${eventId}/pre-registration/confirm`,\n {\n data: {\n attributes: data,\n },\n }\n )\n return response.data\n}\n\n// seat map <--start-->\n\n// const makeId = (length = 20) => {\n// let result = ''\n// const characters =\n// 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n// const charactersLength = characters.length\n// for (let i = 0; i < length; i++) {\n// result += characters.charAt(Math.floor(Math.random() * charactersLength))\n// }\n// return result\n// }\n\nexport const getSeatMapData = async (\n eventId: string | number\n): Promise<SeatMapDataResponse> => {\n localStorage.setItem('tierId', '')\n const reservedSeatsHash = getQueryVariable('reserved_seats_hash')\n const params = {} as any\n if (reservedSeatsHash) {\n params.reserved_seats_hash = reservedSeatsHash\n }\n\n const response: AxiosResponse<SeatMapDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/seat-map-data`, { params })\n return response.data\n}\n\nexport const getSeatMapStatuses = async (\n eventId: string | number\n): Promise<SeatMapStatusesResponse> => {\n const response = await publicRequest.get(`v1/event/${eventId}/seats/status`)\n return response.data\n}\n\nexport const reserveSeat = async (\n eventId: string | number,\n tierId: string,\n seatId: string\n) => {\n const response = await publicRequest.post(`v1/event/${eventId}/seats/reserve`, {\n data: {\n tierId,\n seatId,\n ttl: 10,\n },\n })\n return response.data\n}\n\nexport const removeSeatReserve = async (\n eventId: string | number,\n tierId: string,\n seatIds: string[]\n) => {\n const response = await publicRequest.delete(\n `v1/event/${eventId}/seats/delete-reserved`,\n {\n data: {\n tierId,\n seatIds,\n },\n }\n )\n\n return response.data\n}\n\n// seat map <--end-->\nexport function getPixelScript(id: string | number, pageOptions: any) {\n const response = publicRequest.get(`v1/event/${id}/track`, {\n params: {\n page_url: pageOptions.pageUrl,\n page: pageOptions.page,\n order_hash: pageOptions.orderHash,\n },\n })\n return response\n}\n\n// ID Verification\nexport const getNetverifyUrl = async (): Promise<GetNetverifyUrlResponseData> => {\n const response: AxiosResponse<GetNetverifyUrlResponseData, AxiosRequestConfig> =\n await publicRequest.get('v1/authenticate/verify')\n return response.data\n}\n\nexport const checkVerificationStatus = async (): Promise<{\n data: VerificationStatusResponseData;\n}> => {\n const response: AxiosResponse<\n { data: VerificationStatusResponseData },\n AxiosRequestConfig\n > = await publicRequest.get('v1/authenticate/get-verification-info')\n return response.data\n}\n\nexport const updateVerificationStatus = async (): Promise<{\n data: UpdateVerificationStatusResponseData;\n}> => {\n const response: AxiosResponse<\n { data: UpdateVerificationStatusResponseData },\n AxiosRequestConfig\n > = await publicRequest.patch('v1/authenticate/verify', {\n data: {\n attributes: {\n verification: {\n verificationStatus: 'PENDING',\n },\n },\n },\n })\n return response.data\n}\n\nexport const checkCustomerOrder = async (orderHash: string): Promise<any> => {\n const response: AxiosResponse<any, AxiosRequestConfig> = await publicRequest.get(\n `v1/order/${orderHash}/verify-customer-order`\n )\n\n return response.data\n}\n\nexport const refreshSeatReservation = async (eventId: string, orderId: string) => {\n const response: AxiosResponse<any, AxiosRequestConfig> = await publicRequest.patch(\n `event/${eventId}/reservation/refresh/`,\n {\n order_id: orderId,\n }\n )\n return response\n}\n","import { CircularProgress } from '@mui/material'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useEffect, useState } from 'react'\n\nimport { getCustomFields } from '../../api'\nimport {\n getDataWithCustomFields,\n getFieldsKeys,\n getQueryVariable,\n} from '../../utils'\n\nconst withCustomFields = (Children: any) => (props: any) => {\n const {\n data = [],\n ticketHoldersFields = {\n id: 1,\n fields: [],\n },\n skipCustomFields = true,\n onGetCustomFieldsError = _identity,\n onGetCustomFieldsSuccess = _identity,\n ...args\n } = props\n\n const [lodaing, setLoading] = useState(!skipCustomFields)\n const [customFieldsData, setCustomFieldsData] = useState({} as any)\n const [customFieldsOrderKeys, setCustomFieldsOrderKeys] = useState([] as any)\n const [customFieldsTicketHolderKeys, setCustomFieldsTicketHolderKeys] = useState([] as any)\n\n const getFields = async () => {\n try {\n const eventId = getQueryVariable('event_id') || ''\n const customFields = await getCustomFields(eventId)\n\n const orderFieldsKeys = getFieldsKeys(_get(customFields, 'orderFields', []))\n const ticketHoldersFieldsKeys = getFieldsKeys(_get(customFields, 'ticketsFields', []))\n\n setCustomFieldsTicketHolderKeys(ticketHoldersFieldsKeys)\n setCustomFieldsOrderKeys(orderFieldsKeys)\n setCustomFieldsData(customFields)\n\n onGetCustomFieldsSuccess(customFields)\n } catch (e) {\n onGetCustomFieldsError(e)\n } finally {\n setLoading(false)\n }\n }\n\n useEffect(() => {\n if (!skipCustomFields) {\n getFields()\n }\n }, [])\n\n const {\n dataWithCustomFields,\n ticketHoldersWithCustomFields,\n } = getDataWithCustomFields(data, ticketHoldersFields, customFieldsData)\n\n if (lodaing) {\n return <CircularProgress size={50} />\n }\n\n return (\n <Children\n {...args}\n data={dataWithCustomFields}\n ticketHoldersFields={ticketHoldersWithCustomFields}\n customFieldsOrderKeys={customFieldsOrderKeys}\n customFieldsTicketHolderKeys={customFieldsTicketHolderKeys}\n />\n )\n}\n\nexport { withCustomFields }\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport _get from 'lodash/get'\nimport { useEffect } from 'react'\n\nimport { getPixelScript } from '../api'\nimport { isBrowser } from '../utils'\n\nexport interface pageOptions {\n pageUrl: string;\n page?: string;\n orderHash?: string;\n}\n\nfunction appendScriptsToHeader(code: string) {\n if (isBrowser && code) {\n const tempEl = document.createElement('div')\n tempEl.innerHTML = code\n const scripts = tempEl.getElementsByTagName('script')\n\n for (let index = 0; index < scripts.length; ++index) {\n const script = document.createElement('script')\n script.type = 'text/javascript'\n\n if (scripts[index].src) {\n script.src = scripts[index].src\n } else {\n script.innerHTML = scripts[index].innerHTML\n }\n\n document.head.appendChild(script)\n }\n }\n}\n\nconst addGTagToHeader = (tagId?: string, links?: string[]) => {\n if (document?.head && document?.body && tagId) {\n const script = document.createElement('script')\n script.innerHTML = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','${tagId}');`.trim()\n document.head.append(script)\n\n const scriptBody = document.createElement('noscript')\n scriptBody.innerHTML = `<iframe src=\"https://www.googletagmanager.com/ns.html?id=${tagId}\"\n height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe>`\n document.body.append(scriptBody);\n\n (window as any).dataLayer = (window as any).dataLayer || [];\n (window as any).gtag = function gtag(...args: any){(window as any).dataLayer.push(args)}\n if (links) {\n (window as any)?.gtag('set', 'linker', {\n 'domains': links\n })\n }\n (window as any).gtag('js', new Date());\n (window as any).gtag('config', tagId)\n }\n}\n\nexport const usePixel = async (\n eventId: string | number,\n options: pageOptions\n) => {\n const getScript = async () => {\n if (!eventId) return\n\n try {\n const response = await getPixelScript(eventId, options)\n const pixels = _get(response, 'data.data.attributes.pixels', '')\n appendScriptsToHeader(pixels)\n const brandGoogleTagKey = _get(response, 'data.data.attributes.brandGoogleTagKey', '')\n const eventGoogleTagKey = _get(response, 'data.data.attributes.eventGoogleTagKey', '')\n const eventGoogleTagManagerLinkerDomains = _get(response, 'data.data.attributes.eventGoogleTagManagerLinkerDomains', '')\n addGTagToHeader(brandGoogleTagKey, eventGoogleTagManagerLinkerDomains)\n if (eventGoogleTagKey) {\n addGTagToHeader(eventGoogleTagKey, eventGoogleTagManagerLinkerDomains)\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n useEffect(() => {\n getScript()\n }, [eventId])\n}","import React from 'react'\nimport { Alert, AlertColor, Snackbar, SnackbarOrigin } from '@mui/material'\n\ninterface ISnackbarAlertProps {\n isOpen: boolean\n message: string\n type: AlertColor\n position?: SnackbarOrigin\n autoHideDuration?: number\n variant?: 'filled' | 'standard' | 'outlined'\n\n onClose: () => void\n}\n\nconst SnackbarAlert = ({\n isOpen,\n message,\n type,\n position,\n autoHideDuration = 3000,\n variant,\n onClose,\n}: ISnackbarAlertProps) => {\n return (\n <div className=\"snackbar-alert-container\">\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={isOpen}\n anchorOrigin={position || { vertical: 'top', horizontal: 'center' }}\n onClose={onClose}\n classes={{\n root: 'snackbar-alert-snackbar-root',\n }}\n >\n <Alert\n severity={type}\n onClose={onClose}\n variant={variant || 'filled'}\n classes={{\n icon: 'snackbar-alert-icon',\n root: 'snackbar-alert-alert-root',\n action: 'snackbar-alert-action',\n message: 'snackbar-alert-message',\n filled: 'snackbar-alert-filled',\n }}\n >\n {message}\n </Alert>\n </Snackbar>\n </div>\n )\n}\n\nexport default SnackbarAlert\n","/* eslint-disable no-underscore-dangle */\nimport TextField from '@mui/material/TextField'\nimport { useTheme } from '@mui/styles'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport _includes from 'lodash/includes'\nimport _isFunction from 'lodash/isFunction'\nimport _isObject from 'lodash/isObject'\nimport _map from 'lodash/map'\nimport React, { useEffect, useRef, useState } from 'react'\n\nexport interface ISelectOption {\n label: string | number;\n value?: string | number;\n [key: string]: any;\n}\n\nexport interface ICustomField {\n onChange?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n label: string;\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n theme: 'dark' | 'light';\n // optional\n type?: string;\n selectOptions?: ISelectOption[];\n inputRef?:\n | { current: HTMLInputElement | null }\n | ((node: HTMLInputElement | null) => void);\n multiline?: boolean;\n minRows?: string | number;\n maxRows?: string | number;\n}\nexport interface IOtherProps {\n [key: string]: any;\n}\n\nexport const CustomField = ({\n label,\n type = 'text',\n field,\n selectOptions = [] as ISelectOption[],\n form: { touched, errors, submitCount },\n theme,\n inputProps: pInputProps = {},\n InputProps = {},\n inputRef,\n onChange,\n multiline = false,\n minRows = 3,\n maxRows,\n disabled,\n}: ICustomField & IOtherProps) => {\n const [isShrinked, setIsShrinked] = useState(Boolean(field.value))\n const _ref = useRef<HTMLInputElement>(null)\n const isAutoFilled = _ref.current?.matches(':-webkit-autofill')\n const isSelectField = type === 'select'\n const error = _get(errors, field.name)\n const isTouched =\n Boolean(_get(touched, field.name)) ||\n (_includes(field.name, 'holder') && !!error && !!submitCount)\n\n const customTheme: any = useTheme()\n const inputProps: any = { sx: customTheme?.input }\n\n useEffect(() => {\n if (_isFunction(inputRef)) {\n inputRef(_ref.current)\n } else if (_isObject(inputRef)) {\n inputRef.current = _ref.current\n }\n })\n\n return (\n <TextField\n disabled={disabled}\n placeholder=\"\"\n id={field.name}\n label={label}\n type={type}\n select={isSelectField}\n fullWidth={true}\n error={!!error && isTouched}\n helperText={isTouched && error}\n onFocus={() => {\n setIsShrinked(true)\n }}\n SelectProps={{\n native: true,\n className: theme,\n MenuProps: { className: theme },\n }}\n InputLabelProps={{\n sx: customTheme?.input,\n shrink: isShrinked || Boolean(field.value) || isAutoFilled,\n }}\n InputProps={InputProps}\n inputProps={{ ...inputProps, ...pInputProps }}\n inputRef={_ref}\n multiline={multiline}\n minRows={minRows}\n maxRows={maxRows}\n {...field}\n onBlur={(e: React.FocusEvent<any, Element>) => {\n setIsShrinked(Boolean(field.value))\n if (field.onBlur) {\n field.onBlur(e)\n }\n }}\n onChange={onChange ?? field.onChange}\n >\n {isSelectField\n ? _map(selectOptions, option => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))\n : null}\n </TextField>\n )\n}\n","import React from 'react'\n\nexport const PoweredBy = () => (\n <div className=\"powered-container\">\n <div className='powered-text'>Powered By</div>\n <img\n className='powered-img'\n alt=\"The Ticket Fairy\"\n src={\"https://cdn-checkout.s3.us-east-2.amazonaws.com/IconTicketFairy.svg\"}\n />\n <div className='powered-ttf'>\n The<strong>Ticket</strong>Fairy\n </div>\n </div>\n)\n","import './style.css'\n\nimport { Box, CircularProgress, Modal } from '@mui/material'\nimport axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik } from 'formik'\nimport React, { FC, useState } from 'react'\nimport * as Yup from 'yup'\n\nimport { forgotPassword } from '../../api'\nimport { CustomField } from '../common/CustomField'\nimport { PoweredBy } from '../common/PoweredBy'\n\nexport interface IForgotPasswordProps {\n onClose: () => void;\n onLoginButtonClick: () => void;\n onForgotPasswordSuccess: (res: any) => void;\n onForgotPasswordError: (e: AxiosError) => void;\n showPoweredByImage?: boolean;\n}\n\ninterface ValuesTypes {\n email: string;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#fff',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n}\n\nconst Schema = Yup.object().shape({\n email: Yup.string().email('Invalid email').required('Required'),\n})\n\nexport const ForgotPasswordModal: FC<IForgotPasswordProps> = ({\n onClose = () => {},\n onLoginButtonClick = () => {},\n onForgotPasswordSuccess = () => {},\n onForgotPasswordError = () => {},\n showPoweredByImage = false,\n}) => {\n const [loading, setLoading] = useState(false)\n\n const onForgotPassword = async ({ email }: ValuesTypes) => {\n try {\n setLoading(true)\n const { data } = await forgotPassword(email)\n\n onForgotPasswordSuccess(data)\n onClose()\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onForgotPasswordError(e)\n }\n } finally {\n setLoading(false)\n }\n }\n\n const _onClose = loading ? () => {} : onClose\n\n return (\n <Modal\n open={true}\n onClose={_onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"forgot-password-modal\"\n >\n <Box style={style}>\n <div>\n <Formik\n initialValues={{ email: '' }}\n validationSchema={Schema}\n onSubmit={onForgotPassword}\n >\n {({ isValid, dirty, handleSubmit }) => (\n <Form onSubmit={handleSubmit}>\n <div className=\"forgot-password-container\">\n <div className=\"title\">Password Reset</div>\n <div className=\"forgot-password-container__singleField\">\n <Field name=\"email\" label=\"Email\" component={CustomField} />\n </div>\n </div>\n <div className=\"forgot-password-action-button\">\n <button type=\"submit\" disabled={!(isValid && dirty)}>\n {loading ? <CircularProgress size=\"22px\" /> : 'Submit'}\n </button>\n </div>\n <div className=\"login\">\n <span onClick={onLoginButtonClick}>Back to Log In</span>\n </div>\n {showPoweredByImage ? <PoweredBy /> : null}\n </Form>\n )}\n </Formik>\n </div>\n </Box>\n </Modal>\n )\n}\n","import { Modal as MuiModal } from '@mui/material'\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport _map from 'lodash/map'\nimport React, { FC } from 'react'\n\nexport interface Action {\n id: string;\n label: string;\n onClick: () => void;\n disabled?: boolean;\n loading?: boolean;\n variant?: \"text\" | \"contained\" | \"outlined\";\n}\n\ninterface Props {\n onClose?: () => void;\n actions: Action[];\n modalClassName?: string;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto',\n}\n\nconst Modal: FC<Props> = ({\n onClose,\n actions = [],\n children,\n modalClassName = '',\n}) => (\n <MuiModal\n open={true}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className={`confirm-modal ${modalClassName}`}\n >\n <Box style={style}>\n <div className=\"modal-body\">{children}</div>\n <div className=\"footer\">\n {_map(actions, (action: Action) => (\n <Button\n key={action.id}\n onClick={action.onClick}\n disabled={action.disabled || action.loading}\n variant={action.variant || \"text\"}\n >\n {action.loading ? <CircularProgress size=\"22px\" /> : action.label}\n </Button>\n ))}\n </div>\n </Box>\n </MuiModal>\n)\n\nexport default Modal\n","import React, { useEffect, useState } from 'react'\n\nimport Modal, { Action } from '../common/ModalComponent'\n\ninterface IDVerificationProps {\n message?: string | null;\n displayModal?: boolean;\n actions?: Action[];\n onClose?: () => void;\n}\n\nexport const VerificationPendingModal = (props: IDVerificationProps) => {\n const { message, displayModal, actions, onClose } = props\n const [showModal, setShowModal] = useState(false)\n\n useEffect(() => {\n if (displayModal === undefined) {\n setShowModal(Boolean(message))\n }\n }, [message, displayModal])\n\n return showModal || displayModal ? (\n <div>\n <Modal\n modalClassName=\"id-verification-modal\"\n actions={\n actions || [\n {\n id: 'okay',\n label: 'OK',\n variant: 'contained',\n onClick: () => {\n setShowModal(false)\n\n if (onClose) {\n onClose()\n }\n },\n },\n ]\n }\n >\n <div>{message}</div>\n </Modal>\n </div>\n ) : null\n}\n","const emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\nexport const combineValidators = (...validators: any) => (...value: any) => {\n for (let i = 0; i < validators.length; ++i) {\n const error_message = validators[i](...value)\n if (error_message) return error_message\n }\n}\n\nexport function isFalsy(item: any) {\n try {\n if (\n !item || // handles most, like false, 0, null, etc\n (typeof item === 'object' &&\n Object.keys(item).length === 0 && // for empty objects, like {}, []\n !(typeof item.addEventListener === 'function')) // omit webpage elements\n ) {\n return true\n }\n } catch (err) {\n return true\n }\n\n return false\n}\n\nexport const requiredValidator = (\n value?: string | number | Array<string> | boolean,\n message?: string\n): string => {\n let errorMessage = ''\n\n if (isFalsy(typeof value === 'string' ? value.trim() : value)) {\n errorMessage = message || 'Required'\n }\n return errorMessage\n}\n\nexport const emailValidator = (email: string) =>\n !emailRegex.test(email) ? 'Please enter a valid email address' : ''\n","import './style.css'\n\nimport { TextField } from '@mui/material'\nimport Box from '@mui/material/Box'\nimport Modal from '@mui/material/Modal'\nimport axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { FC, useState } from 'react'\n\nimport { authorize, getProfileData } from '../../api'\nimport { isBrowser, setLoggedUserData } from '../../utils'\nimport { requiredValidator } from '../../validators'\nimport { PoweredBy } from '../common/PoweredBy'\n\nexport interface Props {\n onClose: () => void;\n onLogin: (res: IProfileData) => void;\n alreadyHasUser?: boolean;\n userExpired?: boolean;\n onAuthorizeSuccess?: (res: any) => void;\n onAuthorizeError?: (e: AxiosError) => void;\n onGetProfileDataSuccess?: (res: any) => void;\n onGetProfileDataError?: (e: AxiosError) => void;\n onForgotPassword?: () => void;\n onSignup?: () => void;\n modalClassname?: string;\n logo?: string;\n showForgotPasswordButton?: boolean;\n showSignUpButton?: boolean;\n showPoweredByImage?: boolean;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n}\n\nexport const LoginModal: FC<Props> = ({\n onClose,\n onLogin,\n alreadyHasUser = false,\n userExpired = false,\n onGetProfileDataSuccess = _identity,\n onGetProfileDataError = _identity,\n onForgotPassword = _identity,\n onSignup = _identity,\n modalClassname = '',\n logo,\n showForgotPasswordButton = false,\n showSignUpButton = false,\n showPoweredByImage = false,\n}) => {\n const [error, setError] = useState('')\n return (\n <Modal\n open={true}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className={`login-modal ${modalClassname}`}\n >\n <Box style={style}>\n <div>\n <Formik\n initialValues={{ email: '', password: '' }}\n onSubmit={async ({ email, password }) => {\n try {\n const body = { email, password }\n const authRes = await authorize(body)\n let profileResponse = null\n try {\n profileResponse = await getProfileData()\n onGetProfileDataSuccess(profileResponse.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n return\n }\n\n const profileSpecifiedData = profileResponse.data\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (isBrowser) {\n window.localStorage.setItem('user_data', JSON.stringify(profileDataObj))\n const event = new window.CustomEvent('tf-login')\n window.document.dispatchEvent(event)\n }\n onLogin(_get(authRes, 'data.data'))\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message || 'Error'\n setError(error)\n } else if (e instanceof Error) {\n setError(e?.message || 'Error')\n }\n }\n }}\n >\n {props => (\n <Form onSubmit={props.handleSubmit}>\n <div className=\"modal-title\">Login</div>\n <div className=\"login-logo-container\">\n <img\n className=\"login-logo-tff\"\n src={\n logo ||\n 'https://www.ticketfairy.com/resources/images/logo-ttf-black.svg'\n }\n alt=\"logo\"\n />\n </div>\n <div className=\"server_auth__error\">{error}</div>\n {alreadyHasUser && (\n <p className=\"info-text-for-login\">\n It appears this email is already attached to an account. Please log in\n here to complete your registration.\n </p>\n )}\n {userExpired && (\n <p className=\"info-text-for-login\">\n Your session has expired, please log in again.\n </p>\n )}\n <div className=\"login-modal-body\">\n <div className=\"login-modal-body__email\">\n <Field name={'email'} validate={requiredValidator}>\n {({ field, meta }: { [key: string]: any }) => (\n <TextField\n label={'Email'}\n type={'email'}\n fullWidth\n error={!!meta.error && meta.touched}\n helperText={meta.touched && meta.error}\n {...field}\n />\n )}\n </Field>\n </div>\n <div className=\"login-modal-body__password\">\n <Field name={'password'} validate={requiredValidator}>\n {({ field, meta }: { [key: string]: any }) => (\n <TextField\n label=\"Password\"\n type=\"password\"\n fullWidth\n error={!!meta.error && meta.touched}\n helperText={meta.touched && meta.error}\n {...field}\n />\n )}\n </Field>\n </div>\n <div className=\"login-action-button\">\n <button type=\"submit\">Login</button>\n </div>\n {showForgotPasswordButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onForgotPassword}>\n Forgot password?\n </span>\n </div>\n )}\n {showSignUpButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onSignup}>\n Sign up\n </span>\n </div>\n )}\n {showPoweredByImage ? <PoweredBy /> : null}\n </div>\n </Form>\n )}\n </Formik>\n </div>\n </Box>\n </Modal>\n )\n}\n","import './style.css'\n\nimport { Box, CircularProgress, Modal } from '@mui/material'\nimport axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik } from 'formik'\nimport React, { FC, useState } from 'react'\nimport * as Yup from 'yup'\n\nimport { register } from '../../api'\nimport { CONFIGS } from '../../utils'\nimport { CustomField } from '../common/CustomField'\nimport { PoweredBy } from '../common/PoweredBy'\n\ninterface ISignupProps {\n onClose: () => void;\n onLogin: () => void;\n onRegisterSuccess: (res: any) => void;\n onRegisterError: (e: AxiosError, email: string) => void;\n showPoweredByImage?: boolean;\n}\n\ninterface ValuesTypes {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n confirmPassword: string;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#fff',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n}\n\nconst SignupSchema = Yup.object().shape({\n firstName: Yup.string().required('Required'),\n lastName: Yup.string().required('Required'),\n email: Yup.string().email('Invalid email').required('Required'),\n password: Yup.string().min(6, 'Password must have 5+ characters').required('Required'),\n confirmPassword: Yup.string()\n .required('Required')\n .oneOf([Yup.ref('password'), null], 'Passwords must match'),\n})\n\nexport const SignupModal: FC<ISignupProps> = ({\n onClose = () => {},\n onLogin = () => {},\n onRegisterSuccess = () => {},\n onRegisterError = () => {},\n showPoweredByImage = false,\n}) => {\n const [loading, setLoading] = useState(false)\n\n const onSignup = async (values: ValuesTypes) => {\n try {\n setLoading(true)\n const formData = new FormData()\n formData.set('first_name', values.firstName)\n formData.set('last_name', values.lastName)\n formData.set('email', values.email)\n formData.set('password', values.password)\n formData.set('password_confirmation', values.confirmPassword)\n formData.append(\n 'client_id',\n CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'\n )\n formData.append(\n 'client_secret',\n CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9'\n )\n\n const res = await register(formData)\n\n onRegisterSuccess(res)\n onClose()\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onRegisterError(e, values.email)\n }\n } finally {\n setLoading(false)\n }\n }\n\n const _onClose = loading ? () => {} : onClose\n\n return (\n <Modal\n open={true}\n onClose={_onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"signup-modal\"\n >\n <Box style={style}>\n <div>\n <Formik\n initialValues={{\n firstName: '',\n lastName: '',\n email: '',\n password: '',\n confirmPassword: '',\n }}\n validationSchema={SignupSchema}\n onSubmit={onSignup}\n >\n {({ isValid, dirty, handleSubmit }) => (\n <Form onSubmit={handleSubmit}>\n <div className=\"signup-container\">\n <div className=\"title\">Create an Account</div>\n <div className=\"signup-container__twoFields\">\n <div className=\"is-half\">\n <Field\n name=\"firstName\"\n label=\"First Name\"\n component={CustomField}\n />\n </div>\n <div className=\"is-half\">\n <Field name=\"lastName\" label=\"Last Name\" component={CustomField} />\n </div>\n </div>\n <div className=\"signup-container__singleField\">\n <div className=\"\">\n <Field name=\"email\" label=\"Email\" component={CustomField} />\n </div>\n </div>\n <div className=\"signup-container__twoFields\">\n <div className=\"is-half\">\n <Field\n name=\"password\"\n label=\"Password\"\n type=\"password\"\n component={CustomField}\n />\n </div>\n <div className=\"is-half\">\n <Field\n name=\"confirmPassword\"\n label=\"Confirm Password\"\n type=\"password\"\n component={CustomField}\n />\n </div>\n </div>\n </div>\n <div className=\"signup-action-button\">\n <button type=\"submit\" disabled={!(isValid && dirty)}>\n {loading ? <CircularProgress size=\"22px\" /> : 'Submit'}\n </button>\n </div>\n <div className=\"login\">\n <span onClick={onLogin}>Login</span>\n </div>\n {showPoweredByImage ? <PoweredBy /> : null}\n </Form>\n )}\n </Formik>\n </div>\n </Box>\n </Modal>\n )\n}\n","import _isNumber from 'lodash/isNumber'\n\nexport const showZero = (value = 0) => {\n const intNumber = Number(value)\n return _isNumber(intNumber)\n ? intNumber >= 0 && intNumber < 10\n ? '0' + intNumber\n : intNumber\n : null\n}\n","import './style.css'\n\nimport _identity from 'lodash/identity'\nimport React, { memo, useState } from 'react'\nimport Countdown from 'react-countdown'\nimport SVG from 'react-inlinesvg'\n\nimport Cross from '../../assets/images/cross.svg'\nimport { showZero } from '../../utils/showZero'\n\nexport interface ITimerWidgetPage {\n expires_at: number;\n buyLoading?: boolean;\n onCountdownFinish?: () => void;\n}\n\nexport interface IRenderer {\n minutes: number;\n seconds: number;\n completed: number;\n handleCountdownFinish: () => void;\n}\n\nconst TimerWidget = ({\n expires_at,\n buyLoading,\n onCountdownFinish = _identity,\n}: ITimerWidgetPage) => {\n const [showTimer, setShowTimer] = useState(true)\n\n const handleCountdownFinish = () => {\n setShowTimer(false)\n if (!buyLoading) {\n onCountdownFinish()\n }\n }\n\n const renderer = ({\n minutes,\n seconds,\n completed,\n handleCountdownFinish,\n }: IRenderer) => {\n if (completed) {\n handleCountdownFinish()\n return null\n }\n return (\n <span>\n {showZero(minutes)}:{showZero(seconds)}\n </span>\n )\n }\n\n const hideTimer = () => {\n const timerRl: HTMLElement | null = document.querySelector('.timer')\n if (timerRl) {\n timerRl.style.visibility = 'hidden'\n }\n }\n\n return showTimer && !!expires_at ? (\n <div className=\"timer\">\n <div className=\"close-icon\" onClick={hideTimer}>\n <SVG src={Cross} width=\"10\" height=\"10\" fill=\"#fff\" />\n </div>\n <div className=\"toast-message\">\n <p>Please complete your purchase before the timer reaches zero.</p>\n <p className=\"countdown\">\n <Countdown\n date={Date.now() + expires_at * 1000}\n renderer={(props: any) =>\n renderer({\n ...props,\n handleCountdownFinish,\n })\n }\n />\n </p>\n </div>\n </div>\n ) : null\n}\n\nexport default memo(TimerWidget)\n","import { FormControl, FormHelperText } from '@mui/material'\nimport Checkbox from '@mui/material/Checkbox'\nimport FormControlLabel from '@mui/material/FormControlLabel'\nimport FormGroup from '@mui/material/FormGroup'\nimport { useTheme } from '@mui/styles'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport React from 'react'\n\ninterface ICheckboxField {\n label: string | number | JSX.Element;\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n}\n\nexport const CheckboxField = ({\n label,\n field,\n form: { touched, errors },\n}: ICheckboxField) => {\n const isTouched = Boolean(_get(touched, field.name, false))\n const errorText = _get(errors, field.name)\n const hasError = isTouched && Boolean(errorText)\n const customTheme: any = useTheme()\n\n return (\n <FormControl\n className={`checkbox-field ${hasError ? 'required-checkbox-field' : ''}`}\n error={hasError}\n >\n <FormGroup>\n <FormControlLabel\n control={<Checkbox {...field} checked={field.value} />}\n label={label}\n componentsProps={{ typography: customTheme?.checkbox }}\n />\n </FormGroup>\n {hasError && <FormHelperText>Required</FormHelperText>}\n </FormControl>\n )\n}\n","import { FormControl, FormHelperText } from '@mui/material'\nimport CheckboxMaterial from '@mui/material/Checkbox'\nimport FormControlLabel from '@mui/material/FormControlLabel'\nimport FormGroup from '@mui/material/FormGroup'\nimport { useTheme } from '@mui/styles'\nimport { FieldInputProps } from 'formik'\nimport React from 'react'\n\nexport interface ICheckboxField {\n label: string | number | JSX.Element;\n field?: FieldInputProps<any>;\n}\n\ninterface IOtherProps {\n [key: string]: any;\n}\n\nexport const Checkbox = ({\n label,\n field,\n selectOptions,\n theme,\n setFieldValue,\n disableDropdown,\n setPhoneValidationIsLoading,\n defaultCountry,\n required,\n uniqueId,\n dateFormat,\n datePlaceholder,\n isCountryCodeEditable,\n ...rest\n}: ICheckboxField & IOtherProps) => {\n const customTheme: any = useTheme()\n return (\n <FormControl error={!!(rest?.form?.errors && rest.form.errors[field?.name ?? ''])}>\n <FormGroup>\n <FormControlLabel\n control={<CheckboxMaterial {...field} {...rest} />}\n label={label}\n componentsProps={{\n typography: customTheme?.checkbox,\n }}\n />\n </FormGroup>\n {rest?.form?.errors && rest.form.errors[field?.name ?? ''] ? (\n <FormHelperText>Required</FormHelperText>\n ) : null}\n </FormControl>\n )\n}\n","import { FieldInputProps, FormikProps } from 'formik'\nimport _debounce from 'lodash/debounce'\nimport _get from 'lodash/get'\nimport MuiPhoneNumber from 'material-ui-phone-number'\nimport React, { useCallback, useEffect } from 'react'\n\nimport { validatePhoneNumber } from '../../api'\n\nexport interface IPhoneNumberField {\n label: string;\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n type: string;\n disableDropdown: boolean;\n fill: boolean;\n setPhoneValidationIsLoading: (isLoading: boolean) => void;\n\n // optional\n defaultCountry?: string;\n isCountryCodeEditable?: boolean;\n}\n\nexport const PhoneNumberField = ({\n label,\n field,\n form: {\n errors,\n touched,\n setFieldError,\n values,\n initialValues,\n setFieldValue,\n setFieldTouched,\n setErrors,\n },\n disableDropdown = true,\n defaultCountry = 'us',\n fill = false,\n setPhoneValidationIsLoading,\n isCountryCodeEditable,\n}: IPhoneNumberField) => {\n const error = _get(errors, field.name)\n const isTouched = Boolean(_get(touched, field.name))\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debounceCb = useCallback(\n _debounce((cb: () => void) => void cb(), 1000),\n []\n )\n\n useEffect(() => {\n if (field.value) {\n setPhoneValidationIsLoading(true)\n }\n\n debounceCb(async () => {\n try {\n if (!values[field.name]) {\n const newErrors = { ...errors }\n delete newErrors[field.name]\n setErrors(newErrors)\n return\n }\n if (values[field.name]) {\n await validatePhoneNumber(values[field.name])\n }\n if (errors[field.name]) {\n const newErrors = { ...errors }\n delete newErrors[field.name]\n setErrors(newErrors)\n }\n } catch (error) {\n const message = _get(\n error,\n 'response.data.message',\n 'Invalid phone number'\n )\n if (values[field.name] && errors[field.name] !== message) {\n setFieldError(field.name, message)\n }\n } finally {\n setPhoneValidationIsLoading(false)\n }\n })\n // eslint-disable-next-line\n }, [field.value])\n\n return (\n <>\n <MuiPhoneNumber\n name={field.name}\n value={fill ? values[field.name] : initialValues[field.name]}\n onChange={(value: any, country?: any) => {\n if (`+${country?.dialCode}` === value || value === '+') {\n setFieldValue(field.name, '')\n setFieldError(field.name, '')\n } else {\n setFieldTouched(field.name, true)\n setFieldValue(field.name, value)\n }\n }}\n variant=\"outlined\"\n defaultCountry={defaultCountry}\n disableDropdown={disableDropdown}\n label={label}\n error={!!error && (isTouched || fill)}\n helperText={(isTouched || fill) && error}\n fullWidth\n autoFormat={false}\n disableAreaCodes={true}\n countryCodeEditable={isCountryCodeEditable}\n />\n </>\n )\n}\n","import CircularProgress from '@mui/material/CircularProgress'\nimport React from 'react'\n\nexport const Loader = () => (\n <div className=\"loader-container\">\n <CircularProgress />\n </div>\n)\n","import { FormControl, InputLabel } from '@mui/material'\nimport Checkbox from '@mui/material/Checkbox'\nimport FormHelperText from '@mui/material/FormHelperText'\nimport ListItemText from '@mui/material/ListItemText'\nimport MenuItem from '@mui/material/MenuItem'\nimport OutlinedInput from '@mui/material/OutlinedInput'\nimport Select, { SelectChangeEvent } from '@mui/material/Select'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React from 'react'\n\ninterface ISelectOption {\n id: string | number;\n label: string | number;\n value: string | number;\n}\n\ninterface ISelectField {\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n options: ISelectOption[];\n\n // optional\n label?: string;\n isMultiple?: boolean;\n disabled?: boolean;\n onChange?: (e: SelectChangeEvent<string[]>) => void;\n}\n\nfunction SelectField({\n label,\n isMultiple,\n field,\n form: { touched, errors, setFieldValue },\n options = [],\n disabled,\n onChange = _identity,\n}: ISelectField) {\n const { name, value = [] } = field\n const selectId = `select-field-${name}`\n const error = _get(errors, name)\n const isTouched = Boolean(_get(touched, field.name))\n\n const handleChange = (event: SelectChangeEvent<string[]>) => {\n const {\n target: { value },\n } = event\n\n setFieldValue(name, value)\n onChange(event)\n }\n\n const getSelectedItemLabel = (selectedValue: any) => {\n const selectedItem = options.find(option => option.value === selectedValue)\n const label = _get(selectedItem, 'label', '')\n return label\n }\n\n return (\n <>\n <FormControl\n fullWidth={true}\n disabled={disabled}\n error={isTouched && Boolean(error)}\n >\n {label && <InputLabel id={selectId}>{label}</InputLabel>}\n <Select\n id={name}\n labelId={selectId}\n multiple={isMultiple}\n value={value || []}\n onChange={handleChange}\n input={<OutlinedInput label={label} />}\n renderValue={selected => {\n if (isMultiple) {\n const selectedLabels = _map(selected, (selectedValue: string) =>\n getSelectedItemLabel(selectedValue)\n )\n return selectedLabels.join(', ')\n }\n\n const selectedLabel = getSelectedItemLabel(selected)\n return selectedLabel\n }}\n sx={{ textAlign: 'start' }}\n >\n {options?.map((option: ISelectOption) => (\n <MenuItem key={option.label} value={option.value}>\n {isMultiple && <Checkbox checked={value.indexOf(option.value) > -1} />}\n <ListItemText primary={option.label} />\n </MenuItem>\n ))}\n </Select>\n {isTouched && Boolean(error) ? (\n <FormHelperText error>{error}</FormHelperText>\n ) : null}\n </FormControl>\n </>\n )\n}\n\nexport { SelectField }\n","import Modal from '@mui/material/Modal'\nimport React from 'react'\n\ninterface ICopyMessageModalProps {\n showCopyModal: boolean;\n onClose: () => void;\n}\n\nexport const CopyMessageModal = (props: ICopyMessageModalProps) => {\n const { showCopyModal = false, onClose } = props\n return (\n <Modal\n open={showCopyModal}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"success-copy-modal\"\n >\n <div className=\"message-copy-success-box\">\n <div className=\"message-copy-success\">\n <span>\n Copied to your clipboard! Now paste your link in a Snapchat message,\n </span>\n <span>your Instagram bio, Whatsapp, Facebook or a text :)</span>\n </div>\n <div className=\"footer\">\n <button className=\"footer-button\" type=\"button\" onClick={onClose}>\n OK\n </button>\n </div>\n </div>\n </Modal>\n )\n}\n","import { createTheme, ThemeProvider } from '@mui/material/styles'\nimport { DatePicker } from '@mui/x-date-pickers'\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport React from 'react'\n\nimport { CustomField } from './CustomField'\n\nconst DATE_SIZE = 32\nconst compactStyles = {\n '& > div': {\n minWidth: 256,\n },\n '& > div > div, & > div > div > div, & .MuiCalendarPicker-root': {\n width: 256,\n },\n '& .MuiTypography-caption': {\n width: DATE_SIZE,\n margin: 0,\n },\n '& .PrivatePickersSlideTransition-root': {\n minHeight: DATE_SIZE * 6,\n },\n '& .PrivatePickersSlideTransition-root [role=\"row\"]': {\n margin: 0,\n },\n '& .MuiPickersDay-dayWithMargin': {\n margin: 0,\n },\n '& .MuiPickersDay-root': {\n width: DATE_SIZE,\n height: DATE_SIZE,\n },\n '& .MuiPickersArrowSwitcher-spacer': {\n width: 0,\n },\n '& [role=\"presentation\"] .PrivatePickersFadeTransitionGroup-root': {\n marginRight: -1,\n },\n}\n\nconst compactStyleTheme = createTheme({\n components: {\n MuiPaper: {\n defaultProps: {\n sx: compactStyles,\n },\n },\n },\n})\n\nexport interface IDatePickerFieldProps {\n label: string;\n\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n theme: 'dark' | 'light';\n\n useCompact?: boolean;\n}\n\ninterface IOtherProps {\n [key: string]: any;\n}\n\nexport const DatePickerField = ({\n label,\n field,\n form,\n theme,\n useCompact = true,\n dateFormat = 'DD/MM/YYYY',\n placeholder = 'dd/mm/yyyy',\n}: IDatePickerFieldProps & IOtherProps) => (\n <ThemeProvider theme={useCompact ? compactStyleTheme : {}}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <DatePicker\n value={field.value || ''}\n onChange={value => form.setFieldValue(field.name, value)}\n PopperProps={{\n placement: 'bottom-start',\n }}\n showDaysOutsideCurrentMonth={true}\n disableFuture={true}\n inputFormat={dateFormat}\n mask=\"__/__/____\"\n renderInput={(params: any) => (\n <CustomField\n {...params}\n inputProps={{ ...params.inputProps, placeholder }}\n theme={theme}\n field={{\n ...field,\n onChange: (\n evt: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n if (params.inputProps && params.inputProps.onChange) {\n params.inputProps.onChange(evt)\n }\n },\n }}\n form={form}\n label={label}\n type=\"tel\"\n />\n )}\n />\n </LocalizationProvider>\n </ThemeProvider>\n)\n","import { FormControl, FormHelperText, InputLabel } from '@mui/material'\nimport Select from '@mui/material/Select'\nimport { useTheme } from '@mui/styles'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport _map from 'lodash/map'\nimport React from 'react'\n\nexport interface ISelectOption {\n label: string | number;\n value?: string | number;\n [key: string]: any;\n}\n\nexport interface ISelectField {\n label: string;\n\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n theme: 'dark' | 'light';\n\n // optional\n type?: string;\n selectOptions?: ISelectOption[];\n onChange?: (e: any) => void;\n}\n\ninterface IOtherProps {\n [key: string]: any;\n}\n\nexport const NativeSelectField = ({\n label,\n type = 'text',\n field,\n selectOptions = [] as ISelectOption[],\n form: { touched, errors, setFieldValue },\n theme,\n onChange = () => {},\n}: ISelectField & IOtherProps) => {\n const isTouched = Boolean(_get(touched, field.name))\n const error = _get(errors, field.name)\n\n const customTheme: any = useTheme()\n\n return (\n <FormControl fullWidth={true}>\n <InputLabel\n style={customTheme?.input}\n htmlFor={field.name}\n error={!!error && isTouched}\n shrink={true}\n >\n {label}\n </InputLabel>\n <Select\n id={field.name}\n label={label}\n type={type}\n fullWidth={true}\n error={!!error && isTouched}\n inputProps={{\n id: field.name,\n }}\n native={true}\n className={`Mui-Select ${theme}`}\n MenuProps={{ className: theme }}\n {...field}\n style={customTheme?.input}\n onChange={e => {\n onChange(e)\n setFieldValue(field.name, e.target.value)\n }}\n >\n {_map(selectOptions, option => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </Select>\n {isTouched && error ? (\n <FormHelperText error={!!error && isTouched}>{error}</FormHelperText>\n ) : null}\n </FormControl>\n )\n}\n","import FormControl from '@mui/material/FormControl'\nimport FormControlLabel from '@mui/material/FormControlLabel'\nimport FormHelperText from '@mui/material/FormHelperText'\nimport FormLabel from '@mui/material/FormLabel'\nimport Radio from '@mui/material/Radio'\nimport RadioGroup from '@mui/material/RadioGroup'\nimport { FieldInputProps, FormikProps } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React from 'react'\n\nexport interface IRadio {\n id: string | number;\n label: string | number;\n value: string | number;\n [key: string]: any;\n}\n\nexport interface IRadioGroupField {\n label?: string;\n field: FieldInputProps<any>;\n form: FormikProps<any>;\n radios: IRadio[];\n disabled?: boolean;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioGroupField = ({\n label,\n field,\n radios = [],\n disabled,\n form: { touched, errors, setFieldValue },\n onChange = _identity,\n}: IRadioGroupField) => {\n const radioId = `radio-${field.name}`\n const error = _get(errors, field.name)\n const isTouched = Boolean(_get(touched, field.name))\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target as HTMLInputElement\n setFieldValue(field.name, value)\n onChange(e)\n }\n\n if (!radios) return null\n\n return (\n <FormControl disabled={disabled} error={isTouched && Boolean(error)}>\n {isTouched && Boolean(error) ? (\n <FormHelperText className=\"radio-error\" error>\n {error}\n </FormHelperText>\n ) : null}\n {label && <FormLabel id={radioId}>{label}</FormLabel>}\n <RadioGroup\n aria-labelledby={radioId}\n name={field.name}\n value={field.value}\n onChange={handleChange}\n >\n {radios.map(radio => {\n const { id, label, value } = radio\n return (\n <FormControlLabel\n key={id}\n label={label}\n value={value}\n control={<Radio />}\n />\n )\n })}\n </RadioGroup>\n </FormControl>\n )\n}\n","import { FormikErrors, FormikValues } from 'formik'\nimport _flatMapDeep from 'lodash/flatMapDeep'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _isArray from 'lodash/isArray'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\nimport React from 'react'\n\nimport { AttributesConfig } from '../../api'\nimport { IGroupItem } from '../../types'\nimport { CONFIGS } from '../../utils'\nimport { combineValidators, requiredValidator } from '../../validators'\nimport {\n CheckboxField,\n CustomField,\n DatePickerField,\n PhoneNumberField,\n RadioGroupField,\n SelectField,\n} from '../common/index'\n\nexport interface ILoggedInValues {\n emailLogged?: string;\n firstNameLogged?: string;\n lastNameLogged?: string;\n}\n\nexport interface IValues {\n [key: string]: any;\n}\n\nexport const getInitialValues = (\n data: any = [],\n propsInitialValues: IValues = {},\n userValues: any = {},\n ticketHoldersFields: any = {},\n ticketsQuantity: any = []\n): IValues => {\n const results = _flatMapDeep(data, ({ fields }) =>\n _map(fields, ({ groupItems }) =>\n _map(groupItems, ({ name, value }) => ({ name, value }))\n )\n )\n\n // Add Ticket Holder default values for custom fields\n const ticketHoldersCustomFields =\n ticketHoldersFields?.fields?.find((groupItem: any) => groupItem.customFields)\n ?.groupItems || []\n const ticketHoldersCustomFieldsInitValues = {} as IValues\n const selectedTicketsCount =\n ticketsQuantity.length || localStorage.getItem('selectedTicketsQuantity') || 0\n\n if (!_isEmpty(ticketHoldersCustomFields)) {\n for (const customField of ticketHoldersCustomFields) {\n for (let i = 0; i < selectedTicketsCount; i++) {\n const fieldName = `${customField.name}-${i}`\n const fieldValue = customField.value\n ticketHoldersCustomFieldsInitValues[fieldName] = fieldValue\n }\n }\n }\n\n const initialValues: IValues = {}\n _forEach(results, groupItem => {\n const { name, value } = groupItem\n initialValues[name] = value || propsInitialValues[name] || userValues[name] || ''\n })\n\n // set logged in user as first ticket holder\n initialValues['holderFirstName-0'] =\n propsInitialValues.firstName || userValues.firstName || ''\n initialValues['holderLastName-0'] =\n propsInitialValues.lastName || userValues.lastName || ''\n initialValues['holderEmail-0'] = propsInitialValues.email || userValues.email || ''\n\n return { ...initialValues, ...ticketHoldersCustomFieldsInitValues }\n}\n\nexport const createRegisterFormData = (\n values: IValues = {},\n checkoutBody: { attributes: { [key: string]: any } },\n flagFreeTicket = false\n): FormData => {\n const bodyFormData = new FormData()\n bodyFormData.append('first_name', values.firstName)\n bodyFormData.append('last_name', values.lastName)\n bodyFormData.append('email', values.email)\n bodyFormData.append('password', values.password)\n bodyFormData.append('password_confirmation', values.confirmPassword)\n bodyFormData.append(\n 'client_id',\n CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'\n )\n bodyFormData.append(\n 'client_secret',\n CONFIGS.CLIENT_SECRET || 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9'\n )\n bodyFormData.append('check_cart_expiration', 'true')\n\n _forEach(checkoutBody.attributes, (item: any, key: string) => {\n if (\n !(flagFreeTicket && ['country', 'state', 'city', 'street_address'].includes(key))\n ) {\n bodyFormData.append(key, item)\n }\n })\n\n return bodyFormData\n}\n\nexport interface ICheckoutBody {\n attributes: {\n [key: string]: any;\n };\n data_capture?: {\n [key: string]: any;\n };\n}\n\ninterface IticketHolder {\n first_name?: string;\n last_name?: string;\n phone?: string;\n email?: string;\n}\n\nexport const createCheckoutDataBody = (\n ticketsQuantity: number,\n values: IValues = {},\n logedInValues: ILoggedInValues = {},\n includeDob = false\n): ICheckoutBody => {\n const { firstName, lastName, holderAge, confirmEmail, confirmPassword, ...restValues } =\n values\n\n const holders = []\n let ticket_holders: IticketHolder[] = []\n\n for (let i = 0; i <= ticketsQuantity; i++) {\n const individualHolder = Object.fromEntries(\n Object.entries(values).filter(([key, _val]) => key.includes(String(i)))\n )\n holders.push(individualHolder)\n }\n\n const filteredHolders = holders.filter(holder => Object.entries(holder).length > 0)\n ticket_holders = filteredHolders.map((item, index) => ({\n first_name: !index\n ? item[`holderFirstName-${index}`] || logedInValues.firstNameLogged || ''\n : item[`holderFirstName-${index}`] || '',\n last_name: !index\n ? item[`holderLastName-${index}`] || logedInValues.lastNameLogged || ''\n : item[`holderLastName-${index}`] || '',\n phone: item[`holderPhone-${index}`] || '',\n email: !index\n ? item[`holderEmail-${index}`] || logedInValues.emailLogged || ''\n : item[`holderEmail-${index}`] || '',\n }))\n\n const filteredRestValue: { [key: string]: any } = {}\n _forEach(restValues, (value, key) => {\n if (!key.includes('holder')) {\n filteredRestValue[key] = value\n }\n })\n\n const body: ICheckoutBody = {\n attributes: {\n ...filteredRestValue,\n email: restValues.email || logedInValues.emailLogged,\n confirm_email: restValues.email || logedInValues.emailLogged,\n first_name: firstName || logedInValues.firstNameLogged,\n last_name: lastName || logedInValues.lastNameLogged,\n ticket_holders,\n },\n }\n\n if (includeDob) {\n const holderAgeDate = new Date(holderAge)\n body.attributes.dob_day = holderAgeDate.getDate()\n body.attributes.dob_month = holderAgeDate.getMonth() + 1\n body.attributes.dob_year = holderAgeDate.getFullYear()\n }\n return body\n}\n\nexport const getValidateFunctions = (\n element: IGroupItem,\n states: Array<{ [key: string]: any }>,\n values: FormikValues,\n errors: FormikErrors<any>\n) => {\n const validationFunctions: any[] = []\n\n if (element.required) {\n if (element.name !== 'state' || (element.name === 'state' && states.length)) {\n validationFunctions.push(requiredValidator)\n }\n }\n\n if (element.onValidate) {\n validationFunctions.push(element.onValidate)\n }\n\n if (element.name === 'phone') {\n const invalidPhone = () =>\n errors.phone === 'Invalid phone number' ? 'Invalid phone number' : null\n validationFunctions.push(invalidPhone)\n }\n\n if (element.name === 'confirmEmail') {\n const isSameEmail = (confirmEmail?: string) =>\n values.email !== confirmEmail ? 'Please confirm your email address correctly' : null\n validationFunctions.push(isSameEmail)\n }\n\n if (element.name === 'confirmPassword') {\n const isSame = (confirmPassword?: string) =>\n values.password !== confirmPassword ? 'Password confirmation does not match' : null\n validationFunctions.push(isSame)\n }\n\n return combineValidators(...validationFunctions)\n}\n\nexport const assingUniqueIds = (data: any): any => {\n if (_get(data[0], 'uniqueId')) {\n return data\n }\n\n return _map(data, (item: any) => {\n _forEach(item, (itemValue: string, key) => {\n if (_isArray(itemValue) && !itemValue.some(item => typeof item === 'string')) {\n item[key] = assingUniqueIds(itemValue)\n }\n })\n\n return { ...item, uniqueId: nanoid() }\n })\n}\n\nexport const isRequiredField = (\n element: IGroupItem,\n configs?: null | AttributesConfig\n) => {\n const { name, required } = element\n const flagRequirePhone = _get(configs, 'phone_required', false)\n const collectMandatoryWalletAddress = _get(\n configs,\n 'collect_mandatory_wallet_address',\n false\n )\n\n if (\n required ||\n (name === 'phone' && flagRequirePhone) ||\n (name === 'data_capture[wallet_address]' && !collectMandatoryWalletAddress)\n ) {\n return true\n }\n\n return false\n}\n\nexport const getFieldLabel = (element: IGroupItem, configs?: null | AttributesConfig) => {\n if (isRequiredField(element, configs) || React.isValidElement(element.label)) {\n return element.label\n }\n\n return `${element.label} (optional)`\n}\n\nexport const getFieldComponent = (element: IGroupItem) => {\n const type = _get(element, 'type', 'text')\n\n const fieldComponentConfigs = {\n checkbox: CheckboxField,\n select: CustomField, // Temp change untill refactoring\n select_multi: SelectField,\n phone: PhoneNumberField,\n date: DatePickerField,\n radio: RadioGroupField,\n text: CustomField,\n }\n\n const fieldComponent = _get(fieldComponentConfigs, type, CustomField)\n return fieldComponent\n}\n","import './style.css'\n\nimport { CircularProgress, ThemeOptions } from '@mui/material'\nimport Backdrop from '@mui/material/Backdrop'\nimport Button from '@mui/material/Button'\nimport { createTheme, ThemeProvider } from '@mui/material/styles'\nimport { CSSProperties } from '@mui/styles'\nimport axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik, FormikHelpers, FormikProps, FormikValues } from 'formik'\nimport _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _includes from 'lodash/includes'\nimport _isEmpty from 'lodash/isEmpty'\nimport _isEqual from 'lodash/isEqual'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\nimport React, { FC, useEffect, useRef, useState } from 'react'\n\nimport {\n AttributesConfig,\n getCart,\n getCheckoutPageConfigs,\n getCountries,\n getProfileData,\n getStates,\n postOnCheckout,\n register,\n setCustomHeader,\n} from '../../api'\nimport { withCustomFields } from '../../hoc'\nimport { usePixel } from '../../hooks/usePixel'\nimport { IBillingInfoData } from '../../types'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n deleteCookieByName,\n getCookieByName,\n isBrowser,\n setLoggedUserData,\n} from '../../utils'\nimport { ErrorFocus } from '../../utils/formikErrorFocus'\nimport SnackbarAlert from '../common/SnackbarAlert'\nimport { ForgotPasswordModal } from '../forgotPasswordModal'\nimport { VerificationPendingModal } from '../idVerificationContainer/VerificationPendingModal'\nimport { LoginModal } from '../loginModal'\nimport { SignupModal } from '../signupModal'\nimport TimerWidget from '../timerWidget'\nimport {\n assingUniqueIds,\n createCheckoutDataBody,\n createRegisterFormData,\n getFieldComponent,\n getFieldLabel,\n getInitialValues,\n getValidateFunctions,\n ICheckoutBody,\n} from './utils'\n\nexport interface IBillingInfoPage {\n data?: IBillingInfoData[];\n ticketHoldersFields?: IBillingInfoData;\n handleSubmit?: (\n values: FormikValues,\n formikHelpers: FormikHelpers<FormikValues>,\n eventId: any,\n res: any\n ) => void;\n onRegisterSuccess?: (value: any) => void;\n onRegisterError?: (e: AxiosError, email: string) => void;\n onSubmitError?: (e: AxiosError) => void;\n onGetCartSuccess?: (res: any) => void;\n onGetCartError?: (e: AxiosError) => void;\n onGetCountriesSuccess?: (res: any) => void;\n onGetCountriesError?: (e: AxiosError) => void;\n onGetStatesSuccess?: (res: any) => void;\n onGetStatesError?: (e: AxiosError) => void;\n onGetProfileDataSuccess?: (res: any) => void;\n onGetProfileDataError?: (e: AxiosError) => void;\n onGetCheckoutConfigsSuccess?: (res: any) => void;\n onGetCheckoutConfigsError?: (e: AxiosError) => void;\n onLogin?: () => void;\n onLoginSuccess?: () => void;\n onErrorClose?: () => void;\n initialValues?: FormikValues;\n buttonName?: string;\n theme?: 'light' | 'dark';\n isLoggedIn?: boolean;\n accountInfoTitle?: string | JSX.Element;\n hideLogo?: boolean;\n themeOptions?: ThemeOptions & {\n input?: CSSProperties;\n checkbox?: CSSProperties;\n };\n hideErrorsAlertSection?: boolean;\n onSkipBillingPage: (data: any) => void;\n skipPage?: boolean;\n canSkipHolderNames?: boolean;\n shouldFetchCountries?: boolean;\n onForgotPasswordSuccess?: (res: any) => void;\n onForgotPasswordError?: (e: AxiosError) => void;\n onCountdownFinish?: () => void;\n enableTimer?: boolean;\n logo?: string;\n showForgotPasswordButton?: boolean;\n showSignUpButton?: boolean;\n brandOptIn?: boolean;\n showPoweredByImage?: boolean;\n isCountryCodeEditable?: boolean;\n customFieldsOrderKeys?: string[];\n customFieldsTicketHolderKeys?: string[];\n onPendingVerification?: () => void;\n}\n\nconst LogicRunner: FC<{\n brandOptIn?: boolean;\n values: any;\n setStates: React.Dispatch<any>;\n setFieldValue: any;\n setValues: any;\n setUserValues: any;\n onGetStatesSuccess: any;\n onGetStatesError: any;\n shouldFetchCountries: boolean;\n}> = ({\n values,\n setStates,\n setFieldValue,\n setValues,\n setUserValues,\n onGetStatesSuccess,\n onGetStatesError,\n shouldFetchCountries,\n brandOptIn,\n}) => {\n const prevCountry = useRef(values.country)\n useEffect(() => {\n const fetchStates = async () => {\n try {\n const res = await getStates(values.country)\n const mappedStates = _map(res.data, (item, key) => ({\n label: item,\n value: key,\n }))\n setStates(mappedStates)\n if (prevCountry.current !== values.country) {\n const stateExists = mappedStates.find(\n state => state.value === values.state\n )?.value\n setFieldValue('state', stateExists ?? mappedStates[0]?.value ?? '')\n prevCountry.current = values.country\n }\n onGetStatesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetStatesError(e)\n }\n }\n }\n shouldFetchCountries && fetchStates()\n }, [values.country, setStates, setFieldValue])\n const userDataEncoded = isBrowser ? window.localStorage.getItem('user_data') : ''\n useEffect(() => {\n // set user data from local storage\n const getStoredUserData = () => {\n if (isBrowser) {\n if (userDataEncoded) {\n try {\n const parsedData = JSON.parse(userDataEncoded)\n const mappedValues = {\n firstName: parsedData?.first_name || parsedData?.firstName || '',\n lastName: parsedData?.last_name || parsedData?.lastName || '',\n email: parsedData?.email || '',\n phone: parsedData?.phone || '',\n confirmEmail: parsedData?.email || '',\n state: parsedData?.state || '',\n street_address: parsedData?.street_address || '',\n country: parsedData?.country || '1',\n zip: parsedData?.zip || '',\n brand_opt_in: brandOptIn ? brandOptIn : parsedData?.brand_opt_in || false,\n city: parsedData?.city || '',\n confirmPassword: '',\n password: '',\n 'holderFirstName-0': parsedData?.first_name || parsedData?.firstName || '',\n 'holderLastName-0': parsedData?.last_name || parsedData?.lastName || '',\n 'holderEmail-0': parsedData?.email || '',\n }\n\n const extraDataJSON = window.localStorage.getItem('extraData')\n const extraData = extraDataJSON ? JSON.parse(extraDataJSON) : null\n\n setValues({ ...values, ...mappedValues, ...(extraData ?? {}) })\n setUserValues(mappedValues)\n } catch (e) {}\n }\n }\n }\n getStoredUserData()\n }, [userDataEncoded, setValues, setUserValues])\n return null\n }\n\nconst BillingInfoContainer = React.memo(\n ({\n data = [],\n ticketHoldersFields = {\n id: 1,\n fields: [],\n },\n initialValues = {},\n buttonName = 'Submit',\n handleSubmit = _identity,\n theme = 'light',\n onRegisterSuccess = _identity,\n onRegisterError = _identity,\n onSubmitError = _identity,\n onGetCartSuccess = _identity,\n onGetCartError = _identity,\n onGetCountriesSuccess = _identity,\n onGetCountriesError = _identity,\n onGetStatesSuccess = _identity,\n onGetStatesError = _identity,\n onGetProfileDataSuccess = _identity,\n onGetProfileDataError = _identity,\n onLogin,\n onLoginSuccess = _identity,\n isLoggedIn: pIsLoggedIn = false,\n accountInfoTitle = '',\n hideLogo,\n themeOptions,\n onErrorClose = _identity,\n hideErrorsAlertSection = false,\n onSkipBillingPage = _identity,\n skipPage = false,\n canSkipHolderNames = false,\n onForgotPasswordSuccess = _identity,\n onForgotPasswordError = _identity,\n shouldFetchCountries = true,\n onCountdownFinish = _identity,\n enableTimer = false,\n logo,\n showForgotPasswordButton = false,\n showSignUpButton = false,\n brandOptIn = false,\n showPoweredByImage = false,\n customFieldsOrderKeys,\n customFieldsTicketHolderKeys,\n isCountryCodeEditable = true,\n onPendingVerification = _identity,\n onGetCheckoutConfigsSuccess = _identity,\n onGetCheckoutConfigsError = _identity,\n }: IBillingInfoPage) => {\n const [extraData, setExtraData] = useState(null)\n const [isConfigLoading, setIsConfigLoading] = useState(true)\n const [configs, setConfigs] = useState<null | AttributesConfig>(null)\n const [isNewUser, setIsNewUser] = useState(false)\n const themeMui = createTheme(themeOptions)\n\n useEffect(() => {\n if (isBrowser) {\n const extraData = window.localStorage.getItem('extraData')\n if (extraData) {\n setExtraData(JSON.parse(extraData))\n }\n }\n getCheckoutPageConfigs()\n .then(data => {\n if (data?.data?.attributes) {\n setConfigs(data.data.attributes)\n setIsConfigLoading(false)\n }\n onGetCheckoutConfigsSuccess(data)\n })\n .catch(e => {\n setIsConfigLoading(false)\n onGetCheckoutConfigsError(e)\n })\n }, [isBrowser])\n\n const defaultCountry = isBrowser ? window.localStorage.getItem('eventCountry') : ''\n const userData =\n isBrowser && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n const [dataWithUniqueIds, setDataWithUniqueIds] = useState<IBillingInfoData[]>(\n assingUniqueIds(data)\n )\n const xtfCookie = getCookieByName('X-TF-ECOMMERCE')\n const [isLoggedIn, setIsLoggedIn] = useState(!!(pIsLoggedIn || xtfCookie))\n const [cartInfoData, setCartInfo] = useState<any>({})\n const [countries, setCountries] = useState<any>([])\n const [states, setStates] = useState<any>([])\n const [showModalLogin, setShowModalLogin] = useState(false)\n const [alreadyHasUser, setAlreadyHasUser] = useState(false)\n const [userExpired, setUserExpired] = useState(false)\n const [showModalSignup, setShowModalSignup] = useState(false)\n const [showModalForgotPassword, setShowModalForgotPassword] = useState(false)\n const [ticketsQuantity, setTicketsQuantity] = useState<string[]>([])\n const [userValues, setUserValues] = useState<any>({\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n confirmEmail: '',\n holderFirstName: '',\n holderLastName: '',\n holderAge: '',\n city: '',\n country: '',\n street_address: '',\n state: '',\n zip: '',\n })\n const [loading, setLoading] = useState(true)\n const [cardLoading, setCardLoading] = useState(false)\n const [isCountriesLoading, setIsCountriesLoading] = useState(true)\n const [error, setError] = useState(null)\n const [phoneValidationIsLoading, setPhoneValidationIsLoading] = useState(false)\n const emailLogged = _get(userData, 'email', '') || _get(userValues, 'email', '')\n const firstNameLogged =\n _get(userData, 'first_name', '') || _get(userValues, 'first_name', '')\n const lastNameLogged =\n _get(userData, 'last_name', '') || _get(userValues, 'last_name', '')\n const showDOB = configs?.age_required\n const showTicketHolders = configs?.names_required\n const eventId = configs?.event_id\n const optedInFieldValue: boolean = brandOptIn\n ? brandOptIn\n : _get(cartInfoData, 'optedIn', false)\n const ttfOptIn = Boolean(_get(cartInfoData, 'ttfOptIn', false))\n const isTable = Boolean(_get(cartInfoData, 'is_table', false))\n const hideTtfOptIn: boolean = _get(cartInfoData, 'hide_ttf_opt_in', true)\n const expirationTime = _get(cartInfoData, 'expiresAt')\n const flagRequirePhone = configs?.phone_required\n const collectMandatoryWalletAddress = configs?.collect_mandatory_wallet_address\n const collectOptionalWalletAddress = configs?.collect_optional_wallet_address\n const flagFreeTicket = configs?.free_ticket\n const hidePhoneField = configs?.hide_phone_field\n const hideWalletAddressField =\n !collectOptionalWalletAddress && !collectMandatoryWalletAddress\n const collectMandatoryCompany = configs?.collect_mandatory_company\n const collectOptionalCompany = configs?.collect_optional_company\n const hideCompanyField = !collectOptionalCompany && !collectMandatoryCompany\n const collectMandatoryJobTitle = configs?.collect_mandatory_job_title\n const collectOptionalJobTitle = configs?.collect_optional_job_title\n const hideJobTitleField = !collectMandatoryJobTitle && !collectOptionalJobTitle\n const collectMandatoryInstagram = configs?.collect_mandatory_instagram\n const collectOptionalInstagram = configs?.collect_optional_instagram\n const hideInstagramField = !collectMandatoryInstagram && !collectOptionalInstagram\n const collectMandatoryBusinessCategory = configs?.collect_mandatory_business_category\n const collectOptionalBusinessCategory = configs?.collect_optional_business_category\n const hideBusinessCategoryField =\n !collectMandatoryBusinessCategory && !collectOptionalBusinessCategory\n\n const [pendingVerificationMessage, setPendingVerificationMessage] = useState()\n\n // Get prevProps\n const prevData = useRef(data)\n\n const addAddOnsInAttributes = (checkoutBody: any) => {\n const selectedAddOns = window.localStorage.getItem('add_ons') || '{}'\n checkoutBody.attributes.add_ons = JSON.parse(selectedAddOns)\n }\n\n useEffect(() => {\n const hasUniqueId = _get(dataWithUniqueIds, '[0].uniqueId')\n const isEqualData = _isEqual(prevData.current, data)\n if (!hasUniqueId || !isEqualData) {\n setDataWithUniqueIds(assingUniqueIds(data))\n if (!isEqualData) {\n prevData.current = data\n }\n }\n }, [dataWithUniqueIds, data])\n\n const getQuantity = (cart: any = []) => {\n let qty = 0\n cart.forEach((item: any) => {\n qty += +item.quantity\n })\n return qty\n }\n\n useEffect(() => {\n if (pIsLoggedIn !== isLoggedIn || xtfCookie) {\n setIsLoggedIn(!!(pIsLoggedIn || xtfCookie))\n }\n }, [pIsLoggedIn, isLoggedIn, xtfCookie])\n\n //just once\n useEffect(() => {\n // fetch countries data\n const fetchCountries = async () => {\n try {\n const res = await getCountries()\n setCustomHeader(res)\n setCountries(res.data)\n setIsCountriesLoading(false)\n onGetCountriesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetCountriesError(e)\n }\n setIsCountriesLoading(false)\n }\n }\n shouldFetchCountries && fetchCountries()\n fetchCart()\n\n return () => {\n isBrowser && localStorage.removeItem('selectedTicketsQuantity')\n }\n }, [])\n\n // fetch cart data\n const fetchCart = async () => {\n try {\n setCardLoading(true)\n const res = await getCart()\n setCustomHeader(res)\n const cartInfo = res.data.attributes\n setCartInfo(cartInfo)\n const { cart = [] } = cartInfo\n setTicketsQuantity(new Array(getQuantity(cart)).fill(null).map(() => nanoid()))\n onGetCartSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetCartError(e)\n }\n } finally {\n setCardLoading(false)\n }\n }\n\n // fetch user data\n const fetchUserData = async () => {\n try {\n if (isLoggedIn) {\n const userDataResponse = await getProfileData()\n const profileSpecifiedData = _get(userDataResponse, 'data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n setUserValues({\n ...profileDataObj,\n firstName: profileDataObj.first_name,\n lastName: profileDataObj.last_name,\n })\n window.localStorage.setItem('user_data', JSON.stringify(profileDataObj))\n onGetProfileDataSuccess(userDataResponse.data)\n }\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n }\n }\n\n useEffect(() => {\n fetchUserData()\n fetchCart()\n }, [isLoggedIn])\n\n useEffect(() => {\n const collectPaymentData = async () => {\n if (\n skipPage &&\n !_isEmpty(ticketsQuantity) &&\n !showDOB &&\n !loading &&\n !isNewUser\n ) {\n setLoading(true)\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketsQuantity.length,\n userData\n )\n\n try {\n if (isBrowser) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const checkoutResponse = await postOnCheckout(checkoutBody, flagFreeTicket)\n removeReferralKey()\n onSkipBillingPage(checkoutResponse.data.attributes)\n setLoading(false)\n } catch (e) {\n onSubmitError(e)\n if (e.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(e.response?.data?.message)\n }\n }\n } else {\n setLoading(false)\n }\n }\n collectPaymentData()\n }, [skipPage, ticketsQuantity])\n\n const collectCheckoutBody = (\n values: Record<string, any>,\n profileData?: any\n ): Record<string, any> => {\n let checkoutBody = {} as ICheckoutBody\n\n // Auto collect ticket holders name when it was skipped optionally\n if (showDOB && !showTicketHolders && canSkipHolderNames) {\n checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketsQuantity.length,\n values,\n true,\n { emailLogged, firstNameLogged, lastNameLogged }\n )\n } else {\n checkoutBody = createCheckoutDataBody(\n ticketsQuantity.length,\n values,\n {\n emailLogged: emailLogged || profileData.email,\n firstNameLogged:\n firstNameLogged || profileData.first_name || profileData.firstName,\n lastNameLogged:\n lastNameLogged || profileData.last_name || profileData.lastName,\n },\n showDOB\n )\n }\n\n // Collect data_capture for Order Custom Fields\n const data_capture: Record<string, any> = {}\n _forEach(customFieldsOrderKeys, (key: string) => {\n data_capture[key] = values[key]\n\n // Delete from values list\n delete checkoutBody.attributes[key]\n })\n\n // Temp solution for hardcoded data capture values, to be deleted in the future\n const captureKeys = [\n 'businessCategory',\n 'company',\n 'instagram',\n 'jobTitle',\n 'wallet_address',\n ]\n\n captureKeys.forEach(key => {\n const path = `data_capture.${key}`\n const value = _get(values, path, '')\n\n if (value !== '') {\n data_capture[key] = value\n }\n\n const attributeKey = `data_capture[${key}]`\n delete checkoutBody.attributes?.[attributeKey]\n })\n\n // Collect data_capture for Ticket Holders Fields\n _forEach(checkoutBody.attributes.ticket_holders, (holder, holderIndex) => {\n const holderDataCapture: Record<string, any> = {}\n\n _forEach(customFieldsTicketHolderKeys, customFieldKey => {\n const customFieldHolderName = `${customFieldKey}-${holderIndex}`\n const customFieldHolderKey = values[customFieldHolderName] || ''\n holderDataCapture[customFieldKey] = customFieldHolderKey\n\n // Delete holder specific value from values list\n delete checkoutBody.attributes[customFieldHolderName]\n })\n\n // Assign Ticket Holder data_capture final value\n if (!_isEmpty(holderDataCapture)) {\n holder.ticket_data_capture = holderDataCapture\n }\n })\n\n return { attributes: { ...checkoutBody.attributes, data_capture } }\n }\n\n const removeReferralKey = () => {\n localStorage.removeItem('referral_key')\n }\n\n if (loading || (enableTimer && !expirationTime && isBrowser)) {\n if (expirationTime === 0) {\n // Redirect to homepage (countdown finished and browser reloaded case)\n window.location.href = '/'\n }\n }\n\n const selectedCountry =\n _find(countries, item => item.code.toLowerCase() === defaultCountry) || {}\n const initialCountry = selectedCountry.id || _get(userData, 'countryId', '') || '1'\n\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n usePixel(eventId || cartInfoData?.eventId, { page: 'billing', pageUrl })\n if (isTable) {\n dataWithUniqueIds[0].label = 'Get Your Tables'\n }\n return (\n <ThemeProvider theme={themeMui}>\n {(loading || cardLoading || isCountriesLoading || isConfigLoading) && (\n <Backdrop\n sx={{ color: '#fff', backgroundColor: '#000000bd', zIndex: 1205 }}\n open={true}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n )}\n {!!expirationTime && enableTimer && (\n <TimerWidget\n expires_at={expirationTime}\n onCountdownFinish={onCountdownFinish}\n />\n )}\n {!isCountriesLoading && !isConfigLoading && (\n <Formik\n initialValues={getInitialValues(\n dataWithUniqueIds,\n {\n country: initialCountry,\n state: _get(userData, 'stateId', '') || '1',\n brand_opt_in: optedInFieldValue,\n ttf_opt_in: ttfOptIn,\n data_capture: {\n instagram: _get(extraData, 'data_capture.instagram', ''),\n company: _get(extraData, 'data_capture.company', ''),\n businessCategory: _get(extraData, 'data_capture.businessCategory', ''),\n jobTitle: _get(extraData, 'data_capture.jobTitle', ''),\n },\n ...initialValues,\n },\n userValues,\n ticketHoldersFields,\n ticketsQuantity\n )}\n enableReinitialize={false}\n onSubmit={async (values, formikHelpers) => {\n try {\n if (isBrowser) {\n window.localStorage.setItem(\n 'extraData',\n JSON.stringify({\n data_capture: {\n instagram: _get(values, 'data_capture.instagram', ''),\n company: _get(values, 'data_capture.company', ''),\n businessCategory: _get(\n values,\n 'data_capture.businessCategory',\n ''\n ),\n jobTitle: _get(values, 'data_capture.jobTitle', ''),\n },\n })\n )\n }\n if (isLoggedIn) {\n const checkoutBody = collectCheckoutBody(values, userData)\n\n if (isBrowser) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const checkoutResponse = await postOnCheckout(\n checkoutBody,\n flagFreeTicket\n )\n removeReferralKey()\n // After checkout is successful recover updated profile and store it on local storage if needed\n if (isBrowser) {\n const updatedUserData = await getProfileData()\n const profileSpecifiedData = _get(updatedUserData, 'data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n }\n\n handleSubmit(\n values,\n formikHelpers as FormikHelpers<any>,\n eventId,\n checkoutResponse\n )\n return\n }\n const checkoutBodyForRegistration = createCheckoutDataBody(\n ticketsQuantity.length,\n values,\n { emailLogged, firstNameLogged, lastNameLogged },\n showDOB\n )\n const bodyFormData = createRegisterFormData(\n values,\n checkoutBodyForRegistration,\n flagFreeTicket\n )\n try {\n setLoading(true)\n const resRegister = await register(bodyFormData)\n const xtfCookie = _get(resRegister, 'headers.x-tf-ecommerce')\n const refreshToken = _get(resRegister, 'data.attributes.refresh_token')\n const userProfile = _get(resRegister, 'data.attributes.user_profile')\n\n setIsNewUser(true)\n onRegisterSuccess({\n xtfCookie,\n refreshToken,\n userProfile,\n })\n } catch (e) {\n setLoading(false)\n\n if (e.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(e.response?.data?.message)\n } else if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message\n if (_includes(error, 'You must be aged')) {\n formikHelpers.setFieldError('holderAge', error)\n }\n if (error?.password) {\n formikHelpers.setFieldError('password', error.password)\n formikHelpers.setFieldError('confirmPassword', error.password)\n }\n if (error?.email && !onLogin) {\n // False will stand for outside controll\n setAlreadyHasUser(true)\n setShowModalLogin(true)\n }\n\n if (\n _includes(error, 'The cart is expired') &&\n !hideErrorsAlertSection\n ) {\n setError(error)\n }\n\n onRegisterError(e, values.email)\n }\n return\n }\n const profileData = await getProfileData()\n const profileSpecifiedData = _get(profileData, 'data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (isBrowser) {\n window.localStorage.setItem('user_data', JSON.stringify(profileDataObj))\n }\n\n const checkoutBody = collectCheckoutBody(values, profileDataObj)\n\n if (isBrowser) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const checkoutResponse = await postOnCheckout(\n checkoutBody,\n flagFreeTicket\n )\n removeReferralKey()\n handleSubmit(\n values,\n formikHelpers as FormikHelpers<any>,\n eventId,\n checkoutResponse\n )\n } catch (e) {\n setLoading(false)\n if (e.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(e.response?.data?.message)\n } else if (axios.isAxiosError(e)) {\n if (\n e.response?.status === 401 ||\n e.response?.data?.error === 'invalid_token'\n ) {\n if (isBrowser) {\n window.localStorage.removeItem('user_data')\n setUserExpired(true)\n setShowModalLogin(true)\n setIsLoggedIn(false)\n setShowModalSignup(false)\n setShowModalForgotPassword(false)\n const event = new window.CustomEvent('tf-logout')\n deleteCookieByName('X-TF-ECOMMERCE')\n window.document.dispatchEvent(event)\n }\n }\n if (e.response?.data.message && !hideErrorsAlertSection) {\n setError(_get(e, 'response.data.message'))\n }\n onSubmitError(e)\n }\n } finally {\n setLoading(false)\n }\n }}\n >\n {(props: FormikProps<any>) => (\n <Form onSubmit={props.handleSubmit}>\n <ErrorFocus />\n <LogicRunner\n brandOptIn={brandOptIn}\n values={props.values}\n setStates={setStates}\n setFieldValue={props.setFieldValue}\n setValues={props.setValues}\n setUserValues={setUserValues}\n onGetStatesSuccess={onGetStatesSuccess}\n onGetStatesError={onGetStatesError}\n shouldFetchCountries={shouldFetchCountries}\n />\n <div className={`billing-info-container ${theme}`}>\n <SnackbarAlert\n type=\"error\"\n isOpen={!!error}\n message={error || ''}\n onClose={() => {\n setError(null)\n onErrorClose()\n }}\n />\n {!isLoggedIn && (\n <div className=\"account-actions-block\">\n <div className=\"action-item\">\n <div>{accountInfoTitle}</div>\n <div>Login & skip ahead:</div>\n </div>\n <div className=\"action-item login-block\">\n <button\n className=\"login-register-button\"\n type=\"button\"\n onClick={() => {\n // If outside login needed to skip package login functionallity\n if (onLogin) {\n onLogin()\n } else {\n setShowModalLogin(true)\n }\n }}\n >\n Login\n </button>\n {!hideLogo && (\n <div className=\"logo-image-container\">\n <img\n src={\n theme === 'dark'\n ? 'https://www.ticketfairy.com/resources/images/logo-ttf.svg'\n : 'https://www.ticketfairy.com/resources/images/logo-ttf-black.svg'\n }\n alt=\"nodata\"\n />\n </div>\n )}\n </div>\n </div>\n )}\n {!cardLoading &&\n _map(dataWithUniqueIds, item => {\n const { label, labelClassName, fields } = item\n return (\n <React.Fragment key={item.uniqueId}>\n <p className={labelClassName}>{label}</p>\n {_map(fields, group => {\n const { groupClassname, groupItems } = group\n return (\n <React.Fragment key={group.uniqueId}>\n <div className={groupClassname}>\n {_map(\n groupItems.filter(el => {\n if (el.name === 'holderAge' && !showDOB) {\n return false\n }\n if (el.name === 'ttf_opt_in' && hideTtfOptIn) {\n return false\n }\n if (el.name === 'phone') {\n if (!hidePhoneField) {\n el.required = flagRequirePhone\n } else {\n return false\n }\n }\n if (el.name === 'data_capture[wallet_address]') {\n if (collectMandatoryWalletAddress) {\n el.required = true\n }\n }\n if (el.name === 'data_capture[jobTitle]') {\n if (collectMandatoryJobTitle) {\n el.required = true\n }\n }\n if (el.name === 'data_capture[businessCategory]') {\n if (collectMandatoryBusinessCategory) {\n el.required = true\n }\n }\n if (el.name === 'data_capture[company]') {\n if (collectMandatoryCompany) {\n el.required = true\n }\n }\n if (el.name === 'data_capture[instagram]') {\n if (collectMandatoryInstagram) {\n el.required = true\n }\n }\n if (\n [\n 'street_address',\n 'country',\n 'state',\n 'city',\n ].includes(el.name)\n ) {\n if (flagFreeTicket) {\n el.required = false\n return false\n }\n }\n if (\n hideWalletAddressField &&\n (el.name === 'wallet-address-info' ||\n el.name === 'data_capture[wallet_address]')\n ) {\n return false\n }\n if (\n hideJobTitleField &&\n el.name === 'data_capture[jobTitle]'\n ) {\n return false\n }\n if (\n hideBusinessCategoryField &&\n el.name === 'data_capture[businessCategory]'\n ) {\n return false\n }\n if (\n hideCompanyField &&\n el.name === 'data_capture[company]'\n ) {\n return false\n }\n if (\n hideInstagramField &&\n (el.name === 'data_capture[instagram]' ||\n el.name === 'instagram-info')\n ) {\n return false\n }\n return true\n }),\n element =>\n [\n 'password',\n 'confirmPassword',\n 'password-info',\n ].includes(element.name) && isLoggedIn ? null : (\n <React.Fragment key={element.uniqueId}>\n <div\n className={`${element.className} ${\n props?.errors[element.name] || ''\n }`}\n >\n {element.component ? (\n element.component\n ) : (\n <Field\n {...element}\n type={\n element.type === 'radio' ||\n element.type === 'checkbox'\n ? undefined\n : element.type\n }\n setPhoneValidationIsLoading={\n element.type === 'phone'\n ? setPhoneValidationIsLoading\n : undefined\n }\n label={getFieldLabel(element, configs)}\n validate={getValidateFunctions(\n element,\n states,\n props.values,\n props.errors\n )}\n setFieldValue={props.setFieldValue}\n onBlur={props.handleBlur}\n component={getFieldComponent(element)}\n selectOptions={\n element.name === 'country'\n ? _map(countries, item => ({\n value: item.id,\n label: item.name,\n }))\n : element.name === 'state'\n ? [\n {\n label: element.label,\n value: '',\n disabled: true,\n },\n ...states,\n ]\n : element.selectOptions || []\n }\n theme={theme}\n defaultCountry={\n defaultCountry || element.defaultCountry\n }\n dateFormat={element.format}\n isCountryCodeEditable={\n isCountryCodeEditable\n }\n />\n )}\n </div>\n </React.Fragment>\n )\n )}\n </div>\n </React.Fragment>\n )\n })}\n </React.Fragment>\n )\n })}\n {!_isEmpty(ticketHoldersFields.fields) && (\n <div className=\"ticket-holders-fields\">\n <h2>{ticketHoldersFields.label}</h2>\n {_map(ticketsQuantity, (_item, index) => (\n <div key={_item}>\n <h5>Ticket {index + 1}</h5>\n {_map(ticketHoldersFields.fields, group => {\n const { id, groupClassname, groupItems } = group\n return (\n <div key={id}>\n <div className={groupClassname}>\n {_map(groupItems, element => (\n <div className={element.className} key={element.name}>\n <Field\n {...element}\n type={\n element.type === 'radio' ||\n element.type === 'checkbox'\n ? undefined\n : element.type\n }\n name={`${element.name}-${index}`}\n label={getFieldLabel(element, configs)}\n component={getFieldComponent(element)}\n validate={getValidateFunctions(\n element,\n states,\n props.values,\n props.errors\n )}\n setPhoneValidationIsLoading={\n setPhoneValidationIsLoading\n }\n defaultCountry={\n defaultCountry || element.defaultCountry\n }\n isCountryCodeEditable={isCountryCodeEditable}\n />\n </div>\n ))}\n </div>\n </div>\n )\n })}\n </div>\n ))}\n </div>\n )}\n <div className=\"button-container\">\n <Button\n type=\"submit\"\n variant=\"contained\"\n className=\"login-register-button\"\n disabled={props.isSubmitting || phoneValidationIsLoading}\n >\n {props.isSubmitting ? <CircularProgress size={26} /> : buttonName}\n </Button>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n )}\n {showModalLogin && (\n <LoginModal\n logo={logo}\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={() => {\n setShowModalLogin(false)\n setUserExpired(false)\n onLoginSuccess()\n }}\n alreadyHasUser={alreadyHasUser}\n userExpired={userExpired}\n onGetProfileDataSuccess={(data: any) => {\n fetchCart()\n onGetProfileDataSuccess(data)\n }}\n onGetProfileDataError={onGetProfileDataError}\n showSignUpButton={showSignUpButton}\n showForgotPasswordButton={showForgotPasswordButton}\n onForgotPassword={() => {\n setShowModalLogin(false)\n setShowModalForgotPassword(true)\n }}\n onSignup={() => {\n setShowModalLogin(false)\n setShowModalSignup(true)\n }}\n showPoweredByImage={showPoweredByImage}\n />\n )}\n {showModalSignup && (\n <SignupModal\n onClose={() => {\n setShowModalSignup(false)\n }}\n onLogin={() => {\n setShowModalSignup(false)\n setShowModalLogin(true)\n }}\n onRegisterSuccess={onRegisterSuccess}\n onRegisterError={onRegisterError}\n showPoweredByImage={showPoweredByImage}\n />\n )}\n {showModalForgotPassword && (\n <ForgotPasswordModal\n onClose={() => {\n setShowModalForgotPassword(false)\n }}\n onLoginButtonClick={() => {\n setShowModalForgotPassword(false)\n setShowModalLogin(true)\n }}\n onForgotPasswordSuccess={onForgotPasswordSuccess}\n onForgotPasswordError={onForgotPasswordError}\n showPoweredByImage={showPoweredByImage}\n />\n )}\n <VerificationPendingModal\n message={pendingVerificationMessage}\n onClose={() => {\n onPendingVerification()\n }}\n />\n </ThemeProvider>\n )\n }\n)\n\nconst WithCustomFieldsBillingInfoContainer = withCustomFields(BillingInfoContainer)\n\nexport { WithCustomFieldsBillingInfoContainer as BillingInfoContainer }\n","export const currencyNormalizerCreator = (\n value: string | number,\n currency: string\n) => (!value ? '' : `${getCurrencySymbolByCurrency(currency)} ${value}`)\n\nexport const createFixedFloatNormalizer = (fixedValue: number) => (\n value: string | number\n) => (value || `${value}` === '0' ? (+value).toFixed(fixedValue) : '')\n\nexport const getCurrencySymbolByCurrency = (currency = '') => {\n switch (currency) {\n case 'GBP':\n return '£'\n case 'EUR':\n return '€'\n case 'INR':\n return '₹'\n case 'JMD':\n return 'J$'\n case 'NZD':\n return 'NZ$'\n case 'MYR':\n return 'RM'\n case 'MXN':\n return 'Mex$'\n case 'SGD':\n return 'S$'\n case 'AUD':\n return 'A$'\n case 'ZAR':\n return 'R'\n case 'ke':\n return 'Ksh'\n case 'TRY':\n return '₺'\n case 'CAD':\n return 'CA$'\n case 'THB':\n return '฿'\n case 'ISK':\n return 'Kr'\n case 'SEK':\n return 'kr'\n default:\n return 'US$'\n }\n}\n\nexport const removePlusSign = (string = '') => string.replace('+', '')\n","import { StripeError } from '@stripe/stripe-js'\n\ntype stripeErrorReason = 'PAYMENT_ALREADY_CONFIRMED'\n\ninterface IAdaptedStripeError extends StripeError {\n isStripeError: boolean;\n errorReason?: stripeErrorReason;\n}\n\nexport const adaptStripeError = (error: StripeError): IAdaptedStripeError => {\n const adaptedError = { ...error, isStripeError: true }\n switch (error.code) {\n case 'payment_intent_unexpected_state':\n if (error?.payment_intent?.status === 'succeeded') {\n return {\n ...adaptedError,\n errorReason: 'PAYMENT_ALREADY_CONFIRMED',\n message:\n 'You cannot confirm this PaymentIntent because it has already succeeded after being previously confirmed.',\n }\n }\n return { ...adaptedError }\n default:\n return adaptedError\n }\n}\n","import Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Modal from '@mui/material/Modal'\nimport _identity from 'lodash/identity'\nimport React, { FC } from 'react'\n\ninterface Props {\n message: string;\n loading?: boolean;\n hideCancelBtn?: boolean;\n onClose?: () => void;\n onConfirm?: () => void;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto',\n}\n\nconst ConfirmModal: FC<Props> = ({\n message = '',\n loading = false,\n hideCancelBtn = false,\n onClose = _identity,\n onConfirm = _identity,\n}) => (\n <Modal\n open={true}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"confirm-modal\"\n >\n <Box style={style}>\n <p>{message}</p>\n <div className=\"footer\">\n {!hideCancelBtn && (\n <Button onClick={onClose} disabled={loading}>\n Cancel\n </Button>\n )}\n <Button onClick={onConfirm}>\n {loading ? <CircularProgress size=\"22px\" /> : 'OK'}\n </Button>\n </div>\n </Box>\n </Modal>\n)\n\nexport default ConfirmModal\n","import './style.css'\n\nimport CircularProgress from '@mui/material/CircularProgress'\nimport {\n CardCvcElement,\n CardExpiryElement,\n CardNumberElement,\n useElements,\n useStripe,\n} from '@stripe/react-stripe-js'\nimport { StripeCardNumberElementOptions } from '@stripe/stripe-js'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useEffect, useState } from 'react'\n\nimport { refreshSeatReservation } from '../../api'\nimport { getCurrencySymbolByCurrency } from '../../normalizers'\nimport { getQueryVariable } from '../../utils'\nimport { adaptStripeError } from '../../utils/adaptStripeErrors'\nimport { Checkbox } from '../common/index'\nimport ConfirmModal from '../confirmModal'\n\nconst options: StripeCardNumberElementOptions = {\n style: {\n base: {\n backgroundColor: '#000',\n fontSize: '18px',\n color: '#ffffff',\n letterSpacing: '1px',\n ':-webkit-autofill': {\n color: '#ffffff',\n },\n '::placeholder': {\n color: 'rgba(201, 201, 201, 0.5)',\n },\n },\n invalid: {\n color: '#E53935',\n },\n },\n}\n\nexport interface ICheckoutForm {\n total: string | number;\n currency: string;\n onSubmit: (error: any, data?: object) => Promise<any>;\n error?: string | null;\n stripeCardOptions?: StripeCardNumberElementOptions;\n stripe_client_secret: string;\n billing_info: { [key: string]: any };\n isLoading: any;\n handleSetLoading: (loading: any) => void;\n conditions: any;\n disableZipSection: boolean;\n paymentButtonText?: string;\n forPaymentPlan?: boolean;\n orderId?: string;\n hasSeatMapActions: boolean;\n}\n\ninterface AddressTypes {\n city: string;\n line1: string;\n state: string;\n postal_code?: string;\n}\n\nconst CheckoutForm = ({\n total,\n orderId,\n onSubmit = _identity,\n stripeCardOptions = {},\n error = null,\n stripe_client_secret,\n currency,\n billing_info,\n isLoading = false,\n handleSetLoading = _identity,\n conditions = [],\n disableZipSection,\n paymentButtonText,\n forPaymentPlan = false,\n hasSeatMapActions = false,\n}: ICheckoutForm) => {\n const stripe = useStripe()\n const elements = useElements()\n const [postalCode, setPostalCode] = useState<any>('')\n const [stripeError, setStripeError] = useState<any>(null)\n const [checkboxes, setCheckboxes] = useState<any>([])\n const [allowSubmit, setAllowSubmit] = useState(false)\n const eventId = getQueryVariable('event_id') || ''\n\n const handleSubmit = async (event: React.SyntheticEvent) => {\n setStripeError(null)\n try {\n event.preventDefault()\n\n if (!postalCode && !disableZipSection) {\n setStripeError({ message: 'Please enter your zip code.' })\n handleSetLoading(false)\n return\n }\n\n if (!stripe || !elements) {\n // Stripe.js has not loaded yet. Make sure to disable\n // form submission until Stripe.js has loaded.\n handleSetLoading(false)\n return\n }\n\n const card = elements.getElement(CardNumberElement)\n\n const address: AddressTypes = {\n city: billing_info.city,\n line1: billing_info.street_address,\n state: billing_info.state,\n }\n\n if (!disableZipSection) {\n address.postal_code = postalCode\n }\n\n if (forPaymentPlan) {\n const setupResponse = await stripe.confirmCardSetup(stripe_client_secret, {\n payment_method: { card: card || { token: '' } },\n })\n onSubmit(null, { paymentMethodId: setupResponse.setupIntent?.payment_method })\n return\n }\n\n const paymentMethodReq = await stripe.createPaymentMethod({\n type: 'card',\n card: card || { token: '' },\n billing_details: {\n address,\n },\n })\n\n if (paymentMethodReq.error) {\n setStripeError(paymentMethodReq.error || null)\n handleSetLoading(false)\n return\n }\n\n handleSetLoading(true)\n const { error } = await stripe.confirmCardPayment(stripe_client_secret, {\n payment_method: paymentMethodReq.paymentMethod.id,\n })\n\n if (error) {\n setStripeError(adaptStripeError(error))\n hasSeatMapActions && (await refreshSeatReservation(eventId, orderId || ''))\n handleSetLoading(false)\n return\n }\n\n onSubmit(null)\n } catch (e) {\n onSubmit(e)\n }\n }\n\n const handleCheckboxes = (e: any) => {\n const checkbox = e.target\n const updatedCheckedState = checkboxes.map((item: any) => {\n const value = item.id === checkbox.name ? !item.checked : item.checked\n return {\n ...item,\n checked: value,\n }\n })\n setCheckboxes(updatedCheckedState)\n }\n\n const onChangePostalCode = (e: any) => {\n setPostalCode(e.target.value)\n }\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const userData = JSON.parse(window.localStorage.getItem('user_data') || '')\n const zipCode = _get(userData, 'zip', '')\n zipCode && setPostalCode(zipCode)\n }\n }, [])\n\n useEffect(() => {\n if (conditions.length) {\n setCheckboxes(conditions)\n }\n }, [conditions])\n\n useEffect(() => {\n if (checkboxes.length) {\n const allChecked = checkboxes.every((item: any) => item?.checked === true)\n setAllowSubmit(allChecked)\n } else {\n setAllowSubmit(true)\n }\n }, [checkboxes])\n\n const buttonIsDiabled = !stripe || !!error || isLoading || !allowSubmit\n return (\n <div className=\"stripe_payment_container\">\n {!!stripeError && (\n <ConfirmModal\n hideCancelBtn\n onConfirm={() => {\n setStripeError(null)\n onSubmit(stripeError)\n }}\n message={stripeError?.message}\n />\n )}\n <form onSubmit={handleSubmit}>\n <div className=\"card_form_inner\">\n <div className=\"card_number_element\">\n <span className=\"card_label_text\">Card number</span>\n <CardNumberElement\n options={{ ...options, ...stripeCardOptions }}\n onReady={_identity}\n onChange={_identity}\n onBlur={_identity}\n onFocus={_identity}\n />\n </div>\n <div className=\"elements\">\n <div className=\"expiration_element\">\n <span className=\"card_label_text\">Expiration date</span>\n <CardExpiryElement options={{ ...options, ...stripeCardOptions }} />\n </div>\n <div className=\"cvc_element\">\n <span className=\"card_label_text\">CVC</span>\n <CardCvcElement options={{ ...options, ...stripeCardOptions }} />\n </div>\n </div>\n {!disableZipSection && (\n <div className=\"zip_element\">\n <p className=\"card_label_text\">ZIP</p>\n <input\n type=\"text\"\n value={postalCode}\n onChange={onChangePostalCode}\n placeholder=\"ZIP\"\n />\n </div>\n )}\n </div>\n {checkboxes?.map((checkbox: any) => (\n <div className={'billing-info-container__singleField'} key={checkbox.id}>\n <div className=\"conditions-block\">\n <Checkbox\n name={checkbox.id}\n label={checkbox.text}\n required={true}\n onChange={handleCheckboxes}\n checked={checkbox.checked}\n />\n </div>\n </div>\n ))}\n <div\n className={`payment_button ${buttonIsDiabled ? 'disabled-payment-button' : ''}`}\n >\n <button disabled={buttonIsDiabled} type=\"submit\">\n {isLoading ? (\n <CircularProgress size={26} />\n ) : forPaymentPlan ? (\n 'Confirm Payment Plan'\n ) : (\n `${paymentButtonText ? paymentButtonText : 'Pay'\n } ${getCurrencySymbolByCurrency(currency)}${total}`\n )}\n </button>\n </div>\n </form>\n </div>\n )\n}\n\nexport default CheckoutForm\n","import React from 'react'\n\nimport { createFixedFloatNormalizer, currencyNormalizerCreator } from '../../normalizers'\nimport { IPaymentPlanConfig } from '../../types/payment-plan-configuration'\nimport { Checkbox } from '../common'\n\ninterface PaymentPlanSectionProps {\n paymentPlanConfig: IPaymentPlanConfig;\n currency: string;\n paymentPlanUseSavedCard: boolean;\n setPaymentPlanUseSavedCard: (value: boolean) => void;\n}\n\nexport const PaymentPlanSection = (props: PaymentPlanSectionProps) => {\n const {\n paymentPlanConfig,\n currency,\n paymentPlanUseSavedCard,\n setPaymentPlanUseSavedCard,\n } = props\n\n return (\n <div className=\"payment_plan\">\n <h2 className=\"payment_plan_title\">Payment Plan Terms</h2>\n <div className=\"payment_plan_block\">\n <div className=\"payment_plan_text\">\n By clicking on the “Confirm Payment Plan” button, you are starting your payment\n plan of{' '}\n <span className=\"payment_plan_highlight\">\n {paymentPlanConfig.total_installments}\n </span>{' '}\n payments of{' '}\n <span className=\"payment_plan_highlight\">\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.price_per_installment),\n currency\n )}\n </span>\n , which will be drawn from your account every {paymentPlanConfig.interval} days,\n with the first payment taken later today.\n </div>\n {paymentPlanConfig.has_admin_fee && (\n <div className=\"payment_plan_text\">\n This includes a non-refundable admin fee of{' '}\n <span className=\"payment_plan_highlight\">\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.admin_fee),\n currency\n )}\n </span>{' '}\n per payment.\n </div>\n )}\n {paymentPlanConfig.requires_deposit && (\n <div className=\"payment_plan_text\">\n You will also be charged a single, non-refundable deposit of{' '}\n <span className=\"payment_plan_highlight\">\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.deposit),\n currency\n )}\n </span>\n .\n </div>\n )}\n <div className=\"payment_plan_text payment_plan_note payment_plan_highlight\">\n NOTE: If today’s payment fails, your plan will not activate. Your tickets will\n not be issued until you complete your final payment.\n </div>\n {!paymentPlanConfig.non_refundable_type && (\n <div className=\"payment_plan_text\">\n If you do not complete your payments, your order will be canceled. Your{' '}\n <span className=\"payment_plan_highlight\">\n first payment of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.price_per_installment),\n currency\n )}\n </span>\n {paymentPlanConfig.has_admin_fee && (\n <>\n , plus the{' '}\n <span className=\"payment_plan_highlight\">\n non-refundable admin-fee of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.admin_fee),\n currency\n )}\n </span>\n </>\n )}{' '}\n will not be refunded.\n </div>\n )}\n {paymentPlanConfig.non_refundable_type === 'percent' && (\n <div className=\"payment_plan_text\">\n If you do not complete your payments, you will receive{' '}\n <span className=\"payment_plan_highlight\">\n {createFixedFloatNormalizer(0)(\n 100 - paymentPlanConfig.non_refundable_amount\n )}\n %\n </span>{' '}\n of your money back\n {paymentPlanConfig.requires_deposit && (\n <>\n , excluding your{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.deposit),\n currency\n )}{' '}\n deposit\n </>\n )}\n .\n </div>\n )}\n {paymentPlanConfig.non_refundable_type === 'fixed' && (\n <div className=\"payment_plan_text\">\n If you do not complete your payments, you will receive all your money back\n {paymentPlanConfig.non_refundable_amount && (\n <>\n except for the non-refundable amount of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.non_refundable_amount),\n currency\n )}\n {paymentPlanConfig.requires_deposit && (\n <>\n , excluding your{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.deposit),\n currency\n )}{' '}\n deposit\n </>\n )}\n </>\n )}\n .\n </div>\n )}\n {!!paymentPlanConfig.saved_card?.stripe_payment_method_id && (\n <>\n {paymentPlanUseSavedCard && (\n <div className=\"payment_plan_text\">\n {' '}\n Your payment will proceed with the card ending in ****{' '}\n <span className=\"payment_plan_highlight\">\n {'' + paymentPlanConfig.saved_card.last_4_digits}\n </span>\n </div>\n )}\n <div>\n <Checkbox\n label={<span className=\"payment_plan_toggle_label\">Use this card</span>}\n required={true}\n onChange={() => {\n setPaymentPlanUseSavedCard(!paymentPlanUseSavedCard)\n }}\n checked={paymentPlanUseSavedCard}\n />\n </div>\n </>\n )}\n </div>\n </div>\n )\n}\n","/* eslint-disable max-len */\nimport './style.css'\n\nimport { ThemeOptions } from '@mui/material'\nimport Alert from '@mui/material/Alert'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Container from '@mui/material/Container'\nimport { createTheme, ThemeProvider } from '@mui/material/styles'\nimport { CSSProperties } from '@mui/styles'\nimport { Elements } from '@stripe/react-stripe-js'\nimport {\n loadStripe,\n StripeCardNumberElementOptions,\n StripeConstructorOptions,\n StripeElementsOptions,\n} from '@stripe/stripe-js'\nimport { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\nimport React, { useEffect, useState } from 'react'\n\nimport {\n createPaymentPlan,\n getConditions,\n getPaymentData,\n handleFreeSuccess,\n handlePaymentSuccess,\n} from '../../api'\nimport { usePixel } from '../../hooks/usePixel'\nimport { createFixedFloatNormalizer, currencyNormalizerCreator } from '../../normalizers'\nimport { IAddOn, IOrderData, IPaymentField } from '../../types'\nimport {\n IPaymentPlanConfig,\n IPaymentPlanConfigCard,\n} from '../../types/payment-plan-configuration'\nimport { CONFIGS, isBrowser } from '../../utils'\nimport { getQueryVariable } from '../../utils/getQueryVariable'\nimport { Checkbox, Loader } from '../common/index'\nimport StripePayment from '../stripePayment'\nimport TimerWidget from '../timerWidget'\nimport { PaymentPlanSection } from './PaymentPlanSection'\n\nconst publishableKey = CONFIGS.STRIPE_PUBLISHABLE_KEY || ''\n\nconst getStripePromise = (reviewData: any) => {\n const stripePublishableKey =\n _get(reviewData, 'payment_method.stripe_publishable_key') || publishableKey\n const stripeAccount = _get(reviewData, 'payment_method.stripe_connected_account')\n\n const options: StripeConstructorOptions = {}\n if (stripeAccount) {\n options.stripeAccount = stripeAccount\n }\n\n return loadStripe(stripePublishableKey, options)\n}\nexport interface IPaymentPage {\n paymentFields: IPaymentField[];\n handlePayment: any;\n checkoutData: any;\n formTitle?: string;\n errorText?: string;\n onErrorClose?: () => void;\n onGetPaymentDataSuccess: (value: any) => void;\n onGetPaymentDataError: (value: AxiosError) => void;\n onPaymentError: (value: AxiosError, slug?: string) => void;\n stripeCardOptions?: StripeCardNumberElementOptions;\n disableZipSection: boolean;\n themeOptions?: ThemeOptions & {\n input?: CSSProperties;\n checkbox?: CSSProperties;\n };\n elementsOptions?: StripeElementsOptions;\n onCountdownFinish?: () => void;\n enableTimer?: boolean;\n enablePaymentPlan?: boolean;\n paymentButtonText?: string;\n paymentInfoLabel?: string;\n orderInfoLabel?: string;\n}\n\nconst initialPaymentPlanConfiguration: IPaymentPlanConfig = {\n requires_deposit: false,\n deposit: 0,\n interval: 0,\n non_refundable_amount: 0,\n non_refundable_type: null,\n has_admin_fee: false,\n admin_fee: 0,\n total_installments: 0,\n price_per_installment: 0,\n stripe_setup_intent_secret: '',\n total: 0,\n saved_card: {\n last_4_digits: null,\n stripe_payment_method_id: null,\n } as IPaymentPlanConfigCard,\n}\n\nconst initialOrderValues: IOrderData = {\n id: '',\n product_name: '',\n ticketType: '',\n quantity: '',\n price: '',\n total: '',\n currency: '',\n guest_count: '',\n pay_now: '',\n add_ons: [] as IAddOn[],\n}\n\nconst initialReviewValues = {\n order_details: {\n id: '',\n order_hash: '',\n },\n payment_method: {\n stripe_client_secret: '',\n stripe_payment_plan_enabled: false,\n stripe_payment_plan_configuration: {} as any,\n },\n billing_info: {},\n event_details: {\n flagSeatMapAllowed: false,\n slug: ''\n },\n}\n\nexport const PaymentContainer = ({\n paymentFields = [],\n handlePayment,\n formTitle = 'Get Your Tickets',\n errorText,\n checkoutData,\n onErrorClose = _identity,\n onGetPaymentDataSuccess = _identity,\n onGetPaymentDataError = _identity,\n onPaymentError = _identity,\n stripeCardOptions = {},\n disableZipSection = false,\n themeOptions,\n elementsOptions,\n onCountdownFinish = _identity,\n enableTimer = false,\n enablePaymentPlan = true,\n paymentButtonText,\n orderInfoLabel = 'Order Review',\n paymentInfoLabel = 'Order Confirmation',\n}: IPaymentPage) => {\n const [reviewData, setReviewData] = useState(initialReviewValues)\n const [orderData, setOrderData] = useState(initialOrderValues)\n const [error, setError] = useState(null)\n const [showPaymentPlanSection, setShowPaymentPlanSection] = useState(false)\n const [paymentIsLoading, setPaymentIsLoading] = useState(false)\n const [paymentDataIsLoading, setPaymentDataIsLoading] = useState(true)\n const [conditions, setConditions] = useState<{ id: string, text: string }[]>([])\n const [paymentPlanIsAvailable, setPaymentPlanIsAvailable] = useState(false)\n const [paymentPlanConfig, setPaymentPlanConfig] = useState(\n initialPaymentPlanConfiguration\n )\n const [paymentPlanUseSavedCard, setPaymentPlanUseSavedCard] = useState(true)\n const [currency, setCurrency] = useState('')\n\n const showFormTitle = Boolean(formTitle)\n const showErrorText = Boolean(errorText)\n\n const eventId =\n getQueryVariable('event_id') || _get(reviewData, 'cart[0].product_id') || ''\n const { hash, total } = checkoutData\n const isFreeTickets =\n (!Number(total) && !Number(orderData.total)) || !Number(orderData.pay_now)\n\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n usePixel(eventId, { page: 'review', pageUrl })\n\n useEffect(() => {\n const paymentMethod = reviewData.payment_method || {}\n const paymentPlanAvailable =\n paymentMethod.stripe_payment_plan_enabled && enablePaymentPlan\n setPaymentPlanIsAvailable(paymentPlanAvailable)\n\n if (paymentPlanAvailable) {\n const paymentPlanConfig =\n paymentMethod.stripe_payment_plan_configuration || initialPaymentPlanConfiguration\n setPaymentPlanConfig(paymentPlanConfig)\n setPaymentPlanUseSavedCard(!!paymentPlanConfig.saved_card?.stripe_payment_method_id)\n if (isBrowser) {\n const sessionData = window.localStorage.getItem('paymentConfiguration')\n const session = sessionData ? JSON.parse(sessionData) : {}\n if (!!session && session?.orderId == reviewData.order_details?.id) {\n setPaymentPlanUseSavedCard(session.paymentPlanUseSavedCard ?? false)\n setShowPaymentPlanSection(session.showPaymentPlanSection ?? false)\n }\n }\n }\n }, [enablePaymentPlan, reviewData])\n\n useEffect(() => {\n updateSessionInformation()\n }, [showPaymentPlanSection, paymentPlanUseSavedCard])\n\n useEffect(() => {\n (async () => {\n try {\n const paymentDataResponse = await getPaymentData(hash)\n if (paymentDataResponse.success) {\n const attributes = paymentDataResponse?.data?.attributes\n setReviewData(attributes)\n const { cart, order_details } = attributes\n const {\n tickets: [ticket],\n } = order_details\n\n const orderDataArray = _map(order_details.tickets, item => ({\n product_name: cart[0]?.product_name,\n ticketType: item?.name,\n quantity: item?.guest_count,\n price: item?.price,\n id: item.id,\n count: item?.quantity,\n }))\n\n const orderData = {\n id: order_details?.id,\n product_name: cart[0]?.product_name,\n ticketType: ticket?.name,\n quantity: ticket?.quantity,\n price: ticket?.price,\n total: order_details?.total,\n currency: order_details?.currency,\n add_ons: order_details?.add_ons || [],\n pay_now: order_details?.pay_now || '',\n guest_count: order_details?.guest_count || '',\n debt: order_details?.debt || null,\n tableTypes: orderDataArray,\n }\n setOrderData(orderData)\n setCurrency(order_details?.currency)\n onGetPaymentDataSuccess(paymentDataResponse.data)\n }\n } catch (e) {\n setError(_get(e, 'response.data.message'))\n onGetPaymentDataError(e.response)\n } finally {\n setPaymentDataIsLoading(false)\n }\n })()\n }, [checkoutData])\n\n //just once\n useEffect(() => {\n // fetch conditions data\n const fetchConditions = async () => {\n if (eventId) {\n const conditionsResponse = await getConditions(eventId)\n const conditionsInfo = conditionsResponse.data.attributes\n console.log(\n '🚀 ~ file: index.tsx:258 ~ fetchConditions ~ conditionsInfo:',\n conditionsResponse\n )\n setConditions(\n conditionsInfo\n ? conditionsInfo.map((item: { text: any }) => ({\n id: nanoid(),\n text: item.text,\n checked: false,\n }))\n : []\n )\n }\n }\n fetchConditions()\n }, [])\n\n // 1. get payment data ---> v1/order/${hash}/review/ done\n // 2. handle payment ---> v1/order/${orderHash}/pay/\n // 3. redirect to confirmation page\n const handlePaymentMiddleWare = async (error: any, data?: object) => {\n try {\n if (error) {\n throw error\n }\n const {\n order_details: { order_hash },\n } = reviewData\n\n let paymentSuccessResponse\n\n if (isFreeTickets) {\n paymentSuccessResponse = await handleFreeSuccess(order_hash)\n } else if (paymentPlanIsAvailable && showPaymentPlanSection) {\n paymentSuccessResponse = await createPaymentPlan(\n order_hash,\n _get(data, 'paymentMethodId', '')\n )\n } else {\n paymentSuccessResponse = await handlePaymentSuccess(order_hash)\n }\n\n if (paymentSuccessResponse.status === 200) {\n handlePayment(paymentSuccessResponse)\n setPaymentIsLoading(false)\n\n // clear seat-map related data from localStorage\n localStorage.removeItem('reservationData')\n localStorage.removeItem(`reservationStart-${eventId}`)\n localStorage.removeItem('ownReservations')\n localStorage.removeItem('tierId')\n\n if (isBrowser) {\n (window as any)?.dataLayer?.push({\n event: 'Purchase',\n orderValue: orderData.total,\n orderCurrency: orderData.currency,\n orderId: orderData.id,\n })\n }\n }\n } catch (e) {\n setError(_get(e, 'response.data.message'))\n setPaymentIsLoading(false)\n onPaymentError(e.response || e, reviewData.event_details.slug)\n }\n }\n\n const showPaymentForm = () => {\n let showPaymentForm = !isFreeTickets\n\n if (\n paymentPlanIsAvailable &&\n showPaymentPlanSection &&\n !!paymentPlanConfig.saved_card?.stripe_payment_method_id\n ) {\n showPaymentForm = !paymentPlanUseSavedCard\n }\n\n return showPaymentForm\n }\n const updateSessionInformation = () => {\n if (isBrowser && !!orderData?.id) {\n window.localStorage.setItem(\n 'paymentConfiguration',\n JSON.stringify({\n paymentPlanUseSavedCard,\n showPaymentPlanSection,\n orderId: orderData?.id,\n })\n )\n }\n }\n\n const themeMui = createTheme(themeOptions)\n const hasTableTypes = Boolean(Number(orderData.guest_count))\n const paymentFieldsData = hasTableTypes\n ? [\n {\n label: 'Event',\n id: 'product_name',\n },\n {\n label: '',\n id: 'tableTypes',\n },\n {\n label: 'Total (incl. fees, card processing and taxes)',\n id: 'total',\n normalizer: (value: string, currency: string) =>\n currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(parseFloat(value)),\n currency\n ),\n },\n {\n label: 'Pay Now',\n id: 'pay_now',\n normalizer: (value: string, currency: string) =>\n currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(parseFloat(value)),\n currency\n ),\n },\n {\n label: 'Pay On Check-in',\n id: 'debt',\n normalizer: (value: string, currency: string) =>\n currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(parseFloat(value)),\n currency\n ),\n },\n ]\n : paymentFields\n const isTable = orderData?.guest_count\n return (\n <ThemeProvider theme={themeMui}>\n <div className=\"payment_page\">\n {enableTimer && (\n <TimerWidget\n expires_at={_get(reviewData, 'expires_at', 0)}\n buyLoading={paymentIsLoading}\n onCountdownFinish={onCountdownFinish}\n />\n )}\n {error && (\n <Alert severity=\"error\" onClose={onErrorClose} variant=\"filled\">\n {error}\n </Alert>\n )}\n {paymentDataIsLoading && <Loader />}\n {!paymentDataIsLoading && (\n <Container maxWidth=\"md\">\n {showFormTitle && <h1>{isTable ? 'Get Your Tables' : formTitle}</h1>}\n <div className=\"order_info_text\">{orderInfoLabel}</div>\n <div\n className=\"order_info_section\"\n style={{ display: hasTableTypes ? 'block' : 'grid' }}\n >\n {_map(paymentFieldsData, field => {\n const { id, label, className = '', normalizer = _identity } = field\n let value = orderData[id as keyof IOrderData]\n let component = null\n\n if (field.id === 'add_ons' && _isEmpty(value)) {\n return false\n }\n\n if (\n field.id === 'total' &&\n paymentPlanIsAvailable &&\n showPaymentPlanSection\n ) {\n value = '' + paymentPlanConfig.total\n }\n\n if (field.id === 'tableTypes') {\n const valueArray = value as Array<any>\n\n component = (\n <div\n key={id}\n className=\"order_info_block\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {_map(valueArray, tableTypeItem => (\n <div\n key={tableTypeItem.id}\n style={{\n display: 'grid',\n gridTemplateColumns: '33% 33% 33%',\n gridColumnGap: '10%',\n }}\n >\n <div className=\"order_info_block\">\n <div className=\"order_info_title\">Table Type</div>\n <div className={`${className} order_info_text`}>\n {tableTypeItem.ticketType}\n </div>\n </div>\n <div className=\"order_info_block\">\n <div className=\"order_info_title\">Number of Tables</div>\n <div className={`${className} order_info_text`}>\n {tableTypeItem.count}\n </div>\n </div>\n <div className=\"order_info_block\">\n <div className=\"order_info_title\">Guest Count</div>\n <div className={`${className} order_info_text`}>\n {tableTypeItem.quantity}\n </div>\n </div>\n </div>\n ))}\n </div>\n )\n }\n\n return (\n component || (\n <div key={id} className=\"order_info_block\">\n <div className=\"order_info_title\">{label}</div>\n <div className={`${className} order_info_text`}>\n {typeof value === 'string' || typeof value === 'number'\n ? normalizer(value, currency)\n : _map(value, item => (\n <div key={item.id} className=\"add-on-container\">\n <span>{item.quantity}</span>\n <span className=\"add-on-x\">{' x '}</span>\n <span>\n {item.groupName ? item.groupName + ' - ' : ''}\n </span>\n <span>{item.name}</span>\n <span>{' - '}</span>\n <span>\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(parseFloat(item.price)),\n currency\n )}\n </span>\n <span className=\"add-on-each\">{' each'}</span>\n </div>\n ))}\n </div>\n </div>\n )\n )\n })}\n </div>\n {!isFreeTickets && paymentPlanIsAvailable && (\n <div className=\"payment_toggle\">\n <Checkbox\n label={\n <span className=\"payment_plan_toggle_label\">\n Click to checkout using Payment Plan\n </span>\n }\n required={true}\n onChange={(_: any) => {\n setShowPaymentPlanSection(!showPaymentPlanSection)\n }}\n checked={showPaymentPlanSection}\n />\n </div>\n )}\n {showPaymentPlanSection && (\n <PaymentPlanSection\n paymentPlanConfig={paymentPlanConfig}\n currency={currency}\n paymentPlanUseSavedCard={paymentPlanUseSavedCard}\n setPaymentPlanUseSavedCard={setPaymentPlanUseSavedCard}\n />\n )}\n {showPaymentForm() ? (\n <div className=\"payment_info\">\n <div className=\"payment_info_label\">{paymentInfoLabel}</div>\n {showErrorText && <p className=\"payment_info__error\">{errorText}</p>}\n <div>\n <Elements\n stripe={getStripePromise(reviewData)}\n options={elementsOptions}\n >\n <StripePayment\n stripe_client_secret={\n paymentPlanIsAvailable && showPaymentPlanSection\n ? paymentPlanConfig.stripe_setup_intent_secret\n : _get(reviewData, 'payment_method.stripe_client_secret')\n }\n hasSeatMapActions={reviewData.event_details.flagSeatMapAllowed}\n total={orderData.guest_count ? orderData.pay_now : orderData.total}\n onSubmit={handlePaymentMiddleWare}\n error={error}\n orderId={orderData.id}\n currency={orderData.currency}\n billing_info={reviewData.billing_info}\n isLoading={paymentIsLoading}\n handleSetLoading={value => setPaymentIsLoading(value)}\n conditions={conditions}\n stripeCardOptions={stripeCardOptions}\n disableZipSection={disableZipSection}\n paymentButtonText={paymentButtonText}\n forPaymentPlan={paymentPlanIsAvailable && showPaymentPlanSection}\n />\n </Elements>\n </div>\n </div>\n ) : (\n <div\n className={`payment_button ${\n paymentIsLoading ? 'disabled-payment-button' : ''\n }`}\n >\n <button\n disabled={paymentIsLoading}\n type=\"button\"\n onClick={() => {\n setPaymentIsLoading(true)\n let data\n\n if (\n paymentPlanIsAvailable &&\n showPaymentPlanSection &&\n paymentPlanUseSavedCard\n ) {\n data = {\n paymentMethodId:\n paymentPlanConfig.saved_card?.stripe_payment_method_id,\n }\n }\n\n handlePaymentMiddleWare(null, data)\n }}\n >\n {paymentIsLoading ? (\n <CircularProgress size={26} />\n ) : isFreeTickets ? (\n 'Complete Registration'\n ) : (\n 'Confirm Payment Plan'\n )}\n </button>\n </div>\n )}\n </Container>\n )}\n </div>\n </ThemeProvider>\n )\n}\n","export const getImage = (name: string = ''): any => {\n let image: any = ''\n\n if (!name.trim().length) {\n return image\n }\n\n if (process.env.NODE_ENV === 'production') {\n image = require(`./images/${name}`)\n return image.default\n }\n\n return image\n}\n","import _identity from 'lodash/identity'\nimport React from 'react'\nimport SVG from 'react-inlinesvg'\n\nimport { getImage } from '../../utils/getImage'\n\ninterface IShareButtonProps {\n url: string;\n disabled: boolean;\n children: Node;\n}\n\nexport const SpotifyIcon = () => <SVG src={getImage('spotify.svg')} />\n\nexport const InstagramIcon = () => <SVG src={getImage('instagram.svg')} />\n\nexport const SocialButton = (props: IShareButtonProps) => {\n const { children, url, disabled } = props\n\n const handleClick = () => {\n window.open(url)\n }\n\n return (\n <button\n className={`react-share__ShareButton ${disabled ? 'disabled-action' : ''}`}\n type=\"button\"\n onClick={!disabled ? handleClick : _identity}\n >\n {children}\n </button>\n )\n}\n","import {\n EmailIcon,\n EmailShareButton,\n FacebookIcon,\n FacebookMessengerIcon,\n FacebookMessengerShareButton,\n FacebookShareButton,\n HatenaIcon,\n HatenaShareButton,\n InstapaperIcon,\n InstapaperShareButton,\n LineIcon,\n LineShareButton,\n LinkedinIcon,\n LinkedinShareButton,\n LivejournalIcon,\n LivejournalShareButton,\n MailruIcon,\n MailruShareButton,\n OKIcon,\n OKShareButton,\n PinterestIcon,\n PinterestShareButton,\n PocketIcon,\n PocketShareButton,\n RedditIcon,\n RedditShareButton,\n TelegramIcon,\n TelegramShareButton,\n TumblrIcon,\n TumblrShareButton,\n TwitterIcon,\n TwitterShareButton,\n ViberIcon,\n ViberShareButton,\n VKIcon,\n VKShareButton,\n WeiboIcon,\n WeiboShareButton,\n WhatsappIcon,\n WhatsappShareButton,\n WorkplaceIcon,\n WorkplaceShareButton,\n} from 'react-share'\n\nimport { InstagramIcon, SocialButton, SpotifyIcon } from '../common/socials'\n\nconst config: any = {\n facebook: { component: FacebookShareButton, icon: FacebookIcon },\n messenger: {\n component: FacebookMessengerShareButton,\n icon: FacebookMessengerIcon,\n },\n twitter: { component: TwitterShareButton, icon: TwitterIcon },\n linkedin: { component: LinkedinShareButton, icon: LinkedinIcon },\n pinterest: { component: PinterestShareButton, icon: PinterestIcon },\n vk: { component: VKShareButton, icon: VKIcon },\n ok: { component: OKShareButton, icon: OKIcon },\n telegram: { component: TelegramShareButton, icon: TelegramIcon },\n whatsapp: { component: WhatsappShareButton, icon: WhatsappIcon },\n reddit: { component: RedditShareButton, icon: RedditIcon },\n tumblr: { component: TumblrShareButton, icon: TumblrIcon },\n mailru: { component: MailruShareButton, icon: MailruIcon },\n email: { component: EmailShareButton, icon: EmailIcon },\n livejournal: { component: LivejournalShareButton, icon: LivejournalIcon },\n viber: { component: ViberShareButton, icon: ViberIcon },\n workplace: { component: WorkplaceShareButton, icon: WorkplaceIcon },\n line: { component: LineShareButton, icon: LineIcon },\n pocket: { component: PocketShareButton, icon: PocketIcon },\n instapaper: { component: InstapaperShareButton, icon: InstapaperIcon },\n weibo: { component: WeiboShareButton, icon: WeiboIcon },\n hatena: { component: HatenaShareButton, icon: HatenaIcon },\n instagram: { component: SocialButton, icon: InstagramIcon },\n spotify: { component: SocialButton, icon: SpotifyIcon },\n}\n\nexport default function(key: string) {\n return config[key]\n}\n","import _identity from 'lodash/identity'\nimport React, { ReactElement } from 'react'\n\nimport { isValidNumber } from '../../utils/isValidNumber'\nimport config from './config'\nimport { IShareButton } from './index'\n\nconst SocialComponent = ({\n mainLabel,\n subLabel,\n platform,\n shareData,\n points,\n onAfterShare,\n alreadyApplied,\n oneTimeAction,\n}: IShareButton) => {\n const Component = config(platform)?.component\n const Icon = config(platform)?.icon\n const isActionDisabled = alreadyApplied && oneTimeAction\n return (\n <>\n {Component && (\n <Component {...shareData} disabled={isActionDisabled}>\n <div\n onKeyDown={_identity}\n onClick={!isActionDisabled ? onAfterShare : _identity}\n className={`social-media-sharing ${platform}`}\n >\n <div className=\"share-icon\">\n <Icon size={32} round />\n </div>\n <span className=\"share-text\">\n <span className=\"main-label\">{mainLabel} </span>\n <span className=\"sub-label\">{subLabel}</span>\n </span>\n {isValidNumber(points) && (\n <div className=\"share-points\">\n <span className=\"points-count\">{points}</span>\n <span className=\"points-text\">Points</span>\n </div>\n )}\n </div>\n </Component>\n )}\n </>\n )\n}\n\ninterface SocialButtonsTypes {\n shareLink: string;\n name: string;\n appId: string;\n showDefaultShareButtons: boolean;\n shareButtons: IShareButton[];\n titleText?: string;\n footerText?: string | ReactElement;\n clientLabel?: string;\n showReferralsInfoText?: boolean;\n onAfterShare?: (eventActionId: string | undefined) => void;\n}\n\nconst SocialButtons = ({\n showDefaultShareButtons,\n shareLink,\n name,\n appId,\n shareButtons,\n titleText = 'or use one of these convenient buttons:',\n footerText = (\n <p>\n We <strong>never</strong> post on Facebook without your permission!\n </p>\n ) as ReactElement,\n clientLabel,\n onAfterShare = _identity,\n showReferralsInfoText = false,\n}: SocialButtonsTypes) => (\n <>\n {titleText && <div className=\"convenient_buttons\">{titleText}</div>}\n <div className=\"social-media-btns\">\n {showDefaultShareButtons && (\n <>\n <SocialComponent\n mainLabel=\"Share on\"\n subLabel=\"Facebook\"\n platform=\"facebook\"\n shareData={{\n quote: name,\n url: shareLink,\n }}\n />\n <SocialComponent\n mainLabel=\"Tweet to your\"\n subLabel=\"Followers\"\n platform=\"twitter\"\n shareData={{\n title: name,\n url: shareLink,\n }}\n />\n <SocialComponent\n mainLabel=\"Message friends on\"\n subLabel=\"Facebook\"\n platform=\"messenger\"\n shareData={{\n appId,\n url: shareLink,\n }}\n />\n <SocialComponent\n mainLabel=\"Message friends on\"\n subLabel=\"Whatsapp\"\n platform=\"whatsapp\"\n shareData={{\n title: name,\n url: shareLink,\n }}\n />\n </>\n )}\n {shareButtons.map((shareButton: IShareButton, index: number) => (\n <SocialComponent\n onAfterShare={() => onAfterShare(shareButton.eventActionId)}\n key={index}\n {...shareButton}\n />\n ))}\n </div>\n {showDefaultShareButtons || shareButtons.length ? footerText : null}\n {(showReferralsInfoText || Boolean(clientLabel)) && (\n <p className=\"note-message\">\n <span>\n *Please note, only purchases made from a different{' '}\n {clientLabel || 'Ticket Fairy'} account can count towards your referrals\n </span>\n <span>\n {' '}\n so please make sure you ask your friends to buy their own tickets using their\n own {clientLabel || 'Ticket Fairy'} account!\n </span>\n </p>\n )}\n </>\n)\n\nexport default SocialButtons\n","import _isNumber from 'lodash/isNumber'\n\nexport const isValidNumber = (value?: number | string): boolean => {\n if (isNaN(Number(value))) {\n return false\n }\n return _isNumber(Number(value))\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from '../api/publicRequest'\n\nexport const getPreRegistrationInfluancers = async (\n data: IInfluancersRequestData\n): Promise<IInfluancersResponseData> => {\n const response: AxiosResponse<IInfluancersResponseData, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${data.eventId}/pre-registration/influencers`)\n return response.data\n}\n\nexport const getPreRegistrationShareOptions = async (\n data: IShareOptionsRequestData\n): Promise<IShareOptionsResponseData> => {\n const response: AxiosResponse<IShareOptionsResponseData, AxiosRequestConfig> =\n await publicRequest.get(`/v1/pre-registration/${data.hash}/confirmation-page`)\n return response.data\n}\n\nexport const submitShareAction = async (\n data: ISubmitShareActionRequestData\n): Promise<ISubmitShareActionResponseData> => {\n const { eventActionId, accessToken, hash } = data\n\n const response: AxiosResponse<ISubmitShareActionResponseData, AxiosRequestConfig> =\n await publicRequest.post(`/v1/pre-registration/${hash}/submit-action`, {\n data: {\n attributes: {\n phase: 'pre-registration',\n eventActionId: Number(eventActionId),\n accessToken,\n },\n },\n })\n return response.data\n}\n","import { useEffect, useRef, useState } from 'react'\n\nimport { getCookieByName } from '../utils'\n\nexport const useCookieListener = (\n key: string,\n handler: (value: string | null) => void\n) => {\n const getCookie = () => getCookieByName(key)\n const [intervalValue, setIntervalValue] = useState<NodeJS.Timeout>()\n const cookieRef = useRef<string>(getCookie())\n\n const handleCookieChange = () => {\n const currentCookie = getCookie()\n const prevCookie = cookieRef.current\n\n if (currentCookie !== prevCookie) {\n cookieRef.current = getCookie()\n handler(cookieRef.current)\n }\n }\n\n useEffect(() => {\n const interval = setInterval(handleCookieChange, 500)\n setIntervalValue(interval)\n\n return () => {\n intervalValue && clearInterval(intervalValue)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n","import React, { useEffect, useState } from 'react'\nimport moment from 'moment-timezone'\nimport './style.css'\n\ninterface CountdownTypes {\n startDate: string;\n timezone?: string;\n title?: string;\n message?: string;\n showMessage?: boolean;\n disableLeadingZero?: boolean;\n callback?: () => void;\n isLoggedIn?: boolean;\n}\n\nconst isTimeExpired = (startDate: string, timezone: string) => {\n return !moment(startDate).isAfter(moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss'))\n}\n\nfunction Countdown({\n startDate,\n timezone = moment.tz.guess(),\n title = '',\n message = '',\n showMessage = false,\n disableLeadingZero = false,\n callback = () => {},\n isLoggedIn\n}: CountdownTypes) {\n const [duration, setDuration] = useState('')\n const [timeExpired, setTimeExpired] = useState(false)\n\n useEffect(() => {\n setTimeExpired(isTimeExpired(startDate, timezone))\n }, [])\n\n useEffect(() => {\n let timer: any;\n\n if(!timeExpired) {\n timer = setInterval(() => {\n if(isTimeExpired(startDate, timezone)) {\n clearInterval(timer)\n setTimeExpired(true)\n callback()\n return\n }\n\n const currentDate = moment.tz(moment(), timezone).format('YYYY-MM-DD HH:mm:ss')\n const diffTime = moment(startDate).diff(currentDate)\n const duration = moment.duration(diffTime)\n const dateArr: any = {\n year: duration.years(),\n month: duration.months(),\n day: duration.days(),\n hour: duration.hours(),\n minute: duration.minutes(),\n second: duration.seconds(),\n }\n let timeLeft = ''\n \n for(let date in dateArr) {\n const unit = dateArr[date] === 1 ? date : date + 's'\n let val = dateArr[date]\n\n if (!disableLeadingZero && String(dateArr[date]).length === 1) {\n val = '0' + dateArr[date]\n }\n\n if(timeLeft) {\n timeLeft += `, ${val} ${unit}`\n } else if(dateArr[date]) {\n timeLeft += `${val} ${unit}`\n }\n }\n \n setDuration(timeLeft)\n }, 1000)\n }\n return () => {\n clearInterval(timer)\n }\n }, [timeExpired])\n\n return (\n <>\n {!timeExpired && duration && (\n <div className={`countdown ${!isLoggedIn ? 'countdown-on-bottom' : ''}`}>\n <div>\n <p className='title'>{title}</p>\n <p>{duration}</p>\n </div>\n {showMessage && <p className='message'>{message}</p>}\n </div>\n )}\n </>\n )\n}\n\nexport default Countdown\n","import './style.css'\n\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport { Field, Form, Formik } from 'formik'\nimport _find from 'lodash/find'\nimport React, { useState } from 'react'\n\nimport { addToWaitingList } from '../../api'\nimport { isBrowser } from '../../utils'\nimport { ErrorFocus } from '../../utils/formikErrorFocus'\nimport {\n combineValidators,\n emailValidator,\n requiredValidator,\n} from '../../validators'\nimport { CustomField } from '../common/index'\n\ninterface WaitingListProps {\n tickets: any;\n eventId: number;\n defaultMaxQuantity: number;\n}\n\ninterface WaitingListFields {\n ticketTypeId: string;\n quantity: string;\n firstName: string;\n lastName: string;\n email: string;\n}\n\nconst generateQuantity = (n: number) => {\n const quantityList = []\n for (let i = 1; i <= n; i++) {\n quantityList.push({ label: i, value: i })\n }\n return quantityList\n}\n\nconst WaitingList = ({\n tickets = {},\n eventId,\n defaultMaxQuantity = 10,\n}: WaitingListProps) => {\n const userData =\n isBrowser && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n\n const [showSuccessMessage, setShowSuccessMessage] = useState(false)\n const [loading, setLoading] = useState(false)\n const ticketTypesList = Object.values(tickets).map((d: any) => ({\n label: d.displayName,\n value: d.id,\n }))\n\n const showTicketsField = Boolean(ticketTypesList.length)\n\n const handleSubmit = async (values: WaitingListFields) => {\n try {\n setLoading(true)\n const response = await addToWaitingList(eventId, { attributes: values })\n\n if (response.success) {\n setShowSuccessMessage(true)\n }\n } catch (error) {\n } finally {\n setLoading(false)\n }\n }\n\n return (\n <div className=\"waiting-list\">\n {showSuccessMessage ? (\n <div className=\"success-message\">\n <p className=\"added-success-message\">You've been added to the waiting list!</p>\n <p>You'll be notified if tickets become available.</p>\n </div>\n ) : (\n <>\n <h2>WAITING LIST</h2>\n <Formik\n initialValues={{\n ticketTypeId: '',\n quantity: '',\n firstName: userData.first_name || '',\n lastName: userData.last_name || '',\n email: userData.email || '',\n }}\n onSubmit={handleSubmit}\n >\n {({ values, setFieldValue }) => {\n const selectedTicket = _find(tickets, n => n.id === values.ticketTypeId)\n return (\n <Form>\n <ErrorFocus />\n {showTicketsField && (\n <>\n <div className=\"field-item\">\n <Field\n name=\"ticketTypeId\"\n label=\"Type of Ticket\"\n type=\"select\"\n component={CustomField}\n onChange={(e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setFieldValue('ticketTypeId', e.target.value)\n setFieldValue('quantity', '')\n }}\n selectOptions={[\n { label: 'Type of Ticket', value: '', disabled: true },\n ...ticketTypesList,\n ]}\n />\n </div>\n <div className=\"field-item\">\n <Field\n name=\"quantity\"\n label=\"Quantity Requested\"\n type=\"select\"\n component={CustomField}\n selectOptions={[\n {\n label: 'Quantity Requested',\n value: '',\n disabled: true,\n },\n ...generateQuantity(selectedTicket?.waitingListMaxQuantity || (defaultMaxQuantity ?? 10)\n ),\n ]}\n />\n </div>\n </>\n )}\n <div className=\"field-item\">\n <Field\n name=\"firstName\"\n label=\"First name\"\n validate={(value: string) =>\n requiredValidator(value, 'Please enter your First name')\n }\n component={CustomField}\n />\n </div>\n <div className=\"field-item\">\n <Field\n name=\"lastName\"\n label=\"Last name\"\n validate={(value: string) =>\n requiredValidator(value, 'Please enter your Last name')\n }\n component={CustomField}\n />\n </div>\n <div className=\"field-item\">\n <Field\n name=\"email\"\n label=\"Email\"\n validate={combineValidators(\n (value: string) =>\n requiredValidator(value, 'Please enter your Email'),\n (value: string) => emailValidator(value)\n )}\n component={CustomField}\n />\n </div>\n\n <Button\n type=\"submit\"\n variant=\"contained\"\n className=\"waiting-list-button\"\n >\n {loading ? (\n <CircularProgress size=\"22px\" />\n ) : (\n 'ADD TO WAITING LIST'\n )}\n </Button>\n </Form>\n )\n }}\n </Formik>\n </>\n )}\n </div>\n )\n}\n\nexport default WaitingList\n","import React from 'react'\nimport Button from 'react-bootstrap/Button'\n\nexport interface IAccessCodeSectionProps {\n code: string;\n setCode: (value: string) => void;\n updateTickets: (value: boolean) => void;\n}\n\n// This section is seperate because additional changes layter may be applied to Access Code\n\nexport const AccessCodeSection = ({\n code,\n setCode,\n updateTickets\n}: IAccessCodeSectionProps) => {\n const isAccessCodeHasValue = !!code.trim()\n\n return (\n <div className=\"access-code-block\">\n <div className=\"access-code-block\">\n <p className=\"access-code-text\">\n Access code required\n </p>\n </div>\n <input\n className=\"access-code-input\"\n placeholder=\"\"\n onChange={e => {\n setCode(e.target.value)\n }}\n onKeyPress={event => {\n if (event.key === 'Enter' && isAccessCodeHasValue) {\n updateTickets(true)\n }\n }}\n />\n <Button\n className=\"access-submit-button\"\n onClick={() => {\n if (isAccessCodeHasValue) {\n updateTickets(true)\n }\n }}\n >\n ENTER\n </Button>\n </div>\n )\n}\n","import React from 'react'\nimport Button from 'react-bootstrap/Button'\nimport SVG from 'react-inlinesvg'\n\nimport DoneSvg from '../../assets/images/done.svg'\nimport XmarkSvg from '../../assets/images/xmark.svg'\n\nexport interface IPromoCodeSectionProps {\n code: string;\n codeIsApplied: boolean;\n showPromoInput: boolean;\n setCode: (value: string) => void;\n setShowPromoInput: (value: boolean) => void;\n updateTickets: (value: boolean, type: string) => void;\n setCodeIsApplied: (value: boolean) => void;\n codeIsInvalid: boolean;\n setCodeIsInvalid: (value: boolean) => void;\n promoText?: string;\n showAlertIcons?: boolean;\n}\n\nexport const PromoCodeSection = ({\n code,\n codeIsApplied,\n showPromoInput,\n setCode,\n setShowPromoInput,\n updateTickets,\n setCodeIsApplied,\n codeIsInvalid,\n setCodeIsInvalid,\n promoText,\n showAlertIcons\n}: IPromoCodeSectionProps) => {\n const isPromoCodeHasValue = !!code.trim()\n\n const renderInputField = () => (\n <div className=\"promo-code-block\">\n <div className=\"promo-code-block\">\n <p className=\"promo-code-text\">Promo code</p>\n </div>\n <input\n className=\"promo-code-input\"\n placeholder=\"\"\n onChange={e => {\n setCode(e.target.value)\n }}\n onKeyPress={event => {\n if (event.key === 'Enter' && isPromoCodeHasValue) {\n setShowPromoInput(false)\n updateTickets(true, 'promo')\n }\n }}\n />\n <Button\n className=\"promo-submit-button\"\n onClick={() => {\n if (isPromoCodeHasValue) {\n setShowPromoInput(false)\n updateTickets(true, 'promo')\n }\n }}\n >\n APPLY\n </Button>\n </div>\n )\n\n return (\n <div>\n {codeIsApplied ? (\n <div className=\"alert-info\">\n {showAlertIcons && (\n <SVG\n src={DoneSvg}\n preProcessor={code =>\n code.replace(/fill=\".*?\"/g, 'fill=\"currentColor\"')\n }\n />\n )}\n <p className=\"promo-code-success\">PROMO CODE APPLIED SUCCESSFULLY</p>\n </div>\n ) : null}\n {codeIsInvalid ? (\n <div className=\"alert-info fail\">\n {showAlertIcons && (\n <SVG\n src={XmarkSvg}\n />\n )}\n <p className=\"promo-code-fail\">Invalid Promo Code</p>\n </div>\n ) : null}\n {!showPromoInput && (\n <Button\n className=\"promo-code-button\"\n placeholder=\"Promo Codes\"\n onClick={() => {\n setCodeIsApplied(false)\n setShowPromoInput(true)\n setCodeIsInvalid(false)\n }}\n >\n {promoText ?? 'Got a promo code? Click here'}\n </Button>\n )}\n {showPromoInput && renderInputField()}\n </div>\n )\n}","import { useEffect } from 'react'\n\nimport { postReferralVisits } from '../../api'\n\ninterface IReferralLogicProps {\n eventId: string | number;\n}\n\nexport const ReferralLogic = (props: IReferralLogicProps) => {\n const { eventId } = props\n\n useEffect(() => {\n const isWindowDefined = typeof window !== 'undefined'\n\n if (isWindowDefined) {\n const params: URLSearchParams = new URL(`${window.location}`).searchParams\n const referralId = params.get('ttf_r') || params.get('referrer_id') || ''\n const referralValue = [eventId, '.', referralId].join('')\n const isAlreadyCounted = localStorage.getItem('referral_key') === referralValue\n\n if (referralId && eventId && !isAlreadyCounted) {\n (async () => {\n try {\n await postReferralVisits(`${eventId}`, referralId)\n localStorage.setItem('referral_key', referralValue)\n } catch (error) {}\n })()\n }\n }\n }, [eventId])\n\n return null\n}\n","import './style.css'\n\nimport Box from '@mui/material/Box'\nimport FormControl from '@mui/material/FormControl'\nimport MenuItem from '@mui/material/MenuItem'\nimport Select from '@mui/material/Select'\nimport _get from 'lodash/get'\nimport React from 'react'\n\nimport { defineIsSalesClosed, getTicketSelectOptions } from './utils'\n\ninterface ITicketRowProps {\n ticketTier: any;\n prevTicketTier: any;\n selectedTickets: any;\n handleTicketSelect: any;\n event: any;\n isSeatMapAllowed?: boolean;\n tableType?: boolean;\n}\n\nexport const TicketRow = ({\n ticketTier,\n prevTicketTier,\n selectedTickets,\n handleTicketSelect,\n event,\n isSeatMapAllowed,\n tableType,\n}: ITicketRowProps) => {\n const soldOutMessage = ticketTier.soldOutMessage\n ? `${ticketTier.soldOutMessage}`.toUpperCase()\n : 'SOLD OUT'\n const isSalesClosed = defineIsSalesClosed({\n salesStarted: ticketTier.salesStarted,\n salesEnded: ticketTier.salesEnded,\n presalesStarted: event?.presalesStarted,\n presalesEnded: event?.presalesEnded,\n presalesEnabled: event?.presales_enabled,\n })\n const maxCount = tableType ? ticketTier.maxGuests : ticketTier.maxQuantity\n const minCount = tableType ? ticketTier.minGuests : ticketTier.minQuantity\n const { multiplier } = ticketTier\n const options = getTicketSelectOptions(maxCount, minCount, multiplier)\n\n const ticketsClosedMessage = !ticketTier.salesStarted\n ? 'Sales not started'\n : 'Sales Ended'\n const canPurchaseTicket = ticketTier.displayTicket && ticketTier.maxQuantity\n const isDirectPurchaseAllowed = _get(ticketTier, 'allowDirectPurchase', false)\n\n const onSaleContent = (\n <div className=\"get-tickets\">\n {ticketTier.isTable && <span>GUESTS</span>}\n <Box className=\"get-tickets__selectbox\">\n <FormControl fullWidth>\n <Select\n sx={{ borderRadius: 0 }}\n value={selectedTickets[ticketTier.id] ? selectedTickets[ticketTier.id] : 0}\n onChange={handleTicketSelect}\n displayEmpty\n inputProps={{ 'aria-label': 'Without label' }}\n MenuProps={{\n PaperProps: {\n sx: { maxHeight: 150 },\n className: 'get-tickets-paper',\n },\n }}\n >\n {options.map((option, index) => (\n <MenuItem key={index} value={option.value}>\n {option.value}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Box>\n </div>\n )\n\n let returnValue: any = ''\n\n // ticketTier.soldOut === false --> means that ticket is in the stock\n const isSoldOut =\n ticketTier.sold_out ||\n !ticketTier.displayTicket ||\n ticketTier.soldOut ||\n ticketTier.soldOut === false\n\n if (isSoldOut) {\n returnValue = soldOutMessage\n } else if (isSalesClosed) {\n returnValue = ticketsClosedMessage\n } else if (canPurchaseTicket && isSeatMapAllowed && !isDirectPurchaseAllowed) {\n // Seat Map Tickets renderer logic\n returnValue = null\n } else if (\n canPurchaseTicket ||\n (canPurchaseTicket && event?.presalesStarted && !event?.presalesEnded)\n ) {\n returnValue = onSaleContent\n } else if (_get(prevTicketTier, 'in_stock')) {\n returnValue = 'SOON'\n }\n\n return <>{returnValue} </>\n}\n","export const getTicketSelectOptions = (maxCount = 10, minCount = 1, multiplier = 1) => {\n const options = [{ label: 0, value: 0 }]\n for (let i = minCount || 1; i <= Math.min(50, maxCount); i += multiplier) {\n options.push({ label: i, value: i })\n }\n return options\n}\n\ninterface eventDatesInfo {\n salesStarted: boolean;\n salesEnded: boolean;\n presalesStarted: boolean;\n presalesEnded: boolean;\n presalesEnabled: boolean;\n}\n\nexport const defineIsSalesClosed = (eventDatesInfo: eventDatesInfo): boolean => {\n const { salesStarted, salesEnded, presalesStarted, presalesEnded, presalesEnabled } =\n eventDatesInfo\n let isSalesClosed = false\n if (!salesStarted || (salesStarted && salesEnded)) {\n isSalesClosed = true\n }\n if (presalesEnabled) {\n if (\n (!presalesStarted && !presalesEnded) ||\n (presalesStarted && presalesEnded && !salesStarted)\n ) {\n isSalesClosed = true\n } else {\n isSalesClosed = false\n }\n }\n return isSalesClosed\n}\n","import './style.css'\n\nimport _sortBy from 'lodash/sortBy'\nimport React, { ReactNode } from 'react'\n\nimport { TicketRow } from './TicketRow'\n\ninterface ITicketsSectionProps {\n event: any;\n ticketsList: any;\n selectedTickets: any;\n handleTicketSelect: any;\n sortBySoldOut: boolean;\n hideTicketsHeader: boolean;\n hideTableTicketsHeader: boolean;\n tableTickets: any;\n ticketsHeaderComponent?: ReactNode;\n tableTicketsHeaderComponent?: ReactNode;\n showGroupNameBlock?: boolean;\n currencySybmol?: string;\n isSeatMapAllowed?: boolean;\n}\n\nexport const TicketsSection = ({\n event = { currency: {} },\n ticketsList,\n selectedTickets,\n handleTicketSelect,\n sortBySoldOut,\n ticketsHeaderComponent,\n tableTicketsHeaderComponent,\n hideTicketsHeader,\n hideTableTicketsHeader,\n showGroupNameBlock,\n currencySybmol,\n isSeatMapAllowed,\n tableTickets,\n}: ITicketsSectionProps) => {\n const {\n currency: { symbol },\n } = event\n const sortedTicketsList = sortBySoldOut\n ? _sortBy(_sortBy(ticketsList, 'sortOrder'), 'soldOut')\n : _sortBy(ticketsList, 'sortOrder')\n const showGroup = !!sortedTicketsList.find(ticket => ticket.groupName)\n const priceSymbol = currencySybmol ? currencySybmol : symbol\n return (\n <>\n {!hideTicketsHeader && ticketsHeaderComponent}\n {sortedTicketsList.map((ticket, i, arr) => {\n const ticketPrice = `${priceSymbol} ${(+ticket.price).toFixed(2)}`\n const ticketOldPrice = `${priceSymbol} ${(+ticket.oldPrice).toFixed(2)}`\n\n const isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut\n const ticketSelect = (event: any) => {\n const { value } = event.target\n handleTicketSelect(ticket.id, value)\n }\n\n let ticketIsDiscounted = false\n if (ticket.oldPrice && !isSoldOut && ticket.oldPrice !== ticket.price) {\n ticketIsDiscounted = true\n }\n\n const ticketIsFree = +ticket.price === 0\n const ticketPriceElem = isSoldOut\n ? 'SOLD OUT'\n : ticketIsFree\n ? 'FREE'\n : ticketPrice\n const isNewGroupTicket = ticket?.groupName !== arr[i - 1]?.groupName\n\n return (\n <React.Fragment key={ticket.id || ticket.name}>\n {showGroupNameBlock && showGroup && isNewGroupTicket ? (\n <div className=\"event-detail__tier group-title\">\n {ticket.groupName || ''}\n </div>\n ) : null}\n <div className={`event-detail__tier ${isSoldOut ? 'disabled' : ''}`}>\n <div className=\"event-detail__tier-name\">\n {ticket.displayName || ticket.name}\n </div>\n <div className=\"event-tickets-container\">\n <div className=\"event-detail__tier-price\">\n {ticketIsDiscounted && <p className=\"old-price\">{ticketOldPrice}</p>}\n <p className={isSoldOut ? 'sold-out' : ''}>{ticketPriceElem}</p>\n {!isSoldOut && !ticketIsFree && (\n <p className=\"fees\">\n {ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'}\n </p>\n )}\n </div>\n <div className=\"event-detail__tier-state\" style={{ minWidth: 55 }}>\n <TicketRow\n ticketTier={ticket}\n prevTicketTier={arr[i - 1]}\n selectedTickets={selectedTickets}\n handleTicketSelect={ticketSelect}\n event={event}\n />\n </div>\n </div>\n </div>\n </React.Fragment>\n )\n })}\n {!hideTableTicketsHeader && tableTicketsHeaderComponent}\n {tableTickets.map((ticket: any, i: any, arr: any) => {\n const ticketPrice = `${priceSymbol} ${(+ticket.price).toFixed(2)}`\n const ticketOldPrice = `${priceSymbol} ${(+ticket.oldPrice).toFixed(2)}`\n\n const isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut\n const ticketSelect = (event: any) => {\n const { value } = event.target\n handleTicketSelect(ticket.id, value, true)\n }\n\n let ticketIsDiscounted = false\n if (ticket.oldPrice && !isSoldOut && ticket.oldPrice !== ticket.price) {\n ticketIsDiscounted = true\n }\n\n const ticketIsFree = +ticket.price === 0\n const ticketPriceElem = isSoldOut\n ? 'SOLD OUT'\n : ticketIsFree\n ? 'FREE'\n : ticketPrice\n const isNewGroupTicket = ticket?.groupName !== arr[i - 1]?.groupName\n\n return (\n <>\n <React.Fragment key={ticket.id || ticket.name}>\n {showGroupNameBlock && showGroup && isNewGroupTicket ? (\n <div className=\"event-detail__tier group-title\">\n {ticket.groupName || ''}\n </div>\n ) : null}\n <div className={`event-detail__tier ${isSoldOut ? 'disabled' : ''}`}>\n <div className=\"event-detail__tier-name\">\n {ticket.displayName || ticket.name}\n </div>\n <div className=\"event-tickets-container\">\n <div className=\"event-detail__tier-price\">\n {ticketIsDiscounted && <p className=\"old-price\">{ticketOldPrice}</p>}\n <p className={isSoldOut ? 'sold-out' : ''}>{ticketPriceElem}</p>\n {!isSoldOut && !ticketIsFree && (\n <p className=\"fees\">\n {ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'}\n </p>\n )}\n {ticket.depositPercent && (\n <p className=\"deposits\">{ticket.depositPercent + '% DEPOSIT'}</p>\n )}\n </div>\n <div className=\"event-detail__tier-state\" style={{ minWidth: 55 }}>\n <TicketRow\n tableType={true}\n ticketTier={ticket}\n prevTicketTier={arr[i - 1]}\n selectedTickets={selectedTickets}\n handleTicketSelect={ticketSelect}\n isSeatMapAllowed={isSeatMapAllowed}\n event={event}\n />\n </div>\n </div>\n </div>\n </React.Fragment>\n </>\n )\n })}\n </>\n )\n}\n","import _map from 'lodash/map'\nimport moment from 'moment-timezone'\nimport React from 'react'\n\nconst EventInfoItem = ({ image, name }: EventInfoTypes) => (\n <div className=\"event-info\">\n <img src={image} alt=\"event\" />\n {name}\n </div>\n)\n\nconst tableConfig = (columns?: IColumnData[], key?: string) => {\n let config\n\n if (columns?.length) {\n return {\n header: _map(columns, item => item.label),\n body: _map(columns, item => {\n if (item.component) {\n const ItemComponent = item.component\n return (row: RowItems) => ({\n columnProps: item,\n component: <ItemComponent {...row} />,\n })\n }\n\n if (item.key === 'event') {\n return (row: RowItems) => ({\n columnProps: item,\n component: <EventInfoItem image={row.image} name={row.eventName} />,\n })\n }\n\n if (item.key === 'total') {\n return (row: RowItems) => ({\n columnProps: item,\n component: row.currency + row.amount,\n })\n }\n\n return (row: RowItems) => ({\n columnProps: item,\n component: item.normalizer\n ? item.normalizer(row[item.key as keyof RowItems])\n : row[item.key as keyof RowItems],\n })\n }) as ITableBodyType[],\n }\n }\n\n switch (key) {\n default:\n config = {\n header: ['Order No.', 'Date', 'Event', 'Total'],\n body: [\n (row: RowItems) => ({\n columnProps: {} as IColumnData,\n component: row.id,\n }),\n (row: RowItems) => ({\n columnProps: {} as IColumnData,\n component: row.timezone\n ? moment.tz(row.date, row.timezone).format('DD MMMM YYYY')\n : row.date,\n }),\n (row: RowItems) => ({\n columnProps: {} as IColumnData,\n component: <EventInfoItem image={row.image} name={row.eventName} />,\n }),\n (row: RowItems) => ({\n columnProps: {} as IColumnData,\n component: row.currency + row.amount,\n }),\n ] as ITableBodyType[],\n }\n }\n return config\n}\n\nexport default tableConfig\n","import TableCell from '@mui/material/TableCell'\nimport TableRow from '@mui/material/TableRow'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React from 'react'\n\nimport tableConfig from './tableConfig'\n\nconst Row = ({\n row,\n handleDetailsInfo,\n columns = [],\n hideDetailsButton,\n}: RowPropsTypes) => (\n <TableRow sx={{ '& > *': { borderBottom: 'unset' } }}>\n {tableConfig(columns).body.map((column: ITableBodyType, index: number) => (\n <TableCell\n component=\"th\"\n scope=\"row\"\n key={index}\n onClick={e => {\n const { columnProps, component }: IRowReturnType = column(row)\n const onCellClick = columnProps?.onCellClick || _identity\n const componentProps = _get(component, 'props', {})\n\n onCellClick(componentProps, e)\n }}\n >\n {column(row).component}\n </TableCell>\n ))}\n {!hideDetailsButton && (\n <TableCell component=\"th\" scope=\"row\">\n <button\n type=\"button\"\n className=\"order-details-button\"\n onClick={() => handleDetailsInfo(row.id)}\n >\n Details\n </button>\n </TableCell>\n )}\n </TableRow>\n)\n\nexport default Row\n","import React from 'react'\nimport FormGroup from '@mui/material/FormGroup'\nimport FormControlLabel from '@mui/material/FormControlLabel'\nimport Radio from '@mui/material/Radio';\nimport { FieldInputProps } from 'formik'\nimport { useTheme } from '@mui/styles'\n\nexport interface IRadioField {\n label: string | number | JSX.Element;\n field?: FieldInputProps<any>;\n}\n\ninterface IOtherProps {\n [key: string]: any;\n}\n\nexport const RadioField = ({\n label,\n field,\n theme,\n disableDropdown,\n ...rest\n}: IRadioField & IOtherProps) => {\n const customTheme: any = useTheme()\n return (\n <FormGroup>\n <FormControlLabel\n control={<Radio {...field} {...rest} />}\n label={label}\n componentsProps={{\n typography: customTheme?.checkbox\n }}\n />\n </FormGroup>\n )\n}\n","import './style.css'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Modal from '@mui/material/Modal'\nimport { Field, Form, Formik } from 'formik'\nimport React from 'react'\nimport SVG from 'react-inlinesvg'\nimport * as yup from 'yup'\n\nimport EmailSvg from '../../assets/images/email.svg'\nimport UserSvg from '../../assets/images/user.svg'\nimport { CheckboxField } from '../common/CheckboxField'\nimport { CustomField } from '../common/CustomField'\nimport { RadioField } from '../common/RadioField'\nimport { ITicketTypes } from '../orderDetailsContainer/ticketsTable'\n\ninterface Props {\n ticket: ITicketTypes;\n onClose: () => void;\n onSubmit: (values: InitialValuesTypes) => void;\n loading?: boolean;\n}\n\nexport interface InitialValuesTypes {\n to: string;\n first_name: string;\n last_name: string;\n email: string;\n confirm_email: string;\n confirm: boolean;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto'\n}\n\nconst schema = yup.object().shape({\n to: yup.string().required(),\n first_name: yup.string().when('to', {\n is: (to: string) => to === 'friend',\n then: yup.string().required('First Name is required')\n }),\n last_name: yup.string().when('to', {\n is: (to: string) => to === 'friend',\n then: yup.string().required('Last Name is required')\n }),\n email: yup.string().when('to', {\n is: (to: string) => to === 'friend',\n then: yup.string().email('Invalid email').required('Email is required')\n }),\n confirm_email: yup.string().when('to', {\n is: (to: string) => to === 'friend',\n then: yup.string().email('Invalid email').oneOf([yup.ref('email'), null], 'Emails must match').required('Confirm Email is required')\n }),\n confirm: yup.boolean().oneOf([true])\n})\n\nconst initialValues: InitialValuesTypes = {\n to: 'friend',\n first_name: '',\n last_name: '',\n email: '',\n confirm_email: '',\n confirm: false\n}\n\nexport const TicketResaleModal = ({\n ticket = {} as ITicketTypes,\n onClose = () => { },\n onSubmit = () => { },\n loading = false\n}: Props) => {\n const { hash, holder_name, event_name, currency, retain_amount_on_sale, ticket_type_is_active } = ticket\n\n return (\n <Modal\n open={true}\n onClose={onClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className='resale-modal'\n >\n <Box style={style}>\n <h3>Sell Ticket</h3>\n <div>\n <h3>Ticket Details</h3>\n <div>\n <h4>Event</h4>\n <p>{event_name}</p>\n </div>\n <div>\n <h4>Ticket Holder</h4>\n <p>{holder_name}</p>\n </div>\n <div>\n <h4>Ticket ID</h4>\n <p>{hash}</p>\n </div>\n </div>\n <div>\n <h3>Sell to Whom</h3>\n <Formik\n initialValues={initialValues}\n validationSchema={schema}\n onSubmit={onSubmit}\n >\n {({ values, isValid, dirty }) => (\n <Form>\n <div>\n <Field\n name='to'\n label='I want to sell the ticket to someone I know'\n type='radio'\n value='friend'\n component={RadioField}\n />\n {values.to === 'friend' && (\n <div className='sell-to-friend'>\n <div className='user-info-box'>\n <div className='field-box'>\n <div className='icon'>\n <SVG\n src={UserSvg}\n width='24'\n height='24'\n />\n </div>\n <Field\n name='first_name'\n label='First Name'\n type='text'\n component={CustomField}\n />\n </div>\n <div className='field-box'>\n <div className='empty-box' />\n <Field\n name='last_name'\n label='Last Name'\n type='text'\n component={CustomField}\n />\n </div>\n </div>\n <div className='email-info-box'>\n <div className='field-box'>\n <div className='icon'>\n <SVG\n src={EmailSvg}\n width='24'\n height='24'\n />\n </div>\n <Field\n name='email'\n label='Email address'\n type='text'\n component={CustomField}\n />\n </div>\n <div className='field-box'>\n <div className='empty-box' />\n <Field\n name='confirm_email'\n label='Confirm Email address'\n type='text'\n component={CustomField}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n {ticket_type_is_active && (\n <div>\n <Field\n name=\"to\"\n label=\"I will sell my ticket to anyone who wants to buy it\"\n type=\"radio\"\n value=\"anyone\"\n component={RadioField}\n />\n </div>\n )}\n <div>\n <h4>Terms of Resale</h4>\n <p>I confirm that I want to sell this ticket and that, if someone chooses to buy it, I will no longer own it or have the right to ask for it back.</p>\n <p>I also understand that, if no one chooses to buy it, it remains my property, is valid for entry to <strong>{event_name}</strong> and I will not receive any refund.</p>\n <p>If my ticket is sold, the original card I used to buy my ticket will be refunded with the original amount paid, minus a small handling fee of <strong>{`${currency ?? ''} ${retain_amount_on_sale ?? '0'}`}</strong>, and that any existing refunds due to me for referring sales for this event are no longer valid.</p>\n <Field\n name='confirm'\n label='I agree'\n type='checkbox'\n component={CheckboxField}\n />\n </div>\n <div className=\"resale-action-button\">\n <Button\n type=\"submit\"\n disabled={!(isValid && dirty)}\n >\n {loading ? <CircularProgress size=\"22px\" /> : 'Sell Ticket'}\n </Button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n </Box>\n </Modal>\n )\n}\n","import { Field, Form, Formik, FormikProps } from 'formik'\nimport _identity from 'lodash/identity'\nimport React from 'react'\n\nimport { fieldDataAdapter } from '../../adapters/customFields'\nimport {\n getFieldComponent,\n getFieldLabel,\n getValidateFunctions,\n} from '../billing-info-container/utils'\nimport { CustomFieldTypes } from './index'\n\ninterface HolderCustomFieldsProps {\n initialValues: { [key: string]: any };\n fields: Array<CustomFieldTypes>;\n handleFormSubmit?: (values: Record<string, any>) => void;\n handleFormClose?: () => void;\n}\n\nconst CustomFieldsForm = ({\n initialValues = {},\n fields = [],\n handleFormSubmit = _identity,\n handleFormClose = _identity,\n}: HolderCustomFieldsProps) => (\n <Formik\n initialValues={initialValues}\n onSubmit={values => handleFormSubmit(values)}\n enableReinitialize={true}\n >\n {(props: FormikProps<any>) => (\n <Form>\n <div className=\"updatable-custom-fields\">\n {fields.map((customField: CustomFieldTypes) => {\n const adaptedCustomField = fieldDataAdapter(customField)\n return (\n <Field\n key={customField.id}\n name={customField.name}\n label={getFieldLabel(customField)}\n component={getFieldComponent(adaptedCustomField)}\n validate={getValidateFunctions(\n customField,\n [],\n props.values,\n props.errors\n )}\n isMultiple={adaptedCustomField.isMultiple}\n radios={adaptedCustomField.radios}\n options={adaptedCustomField.options}\n />\n )\n })}\n </div>\n <div className=\"buttons-block\">\n <button\n className=\"cancel-btn\"\n type=\"button\"\n onClick={() => {\n props.resetForm()\n handleFormClose()\n }}\n >\n Cancel\n </button>\n <button className=\"submit-btn\" type=\"submit\">\n Update ticket\n </button>\n </div>\n </Form>\n )}\n </Formik>\n)\n\nexport { CustomFieldsForm }\n","import _isArray from 'lodash/isArray'\nimport _isEmpty from 'lodash/isEmpty'\n\nimport { CustomFieldOption, CustomFieldTypes } from '../index'\n\nconst getLabelForValue = (options: CustomFieldOption[], value: string | string[]): string => {\n const getLabel = (singleValue: string) => {\n const option = options.find(option => option.value === singleValue)\n return option ? option.name : ''\n }\n\n if (_isArray(value)) {\n const labels = value.map(getLabel)\n return labels.join(', ')\n }\n\n return getLabel(value as string)\n}\n\nexport const renderCustomFieldValue = (customField: CustomFieldTypes) => {\n if (customField.type === 'checkbox') {\n return customField.value ? 'Checked' : 'Unchecked'\n }\n\n if (_isEmpty(customField.value)) {\n return 'N/A'\n }\n\n if (customField.type === 'select' || customField.type === 'select_multi' || customField.type === 'radio') {\n return getLabelForValue(customField.options as CustomFieldOption[], customField.value)\n }\n\n return customField.value\n}\n\nexport const isFieldUpdatable = (field: CustomFieldTypes): boolean => {\n if (!field?.settings?.allowUpdate || (field?.type === 'checkbox' && field?.required)) {\n return false\n }\n return true\n}\n\nexport const createCustomFieldsUpdateBody = (\n updatedValues: Record<string, any>,\n notUpdatableCustomFieldsValues: Array<CustomFieldTypes> = []\n) =>\n notUpdatableCustomFieldsValues.reduce(\n (acc, customField) => {\n if (!isFieldUpdatable(customField)) {\n acc[customField.name] = customField.value\n }\n return acc\n },\n { ...updatedValues }\n )\n","import _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport React, { useMemo, useState } from 'react'\nimport SVG from 'react-inlinesvg'\n\nimport EditSvg from '../../assets/images/edit.svg'\nimport { CustomFieldsForm } from './CustomFieldsForm'\nimport { CustomFieldTypes } from './index'\nimport { ITicketTypes } from './ticketsTable'\nimport {\n createCustomFieldsUpdateBody,\n isFieldUpdatable,\n renderCustomFieldValue,\n} from './utils'\n\ninterface HolderCustomFieldsProps {\n ticket: ITicketTypes;\n holderCustomFields: CustomFieldTypes[];\n handleTicketHoldersUpdate: (values: Record<string, any>, ticketHash: string) => void;\n}\n\nconst TicketHolderCustomFields = ({\n ticket,\n holderCustomFields,\n handleTicketHoldersUpdate = _identity,\n}: HolderCustomFieldsProps) => {\n const [showHolderCustomFieldsSection, setShowHolderCustomFieldsSection] =\n useState(false)\n\n const [allowedHolderCustomFields, notAllowedHolderCustomFields] = useMemo(() => {\n const allowedFields: CustomFieldTypes[] = []\n const notAllowedFields: CustomFieldTypes[] = []\n\n holderCustomFields.forEach((field: CustomFieldTypes) => {\n if (isFieldUpdatable(field)) {\n allowedFields.push(field)\n } else {\n notAllowedFields.push(field)\n }\n })\n return [allowedFields, notAllowedFields]\n }, [holderCustomFields])\n\n const holderEditableFieldsFormInitialValues = useMemo(\n () => getHolderCustomFieldsInitialValues(holderCustomFields),\n [holderCustomFields]\n )\n\n const handleFormClose = () => {\n setShowHolderCustomFieldsSection(false)\n }\n\n const handleForSubmit = (values: Record<string, any>) => {\n // Collect all updatable and non updatable values for bulk update\n const fullUpdatableValues = createCustomFieldsUpdateBody(\n values,\n notAllowedHolderCustomFields\n )\n setShowHolderCustomFieldsSection(false)\n handleTicketHoldersUpdate(fullUpdatableValues, ticket.hash)\n }\n\n function getHolderCustomFieldsInitialValues(fields: Array<CustomFieldTypes>) {\n const initialValues: { [key: string]: string | boolean | string[] } = {}\n\n for (const field of fields) {\n if (isFieldUpdatable(field)) {\n initialValues[field.name] =\n field.type === 'checkbox' ? Boolean(field.value) : field.value || ''\n }\n }\n return initialValues\n }\n\n return (\n <>\n <div className=\"holder-custom-fields\">\n {!_isEmpty(allowedHolderCustomFields) && <SVG src={EditSvg} onClick={() => setShowHolderCustomFieldsSection(true)} />}\n {holderCustomFields.map((customField: CustomFieldTypes) => (\n <div className=\"info-item\" key={customField.id}>\n <b>{customField.label} :</b> {renderCustomFieldValue(customField)}\n </div>\n ))}\n </div>\n {showHolderCustomFieldsSection && (\n <div className=\"custom-fields-block show\">\n <p className=\"editable-ticket-id\">Edit ticket {ticket.hash}</p>\n <CustomFieldsForm\n initialValues={holderEditableFieldsFormInitialValues}\n fields={allowedHolderCustomFields}\n handleFormSubmit={handleForSubmit}\n handleFormClose={handleFormClose}\n />\n </div>\n )}\n </>\n )\n}\n\nexport { TicketHolderCustomFields }\n","import CircularProgress from '@mui/material/CircularProgress'\nimport Paper from '@mui/material/Paper'\nimport Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport React, { Fragment, useState } from 'react'\n\nimport { downloadPDF } from '../../utils'\nimport SnackbarAlert from '../common/SnackbarAlert'\nimport { CustomFieldTypes } from './index'\nimport { TicketHolderCustomFields } from './TicketHolderCustomFields'\n\ninterface IAddOnTypes {\n name: string;\n groupName: string;\n status: string;\n}\n\nexport interface ITicketTypes {\n add_ons?: IAddOnTypes[];\n hash: string;\n ticket_type: string;\n holder_name: string;\n status: string;\n pdf_link: string;\n is_sellable: boolean;\n is_on_sale?: boolean;\n event_name: string;\n currency: string;\n ticket_type_hash: string;\n ticket_type_is_active?: boolean;\n canSellTicket?: boolean;\n retain_amount_on_sale: number | string;\n ticketsTitle: string;\n}\n\nexport interface IActionColumns {\n download?: boolean;\n sell_ticket?: boolean;\n}\n\ninterface TicketsTableTypes {\n canSellTicket?: boolean;\n tickets: ITicketTypes[];\n columns: Array<{\n id?: string | number;\n key: keyof ITicketTypes & keyof IActionColumns;\n label: string | number | null | undefined;\n }>;\n handleSellTicket: (ticket: ITicketTypes) => void;\n handleRemoveFromResale: (ticket: ITicketTypes) => void;\n handleTicketHoldersUpdate: (values: Record<string, any>, ticketHash: string) => void;\n\n icon?: string;\n displayColumnNameInRow?: boolean;\n ticketsTitle?: string;\n ticketHoldersCustomFields?: Array<CustomFieldTypes>;\n}\n\ntype PdfDownload = {\n hash: string;\n loading: boolean;\n}\n\nconst TicketsTable = ({\n tickets = [],\n columns = [],\n icon = '',\n displayColumnNameInRow = false,\n canSellTicket = true,\n ticketsTitle = 'Your Tickets',\n ticketHoldersCustomFields = [],\n handleSellTicket = _identity,\n handleRemoveFromResale = _identity,\n handleTicketHoldersUpdate = _identity,\n}: TicketsTableTypes) => {\n const [pdfError, setPdfError] = useState<string | null>(null)\n const [pdfDownload, setPdfDownload] = useState<PdfDownload>({\n hash: '',\n loading: false,\n })\n\n const getRow = (ticket: ITicketTypes) =>\n _map(columns, (column, columnIndex) => {\n if (column.key === 'download') {\n const ticketIsDownloading =\n pdfDownload.loading && pdfDownload.hash === ticket.hash\n\n if (!ticket.pdf_link || ticket.status === 'Sold' || ticket.is_on_sale)\n return <TableCell key={columnIndex}>{null}</TableCell>\n\n return (\n <TableCell key={columnIndex}>\n {Boolean(icon) && <img src={icon} alt=\"nodata\" />}\n <span\n aria-hidden={true}\n className=\"action-button\"\n onClick={async () => {\n if (ticketIsDownloading) {\n return\n }\n\n setPdfDownload({ hash: ticket.hash, loading: true })\n try {\n const pdfDownloadError = await downloadPDF(ticket.pdf_link)\n if (pdfDownloadError) {\n setPdfError(pdfDownloadError?.message)\n }\n } catch (err) {\n if (err && typeof err === 'string') {\n setPdfError(err)\n }\n } finally {\n setPdfDownload({ hash: '', loading: false })\n }\n }}\n >\n {ticketIsDownloading ? <CircularProgress size=\"22px\" /> : 'Download'}\n </span>\n </TableCell>\n )\n }\n\n if (column.key === 'sell_ticket') {\n return (\n <TableCell key={columnIndex}>\n {ticket.is_sellable && canSellTicket && (\n <span\n aria-hidden={true}\n className=\"action-button\"\n onClick={() => handleSellTicket(ticket)}\n >\n Sell Ticket\n </span>\n )}\n {ticket.is_on_sale && (\n <span\n aria-hidden={true}\n className=\"action-button\"\n onClick={() => handleRemoveFromResale(ticket)}\n >\n Remove from Resale\n </span>\n )}\n </TableCell>\n )\n }\n\n return displayColumnNameInRow ? (\n <TableCell key={columnIndex}>\n <div className=\"cell-block\">\n <span>{column.label}</span>\n <span>{ticket[column.key]}</span>\n </div>\n </TableCell>\n ) : (\n <TableCell key={columnIndex}>\n <div className=\"cell-block\">\n <span>{ticket[column.key]}</span>\n </div>\n </TableCell>\n )\n })\n\n return (\n <div className=\"tickets-box\">\n <SnackbarAlert\n type=\"error\"\n isOpen={!!pdfError}\n message={pdfError || ''}\n onClose={() => setPdfError(null)}\n />\n <h4 className=\"sub-title tickets-title\">{ticketsTitle}</h4>\n <TableContainer component={Paper}>\n <Table aria-label=\"collapsible table\">\n {displayColumnNameInRow ? null : (\n <TableHead>\n <TableRow>\n {_map(columns, item => (\n <TableCell key={item.key}>{item.label || ''}</TableCell>\n ))}\n </TableRow>\n </TableHead>\n )}\n <TableBody>\n {tickets.map((ticket: ITicketTypes, index: number) => {\n const holderCustomFields = ticketHoldersCustomFields.filter(\n (field: CustomFieldTypes) => field?.ticketHash === ticket?.hash\n )\n\n return (\n <Fragment key={index}>\n <TableRow>{getRow(ticket)}</TableRow>\n {!_isEmpty(holderCustomFields) && (\n <TableRow>\n <TableCell colSpan={columns.length}>\n <TicketHolderCustomFields\n ticket={ticket}\n holderCustomFields={holderCustomFields}\n handleTicketHoldersUpdate={handleTicketHoldersUpdate}\n />\n </TableCell>\n </TableRow>\n )}\n {!!ticket.add_ons?.length && (\n <TableRow>\n <TableCell colSpan={6}>\n <Table className=\"ticket-add-on-table\">\n <TableHead>\n <TableRow>\n <TableCell>Add-On</TableCell>\n <TableCell>Status</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {ticket.add_ons.map((add_on: IAddOnTypes, index: number) => (\n <TableRow key={index}>\n <TableCell>\n {add_on.groupName && `${add_on.groupName}: `}{' '}\n {add_on.name}\n </TableCell>\n <TableCell>{add_on.status}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableCell>\n </TableRow>\n )}\n </Fragment>\n )\n })}\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n )\n}\n\nexport default TicketsTable\n","import React, { FC, useState } from 'react'\nimport { Field, Form, Formik } from 'formik'\nimport { CircularProgress } from '@mui/material'\nimport { CustomField } from '../common/CustomField'\nimport axios, { AxiosError } from 'axios'\nimport * as Yup from 'yup'\nimport { resetPassword } from '../../api'\nimport './style.css'\n\ninterface IResetPasswordProps {\n token?: string\n onResetPasswordSuccess?: (res: any) => void\n onResetPasswordError?: (e: AxiosError) => void\n}\n\nconst Schema = Yup.object().shape({\n password: Yup.string()\n .min(6, 'Password must have 5+ characters')\n .required('Required'),\n password_confirmation: Yup.string()\n .required('Required')\n .oneOf([Yup.ref('password'), null], 'Passwords must match'),\n})\n\nexport const ResetPasswordContainer: FC<IResetPasswordProps> = ({\n token: tokenProps = '',\n onResetPasswordSuccess = () => {},\n onResetPasswordError = () => {},\n}) => {\n const [loading, setLoading] = useState(false)\n return (\n <div className=\"reset-password\">\n <div className=\"title\">Change Password</div>\n <Formik\n initialValues={{ password: '', password_confirmation: '' }}\n validationSchema={Schema}\n onSubmit={async (values: any) => {\n try {\n setLoading(true)\n let token\n if (tokenProps) {\n token = tokenProps\n } else {\n if (typeof window !== 'undefined') {\n const params: URLSearchParams = new URL(`${window.location}`)\n .searchParams\n token = params.get('token')\n }\n }\n\n const payload = {\n token,\n ...values,\n }\n const res = await resetPassword(payload)\n onResetPasswordSuccess(res)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onResetPasswordError(e)\n }\n } finally {\n setLoading(false)\n }\n }}\n >\n {({ isValid, dirty }) => (\n <Form>\n <div className=\"body\">\n <div className=\"field-item\">\n <Field\n name=\"password\"\n label=\"New Password\"\n type=\"password\"\n component={CustomField}\n />\n </div>\n <div className=\"field-item\">\n <Field\n name=\"password_confirmation\"\n label=\"Confirm Password\"\n type=\"password\"\n component={CustomField}\n />\n </div>\n </div>\n <div className=\"action-button\">\n <button type=\"submit\" disabled={!(isValid && dirty)}>\n {loading ? <CircularProgress size=\"22px\" /> : 'Submit'}\n </button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n )\n}\n","import _get from 'lodash/get'\nimport _isEmpty from 'lodash/isEmpty'\n\nexport interface IAddOnsData {\n add_on_groups: Array<{ [key: string]: any }>;\n add_ons: Array<[]>;\n}\n\nexport const addonsWithGroupsAdapter = (data: IAddOnsData) => {\n const addonsData = { ...data }\n const addOnsGroups = _get(addonsData, 'add_on_groups', [])\n const addons = _get(addonsData, 'add_ons', [])\n\n if (!_isEmpty(addOnsGroups)) {\n const addOnGroupsWithVariants: any = []\n const addOnsWithoutVariants: any = []\n\n addons.forEach((addon: any) => {\n if (addon.attributes.addOnGroupId) {\n // Collect addons groups inside with their variants\n const currentGroupId = addon.attributes.addOnGroupId\n const exsistingGroupIndex = addOnGroupsWithVariants.findIndex(\n (item: any) => item.id === currentGroupId\n )\n\n if (addOnGroupsWithVariants[exsistingGroupIndex]) {\n const addOnGroup = addOnGroupsWithVariants[exsistingGroupIndex]\n addOnGroupsWithVariants[exsistingGroupIndex] = {\n ...addOnGroup,\n variants: [...addOnGroup.variants, ...addon.attributes],\n }\n } else {\n const group =\n addOnsGroups.find(group => group.attributes.id === currentGroupId) || {}\n\n addOnGroupsWithVariants.push({\n ...group.attributes,\n variants: [...addon.attributes],\n })\n }\n } else {\n addOnsWithoutVariants.push(addon.attributes)\n }\n })\n\n return addOnGroupsWithVariants.concat(addOnsWithoutVariants)\n }\n\n // Adapt only simple addons data\n const adaptedAddons = (addons as any[]).map((addon: any) => ({\n ...addon.attributes,\n }))\n return adaptedAddons\n}\n\nexport const cartAdapter = (cart: any) => {\n const cartData = _get(cart, 'data.attributes', [])\n const { expiresAt, cart: carts_arr } = cartData\n const { id, quantity } = carts_arr[0] || {}\n\n return { id, quantity, expiresAt }\n}\n","import { Field } from 'formik'\nimport _identity from 'lodash/identity'\nimport _isNull from 'lodash/isNull'\nimport React from 'react'\n\nimport { NativeSelectField } from '../common'\n\ninterface IAddonComponentProps {\n classNamePrefix: string;\n data: any;\n selectOptions: any;\n handleAddonChange?: (...res: any) => void;\n}\n\nconst AddonComponent = ({\n classNamePrefix = '',\n data,\n selectOptions,\n handleAddonChange = _identity,\n}: IAddonComponentProps) => {\n const { id, name, active, stock } = data\n\n return (\n <div key={id} className={`${classNamePrefix}_product_select_container`}>\n <div className={`${classNamePrefix}_product_select_block`} key={name}>\n <div className={`${classNamePrefix}_product_size`}>{name}</div>\n <div className={`${classNamePrefix}_product_qty_select_block`}>\n {!active || (!_isNull(stock) && stock <= 0) ? (\n <div className=\"sold_out\">SOLD OUT</div>\n ) : (\n <div className={`${classNamePrefix}_product_qty_select`}>\n <Field\n name={id}\n selectOptions={selectOptions}\n component={NativeSelectField}\n onChange={(e: any) => {\n const { value } = e.target\n handleAddonChange(id, value)\n }}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default AddonComponent\n","import _isEmpty from 'lodash/isEmpty'\nimport _isNull from 'lodash/isNull'\nimport _reverse from 'lodash/reverse'\nimport _sortBy from 'lodash/sortBy'\n\ninterface ObjectLiteral {\n [key: string]: any;\n}\n\nexport const generateSelectOptions = (minCount = 1, maxCount = 10) => {\n const options = []\n for (let i = minCount; i <= maxCount; i++) {\n options.push({ label: i, value: i })\n }\n return options\n}\n\nconst generateStockBasedOnLimitations = (\n addon: any,\n ticketQuantity: number\n) => {\n // Generate addon available stock count based on limitations\n const { flagLimitToTicketQuantity, maxQuantity, limitPerTicket } = addon\n\n let allowedStockCount\n\n // Generate stock\n if (flagLimitToTicketQuantity) {\n // Limited to ticket quantity case\n allowedStockCount = ticketQuantity\n } else if (maxQuantity && limitPerTicket) {\n const stockBasedOnLimitPerTicket = limitPerTicket * ticketQuantity\n // Both maximum quantity and limited to per ticket selected case, stock is minimum of them\n allowedStockCount =\n maxQuantity <= stockBasedOnLimitPerTicket\n ? maxQuantity\n : stockBasedOnLimitPerTicket\n } else if (maxQuantity && !limitPerTicket) {\n // Limited to maximum quantity case\n allowedStockCount = maxQuantity\n } else if (!maxQuantity && limitPerTicket) {\n // Limited to per ticket case\n allowedStockCount = limitPerTicket * ticketQuantity\n }\n\n return Number(allowedStockCount)\n}\n\nconst filterStockBasedOnAvailability = (\n generatedStock: any,\n availableStock: any\n) => {\n // Check generated stock count admissibility with addon stock availability\n let filteredStockCount = generatedStock\n\n if (generatedStock) {\n if (generatedStock > availableStock && !_isNull(availableStock)) {\n filteredStockCount = availableStock\n }\n } else {\n // Not set any restriction\n // Here 10 value is business logic\n filteredStockCount = 10\n\n if (!_isNull(availableStock) && availableStock < filteredStockCount) {\n filteredStockCount = availableStock\n }\n }\n\n return filteredStockCount\n}\n\nexport const getAddonSelectOptions = (addons: any, choosedTicketCount: any) => {\n const addonsWithOptions: ObjectLiteral = {}\n const groupsWithSelectedVariantsInfo: ObjectLiteral = {}\n const groupsWithVariants: ObjectLiteral = {}\n\n addons.forEach((addon: any) => {\n // Here addon can act either as simple Addon or Addon Group\n const {\n id,\n stock: simpleAddonStock,\n variants,\n active,\n flagLimitToTicketQuantity,\n maxQuantity,\n limitPerTicket,\n } = addon\n\n if (variants) {\n // Addon Group with inside addon variants case\n variants.forEach((variant: any) => {\n const { id: variantId, stock: variantStock } = variant\n\n // null checking is for unlimited stock value\n if (active && (variantStock > 0 || _isNull(variantStock))) {\n // Generate Addon Group allowed stock count based on limitations\n const stockBasedOnLimitation = generateStockBasedOnLimitations(\n addon,\n choosedTicketCount\n )\n\n // Detect if group has limitation or not\n if (flagLimitToTicketQuantity || maxQuantity || limitPerTicket) {\n // Generate Group with inside variants info\n if (groupsWithSelectedVariantsInfo[id]) {\n // Set group limit\n if (\n groupsWithSelectedVariantsInfo[id].limit <\n stockBasedOnLimitation\n ) {\n groupsWithSelectedVariantsInfo[\n id\n ].limit = stockBasedOnLimitation\n }\n\n // Set choosed variants info\n groupsWithSelectedVariantsInfo[id] = {\n ...groupsWithSelectedVariantsInfo[id],\n choosedVariants: {\n ...groupsWithSelectedVariantsInfo[id].choosedVariants,\n [variantId]: 0,\n },\n }\n } else {\n groupsWithSelectedVariantsInfo[id] = {\n limit: stockBasedOnLimitation,\n selectedCount: 0,\n choosedVariants: { [variantId]: 0 },\n }\n }\n }\n\n // Check stock admissibility with addon stock availability\n const allowedVariantStockCount = filterStockBasedOnAvailability(\n stockBasedOnLimitation,\n variantStock\n )\n\n // Generate options for variant\n const variantOptions = generateSelectOptions(\n 0,\n allowedVariantStockCount\n )\n\n addonsWithOptions[variantId] = [...variantOptions]\n\n // Generate Group with its variants list\n groupsWithVariants[id] = {\n ...groupsWithVariants[id],\n [variantId]: allowedVariantStockCount,\n }\n }\n })\n } else {\n // Simple addon case, null checking is for unlimited stock value\n if (active && (simpleAddonStock > 0 || _isNull(simpleAddonStock))) {\n // Generate Addon Group allowed stock count based on limitations\n const stockBasedOnLimitation = generateStockBasedOnLimitations(\n addon,\n choosedTicketCount\n )\n\n // Check stock admissibility with addon stock availability\n const allowedVariantStockCount = filterStockBasedOnAvailability(\n stockBasedOnLimitation,\n simpleAddonStock\n )\n\n const addonOptions = generateSelectOptions(0, allowedVariantStockCount)\n addonsWithOptions[id] = [...addonOptions]\n }\n }\n })\n\n return {\n addonsWithOptions,\n groupsWithSelectedVariantsInfo,\n groupsWithVariants,\n }\n}\n\nexport const getTicketRelatedAddons = (addons: any, ticketId: any) => {\n // Filter addons based on choosed ticket\n const filteredAddons: any = addons.filter(\n (addon: any) =>\n _isNull(addon.prerequisiteTicketTypeIds) ||\n addon.prerequisiteTicketTypeIds.includes(ticketId)\n )\n\n return filteredAddons\n}\n\nexport const getSortedAddons = (addons: any, sortDirection = 'asc') => {\n const addonsCopy = [...addons]\n\n addonsCopy.forEach(addon => {\n if (addon.variants) {\n const unsortedVariants: any = []\n addon.variants.forEach((variant: any) => {\n unsortedVariants.push({\n ...variant,\n sortOrder: Number(variant.sortOrder),\n })\n })\n addon.sortOrder = Number(addon.variants[0].sortOrder)\n const sortedVariants = _sortBy(\n unsortedVariants,\n variant => variant.sortOrder\n )\n addon.variants = sortedVariants\n } else {\n addon.sortOrder = Number(addon.sortOrder)\n }\n })\n\n const sortedAddons = _sortBy(addonsCopy, addon => addon.sortOrder)\n if (sortDirection === 'desc') {\n return _reverse(sortedAddons)\n }\n\n return sortedAddons\n}\n\nexport const isAtLeastOneAddonSelected = (value: any) => {\n const selectedAddons = Object.fromEntries(\n Object.entries(value).filter(([_, count]) => Number(count) !== 0)\n )\n\n return !_isEmpty(selectedAddons)\n}\n","import axios, { AxiosError } from 'axios'\nimport { Field, Form, Formik } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { FC, useState } from 'react'\n\nimport { authorize, getProfileData } from '../../api'\nimport { combineValidators, emailValidator, requiredValidator } from '../../validators'\nimport { CustomField } from '../common'\nimport { PoweredBy } from '../common/PoweredBy'\n\nexport interface ILoginFormProps {\n alreadyHasUser?: boolean;\n userExpired?: boolean;\n\n onLoginSuccess?: (res: IProfileData) => void;\n onLoginError?: (e: AxiosError) => void;\n\n onGetProfileDataSuccess?: (res: IProfileData) => void;\n onGetProfileDataError?: (e: AxiosError) => void;\n\n onForgotPasswordButtonClick?: () => void;\n onSignupButtonClick?: () => void;\n\n logo?: string;\n showForgotPasswordButton?: boolean;\n showSignUpButton?: boolean;\n showPoweredByImage?: boolean;\n}\n\n// interface IUserData {\n// id: string;\n// firstName: string;\n// lastName: string;\n// email: string;\n// city?: string;\n// country?: string;\n// countryId?: string;\n// phone?: string;\n// streetAddress?: string;\n// state?: string;\n// zip?: string;\n// zipCode?: string;\n// stateId?: string;\n// }\n\nexport const setLoggedUserData = (data: IProfileData) => ({\n id: data.id,\n first_name: data.firstName,\n last_name: data.lastName,\n email: data.email,\n confirmEmail: data.email,\n city: data?.city || '',\n country: data?.countryId || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zipCode || '',\n})\n\nexport const LoginForm: FC<ILoginFormProps> = ({\n alreadyHasUser = false,\n userExpired = false,\n\n onLoginSuccess = _identity,\n onLoginError = _identity,\n\n onGetProfileDataSuccess = _identity,\n onGetProfileDataError = _identity,\n\n onForgotPasswordButtonClick = _identity,\n onSignupButtonClick = _identity,\n\n logo,\n showForgotPasswordButton = false,\n showSignUpButton = false,\n showPoweredByImage = false,\n}) => {\n const [error, setError] = useState('')\n return (\n <div className=\"login-modal\">\n <Formik\n initialValues={{ email: '', password: '' }}\n onSubmit={async ({ email, password }) => {\n try {\n const body = { email, password }\n const authRes = await authorize(body)\n let profileResponse = null\n try {\n profileResponse = await getProfileData()\n onGetProfileDataSuccess(_get(profileResponse, 'data'))\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n return\n }\n\n const profileSpecifiedData = _get(profileResponse, 'data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (typeof window !== 'undefined') {\n window.localStorage.setItem('user_data', JSON.stringify(profileDataObj))\n const event = new window.CustomEvent('tf-login')\n window.document.dispatchEvent(event)\n }\n onLoginSuccess(_get(authRes, 'data'))\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message || 'Error'\n setError(error)\n onLoginError(e)\n } else if (e instanceof Error) {\n setError(e?.message || 'Error')\n }\n }\n }}\n >\n {props => (\n <Form onSubmit={props.handleSubmit}>\n <div className=\"modal-title\">Login</div>\n <div className=\"login-logo-container\">\n <img\n className=\"login-logo-tff\"\n src={\n logo ||\n 'https://www.ticketfairy.com/resources/images/logo-ttf-black.svg'\n }\n alt=\"logo\"\n />\n </div>\n <div className=\"server_auth__error\">{error}</div>\n {alreadyHasUser && (\n <p className=\"info-text-for-login\">\n It appears this email is already attached to an account. Please log in\n here to complete your registration.\n </p>\n )}\n {userExpired && (\n <p className=\"info-text-for-login\">\n Your session has expired, please log in again.\n </p>\n )}\n <div className=\"login-modal-body\">\n <div className=\"login-modal-body__email\">\n <Field\n name=\"email\"\n label=\"Email\"\n type=\"email\"\n component={CustomField}\n validate={combineValidators(requiredValidator, emailValidator)}\n />\n </div>\n <div className=\"login-modal-body__password\">\n <Field\n name=\"password\"\n label=\"Password\"\n type=\"password\"\n component={CustomField}\n validate={requiredValidator}\n />\n </div>\n <div className=\"login-action-button\">\n <button type=\"submit\">Login</button>\n </div>\n {showForgotPasswordButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onForgotPasswordButtonClick}>\n Forgot password?\n </span>\n </div>\n )}\n {showSignUpButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onSignupButtonClick}>\n Sign up\n </span>\n </div>\n )}\n {showPoweredByImage ? <PoweredBy /> : null}\n </div>\n </Form>\n )}\n </Formik>\n </div>\n )\n}\n","import { FormikValues } from 'formik'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\n\nimport { isBrowser } from '../../../../utils'\nimport { combineValidators, requiredValidator } from '../../../../validators'\n\nexport const getValidateFunctions = ({\n element,\n values,\n}: {\n element: IFormField;\n values: FormikValues;\n}) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const validationFunctions: any[] = []\n if (element.required) {\n validationFunctions.push(requiredValidator)\n }\n\n if (element.onValidate) {\n validationFunctions.push(element.onValidate)\n }\n\n if (element.name === 'confirmEmail') {\n const isSameEmail = (confirmEmail?: string) =>\n values.email !== confirmEmail\n ? 'Please confirm your email address correctly'\n : null\n validationFunctions.push(isSameEmail)\n }\n\n if (element.name === 'confirmPassword') {\n const isSame = (confirmPassword?: string) =>\n values.password !== confirmPassword\n ? 'Password confirmation does not match'\n : null\n\n validationFunctions.push(isSame)\n }\n\n return combineValidators(...validationFunctions)\n}\n\nexport const updateFormFieldsAttributes = (\n formFields: IFormFieldsSection[],\n attributes?: IFieldAttribute\n) => {\n if (attributes && !_isEmpty(attributes)) {\n const updatedFormFields = _map(formFields, fieldSection => {\n const fieldSectionAttributes = attributes[fieldSection.name] || {}\n\n const updatedFields = _map(fieldSection.fields, fieldItem => {\n const fieldItemAttributes = attributes[fieldItem.name] || {}\n return { ...fieldItem, ...fieldItemAttributes }\n })\n\n return {\n ...fieldSection,\n ...fieldSectionAttributes,\n fields: updatedFields,\n }\n })\n\n return updatedFormFields\n }\n return formFields\n}\n\nexport const getFieldClassNames = (id: string, existingClassNames: string) => {\n if (isBrowser) {\n const elem = document && document.getElementById(id)\n\n if ((elem?.parentElement?.clientWidth || 0) < 375) {\n return existingClassNames + ' full-width'\n }\n }\n\n return existingClassNames\n}\n\nexport const insertHTML = (elementId: string, text = '') => {\n if (isBrowser) {\n const elem = document && document.getElementById(elementId)\n\n if (!elem?.childNodes.length) {\n elem?.insertAdjacentHTML('afterbegin', text)\n }\n }\n\n return null\n}\n","import { Field, FormikValues } from 'formik'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { FC } from 'react'\n\nimport { replaceVarInString } from '../../../utils'\nimport {\n CheckboxField,\n CustomField,\n DatePickerField,\n PhoneNumberField,\n SelectField,\n} from '../index'\nimport { getFieldClassNames, getValidateFunctions, insertHTML } from './utils'\n\nexport interface IFieldsSectionProps {\n formFields?: IFormFieldsSection[];\n values: FormikValues;\n setFieldValue: (\n field: string,\n value: FormikValues | string | number,\n shouldValidate?: boolean | undefined\n ) => void;\n disableField?: string;\n countries?: { [key: string]: string | number }[];\n states?: { [key: string]: string | number }[];\n theme?: 'dark' | 'light';\n containerClass?: string;\n setPhoneValidationIsLoading?: (isLoading: boolean) => void;\n onFieldChange?: (name: string, value: string | number) => void;\n}\n\nconst SectionContainer: FC<{ className: string }> = ({\n children,\n className,\n}) => <div className={className}>{children}</div>\n\nexport const FieldsSection = ({\n formFields = [],\n countries = [],\n states = [],\n values,\n setFieldValue,\n theme,\n containerClass = '',\n setPhoneValidationIsLoading = _identity,\n onFieldChange = _identity,\n disableField,\n}: IFieldsSectionProps) => (\n <>\n {_map(formFields, (item, index) => {\n const {\n name,\n groupLabel,\n groupLabelVars = [],\n groupLabelClassName,\n groupClassName = '',\n fields,\n } = item\n return (\n <SectionContainer key={name} className={groupClassName}>\n <span id={`group_label_${index}`} className={groupLabelClassName}>\n {typeof groupLabel === 'string'\n ? insertHTML(\n `group_label_${index}`,\n replaceVarInString(groupLabel, groupLabelVars)\n )\n : groupLabel}\n </span>\n <div className={`fields-container ${groupClassName}`}>\n {_map(fields, (fieldData, fieldIndex) => {\n const {\n name,\n label,\n className = 'full-width',\n type,\n component,\n options = [],\n required,\n } = fieldData\n const id = `${name}-${fieldIndex}`\n const classNames = `${containerClass}-container__field ${className}`\n return (\n component || (\n <div\n key={name}\n id={id}\n className={getFieldClassNames(id, classNames)}\n >\n <Field\n disabled={name === disableField || name === 'state' && !states.length}\n name={name}\n label={`${label}${required ? '' : ' (optional)'}`}\n type={type}\n validate={name === 'state' && !states.length ? false : getValidateFunctions({\n element: fieldData,\n values,\n })}\n setFieldValue={setFieldValue}\n component={\n type === 'checkbox'\n ? CheckboxField\n : type === 'select'\n ? SelectField\n : type === 'phone'\n ? PhoneNumberField\n : type === 'date'\n ? DatePickerField\n : CustomField\n }\n options={\n name === 'country'\n ? countries\n : name === 'state'\n ? states\n : options\n }\n theme={theme}\n setPhoneValidationIsLoading={\n type === 'phone'\n ? setPhoneValidationIsLoading\n : undefined\n }\n onChange={(e: React.FormEvent<EventTarget>) => {\n const element = e.target as HTMLInputElement\n const { value } = element\n setFieldValue(name, value)\n onFieldChange(name, value)\n }}\n disableDropdown={fieldData.disableDropdown}\n />\n </div>\n )\n )\n })}\n </div>\n </SectionContainer>\n )\n })}\n </>\n)\n","import _map from 'lodash/map'\n\nexport const collectStates = (states: any) => {\n const mappedStates = _map(states, (item, key) => ({\n label: item,\n value: key,\n }))\n\n return mappedStates\n}\n","import React from 'react'\n\nexport const formDefaultFields: IFormFieldsSection[] = [\n {\n name: 'basic-info',\n groupLabel: 'Create your account.',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'firstName',\n label: 'First Name',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'lastName',\n label: 'Last Name',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n {\n name: 'confirmEmail',\n label: 'Confirm Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'billing-info',\n groupLabel: '',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'zip',\n label: 'Post Code/Zip',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'country',\n label: 'Country',\n type: 'select',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'password-info',\n groupLabel: (\n <div className=\"email-info-block\">\n <span>Choose a password for your new</span>\n <b> Mana Common </b>\n <span>account</span>\n </div>\n ),\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'password',\n label: 'Password',\n type: 'password',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'confirmPassword',\n label: 'Confirm Password',\n type: 'password',\n required: true,\n onValidate: null,\n },\n ],\n },\n]\n","import { Button, CircularProgress } from '@mui/material'\nimport axios, { AxiosError } from 'axios'\nimport { Form, Formik, FormikValues } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { FC, useEffect, useState } from 'react'\n\nimport { getCountries, getProfileData, getStates, register } from '../../api'\nimport { CONFIGS, getFormInitialValues, getQueryVariable } from '../../utils'\nimport { FieldsSection } from '../common/FieldSection'\nimport { updateFormFieldsAttributes } from '../common/FieldSection/utils'\nimport ConfirmModal from '../confirmModal'\nimport { collectStates } from './adapters'\nimport { formDefaultFields } from './constants'\n\ninterface IRegistrationProps {\n formFields?: Array<IFormFieldsSection>;\n additionalFieldAttribute?: IFieldAttribute;\n registrationType: string;\n onGetCountriesSuccess?: (res: any) => void;\n onGetCountriesError?: (e: AxiosError) => void;\n onRegisterAccountSuccess?: (res: any) => void;\n onRegisterAccountError?: (e: AxiosError) => void;\n onGetStatesSuccess?: (res: any) => void;\n onGetStatesError?: (e: AxiosError) => void;\n customerEmail: string;\n}\n\nexport const RegistrationForm: FC<IRegistrationProps> = ({\n formFields,\n additionalFieldAttribute,\n registrationType,\n customerEmail,\n onGetCountriesSuccess = _identity,\n onGetCountriesError = _identity,\n onRegisterAccountSuccess = _identity,\n onRegisterAccountError = _identity,\n onGetStatesSuccess = _identity,\n onGetStatesError = _identity,\n}) => {\n const [errorMessage, setErrorMessage] = useState('')\n const [countries, setCountries] = useState<{ [key: string]: string | number }[]>([])\n const [states, setStates] = useState<{ [key: string]: string | number }[]>([])\n const [phoneValidationIsLoading, setPhoneValidationIsLoading] = useState(false)\n const [showErrorModal, setshowErrorModal] = useState(false)\n\n const updatedFormFields = updateFormFieldsAttributes(\n formFields || formDefaultFields,\n additionalFieldAttribute\n )\n\n // Fetch countries data\n const fetchCountries = async () => {\n try {\n const res = await getCountries()\n setCountries(\n _map(res.data, item => ({\n label: item.name,\n value: item.id,\n }))\n )\n onGetCountriesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const errorMessage = e?.response?.data?.message || 'Error'\n setErrorMessage(errorMessage)\n onGetCountriesError(e)\n }\n }\n }\n\n // Fetch states data\n const fetchStates = async (countryId?: string | number) => {\n try {\n const fetchCountryId = countryId ? countryId : '1'\n const res = await getStates(fetchCountryId)\n const states = _get(res, 'data', [])\n const mappedStates = collectStates(states)\n setStates(mappedStates)\n onGetStatesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const errorMessage = e?.response?.data?.message || 'Error'\n onGetStatesError(errorMessage)\n }\n }\n }\n\n const handleRegisterAccount = async (values: FormikValues) => {\n const accessHash = getQueryVariable('hash') || ''\n\n try {\n const bodyFormData = new FormData()\n\n bodyFormData.append('first_name', values.firstName)\n bodyFormData.append('last_name', values.lastName)\n bodyFormData.append('email', values.email)\n bodyFormData.append('zip', values.zip)\n bodyFormData.append('city', values.city)\n bodyFormData.append('country', values.country)\n bodyFormData.append('password', values.password)\n bodyFormData.append('phone', values.phone || '')\n bodyFormData.append('password_confirmation', values.confirmPassword)\n bodyFormData.append('client_id', CONFIGS.CLIENT_ID)\n bodyFormData.append('client_secret', CONFIGS.CLIENT_SECRET)\n bodyFormData.append('register_for', registrationType)\n bodyFormData.append('delegation_access_hash', accessHash)\n\n await register(bodyFormData)\n const profileRes = await getProfileData()\n\n window.localStorage.setItem('user_data', JSON.stringify(_get(profileRes, 'data')))\n onRegisterAccountSuccess(profileRes)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n console.log(e)\n const errorMessage = e?.response?.data?.message || 'Error'\n onRegisterAccountError(e)\n setshowErrorModal(true)\n setErrorMessage(errorMessage)\n } else if (e instanceof Error) {\n setErrorMessage(e?.message || 'Error')\n }\n }\n }\n\n useEffect(() => {\n fetchCountries()\n fetchStates()\n }, [])\n\n return (\n <div className=\"register-form-container\">\n <h2>Create an account</h2>\n <div className=\"register-sub-title\">\n To manage your tickets, please create an account:\n </div>\n {showErrorModal && (\n <ConfirmModal\n hideCancelBtn={true}\n message={errorMessage}\n onClose={() => (window.location.href = '/')}\n onConfirm={() => (window.location.href = '/')}\n />\n )}\n {errorMessage && <div className=\"register-error\">{errorMessage}</div>}\n <Formik\n initialValues={{\n ...getFormInitialValues(updatedFormFields),\n email: customerEmail,\n }}\n enableReinitialize={true}\n onSubmit={handleRegisterAccount}\n >\n {props => (\n <Form>\n <div className=\"register-body\">\n <FieldsSection\n disableField={'email'}\n containerClass=\"register\"\n formFields={updatedFormFields}\n values={props.values}\n setFieldValue={props.setFieldValue}\n setPhoneValidationIsLoading={setPhoneValidationIsLoading}\n countries={countries}\n states={states}\n onFieldChange={(name, value) => {\n if (name === 'country') {\n fetchStates(value)\n }\n }}\n />\n </div>\n <div className=\"button-container\">\n <Button\n className=\"register-button\"\n type=\"submit\"\n disabled={props.isSubmitting || phoneValidationIsLoading}\n >\n {props.isSubmitting ? <CircularProgress size={26} /> : 'Create Account'}\n </Button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n )\n}\n","/* eslint-disable max-len */\nexport const VERIFICATION_STATUSES = {\n PENDING: 'PENDING',\n APPROVED: 'APPROVED_VERIFIED',\n FAILED: 'FAILED',\n WRONG_CUSTOMER: 'WRONG_CUSTOMER',\n}\n\nexport const VERIFICATION_PROVIDERS = {\n JUMIO: 'jumio',\n STRIPE: 'stripe'\n}\n\nexport const TRANSACTION_STATUSES = {\n ERROR: 'ERROR',\n SUCCESS: 'SUCCESS',\n}\n\nexport const VERIFICATION_MESSAGES = {\n PENDING:\n 'Your ID verification is currently being processed. We will notify you as soon as it is completed. Thank you for your patience.',\n APPROVED: 'Your ID verification is approved!',\n FAILED: 'Unfortunately your ID verification has failed. Please try again.',\n WRONG_CUSTOMER: 'The order does not belong to the customer.',\n}\n\nexport const DELEGATION_ACCESS_ERROR = 'Delegation Access not found'\n","import { CircularProgress } from '@mui/material'\nimport { Field, Form, Formik } from 'formik'\nimport _identity from 'lodash/identity'\nimport React from 'react'\n\nimport { requiredValidator } from '../../validators'\nimport { CheckboxField, SelectField } from '../common'\nimport { CustomField } from '../common/CustomField'\nimport { getValidateFunctions } from '../common/FieldSection/utils'\n\nexport interface IIssueTicketForm {\n classNamePrefix?: string;\n handleSubmit: (values: any, resetForm: any) => void;\n selectTicketTypeOptions: Array<any>;\n initialValues?: any;\n}\n\nconst IssueTicketForm = ({\n classNamePrefix = 'delegations',\n handleSubmit = _identity,\n selectTicketTypeOptions,\n initialValues,\n}: IIssueTicketForm) => (\n <div className={`${classNamePrefix}-issue-form`}>\n <Formik\n initialValues={initialValues}\n onSubmit={(values, { resetForm, setSubmitting }) => {\n delete values.confirm\n handleSubmit(values, { resetForm, setSubmitting })\n }}\n >\n {({ isValid, values, isSubmitting }) => (\n <Form>\n <div className=\"body\">\n <div className=\"field-item\">\n <div className=\"field_label\">Ticket Type</div>\n <Field\n name=\"ticketTypeId\"\n label=\"Ticket Type\"\n component={SelectField}\n validate={requiredValidator}\n options={selectTicketTypeOptions}\n />\n </div>\n <div className=\"field-item\">\n <div className=\"field_label\">Name</div>\n <Field\n name=\"firstName\"\n label=\"Name\"\n component={CustomField}\n validate={requiredValidator}\n />\n </div>\n <div className=\"field-item\">\n <div className=\"field_label\">Last Name</div>\n <Field\n name=\"lastName\"\n label=\"Last Name\"\n component={CustomField}\n validate={requiredValidator}\n />\n </div>\n <div className=\"field-item\">\n <div className=\"field_label\">Email</div>\n <Field\n name=\"email\"\n label=\"Email\"\n component={CustomField}\n validate={requiredValidator}\n />\n </div>\n <div className=\"field-item\">\n <div className=\"field_label\">Confirm Email</div>\n <Field\n name=\"confirmEmail\"\n label=\"Confirm Email\"\n component={CustomField}\n validate={getValidateFunctions({\n element: {\n name: 'confirmEmail',\n label: 'Confirm Email',\n required: true,\n },\n values,\n })}\n />\n </div>\n </div>\n <div className=\"field-item checkbox_item\">\n <Field\n name=\"confirm\"\n label=\"I agree to ManaCommon's privacy policy\"\n type=\"checkbox\"\n validate={requiredValidator}\n component={CheckboxField}\n />\n </div>\n <div className=\"action-button\">\n <button type=\"submit\" disabled={!isValid}>\n {isSubmitting ? <CircularProgress size=\"22px\" /> : 'Issue Ticket'}\n </button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n)\n\nexport default IssueTicketForm\n","import Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport React from 'react'\n\nexport interface ITicketsAssignedTable {\n tableTitle?: string;\n classNamePrefix?: string;\n noTicketsAssignedText?: string;\n issuePageData: {\n tickets: Array<any>;\n };\n}\n\nconst TicketsAssignedTable = ({\n tableTitle = 'Tickets assigned',\n classNamePrefix = 'delegations',\n issuePageData,\n noTicketsAssignedText = \"You haven't issued any tickets yet.\",\n}: ITicketsAssignedTable) => (\n <div className={`${classNamePrefix}-tables-block`}>\n <div className={`${classNamePrefix}-ticket-holder`}>{tableTitle}</div>\n {issuePageData.tickets?.length ? (\n <TableContainer className=\"my-ticket-table\">\n <Table aria-label=\"collapsible table\">\n <TableHead>\n <TableRow>\n <TableCell key={'Ticket Holder'}>{'Ticket Holder'}</TableCell>\n <TableCell key={'Ticket Type'}>{'Ticket Type'}</TableCell>\n <TableCell key={'Status'}>{'Status'}</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {issuePageData.tickets?.map((ticket: any) => (\n <TableRow key={ticket.id}>\n <TableCell key={ticket.id + 'type'}>\n {ticket.firstName + ' ' + ticket.lastName}\n </TableCell>\n <TableCell key={ticket.id + 'ticketType'}>{ticket.ticketType}</TableCell>\n <TableCell key={ticket.id + 'status'}>{ticket.status}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n ) : (\n noTicketsAssignedText\n )}\n </div>\n)\n\nexport default TicketsAssignedTable\n","import Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport _map from 'lodash/map'\nimport React from 'react'\n\nimport { IDelegationsTicketType } from '../../api/guestTicketDelegation'\n\nexport interface ITicketsAvailableTable {\n tableTitle?: string;\n classNamePrefix?: string;\n issuePageData: {\n ticketTypes: IDelegationsTicketType;\n };\n}\n\nconst TicketsAvailableTable = ({\n tableTitle = 'Tickets available',\n classNamePrefix = 'delegations',\n issuePageData,\n}: ITicketsAvailableTable) => (\n <div className={`${classNamePrefix}-tables-block`}>\n <div className={`${classNamePrefix}-ticket-holder`}>{tableTitle}</div>\n <TableContainer className=\"my-ticket-table\">\n <Table aria-label=\"collapsible table\">\n <TableHead>\n <TableRow>\n <TableCell key={1}>{'Ticket Type'}</TableCell>\n <TableCell key={2}>{'Total Quantity'}</TableCell>\n <TableCell key={3}>{'Quantity Issued'}</TableCell>\n <TableCell key={4}>{'Quantity Remaining'}</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {_map(issuePageData.ticketTypes, (val, key) => (\n <TableRow key={key}>\n <TableCell key={key + 'name'}>{val.optionValue}</TableCell>\n <TableCell key={key + 'maxQty'}>{val.delegationMaxQuantity}</TableCell>\n <TableCell key={key + 'issued'}>{val.delegationQuantityIssued}</TableCell>\n <TableCell key={key + 'remaining'}>\n {Number(val.delegationMaxQuantity) - Number(val.delegationQuantityIssued)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n)\n\nexport default TicketsAvailableTable\n","import axios, { AxiosError } from 'axios'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { useEffect, useState } from 'react'\n\nimport { IDelegationsData, IDelegationsTicketType } from '../../api/guestTicketDelegation'\nimport { getDelegationTickets, issueTicket } from '../../api/index'\nimport { CONFIGS, getQueryVariable } from '../../utils'\nimport { Loader } from '../common'\nimport ConfirmModal from '../confirmModal'\nimport { DELEGATION_ACCESS_ERROR } from '../idVerificationContainer/constants'\nimport IssueTicketForm from './IssueTicketForm'\nimport TicketsAssignedTable from './TicketsAssignedTable'\nimport TicketsAvailableTable from './TicketsAvailableTable'\n\nexport interface IssueTicketData {\n headTitle?: string;\n classNamePrefix?: string;\n onGetIssuePageDataSuccess?: () => void;\n onGetIssuePageDataError?: (e: AxiosError) => void;\n}\n\nconst IssueComponent = ({\n classNamePrefix = 'delegations',\n headTitle = 'Manage Your Guest Tickets',\n onGetIssuePageDataSuccess = _identity,\n onGetIssuePageDataError = _identity,\n}: IssueTicketData) => {\n const [loading, setLoading] = useState(true)\n const [showMaxQtyModal, setShowMaxQtyModal] = useState(false)\n const [showSuccessModal, setShowSuccessModal] = useState(false)\n const [error, setError] = useState('')\n const accessHash = getQueryVariable('hash') || ''\n const [issuePageData, setIssuePageData] = useState<IDelegationsData>(\n {} as IDelegationsData\n )\n\n useEffect(() => {\n const fetchDelegationTickets = async () => {\n try {\n const res = await getDelegationTickets(accessHash)\n setLoading(false)\n setIssuePageData(res?.data?.data?.attributes || {})\n onGetIssuePageDataSuccess()\n } catch (e) {\n setLoading(false)\n if (axios.isAxiosError(e)) {\n onGetIssuePageDataError(e)\n }\n }\n }\n fetchDelegationTickets()\n }, [showSuccessModal])\n const selectTicketTypeOptions = _map(\n issuePageData.ticketTypes || ({} as IDelegationsTicketType),\n (val, key) => ({\n value: key,\n label: val.optionValue,\n })\n )\n return (\n <div className={`${classNamePrefix}-container`}>\n {loading ? (\n <Loader />\n ) : (\n <>\n {showMaxQtyModal && (\n <ConfirmModal\n hideCancelBtn={true}\n message={error}\n onClose={() =>\n error === DELEGATION_ACCESS_ERROR\n ? (window.location.href = '/')\n : setShowMaxQtyModal(false)\n }\n onConfirm={() =>\n error === DELEGATION_ACCESS_ERROR\n ? (window.location.href = '/')\n : setShowMaxQtyModal(false)\n }\n />\n )}\n {showSuccessModal && (\n <ConfirmModal\n hideCancelBtn={true}\n message=\"Your ticket successfully issued.\"\n onClose={() => setShowSuccessModal(false)}\n onConfirm={() => setShowSuccessModal(false)}\n />\n )}\n <div className={`${classNamePrefix}-head-title`}>{headTitle}</div>\n <div className={`${classNamePrefix}-inner-blocks`}>\n <div className={`${classNamePrefix}-image-block`}>\n <img\n src={`${CONFIGS.BASE_URL}${issuePageData?.eventImage}`}\n alt=\"main_event_img\"\n title=\"\"\n />\n </div>\n <div className={`${classNamePrefix}-tables`}>\n <TicketsAvailableTable\n tableTitle=\"Tickets available\"\n issuePageData={issuePageData}\n classNamePrefix=\"delegations\"\n />\n <TicketsAssignedTable\n tableTitle=\"Tickets assigned\"\n issuePageData={issuePageData}\n classNamePrefix=\"delegations\"\n />\n <div className={`${classNamePrefix}-issue-block`}>\n <div className={`${classNamePrefix}-issue-title`}>Issue New Tickets</div>\n <div className={`${classNamePrefix}-issue-subtitle`}>\n Please select the type of tickets and enter recipient details:\n </div>\n </div>\n <IssueTicketForm\n classNamePrefix={'delegations'}\n handleSubmit={async (values: any, { resetForm, setSubmitting }) => {\n try {\n await issueTicket(accessHash, values)\n setShowSuccessModal(true)\n resetForm()\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message || 'Error'\n setError(error)\n } else if (e instanceof Error) {\n setError(e?.message || 'Error')\n }\n setShowMaxQtyModal(true)\n } finally {\n setLoading(false)\n setSubmitting(false)\n }\n }}\n selectTicketTypeOptions={selectTicketTypeOptions}\n initialValues={{\n ticketTypeId: '',\n firstName: '',\n lastName: '',\n email: '',\n confirmEmail: '',\n confirm: false,\n }}\n />\n </div>\n </div>\n </>\n )}\n </div>\n )\n}\n\nexport default IssueComponent\n","import _get from 'lodash/get'\n\nimport { addToCart, getCheckoutPageConfigs, postOnCheckout } from '../../api'\nimport { createCheckoutDataBodyWithDefaultHolder, isBrowser } from '../../utils'\n\ninterface IAddToCartFuncProps {\n eventId: string | number;\n data: any;\n ticketQuantity: number;\n enableBillingInfoAutoCreate?: boolean;\n}\n\nexport const addToCartFunc = async ({\n eventId,\n data,\n ticketQuantity,\n enableBillingInfoAutoCreate = true,\n}: IAddToCartFuncProps) => {\n const result = await addToCart(eventId, data)\n const pageConfigsDataResponse = await getCheckoutPageConfigs()\n\n if (result.status === 200 && pageConfigsDataResponse.status === 200) {\n const pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const {\n skip_billing_page: skipBillingPage = false,\n has_add_on: hasAddOn = false,\n free_ticket: freeTicket = false,\n } = pageConfigsData\n\n let hash: string | number | undefined = ''\n let total: string | number | undefined = ''\n\n isBrowser && window.localStorage.removeItem('add_ons')\n\n if (skipBillingPage && !hasAddOn) {\n // Get user data for checkout data\n const userData =\n isBrowser && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketQuantity,\n userData\n )\n\n const checkoutResponse = enableBillingInfoAutoCreate\n ? await postOnCheckout(checkoutBody, freeTicket)\n : null\n\n hash = checkoutResponse?.data?.attributes?.hash || ''\n total = checkoutResponse?.data?.attributes?.total || ''\n }\n\n return {\n skip_billing_page: skipBillingPage,\n event_id: String(eventId),\n hash,\n total,\n hasAddOn,\n }\n }\n\n return null\n}\n","import _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _isEmpty from 'lodash/isEmpty'\nimport _values from 'lodash/values'\n\nexport const getTierIdBasedOnSeatId = (seatId: string, eventSeats: Array<EventSeat>) => {\n let tierId: number | string = ''\n\n _forEach(eventSeats, group => {\n _forEach(group.seats, (seatsCount, rowId) => {\n const [row_id, seat_id] = seatId.split(':')\n if (row_id === rowId && seat_id <= seatsCount) {\n tierId = Number(group.tier_id)\n return false\n }\n return true\n })\n })\n\n return tierId\n}\n\nexport const getButtonLabel = (count: number, tableMapEnabled: boolean) => {\n if (!count) {\n return tableMapEnabled ? `GET TABLES` : `GET TICKETS`\n } else if (count === 1) {\n return tableMapEnabled ? `GET ${count} TABLE` : `GET ${count} TICKET`\n }\n return tableMapEnabled ? `GET ${count} TABLES` : `GET ${count} TICKETS`\n}\n\nexport const getOwnReservationsBasedOnStatuses = (statuses: any) => {\n const ownReservations: string[] = []\n Object.keys(statuses).forEach((groupRowId: string) =>\n Object.keys(statuses[groupRowId]).forEach((seatIndex: string | number) => {\n if (statuses[groupRowId][seatIndex] === 'OR') {\n ownReservations.push(`${groupRowId}:${seatIndex}`)\n } else if (statuses[groupRowId][seatIndex] === 'H') {\n statuses[groupRowId][seatIndex] = 'BLOCKED'\n }\n })\n )\n return ownReservations\n}\n\nexport const getTicketDropdownData = (\n reservationData: Array<SeatReservationData>,\n tierReleations: TicketTypeTierRelations\n) => {\n const ticketsDropdownsData: Array<ITicketsDropdownsData> = []\n _forEach(reservationData, reservation => {\n if (tierReleations[reservation.tierId]) {\n const ticketsData = _values(tierReleations[reservation.tierId])\n ticketsDropdownsData.push({\n seatId: reservation.seatId,\n tierId: reservation.tierId,\n ticketsData,\n })\n } else {\n ticketsDropdownsData.push({\n seatId: reservation.seatId,\n tierId: reservation.tierId,\n ticketsData: [\n {\n ticket_type_tier_id: reservation.tierId,\n ticket_type_name: 'Please select Ticket Type',\n ticket_type_price: '',\n ticket_type_id: 'default',\n },\n ],\n })\n }\n })\n return ticketsDropdownsData\n}\n\nexport const getAddToCartRequestData = ({\n eventId,\n reservations = [],\n selectedSeats = [],\n selectedTickets = [],\n guestCounts = {},\n}: any) => {\n const hasGuests = !_isEmpty(guestCounts)\n\n const addToCartData: ICartRequestData = {\n attributes: {\n alternative_view_id: null,\n product_cart_quantity: reservations.length,\n product_options: {},\n product_id: eventId,\n ticket_types: {},\n },\n }\n\n const productOptions = {} as any\n const ticketTypes = {} as any\n\n _forEach(reservations, (item, index) => {\n const ticket = _find(\n selectedSeats[item],\n sitem => sitem.ticket_type_id === selectedTickets[item]\n )\n productOptions[ticket.ticket_type_option] = ticket.ticket_type_id\n\n const ticketTypesKey = hasGuests ? index : ticket.ticket_type_id\n const quantity = hasGuests\n ? guestCounts[item]\n : (ticketTypes[ticket.ticket_type_id]?.quantity || 0) + 1\n\n ticketTypes[ticketTypesKey] = {\n quantity,\n product_options: {\n [ticket.ticket_type_option]: ticket.ticket_type_id,\n ticket_price: ticket.ticket_type_price,\n },\n }\n })\n\n addToCartData.attributes.product_options = productOptions\n addToCartData.attributes.ticket_types = ticketTypes\n\n return addToCartData\n}\n\nexport const getTierRelationsArray = (data: Array<TicketTypeTierRelationsData>) => {\n const ticketTypeTireRelationsArray: Array<string | number | null> = []\n _forEach(data, (item: TicketTypeTierRelationsData) => {\n ticketTypeTireRelationsArray.push(...(_values(item) as any))\n })\n\n return ticketTypeTireRelationsArray\n}\n","import 'tf-seat-map-view/dist/index.css'\n\nimport React, { useEffect } from 'react'\nimport ReactDom from 'react-dom'\nimport SeatMapView from 'tf-seat-map-view'\n\nimport { Loader } from '../common'\nimport { getTierRelationsArray } from './utils'\n\nconst CONTAINER_DEFAULT_ID = 'seat_map_default_container'\n\n// Temp solution\ndeclare global {\n interface Window {\n tierPrices: any;\n }\n}\n\nexport const SeatMapComponent = (props: ISeatMapContainerProps) => {\n const { seatMapProps, mapContainerId } = props\n const {\n seatData,\n statuses,\n seatMapType = null,\n seatMapEvents = {},\n ticketTypeTierRelations = {},\n tierPrices,\n isReserving,\n predefinedSeats,\n isLoadingSeatMapData,\n } = seatMapProps\n\n useEffect(() => {\n const parentElement = document.getElementById(mapContainerId || CONTAINER_DEFAULT_ID)\n\n // Temp solution\n window.tierPrices = tierPrices\n\n if (parentElement) {\n let mapComponent = null\n\n if (!(seatData && statuses) || isLoadingSeatMapData) {\n mapComponent = <Loader />\n } else {\n mapComponent = (\n <SeatMapView\n disabled={isReserving}\n loading={isReserving}\n events={seatMapEvents}\n isSelectionOn={false}\n seatData={seatData}\n statuses={statuses}\n ticketTypeTireRelationsArray={getTierRelationsArray(ticketTypeTierRelations)}\n width={Math.min(parentElement?.clientWidth || 800, 800)}\n height={Math.min(parentElement?.clientWidth || 800, 800)}\n isBlockMap={seatMapType === 'block'}\n isTableMap={seatMapType === 'table'}\n predefinedSeats={predefinedSeats}\n />\n )\n }\n\n ReactDom.render(mapComponent, parentElement)\n }\n }, [\n isReserving,\n mapContainerId,\n seatData,\n seatMapEvents,\n seatMapType,\n tierPrices,\n statuses,\n ticketTypeTierRelations,\n ])\n\n return <div id={CONTAINER_DEFAULT_ID} />\n}\n","import { CSSProperties } from '@emotion/serialize'\nimport { createTheme, Select, SelectChangeEvent, ThemeOptions } from '@mui/material'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport FormControl from '@mui/material/FormControl'\nimport InputLabel from '@mui/material/InputLabel'\nimport MenuItem from '@mui/material/MenuItem'\nimport Tooltip from '@mui/material/Tooltip'\nimport { ThemeProvider } from '@mui/private-theming'\nimport _find from 'lodash/find'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _keys from 'lodash/keys'\nimport _map from 'lodash/map'\nimport _some from 'lodash/some'\nimport React, { useState } from 'react'\nimport { Button } from 'react-bootstrap'\n\nimport { createFixedFloatNormalizer } from '../../normalizers'\nimport { createMarkup } from '../../utils'\nimport { getButtonLabel, getTicketDropdownData } from './utils'\n\nexport const TicketsSection = (\n props: ITicketsSectionProps & {\n themeOptions?: ThemeOptions & {\n input?: CSSProperties;\n checkbox?: CSSProperties;\n };\n }\n) => {\n const {\n ticketTypeTierRelations,\n reservedSeats,\n theme = 'light',\n getTicketsBtnLabel,\n contentStyle = {},\n isButtonScrollable = false,\n themeOptions,\n handleGetTicketClick,\n handleCancelReservation,\n ticketDeleteButtonContent = 'Delete',\n ticketInfoContent = 'Info',\n selectedTickets,\n handleTicketSelect,\n currencySymbol,\n tableMapEnabled = false,\n guestCounts,\n setGuestCounts,\n isAddingToCart,\n } = props\n\n const [selectedTicketsInfo, setSelectedTicketsInfo] = useState<{\n [seatId: string]: boolean | undefined;\n }>({})\n\n const bookButtonIsDisabled =\n _some(selectedTickets, item => !item) ||\n _isEmpty(reservedSeats) ||\n reservedSeats.length !== _keys(selectedTickets).length\n const themeMui = createTheme(themeOptions)\n\n const ticketsDropdownsData = getTicketDropdownData(\n reservedSeats,\n ticketTypeTierRelations\n )\n\n const handleTicketChange = (event: SelectChangeEvent<string>, seatId: string) => {\n const {\n target: { value },\n } = event\n\n if (value !== 'default') {\n handleTicketSelect(value, seatId)\n }\n }\n\n const handleShowtTicketInfo = (seatId: string) => {\n setSelectedTicketsInfo(prevState => ({ ...prevState, [seatId]: !prevState[seatId] }))\n }\n\n return (\n <ThemeProvider theme={themeMui}>\n <div className={`get-tickets-page ${theme}`} style={contentStyle}>\n <div className=\"tickets-section\">\n {_map(selectedTickets, (ticketItem: string, key: string) => {\n const dropdownData =\n _find(ticketsDropdownsData, item => item.seatId === key) ||\n ({} as ITicketsDropdownsData)\n\n const selectedTicketData = _find(\n dropdownData.ticketsData,\n ticket => ticket.ticket_type_id === ticketItem\n ) as TicketTypeTierRelationsData\n\n // guest count dropdown options\n const startNum = Number(selectedTicketData?.ticket_type_min_number_of_guests)\n const endNum = Number(selectedTicketData?.ticket_type_max_number_of_guests)\n const numLength = endNum - startNum + 1\n const showGuestCountDropdown = Boolean(startNum && endNum)\n const showDescription = Boolean(selectedTicketData?.description)\n\n // prices\n const guestPrice =\n (guestCounts[dropdownData.seatId] - startNum) *\n Number(selectedTicketData?.guest_price)\n\n const finalPrice = createFixedFloatNormalizer(2)(\n selectedTicketData?.ticket_type_price + guestPrice\n )\n\n return (\n <div className=\"ticket\" key={key}>\n <div className=\"ticketsDropdowns\">\n <Select\n value={ticketItem || 'default'}\n onChange={event => handleTicketChange(event, dropdownData.seatId)}\n inputProps={{ 'aria-label': 'Without label' }}\n MenuProps={{\n PaperProps: {\n sx: { maxHeight: 150 },\n className: 'get-tickets-paper',\n },\n }}\n displayEmpty\n sx={{ borderRadius: 0 }}\n >\n <MenuItem value={'default'}>\n {`Please select ${tableMapEnabled ? 'Table Type' : 'Ticket Type'}`}\n </MenuItem>\n {_map(dropdownData.ticketsData, (option, index) => {\n if (option.ticket_type_id !== 'default') {\n return (\n <MenuItem value={option.ticket_type_id} key={index}>\n {option.ticket_type_name}\n </MenuItem>\n )\n }\n return null\n })}\n </Select>\n <Button\n className=\"ticket-delete\"\n onClick={() => {\n handleCancelReservation(dropdownData.seatId, dropdownData.tierId)\n }}\n >\n {ticketDeleteButtonContent}\n </Button>\n </div>\n {selectedTicketData && (\n <>\n <div style={{ display: 'flex' }}>\n <div\n style={{\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n }}\n >\n <div className=\"ticketPrice\">\n Price:\n <span className=\"ticketPrice-value\">\n {`${currencySymbol} ${finalPrice}`}\n </span>\n <span className=\"fees\">\n {selectedTicketData.fee_included\n ? ' (incl. Fees)'\n : ' (excl. Fees)'}\n </span>\n </div>\n {!_isEmpty(selectedTicketData.ticket_type_deposit) && (\n <div className=\"ticketDeposit\">\n Deposit:\n <span className=\"ticketPrice-value\">\n {` ${selectedTicketData?.ticket_type_deposit}%`}\n </span>\n </div>\n )}\n </div>\n <div\n style={{\n width: '100%',\n display: 'flex',\n justifyContent: 'end',\n alignItems: 'center',\n marginRight: 16,\n }}\n >\n {showDescription && (\n <Tooltip\n title=\"View Ticket Info\"\n placement=\"left\"\n arrow\n componentsProps={{\n tooltip: {\n sx: {\n backgroundColor: 'common.black',\n marginRight: '6px !important',\n '& .MuiTooltip-arrow': {\n color: 'common.black',\n },\n },\n },\n }}\n >\n <div\n className=\"ticket-info\"\n onClick={() => handleShowtTicketInfo(dropdownData.seatId)}\n onKeyDown={() => handleShowtTicketInfo(dropdownData.seatId)}\n >\n {ticketInfoContent}\n </div>\n </Tooltip>\n )}\n {showGuestCountDropdown && (\n <FormControl variant=\"outlined\" sx={{ m: 1, minWidth: 80 }}>\n <InputLabel id=\"demo-simple-select-standard-label\" shrink>\n GUESTS\n </InputLabel>\n <Select\n label=\"GUESTS\"\n labelId=\"demo-simple-select-standard-label\"\n value={guestCounts[dropdownData.seatId] || startNum}\n onChange={event => {\n setGuestCounts({\n ...guestCounts,\n [dropdownData.seatId]: Number(event.target.value),\n })\n }}\n inputProps={{ 'aria-label': 'Without label' }}\n MenuProps={{\n PaperProps: {\n sx: { maxHeight: 150 },\n className: 'get-tickets-paper',\n },\n }}\n displayEmpty\n sx={{ borderRadius: 0 }}\n >\n {_map(\n Array.from({ length: numLength }, (_, i) => startNum + i),\n (option, index) => (\n <MenuItem value={option} key={index}>\n {option}\n </MenuItem>\n )\n )}\n </Select>\n </FormControl>\n )}\n </div>\n </div>\n {selectedTicketsInfo[dropdownData.seatId] && (\n <div\n className=\"ticket-description-content\"\n dangerouslySetInnerHTML={createMarkup(\n selectedTicketData.description || ''\n )}\n />\n )}\n </>\n )}\n </div>\n )\n })}\n </div>\n <div>\n <Button\n className={`book-button\n ${bookButtonIsDisabled ? 'disabled' : ''}\n ${isButtonScrollable ? 'is-scrollable' : ''}\n `}\n onClick={!bookButtonIsDisabled ? handleGetTicketClick : _identity}\n disabled={isAddingToCart}\n >\n {isAddingToCart ? (\n <CircularProgress size={20} style={{ marginLeft: 10 }} />\n ) : (\n getTicketsBtnLabel || getButtonLabel(reservedSeats.length, tableMapEnabled)\n )}\n </Button>\n </div>\n </div>\n </ThemeProvider>\n )\n}\n","import React from 'react'\nimport Modal from '@mui/material/Modal'\nimport Box from '@mui/material/Box'\n\ninterface IRedirectModal {\n message: string\n onClickOk: () => void\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '10%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto',\n}\n\nexport const RedirectModal = ({\n message = 'Your cart has expired. Please click on \"OK\" to return to the ticket selection page.',\n onClickOk = () => {},\n}: IRedirectModal) => {\n return (\n <Modal\n open={true}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"redirect-modal\"\n >\n <Box style={style}>\n <p>{message}</p>\n <div className=\"footer\">\n <button onClick={onClickOk}>OK</button>\n </div>\n </Box>\n </Modal>\n )\n}\n","import Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Modal from '@mui/material/Modal'\nimport { Field, Form, Formik } from 'formik'\nimport React, { useState } from 'react'\n\nimport { sendRSVPInfo } from '../../api'\nimport { isBrowser } from '../../utils'\nimport { combineValidators, emailValidator, requiredValidator } from '../../validators'\nimport { CustomField, Loader } from '../common/index'\n\ninterface IRsvpContainerPage {\n showSection?: boolean;\n eventId: number;\n}\n\ninterface IRSVPValuesTypes {\n email: string;\n}\n\nconst style: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minWidth: 480,\n backgroundColor: '#e3e3e3',\n border: '1px solid white',\n outline: 'none',\n padding: '14px',\n maxHeight: '85vh',\n overflow: 'auto',\n}\n\nexport const RsvpContainer = ({ showSection = false, eventId }: IRsvpContainerPage) => {\n const userDataEncoded = isBrowser ? window.localStorage.getItem('user_data') : ''\n const parsedData = JSON.parse(userDataEncoded || '{}')\n\n const [loading, setLoading] = useState(false)\n const [modal, setModal] = useState({ isOpen: false, text: '' })\n\n const handleModalClose = () => {\n setModal({ isOpen: false, text: '' })\n }\n\n const handleSubmit = async (values: IRSVPValuesTypes) => {\n try {\n setLoading(true)\n\n const requestData = { data: { email: values.email } }\n const response = await sendRSVPInfo(eventId, requestData)\n\n setModal({ isOpen: true, text: response.message })\n } catch (error) {\n if (error.response.status === 403) {\n setModal({ isOpen: true, text: error.response.data?.message })\n }\n } finally {\n setLoading(false)\n }\n }\n\n if (!showSection) {\n return null\n }\n\n return (\n <>\n <Modal\n open={modal.isOpen}\n onClose={handleModalClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n className=\"rsvp-modal\"\n >\n <Box style={style} className=\"rsvp-modal-box\">\n <div className=\"rsvp-modal-container\">\n <div className=\"rsvp-modal-header\">{modal.text}</div>\n <div className=\"rsvp-modal-button\">\n <button type=\"button\" onClick={handleModalClose}>\n OK\n </button>\n </div>\n </div>\n </Box>\n </Modal>\n <div className=\"rsvp-container\">\n {loading ? (\n <Loader />\n ) : (\n <>\n <div className=\"rsvp-header\">RSVP</div>\n <div className=\"rsvp-email-container\">\n <Formik\n initialValues={{\n email: parsedData?.email || '',\n }}\n onSubmit={handleSubmit}\n enableReinitialize\n >\n <Form>\n <div className=\"rsvp-email-input-container\">\n <Field\n name=\"email\"\n label=\"EMAIL ADDRESS\"\n type=\"email\"\n validate={combineValidators(\n (value: string) =>\n requiredValidator(value, 'Please enter your Email'),\n (value: string) => emailValidator(value)\n )}\n component={CustomField}\n />\n </div>\n <div className=\"rsvp-button-container\">\n <Button type=\"submit\">RSVP</Button>\n </div>\n </Form>\n </Formik>\n </div>\n </>\n )}\n </div>\n </>\n )\n}\n","import React from 'react'\n\nexport const formFieldsNotLoggedIn: IFormFieldsSection[] = [\n {\n name: 'basic-info',\n groupLabel: (\n <>\n <span>\n If you want to enter your details manually, please type them below to create an\n account, then click on\n </span>\n <b> Confirm Registration:</b>\n </>\n ),\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'firstName',\n label: 'First Name',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'lastName',\n label: 'Last Name',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n {\n name: 'confirmEmail',\n label: 'Confirm Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'billing-info',\n groupLabel: '',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'zip',\n label: 'Post Code/Zip',\n type: 'text',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'country',\n label: 'Country',\n type: 'select',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'password-info',\n groupLabel: (\n <div className=\"email-info-block\">\n <span>Choose a password for your new</span>\n <b> Mana Common </b>\n <span>account</span>\n </div>\n ),\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n className: 'half-width',\n name: 'password',\n label: 'Password',\n type: 'password',\n required: true,\n onValidate: null,\n },\n {\n className: 'half-width',\n name: 'confirmPassword',\n label: 'Confirm Password',\n type: 'password',\n required: true,\n onValidate: null,\n },\n ],\n },\n]\n\nexport const formFieldsLoggedIn: IFormFieldsSection[] = [\n {\n name: 'basic-info-logged-in',\n groupLabel:\n 'To confirm your pre-registration for {event_name} simply click on the confirmation button below.',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n {\n name: 'confirmEmail',\n label: 'Confirm Email',\n type: 'email',\n required: true,\n onValidate: null,\n },\n ],\n },\n {\n name: 'billing-info-logged-in',\n groupLabel: '',\n groupLabelClassName: '',\n groupClassName: '',\n fields: [\n {\n name: 'numTickets',\n label: 'How many tickets do you want to buy?',\n type: 'select',\n required: true,\n options: new Array(10).fill(null).map((_, index) => ({\n label: index + 1,\n value: index + 1,\n })),\n onValidate: null,\n },\n {\n name: 'holderAge',\n label: 'Ticket Holder Age',\n type: 'date',\n required: true,\n onValidate: null,\n },\n {\n name: 'brandOptIn',\n label: 'I would like to be updated on Mana Common news, events and offers.',\n type: 'checkbox',\n },\n ],\n },\n]\n","import { FormikValues } from 'formik'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport _split from 'lodash/split'\n\nimport { combineValidators, requiredValidator } from '../../validators'\nimport { IShareButton } from '../confirmationContainer'\n\nexport const getValidateFunctions = ({\n element,\n values,\n}: {\n element: IFormField;\n values: FormikValues;\n}) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const validationFunctions: any[] = []\n if (element.required) {\n validationFunctions.push(requiredValidator)\n }\n\n if (element.onValidate) {\n validationFunctions.push(element.onValidate)\n }\n\n if (element.name === 'confirmEmail') {\n const isSameEmail = (confirmEmail?: string) =>\n values.email !== confirmEmail ? 'Please confirm your email address correctly' : null\n validationFunctions.push(isSameEmail)\n }\n\n if (element.name === 'confirmPassword') {\n const isSame = (confirmPassword?: string) =>\n values.password !== confirmPassword ? 'Password confirmation does not match' : null\n validationFunctions.push(isSame)\n }\n\n return combineValidators(...validationFunctions)\n}\n\nexport const getFormInitialValues = (fieldsSections: IFormFieldsSection[]) => {\n const initialValues: { [key: string]: string | number | boolean } = {}\n const isWindowDefined = typeof window !== 'undefined'\n const userData = JSON.parse(\n isWindowDefined ? window.localStorage.getItem('user_data') || '{}' : '{}'\n ) as IProfileData\n\n _forEach(fieldsSections, item => {\n _forEach(item.fields, fieldItem => {\n switch (fieldItem.name) {\n case 'country':\n case 'numTickets':\n initialValues[fieldItem.name] = 1\n break\n case 'brandOptIn':\n initialValues[fieldItem.name] = true\n break\n case 'confirmEmail':\n initialValues[fieldItem.name] =\n _get(userData, fieldItem.name) || _get(userData, 'email') || ''\n break\n default:\n initialValues[fieldItem.name] = _get(userData, fieldItem.name) || ''\n break\n }\n })\n })\n\n return initialValues\n}\n\nexport const updateFormFieldsAttributes = (\n formFields: IFormFieldsSection[],\n attributes?: IFieldAttribute\n) => {\n if (attributes && !_isEmpty(attributes)) {\n const updatedFormFields = _map(formFields, fieldSection => {\n const fieldSectionAttributes = attributes[fieldSection.name] || {}\n\n const updatedFields = _map(fieldSection.fields, fieldItem => {\n const fieldItemAttributes = attributes[fieldItem.name] || {}\n return { ...fieldItem, ...fieldItemAttributes }\n })\n\n return {\n ...fieldSection,\n ...fieldSectionAttributes,\n fields: updatedFields,\n }\n })\n\n return updatedFormFields\n }\n return formFields\n}\n\nexport const shareOptionsAdapter = (\n data: Array<IShareOptionsActionData>,\n shareUrl: string\n) => {\n const adaptedData: Array<IShareButton> = []\n _forEach(data, option => {\n if (option.action !== 'shared_url') {\n const [platform, method] = _split(option.action, '_')\n const mainLabel = method ? method[0].toUpperCase() + method.substring(1) : 'Share'\n adaptedData.push({\n mainLabel: option.action === 'twitter' ? 'Tweet' : mainLabel + ' on',\n subLabel:\n option.action === 'twitter'\n ? ' to your followers'\n : platform[0].toUpperCase() + platform.substring(1),\n platform,\n shareData: {\n quote: 'as',\n url: option.socialUrl || shareUrl,\n },\n points: option.point,\n eventActionId: option.id,\n oneTimeAction: option.oneTimeAction,\n alreadyApplied: option.alreadyApplied,\n })\n }\n })\n return adaptedData\n}\n\nexport const getShuffleMethodByName = (\n tokenShuffleMethod: string\n): ((value: string) => string) => {\n const reverseString = (value: string) => value.split('').reverse().join('')\n const symmetricShuffleString = (value: string) => {\n const lengthOfStr = value.length\n const part1 = value.substring(0, lengthOfStr / 2)\n return value.substring(lengthOfStr / 2) + part1\n }\n const shuffleEveryTwoSymbolsInString = (value: string): string => {\n const words = value.split('')\n let shuffledStr = ''\n for (let i = 0; i < words.length; i += 2) {\n shuffledStr = shuffledStr.concat(words[i + 1], words[i])\n }\n return shuffledStr\n }\n\n if (tokenShuffleMethod === 'reverse_string') {\n return reverseString\n } else if (tokenShuffleMethod === 'symmetric_shuffle_string') {\n return symmetricShuffleString\n } else if (tokenShuffleMethod === 'shuffle_every_two_symbols_in_string')\n return shuffleEveryTwoSymbolsInString\n return _identity\n}\n","import { Field, FormikValues } from 'formik'\nimport _map from 'lodash/map'\nimport React, { FC } from 'react'\n\nimport { replaceVarInString } from '../../utils'\nimport {\n CheckboxField,\n CustomField,\n NativeSelectField,\n PhoneNumberField,\n} from '../common'\nimport { DatePickerField } from '../common/DatePickerField'\nimport { getValidateFunctions } from './utils'\n\nconst isDocumentDefined = typeof document !== 'undefined'\n\nexport interface IFieldsSectionProps {\n formFields?: IFormFieldsSection[];\n values: FormikValues;\n setFieldValue: (\n field: string,\n value: FormikValues,\n shouldValidate?: boolean | undefined\n ) => void;\n\n countries?: { [key: string]: string | number }[];\n theme?: 'dark' | 'light';\n containerClass?: string;\n}\n\nconst SectionContainer: FC<{ className: string }> = ({\n children,\n className,\n}) => <div className={className}>{children}</div>\n\nconst insertHTML = (elementId: string, text = '') => {\n if (isDocumentDefined) {\n const elem = document && document.getElementById(elementId)\n\n if (!elem?.childNodes.length) {\n elem?.insertAdjacentHTML('afterbegin', text)\n }\n }\n\n return null\n}\n\nconst getFieldClassNames = (id: string, existingClassNames: string) => {\n if (isDocumentDefined) {\n const elem = document && document.getElementById(id)\n\n if ((elem?.parentElement?.clientWidth || 0) < 375) {\n return existingClassNames + ' full-width'\n }\n }\n\n return existingClassNames\n}\n\nexport const FieldsSection = ({\n formFields = [],\n\n countries = [],\n\n values,\n setFieldValue,\n theme,\n containerClass = '',\n}: IFieldsSectionProps) => (\n <>\n {_map(formFields, (item, index) => {\n const {\n name,\n groupLabel,\n groupLabelVars = [],\n groupLabelClassName,\n groupClassName = '',\n fields,\n } = item\n return (\n <SectionContainer key={name} className={groupClassName}>\n <span id={`group_label_${index}`} className={groupLabelClassName}>\n {typeof groupLabel === 'string'\n ? insertHTML(\n `group_label_${index}`,\n replaceVarInString(groupLabel, groupLabelVars)\n )\n : groupLabel}\n </span>\n <div className={`fields-container ${groupClassName}`}>\n {_map(fields, (fieldData, fieldIndex) => {\n const {\n name,\n label,\n className = 'full-width',\n type,\n component,\n options = [],\n } = fieldData\n const id = `${name}-${fieldIndex}`\n const classNames = `${containerClass}-container__field ${className}`\n\n return (\n component || (\n <div\n key={name}\n id={id}\n className={getFieldClassNames(id, classNames)}\n >\n <Field\n name={name}\n label={label}\n type={type}\n validate={getValidateFunctions({\n element: fieldData,\n values,\n })}\n setFieldValue={setFieldValue}\n component={\n type === 'checkbox'\n ? CheckboxField\n : type === 'select'\n ? NativeSelectField\n : type === 'phone'\n ? PhoneNumberField\n : type === 'date'\n ? DatePickerField\n : CustomField\n }\n selectOptions={name === 'country' ? countries : options}\n theme={theme}\n />\n </div>\n )\n )\n })}\n </div>\n </SectionContainer>\n )\n })}\n </>\n)\n","import { Button, CircularProgress } from '@mui/material'\nimport axios, { AxiosError } from 'axios'\nimport { Form, Formik, FormikValues } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { FC, useEffect, useState } from 'react'\n\nimport { confirmPreRegistration, getCountries, getProfileData, register } from '../../api'\nimport { useCookieListener } from '../../hooks/useCookieListener'\nimport { CONFIGS, getCookieByName, getQueryVariable } from '../../utils'\nimport SnackbarAlert from '../common/SnackbarAlert'\nimport ConfirmModal from '../confirmModal'\nimport { ForgotPasswordModal, IForgotPasswordProps } from '../forgotPasswordModal'\nimport { LoginModal, Props } from '../loginModal'\nimport { formFieldsLoggedIn, formFieldsNotLoggedIn } from './constants'\nimport { FieldsSection } from './FieldsSection'\nimport { getFormInitialValues, updateFormFieldsAttributes } from './utils'\n\nconst X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\nconst isWindowDefined = typeof window !== 'undefined'\n\ninterface IPreRegistrationProps extends Props, IForgotPasswordProps {\n eventId: string | number;\n formFields?: IFormFieldsSection[];\n additionalFieldAttribute?: IFieldAttribute;\n isPreregistrationStarted: boolean;\n onGetCountriesSuccess?: (res: any) => void;\n onGetCountriesError?: (e: AxiosError) => void;\n onConfirmationSuccess?: (res: any) => void;\n onConfirmationError?: (e: AxiosError) => void;\n onLoginSuccess?: (res: any) => void;\n}\n\nexport const PreRegistration: FC<IPreRegistrationProps> = ({\n eventId,\n formFields: pFormFields,\n additionalFieldAttribute,\n isPreregistrationStarted,\n logo,\n showForgotPasswordButton,\n onLoginSuccess = _identity,\n onForgotPasswordSuccess = _identity,\n onForgotPasswordError = _identity,\n onGetCountriesSuccess = _identity,\n onGetCountriesError = _identity,\n onConfirmationSuccess = _identity,\n onConfirmationError = _identity,\n}) => {\n const [error, setError] = useState('')\n const [showModalLogin, setShowModalLogin] = useState(false)\n const [alreadyHasUser, setAlreadyHasUser] = useState(false)\n const [showModalForgotPassword, setShowModalForgotPassword] = useState(false)\n const [countries, setCountries] = useState<{ [key: string]: string | number }[]>([])\n const [isLoggedIn, setIsLoggedIn] = useState(Boolean(getCookieByName(X_TF_ECOMMERCE)))\n const [confirmModalState, setConfirmModalState] = useState({ show: false, message: '' })\n const [, setUserData] = useState({} as IProfileData)\n useCookieListener(X_TF_ECOMMERCE, value => setIsLoggedIn(Boolean(value)))\n\n const formFields = updateFormFieldsAttributes(\n pFormFields || isLoggedIn ? formFieldsLoggedIn : formFieldsNotLoggedIn,\n additionalFieldAttribute\n )\n\n useEffect(() => {\n // fetch countries data\n const fetchCountries = async () => {\n try {\n const res = await getCountries()\n setCountries(\n _map(_get(res, 'data'), item => ({\n label: item.name,\n value: Number(item.id),\n }))\n )\n onGetCountriesSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n const error = e?.response?.data?.message || 'Error'\n setError(error)\n onGetCountriesError(e)\n }\n }\n }\n fetchCountries()\n }, [])\n\n const hash = getQueryVariable('hash') || ''\n const referrerId = getQueryVariable('referrer_id') || ''\n return (\n <div className=\"pre-registration-container\">\n <SnackbarAlert\n type=\"error\"\n isOpen={!!error}\n message={error || ''}\n onClose={() => {\n setError('')\n }}\n />\n {confirmModalState.show && (\n <ConfirmModal\n hideCancelBtn\n onConfirm={() => setConfirmModalState({ show: false, message: '' })}\n message={confirmModalState.message}\n />\n )}\n {!isLoggedIn && (\n <div className=\"account-actions-block\">\n <div className=\"action-item\">\n <div>\n <span>\n Create (or log in to) your account, then click on Confirm Registration.\n </span>\n <span> If you have a</span>\n <b> Mana Common </b>\n <span>account and password already</span>\n </div>\n </div>\n <div className=\"action-item login-block\">\n <button\n className=\"login-register-button\"\n type=\"button\"\n onClick={() => {\n setShowModalLogin(true)\n }}\n >\n Login\n </button>\n </div>\n </div>\n )}\n {showModalLogin && (\n <LoginModal\n logo={logo}\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={res => {\n setShowModalLogin(false)\n onLoginSuccess(res)\n }}\n showForgotPasswordButton={showForgotPasswordButton}\n onForgotPassword={() => {\n setShowModalLogin(false)\n setShowModalForgotPassword(true)\n }}\n alreadyHasUser={alreadyHasUser}\n />\n )}\n {showModalForgotPassword && (\n <ForgotPasswordModal\n onClose={() => {\n setShowModalForgotPassword(false)\n }}\n onLoginButtonClick={() => {\n setShowModalForgotPassword(false)\n setShowModalLogin(true)\n }}\n onForgotPasswordSuccess={onForgotPasswordSuccess}\n onForgotPasswordError={onForgotPasswordError}\n />\n )}\n <h2>Pre-Registration</h2>\n <Formik\n initialValues={getFormInitialValues(formFields)}\n enableReinitialize={true}\n onSubmit={async (values: FormikValues) => {\n try {\n if (isLoggedIn) {\n if (isPreregistrationStarted) {\n const updatedValues = { ...values }\n const holderAgeDate = new Date(values.holderAge)\n updatedValues.dobDay = holderAgeDate.getDate()\n updatedValues.dobMonth = holderAgeDate.getMonth() + 1\n updatedValues.dobYear = holderAgeDate.getFullYear()\n updatedValues.referrerId = referrerId\n updatedValues.shareHash = hash\n // remove date picker string value\n delete updatedValues.holderAge\n\n const confirmationData = await confirmPreRegistration(\n eventId,\n updatedValues as IConfirmPreRegistrationRequestData\n )\n if (isWindowDefined) {\n window.localStorage.setItem(\n 'pre-registration-hash',\n _get(confirmationData, 'attributes.hash')\n )\n }\n\n onConfirmationSuccess(confirmationData)\n } else {\n setConfirmModalState({\n show: true,\n message: 'The preregistration has not started',\n })\n }\n } else {\n const bodyFormData = new FormData()\n bodyFormData.append('first_name', values.firstName)\n bodyFormData.append('last_name', values.lastName)\n bodyFormData.append('email', values.email)\n bodyFormData.append('confirm_email', values.confirmEmail)\n bodyFormData.append('zip', values.zip)\n bodyFormData.append('country', values.country)\n bodyFormData.append('password', values.password)\n bodyFormData.append('password_confirmation', values.confirmPassword)\n bodyFormData.append('client_id', CONFIGS.CLIENT_ID)\n bodyFormData.append('client_secret', CONFIGS.CLIENT_SECRET)\n bodyFormData.append('register_for', 'prereg')\n\n const res = await register(bodyFormData)\n const profileRes = await getProfileData()\n onLoginSuccess(res.data)\n if (isWindowDefined) {\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(_get(profileRes, 'data'))\n )\n setUserData(_get(profileRes, 'data'))\n }\n }\n } catch (e) {\n let errorMessage = e?.message || 'Error'\n const emailErrors = e?.response?.data?.message?.email\n\n if (typeof e?.response?.data?.message === 'string') {\n errorMessage = e?.response?.data?.message\n }\n if (emailErrors?.length > 0) {\n if (emailErrors[0] === 'The email is already used') {\n setShowModalLogin(true)\n setAlreadyHasUser(true)\n }\n } else {\n setError(errorMessage)\n }\n\n onConfirmationError(e)\n }\n }}\n >\n {props => (\n <Form>\n <div className=\"login-modal-body\">\n <FieldsSection\n formFields={formFields}\n values={props.values}\n setFieldValue={props.setFieldValue}\n containerClass=\"pre-registration\"\n countries={countries}\n />\n </div>\n <div className=\"button-container\">\n <Button\n type=\"submit\"\n variant=\"contained\"\n className=\"login-register-button\"\n disabled={props.isSubmitting}\n >\n {props.isSubmitting ? (\n <CircularProgress size={26} />\n ) : isLoggedIn ? (\n 'Confirm Pre-Registration'\n ) : (\n 'Create Account'\n )}\n </Button>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n )\n}\n","import _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport React from 'react'\n\nexport const Prewards = (props: IPrewardsProps) => {\n const {\n data,\n classNamePrefix = '',\n headerNode = (\n <>\n PRE\n <span>WARDS™</span>\n </>\n ),\n } = props\n return (\n <div className={`${classNamePrefix}_prewards`}>\n {!_isEmpty(data) && (\n <div className={`${classNamePrefix}_prewards_heder`}>{headerNode}</div>\n )}\n <div className={`${classNamePrefix}_prizes`}>\n {_map(data, prize => {\n const { description, name, image, id } = prize\n return (\n <div className={`${classNamePrefix}_prize`} key={id}>\n {image && <img className={`${classNamePrefix}_image`} alt=\"\" src={image} />}\n <div className={`${classNamePrefix}_info`}>\n <h4 className={`${classNamePrefix}_name`}>{name}</h4>\n {description && (\n <article className={`${classNamePrefix}_description`}>\n {description}\n </article>\n )}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n","import _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useRef } from 'react'\n\ninterface ICopyFieldProps {\n copyValue: string;\n onLinkCopied?: () => void;\n copyIconSrc?: string;\n copyTitle?: string;\n hasCopyIcon: boolean;\n classNamePrefix?: string;\n messageText?: string;\n}\n\nexport const CopyField = (props: ICopyFieldProps) => {\n const {\n copyValue,\n copyIconSrc = 'https://img.icons8.com/office/50/000000/copy.png',\n copyTitle = 'Copy',\n hasCopyIcon = false,\n onLinkCopied = _identity,\n classNamePrefix = '',\n messageText = '',\n } = props\n\n const inputRef = useRef(null)\n\n return (\n <>\n {messageText && <span className=\"message-text\">{messageText}</span>}\n <input\n ref={inputRef}\n className={`${classNamePrefix}_share-input`}\n defaultValue={copyValue}\n readOnly={true}\n />\n <div\n className={`${classNamePrefix}_share-by-link-copy-icon`}\n aria-hidden={true}\n onClick={() => {\n navigator.clipboard.writeText(_get(inputRef, 'current.value'))\n onLinkCopied()\n }}\n >\n {hasCopyIcon ? (\n <img src={copyIconSrc} alt=\"copy\" />\n ) : (\n <span className={`${classNamePrefix}_copy-icon`}>{copyTitle}</span>\n )}\n </div>\n </>\n )\n}\n","import _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _some from 'lodash/some'\nimport React from 'react'\n\nimport { submitShareAction } from '../../api/preRegistrationComplete'\nimport { CopyField } from '../common/CopyField'\nimport SocialButtons from '../confirmationContainer/social-buttons'\nimport { getShuffleMethodByName, shareOptionsAdapter } from './utils'\n\nexport const ShareOptions = (props: IShareOptionsProps) => {\n const {\n classNamePrefix,\n data,\n hasCopyIcon = true,\n onLinkCopied = _identity,\n headerText = 'Share with your friends here ...',\n hash,\n updateShareActionData,\n shareActionData,\n } = props\n\n const {\n attributes: { actions, shareUrl },\n } = data\n\n const shareButtons = shareOptionsAdapter(actions, shareUrl)\n const isShareLinkEnabled = _some(\n actions,\n (item: IShareOptionsActionData) => item.action === 'shared_url'\n )\n const onAfterShare = async (eventActionId: string | undefined) => {\n const { shareActionToken, tokenShuffleMethod } = shareActionData\n const accessToken = getShuffleMethodByName(tokenShuffleMethod)(shareActionToken)\n if (typeof eventActionId === 'string') {\n await submitShareAction({\n eventActionId,\n accessToken,\n hash,\n })\n updateShareActionData()\n }\n }\n\n return (\n <div className={`${classNamePrefix}_share_options`}>\n {!_isEmpty(actions) && (\n <>\n <div className={`${classNamePrefix}_share_header`}>{headerText}</div>\n <SocialButtons\n shareLink={data.attributes.shareUrl}\n name=\"\"\n appId=\"\"\n showDefaultShareButtons={false}\n shareButtons={shareButtons}\n titleText=\"\"\n footerText=\"\"\n onAfterShare={(eventActionId: string | undefined) =>\n onAfterShare(eventActionId)\n }\n />\n {isShareLinkEnabled && (\n <div className={`${classNamePrefix}_share_btn_inner`}>\n <CopyField\n copyValue={shareUrl}\n onLinkCopied={onLinkCopied}\n hasCopyIcon={hasCopyIcon}\n classNamePrefix={classNamePrefix}\n messageText=\"Share your link\"\n />\n </div>\n )}\n </>\n )}\n </div>\n )\n}\n","import axios, { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _isEmpaty from 'lodash/isEmpty'\nimport React, { FC, useEffect, useState } from 'react'\n\nimport {\n getPreRegistrationInfluancers,\n getPreRegistrationShareOptions,\n} from '../../api/preRegistrationComplete'\nimport { X_TF_ECOMMERCE } from '../../constants'\nimport { useCookieListener } from '../../hooks'\nimport { getCookieByName, getQueryVariable } from '../../utils'\nimport { CopyMessageModal } from '../common'\nimport ConfirmModal from '../confirmModal'\nimport { LoginModal } from '../loginModal'\nimport { Prewards } from './Prewards'\nimport { ShareOptions } from './ShareOptions'\n\nconst isWindowDefined = typeof window !== 'undefined'\n\nexport const PreRegistrationComplete: FC<\n IPreRegistrationCompleteProps & {\n onGetConfirmationDataError?: (error: AxiosError) => void;\n }\n> = ({\n eventId: pEventId,\n classNamePrefix = '',\n onLinkCopied = _identity,\n hasCopyIcon = false,\n pageHeader = 'Pre-Registration Confirmation',\n onGetConfirmationDataError = _identity,\n onGetConfirmationDataSuccess = _identity,\n pageMessage = 'Pre registration was successful!',\n onLoginSuccess = _identity,\n logo,\n}) => {\n const localStorageHash = isWindowDefined\n ? localStorage.getItem('pre-registration-hash')\n : ''\n const queryHash = getQueryVariable('hash') || ''\n queryHash &&\n isWindowDefined &&\n window.localStorage.setItem('pre-registration-hash', queryHash)\n const hash = queryHash || localStorageHash\n const [isLoggedIn, setIsLoggedIn] = useState(Boolean(getCookieByName(X_TF_ECOMMERCE)))\n const [showModalLogin, setShowModalLogin] = useState(!isLoggedIn)\n const [showCopyModal, setShowCopyModal] = useState(false)\n const [prizes, setPrizes] = useState([] as Array<IPrizeData>)\n const [shareOptions, setShareOptions] = useState({} as IShareOptionsData)\n const [shareActionData, setShareActionData] = useState(\n {} as ISubmitShareActionAttributes\n )\n const [error, setError] = useState({} as AxiosError)\n useCookieListener(X_TF_ECOMMERCE, value => setIsLoggedIn(Boolean(value)))\n useEffect(() => {\n const fetchConfirmationData = async () => {\n try {\n if (hash && isLoggedIn) {\n const shareOptionsData = await getPreRegistrationShareOptions({\n hash,\n })\n const { attributes } = shareOptionsData.data\n setShareOptions(shareOptionsData.data)\n setShareActionData({\n shareActionToken: attributes.shareActionToken,\n tokenShuffleMethod: attributes.tokenShuffleMethod,\n })\n const eventId = _get(shareOptionsData, 'data.attributes.eventId')\n if (eventId || pEventId) {\n const influencersData = await getPreRegistrationInfluancers({\n eventId: eventId || pEventId,\n })\n setPrizes(influencersData.data.attributes.prizes)\n }\n onGetConfirmationDataSuccess()\n }\n } catch (error) {\n if (axios.isAxiosError(error)) {\n setError(error.response?.data)\n }\n }\n }\n fetchConfirmationData()\n }, [\n pEventId,\n hash,\n onGetConfirmationDataError,\n onGetConfirmationDataSuccess,\n isLoggedIn,\n ])\n\n const onClose = () => {\n setShowCopyModal(false)\n }\n\n const updateShareActionData = async () => {\n if (hash) {\n const shareOptionsData = await getPreRegistrationShareOptions({\n hash,\n })\n setShareOptions(shareOptionsData.data)\n setShareActionData({\n shareActionToken: shareOptionsData.data.attributes.shareActionToken,\n tokenShuffleMethod: shareOptionsData.data.attributes.tokenShuffleMethod,\n })\n }\n }\n return (\n <>\n {isLoggedIn && _isEmpaty(error) ? (\n <div className={`${classNamePrefix}_pre_registration_complete_container`}>\n <CopyMessageModal showCopyModal={showCopyModal} onClose={onClose} />\n <p className={`${classNamePrefix}_pre_registration_complete_header`}>\n {pageHeader}\n </p>\n <div className={`${classNamePrefix}_pre_registration_complete_message`}>\n {pageMessage}\n </div>\n <div className={`${classNamePrefix}_pre_registration_complete_body`}>\n {!_isEmpaty(prizes) && (\n <Prewards classNamePrefix={classNamePrefix} data={prizes} />\n )}\n\n {!_isEmpaty(shareOptions) && (\n <ShareOptions\n classNamePrefix={classNamePrefix}\n data={shareOptions}\n onLinkCopied={() => {\n setShowCopyModal(true)\n onLinkCopied()\n }}\n shareActionData={shareActionData}\n updateShareActionData={updateShareActionData}\n hasCopyIcon={hasCopyIcon}\n hash={hash}\n />\n )}\n </div>\n </div>\n ) : (\n showModalLogin && (\n <LoginModal\n logo={logo}\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={res => {\n setShowModalLogin(false)\n onLoginSuccess(res)\n }}\n />\n )\n )}\n {!_isEmpaty(error) && (\n <ConfirmModal\n hideCancelBtn\n message={error.message}\n onConfirm={() => onGetConfirmationDataError(error)}\n />\n )}\n </>\n )\n}\n","import _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport React from 'react'\n\nexport const Influancers = (props: IInfluancersProps) => {\n const {\n data,\n classNamePrefix,\n headerNode = (\n <>\n TOP\n <span> INFLUANCERS</span>\n </>\n ),\n } = props\n return (\n <div className={`${classNamePrefix}_influencers_container`}>\n {!_isEmpty(data) && (\n <div className={`${classNamePrefix}_influencers_header`}>{headerNode}</div>\n )}\n <div className={`${classNamePrefix}_influencers`}>\n {_map(data, (influencer, index) => (\n <div key={influencer.prereg_id} className={`${classNamePrefix}_influencer`}>\n <span className={`${classNamePrefix}_influencer_index`}>{index + 1}</span>\n <span className={`${classNamePrefix}_influencer_title`}>INFLUENCER</span>\n <span className={`${classNamePrefix}_influencer_name`}>\n {influencer.name}\n </span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n","/* eslint-disable react/no-unescaped-entities */\n\nimport { CircularProgress } from '@mui/material'\nimport { Form, Formik } from 'formik'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useEffect, useState } from 'react'\n\nimport { getAddons, getCart, getCheckoutPageConfigs, postOnCheckout } from '../../api'\nimport { currencyNormalizerCreator } from '../../normalizers'\nimport { ICheckoutPageConfigs } from '../../types'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n createMarkup,\n getQueryVariable,\n isBrowser,\n} from '../../utils'\nimport { VerificationPendingModal } from '../idVerificationContainer/VerificationPendingModal'\nimport TimerWidget from '../timerWidget'\nimport { addonsWithGroupsAdapter, cartAdapter } from './adapters'\nimport AddonComponent from './AddonComponent'\nimport { getNormalizedPrice } from './normalizers'\nimport {\n generateSelectOptions,\n getAddonSelectOptions,\n getSortedAddons,\n getTicketRelatedAddons,\n isAtLeastOneAddonSelected,\n} from './utils'\n\nexport interface IAddonContainterProps {\n classNamePrefix?: string;\n enableBillingInfoAutoCreate?: boolean;\n enableTimer?: boolean;\n onGetAddonsPageInfoSuccess?: (res: any) => void;\n onGetAddonsPageInfoError?: (error: any) => void;\n onPostCheckoutSuccess?: (res: any) => void;\n onPostCheckoutError?: (error: any) => void;\n onConfirmSelectionSuccess?: (res: any) => void;\n onConfirmSelectionError?: (error: any) => void;\n onCountdownFinish?: () => void;\n onPendingVerification?: () => void;\n}\n\nexport interface ObjectLiteral {\n [key: string]: any;\n}\n\nexport const AddonsContainter = ({\n classNamePrefix = 'add_on',\n enableBillingInfoAutoCreate = true,\n enableTimer = false,\n onGetAddonsPageInfoSuccess = _identity,\n onGetAddonsPageInfoError = _identity,\n onPostCheckoutSuccess = _identity,\n onPostCheckoutError = _identity,\n onConfirmSelectionSuccess = _identity,\n onConfirmSelectionError = _identity,\n onCountdownFinish = _identity,\n onPendingVerification = _identity,\n}: IAddonContainterProps) => {\n const eventId = getQueryVariable('event_id')\n const [addons, setAddons] = useState<any>([])\n const [addonsOptions, setAddonsOptions] = useState<any>({})\n const [groupsWithSelectedVariants, setGroupsWithSelectedVariants] = useState<any>({})\n const [groupsWithInitialVariantsValues, setGroupsWithInitialVariantsValues] =\n useState<any>({})\n const [loading, setLoading] = useState(true)\n const [cartExpirationTime, setCartExpirationTime] = useState(0)\n const [pendingVerificationMessage, setPendingVerificationMessage] = useState()\n\n useEffect(() => {\n const getAddonsPageInfo = async () => {\n try {\n if (eventId) {\n setLoading(true)\n\n // Get choosed ticket info (id, count) from Cart request for addons options calculations\n const cart = await getCart()\n const { id: choosedTicketID, quantity, expiresAt } = cartAdapter(cart)\n const choosedTicketCount = Number(quantity)\n setCartExpirationTime(expiresAt)\n\n // Get and collect addons data\n const addonsData = await getAddons(eventId)\n const adaptedAddons = addonsWithGroupsAdapter(addonsData)\n const ticketRelatedAddons = getTicketRelatedAddons(\n adaptedAddons,\n choosedTicketID\n )\n const sortedTicketAddons = getSortedAddons(ticketRelatedAddons)\n\n setAddons(sortedTicketAddons)\n\n // Collect addons and addon group options\n const {\n addonsWithOptions,\n groupsWithSelectedVariantsInfo,\n groupsWithVariants,\n } = getAddonSelectOptions(adaptedAddons, choosedTicketCount)\n\n setAddonsOptions(addonsWithOptions)\n setGroupsWithSelectedVariants(groupsWithSelectedVariantsInfo)\n setGroupsWithInitialVariantsValues(groupsWithVariants)\n\n // Success callback props\n onGetAddonsPageInfoSuccess(addonsData)\n }\n } catch (e) {\n // Callback error props\n onGetAddonsPageInfoError(e)\n } finally {\n setLoading(false)\n }\n }\n\n getAddonsPageInfo()\n }, [])\n\n const recreateGroupVariantsSelectOptions = (groupId: any, changedGroupd: any) => {\n const { choosedVariants, limit, selectedCount } = changedGroupd\n const remainingGroupStock = limit - selectedCount\n const recreatedVariantsOptions: ObjectLiteral = {}\n\n // Regenerate variants allowed stock counts\n for (const variant in choosedVariants) {\n const variantId = variant\n const variantCurrSelectedValue = choosedVariants[variant]\n let allowedOptionCount\n\n // Formula for regenerating\n if (\n remainingGroupStock >=\n groupsWithInitialVariantsValues[groupId][variantId] - variantCurrSelectedValue\n ) {\n allowedOptionCount = groupsWithInitialVariantsValues[groupId][variantId]\n } else {\n allowedOptionCount = remainingGroupStock + variantCurrSelectedValue\n }\n\n recreatedVariantsOptions[variantId] = generateSelectOptions(0, allowedOptionCount)\n }\n\n setAddonsOptions((prevState: any) =>\n Object.assign({}, prevState, recreatedVariantsOptions)\n )\n }\n\n const onFieldChange = (id: any, value: any, addon: any) => {\n // If changeableGroup exsists it means that group with limitation variant was changed\n const changeableGroup = groupsWithSelectedVariants[addon.id]\n\n if (changeableGroup) {\n const currGroupId = addon.id\n const currSelectedVariantId = id\n const currSelectedVariantCount = Number(value)\n const currSelectedVariantPrevCount =\n groupsWithSelectedVariants[currGroupId].choosedVariants[currSelectedVariantId]\n\n const currSelectedGroupCount =\n changeableGroup.selectedCount +\n (currSelectedVariantCount - currSelectedVariantPrevCount)\n\n // Update Group info\n const updatedGroupsWithSelectedVariants = {\n ...groupsWithSelectedVariants,\n [currGroupId]: {\n ...groupsWithSelectedVariants[currGroupId],\n selectedCount: currSelectedGroupCount,\n choosedVariants: {\n ...groupsWithSelectedVariants[currGroupId].choosedVariants,\n [currSelectedVariantId]: currSelectedVariantCount,\n },\n },\n }\n setGroupsWithSelectedVariants(updatedGroupsWithSelectedVariants)\n\n // Recreate Select Options for Addon Group Variants\n recreateGroupVariantsSelectOptions(\n currGroupId,\n updatedGroupsWithSelectedVariants[currGroupId]\n )\n }\n }\n\n const handleConfirm = async (values: any, skipAddonPage?: boolean) => {\n try {\n const pageConfigsDataResponse = await getCheckoutPageConfigs()\n const pageConfigsData: ICheckoutPageConfigs =\n _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const skipBillingPage = pageConfigsData.skip_billing_page ?? false\n\n if (skipBillingPage && enableBillingInfoAutoCreate) {\n const ticketsQuantity = window.localStorage.getItem('quantity')\n const userData = JSON.parse(window.localStorage.getItem('user_data') || '{}')\n\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n Number(ticketsQuantity) || 0,\n userData\n )\n\n try {\n const checkoutResponse = await postOnCheckout({\n ...checkoutBody,\n attributes: {\n ...checkoutBody.attributes,\n ...(!skipAddonPage && { add_ons: values }),\n },\n })\n const hash = checkoutResponse?.data?.attributes?.hash || ''\n const total = checkoutResponse?.data?.attributes?.total || ''\n\n isBrowser && window.localStorage.removeItem('quantity')\n isBrowser && window.localStorage.removeItem('add_ons')\n\n onPostCheckoutSuccess(checkoutResponse?.data.attributes)\n onConfirmSelectionSuccess({\n skip_billing_page: skipBillingPage,\n event_id: String(eventId),\n hash,\n total,\n })\n } catch (error) {\n if (error.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(error.response?.data?.message)\n } else {\n onPostCheckoutError(error)\n onConfirmSelectionError(error)\n }\n }\n } else {\n if (isBrowser) {\n if (!skipAddonPage) {\n window.localStorage.setItem('add_ons', JSON.stringify(values))\n }\n\n onConfirmSelectionSuccess({\n skip_billing_page: skipBillingPage && enableBillingInfoAutoCreate,\n event_id: String(eventId),\n })\n } else {\n onConfirmSelectionError({\n error: true,\n message: 'Window is not defined',\n })\n }\n }\n } catch (e) {\n onConfirmSelectionError(e)\n }\n }\n\n const handleClearAddons = () => {\n window.localStorage.removeItem('add_ons')\n }\n\n if (loading) {\n return (\n <div className={`${classNamePrefix}_loader`}>\n <CircularProgress size={50} />\n </div>\n )\n }\n\n return (\n <>\n {!!cartExpirationTime && enableTimer && (\n <TimerWidget\n expires_at={cartExpirationTime}\n onCountdownFinish={() => {\n handleClearAddons()\n onCountdownFinish()\n }}\n />\n )}\n <div className={`${classNamePrefix}_container`}>\n <div className={`${classNamePrefix}_block`}>\n <div className={`${classNamePrefix}_line_block`}>\n <p className={`${classNamePrefix}_info_title`}>Get Your Tickets</p>\n <div className={`${classNamePrefix}_title`}>UPGRADES & ADD-ONS</div>\n <button\n type=\"button\"\n className={`${classNamePrefix}_skip`}\n onClick={() => {\n handleClearAddons()\n handleConfirm({}, true)\n }}\n >\n Skip\n </button>\n </div>\n <div className={`${classNamePrefix}_subtitle`}>\n PLEASE SELECT FROM THE OPTIONAL ADD-ONS BELOW\n </div>\n <Formik\n initialValues={{}}\n onSubmit={values => {\n handleConfirm(values)\n }}\n >\n {({ values }) => {\n const isConfirmDisabled = !isAtLeastOneAddonSelected(values)\n\n return (\n <Form autoComplete=\"off\" className=\"form_holder\">\n <>\n {addons.map((addon: any) => {\n const price = addon.feeIncluded ? addon.price : addon.cost\n const isAddonFree = Number(price) === 0\n\n const addonNormalizedPrice = isAddonFree\n ? 'FREE'\n : currencyNormalizerCreator(\n getNormalizedPrice(price),\n addon.currency\n )\n\n return (\n <div\n key={addon.id}\n className={`${classNamePrefix}_product_block`}\n >\n <div className={`${classNamePrefix}_product_images`}>\n {addon.imageUrl && (\n <div className={`${classNamePrefix}_product_image_block`}>\n <img src={addon.imageUrl} alt=\"No Data\" />\n </div>\n )}\n </div>\n <div className={`${classNamePrefix}_product_info_block`}>\n <div className={`${classNamePrefix}_product_title`}>\n {addon.name}\n </div>\n <div className={`${classNamePrefix}_product_price`}>\n {addonNormalizedPrice}\n {!isAddonFree && (\n <span className={`${classNamePrefix}_product_fee`}>\n {addon.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'}\n </span>\n )}\n </div>\n </div>\n <div\n className={`${classNamePrefix}_product_desc`}\n dangerouslySetInnerHTML={createMarkup(addon.description)}\n />\n <div className={`${classNamePrefix}_product_select_container`}>\n {addon.variants ? (\n addon.variants.map((variant: any) => (\n // Group Variants\n <AddonComponent\n key={variant.id}\n data={variant}\n selectOptions={addonsOptions[variant.id]}\n classNamePrefix={classNamePrefix}\n handleAddonChange={(id, value) =>\n onFieldChange(id, value, addon)\n }\n />\n ))\n ) : (\n // Simple Addon\n <AddonComponent\n key={addon.id}\n data={addon}\n selectOptions={addonsOptions[addon.id]}\n classNamePrefix={classNamePrefix}\n handleAddonChange={(id, value) =>\n onFieldChange(id, value, addon)\n }\n />\n )}\n </div>\n </div>\n )\n })}\n <button\n type=\"submit\"\n className={`${isConfirmDisabled ? `${classNamePrefix}_is_disabled` : ''\n } ${classNamePrefix}_submit_button`}\n disabled={isConfirmDisabled}\n >\n CONFIRM SELECTION\n </button>\n </>\n </Form>\n )\n }}\n </Formik>\n </div>\n </div>\n <VerificationPendingModal\n message={pendingVerificationMessage}\n onClose={() => {\n onPendingVerification()\n }}\n />\n </>\n )\n}\n","export const getNormalizedPrice = (value: any) => {\n const minimizedValue = Number(value) / 100\n const normalized = minimizedValue.toFixed(2)\n return normalized\n}","/* eslint-disable max-len */\nimport './style.css'\n\nimport axios, { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { SyntheticEvent, useEffect, useRef, useState } from 'react'\n\nimport { getConfirmationData } from '../../api'\nimport { usePixel } from '../../hooks/usePixel'\nimport { IReferralPromotion } from '../../types'\nimport { createMarkup, isBrowser } from '../../utils'\nimport { CopyMessageModal } from '../common'\nimport SocialButtons from './social-buttons'\n\nexport interface IShareButton {\n mainLabel: string;\n subLabel: string;\n platform: string;\n shareData: any;\n points?: number | string;\n onAfterShare?: (event: SyntheticEvent) => void;\n eventActionId?: string;\n oneTimeAction?: boolean;\n alreadyApplied?: boolean;\n}\n\nexport interface IConfirmationLabels {\n confirmationTitle?: string;\n confirmationMain?: string;\n confirmationHelper?: string;\n paymentPlanConfirmationTitle?: string;\n paymentPlanConfirmationMain?: string;\n paymentPlanConfirmationHelper?: string;\n}\n\nexport interface IConfirmationPage {\n hasCopyIcon?: boolean;\n isReferralEnabled: boolean;\n showDefaultShareButtons: boolean;\n messengerAppId: string;\n shareButtons: IShareButton[];\n onGetConfirmationDataSuccess: (res: ICheckoutCompleteData) => void;\n onGetConfirmationDataError: (e: AxiosError) => void;\n onLinkCopied: () => void;\n orderHash?: string;\n confirmationLabels: IConfirmationLabels;\n clientLabel?: string;\n showReferralsInfoText?: boolean;\n showCopyInfoModal?: boolean;\n showPricingNoteSection?: boolean;\n}\n\nexport const ConfirmationContainer = ({\n confirmationLabels,\n hasCopyIcon = true,\n isReferralEnabled,\n showDefaultShareButtons,\n messengerAppId = '',\n shareButtons = [],\n onGetConfirmationDataSuccess = _identity,\n onGetConfirmationDataError = _identity,\n orderHash,\n onLinkCopied = _identity,\n clientLabel,\n showReferralsInfoText = false,\n showCopyInfoModal = false,\n showPricingNoteSection = false,\n}: IConfirmationPage) => {\n const inputRef = useRef(null)\n const [data, setData] = useState<ICheckoutCompleteData | null>(null)\n const dataEncoded = (isBrowser && window.localStorage.getItem('checkoutData')) || ''\n const dataDecoded = dataEncoded ? JSON.parse(dataEncoded) : { hash: orderHash }\n const { hash } = dataDecoded\n const eventId = data?.product_id || ''\n\n useEffect(() => {\n (async () => {\n if (hash) {\n try {\n const confirmationDataResponse = await getConfirmationData(hash)\n const data = confirmationDataResponse.data.attributes\n data.personal_share_sales = data.personal_share_sales.map(salesItem => {\n const salesData: IReferralPromotion = {\n label: `If your friends buy ${salesItem.sales} tickets`,\n price: '',\n }\n if (salesItem.price === 0) {\n salesData.subLabel = 'Your ticket becomes'\n salesData.price = 'FREE!'\n } else {\n salesData.subLabel = 'Your ticket goes down to'\n salesData.price = data.currency.symbol + Number(salesItem.price).toFixed(2)\n }\n\n return salesData\n })\n data.personal_share_sales.unshift({\n label: 'Your ticket is currently',\n price: data.currency.symbol + data.product_price?.toFixed(2),\n })\n setData(data)\n onGetConfirmationDataSuccess(confirmationDataResponse.data.attributes)\n } catch (error) {\n if (axios.isAxiosError(error)) onGetConfirmationDataError(error)\n }\n }\n })()\n }, [hash])\n\n const [showCopyModal, setShowCopyModal] = useState(false)\n\n const onClose = () => {\n setShowCopyModal(false)\n }\n\n const onChangeShareLink = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newData = {\n ...data,\n personal_share_link: e.target.value,\n } as ICheckoutCompleteData\n setData(newData)\n }\n const {\n confirmationTitle = 'Your Tickets are Confirmed!',\n confirmationMain = 'Your tickets are available in My Tickets section',\n confirmationHelper = 'Please bring them with you to the event',\n paymentPlanConfirmationTitle = 'Your Tickets are Confirmed!',\n paymentPlanConfirmationMain = 'Your payment plan is pending and we are trying to take your initial payment. If your initial payment does not complete, your payment plan will be cancelled.',\n paymentPlanConfirmationHelper = 'You will receive a confirmation with your tickets once your final payment has been made.',\n } = confirmationLabels\n\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n usePixel(eventId, { page: 'complete', pageUrl, orderHash: hash })\n\n return (\n <div className=\"confirmation-page\">\n {showCopyInfoModal && (\n <CopyMessageModal onClose={onClose} showCopyModal={showCopyModal} />\n )}\n {data && (\n <>\n <div className=\"header-container\">\n <div className=\"header-product-image\">\n <img alt=\"\" className=\"product-image\" src={data.product_image} />\n </div>\n <div className=\"header-product-text\">\n <p className=\"title\">\n {data.is_payment_plan ? paymentPlanConfirmationTitle : confirmationTitle}\n </p>\n <div\n className=\"share-message-section\"\n dangerouslySetInnerHTML={\n data.custom_confirmation_page_text &&\n data.custom_confirmation_page_text_full_replacement\n ? createMarkup(data.custom_confirmation_page_text)\n : undefined\n }\n >\n {data.custom_confirmation_page_text &&\n data.custom_confirmation_page_text_full_replacement ? undefined : (\n <>\n {Boolean(data.is_payment_plan) && (\n <>\n <span className=\"main\">{paymentPlanConfirmationMain}</span>\n <span className=\"helper\">{paymentPlanConfirmationHelper}</span>\n </>\n )}\n {!data.is_payment_plan && (\n <>\n {data.attach_tickets ? (\n <span className=\"main\">\n Your tickets have been emailed to you\n </span>\n ) : (\n <span className=\"main\">{confirmationMain}</span>\n )}\n <span className=\"helper\">\n {data.attach_tickets\n ? 'Please bring them with you to the event'\n : confirmationHelper}\n </span>\n </>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n {data.custom_confirmation_page_text &&\n !data.custom_confirmation_page_text_full_replacement ? (\n <div\n className=\"custom-confirmation-page-text\"\n dangerouslySetInnerHTML={createMarkup(data.custom_confirmation_page_text)}\n />\n ) : null}\n {data.disable_referral === false && isReferralEnabled && (\n <>\n <div className=\"referral_text_image_section\">\n <div className=\"referral_text_section\">\n <div className=\"referral_title_text\">\n Your ticket can become\n <span className=\"strong-text\"> cheaper </span>\n or even\n <span className=\"strong-text\"> FREE!</span>\n </div>\n <div className=\"referral_text\">\n <span className=\"strong-text\"> Invite friends </span>\n and we'll refund up to\n <span className=\"strong-text\"> 100% </span>\n of your ticket money, if they buy tickets as well!\n </div>\n </div>\n <img\n className=\"body-product-image\"\n src={data.product_image}\n alt=\"No Data\"\n />\n </div>\n <div className=\"share_wrapper\">\n <div className=\"share_section\">\n <div className=\"invitation_section\">\n <div className=\"invitation_title\">\n How do you invite your friends?\n </div>\n <div className=\"share_buttons\">\n <div className=\"share-by-link\">\n <h5 className=\"share-by-link label\">Send them this link:</h5>\n <div className=\"share-btn-inner\">\n <input\n ref={inputRef}\n className=\"share-input\"\n value={data.personal_share_link}\n onChange={onChangeShareLink}\n />\n <div\n aria-hidden={true}\n className=\"share-by-link-copy-icon\"\n onClick={() => {\n navigator.clipboard.writeText(\n _get(inputRef, 'current.value')\n )\n setShowCopyModal(true)\n onLinkCopied()\n }}\n >\n {hasCopyIcon ? (\n <img\n src=\"https://img.icons8.com/office/50/000000/copy.png\"\n alt=\"copy\"\n />\n ) : (\n <span className=\"copy-icon\">Copy</span>\n )}\n </div>\n </div>\n </div>\n {(showDefaultShareButtons || !!shareButtons.length) && (\n <SocialButtons\n showDefaultShareButtons={showDefaultShareButtons}\n name={data.product_name}\n appId={messengerAppId}\n shareLink={data.personal_share_link}\n shareButtons={shareButtons}\n clientLabel={clientLabel}\n showReferralsInfoText={showReferralsInfoText}\n />\n )}\n </div>\n </div>\n </div>\n <div className=\"pricing-section\">\n <div className=\"invitation_title\">How much cheaper?</div>\n {_map(data.personal_share_sales, (pricing, index) => (\n <div key={index} className=\"pricing-section_wrapper\">\n <div className=\"pricing-section_label\">\n {pricing.label}\n {pricing.subLabel && (\n <div className=\"pricing-section_sublabel\">\n {pricing.subLabel}\n </div>\n )}\n </div>\n <div className=\"pricing-section_price\"> {pricing.price}</div>\n </div>\n ))}\n {showPricingNoteSection && (\n <div className=\"note-pricing-section\">\n ^ This is based on the most expensive ticket in your order.\n </div>\n )}\n </div>\n </div>\n </>\n )}\n </>\n )}\n </div>\n )\n}\n","import _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { FC, useEffect, useState } from 'react'\n\nimport { getCustomerExistsData } from '../../api/guestTicketDelegation'\nimport { Loader } from '../../components/common'\nimport { LoginForm } from '../../components/loginForm'\nimport { RegistrationForm } from '../../components/registerForm'\nimport { useCookieListener } from '../../hooks/useCookieListener'\nimport { getCookieByName, getQueryVariable } from '../../utils'\nimport IssueComponent from './IssueComponent'\n\ninterface IRegistrationProps {\n registerFormFields?: Array<IFormFieldsSection>;\n classNamePrefix?: string;\n logo?: string;\n onCustomerExistsError?: (error: any) => void;\n issuePageErrorText?: string;\n}\n\nconst X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\n\nexport const DelegationsContainer: FC<IRegistrationProps> = ({\n registerFormFields,\n classNamePrefix = 'guest-ticket-delegation',\n issuePageErrorText = 'You do not have access to manage these tickets.',\n onCustomerExistsError = _identity,\n logo,\n}) => {\n const [loading, setLoading] = useState(true)\n const [isLoggedIn, setIsLoggedIn] = useState(Boolean(getCookieByName(X_TF_ECOMMERCE)))\n const [isCustomerExsists, setIsCustomerExsists] = useState(false)\n const [issuePageError, setIssuePageError] = useState(false)\n const [customerEmail, setCustomerEmail] = useState('')\n const accessHash = getQueryVariable('hash') || ''\n\n useCookieListener(X_TF_ECOMMERCE, value => setIsLoggedIn(Boolean(value)))\n\n const onGetIssuePageDataError = () => {\n setIssuePageError(true)\n }\n\n useEffect(() => {\n const getCustomerData = async () => {\n try {\n const response = await getCustomerExistsData(accessHash)\n const isCustomerExsists = _get(response, 'data.attributes.customerExists', false)\n setIsCustomerExsists(isCustomerExsists)\n setCustomerEmail(_get(response, 'data.attributes.email', ''))\n setLoading(false)\n } catch (error) {\n onCustomerExistsError(error)\n }\n }\n\n getCustomerData()\n }, [])\n\n return (\n <div className={`${classNamePrefix}__container`}>\n {loading ? (\n <Loader />\n ) : issuePageError ? (\n <div className=\"issue_page_error\">{issuePageErrorText}</div>\n ) : isLoggedIn ? (\n <div>\n <IssueComponent\n classNamePrefix={classNamePrefix}\n onGetIssuePageDataError={onGetIssuePageDataError}\n />\n </div>\n ) : isCustomerExsists ? (\n <LoginForm logo={logo} />\n ) : (\n <RegistrationForm\n customerEmail={customerEmail}\n formFields={registerFormFields}\n registrationType=\"delegation\"\n />\n )}\n </div>\n )\n}\n","import Button from '@mui/material/Button'\nimport { AxiosError } from 'axios'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport React, { useEffect, useState } from 'react'\n\nimport {\n checkCustomerOrder,\n checkVerificationStatus,\n getNetverifyUrl,\n updateVerificationStatus,\n} from '../../api'\nimport {\n GetNetverifyUrlResponseData,\n VerificationStatusResponseData,\n} from '../../types/verification'\nimport { getQueryVariable, isBrowser, isJson } from '../../utils'\nimport Modal from '../common/ModalComponent'\nimport {\n VERIFICATION_MESSAGES,\n VERIFICATION_PROVIDERS,\n VERIFICATION_STATUSES,\n} from './constants'\n\ninterface IDVerificationProps {\n onGetVerifyUrlSuccess?: (response: GetNetverifyUrlResponseData) => void;\n onGetVerifyUrlError?: (error: AxiosError) => void;\n\n onGetVerificationStatusSuccess?: (response: {\n data: VerificationStatusResponseData;\n }) => void;\n onGetVerificationStatusError?: (error: AxiosError) => void;\n\n onVerificationMessageModalClose?: (status: string | null) => void;\n\n onPassVerificationStepsSuccess?: () => void;\n onPassVerificationStepsError?: (error: AxiosError | null) => void;\n}\n\nexport const IDVerification = (props: IDVerificationProps) => {\n const {\n onGetVerifyUrlSuccess = _identity,\n onGetVerifyUrlError = _identity,\n\n onGetVerificationStatusSuccess = _identity,\n onGetVerificationStatusError = _identity,\n\n onVerificationMessageModalClose = _identity,\n\n onPassVerificationStepsSuccess = _identity,\n onPassVerificationStepsError = _identity,\n } = props\n\n const [loadingStatus, setLoadingStatus] = useState(true)\n const [verificationStatus, setVerificationStatus] = useState<string | null>(null)\n const [showModal, setShowModal] = useState(false)\n const [netverifyUrl, setNetverifyUrl] = useState<string | null>(null)\n const [provider, setProvider] = useState<string | null>(null)\n const [hasError, setHasError] = useState<boolean>(false)\n const [lastError, setLastError] = useState(null)\n const [modalData, setModalData] = useState({\n message: '',\n hideCancelBtn: true,\n displaModal: false,\n })\n\n const isAccountVerifiedOrPending =\n (verificationStatus === VERIFICATION_STATUSES.APPROVED ||\n verificationStatus === VERIFICATION_STATUSES.PENDING) &&\n verificationStatus !== VERIFICATION_STATUSES.WRONG_CUSTOMER\n\n const handleClose = () => {\n setModalData({\n message: '',\n displaModal: false,\n hideCancelBtn: true,\n })\n\n onVerificationMessageModalClose(verificationStatus)\n }\n\n useEffect(() => {\n const callbackNetVerify = async (e: any) => {\n // Stripe Events\n if (e.data && e.origin === 'https://verify.stripe.com') {\n const { data } = e\n if (data.type === 'STRIPE_IDENTITY_CLOSE') {\n await getUrl()\n setShowModal(false)\n if (hasError) {\n setHasError(false)\n onPassVerificationStepsError(lastError)\n } else {\n setHasError(false)\n onPassVerificationStepsSuccess()\n }\n } else if (data.type === 'STRIPE_IDENTITY_ERROR') {\n setHasError(true)\n setLastError(data)\n }\n }\n\n if (e.data && isJson(e.data)) {\n try {\n const result = JSON.parse(e.data)\n if (\n result.payload &&\n (result.payload.value === 'success' ||\n result.payload.transactionStatus === 'SUCCESS')\n ) {\n await updateVerificationStatus()\n onPassVerificationStepsSuccess()\n } else if (\n result.payload &&\n (result.payload.value === 'error' ||\n result.payload.transactionStatus === 'ERROR')\n ) {\n setShowModal(false)\n onPassVerificationStepsError(result.payload)\n }\n } catch (e) {\n onPassVerificationStepsError(e)\n }\n }\n }\n\n window.addEventListener('message', callbackNetVerify)\n\n return () => {\n window.removeEventListener('message', callbackNetVerify)\n }\n }, [])\n\n const getUrl = async () => {\n try {\n const urlResponse = await getNetverifyUrl()\n setNetverifyUrl(urlResponse.netverifyUrl)\n setProvider(urlResponse.provider)\n onGetVerifyUrlSuccess(urlResponse)\n } catch (error) {\n onGetVerifyUrlError(error)\n }\n }\n\n useEffect(() => {\n let intervalId: any = null\n const orderHash = getQueryVariable('order_hash') || ''\n\n const getVerificationStatus = async () => {\n try {\n let verificationStatus = null\n // Gets te current status of the variable without modifying it\n setVerificationStatus(status => {\n verificationStatus = status\n return status\n })\n let provider = null\n // Gets te current status of the variable without modifying it\n setProvider(state => {\n provider = state\n return provider\n })\n let verifyUrl = null\n // Gets te current status of the variable without modifying it\n setNetverifyUrl(state => {\n verifyUrl = state\n return state\n })\n const statusResponse = await checkVerificationStatus()\n const { status } = statusResponse.data.attributes\n const isApproved = status === VERIFICATION_STATUSES.APPROVED\n\n if (verificationStatus !== status) {\n setVerificationStatus(status)\n setModalData({\n displaModal: isApproved || status === VERIFICATION_STATUSES.FAILED,\n hideCancelBtn: true,\n message: isApproved\n ? VERIFICATION_MESSAGES.APPROVED\n : status === VERIFICATION_STATUSES.FAILED\n ? VERIFICATION_MESSAGES.FAILED\n : status,\n })\n }\n if (\n provider === VERIFICATION_PROVIDERS.STRIPE &&\n verifyUrl === null &&\n !isApproved\n ) {\n getUrl()\n }\n onGetVerificationStatusSuccess(statusResponse)\n } catch (error) {\n onGetVerificationStatusError(error)\n } finally {\n setLoadingStatus(false)\n }\n }\n\n const getCustomerOrderStatus = async () => {\n const customerOrderResponse = await checkCustomerOrder(orderHash)\n return customerOrderResponse\n }\n\n const makeRequests = async () => {\n try {\n if (orderHash) {\n await getCustomerOrderStatus()\n }\n getUrl()\n getVerificationStatus()\n\n // Check the verification status every 30 seconds\n intervalId = setInterval(() => {\n getVerificationStatus()\n }, 10000)\n } catch (error) {\n if (error.response?.data?.message === VERIFICATION_MESSAGES.WRONG_CUSTOMER) {\n setVerificationStatus(VERIFICATION_STATUSES.WRONG_CUSTOMER)\n setModalData({\n displaModal: true,\n hideCancelBtn: true,\n message: VERIFICATION_MESSAGES.WRONG_CUSTOMER,\n })\n }\n }\n }\n\n makeRequests()\n\n // Clear the interval when the component unmounts\n return () => clearInterval(intervalId)\n }, [])\n\n const iframe = (netverifyUrl: string) => {\n // eslint-disable-next-line max-len\n const iframe = `<iframe allowFullScreen id=\"verificationIframe\" frameBorder=\"0\" width=\"100%\" height=\"570px\" allow=\"camera;fullscreen;accelerometer;gyroscope;magnetometer\" src=\"${netverifyUrl}\"></iframe>`\n return {\n __html: iframe,\n }\n }\n\n useEffect(() => {\n const orderHash = getQueryVariable('order_hash')\n\n if (isBrowser) {\n const checkoutData = JSON.parse(window.localStorage.getItem('checkoutData') || '{}')\n if (_isEmpty(checkoutData) && orderHash) {\n window.localStorage.setItem('checkoutData', JSON.stringify({ hash: orderHash }))\n }\n }\n }, [])\n\n return (\n <div>\n <h2 className=\"page-header\">Account Verification</h2>\n {loadingStatus ? null : (\n <>\n {!isAccountVerifiedOrPending && (\n <div className=\"verify-message\">\n To complete the purchase, please verify your identity.\n </div>\n )}\n {verificationStatus === VERIFICATION_STATUSES.APPROVED && (\n <div className=\"verify-message\">{VERIFICATION_MESSAGES.APPROVED}</div>\n )}\n {(verificationStatus === VERIFICATION_STATUSES.PENDING ||\n (provider === VERIFICATION_PROVIDERS.STRIPE &&\n netverifyUrl === null &&\n verificationStatus !== VERIFICATION_STATUSES.APPROVED)) && (\n <div className=\"verify-message\">{VERIFICATION_MESSAGES.PENDING}</div>\n )}\n {!isAccountVerifiedOrPending && netverifyUrl !== null && (\n <Button\n type=\"button\"\n variant=\"contained\"\n className=\"verify-button\"\n onClick={() => {\n setShowModal(true)\n }}\n >\n Verify\n </Button>\n )}\n </>\n )}\n\n {modalData.displaModal && (\n <Modal\n modalClassName=\"verification-message-modal\"\n actions={[\n {\n id: 'ok',\n label: 'Ok',\n variant: 'contained',\n onClick: handleClose,\n },\n ]}\n >\n <div className=\"verify-message\">{modalData.message}</div>\n </Modal>\n )}\n\n {showModal && (\n <Modal\n modalClassName=\"id-verification-modal\"\n actions={[\n {\n id: 'close',\n label: 'Close',\n variant: 'contained',\n onClick: () => {\n setShowModal(false)\n },\n },\n ]}\n >\n <div dangerouslySetInnerHTML={iframe(netverifyUrl || '')} />\n </Modal>\n )}\n </div>\n )\n}\n","import './style.css'\n\nimport Autocomplete from '@mui/material/Autocomplete'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Paper from '@mui/material/Paper'\nimport Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TablePagination from '@mui/material/TablePagination'\nimport TableRow from '@mui/material/TableRow'\nimport TextField from '@mui/material/TextField'\nimport axios from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport React, { useEffect, useState } from 'react'\n\nimport { getOrders } from '../../api'\nimport { getCookieByName } from '../../utils'\nimport { LoginModal } from '../loginModal'\nimport MyTicketsRow from './row'\nimport tableConfig from './tableConfig'\n\ninterface MyTicketsTypes {\n handleDetailsInfo: (id: string | number) => void;\n onGetOrdersSuccess: (res: any) => void;\n onGetOrdersError: (err: any) => void;\n logo?: string;\n theme?: 'light' | 'dark';\n selectEventsLabel?: string;\n openLoginModal?: () => void;\n hideDetailsButton?: boolean;\n columns?: IColumnData[];\n}\n\ninterface EventFilter {\n event_name: string;\n url_name: string;\n}\n\nexport const MyTicketsContainer = ({\n handleDetailsInfo = _identity,\n onGetOrdersSuccess = _identity,\n onGetOrdersError = _identity,\n theme = 'dark',\n selectEventsLabel = 'Events',\n logo,\n hideDetailsButton = false,\n columns = [],\n openLoginModal,\n}: MyTicketsTypes) => {\n const [data, setData] = useState<any>(null)\n const [loading, setLoading] = useState(true)\n const [limit, setLimit] = useState(10)\n const [filter, setFilter] = useState('')\n\n const isWindowDefined = typeof window !== 'undefined'\n const [isLogged, setIsLogged] = useState(\n isWindowDefined ? !!getCookieByName('X-TF-ECOMMERCE') : false\n )\n const [showModalLogin, setShowModalLogin] = useState(false)\n const [userExpired, setUserExpired] = useState(false)\n\n //just once\n useEffect(() => {\n fetchData(1, limit, filter)\n }, [isLogged])\n\n const fetchData = async (page: number, limit: number, eventSlug: string) => {\n try {\n setLoading(true)\n const response = await getOrders(page, limit, eventSlug)\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.attributes')\n data.page -= 1\n\n setData(data)\n } catch (error) {\n if (axios.isAxiosError(error)) {\n if (error.response?.data.error === 'invalid_token') {\n if (isWindowDefined) {\n window.localStorage.removeItem('user_data')\n setUserExpired(true)\n setShowModalLogin(true)\n }\n }\n }\n onGetOrdersError(error)\n } finally {\n setLoading(false)\n }\n }\n\n const handleChangePage = (_event: any, newPage: number) => {\n fetchData(newPage + 1, limit, filter)\n }\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {\n fetchData(1, +event.target.value, filter)\n setLimit(+event.target.value)\n }\n\n const onChange = (\n _event: React.SyntheticEvent<Element, Event>,\n eventFilter: EventFilter | null\n ) => {\n fetchData(1, limit, eventFilter?.url_name || '')\n setFilter(eventFilter?.url_name || '')\n }\n\n return (\n <div className={`my-ticket ${theme}`}>\n <>\n {showModalLogin || !isLogged ? (\n openLoginModal ? (\n openLoginModal()\n ) : (\n <LoginModal\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={() => {\n setShowModalLogin(false)\n setUserExpired(false)\n setIsLogged(true)\n }}\n userExpired={userExpired}\n logo={logo}\n />\n )\n ) : null}\n </>\n {data?.orders?.length ? (\n <>\n <h2>My Ticket Orders</h2>\n <Autocomplete\n disablePortal\n id=\"combo-box-demo\"\n getOptionLabel={(option: EventFilter) => option.event_name}\n onChange={onChange}\n options={data.purchased_events}\n sx={{ width: 300 }}\n renderInput={params => <TextField {...params} label={selectEventsLabel} />}\n />\n {loading ? (\n <div className=\"loading\">\n <CircularProgress />\n </div>\n ) : (\n <>\n <TableContainer component={Paper} className=\"my-ticket-table\">\n <Table aria-label=\"collapsible table\">\n <TableHead>\n <TableRow>\n {tableConfig(columns).header.map(\n (column: string, index: number) => (\n <TableCell key={index}>{column}</TableCell>\n )\n )}\n {!hideDetailsButton && <TableCell />}\n </TableRow>\n </TableHead>\n <TableBody>\n {data.orders?.map((row: RowItems) => (\n <MyTicketsRow\n key={row.id}\n row={row}\n handleDetailsInfo={handleDetailsInfo}\n columns={columns}\n hideDetailsButton={hideDetailsButton}\n />\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n <TablePagination\n rowsPerPageOptions={[10, 25, 100]}\n component=\"div\"\n count={data.total_count}\n rowsPerPage={limit}\n page={data.page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n />\n </>\n )}\n </>\n ) : (\n !loading && (\n <>\n <h2>My Ticket Orders</h2>\n <div className=\"no_orders_section\">\n <div className=\"nodata_title\">\n You have no current ticket orders on this account\n </div>\n <div className=\"nodata_subtitle\">\n Discover your next nite out <a href=\"/events\">here</a>.\n </div>\n </div>\n </>\n )\n )}\n <>\n {showModalLogin && (\n <LoginModal\n onClose={() => {\n setShowModalLogin(false)\n }}\n onLogin={() => {\n setShowModalLogin(false)\n setUserExpired(false)\n setIsLogged(true)\n }}\n userExpired={userExpired}\n />\n )}\n </>\n </div>\n )\n}\n","import './style.css'\n\nimport Paper from '@mui/material/Paper'\nimport Table from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport _find from 'lodash/find'\nimport _get from 'lodash/get'\nimport _has from 'lodash/has'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _map from 'lodash/map'\nimport moment from 'moment-timezone'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport SVG from 'react-inlinesvg'\n\nimport {\n getOrderDetails,\n removeFromResale,\n resaleTicket,\n updateOrderCustomFields,\n updateTicketHoldersCustomFields,\n} from '../../api'\nimport EditSvg from '../../assets/images/edit.svg'\nimport { isBrowser } from '../../utils'\nimport ConfirmModal from '../confirmModal'\nimport { InitialValuesTypes, TicketResaleModal } from '../ticketResaleModal'\nimport { CustomFieldsForm } from './CustomFieldsForm'\nimport TicketsTable, { IActionColumns, ITicketTypes } from './ticketsTable'\nimport { isFieldUpdatable, renderCustomFieldValue } from './utils'\n\ninterface TicketTypes {\n currency: string;\n discount: string;\n name: string;\n price: string;\n quantity: string;\n total: string;\n groupName: string;\n guests_count: string;\n deposit_paid: string;\n remaining: string;\n}\n\ninterface OrderDetailsTypes {\n columns: Array<{ label: string }>;\n onGetOrdersSuccess: (res: any) => void;\n onGetOrdersError: (err: any) => void;\n onReturnButtonClick: (data: any) => void;\n onRemoveFromResaleSuccess: () => void;\n onRemoveFromResaleError: (err: any) => void;\n onResaleTicketSuccess: () => void;\n onResaleTicketError: (err: any) => void;\n onUpdateOrderCustomFieldsSuccess: (val: any) => void;\n onUpdateOrderCustomFieldsError: (err: any) => void;\n onUpdateTicketHolderCustomFieldsSuccess: (val: any) => void;\n onUpdateTicketHolderCustomFieldsError: (err: any) => void;\n personalLinkIcon?: string;\n displayColumnNameInRow?: boolean;\n canSellTicket?: boolean;\n ticketsTableColumns?: Array<{\n id?: string | number;\n key: keyof ITicketTypes & keyof IActionColumns;\n label: string | number | null | undefined;\n }>;\n ordersPath?: string;\n orderId?: string | number;\n referralTitle?: string;\n itemsTitle?: string;\n ticketsTitle?: string;\n}\n\nexport interface CustomFieldOption {\n id: string;\n name: string;\n value: string;\n order: string;\n}\n\nexport interface CustomFieldTypes {\n description: string;\n enabled: string;\n id: string;\n label: string;\n name: string;\n orderId: string;\n required: boolean;\n settings: {\n showOnMyTickets: boolean;\n allowUpdate: boolean;\n className: string;\n };\n type: string;\n value: string | Array<string>;\n\n ticketHash?: string;\n options?: CustomFieldOption[];\n}\n\nconst getTotal = (data: any) => {\n if (data?.total && data?.tickets && data.tickets[0]?.currency)\n return data.tickets[0].currency + data.total\n if (!data?.total || !_has(data, 'items.ticket_types.length')) return ''\n\n return data.items.ticket_types[0].currency + data.total\n}\n\nexport const OrderDetailsContainer = ({\n columns = [],\n onGetOrdersSuccess = _identity,\n onGetOrdersError = _identity,\n onRemoveFromResaleSuccess = _identity,\n onRemoveFromResaleError = _identity,\n onResaleTicketSuccess = _identity,\n onResaleTicketError = _identity,\n onUpdateOrderCustomFieldsSuccess = _identity,\n onUpdateOrderCustomFieldsError = _identity,\n onUpdateTicketHolderCustomFieldsSuccess = _identity,\n onUpdateTicketHolderCustomFieldsError = _identity,\n onReturnButtonClick,\n personalLinkIcon = '',\n displayColumnNameInRow = false,\n canSellTicket = true,\n ticketsTableColumns,\n ordersPath,\n orderId: pOrderId,\n referralTitle = '',\n itemsTitle = '',\n ticketsTitle = 'Your Tickets',\n}: OrderDetailsTypes) => {\n const [data, setData] = useState<any>({})\n const [removeFromResaleLoading, setRemoveFromResaleLoading] = useState(false)\n const [resaleTicketLoading, setResaleTicketLoading] = useState(false)\n const [showResaleModal, setShowResaleModal] = useState(false)\n const [showRemoveResaleModal, setShowRemoveResaleModal] = useState(false)\n const [activeTicket, setActiveTicket] = useState<any>(null)\n const [showOrderCustomFieldsSection, setShowOrderCustomFieldsSection] = useState(false)\n\n const isTable = _get(data, 'tickets[0].is_table', false)\n const columnsProps = isTable\n ? [\n { label: 'Items' },\n { label: 'Price' },\n { label: 'Guests count' },\n { label: 'Deposit paid' },\n { label: 'Remaining' },\n ]\n : columns\n const ticketHoldersCustomFields = _get(data, 'ticket_data_capture', [])\n\n const orderCustomFields = _get(data, 'data_capture', [])\n const [orderUpdatableCustomFields, orderNotUpdatableCustomFields] = useMemo(() => {\n const allowedFields: CustomFieldTypes[] = []\n const notAllowedFields: CustomFieldTypes[] = []\n\n orderCustomFields.forEach((field: CustomFieldTypes) => {\n if (isFieldUpdatable(field)) {\n allowedFields.push(field)\n } else {\n notAllowedFields.push(field)\n }\n })\n return [allowedFields, notAllowedFields]\n }, [orderCustomFields])\n const orderEditableFieldsFormInitialValues = useMemo(() => {\n const initialValues = orderUpdatableCustomFields.map((field: CustomFieldTypes) => [\n field.name,\n field.type === 'checkbox' ? Boolean(field.value) : field.value || '',\n ])\n return Object.fromEntries(initialValues)\n }, [orderUpdatableCustomFields])\n\n let orderId = String(pOrderId) || ''\n if (isBrowser && !pOrderId) {\n const params: URLSearchParams = new URL(`${window.location}`).searchParams\n orderId = params.get('o') || ''\n }\n\n let orderSummery = `ID ${data.id}, placed`\n if (data.date && data.timezone) {\n const date = moment.tz(data.date, data.timezone).format('dddd, DD MMMM YYYY')\n orderSummery += ` ${date}`\n }\n\n useEffect(() => {\n (async () => {\n try {\n let orderId = pOrderId || ''\n if (isBrowser && !pOrderId) {\n const params: URLSearchParams = new URL(`${window.location}`).searchParams\n orderId = params.get('o') || ''\n }\n const response = await getOrderDetails(String(orderId))\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.attributes')\n setData(data)\n } catch (error) {\n onGetOrdersError(error)\n }\n })()\n }, [])\n\n const handleSellTicket = (ticket: ITicketTypes) => {\n const ticketTypesArr = data.items.ticket_types\n const sellTicketType = _find(\n ticketTypesArr,\n ticketType => ticketType.hash === ticket.ticket_type_hash\n )\n setActiveTicket({\n ...ticket,\n ticket_type_is_active: sellTicketType?.active,\n })\n setShowResaleModal(true)\n }\n\n const handleOnClose = () => {\n setShowResaleModal(false)\n setActiveTicket(null)\n }\n\n const handleOnSubmit = async (values: InitialValuesTypes) => {\n if (resaleTicketLoading) {\n return\n }\n\n try {\n setResaleTicketLoading(true)\n const { to, first_name, last_name, email, confirm_email, confirm } = values\n const formData = new FormData()\n formData.append('to', to)\n formData.append('first_name', first_name)\n formData.append('last_name', last_name)\n formData.append('email', email)\n formData.append('confirm_email', confirm_email)\n formData.append('confirm', String(confirm))\n\n await resaleTicket(formData, activeTicket.hash)\n const response = await getOrderDetails(orderId)\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.attributes')\n const updatedData = { ...data }\n updatedData?.tickets?.forEach((ticket: ITicketTypes) => {\n if (ticket.hash === activeTicket.hash) {\n ticket.is_sellable = false\n ticket.is_on_sale = true\n }\n })\n\n setData(updatedData)\n onResaleTicketSuccess()\n } catch (error) {\n onResaleTicketError(error)\n } finally {\n setShowResaleModal(false)\n setResaleTicketLoading(false)\n }\n }\n\n const handleRemoveFromResale = (ticket: ITicketTypes) => {\n setShowRemoveResaleModal(true)\n setActiveTicket(ticket)\n }\n\n const onCloseRemoveResale = () => {\n setShowRemoveResaleModal(false)\n setActiveTicket(null)\n }\n\n const onConfirmRemoveResale = async () => {\n if (removeFromResaleLoading) {\n return\n }\n\n try {\n setRemoveFromResaleLoading(true)\n await removeFromResale(activeTicket.hash)\n const response = await getOrderDetails(orderId)\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.attributes')\n const updatedData = { ...data }\n updatedData?.tickets?.forEach((ticket: ITicketTypes) => {\n if (ticket.hash === activeTicket.hash) {\n ticket.is_sellable = true\n ticket.is_on_sale = false\n }\n })\n\n setData(updatedData)\n onRemoveFromResaleSuccess()\n } catch (error) {\n onRemoveFromResaleError(error)\n } finally {\n setShowRemoveResaleModal(false)\n setRemoveFromResaleLoading(false)\n }\n }\n\n const handleOrderCustomFieldsUpdate = async (values: Record<string, any>) => {\n setShowOrderCustomFieldsSection(false)\n try {\n // Collect all updatable and non updatable values for bulk update\n const fullUpdatableValues = orderNotUpdatableCustomFields.reduce(\n (acc, customField) => {\n acc[customField.name] = customField.value\n return acc\n },\n { ...values }\n )\n const eventId = _get(data, 'event_id')\n const response = await updateOrderCustomFields(\n eventId,\n orderId,\n fullUpdatableValues\n )\n const updatedCustomFields = _get(response, 'data.data.attributes', [])\n\n setData((prevState: Record<string, any>) => ({\n ...prevState,\n data_capture: updatedCustomFields,\n }))\n onUpdateOrderCustomFieldsSuccess(response)\n } catch (error) {\n onUpdateOrderCustomFieldsError(error)\n }\n }\n\n const handleTicketHoldersUpdate = async (\n values: Record<string, any>,\n ticketHash: string\n ) => {\n try {\n const eventId = _get(data, 'event_id')\n const response = await updateTicketHoldersCustomFields(eventId, values, ticketHash)\n const updatedFields = _get(response, 'data.data.attributes', [])\n const notUpdatedFields = ticketHoldersCustomFields.filter(\n (field: CustomFieldTypes) => field.ticketHash !== ticketHash\n )\n\n setData((prevState: Record<string, any>) => ({\n ...prevState,\n ticket_data_capture: [...updatedFields, ...notUpdatedFields],\n }))\n onUpdateTicketHolderCustomFieldsSuccess(response)\n } catch (error) {\n onUpdateTicketHolderCustomFieldsError(error)\n }\n }\n\n return (\n <div className=\"order-details\">\n <div className=\"layout-block\">\n <h1 className=\"layout-title\">Order Details</h1>\n {!_isEmpty(orderUpdatableCustomFields) && (\n <SVG src={EditSvg} onClick={() => setShowOrderCustomFieldsSection(true)} />\n )}\n </div>\n <div className=\"order-summary-box\">\n <div className=\"summary-block\">\n <div className=\"summary-item\">\n <h6 className=\"sub-title\">Order Summary</h6>\n <p className=\"order-summary-date\">{orderSummery}</p>\n </div>\n <div className=\"summary-item\">\n <div className=\"return-button-container\">\n <button\n type=\"button\"\n className=\"return-button\"\n onClick={() => {\n if (isBrowser) {\n window.location.assign(ordersPath ?? '/orders')\n }\n }}\n >\n Back to Orders\n </button>\n </div>\n </div>\n </div>\n {!_isEmpty(orderCustomFields) && (\n <>\n <div className=\"custom-field-value-container\">\n {orderCustomFields.map((customField: CustomFieldTypes) => (\n <div className=\"info-item\" key={customField.id}>\n <b>{customField.label} :</b> {renderCustomFieldValue(customField)}\n </div>\n ))}\n </div>\n {!_isEmpty(orderUpdatableCustomFields) && (\n <div\n className={`custom-fields-block ${\n showOrderCustomFieldsSection ? 'show' : ''\n }`}\n >\n <p className=\"title\">Aditional Information Request</p>\n <CustomFieldsForm\n initialValues={orderEditableFieldsFormInitialValues}\n fields={orderUpdatableCustomFields}\n handleFormSubmit={handleOrderCustomFieldsUpdate}\n handleFormClose={() => setShowOrderCustomFieldsSection(false)}\n />\n </div>\n )}\n </>\n )}\n {!data?.disable_referral && (\n <>\n {referralTitle && (\n <h4 className=\"referral-title sub-title\">{referralTitle}</h4>\n )}\n <div className=\"personal-link\">\n <div className=\"link-item\">\n <span>Personal Share Link: </span>\n <a href={data?.personal_share_link} target=\"_blank\" rel=\"noreferrer\">\n {Boolean(personalLinkIcon) && <img src={personalLinkIcon} alt=\"Icon\" />}\n {data?.personal_share_link}\n </a>\n </div>\n {data?.sales_referred ? (\n <div className=\"link-item\">\n <p className=\"total-referrer\">{`So far, you’ve referred ${data.sales_referred} tickets`}</p>\n </div>\n ) : null}\n </div>\n </>\n )}\n {itemsTitle && <h4 className=\"items-title sub-title\">{itemsTitle}</h4>}\n <TableContainer component={Paper}>\n <Table className=\"tt-type\" aria-label=\"collapsible table\">\n <TableHead>\n <TableRow>\n {_map(columnsProps, item => (\n <TableCell>{item.label || ''}</TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.items?.ticket_types?.map((ticket: TicketTypes, index: number) =>\n data?.tickets && !data?.tickets[0].is_table ? (\n <TableRow key={index}>\n <TableCell>\n <b>Ticket Type:</b> {ticket.name}\n </TableCell>\n <TableCell>{ticket.currency + ticket.price}</TableCell>\n <TableCell>{ticket.quantity}</TableCell>\n <TableCell>{ticket.currency + ticket.total}</TableCell>\n </TableRow>\n ) : (\n <TableRow key={index}>\n <TableCell>\n <b>Ticket Type:</b> {ticket.name}\n </TableCell>\n <TableCell>{ticket.currency + ticket.price}</TableCell>\n <TableCell>{ticket.guests_count}</TableCell>\n <TableCell>{ticket.deposit_paid}</TableCell>\n <TableCell>{ticket.remaining}</TableCell>\n </TableRow>\n )\n )}\n {data?.items?.add_ons?.map((ticket: TicketTypes, index: number) => (\n <TableRow key={index}>\n <TableCell>\n <div>\n <b>Add-On</b>\n <div>\n {ticket.groupName && `${ticket.groupName}: `} {ticket.name}\n </div>\n </div>\n </TableCell>\n <TableCell>{ticket.currency + ticket.price}</TableCell>\n <TableCell>{ticket.quantity}</TableCell>\n <TableCell>{ticket.currency + ticket.total}</TableCell>\n </TableRow>\n ))}\n <TableRow className=\"total-row\">\n <TableCell />\n <TableCell />\n <TableCell>Total</TableCell>\n <TableCell>{getTotal(data)}</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n <TicketsTable\n ticketsTitle={ticketsTitle}\n tickets={data.tickets}\n columns={\n ticketsTableColumns?.length\n ? ticketsTableColumns\n : [\n { key: 'hash' as never, label: 'Ticket ID' },\n { key: 'ticket_type' as never, label: 'Ticket Type' },\n { key: 'holder_name' as never, label: 'Ticket Holder' },\n { key: 'status' as never, label: 'Status' },\n { key: 'download' as never, label: '' },\n { key: 'sell_ticket' as never, label: '' },\n ]\n }\n handleSellTicket={handleSellTicket}\n handleRemoveFromResale={handleRemoveFromResale}\n displayColumnNameInRow={displayColumnNameInRow}\n canSellTicket={canSellTicket}\n ticketHoldersCustomFields={ticketHoldersCustomFields}\n handleTicketHoldersUpdate={handleTicketHoldersUpdate}\n />\n <div className=\"return-button-container\">\n <button\n type=\"button\"\n className=\"return-button\"\n onClick={() => {\n if (onReturnButtonClick) {\n onReturnButtonClick(data)\n } else if (isBrowser) {\n window.location.assign(ordersPath ?? '/orders')\n }\n }}\n >\n Return to Order History\n </button>\n </div>\n {showResaleModal && (\n <TicketResaleModal\n ticket={activeTicket}\n onClose={handleOnClose}\n onSubmit={handleOnSubmit}\n loading={resaleTicketLoading}\n />\n )}\n {showRemoveResaleModal && (\n <ConfirmModal\n message=\"Are you sure you want to withdraw your ticket from resale?\"\n onClose={onCloseRemoveResale}\n onConfirm={onConfirmRemoveResale}\n loading={removeFromResaleLoading}\n />\n )}\n </div>\n )\n}\n","export const X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\n","import _identity from 'lodash/identity'\nimport _slice from 'lodash/slice'\nimport React, { useEffect, useState } from 'react'\n\nimport { getPreRegistrationInfluancers } from '../../api/preRegistrationComplete'\nimport { Influancers } from './Influancers'\nimport { Prewards } from './Prewards'\n\nexport const PreRegistrationInformations = (props: IPreRegistrationInformationProps) => {\n const {\n classNamePrefix,\n eventId,\n onGetPreregistrationDataSuccess = _identity,\n onGetPreregistrationDataError = _identity,\n influancersHeaderNode,\n prewardsHeaderNode,\n } = props\n\n const [prizes, setPrizes] = useState([] as Array<IPrizeData>)\n const [influencers, setInfluencers] = useState([] as Array<IInfluancerData>)\n const topInfluancers = _slice(influencers, 0, 10)\n useEffect(() => {\n const fetchPreregistrationData = async () => {\n try {\n const preregistrationData = await getPreRegistrationInfluancers({\n eventId,\n })\n setPrizes(preregistrationData.data.attributes.prizes)\n setInfluencers(preregistrationData.data.attributes.influencers)\n onGetPreregistrationDataSuccess()\n } catch (error) {\n if (error) {\n onGetPreregistrationDataError()\n }\n }\n }\n fetchPreregistrationData()\n }, [eventId, onGetPreregistrationDataError, onGetPreregistrationDataSuccess])\n\n return (\n <div className={`${classNamePrefix}_pre_registration_info_container`}>\n <Prewards\n headerNode={prewardsHeaderNode}\n data={prizes}\n classNamePrefix={classNamePrefix}\n />\n <Influancers\n headerNode={influancersHeaderNode}\n data={topInfluancers}\n classNamePrefix={classNamePrefix}\n />\n </div>\n )\n}\n","import { Alert } from '@mui/material'\nimport axios from 'axios'\nimport _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _isEmpty from 'lodash/isEmpty'\nimport _isEqual from 'lodash/isEqual'\nimport _keys from 'lodash/keys'\nimport _map from 'lodash/map'\nimport _values from 'lodash/values'\nimport moment from 'moment'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport Countdown, { CountdownRenderProps } from 'react-countdown'\n\nimport {\n getSeatMapData,\n getSeatMapStatuses,\n removeSeatReserve,\n reserveSeat,\n} from '../../api'\nimport { useOnline } from '../../hooks/useOnline'\nimport { showZero } from '../../utils/showZero'\nimport { ReferralLogic } from '../ticketsContainer/ReferralLogic'\nimport { addToCartFunc } from './addToCart'\nimport { SeatMapComponent } from './SeatMapComponent'\nimport { TicketsSection } from './TicketsSection'\nimport {\n getAddToCartRequestData,\n getOwnReservationsBasedOnStatuses,\n getTicketDropdownData,\n getTierIdBasedOnSeatId,\n} from './utils'\n\nconst OFFLINE_MESSAGE = 'Offline.'\n\ninterface IGuestCounts {\n [key: string]: number;\n}\n\nexport const SeatMapContainer = (props: IMapContainerProps) => {\n const {\n event: {\n id: eventId,\n currency: { symbol },\n tableMapEnabled,\n country,\n },\n mapContainerId,\n timerMessage = '',\n onAddToCartSuccess = _identity,\n onCountdownFinish = _identity,\n ticketDeleteButtonContent,\n ticketInfoContent,\n } = props\n\n const [seatMapData, setSeatMapData] = useState({\n seatMap: '',\n } as {\n seatMap: string;\n seatReservationTime: number;\n seatMapType: string | null;\n tierPrices: any;\n predefinedSeats: any;\n })\n const eventSeatsRef = useRef([] as EventSeat[])\n const ticketTypeTierRelationsRef = useRef({} as TicketTypeTierRelations)\n const [selectedTickets, setSelectedTickets] = useState<{\n [seatId: string]: string;\n }>({})\n const [seatMapStatuses, setSeatMapStatuses] = useState('')\n const [reservedSeats, setReservedSeats] = useState<Array<SeatReservationData>>([])\n const [isLoadingSeatMapData, setIsLoadingSeatMapData] = useState(true)\n const [isLoadingStatuses, setIsLoadingStatuses] = useState(false)\n const [isReserving, setIsReserving] = useState(false)\n const [isAddingToCart, setIsAddingToCart] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [showTimer, setShowTimer] = useState(\n Date.now() <= Number(localStorage.getItem(`reservationStart-${eventId}`))\n )\n const [guestCounts, setGuestCounts] = useState<IGuestCounts>({} as IGuestCounts)\n const [isOnline, setIsOnline] = useState(true)\n const isGuestCountsSet = useRef(false)\n\n useOnline(setIsOnline)\n\n const updateGuestCounts = (data: any) => {\n _forEach(data, (item: any) => {\n const tierTickets = ticketTypeTierRelationsRef.current[item.tierId]\n const seatTicketsArray = _values(tierTickets)\n\n setGuestCounts((prevState: any) => ({\n [item.seatId]: Number(seatTicketsArray[0].ticket_type_min_number_of_guests),\n ...prevState,\n }))\n })\n }\n\n const fetchSeatMapData = useCallback(async () => {\n try {\n const seatMapDataResponse = await getSeatMapData(eventId)\n const {\n data: {\n attributes: {\n seatData,\n ticketTypeTierRelations,\n eventSeats,\n seatReservationTime,\n seatMapType,\n tierPrices,\n predefinedSeats,\n },\n },\n } = seatMapDataResponse\n eventSeatsRef.current = eventSeats\n ticketTypeTierRelationsRef.current = ticketTypeTierRelations\n setSeatMapData({\n seatMap: JSON.parse(seatData),\n seatReservationTime,\n seatMapType,\n tierPrices,\n predefinedSeats,\n })\n } catch (error) {\n setError('Something went wrong')\n } finally {\n setIsLoadingSeatMapData(false)\n }\n }, [eventId])\n\n const fetchSeatMapReservations = useCallback(async () => {\n if (isOnline) {\n try {\n const statusesResponse = await getSeatMapStatuses(eventId)\n const statuses = _get(statusesResponse, 'data.attributes') || {}\n const reservationData: Array<SeatReservationData> = []\n const ownReservations: string[] = getOwnReservationsBasedOnStatuses(statuses)\n\n _forEach(ownReservations, reservation => {\n const tierIdOfReservation = getTierIdBasedOnSeatId(\n reservation,\n eventSeatsRef.current\n ) as string\n reservationData.push({\n seatId: reservation,\n tierId: tierIdOfReservation,\n type: 'reserve',\n })\n })\n\n localStorage.setItem('reservationData', JSON.stringify(reservationData))\n\n if (!_isEqual(seatMapStatuses, statusesResponse.data.attributes)) {\n setSeatMapStatuses(statusesResponse.data.attributes)\n }\n if (!_isEqual(reservationData, reservedSeats)) {\n setReservedSeats(reservationData)\n }\n\n // automatically set ticket/table type if it's the only one\n if (\n ticketTypeTierRelationsRef.current &&\n !_isEqual(reservationData, reservedSeats)\n ) {\n if (!isGuestCountsSet.current) {\n updateGuestCounts(reservationData)\n isGuestCountsSet.current = true\n }\n _forEach(reservationData, (item: any) => {\n const tierTickets = ticketTypeTierRelationsRef.current[item.tierId]\n const seatTicketsArray = _values(tierTickets)\n\n setSelectedTickets((prevState: any) => ({\n ...prevState,\n [item.seatId]:\n seatTicketsArray.length === 1 ? seatTicketsArray[0].ticket_type_id : '',\n }))\n })\n\n if (_isEmpty(reservationData)) {\n setGuestCounts({})\n setSelectedTickets({})\n }\n }\n } catch (error) {\n setError('Something went wrong')\n }\n }\n }, [eventId, seatMapStatuses, reservedSeats, isOnline])\n\n const startTimer = useCallback(\n (duration: number) => {\n setShowTimer(true)\n\n if (!localStorage.getItem(`reservationStart-${eventId}`)) {\n localStorage.setItem(`reservationStart-${eventId}`, String(Date.now() + duration))\n }\n },\n [eventId]\n )\n\n const endTimer = useCallback(() => {\n localStorage.removeItem(`reservationStart-${eventId}`)\n setShowTimer(false)\n }, [eventId])\n\n const handleSeatReservation = async (\n eventId: string,\n tierId: string,\n seatId: string\n ) => {\n setIsReserving(true)\n try {\n await reserveSeat(eventId, tierId, seatId)\n await fetchSeatMapReservations()\n\n startTimer(seatMapData.seatReservationTime * 60000)\n const reservationData = JSON.parse(localStorage.getItem('reservationData') || '')\n setReservedSeats(reservationData)\n updateGuestCounts(reservationData)\n\n // automatically set ticket/table type if it's the only one\n const relations = _keys(ticketTypeTierRelationsRef.current[tierId])\n const [firstItem] = _keys(ticketTypeTierRelationsRef.current[tierId])\n handleTicketSelect(relations.length === 1 ? firstItem : '', seatId)\n } catch (error) {\n setError(\n error?.response?.data?.message === 'Selected seat is not available'\n ? // eslint-disable-next-line max-len\n 'No more of this ticket type are available right now - they’re either sold out or in people’s shopping carts. Try refreshing the page!'\n : 'Something went wrong'\n )\n } finally {\n setIsReserving(false)\n }\n }\n\n const handleCancelSeatReservtion = async (\n eventId: string,\n tierId: string,\n seatId: string\n ) => {\n setIsReserving(true)\n try {\n await removeSeatReserve(eventId, tierId, [seatId])\n await fetchSeatMapReservations()\n if (_isEmpty(JSON.parse(localStorage.getItem('reservationData') as string))) {\n endTimer()\n }\n const reservationData = JSON.parse(localStorage.getItem('reservationData') || '')\n const currentSelectedTickets = { ...selectedTickets }\n delete currentSelectedTickets[seatId]\n setReservedSeats(reservationData)\n setSelectedTickets(currentSelectedTickets)\n } catch (error) {\n setError('Something went wrong')\n } finally {\n setIsReserving(false)\n }\n }\n\n const onSeatClick = async (seatInfo: {\n seat: {\n tierId: string;\n seatId: string;\n status: string;\n };\n }) => {\n const {\n seat: { tierId, seatId, status },\n } = seatInfo\n\n const reservationData = JSON.parse(localStorage.getItem('reservationData') || '[]')\n if (status === 'B' || status === 'R' || status === 'BLOCKED' || status === 'RE')\n return\n if (_find(reservationData, data => data.seatId === seatId)) {\n handleCancelSeatReservtion(eventId, tierId, seatId)\n } else if (reservationData.length >= 10) {\n setError('Limit exceeded')\n } else {\n handleSeatReservation(eventId, tierId, seatId)\n }\n }\n\n const handleTicketSelect = (ticketId: string, seatId: string) => {\n const currentSelectedTickets = { ...selectedTickets }\n currentSelectedTickets[seatId] = ticketId\n setSelectedTickets(currentSelectedTickets)\n }\n\n const handleGetTicketBtnClick = async () => {\n setIsAddingToCart(true)\n const ticketsDropdownsData = getTicketDropdownData(\n reservedSeats,\n ticketTypeTierRelationsRef.current\n )\n let selectedSeats = {}\n _forEach(ticketsDropdownsData, ticketData => {\n selectedSeats = {\n ...selectedSeats,\n [ticketData.seatId]: ticketData.ticketsData,\n }\n })\n const addToCartData = getAddToCartRequestData({\n eventId,\n reservations: _map(reservedSeats, seat => seat.seatId),\n selectedSeats,\n selectedTickets,\n guestCounts,\n })\n try {\n const response = await addToCartFunc({\n eventId,\n data: addToCartData,\n ticketQuantity: addToCartData?.attributes?.product_cart_quantity,\n })\n localStorage.removeItem('reservationData')\n onAddToCartSuccess(response)\n } catch (error) {\n if (axios.isAxiosError(error)) {\n const message = _get(error, 'response.data.message', '')\n setError(message)\n }\n } finally {\n setIsAddingToCart(false)\n }\n }\n\n useEffect(() => {\n if (Date.now() > Number(localStorage.getItem(`reservationStart-${eventId}`))) {\n setSelectedTickets({})\n setReservedSeats([])\n }\n\n const makeRequests = async () => {\n try {\n setIsLoadingStatuses(true)\n await fetchSeatMapData()\n await fetchSeatMapReservations()\n } catch (error) {\n setError('Something went wrong')\n } finally {\n setIsLoadingStatuses(false)\n }\n }\n\n makeRequests()\n\n if (country) {\n localStorage.setItem('eventCountry', country)\n }\n }, [country, eventId, fetchSeatMapData])\n\n useEffect(() => {\n const intervalId = setInterval(() => {\n fetchSeatMapReservations()\n }, 3000)\n\n return () => {\n clearInterval(intervalId)\n }\n }, [fetchSeatMapReservations])\n\n useEffect(() => {\n if (!isOnline) {\n setError(OFFLINE_MESSAGE)\n } else if (isOnline && error === OFFLINE_MESSAGE) {\n setError(null)\n }\n }, [error, isOnline])\n\n return (\n <>\n {error && (\n <Alert\n severity=\"error\"\n onClose={() => {\n setError(null)\n }}\n variant=\"filled\"\n style={{ width: '350px' }}\n >\n {error}\n </Alert>\n )}\n {showTimer && (\n <Countdown\n date={moment(\n Number(localStorage.getItem(`reservationStart-${eventId}`))\n ).valueOf()}\n renderer={(props: CountdownRenderProps) => (\n <div className=\"reservation-countdown\">\n <span className=\"reservation-message\">{timerMessage}</span>\n <span className=\"reservation-timer\">\n {showZero(props.minutes)}:{showZero(props.seconds)}\n </span>\n </div>\n )}\n onComplete={() => {\n endTimer()\n setSelectedTickets({})\n setReservedSeats([])\n if (onCountdownFinish) {\n onCountdownFinish()\n }\n }}\n />\n )}\n {!isLoadingSeatMapData && !isLoadingStatuses && <ReferralLogic eventId={eventId} />}\n <TicketsSection\n selectedTickets={selectedTickets}\n handleTicketSelect={handleTicketSelect}\n handleCancelReservation={(seatId: string, tireId: string) =>\n handleCancelSeatReservtion(eventId, tireId, seatId)\n }\n handleGetTicketClick={handleGetTicketBtnClick}\n isAddingToCart={isAddingToCart}\n reservedSeats={reservedSeats}\n ticketDeleteButtonContent={ticketDeleteButtonContent}\n ticketInfoContent={ticketInfoContent}\n ticketTypeTierRelations={ticketTypeTierRelationsRef.current}\n currencySymbol={symbol}\n tableMapEnabled={Boolean(tableMapEnabled)}\n guestCounts={guestCounts}\n setGuestCounts={setGuestCounts}\n />\n <SeatMapComponent\n seatMapProps={{\n seatData: seatMapData.seatMap,\n statuses: seatMapStatuses,\n tierPrices: seatMapData.tierPrices,\n seatMapType: seatMapData.seatMapType,\n ticketTypeTierRelations: ticketTypeTierRelationsRef.current,\n seatMapEvents: { onSeatClick },\n isReserving,\n predefinedSeats: seatMapData.predefinedSeats,\n isLoadingSeatMapData,\n }}\n mapContainerId={mapContainerId}\n />\n </>\n )\n}\n","import { useEffect } from 'react'\n\nexport const useOnline = (handler: (value: boolean) => void) => {\n useEffect(() => {\n const handleOffline = () => {\n handler(false)\n }\n const handleOnline = () => {\n handler(true)\n }\n\n window.addEventListener('offline', handleOffline)\n window.addEventListener('online', handleOnline)\n\n return () => {\n window.removeEventListener('offline', handleOffline)\n window.removeEventListener('online', handleOnline)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n","import { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport React, { useEffect, useState } from 'react'\n\nimport { declineInvitation, processTicket } from '../../api'\n\nexport interface ITicketResaleContainer {\n onProcessTicketSuccess: (res: any) => void;\n onProcessTicketError: (e: AxiosError) => void;\n onDeclineTicketPurchaseSuccess: (res: any) => void;\n onDeclineTicketPurchaseError: (e: AxiosError) => void;\n orderHash?: string;\n billingPath?: string;\n defaultRedirection?: boolean;\n}\n\nexport const TicketResaleContainer = ({\n onProcessTicketSuccess = () => {},\n onProcessTicketError = () => {},\n onDeclineTicketPurchaseSuccess = () => {},\n onDeclineTicketPurchaseError = () => {},\n orderHash,\n billingPath,\n defaultRedirection = true,\n}: ITicketResaleContainer) => {\n const isWindowDefined = typeof window !== 'undefined'\n const [error, setError] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n\n useEffect(() => {\n (async () => {\n if (isWindowDefined) {\n const params: URLSearchParams = new URL(`${window.location}`).searchParams\n const hash = params.get('invitation_hash') || orderHash || null\n const isDeclined = params.get('decline') || false\n\n if (hash) {\n // Process of declining ticket purchase invitation\n if (isDeclined) {\n try {\n const response = await declineInvitation(hash)\n onDeclineTicketPurchaseSuccess(response)\n setSuccessMessage(\n \"Thanks for letting us know! We'll offer this ticket to someone else!\"\n )\n } catch (error) {\n setError(error?.response?.data?.message)\n onDeclineTicketPurchaseError(error.response)\n }\n return\n }\n\n try {\n const response = await processTicket(hash)\n const event_id = _get(response.data.data.attributes, 'event_id')\n\n onProcessTicketSuccess(response.data)\n if (defaultRedirection) {\n window.location.href = `${billingPath ?? '/billing/billing-info'}?event_id=${event_id}`\n }\n } catch (error) {\n setError(error?.response?.data?.message)\n onProcessTicketError(error.response)\n }\n } else {\n window.location.href = '/'\n }\n }\n })()\n }, [])\n\n return (\n <div className=\"ticket-resale-page\">\n <div className={`${successMessage ? 'success-block' : 'error-block'}`}>\n <h3>{successMessage ? successMessage : error}</h3>\n </div>\n </div>\n )\n}\n","import './style.css'\n\nimport { createTheme, ThemeOptions } from '@mui/material'\nimport Alert from '@mui/material/Alert'\nimport { ThemeProvider } from '@mui/private-theming'\nimport { CSSProperties } from '@mui/styles'\nimport axios, { AxiosError } from 'axios'\nimport _filter from 'lodash/filter'\nimport _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _includes from 'lodash/includes'\nimport _isEmpty from 'lodash/isEmpty'\nimport _some from 'lodash/some'\nimport moment from 'moment-timezone'\nimport React, { ReactNode, useEffect, useRef, useState } from 'react'\nimport Button from 'react-bootstrap/Button'\n\nimport {\n addToCart,\n getCheckoutPageConfigs,\n getEvent,\n getProfileData,\n getTickets,\n logout,\n postOnCheckout,\n} from '../../api'\nimport { getPreRegistrationInfluancers } from '../../api/preRegistrationComplete'\nimport { X_TF_ECOMMERCE } from '../../constants'\nimport { useCookieListener } from '../../hooks/useCookieListener'\nimport { useLocalStorageListener } from '../../hooks/useLocalStorageListener'\nimport { usePixel } from '../../hooks/usePixel'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n deleteCookieByName,\n getCookieByName,\n getQueryVariable,\n isBrowser,\n setLoggedUserData,\n} from '../../utils'\nimport { Loader } from '../common/index'\nimport { PoweredBy } from '../common/PoweredBy'\nimport ConfirmModal from '../confirmModal'\nimport Countdown from '../countdown'\nimport { VerificationPendingModal } from '../idVerificationContainer/VerificationPendingModal'\nimport { LoginModal } from '../loginModal'\nimport WaitingList from '../waitingList'\nimport { AccessCodeSection } from './AccessCodeSection'\nimport { PromoCodeSection } from './PromoCodeSection'\nimport { ReferralLogic } from './ReferralLogic'\nimport { TicketsSection } from './TicketsSection'\n\ninterface CartSuccess {\n skip_billing_page: boolean;\n event_id: string;\n hash?: string | number;\n total?: string | number;\n hasAddOn?: boolean;\n}\n\nexport interface IGetTickets {\n eventId: number;\n onAddToCartSuccess: (response: CartSuccess) => void;\n getTicketsLabel?: string;\n contentStyle?: React.CSSProperties;\n onAddToCartError: (e: AxiosError) => void;\n onGetTicketsSuccess: (response: any) => void;\n onGetTicketsPress: () => void;\n onGetTicketsError: (e: AxiosError) => void;\n onLogoutSuccess: () => void;\n onLogoutError: (e: AxiosError) => void;\n onGetProfileDataSuccess: (response: any) => void;\n onGetProfileDataError: (e: AxiosError) => void;\n onLoginSuccess: () => void;\n handleNotInvitedModalClose: () => void;\n handleInvalidLinkModalClose: () => void;\n theme?: 'light' | 'dark';\n queryPromoCode?: string;\n isPromotionsEnabled?: boolean;\n themeOptions?: ThemeOptions & {\n input?: CSSProperties;\n checkbox?: CSSProperties;\n };\n isAccessCodeEnabled?: boolean;\n hideSessionButtons?: boolean;\n hideWaitingList?: boolean;\n enableBillingInfoAutoCreate?: boolean;\n isButtonScrollable?: boolean;\n sortBySoldOut?: boolean;\n disableCountdownLeadingZero?: boolean;\n isLoggedIn?: boolean;\n actionsSectionComponent?: any;\n ticketsHeaderComponent?: ReactNode;\n hideTicketsHeader?: boolean;\n tableTicketsHeaderComponent?: ReactNode;\n hideTableTicketsHeader?: boolean;\n enableInfluencersSection?: boolean;\n enableAddOns?: boolean;\n ordersPath?: string;\n showPoweredByImage?: boolean;\n promoText?: string;\n showGroupNameBlock?: boolean;\n currencySybmol?: string;\n onReserveButtonClick?: () => void;\n onPendingVerification?: () => void;\n showAlertIcons?: boolean;\n}\n\nexport interface ITicket {\n id: string | number;\n [key: string]: string | number;\n}\n\ninterface IInfluencer {\n [key: string]: string | undefined;\n}\nexport interface ISelectedTickets {\n isTable: boolean;\n [key: string]: string | number | boolean;\n}\n\nexport const TicketsContainer = ({\n onLoginSuccess,\n getTicketsLabel,\n eventId,\n onAddToCartSuccess,\n contentStyle = {},\n onAddToCartError = _identity,\n onGetTicketsSuccess = _identity,\n onGetTicketsError = _identity,\n onLogoutSuccess = _identity,\n onLogoutError = _identity,\n onGetProfileDataSuccess = _identity,\n onGetProfileDataError = _identity,\n onGetTicketsPress = _identity,\n theme = 'light',\n queryPromoCode = '',\n isPromotionsEnabled = true,\n themeOptions,\n isAccessCodeEnabled = false,\n hideSessionButtons = false,\n hideWaitingList = false,\n enableBillingInfoAutoCreate = true,\n isButtonScrollable = false,\n sortBySoldOut = false,\n disableCountdownLeadingZero = false,\n isLoggedIn = false,\n actionsSectionComponent: ActionsSectionComponent,\n ticketsHeaderComponent,\n hideTicketsHeader = false,\n tableTicketsHeaderComponent,\n hideTableTicketsHeader = false,\n enableInfluencersSection = true,\n enableAddOns = true,\n handleNotInvitedModalClose = _identity,\n handleInvalidLinkModalClose = _identity,\n ordersPath,\n showPoweredByImage = false,\n promoText,\n showGroupNameBlock = false,\n currencySybmol = '',\n onReserveButtonClick = _identity,\n onPendingVerification = _identity,\n showAlertIcons = true,\n}: IGetTickets) => {\n const [selectedTickets, setSelectedTickets] = useState({} as ISelectedTickets)\n const isWindowDefined = typeof window !== 'undefined'\n const [isLogged, setIsLogged] = useState(Boolean(getCookieByName(X_TF_ECOMMERCE)))\n const [showLoginModal, setShowLoginModal] = useState(false)\n const [tickets, setTickets] = useState([] as ITicketData[])\n const [event, setEvent] = useState<any>(null)\n const [showWaitingList, setShowWaitingList] = useState(false)\n const [isLoading, setIsLoading] = useState(true)\n const [codeIsLoading, setCodeIsLoading] = useState(false)\n const [handleBookIsLoading, setHandleBookIsLoading] = useState(false)\n const [code, setCode] = useState(getQueryVariable('r') || queryPromoCode)\n const [showPromoInput, setShowPromoInput] = useState(false)\n const [codeIsApplied, setCodeIsApplied] = useState(false)\n const [codeIsInvalid, setCodeIsInvalid] = useState(false)\n const [showAccessCodeSection, setShowAccessCodeSection] = useState(isAccessCodeEnabled)\n const [showPromoCodeSection, setShowPromoCodeSection] = useState(isPromotionsEnabled)\n const [error, setError] = useState(null)\n const [isNotInvitedError, setIsNotInvitedError] = useState('')\n const [isInvalidLinkError, setIsInvalidLinkError] = useState('')\n const [pendingVerificationMessage, setPendingVerificationMessage] = useState()\n const [preregistereds, setPreregistereds] = useState([] as Array<IInfluancerData>)\n const [ticketsNotAvailableModalOpen, setTicketsNotAvailableModalOpen] = useState(false)\n const [isPreregistred, setIsPreregisred] = useState(checkUserPreregistration())\n const ticketsContainerRef = useRef<HTMLDivElement>(null)\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n useCookieListener(X_TF_ECOMMERCE, value => setIsLogged(Boolean(value)))\n useLocalStorageListener('user_data', (user: any) => {\n const isPreregistredUser = _some(preregistereds, item => item.email === user?.email)\n setIsPreregisred(isPreregistredUser)\n })\n usePixel(eventId, { pageUrl })\n\n useEffect(() => {\n window.localStorage.removeItem('extraData')\n }, [])\n\n useEffect(() => {\n if (eventId) {\n getTicketsApi()\n fetchPreregisteredsData()\n }\n }, [eventId])\n\n useEffect(() => {\n setIsPreregisred(checkUserPreregistration())\n }, [preregistereds])\n\n useEffect(() => {\n if (isLogged) {\n fetchUserData()\n .then(res => {\n window.localStorage.setItem('user_data', JSON.stringify(res))\n onGetProfileDataSuccess(res)\n })\n .catch(e => {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n })\n }\n }, [isLogged])\n\n const handleLogout = async () => {\n try {\n await logout()\n onLogoutSuccess()\n if (isBrowser) {\n window.localStorage.removeItem('user_data')\n setIsLogged(false)\n const event = new window.CustomEvent('tf-logout')\n deleteCookieByName('X-TF-ECOMMERCE')\n window.document.dispatchEvent(event)\n }\n } catch (e) {\n onLogoutError(e)\n }\n }\n\n const handleExternalLogin = () => {\n setIsLogged(true)\n }\n\n const handleOnClose = () => {\n setShowLoginModal(false)\n }\n\n const handleOnLogin = () => {\n setShowLoginModal(false)\n setIsLogged(true)\n if (onLoginSuccess) {\n onLoginSuccess()\n }\n }\n\n async function getTicketsApi(isUpdateingCode?: boolean, type?: string) {\n try {\n isUpdateingCode ? setCodeIsLoading(true) : setIsLoading(true)\n const previewKey = getQueryVariable('pk') || undefined\n const response = await getTickets(eventId, code, previewKey)\n const eventResponse = await getEvent(eventId, previewKey)\n if (response.success) {\n const attributes = response?.data?.attributes\n type === 'promo' && setCodeIsApplied(attributes.ValidPromoCode)\n type === 'promo' && setCodeIsInvalid(!attributes.ValidPromoCode)\n setTickets(attributes.tickets)\n setShowWaitingList(attributes.showWaitingList)\n onGetTicketsSuccess(response.data)\n setCode('')\n setShowAccessCodeSection(attributes.is_access_code)\n setShowPromoCodeSection(attributes.isPromotionsEnabled)\n }\n if (eventResponse.success) {\n const event = eventResponse.data.attributes\n setEvent(event)\n\n if (event.country && isBrowser) {\n window.localStorage.setItem('eventCountry', event.country)\n }\n }\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetTicketsError(e)\n setError(_get(e, 'response.data.message'))\n }\n } finally {\n setIsLoading(false)\n setCodeIsLoading(false)\n }\n }\n\n async function fetchPreregisteredsData() {\n try {\n const preregistrationData = await getPreRegistrationInfluancers({\n eventId,\n })\n setPreregistereds(preregistrationData.data.attributes.influencers)\n } catch (error) {\n if (axios.isAxiosError(error)) {\n setError(_get(error, 'response.data.message'))\n }\n }\n }\n\n const handleTicketSelect = (key: string, value: number | string, isTable = false) => {\n localStorage.setItem('selectedTicketsQuantity', value.toString())\n setSelectedTickets(prevState => {\n if (Object.keys(prevState)[0] !== key && !value) {\n return prevState\n }\n return {\n [key]: value,\n isTable,\n }\n })\n }\n\n function checkUserPreregistration() {\n const userDataString = isWindowDefined ? window.localStorage.getItem('user_data') : ''\n let isPreregistredUser = false\n if (userDataString) {\n const user = JSON.parse(userDataString)\n isPreregistredUser = _some(preregistereds, item => item.email === user?.email)\n }\n return isPreregistredUser\n }\n\n const handleOrdersClick = () => {\n if (isBrowser) {\n window.location.href = ordersPath ?? '/orders'\n }\n }\n\n const onErrorClose = () => {\n setError(null)\n }\n\n const handleBook = async () => {\n setHandleBookIsLoading(true)\n const ticket = _find(tickets, item => selectedTickets[item.id] > 0) || ({} as ITicket)\n const optionName = _get(ticket, 'optionName')\n const ticketId = _get(ticket, 'id')\n const isTableType = _get(ticket, 'isTable', false)\n const productCartQuantity = +selectedTickets[ticket.id]\n const ticketQuantity = isTableType ? 1 : +selectedTickets[ticket.id]\n\n const data: ICartRequestData = {\n attributes: {\n alternative_view_id: null,\n product_cart_quantity: productCartQuantity,\n product_options: {\n [optionName]: ticketId,\n },\n product_id: eventId,\n ticket_types: {\n [ticketId]: {\n product_options: {\n [optionName]: ticketId,\n ticket_price: ticket.price,\n },\n quantity: ticketQuantity,\n },\n },\n },\n }\n\n try {\n onGetTicketsPress()\n const result = await addToCart(eventId, data)\n const pageConfigsDataResponse = enableAddOns\n ? await getCheckoutPageConfigs()\n : {\n status: 200,\n data: { attributes: _get(result, 'data.attributes') },\n }\n\n if (result.status === 200 && pageConfigsDataResponse.status === 200) {\n const pageConfigsData = _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const skipBillingPage = pageConfigsData.skip_billing_page ?? false\n const hasAddOn = pageConfigsData.has_add_on ?? false\n const freeTicket = pageConfigsData.free_ticket ?? false\n\n let hash: string | number | undefined = ''\n let total: string | number | undefined = ''\n\n isBrowser && window.localStorage.removeItem('add_ons')\n\n if (skipBillingPage && !hasAddOn) {\n // Get user data for checkout data\n const userData =\n isBrowser && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketQuantity,\n userData\n )\n\n const checkoutResponse = enableBillingInfoAutoCreate\n ? await postOnCheckout(checkoutBody, freeTicket)\n : null\n\n hash = checkoutResponse?.data?.attributes?.hash || ''\n total = checkoutResponse?.data?.attributes?.total || ''\n }\n\n onAddToCartSuccess({\n skip_billing_page: skipBillingPage,\n event_id: String(eventId),\n hash,\n total,\n hasAddOn,\n })\n }\n } catch (e) {\n if (e.response?.data?.data?.hasUnverifiedOrder) {\n setPendingVerificationMessage(e.response?.data?.message)\n } else if (axios.isAxiosError(e)) {\n onAddToCartError(e)\n const message = _get(e, 'response.data.message', '')\n const isInvalidLinkError = _includes(\n message,\n 'No more of this ticket type are available right now'\n )\n const isNotInvitedError = _includes(\n message,\n 'You must have been invited to this event to attend'\n )\n\n if (isInvalidLinkError) {\n setIsInvalidLinkError(message)\n } else if (isNotInvitedError) {\n setIsNotInvitedError(message)\n } else {\n setError(message)\n }\n }\n } finally {\n setHandleBookIsLoading(false)\n }\n }\n\n const updateTickets = (isUpdateingCode?: boolean, type?: string) => {\n getTicketsApi(isUpdateingCode, type)\n }\n\n const fetchUserData = async () => {\n const userDataResponse = await getProfileData()\n const profileData = _get(userDataResponse, 'data')\n const profileDataObj = setLoggedUserData(profileData)\n return profileDataObj\n }\n\n const isTicketOnSale = _some(\n tickets,\n item =>\n (item.salesStarted || event?.presalesStarted) && !item.salesEnded && !item.soldOut\n )\n\n const eventHasTickets = !_isEmpty(tickets)\n const isSalesClosed = event?.salesEnded\n\n const themeMui = createTheme(themeOptions)\n\n useEffect(() => {\n window.document.addEventListener('custom-login', handleExternalLogin)\n window.document.addEventListener('custom-logout', handleLogout)\n\n return () => {\n window.document.removeEventListener('custom-login', handleExternalLogin)\n window.document.removeEventListener('custom-logout', handleLogout)\n }\n }, [])\n\n const handleGetTicketClick = () => {\n if (\n !handleBookIsLoading &&\n !_isEmpty(selectedTickets) &&\n Object.values(selectedTickets)[0] > 0\n ) {\n handleBook()\n } else {\n if (isButtonScrollable && ticketsContainerRef && ticketsContainerRef.current) {\n ticketsContainerRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'nearest',\n })\n }\n }\n }\n\n const handleNotAvailableTicketsClick = () => {\n if (!_isEmpty(selectedTickets)) {\n setTicketsNotAvailableModalOpen(true)\n }\n }\n\n const bookButtonIsDisabled =\n (handleBookIsLoading ||\n _isEmpty(selectedTickets) ||\n Object.values(selectedTickets)[0] === 0) &&\n !event?.flagSeatMapAllowed\n\n const isTicketAvailable = _some(\n tickets,\n ticket =>\n ticket.displayTicket &&\n !ticket.soldOut &&\n (ticket.salesStarted || (event?.presalesStarted && !event?.presalesEnded))\n )\n\n const wrappedActionsSectionComponent = React.isValidElement(ActionsSectionComponent)\n ? React.cloneElement(ActionsSectionComponent as React.ReactElement<any>, {\n handleGetTicketClick,\n isTicketOnSale,\n isTicketAvailable,\n })\n : null\n\n const externalUrl = event?.redirectUrl\n const eventSaleIsNotStarted =\n !event?.salesStarted && event?.salesStart && !isTicketAvailable\n const influencers = event?.referralsEnabled ? event?.referrals : []\n\n const canShowGetTicketBtn = () => {\n if (\n !wrappedActionsSectionComponent &&\n !eventSaleIsNotStarted &&\n isTicketOnSale &&\n !event?.salesEnded &&\n !externalUrl\n ) {\n return true\n }\n\n return false\n }\n\n const onClose = (value: string) => {\n if (value === 'notInvited') {\n handleNotInvitedModalClose()\n } else if (value === 'invalidLink') {\n handleInvalidLinkModalClose()\n }\n setIsNotInvitedError('')\n setIsInvalidLinkError('')\n }\n const hideTopInfluencers = event?.hideTopInfluencers\n const isSeatMapAllowed = _get(event, 'seatMapAllowed', false)\n const isTableMapEnabled = _get(event, 'tableMapEnabled', false)\n\n const notAvailableTicketsMessage = `Tickets for this event are not available until ${moment(\n event?.salesStart\n ).format(\n 'dddd, DD MMMM YYYY'\n )}. \\n If you pre-registered, log into your account first to buy your pre-sale ticket.`\n\n const tableTickets = _filter(tickets, (ticket: any) => ticket.isTable)\n const ordinarTickets = {} as ITicket\n _forEach(tickets, (ticket: any, key: string) => {\n if (!ticket.isTable) {\n ordinarTickets[key] = ticket\n }\n })\n return (\n <ThemeProvider theme={themeMui}>\n {!isLoading && <ReferralLogic eventId={eventId} />}\n <div className={`get-tickets-page ${theme}`} style={contentStyle}>\n {isInvalidLinkError && (\n <ConfirmModal\n message={isInvalidLinkError}\n hideCancelBtn={true}\n onClose={() => onClose('invalidLink')}\n onConfirm={() => onClose('invalidLink')}\n />\n )}\n {isNotInvitedError && (\n <ConfirmModal\n hideCancelBtn={true}\n message={isNotInvitedError}\n onClose={() => onClose('notInvited')}\n onConfirm={() => onClose('notInvited')}\n // loading={removeFromResaleLoading}\n />\n )}\n {error && (\n <Alert\n severity=\"error\"\n onClose={onErrorClose}\n variant=\"filled\"\n style={{ width: '350px' }}\n >\n {error}\n </Alert>\n )}\n {ticketsNotAvailableModalOpen && (\n <ConfirmModal\n message={notAvailableTicketsMessage}\n hideCancelBtn={true}\n onClose={() => onClose('invalidLink')}\n onConfirm={() => setTicketsNotAvailableModalOpen(false)}\n />\n )}\n {isLoading ? (\n <Loader />\n ) : (\n <div ref={ticketsContainerRef}>\n {!isSalesClosed && (\n <TicketsSection\n event={event}\n ticketsList={ordinarTickets}\n tableTickets={tableTickets}\n selectedTickets={selectedTickets}\n handleTicketSelect={handleTicketSelect}\n sortBySoldOut={sortBySoldOut}\n ticketsHeaderComponent={ticketsHeaderComponent}\n tableTicketsHeaderComponent={tableTicketsHeaderComponent}\n hideTableTicketsHeader={hideTableTicketsHeader || _isEmpty(tableTickets)}\n hideTicketsHeader={hideTicketsHeader || _isEmpty(ordinarTickets)}\n showGroupNameBlock={showGroupNameBlock}\n currencySybmol={currencySybmol}\n isSeatMapAllowed={isSeatMapAllowed}\n />\n )}\n {externalUrl ? null : isSalesClosed ? (\n <p\n className={`event-closed-message ${!isLoggedIn ? 'event-closed-on-bottom' : ''}`}\n >\n Sales for this event are closed.\n </p>\n ) : eventSaleIsNotStarted ? (\n <Countdown\n startDate={event.salesStart}\n timezone={event.timezone}\n title=\"Sales start in:\"\n message=\"No tickets are currently available for this event.\"\n showMessage={!eventHasTickets}\n callback={updateTickets}\n disableLeadingZero={disableCountdownLeadingZero}\n isLoggedIn={isLoggedIn}\n />\n ) : null}\n {showWaitingList && event.salesStarted && !hideWaitingList && (\n <WaitingList\n tickets={ordinarTickets}\n eventId={eventId}\n defaultMaxQuantity={event.waitingListMaxQuantity}\n />\n )}\n {codeIsLoading ? (\n <Loader />\n ) : isSalesClosed ? null : showAccessCodeSection ? (\n <AccessCodeSection\n code={code}\n setCode={setCode}\n updateTickets={updateTickets}\n />\n ) : showPromoCodeSection ? (\n <PromoCodeSection\n code={code}\n codeIsApplied={codeIsApplied}\n setCodeIsApplied={setCodeIsApplied}\n showPromoInput={showPromoInput}\n setShowPromoInput={setShowPromoInput}\n setCode={setCode}\n updateTickets={updateTickets}\n codeIsInvalid={codeIsInvalid}\n setCodeIsInvalid={setCodeIsInvalid}\n promoText={promoText}\n showAlertIcons={showAlertIcons}\n />\n ) : null}\n {wrappedActionsSectionComponent}\n {canShowGetTicketBtn() && (\n <Button\n aria-hidden={true}\n className={`book-button \n ${bookButtonIsDisabled ? 'disabled' : ''} \n ${isButtonScrollable ? 'is-scrollable' : ''}\n ${!isLoggedIn ? 'on-bottom' : ''}\n `}\n onClick={\n event?.salesStart &&\n event?.presalesStarted &&\n !event?.presalesEnded &&\n (!isPreregistred || !isLogged)\n ? handleNotAvailableTicketsClick\n : handleGetTicketClick\n }\n >\n {selectedTickets.isTable\n ? 'RESERVE TABLES'\n : getTicketsLabel || 'GET TICKETS'}\n </Button>\n )}\n {isSeatMapAllowed && !event?.salesEnded && isTicketAvailable && (\n <Button\n className=\"reserve-button\"\n aria-hidden={true}\n onClick={onReserveButtonClick}\n >\n {isTableMapEnabled ? 'Select on map' : 'Select your seats'}\n </Button>\n )}\n {isLogged && !hideSessionButtons ? (\n <div className=\"session-wrapper\">\n <span className=\"session-container\">\n <Button\n variant=\"outline-light\"\n className=\"session-buttons\"\n onClick={handleOrdersClick}\n >\n My Orders\n </Button>\n </span>\n <span className=\"session-container\">\n <Button\n variant=\"outline-light\"\n className=\"session-buttons\"\n onClick={handleLogout}\n >\n Log out\n </Button>\n </span>\n </div>\n ) : (\n ''\n )}\n </div>\n )}\n {showLoginModal ? (\n <LoginModal onClose={handleOnClose} onLogin={handleOnLogin} />\n ) : null}\n </div>\n {showPoweredByImage ? <PoweredBy /> : null}\n {enableInfluencersSection && !hideTopInfluencers && influencers.length ? (\n <div className=\"event-influencers\">\n <h3>\n <span>TOP</span> INFLUENCERS\n </h3>\n <ol className=\"influencer-list\">\n {influencers.map((influencer: IInfluencer, i: number) => (\n <li className=\"influencer-item\" key={i}>\n {`${influencer.firstName} ${influencer.lastName?.charAt(0)}`}{' '}\n </li>\n ))}\n </ol>\n </div>\n ) : null}\n <VerificationPendingModal\n message={pendingVerificationMessage}\n onClose={() => {\n onPendingVerification()\n }}\n />\n </ThemeProvider>\n )\n}\n","import { useEffect, useState } from 'react'\n\nexport function useLocalStorageListener(\n key: string,\n callback: (value: string | null) => void\n): string | null {\n const isWindowDefined = typeof window !== 'undefined'\n const [value, setValue] = useState<string | null>(\n isWindowDefined ? localStorage.getItem(key) : ''\n )\n\n useEffect(() => {\n const intervalId = setInterval(() => {\n const newValue = localStorage.getItem(key)\n if (newValue !== value) {\n setValue(newValue)\n if (newValue) {\n const parsed = JSON.parse(newValue)\n if (parsed) {\n callback(parsed)\n }\n }\n }\n }, 100)\n\n return () => {\n clearInterval(intervalId)\n }\n }, [key, value, callback])\n\n return value\n}\n"],"names":["headers","Accept","Content-Type","isWindowDefined","window","authGuestToken","localStorage","getItem","publicRequest","axios","create","baseURL","setBaseUrl","baseUrl","defaults","setGuestToken","guestToken","common","CONFIGS","getQueryVariable","variable","vars","location","search","substring","split","i","length","pair","decodeURIComponent","ErrorFocus","connect","componentDidUpdate","prevProps","formik","isSubmitting","isValidating","keys","Object","errors","errorElement","document","querySelector","focus","Component","getDomain","url","subdomain","updatedUrl","replace","slice","join","indexOf","getCookieByName","cname","name","ca","cookie","c","charAt","deleteCookieByName","domain","hostname","downloadPDF","pdfUrl","xtfCookie","X-TF-ECOMMERCE","fetch","credentials","then","response","_context","blob","blobValue","fileNameHeader","get","fileName","Error","file","Blob","type","fileURL","URL","createObjectURL","link","createElement","href","setAttribute","body","appendChild","click","removeChild","error","createCheckoutDataBodyWithDefaultHolder","ticketsQuantity","logedInValues","includeDob","userCredentials","ticket_holders","first_name","_get","last_name","phone","email","push","attributes","confirm_email","holderAgeDate","Date","dob_day","getDate","dob_month","getMonth","dob_year","getFullYear","createMarkup","data","__html","replaceVarInString","message","varArray","re","RegExp","index","_","value","isBrowser","getFormInitialValues","fieldsSections","initialValues","userData","JSON","parse","_forEach","item","fields","fieldItem","setLoggedUserData","id","firstName","lastName","confirmEmail","city","country","countryId","street_address","streetAddress","state","stateId","zip","zipCode","getFieldsKeys","customFields","_map","field","isJson","e","interceptors","request","use","config","updatedHeaders","Authorization-Guest","additionalCookiesHeaderValue","Additional-Cookies","X_SOURCE_ORIGIN","X-Source-Origin","BASE_URL","setItem","method","days","expires","date","setTime","getTime","toUTCString","setCustomCookie","_error$response","status","removeItem","_error$response2","_error$response2$data","Promise","reject","optionsAdapter","options","option","label","fieldDataAdapter","required","description","restValues","adaptedField","className","multiline","radios","isMultiple","customFieldsDataAdapter","adaptedTicketFields","adaptedOrderFields","ticketFields","orderFields","ticketField","orderField","ticketsFields","authorize","post","CLIENT_ID","register","_context3","getProfileData","_context4","logout","_context5","getOrders","page","limit","eventSlug","slug","EVENT_SLUG","BRAND_SLUG","getOrderDetails","orderId","_context2","addToCart","Referer-Url","referrer","getCart","postOnCheckout","freeTicket","getEvent","pk","referralValue","params","referralId","searchParams","referral_key","_split","referralIdlocal","Referrer-Id","getTickets","eventId","promoCode","invitationHash","promoterId","String","ticketsArr","tickets","adaptedResponse","getCountries","getStates","sendRSVPInfo","addToWaitingList","_context6","postReferralVisits","_context7","validatePhoneNumber","_context8","getPaymentData","hash","handlePaymentSuccess","orderHash","undefined","handleFreeSuccess","getConfirmationData","getConditions","adaptedData","nanoid","text","checked","returnData","resaleTicket","removeFromResale","processTicket","declineInvitation","getCustomerExistsData","accessHash","getDelegationTickets","issueTicket","setCustomHeader","guestHeaderResponseValue","guestHeaderExistingValue","guestHeader","forgotPassword","getAddons","addons","getCheckoutPageConfigs","getCustomFields","updateOrderCustomFields","customFieldsData","put","order_id","data_capture","updateTicketHoldersCustomFields","ticketHash","ticket_hash","ticket_data_capture","confirmPreRegistration","getSeatMapData","reservedSeatsHash","reserved_seats_hash","getSeatMapStatuses","reserveSeat","tierId","seatId","_context9","ttl","removeSeatReserve","seatIds","_context10","getNetverifyUrl","_context11","checkVerificationStatus","_context12","updateVerificationStatus","_context13","patch","verification","verificationStatus","checkCustomerOrder","_context14","refreshSeatReservation","_context15","withCustomFields","Children","props","_props$ticketHoldersF","ticketHoldersFields","_props$skipCustomFiel","skipCustomFields","_props$onGetCustomFie","onGetCustomFieldsError","_identity","_props$onGetCustomFie2","onGetCustomFieldsSuccess","args","useState","lodaing","setLoading","setCustomFieldsData","customFieldsOrderKeys","setCustomFieldsOrderKeys","customFieldsTicketHolderKeys","setCustomFieldsTicketHolderKeys","getFields","orderFieldsKeys","ticketHoldersFieldsKeys","useEffect","initialData","_isEmpty","dataWithCustomFields","ticketHoldersWithCustomFields","orderWithCustomFields","groupClassname","groupItems","initialDataFields","splice","ticketHoldersFieldsArr","ticketHoldersCustomFieldsBlueprint","getDataWithCustomFields","React","CircularProgress","size","appendScriptsToHeader","code","tempEl","innerHTML","scripts","getElementsByTagName","script","src","head","addGTagToHeader","tagId","links","_document","_document2","trim","append","scriptBody","dataLayer","gtag","_window","domains","usePixel","getScript","page_url","pageOptions","pageUrl","order_hash","brandGoogleTagKey","eventGoogleTagKey","eventGoogleTagManagerLinkerDomains","console","SnackbarAlert","_ref$autoHideDuration","autoHideDuration","onClose","Snackbar","open","isOpen","anchorOrigin","position","vertical","horizontal","classes","root","Alert","severity","variant","icon","action","filled","CustomField","_ref2$type","_ref2$selectOptions","selectOptions","_ref2$form","form","touched","submitCount","theme","_ref2$inputProps","inputProps","pInputProps","_ref2$InputProps","InputProps","inputRef","onChange","_ref2$multiline","_ref2$minRows","minRows","maxRows","disabled","Boolean","isShrinked","setIsShrinked","_ref","useRef","isAutoFilled","current","_ref$current","matches","isSelectField","isTouched","_includes","customTheme","useTheme","sx","input","_isFunction","_isObject","TextField","placeholder","select","fullWidth","helperText","onFocus","SelectProps","native","MenuProps","InputLabelProps","shrink","onBlur","key","PoweredBy","alt","style","top","left","transform","minWidth","backgroundColor","border","outline","padding","Schema","Yup","shape","ForgotPasswordModal","_ref$onLoginButtonCli","onLoginButtonClick","_ref$onForgotPassword","onForgotPasswordSuccess","_ref$onForgotPassword2","onForgotPasswordError","_ref$showPoweredByIma","showPoweredByImage","loading","onForgotPassword","isAxiosError","Modal","Box","Formik","validationSchema","onSubmit","isValid","dirty","Form","handleSubmit","Field","component","onClick","maxHeight","overflow","_ref$actions","actions","_ref$modalClassName","modalClassName","MuiModal","children","Button","VerificationPendingModal","displayModal","showModal","setShowModal","emailRegex","combineValidators","validators","error_message","requiredValidator","errorMessage","addEventListener","err","isFalsy","emailValidator","test","LoginModal","onLogin","_ref$alreadyHasUser","alreadyHasUser","_ref$userExpired","userExpired","_ref$onGetProfileData","onGetProfileDataSuccess","_ref$onGetProfileData2","onGetProfileDataError","_ref$onSignup","onSignup","_ref$modalClassname","modalClassname","logo","_ref$showForgotPasswo","showForgotPasswordButton","_ref$showSignUpButton","showSignUpButton","setError","password","authRes","profileResponse","profileDataObj","stringify","event","CustomEvent","dispatchEvent","_e$response","_e$response$data","validate","meta","SignupSchema","min","confirmPassword","oneOf","SignupModal","_ref$onLogin","_ref$onRegisterSucces","onRegisterSuccess","_ref$onRegisterError","onRegisterError","values","formData","FormData","set","CLIENT_SECRET","showZero","intNumber","Number","_isNumber","TimerWidget","expires_at","buyLoading","_ref$onCountdownFinis","onCountdownFinish","setShowTimer","handleCountdownFinish","timerRl","visibility","SVG","width","height","fill","Countdown","now","renderer","minutes","seconds","completed","memo","CheckboxField","_ref$form","errorText","hasError","FormControl","FormGroup","FormControlLabel","control","Checkbox","componentsProps","typography","checkbox","FormHelperText","rest","_rest$form","CheckboxMaterial","_rest$form2","PhoneNumberField","setFieldError","setFieldValue","setFieldTouched","setErrors","_ref$disableDropdown","disableDropdown","_ref$defaultCountry","defaultCountry","_ref$fill","setPhoneValidationIsLoading","isCountryCodeEditable","debounceCb","useCallback","_debounce","cb","newErrors","MuiPhoneNumber","dialCode","autoFormat","disableAreaCodes","countryCodeEditable","Loader","SelectField","_ref$options","_ref$onChange","_field$value","selectId","getSelectedItemLabel","selectedValue","selectedItem","find","InputLabel","Select","labelId","multiple","target","OutlinedInput","renderValue","selected","textAlign","map","MenuItem","ListItemText","primary","CopyMessageModal","showCopyModal","compactStyleTheme","createTheme","components","MuiPaper","defaultProps","& > div","& > div > div, & > div > div > div, & .MuiCalendarPicker-root","& .MuiTypography-caption","margin","& .PrivatePickersSlideTransition-root","minHeight","DATE_SIZE","& .PrivatePickersSlideTransition-root [role=\"row\"]","& .MuiPickersDay-dayWithMargin","& .MuiPickersDay-root","& .MuiPickersArrowSwitcher-spacer","& [role=\"presentation\"] .PrivatePickersFadeTransitionGroup-root","marginRight","DatePickerField","_ref$useCompact","useCompact","_ref$dateFormat","dateFormat","_ref$placeholder","ThemeProvider","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","PopperProps","placement","showDaysOutsideCurrentMonth","disableFuture","inputFormat","mask","renderInput","evt","NativeSelectField","_ref$type","_ref$selectOptions","htmlFor","RadioGroupField","_ref$radios","radioId","FormLabel","RadioGroup","radio","Radio","getInitialValues","propsInitialValues","userValues","results","_flatMapDeep","ticketHoldersCustomFields","_ticketHoldersFields","_ticketHoldersFields$","groupItem","_ticketHoldersFields$2","ticketHoldersCustomFieldsInitValues","selectedTicketsCount","customField","createRegisterFormData","checkoutBody","flagFreeTicket","bodyFormData","includes","createCheckoutDataBody","holderAge","holders","individualHolder","fromEntries","entries","filter","_loop","holder","firstNameLogged","lastNameLogged","emailLogged","filteredRestValue","getValidateFunctions","element","states","validationFunctions","onValidate","assingUniqueIds","itemValue","_isArray","some","uniqueId","getFieldLabel","configs","flagRequirePhone","collectMandatoryWalletAddress","isRequiredField","isValidElement","getFieldComponent","select_multi","LogicRunner","setStates","setValues","setUserValues","onGetStatesSuccess","onGetStatesError","shouldFetchCountries","brandOptIn","prevCountry","mappedStates","res","stateExists","_mappedStates$find","_mappedStates$","fetchStates","userDataEncoded","parsedData","mappedValues","brand_opt_in","holderFirstName-0","holderLastName-0","holderEmail-0","extraDataJSON","extraData","getStoredUserData","WithCustomFieldsBillingInfoContainer","_ref4$ticketHoldersFi","_ref4$initialValues","_ref4$buttonName","buttonName","_ref4$handleSubmit","_ref4$theme","_ref4$onRegisterSucce","_ref4$onRegisterError","_ref4$onSubmitError","onSubmitError","_ref4$onGetCartSucces","onGetCartSuccess","_ref4$onGetCartError","onGetCartError","_ref4$onGetCountriesS","onGetCountriesSuccess","_ref4$onGetCountriesE","onGetCountriesError","_ref4$onGetStatesSucc","_ref4$onGetStatesErro","_ref4$onGetProfileDat","_ref4$onGetProfileDat2","_ref4$onLoginSuccess","onLoginSuccess","_ref4$isLoggedIn","isLoggedIn","pIsLoggedIn","_ref4$accountInfoTitl","accountInfoTitle","hideLogo","themeOptions","_ref4$onErrorClose","onErrorClose","_ref4$hideErrorsAlert","hideErrorsAlertSection","_ref4$onSkipBillingPa","onSkipBillingPage","_ref4$skipPage","skipPage","_ref4$canSkipHolderNa","canSkipHolderNames","_ref4$onForgotPasswor","_ref4$onForgotPasswor2","_ref4$shouldFetchCoun","_ref4$onCountdownFini","_ref4$enableTimer","enableTimer","_ref4$showForgotPassw","_ref4$showSignUpButto","_ref4$brandOptIn","_ref4$showPoweredByIm","_ref4$isCountryCodeEd","_ref4$onPendingVerifi","onPendingVerification","_ref4$onGetCheckoutCo","onGetCheckoutConfigsSuccess","_ref4$onGetCheckoutCo2","onGetCheckoutConfigsError","setExtraData","isConfigLoading","setIsConfigLoading","setConfigs","isNewUser","setIsNewUser","themeMui","_data$data","dataWithUniqueIds","setDataWithUniqueIds","setIsLoggedIn","cartInfoData","setCartInfo","countries","setCountries","showModalLogin","setShowModalLogin","setAlreadyHasUser","setUserExpired","showModalSignup","setShowModalSignup","showModalForgotPassword","setShowModalForgotPassword","setTicketsQuantity","holderFirstName","holderLastName","cardLoading","setCardLoading","isCountriesLoading","setIsCountriesLoading","phoneValidationIsLoading","showDOB","age_required","showTicketHolders","names_required","event_id","optedInFieldValue","ttfOptIn","isTable","hideTtfOptIn","expirationTime","phone_required","collect_mandatory_wallet_address","free_ticket","hidePhoneField","hide_phone_field","hideWalletAddressField","collect_optional_wallet_address","collectMandatoryCompany","collect_mandatory_company","hideCompanyField","collect_optional_company","collectMandatoryJobTitle","collect_mandatory_job_title","hideJobTitleField","collect_optional_job_title","collectMandatoryInstagram","collect_mandatory_instagram","hideInstagramField","collect_optional_instagram","collectMandatoryBusinessCategory","collect_mandatory_business_category","hideBusinessCategoryField","collect_optional_business_category","pendingVerificationMessage","setPendingVerificationMessage","prevData","addAddOnsInAttributes","selectedAddOns","add_ons","hasUniqueId","isEqualData","_isEqual","getQuantity","cart","qty","forEach","quantity","fetchCountries","fetchCart","cartInfo","_cartInfo$cart","Array","fetchUserData","profileSpecifiedData","userDataResponse","checkoutResponse","removeReferralKey","_e$response$data$data","hasUnverifiedOrder","_e$response2","_e$response2$data","collectPaymentData","collectCheckoutBody","profileData","_checkoutBody$attribu","holderIndex","holderDataCapture","customFieldKey","customFieldHolderName","initialCountry","_find","toLowerCase","Backdrop","color","zIndex","ttf_opt_in","instagram","company","businessCategory","jobTitle","enableReinitialize","formikHelpers","checkoutBodyForRegistration","resRegister","refreshToken","userProfile","_e$response3","_e$response3$data","_e$response3$data$dat","_e$response4","_e$response4$data","_e$response5","_e$response5$data","_e$response6","_e$response6$data","_e$response6$data$dat","_e$response7","_e$response7$data","_e$response8","_e$response9","_e$response9$data","_e$response10","Fragment","labelClassName","group","el","handleBlur","format","_item","currencyNormalizerCreator","currency","getCurrencySymbolByCurrency","createFixedFloatNormalizer","fixedValue","toFixed","adaptStripeError","adaptedError","isStripeError","payment_intent","_error$payment_intent","errorReason","ConfirmModal","_ref$loading","_ref$hideCancelBtn","hideCancelBtn","_ref$onClose","_ref$onConfirm","onConfirm","base","fontSize","letterSpacing",":-webkit-autofill","::placeholder","invalid","CheckoutForm","total","_ref$onSubmit","_ref$stripeCardOption","stripeCardOptions","_ref$error","stripe_client_secret","billing_info","_ref$isLoading","isLoading","_ref$handleSetLoading","handleSetLoading","_ref$conditions","conditions","disableZipSection","paymentButtonText","_ref$forPaymentPlan","forPaymentPlan","_ref$hasSeatMapAction","hasSeatMapActions","stripe","useStripe","elements","useElements","postalCode","setPostalCode","stripeError","setStripeError","checkboxes","setCheckboxes","allowSubmit","setAllowSubmit","preventDefault","card","getElement","CardNumberElement","address","line1","postal_code","confirmCardSetup","payment_method","token","paymentMethodId","setupIntent","_setupResponse$setupI","createPaymentMethod","billing_details","paymentMethodReq","confirmCardPayment","paymentMethod","handleCheckboxes","updatedCheckedState","allChecked","every","buttonIsDiabled","onReady","CardExpiryElement","CardCvcElement","PaymentPlanSection","paymentPlanConfig","paymentPlanUseSavedCard","setPaymentPlanUseSavedCard","total_installments","price_per_installment","interval","has_admin_fee","admin_fee","requires_deposit","deposit","non_refundable_type","non_refundable_amount","saved_card","_paymentPlanConfig$sa","stripe_payment_method_id","last_4_digits","publishableKey","STRIPE_PUBLISHABLE_KEY","getStripePromise","reviewData","stripePublishableKey","stripeAccount","loadStripe","initialPaymentPlanConfiguration","stripe_setup_intent_secret","initialOrderValues","product_name","ticketType","price","guest_count","pay_now","initialReviewValues","order_details","stripe_payment_plan_enabled","stripe_payment_plan_configuration","event_details","flagSeatMapAllowed","getImage","image","require","SocialButton","facebook","FacebookShareButton","FacebookIcon","messenger","FacebookMessengerShareButton","FacebookMessengerIcon","twitter","TwitterShareButton","TwitterIcon","linkedin","LinkedinShareButton","LinkedinIcon","pinterest","PinterestShareButton","PinterestIcon","vk","VKShareButton","VKIcon","ok","OKShareButton","OKIcon","telegram","TelegramShareButton","TelegramIcon","whatsapp","WhatsappShareButton","WhatsappIcon","reddit","RedditShareButton","RedditIcon","tumblr","TumblrShareButton","TumblrIcon","mailru","MailruShareButton","MailruIcon","EmailShareButton","EmailIcon","livejournal","LivejournalShareButton","LivejournalIcon","viber","ViberShareButton","ViberIcon","workplace","WorkplaceShareButton","WorkplaceIcon","line","LineShareButton","LineIcon","pocket","PocketShareButton","PocketIcon","instapaper","InstapaperShareButton","InstapaperIcon","weibo","WeiboShareButton","WeiboIcon","hatena","HatenaShareButton","HatenaIcon","spotify","SocialComponent","mainLabel","subLabel","platform","shareData","points","onAfterShare","alreadyApplied","oneTimeAction","_config","Icon","_config2","isActionDisabled","onKeyDown","round","isNaN","SocialButtons","showDefaultShareButtons","shareLink","appId","shareButtons","_ref2$titleText","titleText","_ref2$footerText","footerText","clientLabel","_ref2$onAfterShare","_ref2$showReferralsIn","showReferralsInfoText","quote","title","shareButton","eventActionId","getPreRegistrationInfluancers","getPreRegistrationShareOptions","submitShareAction","accessToken","phase","useCookieListener","handler","getCookie","intervalValue","setIntervalValue","cookieRef","handleCookieChange","setInterval","clearInterval","isTimeExpired","startDate","timezone","moment","isAfter","tz","_ref$timezone","guess","_ref$title","_ref$message","_ref$showMessage","showMessage","_ref$disableLeadingZe","disableLeadingZero","_ref$callback","callback","duration","setDuration","timeExpired","setTimeExpired","timer","currentDate","diffTime","diff","dateArr","year","years","month","months","day","hour","hours","minute","second","timeLeft","unit","val","generateQuantity","n","quantityList","WaitingList","_ref$defaultMaxQuanti","defaultMaxQuantity","showSuccessMessage","setShowSuccessMessage","ticketTypesList","d","displayName","showTicketsField","success","ticketTypeId","selectedTicket","waitingListMaxQuantity","AccessCodeSection","setCode","updateTickets","isAccessCodeHasValue","onKeyPress","PromoCodeSection","codeIsApplied","showPromoInput","setShowPromoInput","setCodeIsApplied","codeIsInvalid","setCodeIsInvalid","promoText","showAlertIcons","isPromoCodeHasValue","preProcessor","ReferralLogic","isAlreadyCounted","_asyncToGenerator","TicketRow","ticketTier","prevTicketTier","selectedTickets","handleTicketSelect","isSeatMapAllowed","tableType","soldOutMessage","toUpperCase","isSalesClosed","eventDatesInfo","salesStarted","presalesStarted","presalesEnded","salesEnded","presalesEnabled","defineIsSalesClosed","presales_enabled","maxCount","minCount","multiplier","Math","getTicketSelectOptions","maxGuests","maxQuantity","minGuests","minQuantity","ticketsClosedMessage","canPurchaseTicket","displayTicket","isDirectPurchaseAllowed","onSaleContent","borderRadius","displayEmpty","aria-label","PaperProps","returnValue","sold_out","soldOut","TicketsSection","ticketsList","ticketsHeaderComponent","tableTicketsHeaderComponent","hideTicketsHeader","hideTableTicketsHeader","showGroupNameBlock","currencySybmol","tableTickets","symbol","sortedTicketsList","sortBySoldOut","_sortBy","showGroup","ticket","groupName","priceSymbol","arr","ticketPrice","ticketOldPrice","oldPrice","isSoldOut","ticketIsDiscounted","ticketIsFree","ticketPriceElem","isNewGroupTicket","_arr","feeIncluded","_arr2","depositPercent","EventInfoItem","tableConfig","columns","header","ItemComponent","row","columnProps","eventName","amount","normalizer","Row","handleDetailsInfo","_ref$columns","hideDetailsButton","TableRow","& > *","borderBottom","column","TableCell","scope","onCellClick","RadioField","schema","yup","to","when","is","confirm","TicketResaleModal","holder_name","event_name","retain_amount_on_sale","ticket_type_is_active","CustomFieldsForm","_ref$fields","_ref$handleFormSubmit","handleFormSubmit","_ref$handleFormClose","handleFormClose","adaptedCustomField","resetForm","renderCustomFieldValue","getLabel","singleValue","getLabelForValue","isFieldUpdatable","settings","_field$settings","allowUpdate","TicketHolderCustomFields","holderCustomFields","_ref$handleTicketHold","handleTicketHoldersUpdate","showHolderCustomFieldsSection","setShowHolderCustomFieldsSection","useMemo","allowedFields","notAllowedFields","allowedHolderCustomFields","notAllowedHolderCustomFields","holderEditableFieldsFormInitialValues","getHolderCustomFieldsInitialValues","EditSvg","notUpdatableCustomFieldsValues","fullUpdatableValues","reduce","acc","TicketsTable","_ref$icon","_ref$displayColumnNam","displayColumnNameInRow","_ref$canSellTicket","canSellTicket","_ref$ticketsTitle","ticketsTitle","_ref$ticketHoldersCus","_ref$handleSellTicket","handleSellTicket","_ref$handleRemoveFrom","handleRemoveFromResale","pdfError","setPdfError","pdfDownload","setPdfDownload","TableContainer","Paper","Table","TableHead","TableBody","columnIndex","ticketIsDownloading","pdf_link","is_on_sale","pdfDownloadError","is_sellable","getRow","colSpan","_ticket$add_ons","add_on","password_confirmation","addonsWithGroupsAdapter","addonsData","addOnsGroups","addOnGroupsWithVariants","addOnsWithoutVariants","addon","addOnGroupId","currentGroupId","exsistingGroupIndex","findIndex","addOnGroup","variants","concat","cartAdapter","cartData","expiresAt","AddonComponent","classNamePrefix","_ref$handleAddonChang","handleAddonChange","active","stock","_isNull","generateSelectOptions","generateStockBasedOnLimitations","ticketQuantity","allowedStockCount","limitPerTicket","flagLimitToTicketQuantity","stockBasedOnLimitPerTicket","filterStockBasedOnAvailability","generatedStock","availableStock","filteredStockCount","getAddonSelectOptions","choosedTicketCount","addonsWithOptions","groupsWithSelectedVariantsInfo","groupsWithVariants","simpleAddonStock","variantId","variantStock","stockBasedOnLimitation","choosedVariants","selectedCount","allowedVariantStockCount","variantOptions","addonOptions","getTicketRelatedAddons","ticketId","prerequisiteTicketTypeIds","getSortedAddons","sortDirection","addonsCopy","unsortedVariants","sortOrder","sortedVariants","sortedAddons","_reverse","LoginForm","_ref$onLoginSuccess","_ref$onLoginError","onLoginError","onForgotPasswordButtonClick","_ref$onSignupButtonCl","onSignupButtonClick","getFieldClassNames","existingClassNames","elem","getElementById","parentElement","_elem$parentElement","clientWidth","SectionContainer","FieldsSection","formFields","_ref2$countries","_ref2$states","_ref2$containerClass","containerClass","_ref2$setPhoneValidat","_ref2$onFieldChange","onFieldChange","disableField","groupLabel","_item$groupLabelVars","groupLabelVars","_item$groupClassName","groupClassName","groupLabelClassName","elementId","childNodes","insertAdjacentHTML","insertHTML","fieldData","fieldIndex","_fieldData$className","_fieldData$options","collectStates","formDefaultFields","RegistrationForm","additionalFieldAttribute","registrationType","customerEmail","_ref$onGetCountriesSu","_ref$onGetCountriesEr","_ref$onRegisterAccoun","onRegisterAccountSuccess","_ref$onRegisterAccoun2","onRegisterAccountError","_ref$onGetStatesSucce","_ref$onGetStatesError","setErrorMessage","showErrorModal","setshowErrorModal","updatedFormFields","fieldSection","fieldSectionAttributes","updatedFields","updateFormFieldsAttributes","fetchCountryId","handleRegisterAccount","profileRes","log","VERIFICATION_STATUSES","PENDING","APPROVED","FAILED","WRONG_CUSTOMER","IssueTicketForm","_ref$handleSubmit","selectTicketTypeOptions","setSubmitting","TicketsAssignedTable","tableTitle","_ref$classNamePrefix","issuePageData","_ref$noTicketsAssigne","noTicketsAssignedText","_issuePageData$ticket","_issuePageData$ticket2","TicketsAvailableTable","ticketTypes","optionValue","delegationMaxQuantity","delegationQuantityIssued","IssueComponent","_ref$headTitle","headTitle","_ref$onGetIssuePageDa","onGetIssuePageDataSuccess","_ref$onGetIssuePageDa2","onGetIssuePageDataError","showMaxQtyModal","setShowMaxQtyModal","showSuccessModal","setShowSuccessModal","setIssuePageData","_res$data","_res$data$data","fetchDelegationTickets","eventImage","addToCartFunc","enableBillingInfoAutoCreate","result","pageConfigsDataResponse","pageConfigsData","skipBillingPage","_pageConfigsData$skip","skip_billing_page","hasAddOn","has_add_on","_checkoutResponse$dat","_checkoutResponse$dat2","_checkoutResponse$dat3","_checkoutResponse$dat4","getOwnReservationsBasedOnStatuses","statuses","ownReservations","groupRowId","seatIndex","getTicketDropdownData","reservationData","tierReleations","ticketsDropdownsData","reservation","ticketsData","_values","ticket_type_tier_id","ticket_type_name","ticket_type_price","ticket_type_id","getAddToCartRequestData","_ref$reservations","reservations","_ref$selectedSeats","selectedSeats","_ref$selectedTickets","_ref$guestCounts","guestCounts","hasGuests","addToCartData","alternative_view_id","product_cart_quantity","product_options","product_id","ticket_types","productOptions","sitem","ticket_type_option","_ticketTypes$ticket$t","ticket_price","SeatMapComponent","seatMapProps","mapContainerId","seatData","_seatMapProps$seatMap","seatMapType","_seatMapProps$seatMap2","seatMapEvents","_seatMapProps$ticketT","ticketTypeTierRelations","tierPrices","isReserving","predefinedSeats","isLoadingSeatMapData","ticketTypeTireRelationsArray","mapComponent","SeatMapView","events","isSelectionOn","isBlockMap","isTableMap","ReactDom","render","reservedSeats","_props$theme","getTicketsBtnLabel","_props$contentStyle","contentStyle","_props$isButtonScroll","isButtonScrollable","handleGetTicketClick","handleCancelReservation","_props$ticketDeleteBu","ticketDeleteButtonContent","_props$ticketInfoCont","ticketInfoContent","currencySymbol","_props$tableMapEnable","tableMapEnabled","setGuestCounts","isAddingToCart","selectedTicketsInfo","setSelectedTicketsInfo","bookButtonIsDisabled","_some","_keys","handleShowtTicketInfo","prevState","ticketItem","dropdownData","selectedTicketData","startNum","ticket_type_min_number_of_guests","endNum","ticket_type_max_number_of_guests","numLength","showGuestCountDropdown","showDescription","guestPrice","guest_price","finalPrice","handleTicketChange","display","flexDirection","justifyContent","fee_included","ticket_type_deposit","alignItems","Tooltip","arrow","tooltip","& .MuiTooltip-arrow","m","from","dangerouslySetInnerHTML","marginLeft","count","getButtonLabel","formFieldsNotLoggedIn","formFieldsLoggedIn","isDocumentDefined","Prewards","_props$classNamePrefi","_props$headerNode","headerNode","prize","CopyField","copyValue","_props$copyIconSrc","copyIconSrc","_props$copyTitle","copyTitle","_props$hasCopyIcon","hasCopyIcon","_props$onLinkCopied","onLinkCopied","_props$messageText","messageText","ref","defaultValue","readOnly","navigator","clipboard","writeText","ShareOptions","_props$headerText","headerText","updateShareActionData","shareActionData","shareUrl","socialUrl","point","shareOptionsAdapter","isShareLinkEnabled","tokenShuffleMethod","reverse","lengthOfStr","part1","words","shuffledStr","shareActionToken","Influancers","influencer","prereg_id","_ref$enableBillingInf","_ref$enableTimer","_ref$onGetAddonsPageI","onGetAddonsPageInfoSuccess","_ref$onGetAddonsPageI2","onGetAddonsPageInfoError","_ref$onPostCheckoutSu","onPostCheckoutSuccess","_ref$onPostCheckoutEr","onPostCheckoutError","_ref$onConfirmSelecti","onConfirmSelectionSuccess","_ref$onConfirmSelecti2","onConfirmSelectionError","_ref$onPendingVerific","setAddons","addonsOptions","setAddonsOptions","groupsWithSelectedVariants","setGroupsWithSelectedVariants","groupsWithInitialVariantsValues","setGroupsWithInitialVariantsValues","cartExpirationTime","setCartExpirationTime","_cartAdapter","choosedTicketID","adaptedAddons","ticketRelatedAddons","sortedTicketAddons","_getAddonSelectOption","getAddonsPageInfo","changeableGroup","currGroupId","currSelectedVariantId","currSelectedVariantCount","updatedGroupsWithSelectedVariants","groupId","changedGroupd","remainingGroupStock","recreatedVariantsOptions","variantCurrSelectedValue","assign","recreateGroupVariantsSelectOptions","handleConfirm","skipAddonPage","_error$response$data","_error$response$data$","handleClearAddons","selectedAddons","isConfirmDisabled","autoComplete","cost","isAddonFree","addonNormalizedPrice","getNormalizedPrice","imageUrl","confirmationLabels","_ref$hasCopyIcon","isReferralEnabled","_ref$messengerAppId","messengerAppId","_ref$shareButtons","_ref$onGetConfirmatio","onGetConfirmationDataSuccess","_ref$onGetConfirmatio2","onGetConfirmationDataError","_ref$onLinkCopied","_ref$showReferralsInf","_ref$showCopyInfoModa","showCopyInfoModal","_ref$showPricingNoteS","showPricingNoteSection","setData","dataEncoded","confirmationDataResponse","personal_share_sales","salesItem","salesData","sales","unshift","product_price","_data$product_price","setShowCopyModal","confirmationTitle","_confirmationLabels$c2","confirmationMain","_confirmationLabels$c3","confirmationHelper","_confirmationLabels$p","paymentPlanConfirmationTitle","_confirmationLabels$p2","paymentPlanConfirmationMain","_confirmationLabels$p3","paymentPlanConfirmationHelper","product_image","is_payment_plan","custom_confirmation_page_text","custom_confirmation_page_text_full_replacement","attach_tickets","disable_referral","personal_share_link","newData","pricing","registerFormFields","_ref$issuePageErrorTe","issuePageErrorText","_ref$onCustomerExists","onCustomerExistsError","isCustomerExsists","setIsCustomerExsists","issuePageError","setIssuePageError","setCustomerEmail","getCustomerData","onGetVerifyUrlSuccess","_props$onGetVerifyUrl2","onGetVerifyUrlError","_props$onGetVerificat","onGetVerificationStatusSuccess","_props$onGetVerificat2","onGetVerificationStatusError","_props$onVerification","onVerificationMessageModalClose","_props$onPassVerifica","onPassVerificationStepsSuccess","_props$onPassVerifica2","onPassVerificationStepsError","loadingStatus","setLoadingStatus","setVerificationStatus","netverifyUrl","setNetverifyUrl","provider","setProvider","setHasError","lastError","setLastError","displaModal","modalData","setModalData","isAccountVerifiedOrPending","callbackNetVerify","origin","getUrl","payload","transactionStatus","removeEventListener","urlResponse","intervalId","getVerificationStatus","verifyUrl","isApproved","statusResponse","getCustomerOrderStatus","makeRequests","checkoutData","iframe","_ref$onGetOrdersSucce","onGetOrdersSuccess","_ref$onGetOrdersError","onGetOrdersError","_ref$theme","_ref$selectEventsLabe","selectEventsLabel","_ref$hideDetailsButto","openLoginModal","setLimit","setFilter","isLogged","setIsLogged","fetchData","orders","_data$orders","Autocomplete","disablePortal","getOptionLabel","_event","eventFilter","url_name","purchased_events","_data$orders2","MyTicketsRow","TablePagination","rowsPerPageOptions","total_count","rowsPerPage","onPageChange","newPage","onRowsPerPageChange","_ref$onRemoveFromResa","onRemoveFromResaleSuccess","_ref$onRemoveFromResa2","onRemoveFromResaleError","_ref$onResaleTicketSu","onResaleTicketSuccess","_ref$onResaleTicketEr","onResaleTicketError","_ref$onUpdateOrderCus","onUpdateOrderCustomFieldsSuccess","_ref$onUpdateOrderCus2","onUpdateOrderCustomFieldsError","_ref$onUpdateTicketHo","onUpdateTicketHolderCustomFieldsSuccess","_ref$onUpdateTicketHo2","onUpdateTicketHolderCustomFieldsError","onReturnButtonClick","_ref$personalLinkIcon","personalLinkIcon","ticketsTableColumns","ordersPath","pOrderId","_ref$referralTitle","referralTitle","_ref$itemsTitle","itemsTitle","removeFromResaleLoading","setRemoveFromResaleLoading","resaleTicketLoading","setResaleTicketLoading","showResaleModal","setShowResaleModal","showRemoveResaleModal","setShowRemoveResaleModal","activeTicket","setActiveTicket","showOrderCustomFieldsSection","setShowOrderCustomFieldsSection","columnsProps","orderCustomFields","orderUpdatableCustomFields","orderNotUpdatableCustomFields","orderEditableFieldsFormInitialValues","orderSummery","handleOnSubmit","updatedData","_updatedData$tickets","onConfirmRemoveResale","_updatedData$tickets2","handleOrderCustomFieldsUpdate","updatedCustomFields","notUpdatedFields","rel","sales_referred","items","_data$items","_data$items$ticket_ty","is_table","guests_count","deposit_paid","remaining","_data$items2","_data$items2$add_ons","_data$tickets$","_has","getTotal","sellTicketType","ticket_type_hash","paymentFields","handlePayment","_ref$formTitle","formTitle","_ref$onErrorClose","_ref$onGetPaymentData","onGetPaymentDataSuccess","_ref$onGetPaymentData2","onGetPaymentDataError","_ref$onPaymentError","onPaymentError","_ref$disableZipSectio","elementsOptions","_ref$enablePaymentPla","enablePaymentPlan","_ref$orderInfoLabel","orderInfoLabel","_ref$paymentInfoLabel","paymentInfoLabel","setReviewData","orderData","setOrderData","showPaymentPlanSection","setShowPaymentPlanSection","paymentIsLoading","setPaymentIsLoading","paymentDataIsLoading","setPaymentDataIsLoading","setConditions","paymentPlanIsAvailable","setPaymentPlanIsAvailable","setPaymentPlanConfig","setCurrency","showFormTitle","showErrorText","isFreeTickets","paymentPlanAvailable","sessionData","session","_reviewData$order_det","updateSessionInformation","paymentDataResponse","_paymentDataResponse$","orderDataArray","_cart$","_cart$2","debt","tableTypes","conditionsInfo","conditionsResponse","fetchConditions","showPaymentForm","handlePaymentMiddleWare","paymentSuccessResponse","stripePaymentMethodId","_window$dataLayer","orderValue","orderCurrency","hasTableTypes","paymentFieldsData","parseFloat","Container","maxWidth","_field$className","_field$normalizer","tableTypeItem","gridTemplateColumns","gridColumnGap","_paymentPlanConfig$sa2","Elements","StripePayment","_paymentPlanConfig$sa3","pFormFields","isPreregistrationStarted","_ref$onConfirmationSu","onConfirmationSuccess","_ref$onConfirmationEr","onConfirmationError","show","confirmModalState","setConfirmModalState","setUserData","referrerId","updatedValues","dobDay","dobMonth","dobYear","shareHash","confirmationData","emailErrors","_e$response2$data$mes","pEventId","_ref$pageHeader","pageHeader","_ref$pageMessage","pageMessage","localStorageHash","queryHash","prizes","setPrizes","shareOptions","setShareOptions","setShareActionData","shareOptionsData","fetchConfirmationData","_isEmpaty","_props$onGetPreregist","onGetPreregistrationDataSuccess","_props$onGetPreregist2","onGetPreregistrationDataError","influancersHeaderNode","prewardsHeaderNode","setInfluencers","topInfluancers","_slice","preregistrationData","influencers","fetchPreregistrationData","_ref$onClickOk","onClickOk","tokenProps","_ref$onResetPasswordS","onResetPasswordSuccess","_ref$onResetPasswordE","onResetPasswordError","showSection","modal","setModal","handleModalClose","requestData","_props$timerMessage","timerMessage","_props$onAddToCartSuc","onAddToCartSuccess","_props$onCountdownFin","seatMap","seatMapData","setSeatMapData","eventSeatsRef","ticketTypeTierRelationsRef","setSelectedTickets","seatMapStatuses","setSeatMapStatuses","setReservedSeats","setIsLoadingSeatMapData","isLoadingStatuses","setIsLoadingStatuses","setIsReserving","setIsAddingToCart","showTimer","isOnline","setIsOnline","isGuestCountsSet","handleOffline","handleOnline","updateGuestCounts","seatTicketsArray","fetchSeatMapData","_seatMapDataResponse$","seatReservationTime","eventSeats","fetchSeatMapReservations","statusesResponse","tierIdOfReservation","seats","seatsCount","rowId","tier_id","startTimer","endTimer","handleSeatReservation","relations","_keys2","firstItem","handleCancelSeatReservtion","currentSelectedTickets","onSeatClick","seatInfo","_seatInfo$seat","seat","handleGetTicketBtnClick","ticketData","_addToCartData$attrib","valueOf","onComplete","tireId","onProcessTicketSuccess","_ref$onProcessTicketE","onProcessTicketError","_ref$onDeclineTicketP","onDeclineTicketPurchaseSuccess","_ref$onDeclineTicketP2","onDeclineTicketPurchaseError","billingPath","_ref$defaultRedirecti","defaultRedirection","successMessage","setSuccessMessage","isDeclined","getTicketsLabel","_ref$contentStyle","_ref$onAddToCartError","onAddToCartError","_ref$onGetTicketsSucc","onGetTicketsSuccess","_ref$onGetTicketsErro","onGetTicketsError","_ref$onLogoutSuccess","onLogoutSuccess","_ref$onLogoutError","onLogoutError","_ref$onGetTicketsPres","onGetTicketsPress","_ref$queryPromoCode","queryPromoCode","_ref$isPromotionsEnab","isPromotionsEnabled","_ref$isAccessCodeEnab","isAccessCodeEnabled","_ref$hideSessionButto","hideSessionButtons","_ref$hideWaitingList","hideWaitingList","_ref$isButtonScrollab","_ref$sortBySoldOut","_ref$disableCountdown","disableCountdownLeadingZero","_ref$isLoggedIn","ActionsSectionComponent","actionsSectionComponent","_ref$hideTicketsHeade","_ref$hideTableTickets","_ref$enableInfluencer","enableInfluencersSection","_ref$enableAddOns","enableAddOns","_ref$handleNotInvited","handleNotInvitedModalClose","_ref$handleInvalidLin","handleInvalidLinkModalClose","_ref$showGroupNameBlo","_ref$currencySybmol","_ref$onReserveButtonC","onReserveButtonClick","_ref$showAlertIcons","showLoginModal","setShowLoginModal","setTickets","setEvent","showWaitingList","setShowWaitingList","setIsLoading","codeIsLoading","setCodeIsLoading","handleBookIsLoading","setHandleBookIsLoading","showAccessCodeSection","setShowAccessCodeSection","showPromoCodeSection","setShowPromoCodeSection","isNotInvitedError","setIsNotInvitedError","isInvalidLinkError","setIsInvalidLinkError","preregistereds","setPreregistereds","ticketsNotAvailableModalOpen","setTicketsNotAvailableModalOpen","checkUserPreregistration","isPreregistred","setIsPreregisred","ticketsContainerRef","setValue","newValue","parsed","useLocalStorageListener","user","isPreregistredUser","getTicketsApi","fetchPreregisteredsData","handleLogout","handleExternalLogin","_getTicketsApi","isUpdateingCode","previewKey","eventResponse","_response$data","ValidPromoCode","is_access_code","_fetchPreregisteredsData","userDataString","handleBook","optionName","isTableType","isTicketOnSale","eventHasTickets","scrollIntoView","behavior","block","inline","isTicketAvailable","wrappedActionsSectionComponent","cloneElement","externalUrl","redirectUrl","eventSaleIsNotStarted","salesStart","referralsEnabled","referrals","hideTopInfluencers","isTableMapEnabled","notAvailableTicketsMessage","_filter","ordinarTickets","toString","_influencer$lastName"],"mappings":"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"}
|