tf-checkout-react 1.4.21 → 1.4.22
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/hooks/useOnline.d.ts +1 -0
- package/dist/tf-checkout-react.cjs.development.js +44 -10
- 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 +44 -10
- package/dist/tf-checkout-react.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/seatMapContainer/index.tsx +74 -52
- package/src/hooks/useOnline.ts +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tf-checkout-react.cjs.production.min.js","sources":["../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/isBrowser.ts","../src/utils/form.ts","../src/utils/jsonUtils.ts","../src/api/guestTicketDelegation.ts","../src/api/index.ts","../src/hooks/usePixel.ts","../src/validators/index.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/components/loginModal/index.tsx","../src/components/signupModal/index.tsx","../src/utils/showZero.tsx","../src/components/timerWidget/index.tsx","../src/components/common/CheckboxField.tsx","../src/components/common/PhoneNumberField.tsx","../src/components/common/Loader.tsx","../src/components/common/SelectField/index.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/components/stripePayment/index.tsx","../src/components/paymentContainer/PaymentPlanSection.tsx","../src/components/paymentContainer/index.tsx","../src/components/confirmationContainer/config.ts","../src/components/confirmationContainer/social-buttons.tsx","../src/hooks/useCookieListener.ts","../src/components/confirmModal/index.tsx","../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/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/utils/replaceVarInString.ts","../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/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/components/seatMapContainer/index.tsx","../src/components/ticketResale/index.tsx","../src/components/ticketsContainer/index.tsx","../src/constants/index.ts","../src/utils/auth.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios';\nimport _forEach from 'lodash/forEach'\n\nexport const ttfHeaders: { [key: string]: any } = {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json',\n}\n\ninterface IPublicRequest extends AxiosInstance {\n setGuestToken: (token: string) => void;\n setAccessToken: (token: string) => void;\n setBaseUrl: (baseUrl: string) => void;\n}\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 publicRequest: IPublicRequest = axios.create({\n baseURL: CONFIGS.BASE_URL || `https://www.ticketfairy.com/api`,\n headers: ttfHeaders,\n}) as IPublicRequest\n\nexport const setXSourceOrigin = (sourceOrigin: string) => {\n ttfHeaders['X-Source-Origin'] = sourceOrigin\n}\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 if (CONFIGS.X_SOURCE_ORIGIN) {\n setXSourceOrigin(CONFIGS.X_SOURCE_ORIGIN)\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: number = 5) {\n let expires = ''\n if (days) {\n let 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 let name = cname + '='\n let 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 const accessToken: string | null = localStorage.getItem('access_token')\n\n if (!accessToken && !xtfCookie) return\n\n let headers = {}\n\n if (accessToken) {\n headers = {\n Authorization: `Bearer ${accessToken}`,\n }\n }\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 return\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 => {\n return error\n })\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}\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 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 isJson = (value: any): boolean => {\n try {\n JSON.parse(value)\n } catch (e) {\n return false\n }\n return true\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from '../utils/setConfigs'\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 { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _get from 'lodash/get'\n\nimport { pageOptions } from '../hooks/usePixel'\nimport {\n GetNetverifyUrlResponseData,\n UpdateVerificationStatusResponseData,\n VerificationStatusResponseData,\n} from '../types/verification'\nimport { CONFIGS, getCookieByName, setCustomCookie } from '../utils'\nimport { getQueryVariable } from '../utils/getQueryVariable'\nimport { publicRequest, ttfHeaders } from '../utils/setConfigs'\n\nconst isWindowDefined = typeof window !== 'undefined'\nconst isDocumentDefined = typeof document !== 'undefined'\n\nif (isWindowDefined && localStorage.getItem('auth_guest_token')) {\n ttfHeaders['Authorization-Guest'] = localStorage.getItem('auth_guest_token')\n}\n\npublicRequest.interceptors.response.use(\n response => {\n const authGuestToken = _get(response, 'headers.authorization-guest')\n\n if (isWindowDefined && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n return response\n },\n error => {\n if (error?.response?.status === 401) {\n if (isWindowDefined) {\n window.localStorage.removeItem('user_data')\n window.localStorage.removeItem('access_token')\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 (isWindowDefined && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n return Promise.reject(error)\n }\n)\n\npublicRequest.interceptors.request.use((config: AxiosRequestConfig) => {\n const guestToken = isWindowDefined\n ? window.localStorage.getItem('auth_guest_token')\n : null\n const userData = isWindowDefined ? window.localStorage.getItem('user_data') : null\n const accessToken = isWindowDefined ? window.localStorage.getItem('access_token') : null\n\n if (userData && accessToken) {\n const updatedHeaders = {\n ...config.headers,\n Authorization: `Bearer ${accessToken}`,\n }\n config.headers = updatedHeaders\n }\n\n if (guestToken) {\n publicRequest.setGuestToken(guestToken)\n const updatedHeaders = {\n ...config.headers,\n 'Authorization-Guest': guestToken,\n }\n config.headers = updatedHeaders\n }\n\n if (getCookieByName('X-TF-ECOMMERCE')) {\n const updatedHeaders = {\n ...config.headers,\n 'X-TF-ECOMMERCE': getCookieByName('X-TF-ECOMMERCE'),\n }\n config.headers = updatedHeaders\n }\n\n const additionalCookiesHeaderValue = 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((response: AxiosResponse) => {\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\npublicRequest.setGuestToken = token =>\n (publicRequest.defaults.headers.common['Authorization-Guest'] = token)\n\npublicRequest.setBaseUrl = (baseUrl: string) =>\n (publicRequest.defaults.baseURL = baseUrl + '/api')\n\npublicRequest.setAccessToken = token =>\n (publicRequest.defaults.headers.common.Authorization = token)\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 (isWindowDefined) {\n window.localStorage.setItem('auth_guest_token', guestHeader)\n publicRequest.setGuestToken(guestHeader)\n }\n }\n}\n\nexport const handleSetAccessToken = (token: string) => {\n if (token) {\n if (isWindowDefined) {\n window.localStorage.setItem('access_token', token)\n publicRequest.setAccessToken(token)\n }\n }\n}\n\nexport function getEvent(id: string | number, pk?: string) {\n let referralValue = ''\n if (isWindowDefined) {\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 let referralIdlocal = ''\n if (referral_key) {\n referralIdlocal = referral_key.split('.')[1]\n }\n referralValue = referralId || referralIdlocal\n }\n\n const response = publicRequest\n .get(`v1/event/${id}`, {\n params: {\n pk,\n },\n headers: {\n ...ttfHeaders,\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n 'Referrer-Id': isWindowDefined ? referralValue : '',\n },\n })\n .catch(error => {\n throw error\n })\n return response\n}\n\nexport function getTickets(\n id: string | number,\n promoCode?: string,\n pk?: string\n) {\n const invitationHash = getQueryVariable('invitation-hash')\n const params = { pk } as any\n\n if (invitationHash) {\n params['invitation-hash'] = invitationHash\n }\n\n const response = publicRequest\n .get(`v1/event/${id}/tickets`, {\n params,\n headers: promoCode\n ? {\n ...ttfHeaders,\n 'Promotion-Event': String(id),\n 'Promotion-Code': promoCode,\n }\n : { ...ttfHeaders },\n })\n .catch(error => {\n throw error\n })\n return response\n}\n\nexport const addToCart = (id: string | number, data: any) => {\n const res = publicRequest.post(\n `v1/event/${id}/add-to-cart/`,\n { data },\n {\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n }\n )\n return res\n}\n\nexport const getCart = () => {\n const res = publicRequest.get(`v1/cart/`)\n return res\n}\n\nexport const postOnCheckout = (data: any, accessToken?: string, freeTicket = false) => {\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 const res = publicRequest.post(\n `v1/on-checkout/`,\n { data },\n {\n headers: {\n ...ttfHeaders,\n Authorization: `Bearer ${accessToken}`,\n },\n }\n )\n return res\n}\n\nexport const authorize = (data: { email: string, password: string }) =>\n publicRequest.post(\n `/auth?clientId=${CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'}`,\n data\n )\n\nexport const register = (data: FormData) =>\n publicRequest.post('v1/oauth/register-rn', data)\n\nexport const getAccessToken = (data: FormData) =>\n publicRequest.post('v1/oauth/access_token', data)\n\nexport const getPaymentData = (hash: string) => {\n const response = publicRequest\n .get(`v1/order/${hash}/review/`, {\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n })\n .catch(error => {\n throw error\n })\n return response\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 handlePaymentSuccess = (orderHash: string) => {\n const res = publicRequest\n .post(`v1/order/${orderHash}/success`, undefined, {\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n })\n .catch(error => {\n throw error\n })\n return res\n}\n\nexport const createPaymentPlan = (orderHash: string, stripePaymentMethodId: string) => {\n const res = publicRequest.post(`v1/order/${orderHash}/payment_plan/create`, {\n stripe_payment_method_id: stripePaymentMethodId\n },{\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n }).catch(error => {\n throw error\n })\n return res\n}\n\nexport const handleFreeSuccess = (orderHash: string) => {\n const res = publicRequest\n .post(`v1/order/${orderHash}/complete_free_registration`, undefined, {\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n })\n .catch(error => {\n throw error\n })\n return res\n}\n\nexport const getProfileData = (accessToken?: string) =>\n publicRequest\n .get('/customer/profile/', {\n headers: {\n ...ttfHeaders,\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .catch((e: any) => e)\n\nexport const getCountries = () => publicRequest.get('/countries/list')\n\nexport const getConfirmationData = (orderHash: string) =>\n publicRequest.get(`v1/order/${orderHash}/payment/complete`)\n\nexport const getStates = (countryId: string | number) =>\n publicRequest.get(`/countries/${countryId}/states/`)\n\nexport const getOrders = (page: number, limit: number, eventSlug: string) =>\n publicRequest.get(\n `v1/account/orders/?page=${page}&limit=${limit}&filter[event]=${eventSlug}&${\n CONFIGS.BRAND_SLUG\n ? `filter[brand]=${CONFIGS.BRAND_SLUG}&filter[subbrands]=true`\n : ''\n }`\n )\n\nexport const getOrderDetails = (orderId: string) =>\n publicRequest.get(`v1/account/order/${orderId}`)\n\nexport const addToWaitingList = (id: number, data: any) =>\n publicRequest.post(`v1/event/${id}/add_to_waiting_list`, data)\n\nexport const getConditions = (eventId: string) =>\n publicRequest.get(`v1/event/${eventId}/conditions`)\n\n// resale\nexport const resaleTicket = (data: any, hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/sell`, data)\n\nexport const removeFromResale = (hash: string) =>\n publicRequest.delete(`v1/ticket/${hash}/sell`)\n\nexport const postReferralVisits = (eventId: string, referralId: string) =>\n publicRequest.post(`v1/event/${eventId}/referrer/`, {\n referrer: `${referralId}`,\n })\n\nexport const logout = () => publicRequest.delete('/auth')\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 processTicket = (hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/process/`)\n\nexport const declineInvitation = (hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/decline`)\n\nexport const sendRSVPInfo = (eventId: number, data: any) =>\n publicRequest.post(`v1/event/${eventId}/send-rsvp-info`, data)\n\nexport const validatePhoneNumber = async (phone: string): Promise<any> => {\n const response: AxiosResponse<any, AxiosRequestConfig> = await publicRequest.get(\n `/v1/account/validate_phone?phone=${phone}`\n )\n\n return response.data\n}\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// 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<\n SeatMapDataResponse,\n 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(\n `v1/event/${eventId}/seats/reserve`,\n {\n data: {\n tierId,\n seatId,\n ttl: 10,\n },\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: pageOptions) {\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<\n GetNetverifyUrlResponseData,\n 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<\n any,\n AxiosRequestConfig\n > = await publicRequest.get(`v1/order/${orderHash}/verify-customer-order`)\n\n return response.data\n}\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}","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(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 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 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 multiline = false,\n minRows,\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 >\n {isSelectField\n ? _map(selectOptions, option => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\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\ninterface IForgotPasswordProps {\n onClose: () => void;\n onLogin: () => 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 onLogin = () => {},\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={onLogin}>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","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 {\n authorize,\n getProfileData,\n} from '../../api'\nimport { requiredValidator } from '../../validators'\nimport { PoweredBy } from '../common/PoweredBy'\n\ninterface Props {\n onClose: () => void;\n onLogin: () => 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}\ninterface 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: IUserData) => ({\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 || data?.country || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zip || data?.zipCode || '',\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 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 = _get(profileResponse, 'data.data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n const event = new window.CustomEvent('tf-login')\n window.document.dispatchEvent(event)\n }\n onLogin()\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={logo || \"https://www.ticketfairy.com/resources/images/logo-ttf-black.svg\"}\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.\n Please log in 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}>Forgot password?</span>\n </div>\n )}\n {showSignUpButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onSignup}>Sign up</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 _get from 'lodash/get'\nimport React, { FC, useState } from 'react'\nimport * as Yup from 'yup'\n\nimport { handleSetAccessToken,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: (value: {\n accessToken: string;\n refreshToken: string;\n }) => 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()\n .email('Invalid email')\n .required('Required'),\n password: Yup.string()\n .min(6, 'Password must have 5+ characters')\n .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 const access_token_register = _get(\n res,\n 'data.data.attributes.access_token'\n )\n const refreshToken = _get(\n res,\n 'data.data.attributes.refresh_token'\n )\n handleSetAccessToken(access_token_register)\n\n const tokens = {\n accessToken: access_token_register,\n refreshToken,\n }\n onRegisterSuccess(tokens)\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\n name=\"lastName\"\n label=\"Last Name\"\n component={CustomField}\n />\n </div>\n </div>\n <div className=\"signup-container__singleField\">\n <div className=\"\">\n <Field\n name=\"email\"\n label=\"Email\"\n component={CustomField}\n />\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 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 = () => {},\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\n src={Cross}\n width='10'\n height='10'\n fill='#fff'\n />\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 } 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 CheckboxField = ({\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 ...rest\n}: ICheckboxField & IOtherProps) => {\n const customTheme: any = useTheme()\n return (\n <FormControl\n error={!!(rest?.form?.errors && rest.form.errors[field?.name ?? ''])}\n >\n <FormGroup>\n <FormControlLabel\n control={<Checkbox {...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 && (\n <Checkbox checked={value.indexOf(option.value) > -1} />\n )}\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 { 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={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\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\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 _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\nimport React from 'react'\n\nimport { IGroupItem } from '../../types'\nimport { CONFIGS } from '../../utils'\nimport { getQueryVariable } from '../../utils/getQueryVariable'\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): IValues => {\n const results = _flatMapDeep(data, ({ fields }) =>\n _map(fields, ({ groupItems }) =>\n _map(groupItems, ({ name, value }) => ({ name, value }))\n )\n )\n\n const initialValues: IValues = {}\n _forEach(results, groupItem => {\n const { name, value } = groupItem\n initialValues[name] =\n 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'] =\n propsInitialValues.email || userValues.email || ''\n\n return initialValues\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 !(\n flagFreeTicket &&\n ['country', 'state', 'city', 'street_address'].includes(key)\n )\n ) {\n bodyFormData.append(key, item)\n }\n })\n\n return bodyFormData\n}\n\ninterface ICheckoutBody {\n attributes: {\n [key: string]: any;\n };\n}\n\ninterface 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\ninterface IticketHolder {\n first_name?: string;\n last_name?: string;\n phone?: string;\n email?: string;\n}\n\nexport const setLoggedUserData = (data: IUserData) => ({\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 || data?.country || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zip || data?.zipCode || '',\n})\n\nexport const createCheckoutDataBody = (\n ticketsQuantity: number,\n values: IValues = {},\n logedInValues: ILoggedInValues = {},\n includeDob = false\n): ICheckoutBody => {\n const {\n firstName,\n lastName,\n holderAge,\n confirmEmail,\n confirmPassword,\n ...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(\n holder => Object.entries(holder).length > 0\n )\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 (\n element.name !== 'state' ||\n (element.name === 'state' && states.length)\n ) {\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\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 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 (\n _isArray(itemValue) &&\n !itemValue.some(item => typeof item === 'string')\n ) {\n item[key] = assingUniqueIds(itemValue)\n }\n })\n\n return { ...item, uniqueId: nanoid() }\n })\n}\n\nexport const isRequiredField = (element: IGroupItem) => {\n const flagRequirePhone = getQueryVariable('phone_required') === 'true'\n const collectMandatoryWalletAddress =\n getQueryVariable('collect_mandatory_wallet_address') === 'true'\n const { name, required } = element\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) => {\n if (isRequiredField(element) || 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 {\n Field,\n Form,\n Formik,\n FormikHelpers,\n FormikProps,\n FormikValues,\n} from 'formik'\nimport _find from 'lodash/find'\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 { usePixel } from '../../hooks/usePixel'\nimport { IBillingInfoData } from '../../types'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n deleteCookieByName,\n getCookieByName,\n isBrowser,\n} from '../../utils'\nimport { ErrorFocus } from '../../utils/formikErrorFocus'\nimport { combineValidators, requiredValidator } from '../../validators'\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 setLoggedUserData,\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 onAuthorizeSuccess?: () => void;\n onAuthorizeError?: (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\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(_get(res, 'data.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 =\n typeof window !== 'undefined'\n ? window.localStorage.getItem('user_data')\n : ''\n useEffect(() => {\n // set user data from local storage\n const getStoredUserData = () => {\n if (typeof window !== 'undefined') {\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\n ? brandOptIn\n : parsedData?.brand_opt_in || false,\n city: parsedData?.city || '',\n confirmPassword: '',\n password: '',\n 'holderFirstName-0':\n parsedData?.first_name || parsedData?.firstName || '',\n 'holderLastName-0':\n 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\nexport const 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 onAuthorizeSuccess = _identity,\n onAuthorizeError = _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 isCountryCodeEditable = true,\n onPendingVerification = _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 const isWindowDefined = typeof window !== 'undefined'\n useEffect(() => {\n if (isWindowDefined) {\n const extraData = window.localStorage.getItem('extraData')\n if (extraData) {\n setExtraData(JSON.parse(extraData))\n }\n }\n getCheckoutPageConfigs().then(data => {\n if (data?.data?.attributes) {\n setConfigs(data.data.attributes)\n setIsConfigLoading(false)\n }\n }).catch(() => {\n setIsConfigLoading(false)\n })\n }, [isWindowDefined])\n const defaultCountry = isWindowDefined\n ? window.localStorage.getItem('eventCountry')\n : ''\n const userData =\n isWindowDefined && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n const access_token =\n isWindowDefined && window.localStorage.getItem('access_token')\n ? window.localStorage.getItem('access_token') || ''\n : ''\n const [dataWithUniqueIds, setDataWithUniqueIds] = useState<\n IBillingInfoData[]\n >(assingUniqueIds(data))\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(\n false\n )\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(\n false\n )\n const emailLogged =\n _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 =\n !collectOptionalCompany && !collectMandatoryCompany\n const collectMandatoryJobTitle = configs?.collect_mandatory_job_title\n const collectOptionalJobTitle = configs?.collect_optional_job_title\n const hideJobTitleField =\n !collectMandatoryJobTitle && !collectOptionalJobTitle\n const collectMandatoryInstagram = configs?.collect_mandatory_instagram\n const collectOptionalInstagram = configs?.collect_optional_instagram\n const hideInstagramField =\n !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 [\n pendingVerificationMessage,\n setPendingVerificationMessage,\n ] = 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 //just once\n useEffect(() => {\n // fetch countries data\n const fetchCountries = async () => {\n try {\n const res = await getCountries()\n setCustomHeader(res)\n setCountries(_get(res, 'data.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 // fetch cart data\n const fetchCart = async () => {\n try {\n setCardLoading(true)\n const res = await getCart()\n setCustomHeader(res)\n const cartInfo = _get(res, 'data.data.attributes')\n setCartInfo(cartInfo)\n const { cart = [] } = cartInfo\n setTicketsQuantity(\n new Array(getQuantity(cart)).fill(null).map(() => nanoid())\n )\n onGetCartSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetCartError(e)\n }\n } finally {\n setCardLoading(false)\n }\n }\n // fetch user data\n const fetchUserData = async (token: string) => {\n try {\n if ((isWindowDefined && token) || isLoggedIn) {\n const userDataResponse = await getProfileData(token)\n const profileSpecifiedData = _get(userDataResponse, 'data.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(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n onGetProfileDataSuccess(userDataResponse.data)\n }\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n }\n }\n useEffect(() => {\n fetchUserData(access_token)\n fetchCart()\n }, [access_token, 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 (isWindowDefined) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const res = await postOnCheckout(\n checkoutBody,\n access_token,\n flagFreeTicket\n )\n removeReferralKey()\n onSkipBillingPage(_get(res, 'data.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 = {}\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 ||\n profileData.first_name ||\n profileData.firstName,\n lastNameLogged:\n lastNameLogged || profileData.last_name || profileData.lastName,\n },\n showDOB\n )\n }\n\n return checkoutBody\n }\n\n const removeReferralKey = () => {\n localStorage.removeItem('referral_key')\n }\n\n if (\n loading ||\n (enableTimer && !expirationTime && typeof window !== 'undefined')\n ) {\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 =\n selectedCountry.id || _get(userData, 'country', '') || '1'\n\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n usePixel(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, 'state', '') || '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 )}\n enableReinitialize={false}\n onSubmit={async (values, formikHelpers) => {\n try {\n if (isWindowDefined) {\n window.localStorage.setItem('extraData', JSON.stringify({\n data_capture: {\n 'instagram': _get(values, 'data_capture.instagram', ''),\n 'company': _get(values, 'data_capture.company', ''),\n 'businessCategory': _get(values, 'data_capture.businessCategory', ''),\n 'jobTitle': _get(values, 'data_capture.jobTitle', ''),\n }\n }))\n }\n if (isLoggedIn) {\n const checkoutBody = collectCheckoutBody(values, userData)\n\n if (isWindowDefined) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const res = await postOnCheckout(\n checkoutBody,\n access_token,\n flagFreeTicket\n )\n removeReferralKey()\n // After checkout is successful recover updated profile and store it on local storage if needed\n if (isWindowDefined) {\n const updatedUserData = await getProfileData(access_token)\n const profileSpecifiedData = _get(\n updatedUserData,\n 'data.data'\n )\n const profileDataObj = setLoggedUserData(\n profileSpecifiedData\n )\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 res\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 accessToken = _get(\n resRegister,\n 'data.data.attributes.access_token'\n )\n const refreshToken = _get(\n resRegister,\n 'data.data.attributes.refresh_token'\n )\n const userProfile = _get(\n resRegister,\n 'data.data.attributes.user_profile'\n )\n\n setIsNewUser(true)\n onRegisterSuccess({\n xtfCookie,\n accessToken,\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(\n 'confirmPassword',\n error.password\n )\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.data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (isWindowDefined) {\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n }\n\n const checkoutBody = collectCheckoutBody(values, profileDataObj)\n\n if (isWindowDefined) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const res = await postOnCheckout(\n checkoutBody,\n undefined,\n flagFreeTicket\n )\n removeReferralKey()\n handleSubmit(\n values,\n formikHelpers as FormikHelpers<any>,\n eventId,\n res\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 (isWindowDefined) {\n window.localStorage.removeItem('user_data')\n window.localStorage.removeItem('access_token')\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 (\n el.name === 'ttf_opt_in' &&\n hideTtfOptIn\n ) {\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 (\n el.name ===\n 'data_capture[wallet_address]'\n ) {\n if (collectMandatoryWalletAddress) {\n el.required = true\n }\n }\n if (\n el.name === 'data_capture[jobTitle]'\n ) {\n if (collectMandatoryJobTitle) {\n el.required = true\n }\n }\n if (\n el.name === 'data_capture[businessCategory]'\n ) {\n if (collectMandatoryBusinessCategory) {\n el.required = true\n }\n }\n if (\n el.name === 'data_capture[company]'\n ) {\n if (collectMandatoryCompany) {\n el.required = true\n }\n }\n if (\n el.name === 'data_capture[instagram]'\n ) {\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' || el.name === 'data_capture[wallet_address]')\n ) {\n return false\n }\n if (\n hideJobTitleField && el.name === 'data_capture[jobTitle]'\n ) {\n return false\n }\n if (\n hideBusinessCategoryField && el.name === 'data_capture[businessCategory]'\n ) {\n return false\n }\n if (\n hideCompanyField && el.name === 'data_capture[company]'\n ) {\n return false\n }\n if (\n hideInstagramField &&\n (el.name === 'data_capture[instagram]' || 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) &&\n isLoggedIn ? null : (\n <React.Fragment key={element.uniqueId}>\n <div\n className={`${\n 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 ? undefined\n : element.type\n }\n setPhoneValidationIsLoading={\n element.type === 'phone'\n ? setPhoneValidationIsLoading\n : undefined\n }\n label={getFieldLabel(element)}\n validate={getValidateFunctions(\n element,\n states,\n props.values,\n props.errors\n )}\n setFieldValue={\n props.setFieldValue\n }\n onBlur={props.handleBlur}\n component={getFieldComponent(\n element\n )}\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 { label: element.label, value: '', disabled: true },\n ...states,\n ]\n : element.selectOptions || []\n }\n theme={theme}\n defaultCountry={\n defaultCountry ||\n 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 { groupClassname, groupItems } = group\n return (\n <div key={group.id}>\n <div className={groupClassname}>\n {_map(groupItems, element => {\n if (\n _includes(\n ['holderFirstName', 'holderLastName'],\n element.name\n )\n ) {\n element.required = showTicketHolders\n }\n return (\n <div\n className={element.className}\n key={element.name}\n >\n <Field\n {...element}\n type={\n element.type === 'radio'\n ? undefined\n : element.type\n }\n name={`${element.name}-${index}`}\n label={getFieldLabel(element)}\n component={getFieldComponent(element)}\n validate={combineValidators(\n element.required\n ? requiredValidator\n : () =>\n props.errors[\n `${element.name}-${index}`\n ],\n element.onValidate\n ? element.onValidate\n : () =>\n props.errors[\n `${element.name}-${index}`\n ]\n )}\n setPhoneValidationIsLoading={\n setPhoneValidationIsLoading\n }\n defaultCountry={\n defaultCountry ||\n element.defaultCountry\n }\n isCountryCodeEditable={\n isCountryCodeEditable\n }\n />\n </div>\n )\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 ? (\n <CircularProgress size={26} />\n ) : (\n buttonName\n )}\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 onAuthorizeSuccess={onAuthorizeSuccess}\n onAuthorizeError={onAuthorizeError}\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 onLogin={() => {\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","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 './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 { getCurrencySymbolByCurrency } from '../../normalizers'\nimport { CheckboxField } from '../common/index'\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;\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}\n\ninterface AddressTypes {\n city: string;\n line1: string;\n state: string;\n postal_code?: string;\n}\n\nconst CheckoutForm = ({\n total,\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}: 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\n const handleSubmit = async (event: React.SyntheticEvent) => {\n setStripeError(null)\n try {\n event.preventDefault()\n\n if (!postalCode && !disableZipSection) {\n setStripeError('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.message || 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(error.message)\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\n return (\n <div className=\"stripe_payment_container\">\n {!!stripeError && <div className=\"checkout_error_block\">{stripeError}</div>}\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 <CheckboxField\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 `${\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 {CheckboxField} 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\">{paymentPlanConfig.total_installments}</span>\n {' '}payments of{' '}\n <span className=\"payment_plan_highlight\">{currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.price_per_installment),\n currency\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\">{currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.admin_fee),\n currency\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\">{currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.deposit),\n currency\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\n tickets will 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\">first payment of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.price_per_installment),\n currency\n )}</span>\n {paymentPlanConfig.has_admin_fee && (\n <>\n , plus the{' '}\n <span className=\"payment_plan_highlight\">non-refundable admin-fee of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.admin_fee),\n currency\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)(100 - paymentPlanConfig.non_refundable_amount)}%\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\">{'' + paymentPlanConfig.saved_card.last_4_digits}</span>\n </div>\n )}\n <div>\n <CheckboxField\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 { CheckboxField, 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) => 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: null,\n },\n billing_info: {},\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 (typeof window !== 'undefined') {\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 response = await getPaymentData(hash)\n if (response.data.success) {\n const attributes = _get(response, 'data.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 || null,\n debt: order_details?.debt || null,\n tableTypes: orderDataArray,\n }\n setOrderData(orderData)\n setCurrency(order_details?.currency)\n onGetPaymentDataSuccess(response.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 res = await getConditions(eventId)\n const conditionsInfo = _get(res, 'data.data.attributes')\n setConditions(\n conditionsInfo\n ? conditionsInfo.map((item: string) => ({\n id: nanoid(),\n text: item,\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 const isWindowDefined = typeof window !== 'undefined'\n if (isWindowDefined) {\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)\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 (typeof window !== 'undefined' && !!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'\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 <CheckboxField\n label={<span className='payment_plan_toggle_label'>Click to checkout using Payment Plan</span>}\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 total={orderData.guest_count ? orderData.pay_now : orderData.total}\n onSubmit={handlePaymentMiddleWare}\n error={error}\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","import {\n FacebookShareButton,\n FacebookMessengerShareButton,\n TwitterShareButton,\n LinkedinShareButton,\n PinterestShareButton,\n VKShareButton,\n OKShareButton,\n TelegramShareButton,\n WhatsappShareButton,\n RedditShareButton,\n TumblrShareButton,\n MailruShareButton,\n EmailShareButton,\n LivejournalShareButton,\n ViberShareButton,\n WorkplaceShareButton,\n LineShareButton,\n PocketShareButton,\n InstapaperShareButton,\n WeiboShareButton,\n HatenaShareButton,\n FacebookIcon,\n FacebookMessengerIcon,\n TwitterIcon,\n LinkedinIcon,\n PinterestIcon,\n VKIcon,\n OKIcon,\n TelegramIcon,\n WhatsappIcon,\n RedditIcon,\n TumblrIcon,\n MailruIcon,\n EmailIcon,\n LivejournalIcon,\n ViberIcon,\n WorkplaceIcon,\n LineIcon,\n PocketIcon,\n InstapaperIcon,\n WeiboIcon,\n HatenaIcon,\n} from 'react-share'\n\nconst config: any = {\n facebook: { component: FacebookShareButton, icon: FacebookIcon },\n messenger: { component: FacebookMessengerShareButton, icon: FacebookMessengerIcon },\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}\n\nexport default function (key: string) {\n return config[key]\n}\n","import React from 'react'\n\nimport config from './config'\nimport { IShareButton } from './index'\n\nconst SocialComponent = ({\n mainLabel,\n subLabel,\n platform,\n shareData,\n}: IShareButton) => {\n const Component = config(platform)?.component\n const Icon = config(platform)?.icon\n\n return (\n <>\n {Component && (\n <Component {...shareData}>\n <div className=\"social-media-sharing\">\n <div className=\"share-icon\">\n <Icon size={32} round />\n </div>\n <span className=\"share-text\">\n {mainLabel}\n <br /> {subLabel}\n </span>\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 clientLabel?: string;\n showReferralsInfoText?: boolean;\n}\n\nconst SocialButtons = ({\n showDefaultShareButtons,\n shareLink,\n name,\n appId,\n shareButtons,\n clientLabel,\n showReferralsInfoText,\n}: SocialButtonsTypes) => (\n <>\n <div className=\"convenient_buttons\">\n or use one of these convenient buttons:\n </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 key={index} {...shareButton} />\n ))}\n </div>\n {(showDefaultShareButtons || shareButtons.length) && (\n <p>\n We <strong>never</strong> post on Facebook without your permission!\n </p>\n )}\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\n referrals\n </span>\n <span>\n {' '}\n so please make sure you ask your friends to buy their own tickets\n using their own {clientLabel || 'Ticket Fairy'} account!\n </span>\n </p>\n )}\n </>\n)\n\nexport default SocialButtons\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 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 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 React, { useState } from 'react'\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport { Field, Form, Formik } from 'formik'\nimport { CustomField } from '../common/index'\nimport { addToWaitingList } from '../../api'\nimport {\n combineValidators,\n requiredValidator,\n emailValidator,\n} from '../../validators'\nimport { ErrorFocus } from '../../utils/formikErrorFocus'\n\nimport './style.css'\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 = ({ tickets = {}, eventId, defaultMaxQuantity = 10 }: WaitingListProps) => {\n const isWindowDefined = typeof window !== 'undefined'\n const userData =\n isWindowDefined && 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 requestData = {\n data: {\n attributes: values,\n },\n }\n const { data } = await addToWaitingList(eventId, requestData)\n\n if (data.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 <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 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(defaultMaxQuantity ?? 10),\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 </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') || ''\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 { getTicketSelectOptions } from './utils'\n\ninterface ITicketRowProps {\n ticketTier: any;\n prevTicketTier: any;\n selectedTickets: any;\n handleTicketSelect: any;\n isSeatMapAllowed?: any;\n tableType?: boolean;\n}\n\nexport const TicketRow = ({\n ticketTier,\n prevTicketTier,\n selectedTickets,\n handleTicketSelect,\n isSeatMapAllowed,\n tableType,\n}: ITicketRowProps) => {\n const soldOutMessage = ticketTier.soldOutMessage\n ? `${ticketTier.soldOutMessage}`.toUpperCase()\n : 'SOLD OUT'\n const isSalesClosed = !ticketTier.salesStarted || ticketTier.salesEnded\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={\n selectedTickets[ticketTier.id]\n ? selectedTickets[ticketTier.id]\n : 0\n }\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 (\n canPurchaseTicket &&\n isSeatMapAllowed &&\n !isDirectPurchaseAllowed\n ) {\n // Seat Map Tickets renderer logic\n returnValue = null\n } else if (canPurchaseTicket) {\n returnValue = onSaleContent\n } else if (_get(prevTicketTier, 'in_stock')) {\n returnValue = 'SOON'\n }\n\n return <>{returnValue} </>\n}\n","export const getTicketSelectOptions = (\n maxCount = 10,\n minCount = 1,\n multiplier = 1\n) => {\n const options = [{ label: 0, value: 0 }]\n for (let i = minCount; i <= Math.min(50, maxCount); i += multiplier) {\n options.push({ label: i, value: i })\n }\n return options\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 =\n 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\n className={`event-detail__tier ${isSoldOut ? 'disabled' : ''}`}\n >\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 && (\n <p className=\"old-price\">{ticketOldPrice}</p>\n )}\n <p className={isSoldOut ? 'sold-out' : ''}>\n {ticketPriceElem}\n </p>\n {!isSoldOut && !ticketIsFree && (\n <p className=\"fees\">\n {ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'}\n </p>\n )}\n </div>\n <div\n className=\"event-detail__tier-state\"\n style={{ minWidth: 55 }}\n >\n <TicketRow\n ticketTier={ticket}\n prevTicketTier={arr[i - 1]}\n selectedTickets={selectedTickets}\n handleTicketSelect={ticketSelect}\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 =\n 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\n className={`event-detail__tier ${isSoldOut ? 'disabled' : ''}`}\n >\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 && (\n <p className=\"old-price\">{ticketOldPrice}</p>\n )}\n <p className={isSoldOut ? 'sold-out' : ''}>\n {ticketPriceElem}\n </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\">\n {ticket.depositPercent + '% DEPOSIT'}\n </p>\n )}\n </div>\n <div\n className=\"event-detail__tier-state\"\n style={{ minWidth: 55 }}\n >\n <TicketRow\n tableType={true}\n ticketTier={ticket}\n prevTicketTier={arr[i - 1]}\n selectedTickets={selectedTickets}\n handleTicketSelect={ticketSelect}\n isSeatMapAllowed={isSeatMapAllowed}\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 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 _map from 'lodash/map'\nimport React, { Fragment, useState } from 'react'\n\nimport { downloadPDF } from '../../utils'\nimport SnackbarAlert from '../common/SnackbarAlert'\n\ninterface IAddOnTypes {\n name: string;\n groupName: string;\n status: string;\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\n icon?: string;\n displayColumnNameInRow?: boolean;\n ticketsTitle?: string;\n}\n\ntype PdfDownload = {\n hash: string;\n loading: boolean;\n}\n\nconst TicketsTable = ({\n tickets = [],\n columns = [],\n handleSellTicket = _identity,\n handleRemoveFromResale = _identity,\n icon = '',\n displayColumnNameInRow = false,\n canSellTicket = true,\n ticketsTitle = 'Your Tickets',\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 ? (\n <CircularProgress size=\"22px\" />\n ) : (\n 'Download'\n )}\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 <Fragment key={index}>\n <TableRow>{getRow(ticket)}</TableRow>\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(\n (add_on: IAddOnTypes, index: number) => (\n <TableRow key={index}>\n <TableCell>{add_on.groupName && `${add_on.groupName}: `} {add_on.name}</TableCell>\n <TableCell>{add_on.status}</TableCell>\n </TableRow>\n )\n )}\n </TableBody>\n </Table>\n </TableCell>\n </TableRow>\n )}\n </Fragment>\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(\n group => group.attributes.id === currentGroupId\n ) || {}\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.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 {\n combineValidators,\n emailValidator,\n requiredValidator,\n} from '../../validators'\nimport { CustomField } from '../common'\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}\n\ninterface 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: IUserData) => ({\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 || data?.country || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.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}) => {\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.data'))\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n return\n }\n\n const profileSpecifiedData = _get(profileResponse, 'data.data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n const event = new window.CustomEvent('tf-login')\n window.document.dispatchEvent(event)\n }\n onLoginSuccess(_get(authRes, 'data.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\n log in 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(\n requiredValidator,\n emailValidator\n )}\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\n aria-hidden=\"true\"\n onClick={onForgotPasswordButtonClick}\n >\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 </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","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","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(_get(res, 'data.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.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(\n 'user_data',\n JSON.stringify(_get(profileRes, 'data.data'))\n )\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 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 } 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 isWindowDefined = typeof window !== 'undefined'\n\n const result = await addToCart(eventId, data)\n const pageConfigsDataResponse = await getCheckoutPageConfigs()\n\n if (result.status === 200 && pageConfigsDataResponse.status === 200) {\n const pageConfigsData =\n _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const {\n skip_billing_page: skipBillingPage = false,\n names_required: nameIsRequired = false,\n age_required: ageIsRequired = false,\n phone_required: phoneIsRequired = false,\n hide_phone_field: hidePhoneField = false,\n has_add_on: hasAddOn = false,\n free_ticket: freeTicket = false,\n collect_optional_wallet_address: collectOptionalWalletAddress = false,\n collect_mandatory_wallet_address: collectMandatoryWalletAddress = false,\n } = pageConfigsData\n\n let hash = ''\n let total = ''\n\n isWindowDefined && window.localStorage.removeItem('add_ons')\n\n if (skipBillingPage && !hasAddOn) {\n // Get user data for checkout data\n const userData =\n isWindowDefined && 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 checkoutResult = enableBillingInfoAutoCreate\n ? await postOnCheckout(checkoutBody, undefined, freeTicket)\n : null\n\n hash = _get(checkoutResult, 'data.data.attributes.hash') || ''\n total = _get(checkoutResult, 'data.data.attributes.total') || ''\n }\n\n return {\n skip_billing_page: skipBillingPage,\n names_required: nameIsRequired,\n phone_required: phoneIsRequired,\n age_required: ageIsRequired,\n hide_phone_field: hidePhoneField,\n free_ticket: freeTicket,\n collect_optional_wallet_address: collectOptionalWalletAddress,\n collect_mandatory_wallet_address: collectMandatoryWalletAddress,\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 = (\n seatId: string,\n eventSeats: Array<EventSeat>\n) => {\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 = {\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 = (\n data: Array<TicketTypeTierRelationsData>\n) => {\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 React, { useState } from 'react'\nimport { Field, Form, Formik } from 'formik'\nimport Button from '@mui/material/Button'\nimport Modal from '@mui/material/Modal'\nimport Box from '@mui/material/Box'\nimport { CustomField, Loader } from '../common/index'\nimport { combineValidators, requiredValidator, emailValidator } from '../../validators'\nimport { sendRSVPInfo } from '../../api'\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 =\n typeof window !== 'undefined' ? 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 = {\n data: {\n email: values.email\n }\n }\n const { data } = await sendRSVPInfo(eventId, requestData)\n\n setModal({ isOpen: true, text: data.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 onClick={handleModalClose}>OK</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) => 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","/* 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 {\n getAddons,\n getCart,\n getCheckoutPageConfigs,\n postOnCheckout,\n} from '../../api'\nimport { currencyNormalizerCreator } from '../../normalizers'\nimport { ICheckoutPageConfigs } from '../../types'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n createMarkup,\n getQueryVariable,\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<\n any\n >({})\n const [\n groupsWithInitialVariantsValues,\n 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 = (\n groupId: any,\n changedGroupd: any\n ) => {\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] -\n variantCurrSelectedValue\n ) {\n allowedOptionCount = groupsWithInitialVariantsValues[groupId][variantId]\n } else {\n allowedOptionCount = remainingGroupStock + variantCurrSelectedValue\n }\n\n recreatedVariantsOptions[variantId] = generateSelectOptions(\n 0,\n allowedOptionCount\n )\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[\n currSelectedVariantId\n ]\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 isWindowDefined = typeof window !== 'undefined'\n const skipBillingPage = pageConfigsData.skip_billing_page ?? false\n const nameIsRequired = pageConfigsData.names_required ?? false\n const ageIsRequired = pageConfigsData.age_required ?? false\n const phoneIsRequired = pageConfigsData.phone_required ?? false\n const hasAddOn = pageConfigsData.has_add_on ?? false\n const freeTicket = pageConfigsData.free_ticket ?? false\n const collectOptionalWalletAddress =\n pageConfigsData.collect_optional_wallet_address ?? false\n const collectMandatoryWalletAddress =\n pageConfigsData.collect_mandatory_wallet_address ?? false\n\n if (skipBillingPage && enableBillingInfoAutoCreate) {\n const ticketsQuantity = window.localStorage.getItem('quantity')\n const userData = JSON.parse(\n window.localStorage.getItem('user_data') || '{}'\n )\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 = _get(checkoutResponse, 'data.data.attributes.hash')\n const total = _get(checkoutResponse, 'data.data.attributes.total')\n\n isWindowDefined && window.localStorage.removeItem('quantity')\n isWindowDefined && window.localStorage.removeItem('add_ons')\n\n onPostCheckoutSuccess(checkoutResponse?.data)\n onConfirmSelectionSuccess({\n skip_billing_page: skipBillingPage,\n names_required: nameIsRequired,\n phone_required: phoneIsRequired,\n age_required: ageIsRequired,\n event_id: String(eventId),\n hash,\n total,\n hasAddOn,\n free_ticket: freeTicket,\n collect_optional_wallet_address: collectOptionalWalletAddress,\n collect_mandatory_wallet_address: collectMandatoryWalletAddress,\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 (isWindowDefined) {\n if (!skipAddonPage) {\n window.localStorage.setItem('add_ons', JSON.stringify(values))\n }\n\n onConfirmSelectionSuccess({\n skip_billing_page: skipBillingPage && enableBillingInfoAutoCreate,\n names_required: nameIsRequired,\n phone_required: phoneIsRequired,\n age_required: ageIsRequired,\n event_id: String(eventId),\n hasAddOn,\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 <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}_title`}>UPGRADES & ADD-ONS</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\n className={`${classNamePrefix}_product_image_block`}\n >\n <img src={addon.imageUrl} alt=\"No Data\" />\n </div>\n )}\n </div>\n <div\n className={`${classNamePrefix}_product_info_block`}\n >\n <div className={`${classNamePrefix}_product_title`}>\n {addon.name}\n </div>\n <div className={`${classNamePrefix}_product_price`}>\n {addonNormalizedPrice}\n {!isAddonFree && (\n <span\n className={`${classNamePrefix}_product_fee`}\n >\n {addon.feeIncluded\n ? '(incl. Fees)'\n : '(excl. Fees)'}\n </span>\n )}\n </div>\n </div>\n <div\n className={`${classNamePrefix}_product_desc`}\n dangerouslySetInnerHTML={createMarkup(\n addon.description\n )}\n />\n <div\n className={`${classNamePrefix}_product_select_container`}\n >\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={`${\n isConfirmDisabled\n ? `${classNamePrefix}_is_disabled`\n : ''\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 */\n/* eslint-disable react/no-unescaped-entities */\nimport './style.css'\n\nimport Modal from '@mui/material/Modal'\nimport { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { 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 SocialButtons from './social-buttons'\n\nexport interface IShareButton {\n mainLabel: string;\n subLabel: string;\n platform: string;\n shareData: any;\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: any) => 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<any>(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 response = await getConfirmationData(hash)\n const data = _get(response, 'data.data.attributes')\n data.personal_share_sales = data.personal_share_sales.map((d: any) => {\n const salesData: IReferralPromotion = {\n label: `If your friends buy ${d.sales} tickets`,\n price: '',\n }\n if (d.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 + d.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(response.data)\n } catch (error) {\n onGetConfirmationDataError(error.response)\n }\n }\n })()\n }, [])\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 = { ...data, personal_share_link: e.target.value }\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 <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 {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, isJson } from '../../utils'\nimport Modal from '../common/ModalComponent'\nimport { VERIFICATION_MESSAGES, VERIFICATION_STATUSES } 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) => 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>(\n null\n )\n const [showModal, setShowModal] = useState(false)\n const [netverifyUrl, setNetverifyUrl] = useState<string | null>(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 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 useEffect(() => {\n let intervalId: any = null\n const orderHash = getQueryVariable('order_hash') || ''\n\n const getUrl = async () => {\n try {\n const urlResponse = await getNetverifyUrl()\n setNetverifyUrl(urlResponse.netverifyUrl)\n onGetVerifyUrlSuccess(urlResponse)\n } catch (error) {\n onGetVerifyUrlError(error)\n }\n }\n\n const getVerificationStatus = async () => {\n try {\n const statusResponse = await checkVerificationStatus()\n const { status } = statusResponse.data.attributes\n\n if (verificationStatus !== status) {\n setVerificationStatus(status)\n setModalData({\n displaModal:\n status === VERIFICATION_STATUSES.APPROVED ||\n status === VERIFICATION_STATUSES.FAILED,\n hideCancelBtn: true,\n message:\n status === VERIFICATION_STATUSES.APPROVED\n ? VERIFICATION_MESSAGES.APPROVED\n : status === VERIFICATION_STATUSES.FAILED\n ? VERIFICATION_MESSAGES.FAILED\n : status,\n })\n }\n onGetVerificationStatusSuccess(statusResponse)\n } catch (error) {\n onGetVerificationStatusError(error)\n } finally {\n setLoadingStatus(false)\n }\n }\n\n const getCustomerOrderStatus = async () => {\n try {\n const customerOrderResponse = await checkCustomerOrder(orderHash)\n return customerOrderResponse\n } catch (error) {\n throw error\n }\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 (\n error.response?.data?.message === VERIFICATION_MESSAGES.WRONG_CUSTOMER\n ) {\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 isWindowDefined = typeof window !== 'undefined'\n const orderHash = getQueryVariable('order_hash')\n\n if (isWindowDefined) {\n const checkoutData = JSON.parse(\n window.localStorage.getItem('checkoutData') || '{}'\n )\n if (_isEmpty(checkoutData) && orderHash) {\n window.localStorage.setItem(\n 'checkoutData',\n JSON.stringify({ hash: orderHash })\n )\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.PENDING && (\n <div className=\"verify-message\">\n {VERIFICATION_MESSAGES.PENDING}\n </div>\n )}\n {!isAccountVerifiedOrPending && (\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, filter: string) => {\n try {\n setLoading(true)\n const response = await getOrders(page, limit, filter)\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.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 window.localStorage.removeItem('access_token')\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 _map from 'lodash/map'\nimport moment from 'moment-timezone'\nimport React, { useEffect, useState } from 'react'\n\nimport { getOrderDetails, removeFromResale, resaleTicket } from '../../api'\nimport { isBrowser } from '../../utils'\nimport ConfirmModal from '../confirmModal'\nimport { InitialValuesTypes, TicketResaleModal } from '../ticketResaleModal'\nimport TicketsTable, { IActionColumns, ITicketTypes } from './ticketsTable'\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 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\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 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 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 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.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.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.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 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 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\n return (\n <div className=\"order-details\">\n <h1 className=\"layout-title\">Order Details</h1>\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 (typeof window !== 'undefined') {\n window.location.assign(ordersPath ?? '/orders')\n }\n }}\n >\n Back to Orders\n </button>\n </div>\n </div>\n </div>\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 />\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 (typeof window !== 'undefined') {\n window.location.assign(ordersPath ?? '/orders')\n }\n }}\n >\n Return to Order History\n </button>\n </div>\n\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","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 from 'react-countdown'\n\nimport {\n getSeatMapData,\n getSeatMapStatuses,\n removeSeatReserve,\n reserveSeat,\n} from '../../api'\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\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 isGuestCountsSet = useRef(false)\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 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 }, [eventId, seatMapStatuses, reservedSeats])\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 as any)?.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: any) => {\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 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: any) => (\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 { 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}\n\nexport const TicketResaleContainer = ({\n onProcessTicketSuccess = () => {},\n onProcessTicketError = () => {},\n onDeclineTicketPurchaseSuccess = () => {},\n onDeclineTicketPurchaseError = () => {},\n orderHash,\n billingPath,\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}`)\n .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(\"Thanks for letting us know! We'll offer this ticket to someone else!\")\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 data = _get(response, 'data.data.attributes')\n const age_required = _get(data, 'age_required', false)\n const names_required = _get(data, 'names_required', false)\n const event_id = _get(data, 'event_id')\n\n onProcessTicketSuccess(response.data)\n window.location.href = `${\n billingPath ?? '/billing/billing-info/'\n }?age_required=${age_required}&names_required=${names_required}&event_id=${event_id}`\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 jwt_decode from 'jwt-decode'\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 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 { X_TF_ECOMMERCE } from '../../constants'\nimport { useCookieListener } from '../../hooks/useCookieListener'\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 names_required: boolean;\n age_required: boolean;\n phone_required: boolean;\n hide_phone_field: boolean;\n event_id: string;\n hash?: string;\n total?: string;\n hasAddOn?: boolean;\n free_ticket: boolean;\n collect_optional_wallet_address?: boolean;\n collect_mandatory_wallet_address?: 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 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 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(\n Boolean(getCookieByName(X_TF_ECOMMERCE))\n )\n const [showLoginModal, setShowLoginModal] = useState(false)\n const [tickets, setTickets] = useState([] as ITicket[])\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(\n isAccessCodeEnabled\n )\n const [showPromoCodeSection, setShowPromoCodeSection] = useState(\n isPromotionsEnabled\n )\n const [error, setError] = useState(null)\n const [isNotInvitedError, setIsNotInvitedError] = useState('')\n const [isInvalidLinkError, setIsInvalidLinkError] = useState('')\n const [pendingVerificationMessage, setPendingVerificationMessage] = useState()\n\n const ticketsContainerRef = useRef<HTMLDivElement>(null)\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n\n useCookieListener(X_TF_ECOMMERCE, value => setIsLogged(Boolean(value)))\n usePixel(eventId, { pageUrl })\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const access_token = window.localStorage.getItem('access_token')\n if (access_token) {\n const decoded = jwt_decode<{ exp: number }>(access_token)\n if (decoded && decoded.exp < Date.now() / 1000) {\n window.localStorage.removeItem('access_token')\n window.localStorage.removeItem('user_data')\n }\n }\n window.localStorage.removeItem('extraData')\n }\n }, [])\n\n useEffect(() => {\n !!eventId && getTicketsApi()\n }, [eventId])\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 (isWindowDefined) {\n window.localStorage.removeItem('access_token')\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.data.success) {\n const attributes = _get(response, 'data.data.attributes')\n type === 'promo' && setCodeIsApplied(attributes.ValidPromoCode)\n type === 'promo' && setCodeIsInvalid(!attributes.ValidPromoCode)\n setTickets(_get(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.data.success) {\n const event = _get(eventResponse, 'data.data.attributes')\n setEvent(event)\n\n if (event.country && isWindowDefined) {\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 const handleTicketSelect = (\n key: string,\n value: number | string,\n isTable = false\n ) => {\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 const handleOrdersClick = () => {\n if (isWindowDefined) {\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 =\n _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 = {\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 const result = await addToCart(eventId, data)\n const pageConfigsDataResponse = enableAddOns\n ? await getCheckoutPageConfigs()\n : {\n status: 200,\n data: { attributes: _get(result, 'data.data.attributes') },\n }\n\n if (result.status === 200 && pageConfigsDataResponse.status === 200) {\n const pageConfigsData =\n _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const skipBillingPage = pageConfigsData.skip_billing_page ?? false\n const nameIsRequired = pageConfigsData.names_required ?? false\n const ageIsRequired = pageConfigsData.age_required ?? false\n const phoneIsRequired = pageConfigsData.phone_required ?? false\n const hidePhoneField = pageConfigsData.hide_phone_field ?? false\n const hasAddOn = pageConfigsData.has_add_on ?? false\n const freeTicket = pageConfigsData.free_ticket ?? false\n const collectOptionalWalletAddress =\n pageConfigsData.collect_optional_wallet_address ?? false\n const collectMandatoryWalletAddress =\n pageConfigsData.collect_mandatory_wallet_address ?? false\n\n let hash = ''\n let total = ''\n\n const isWindowDefined = typeof window !== 'undefined'\n isWindowDefined && window.localStorage.removeItem('add_ons')\n\n if (skipBillingPage && !hasAddOn) {\n // Get user data for checkout data\n const userData =\n isWindowDefined && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n\n const access_token =\n isWindowDefined && window.localStorage.getItem('access_token')\n ? window.localStorage.getItem('access_token') || ''\n : ''\n\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketQuantity,\n userData\n )\n\n const checkoutResult = enableBillingInfoAutoCreate\n ? await postOnCheckout(checkoutBody, access_token, freeTicket)\n : null\n\n hash = _get(checkoutResult, 'data.data.attributes.hash')\n total = _get(checkoutResult, 'data.data.attributes.total')\n }\n\n onAddToCartSuccess({\n skip_billing_page: skipBillingPage,\n names_required: nameIsRequired,\n phone_required: phoneIsRequired,\n age_required: ageIsRequired,\n hide_phone_field: hidePhoneField,\n free_ticket: freeTicket,\n collect_optional_wallet_address: collectOptionalWalletAddress,\n collect_mandatory_wallet_address: collectMandatoryWalletAddress,\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.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 => item.salesStarted && !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 (\n isButtonScrollable &&\n ticketsContainerRef &&\n ticketsContainerRef.current\n ) {\n ticketsContainerRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'nearest',\n })\n }\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 => ticket.displayTicket && !ticket.soldOut && ticket.salesStarted\n )\n\n const wrappedActionsSectionComponent = React.isValidElement(\n ActionsSectionComponent\n )\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 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\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 {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={\n hideTableTicketsHeader || _isEmpty(tableTickets)\n }\n hideTicketsHeader={\n hideTicketsHeader || _isEmpty(ordinarTickets)\n }\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={handleGetTicketClick}\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","export const X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\n","export const setLoggedUserData = (data: IUserData) => ({\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 || data?.country || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zip || data?.zipCode || '',\n})\n"],"names":["ttfHeaders","Accept","Content-Type","CONFIGS","publicRequest","axios","create","baseURL","BASE_URL","headers","getQueryVariable","variable","window","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","accessToken","localStorage","getItem","Authorization","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","isBrowser","getFormInitialValues","fieldsSections","initialValues","isWindowDefined","userData","JSON","parse","_forEach","item","fields","fieldItem","isJson","value","e","getCustomerExistsData","accessHash","getDelegationTickets","issueTicket","_context2","post","isDocumentDefined","interceptors","use","authGuestToken","setItem","setGuestToken","_error$response","status","removeItem","_error$response2","_error$response2$data","Promise","reject","request","config","guestToken","updatedHeaders","Authorization-Guest","additionalCookiesHeaderValue","Additional-Cookies","X_SOURCE_ORIGIN","X-Source-Origin","method","days","expires","date","setTime","getTime","toUTCString","setCustomCookie","token","defaults","common","setBaseUrl","baseUrl","setAccessToken","setCustomHeader","guestHeaderResponseValue","guestHeaderExistingValue","guestHeader","getEvent","id","pk","referralValue","referralId","searchParams","referral_key","referralIdlocal","params","Referer-Url","referrer","Referrer-Id","getTickets","promoCode","invitationHash","Promotion-Event","String","Promotion-Code","addToCart","getCart","postOnCheckout","freeTicket","city","country","state","street_address","authorize","CLIENT_ID","register","getPaymentData","hash","handlePaymentSuccess","orderHash","undefined","createPaymentPlan","stripePaymentMethodId","stripe_payment_method_id","getProfileData","getCountries","getConfirmationData","getStates","countryId","getOrders","page","limit","eventSlug","BRAND_SLUG","getOrderDetails","orderId","getConditions","eventId","resaleTicket","postReferralVisits","forgotPassword","processTicket","declineInvitation","sendRSVPInfo","validatePhoneNumber","getAddons","addons","getCheckoutPageConfigs","_context3","getSeatMapData","reservedSeatsHash","reserved_seats_hash","_context4","getSeatMapStatuses","_context5","reserveSeat","tierId","seatId","_context6","ttl","removeSeatReserve","seatIds","_context7","getNetverifyUrl","_context8","checkVerificationStatus","_context9","updateVerificationStatus","_context10","patch","verification","verificationStatus","checkCustomerOrder","_context11","appendScriptsToHeader","code","tempEl","innerHTML","scripts","getElementsByTagName","index","script","src","head","addGTagToHeader","tagId","links","_document","_document2","trim","append","scriptBody","dataLayer","gtag","args","_window","domains","usePixel","options","getScript","page_url","pageOptions","pageUrl","order_hash","brandGoogleTagKey","eventGoogleTagKey","eventGoogleTagManagerLinkerDomains","console","useEffect","emailRegex","combineValidators","validators","error_message","requiredValidator","message","errorMessage","addEventListener","err","isFalsy","emailValidator","test","SnackbarAlert","_ref$autoHideDuration","autoHideDuration","onClose","React","className","Snackbar","open","isOpen","anchorOrigin","position","vertical","horizontal","classes","root","Alert","severity","variant","icon","action","filled","CustomField","label","_ref2$type","field","_ref2$selectOptions","selectOptions","_ref2$form","form","touched","submitCount","theme","_ref2$inputProps","inputProps","pInputProps","_ref2$InputProps","InputProps","inputRef","_ref2$multiline","multiline","minRows","maxRows","disabled","useState","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","_map","option","key","PoweredBy","alt","style","top","left","transform","minWidth","backgroundColor","border","outline","padding","Schema","Yup","shape","required","ForgotPasswordModal","_ref$onLogin","onLogin","_ref$onForgotPassword","onForgotPasswordSuccess","_ref$onForgotPassword2","onForgotPasswordError","_ref$showPoweredByIma","showPoweredByImage","loading","setLoading","onForgotPassword","isAxiosError","Modal","Box","Formik","validationSchema","onSubmit","isValid","dirty","Form","handleSubmit","Field","component","CircularProgress","size","onClick","maxHeight","overflow","_ref$actions","actions","_ref$modalClassName","modalClassName","MuiModal","children","Button","VerificationPendingModal","props","displayModal","showModal","setShowModal","LoginModal","_ref$alreadyHasUser","alreadyHasUser","_ref$userExpired","userExpired","_ref$onGetProfileData","onGetProfileDataSuccess","_identity","_ref$onGetProfileData2","onGetProfileDataError","_ref$onSignup","onSignup","_ref$modalClassname","modalClassname","logo","_ref$showForgotPasswo","showForgotPasswordButton","_ref$showSignUpButton","showSignUpButton","setError","password","profileResponse","profileSpecifiedData","profileDataObj","firstName","lastName","confirmEmail","streetAddress","stateId","zip","zipCode","stringify","event","CustomEvent","dispatchEvent","_e$response","_e$response$data","validate","meta","SignupSchema","min","confirmPassword","oneOf","SignupModal","_ref$onRegisterSucces","onRegisterSuccess","_ref$onRegisterError","onRegisterError","values","formData","FormData","set","CLIENT_SECRET","access_token_register","res","refreshToken","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","rest","FormControl","_rest$form","FormGroup","FormControlLabel","control","Checkbox","componentsProps","typography","checkbox","_rest$form2","FormHelperText","PhoneNumberField","_ref$form","setFieldError","setFieldValue","setFieldTouched","setErrors","_ref$disableDropdown","disableDropdown","_ref$defaultCountry","defaultCountry","_ref$fill","setPhoneValidationIsLoading","isCountryCodeEditable","debounceCb","useCallback","_debounce","cb","newErrors","MuiPhoneNumber","onChange","dialCode","autoFormat","disableAreaCodes","countryCodeEditable","Loader","SelectField","isMultiple","_ref$options","_ref$onChange","selectId","getSelectedItemLabel","selectedValue","selectedItem","find","InputLabel","Select","labelId","multiple","target","OutlinedInput","renderValue","selected","textAlign","map","MenuItem","checked","ListItemText","primary","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","radios","radioId","FormLabel","RadioGroup","radio","Radio","getInitialValues","propsInitialValues","userValues","results","_flatMapDeep","groupItems","groupItem","createRegisterFormData","checkoutBody","flagFreeTicket","bodyFormData","includes","setLoggedUserData","createCheckoutDataBody","holderAge","restValues","holders","individualHolder","fromEntries","entries","filter","_loop","holder","firstNameLogged","lastNameLogged","emailLogged","filteredRestValue","getValidateFunctions","element","states","validationFunctions","onValidate","assingUniqueIds","itemValue","_isArray","some","uniqueId","nanoid","getFieldLabel","flagRequirePhone","collectMandatoryWalletAddress","isRequiredField","isValidElement","getFieldComponent","select_multi","text","LogicRunner","setStates","setValues","setUserValues","onGetStatesSuccess","onGetStatesError","shouldFetchCountries","brandOptIn","prevCountry","mappedStates","stateExists","_mappedStates$find","_mappedStates$","fetchStates","userDataEncoded","parsedData","mappedValues","brand_opt_in","holderFirstName-0","holderLastName-0","holderEmail-0","extraDataJSON","extraData","getStoredUserData","BillingInfoContainer","_ref4$ticketHoldersFi","ticketHoldersFields","_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$onAuthorizeSucc","onAuthorizeSuccess","_ref4$onAuthorizeErro","onAuthorizeError","_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","setExtraData","isConfigLoading","setIsConfigLoading","configs","setConfigs","isNewUser","setIsNewUser","themeMui","_data$data","access_token","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","userDataResponse","_isEmpty","removeReferralKey","_e$response$data$data","hasUnverifiedOrder","_e$response2","_e$response2$data","collectPaymentData","collectCheckoutBody","profileData","initialCountry","_find","toLowerCase","Backdrop","color","zIndex","ttf_opt_in","data_capture","instagram","company","businessCategory","jobTitle","enableReinitialize","formikHelpers","checkoutBodyForRegistration","resRegister","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","groupClassname","el","handleBlur","format","_item","currencyNormalizerCreator","currency","getCurrencySymbolByCurrency","createFixedFloatNormalizer","fixedValue","toFixed","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","stripe","useStripe","elements","useElements","postalCode","setPostalCode","stripeError","setStripeError","checkboxes","setCheckboxes","allowSubmit","setAllowSubmit","preventDefault","card","getElement","CardNumberElement","address","line1","postal_code","confirmCardSetup","payment_method","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","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","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","SocialComponent","mainLabel","subLabel","platform","shareData","_config","Icon","_config2","round","SocialButtons","showDefaultShareButtons","shareLink","appId","shareButtons","clientLabel","showReferralsInfoText","quote","title","shareButton","useCookieListener","handler","getCookie","intervalValue","setIntervalValue","cookieRef","handleCookieChange","setInterval","clearInterval","ConfirmModal","_ref$loading","_ref$hideCancelBtn","hideCancelBtn","_ref$onClose","_ref$onConfirm","onConfirm","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","tickets","_ref$defaultMaxQuanti","defaultMaxQuantity","showSuccessMessage","setShowSuccessMessage","ticketTypesList","d","displayName","showTicketsField","requestData","success","ticketTypeId","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","salesStarted","salesEnded","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","image","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","TicketsTable","_ref$handleSellTicket","handleSellTicket","_ref$handleRemoveFrom","handleRemoveFromResale","_ref$icon","_ref$displayColumnNam","displayColumnNameInRow","_ref$canSellTicket","canSellTicket","_ref$ticketsTitle","ticketsTitle","pdfError","setPdfError","pdfDownload","setPdfDownload","TableContainer","Paper","Table","TableHead","TableBody","columnIndex","ticketIsDownloading","pdf_link","is_on_sale","pdfDownloadError","is_sellable","getRow","_ticket$add_ons","colSpan","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","authRes","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","varArray","re","RegExp","_","replaceVarInString","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","resetForm","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","nameIsRequired","ageIsRequired","phoneIsRequired","hasAddOn","has_add_on","collectOptionalWalletAddress","checkoutResult","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","description","guestPrice","guest_price","finalPrice","handleTicketChange","display","flexDirection","justifyContent","fee_included","ticket_type_deposit","alignItems","Tooltip","arrow","tooltip","& .MuiTooltip-arrow","onKeyDown","m","from","dangerouslySetInnerHTML","marginLeft","count","getButtonLabel","_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","checkoutResponse","_error$response$data","_error$response$data$","handleClearAddons","selectedAddons","isConfirmDisabled","autoComplete","cost","isAddonFree","addonNormalizedPrice","getNormalizedPrice","imageUrl","confirmationLabels","_ref$hasCopyIcon","hasCopyIcon","isReferralEnabled","_ref$messengerAppId","messengerAppId","_ref$shareButtons","_ref$onGetConfirmatio","onGetConfirmationDataSuccess","_ref$onGetConfirmatio2","onGetConfirmationDataError","_ref$onLinkCopied","onLinkCopied","_ref$showReferralsInf","_ref$showCopyInfoModa","showCopyInfoModal","_ref$showPricingNoteS","showPricingNoteSection","setData","dataEncoded","personal_share_sales","salesData","sales","_d$price","unshift","product_price","_data$product_price","showCopyModal","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","ref","personal_share_link","newData","navigator","clipboard","writeText","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","displaModal","modalData","setModalData","isAccountVerifiedOrPending","callbackNetVerify","payload","transactionStatus","removeEventListener","intervalId","getUrl","urlResponse","getVerificationStatus","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","onReturnButtonClick","_ref$personalLinkIcon","personalLinkIcon","ticketsTableColumns","ordersPath","pOrderId","_ref$referralTitle","referralTitle","_ref$itemsTitle","itemsTitle","removeFromResaleLoading","setRemoveFromResaleLoading","resaleTicketLoading","setResaleTicketLoading","showResaleModal","setShowResaleModal","showRemoveResaleModal","setShowRemoveResaleModal","activeTicket","setActiveTicket","handleOnSubmit","updatedData","_updatedData$tickets","onConfirmRemoveResale","_updatedData$tickets2","orderSummery","columnsProps","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","errorText","_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","orderDataArray","_cart$","_cart$2","debt","tableTypes","conditionsInfo","fetchConditions","showPaymentForm","handlePaymentMiddleWare","paymentSuccessResponse","orderValue","orderCurrency","hasTableTypes","paymentFieldsData","parseFloat","Container","maxWidth","_field$className","_field$normalizer","tableTypeItem","gridTemplateColumns","gridColumnGap","_paymentPlanConfig$sa2","Elements","StripePayment","_paymentPlanConfig$sa3","_ref$onClickOk","onClickOk","tokenProps","_ref$onResetPasswordS","onResetPasswordSuccess","_ref$onResetPasswordE","onResetPasswordError","showSection","modal","setModal","handleModalClose","_props$timerMessage","timerMessage","_props$onAddToCartSuc","onAddToCartSuccess","_props$onCountdownFin","seatMap","seatMapData","setSeatMapData","eventSeatsRef","ticketTypeTierRelationsRef","setSelectedTickets","seatMapStatuses","setSeatMapStatuses","setReservedSeats","setIsLoadingSeatMapData","isLoadingStatuses","setIsLoadingStatuses","setIsReserving","setIsAddingToCart","showTimer","isGuestCountsSet","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","successMessage","setSuccessMessage","isDeclined","getTicketsLabel","_ref$contentStyle","_ref$onAddToCartError","onAddToCartError","_ref$onGetTicketsSucc","onGetTicketsSuccess","_ref$onGetTicketsErro","onGetTicketsError","_ref$onLogoutSuccess","onLogoutSuccess","_ref$onLogoutError","onLogoutError","_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","ticketsContainerRef","decoded","jwt_decode","exp","getTicketsApi","handleLogout","handleExternalLogin","_getTicketsApi","isUpdateingCode","previewKey","eventResponse","ValidPromoCode","is_access_code","handleBook","optionName","isTableType","isTicketOnSale","eventHasTickets","scrollIntoView","behavior","block","inline","flagSeatMapAllowed","isTicketAvailable","wrappedActionsSectionComponent","cloneElement","externalUrl","redirectUrl","eventSaleIsNotStarted","salesStart","influencers","referralsEnabled","referrals","hideTopInfluencers","isTableMapEnabled","_filter","ordinarTickets","waitingListMaxQuantity","influencer","_influencer$lastName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tf-checkout-react.cjs.production.min.js","sources":["../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/isBrowser.ts","../src/utils/form.ts","../src/utils/jsonUtils.ts","../src/api/guestTicketDelegation.ts","../src/api/index.ts","../src/hooks/usePixel.ts","../src/validators/index.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/components/loginModal/index.tsx","../src/components/signupModal/index.tsx","../src/utils/showZero.tsx","../src/components/timerWidget/index.tsx","../src/components/common/CheckboxField.tsx","../src/components/common/PhoneNumberField.tsx","../src/components/common/Loader.tsx","../src/components/common/SelectField/index.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/components/stripePayment/index.tsx","../src/components/paymentContainer/PaymentPlanSection.tsx","../src/components/paymentContainer/index.tsx","../src/components/confirmationContainer/config.ts","../src/components/confirmationContainer/social-buttons.tsx","../src/hooks/useCookieListener.ts","../src/components/confirmModal/index.tsx","../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/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/utils/replaceVarInString.ts","../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/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/components/seatMapContainer/index.tsx","../src/hooks/useOnline.ts","../src/components/ticketResale/index.tsx","../src/components/ticketsContainer/index.tsx","../src/constants/index.ts","../src/utils/auth.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios';\nimport _forEach from 'lodash/forEach'\n\nexport const ttfHeaders: { [key: string]: any } = {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json',\n}\n\ninterface IPublicRequest extends AxiosInstance {\n setGuestToken: (token: string) => void;\n setAccessToken: (token: string) => void;\n setBaseUrl: (baseUrl: string) => void;\n}\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 publicRequest: IPublicRequest = axios.create({\n baseURL: CONFIGS.BASE_URL || `https://www.ticketfairy.com/api`,\n headers: ttfHeaders,\n}) as IPublicRequest\n\nexport const setXSourceOrigin = (sourceOrigin: string) => {\n ttfHeaders['X-Source-Origin'] = sourceOrigin\n}\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 if (CONFIGS.X_SOURCE_ORIGIN) {\n setXSourceOrigin(CONFIGS.X_SOURCE_ORIGIN)\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: number = 5) {\n let expires = ''\n if (days) {\n let 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 let name = cname + '='\n let 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 const accessToken: string | null = localStorage.getItem('access_token')\n\n if (!accessToken && !xtfCookie) return\n\n let headers = {}\n\n if (accessToken) {\n headers = {\n Authorization: `Bearer ${accessToken}`,\n }\n }\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 return\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 => {\n return error\n })\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}\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 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 isJson = (value: any): boolean => {\n try {\n JSON.parse(value)\n } catch (e) {\n return false\n }\n return true\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { publicRequest } from '../utils/setConfigs'\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 { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _get from 'lodash/get'\n\nimport { pageOptions } from '../hooks/usePixel'\nimport {\n GetNetverifyUrlResponseData,\n UpdateVerificationStatusResponseData,\n VerificationStatusResponseData,\n} from '../types/verification'\nimport { CONFIGS, getCookieByName, setCustomCookie } from '../utils'\nimport { getQueryVariable } from '../utils/getQueryVariable'\nimport { publicRequest, ttfHeaders } from '../utils/setConfigs'\n\nconst isWindowDefined = typeof window !== 'undefined'\nconst isDocumentDefined = typeof document !== 'undefined'\n\nif (isWindowDefined && localStorage.getItem('auth_guest_token')) {\n ttfHeaders['Authorization-Guest'] = localStorage.getItem('auth_guest_token')\n}\n\npublicRequest.interceptors.response.use(\n response => {\n const authGuestToken = _get(response, 'headers.authorization-guest')\n\n if (isWindowDefined && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n return response\n },\n error => {\n if (error?.response?.status === 401) {\n if (isWindowDefined) {\n window.localStorage.removeItem('user_data')\n window.localStorage.removeItem('access_token')\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 (isWindowDefined && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n return Promise.reject(error)\n }\n)\n\npublicRequest.interceptors.request.use((config: AxiosRequestConfig) => {\n const guestToken = isWindowDefined\n ? window.localStorage.getItem('auth_guest_token')\n : null\n const userData = isWindowDefined ? window.localStorage.getItem('user_data') : null\n const accessToken = isWindowDefined ? window.localStorage.getItem('access_token') : null\n\n if (userData && accessToken) {\n const updatedHeaders = {\n ...config.headers,\n Authorization: `Bearer ${accessToken}`,\n }\n config.headers = updatedHeaders\n }\n\n if (guestToken) {\n publicRequest.setGuestToken(guestToken)\n const updatedHeaders = {\n ...config.headers,\n 'Authorization-Guest': guestToken,\n }\n config.headers = updatedHeaders\n }\n\n if (getCookieByName('X-TF-ECOMMERCE')) {\n const updatedHeaders = {\n ...config.headers,\n 'X-TF-ECOMMERCE': getCookieByName('X-TF-ECOMMERCE'),\n }\n config.headers = updatedHeaders\n }\n\n const additionalCookiesHeaderValue = 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((response: AxiosResponse) => {\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\npublicRequest.setGuestToken = token =>\n (publicRequest.defaults.headers.common['Authorization-Guest'] = token)\n\npublicRequest.setBaseUrl = (baseUrl: string) =>\n (publicRequest.defaults.baseURL = baseUrl + '/api')\n\npublicRequest.setAccessToken = token =>\n (publicRequest.defaults.headers.common.Authorization = token)\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 (isWindowDefined) {\n window.localStorage.setItem('auth_guest_token', guestHeader)\n publicRequest.setGuestToken(guestHeader)\n }\n }\n}\n\nexport const handleSetAccessToken = (token: string) => {\n if (token) {\n if (isWindowDefined) {\n window.localStorage.setItem('access_token', token)\n publicRequest.setAccessToken(token)\n }\n }\n}\n\nexport function getEvent(id: string | number, pk?: string) {\n let referralValue = ''\n if (isWindowDefined) {\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 let referralIdlocal = ''\n if (referral_key) {\n referralIdlocal = referral_key.split('.')[1]\n }\n referralValue = referralId || referralIdlocal\n }\n\n const response = publicRequest\n .get(`v1/event/${id}`, {\n params: {\n pk,\n },\n headers: {\n ...ttfHeaders,\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n 'Referrer-Id': isWindowDefined ? referralValue : '',\n },\n })\n .catch(error => {\n throw error\n })\n return response\n}\n\nexport function getTickets(\n id: string | number,\n promoCode?: string,\n pk?: string\n) {\n const invitationHash = getQueryVariable('invitation-hash')\n const params = { pk } as any\n\n if (invitationHash) {\n params['invitation-hash'] = invitationHash\n }\n\n const response = publicRequest\n .get(`v1/event/${id}/tickets`, {\n params,\n headers: promoCode\n ? {\n ...ttfHeaders,\n 'Promotion-Event': String(id),\n 'Promotion-Code': promoCode,\n }\n : { ...ttfHeaders },\n })\n .catch(error => {\n throw error\n })\n return response\n}\n\nexport const addToCart = (id: string | number, data: any) => {\n const res = publicRequest.post(\n `v1/event/${id}/add-to-cart/`,\n { data },\n {\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n }\n )\n return res\n}\n\nexport const getCart = () => {\n const res = publicRequest.get(`v1/cart/`)\n return res\n}\n\nexport const postOnCheckout = (data: any, accessToken?: string, freeTicket = false) => {\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 const res = publicRequest.post(\n `v1/on-checkout/`,\n { data },\n {\n headers: {\n ...ttfHeaders,\n Authorization: `Bearer ${accessToken}`,\n },\n }\n )\n return res\n}\n\nexport const authorize = (data: { email: string, password: string }) =>\n publicRequest.post(\n `/auth?clientId=${CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'}`,\n data\n )\n\nexport const register = (data: FormData) =>\n publicRequest.post('v1/oauth/register-rn', data)\n\nexport const getAccessToken = (data: FormData) =>\n publicRequest.post('v1/oauth/access_token', data)\n\nexport const getPaymentData = (hash: string) => {\n const response = publicRequest\n .get(`v1/order/${hash}/review/`, {\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n })\n .catch(error => {\n throw error\n })\n return response\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 handlePaymentSuccess = (orderHash: string) => {\n const res = publicRequest\n .post(`v1/order/${orderHash}/success`, undefined, {\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n })\n .catch(error => {\n throw error\n })\n return res\n}\n\nexport const createPaymentPlan = (orderHash: string, stripePaymentMethodId: string) => {\n const res = publicRequest.post(`v1/order/${orderHash}/payment_plan/create`, {\n stripe_payment_method_id: stripePaymentMethodId\n },{\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n }).catch(error => {\n throw error\n })\n return res\n}\n\nexport const handleFreeSuccess = (orderHash: string) => {\n const res = publicRequest\n .post(`v1/order/${orderHash}/complete_free_registration`, undefined, {\n headers: {\n 'Referer-Url': isDocumentDefined ? document.referrer : '',\n },\n })\n .catch(error => {\n throw error\n })\n return res\n}\n\nexport const getProfileData = (accessToken?: string) =>\n publicRequest\n .get('/customer/profile/', {\n headers: {\n ...ttfHeaders,\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .catch((e: any) => e)\n\nexport const getCountries = () => publicRequest.get('/countries/list')\n\nexport const getConfirmationData = (orderHash: string) =>\n publicRequest.get(`v1/order/${orderHash}/payment/complete`)\n\nexport const getStates = (countryId: string | number) =>\n publicRequest.get(`/countries/${countryId}/states/`)\n\nexport const getOrders = (page: number, limit: number, eventSlug: string) =>\n publicRequest.get(\n `v1/account/orders/?page=${page}&limit=${limit}&filter[event]=${eventSlug}&${\n CONFIGS.BRAND_SLUG\n ? `filter[brand]=${CONFIGS.BRAND_SLUG}&filter[subbrands]=true`\n : ''\n }`\n )\n\nexport const getOrderDetails = (orderId: string) =>\n publicRequest.get(`v1/account/order/${orderId}`)\n\nexport const addToWaitingList = (id: number, data: any) =>\n publicRequest.post(`v1/event/${id}/add_to_waiting_list`, data)\n\nexport const getConditions = (eventId: string) =>\n publicRequest.get(`v1/event/${eventId}/conditions`)\n\n// resale\nexport const resaleTicket = (data: any, hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/sell`, data)\n\nexport const removeFromResale = (hash: string) =>\n publicRequest.delete(`v1/ticket/${hash}/sell`)\n\nexport const postReferralVisits = (eventId: string, referralId: string) =>\n publicRequest.post(`v1/event/${eventId}/referrer/`, {\n referrer: `${referralId}`,\n })\n\nexport const logout = () => publicRequest.delete('/auth')\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 processTicket = (hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/process/`)\n\nexport const declineInvitation = (hash: string) =>\n publicRequest.post(`v1/ticket/${hash}/decline`)\n\nexport const sendRSVPInfo = (eventId: number, data: any) =>\n publicRequest.post(`v1/event/${eventId}/send-rsvp-info`, data)\n\nexport const validatePhoneNumber = async (phone: string): Promise<any> => {\n const response: AxiosResponse<any, AxiosRequestConfig> = await publicRequest.get(\n `/v1/account/validate_phone?phone=${phone}`\n )\n\n return response.data\n}\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// 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<\n SeatMapDataResponse,\n 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(\n `v1/event/${eventId}/seats/reserve`,\n {\n data: {\n tierId,\n seatId,\n ttl: 10,\n },\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: pageOptions) {\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<\n GetNetverifyUrlResponseData,\n 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<\n any,\n AxiosRequestConfig\n > = await publicRequest.get(`v1/order/${orderHash}/verify-customer-order`)\n\n return response.data\n}\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}","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(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 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 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 multiline = false,\n minRows,\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 >\n {isSelectField\n ? _map(selectOptions, option => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\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\ninterface IForgotPasswordProps {\n onClose: () => void;\n onLogin: () => 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 onLogin = () => {},\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={onLogin}>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","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 {\n authorize,\n getProfileData,\n} from '../../api'\nimport { requiredValidator } from '../../validators'\nimport { PoweredBy } from '../common/PoweredBy'\n\ninterface Props {\n onClose: () => void;\n onLogin: () => 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}\ninterface 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: IUserData) => ({\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 || data?.country || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zip || data?.zipCode || '',\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 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 = _get(profileResponse, 'data.data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n const event = new window.CustomEvent('tf-login')\n window.document.dispatchEvent(event)\n }\n onLogin()\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={logo || \"https://www.ticketfairy.com/resources/images/logo-ttf-black.svg\"}\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.\n Please log in 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}>Forgot password?</span>\n </div>\n )}\n {showSignUpButton && (\n <div className=\"forgot-password\">\n <span aria-hidden=\"true\" onClick={onSignup}>Sign up</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 _get from 'lodash/get'\nimport React, { FC, useState } from 'react'\nimport * as Yup from 'yup'\n\nimport { handleSetAccessToken,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: (value: {\n accessToken: string;\n refreshToken: string;\n }) => 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()\n .email('Invalid email')\n .required('Required'),\n password: Yup.string()\n .min(6, 'Password must have 5+ characters')\n .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 const access_token_register = _get(\n res,\n 'data.data.attributes.access_token'\n )\n const refreshToken = _get(\n res,\n 'data.data.attributes.refresh_token'\n )\n handleSetAccessToken(access_token_register)\n\n const tokens = {\n accessToken: access_token_register,\n refreshToken,\n }\n onRegisterSuccess(tokens)\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\n name=\"lastName\"\n label=\"Last Name\"\n component={CustomField}\n />\n </div>\n </div>\n <div className=\"signup-container__singleField\">\n <div className=\"\">\n <Field\n name=\"email\"\n label=\"Email\"\n component={CustomField}\n />\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 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 = () => {},\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\n src={Cross}\n width='10'\n height='10'\n fill='#fff'\n />\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 } 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 CheckboxField = ({\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 ...rest\n}: ICheckboxField & IOtherProps) => {\n const customTheme: any = useTheme()\n return (\n <FormControl\n error={!!(rest?.form?.errors && rest.form.errors[field?.name ?? ''])}\n >\n <FormGroup>\n <FormControlLabel\n control={<Checkbox {...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 && (\n <Checkbox checked={value.indexOf(option.value) > -1} />\n )}\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 { 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={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\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\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 _map from 'lodash/map'\nimport { nanoid } from 'nanoid'\nimport React from 'react'\n\nimport { IGroupItem } from '../../types'\nimport { CONFIGS } from '../../utils'\nimport { getQueryVariable } from '../../utils/getQueryVariable'\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): IValues => {\n const results = _flatMapDeep(data, ({ fields }) =>\n _map(fields, ({ groupItems }) =>\n _map(groupItems, ({ name, value }) => ({ name, value }))\n )\n )\n\n const initialValues: IValues = {}\n _forEach(results, groupItem => {\n const { name, value } = groupItem\n initialValues[name] =\n 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'] =\n propsInitialValues.email || userValues.email || ''\n\n return initialValues\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 !(\n flagFreeTicket &&\n ['country', 'state', 'city', 'street_address'].includes(key)\n )\n ) {\n bodyFormData.append(key, item)\n }\n })\n\n return bodyFormData\n}\n\ninterface ICheckoutBody {\n attributes: {\n [key: string]: any;\n };\n}\n\ninterface 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\ninterface IticketHolder {\n first_name?: string;\n last_name?: string;\n phone?: string;\n email?: string;\n}\n\nexport const setLoggedUserData = (data: IUserData) => ({\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 || data?.country || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zip || data?.zipCode || '',\n})\n\nexport const createCheckoutDataBody = (\n ticketsQuantity: number,\n values: IValues = {},\n logedInValues: ILoggedInValues = {},\n includeDob = false\n): ICheckoutBody => {\n const {\n firstName,\n lastName,\n holderAge,\n confirmEmail,\n confirmPassword,\n ...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(\n holder => Object.entries(holder).length > 0\n )\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 (\n element.name !== 'state' ||\n (element.name === 'state' && states.length)\n ) {\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\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 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 (\n _isArray(itemValue) &&\n !itemValue.some(item => typeof item === 'string')\n ) {\n item[key] = assingUniqueIds(itemValue)\n }\n })\n\n return { ...item, uniqueId: nanoid() }\n })\n}\n\nexport const isRequiredField = (element: IGroupItem) => {\n const flagRequirePhone = getQueryVariable('phone_required') === 'true'\n const collectMandatoryWalletAddress =\n getQueryVariable('collect_mandatory_wallet_address') === 'true'\n const { name, required } = element\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) => {\n if (isRequiredField(element) || 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 {\n Field,\n Form,\n Formik,\n FormikHelpers,\n FormikProps,\n FormikValues,\n} from 'formik'\nimport _find from 'lodash/find'\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 { usePixel } from '../../hooks/usePixel'\nimport { IBillingInfoData } from '../../types'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n deleteCookieByName,\n getCookieByName,\n isBrowser,\n} from '../../utils'\nimport { ErrorFocus } from '../../utils/formikErrorFocus'\nimport { combineValidators, requiredValidator } from '../../validators'\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 setLoggedUserData,\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 onAuthorizeSuccess?: () => void;\n onAuthorizeError?: (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\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(_get(res, 'data.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 =\n typeof window !== 'undefined'\n ? window.localStorage.getItem('user_data')\n : ''\n useEffect(() => {\n // set user data from local storage\n const getStoredUserData = () => {\n if (typeof window !== 'undefined') {\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\n ? brandOptIn\n : parsedData?.brand_opt_in || false,\n city: parsedData?.city || '',\n confirmPassword: '',\n password: '',\n 'holderFirstName-0':\n parsedData?.first_name || parsedData?.firstName || '',\n 'holderLastName-0':\n 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\nexport const 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 onAuthorizeSuccess = _identity,\n onAuthorizeError = _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 isCountryCodeEditable = true,\n onPendingVerification = _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 const isWindowDefined = typeof window !== 'undefined'\n useEffect(() => {\n if (isWindowDefined) {\n const extraData = window.localStorage.getItem('extraData')\n if (extraData) {\n setExtraData(JSON.parse(extraData))\n }\n }\n getCheckoutPageConfigs().then(data => {\n if (data?.data?.attributes) {\n setConfigs(data.data.attributes)\n setIsConfigLoading(false)\n }\n }).catch(() => {\n setIsConfigLoading(false)\n })\n }, [isWindowDefined])\n const defaultCountry = isWindowDefined\n ? window.localStorage.getItem('eventCountry')\n : ''\n const userData =\n isWindowDefined && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n const access_token =\n isWindowDefined && window.localStorage.getItem('access_token')\n ? window.localStorage.getItem('access_token') || ''\n : ''\n const [dataWithUniqueIds, setDataWithUniqueIds] = useState<\n IBillingInfoData[]\n >(assingUniqueIds(data))\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(\n false\n )\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(\n false\n )\n const emailLogged =\n _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 =\n !collectOptionalCompany && !collectMandatoryCompany\n const collectMandatoryJobTitle = configs?.collect_mandatory_job_title\n const collectOptionalJobTitle = configs?.collect_optional_job_title\n const hideJobTitleField =\n !collectMandatoryJobTitle && !collectOptionalJobTitle\n const collectMandatoryInstagram = configs?.collect_mandatory_instagram\n const collectOptionalInstagram = configs?.collect_optional_instagram\n const hideInstagramField =\n !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 [\n pendingVerificationMessage,\n setPendingVerificationMessage,\n ] = 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 //just once\n useEffect(() => {\n // fetch countries data\n const fetchCountries = async () => {\n try {\n const res = await getCountries()\n setCustomHeader(res)\n setCountries(_get(res, 'data.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 // fetch cart data\n const fetchCart = async () => {\n try {\n setCardLoading(true)\n const res = await getCart()\n setCustomHeader(res)\n const cartInfo = _get(res, 'data.data.attributes')\n setCartInfo(cartInfo)\n const { cart = [] } = cartInfo\n setTicketsQuantity(\n new Array(getQuantity(cart)).fill(null).map(() => nanoid())\n )\n onGetCartSuccess(res.data)\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetCartError(e)\n }\n } finally {\n setCardLoading(false)\n }\n }\n // fetch user data\n const fetchUserData = async (token: string) => {\n try {\n if ((isWindowDefined && token) || isLoggedIn) {\n const userDataResponse = await getProfileData(token)\n const profileSpecifiedData = _get(userDataResponse, 'data.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(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n onGetProfileDataSuccess(userDataResponse.data)\n }\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n }\n }\n useEffect(() => {\n fetchUserData(access_token)\n fetchCart()\n }, [access_token, 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 (isWindowDefined) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const res = await postOnCheckout(\n checkoutBody,\n access_token,\n flagFreeTicket\n )\n removeReferralKey()\n onSkipBillingPage(_get(res, 'data.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 = {}\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 ||\n profileData.first_name ||\n profileData.firstName,\n lastNameLogged:\n lastNameLogged || profileData.last_name || profileData.lastName,\n },\n showDOB\n )\n }\n\n return checkoutBody\n }\n\n const removeReferralKey = () => {\n localStorage.removeItem('referral_key')\n }\n\n if (\n loading ||\n (enableTimer && !expirationTime && typeof window !== 'undefined')\n ) {\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 =\n selectedCountry.id || _get(userData, 'country', '') || '1'\n\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n usePixel(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, 'state', '') || '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 )}\n enableReinitialize={false}\n onSubmit={async (values, formikHelpers) => {\n try {\n if (isWindowDefined) {\n window.localStorage.setItem('extraData', JSON.stringify({\n data_capture: {\n 'instagram': _get(values, 'data_capture.instagram', ''),\n 'company': _get(values, 'data_capture.company', ''),\n 'businessCategory': _get(values, 'data_capture.businessCategory', ''),\n 'jobTitle': _get(values, 'data_capture.jobTitle', ''),\n }\n }))\n }\n if (isLoggedIn) {\n const checkoutBody = collectCheckoutBody(values, userData)\n\n if (isWindowDefined) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const res = await postOnCheckout(\n checkoutBody,\n access_token,\n flagFreeTicket\n )\n removeReferralKey()\n // After checkout is successful recover updated profile and store it on local storage if needed\n if (isWindowDefined) {\n const updatedUserData = await getProfileData(access_token)\n const profileSpecifiedData = _get(\n updatedUserData,\n 'data.data'\n )\n const profileDataObj = setLoggedUserData(\n profileSpecifiedData\n )\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 res\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 accessToken = _get(\n resRegister,\n 'data.data.attributes.access_token'\n )\n const refreshToken = _get(\n resRegister,\n 'data.data.attributes.refresh_token'\n )\n const userProfile = _get(\n resRegister,\n 'data.data.attributes.user_profile'\n )\n\n setIsNewUser(true)\n onRegisterSuccess({\n xtfCookie,\n accessToken,\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(\n 'confirmPassword',\n error.password\n )\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.data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (isWindowDefined) {\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n }\n\n const checkoutBody = collectCheckoutBody(values, profileDataObj)\n\n if (isWindowDefined) {\n addAddOnsInAttributes(checkoutBody)\n }\n\n const res = await postOnCheckout(\n checkoutBody,\n undefined,\n flagFreeTicket\n )\n removeReferralKey()\n handleSubmit(\n values,\n formikHelpers as FormikHelpers<any>,\n eventId,\n res\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 (isWindowDefined) {\n window.localStorage.removeItem('user_data')\n window.localStorage.removeItem('access_token')\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 (\n el.name === 'ttf_opt_in' &&\n hideTtfOptIn\n ) {\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 (\n el.name ===\n 'data_capture[wallet_address]'\n ) {\n if (collectMandatoryWalletAddress) {\n el.required = true\n }\n }\n if (\n el.name === 'data_capture[jobTitle]'\n ) {\n if (collectMandatoryJobTitle) {\n el.required = true\n }\n }\n if (\n el.name === 'data_capture[businessCategory]'\n ) {\n if (collectMandatoryBusinessCategory) {\n el.required = true\n }\n }\n if (\n el.name === 'data_capture[company]'\n ) {\n if (collectMandatoryCompany) {\n el.required = true\n }\n }\n if (\n el.name === 'data_capture[instagram]'\n ) {\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' || el.name === 'data_capture[wallet_address]')\n ) {\n return false\n }\n if (\n hideJobTitleField && el.name === 'data_capture[jobTitle]'\n ) {\n return false\n }\n if (\n hideBusinessCategoryField && el.name === 'data_capture[businessCategory]'\n ) {\n return false\n }\n if (\n hideCompanyField && el.name === 'data_capture[company]'\n ) {\n return false\n }\n if (\n hideInstagramField &&\n (el.name === 'data_capture[instagram]' || 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) &&\n isLoggedIn ? null : (\n <React.Fragment key={element.uniqueId}>\n <div\n className={`${\n 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 ? undefined\n : element.type\n }\n setPhoneValidationIsLoading={\n element.type === 'phone'\n ? setPhoneValidationIsLoading\n : undefined\n }\n label={getFieldLabel(element)}\n validate={getValidateFunctions(\n element,\n states,\n props.values,\n props.errors\n )}\n setFieldValue={\n props.setFieldValue\n }\n onBlur={props.handleBlur}\n component={getFieldComponent(\n element\n )}\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 { label: element.label, value: '', disabled: true },\n ...states,\n ]\n : element.selectOptions || []\n }\n theme={theme}\n defaultCountry={\n defaultCountry ||\n 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 { groupClassname, groupItems } = group\n return (\n <div key={group.id}>\n <div className={groupClassname}>\n {_map(groupItems, element => {\n if (\n _includes(\n ['holderFirstName', 'holderLastName'],\n element.name\n )\n ) {\n element.required = showTicketHolders\n }\n return (\n <div\n className={element.className}\n key={element.name}\n >\n <Field\n {...element}\n type={\n element.type === 'radio'\n ? undefined\n : element.type\n }\n name={`${element.name}-${index}`}\n label={getFieldLabel(element)}\n component={getFieldComponent(element)}\n validate={combineValidators(\n element.required\n ? requiredValidator\n : () =>\n props.errors[\n `${element.name}-${index}`\n ],\n element.onValidate\n ? element.onValidate\n : () =>\n props.errors[\n `${element.name}-${index}`\n ]\n )}\n setPhoneValidationIsLoading={\n setPhoneValidationIsLoading\n }\n defaultCountry={\n defaultCountry ||\n element.defaultCountry\n }\n isCountryCodeEditable={\n isCountryCodeEditable\n }\n />\n </div>\n )\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 ? (\n <CircularProgress size={26} />\n ) : (\n buttonName\n )}\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 onAuthorizeSuccess={onAuthorizeSuccess}\n onAuthorizeError={onAuthorizeError}\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 onLogin={() => {\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","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 './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 { getCurrencySymbolByCurrency } from '../../normalizers'\nimport { CheckboxField } from '../common/index'\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;\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}\n\ninterface AddressTypes {\n city: string;\n line1: string;\n state: string;\n postal_code?: string;\n}\n\nconst CheckoutForm = ({\n total,\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}: 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\n const handleSubmit = async (event: React.SyntheticEvent) => {\n setStripeError(null)\n try {\n event.preventDefault()\n\n if (!postalCode && !disableZipSection) {\n setStripeError('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.message || 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(error.message)\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\n return (\n <div className=\"stripe_payment_container\">\n {!!stripeError && <div className=\"checkout_error_block\">{stripeError}</div>}\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 <CheckboxField\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 `${\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 {CheckboxField} 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\">{paymentPlanConfig.total_installments}</span>\n {' '}payments of{' '}\n <span className=\"payment_plan_highlight\">{currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.price_per_installment),\n currency\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\">{currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.admin_fee),\n currency\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\">{currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.deposit),\n currency\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\n tickets will 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\">first payment of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.price_per_installment),\n currency\n )}</span>\n {paymentPlanConfig.has_admin_fee && (\n <>\n , plus the{' '}\n <span className=\"payment_plan_highlight\">non-refundable admin-fee of{' '}\n {currencyNormalizerCreator(\n createFixedFloatNormalizer(2)(paymentPlanConfig.admin_fee),\n currency\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)(100 - paymentPlanConfig.non_refundable_amount)}%\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\">{'' + paymentPlanConfig.saved_card.last_4_digits}</span>\n </div>\n )}\n <div>\n <CheckboxField\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 { CheckboxField, 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) => 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: null,\n },\n billing_info: {},\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 (typeof window !== 'undefined') {\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 response = await getPaymentData(hash)\n if (response.data.success) {\n const attributes = _get(response, 'data.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 || null,\n debt: order_details?.debt || null,\n tableTypes: orderDataArray,\n }\n setOrderData(orderData)\n setCurrency(order_details?.currency)\n onGetPaymentDataSuccess(response.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 res = await getConditions(eventId)\n const conditionsInfo = _get(res, 'data.data.attributes')\n setConditions(\n conditionsInfo\n ? conditionsInfo.map((item: string) => ({\n id: nanoid(),\n text: item,\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 const isWindowDefined = typeof window !== 'undefined'\n if (isWindowDefined) {\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)\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 (typeof window !== 'undefined' && !!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'\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 <CheckboxField\n label={<span className='payment_plan_toggle_label'>Click to checkout using Payment Plan</span>}\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 total={orderData.guest_count ? orderData.pay_now : orderData.total}\n onSubmit={handlePaymentMiddleWare}\n error={error}\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","import {\n FacebookShareButton,\n FacebookMessengerShareButton,\n TwitterShareButton,\n LinkedinShareButton,\n PinterestShareButton,\n VKShareButton,\n OKShareButton,\n TelegramShareButton,\n WhatsappShareButton,\n RedditShareButton,\n TumblrShareButton,\n MailruShareButton,\n EmailShareButton,\n LivejournalShareButton,\n ViberShareButton,\n WorkplaceShareButton,\n LineShareButton,\n PocketShareButton,\n InstapaperShareButton,\n WeiboShareButton,\n HatenaShareButton,\n FacebookIcon,\n FacebookMessengerIcon,\n TwitterIcon,\n LinkedinIcon,\n PinterestIcon,\n VKIcon,\n OKIcon,\n TelegramIcon,\n WhatsappIcon,\n RedditIcon,\n TumblrIcon,\n MailruIcon,\n EmailIcon,\n LivejournalIcon,\n ViberIcon,\n WorkplaceIcon,\n LineIcon,\n PocketIcon,\n InstapaperIcon,\n WeiboIcon,\n HatenaIcon,\n} from 'react-share'\n\nconst config: any = {\n facebook: { component: FacebookShareButton, icon: FacebookIcon },\n messenger: { component: FacebookMessengerShareButton, icon: FacebookMessengerIcon },\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}\n\nexport default function (key: string) {\n return config[key]\n}\n","import React from 'react'\n\nimport config from './config'\nimport { IShareButton } from './index'\n\nconst SocialComponent = ({\n mainLabel,\n subLabel,\n platform,\n shareData,\n}: IShareButton) => {\n const Component = config(platform)?.component\n const Icon = config(platform)?.icon\n\n return (\n <>\n {Component && (\n <Component {...shareData}>\n <div className=\"social-media-sharing\">\n <div className=\"share-icon\">\n <Icon size={32} round />\n </div>\n <span className=\"share-text\">\n {mainLabel}\n <br /> {subLabel}\n </span>\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 clientLabel?: string;\n showReferralsInfoText?: boolean;\n}\n\nconst SocialButtons = ({\n showDefaultShareButtons,\n shareLink,\n name,\n appId,\n shareButtons,\n clientLabel,\n showReferralsInfoText,\n}: SocialButtonsTypes) => (\n <>\n <div className=\"convenient_buttons\">\n or use one of these convenient buttons:\n </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 key={index} {...shareButton} />\n ))}\n </div>\n {(showDefaultShareButtons || shareButtons.length) && (\n <p>\n We <strong>never</strong> post on Facebook without your permission!\n </p>\n )}\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\n referrals\n </span>\n <span>\n {' '}\n so please make sure you ask your friends to buy their own tickets\n using their own {clientLabel || 'Ticket Fairy'} account!\n </span>\n </p>\n )}\n </>\n)\n\nexport default SocialButtons\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 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 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 React, { useState } from 'react'\nimport Button from '@mui/material/Button'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport { Field, Form, Formik } from 'formik'\nimport { CustomField } from '../common/index'\nimport { addToWaitingList } from '../../api'\nimport {\n combineValidators,\n requiredValidator,\n emailValidator,\n} from '../../validators'\nimport { ErrorFocus } from '../../utils/formikErrorFocus'\n\nimport './style.css'\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 = ({ tickets = {}, eventId, defaultMaxQuantity = 10 }: WaitingListProps) => {\n const isWindowDefined = typeof window !== 'undefined'\n const userData =\n isWindowDefined && 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 requestData = {\n data: {\n attributes: values,\n },\n }\n const { data } = await addToWaitingList(eventId, requestData)\n\n if (data.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 <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 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(defaultMaxQuantity ?? 10),\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 </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') || ''\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 { getTicketSelectOptions } from './utils'\n\ninterface ITicketRowProps {\n ticketTier: any;\n prevTicketTier: any;\n selectedTickets: any;\n handleTicketSelect: any;\n isSeatMapAllowed?: any;\n tableType?: boolean;\n}\n\nexport const TicketRow = ({\n ticketTier,\n prevTicketTier,\n selectedTickets,\n handleTicketSelect,\n isSeatMapAllowed,\n tableType,\n}: ITicketRowProps) => {\n const soldOutMessage = ticketTier.soldOutMessage\n ? `${ticketTier.soldOutMessage}`.toUpperCase()\n : 'SOLD OUT'\n const isSalesClosed = !ticketTier.salesStarted || ticketTier.salesEnded\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={\n selectedTickets[ticketTier.id]\n ? selectedTickets[ticketTier.id]\n : 0\n }\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 (\n canPurchaseTicket &&\n isSeatMapAllowed &&\n !isDirectPurchaseAllowed\n ) {\n // Seat Map Tickets renderer logic\n returnValue = null\n } else if (canPurchaseTicket) {\n returnValue = onSaleContent\n } else if (_get(prevTicketTier, 'in_stock')) {\n returnValue = 'SOON'\n }\n\n return <>{returnValue} </>\n}\n","export const getTicketSelectOptions = (\n maxCount = 10,\n minCount = 1,\n multiplier = 1\n) => {\n const options = [{ label: 0, value: 0 }]\n for (let i = minCount; i <= Math.min(50, maxCount); i += multiplier) {\n options.push({ label: i, value: i })\n }\n return options\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 =\n 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\n className={`event-detail__tier ${isSoldOut ? 'disabled' : ''}`}\n >\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 && (\n <p className=\"old-price\">{ticketOldPrice}</p>\n )}\n <p className={isSoldOut ? 'sold-out' : ''}>\n {ticketPriceElem}\n </p>\n {!isSoldOut && !ticketIsFree && (\n <p className=\"fees\">\n {ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)'}\n </p>\n )}\n </div>\n <div\n className=\"event-detail__tier-state\"\n style={{ minWidth: 55 }}\n >\n <TicketRow\n ticketTier={ticket}\n prevTicketTier={arr[i - 1]}\n selectedTickets={selectedTickets}\n handleTicketSelect={ticketSelect}\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 =\n 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\n className={`event-detail__tier ${isSoldOut ? 'disabled' : ''}`}\n >\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 && (\n <p className=\"old-price\">{ticketOldPrice}</p>\n )}\n <p className={isSoldOut ? 'sold-out' : ''}>\n {ticketPriceElem}\n </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\">\n {ticket.depositPercent + '% DEPOSIT'}\n </p>\n )}\n </div>\n <div\n className=\"event-detail__tier-state\"\n style={{ minWidth: 55 }}\n >\n <TicketRow\n tableType={true}\n ticketTier={ticket}\n prevTicketTier={arr[i - 1]}\n selectedTickets={selectedTickets}\n handleTicketSelect={ticketSelect}\n isSeatMapAllowed={isSeatMapAllowed}\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 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 _map from 'lodash/map'\nimport React, { Fragment, useState } from 'react'\n\nimport { downloadPDF } from '../../utils'\nimport SnackbarAlert from '../common/SnackbarAlert'\n\ninterface IAddOnTypes {\n name: string;\n groupName: string;\n status: string;\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\n icon?: string;\n displayColumnNameInRow?: boolean;\n ticketsTitle?: string;\n}\n\ntype PdfDownload = {\n hash: string;\n loading: boolean;\n}\n\nconst TicketsTable = ({\n tickets = [],\n columns = [],\n handleSellTicket = _identity,\n handleRemoveFromResale = _identity,\n icon = '',\n displayColumnNameInRow = false,\n canSellTicket = true,\n ticketsTitle = 'Your Tickets',\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 ? (\n <CircularProgress size=\"22px\" />\n ) : (\n 'Download'\n )}\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 <Fragment key={index}>\n <TableRow>{getRow(ticket)}</TableRow>\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(\n (add_on: IAddOnTypes, index: number) => (\n <TableRow key={index}>\n <TableCell>{add_on.groupName && `${add_on.groupName}: `} {add_on.name}</TableCell>\n <TableCell>{add_on.status}</TableCell>\n </TableRow>\n )\n )}\n </TableBody>\n </Table>\n </TableCell>\n </TableRow>\n )}\n </Fragment>\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(\n group => group.attributes.id === currentGroupId\n ) || {}\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.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 {\n combineValidators,\n emailValidator,\n requiredValidator,\n} from '../../validators'\nimport { CustomField } from '../common'\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}\n\ninterface 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: IUserData) => ({\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 || data?.country || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.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}) => {\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.data'))\n } catch (e) {\n if (axios.isAxiosError(e)) {\n onGetProfileDataError(e)\n }\n return\n }\n\n const profileSpecifiedData = _get(profileResponse, 'data.data')\n const profileDataObj = setLoggedUserData(profileSpecifiedData)\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(\n 'user_data',\n JSON.stringify(profileDataObj)\n )\n const event = new window.CustomEvent('tf-login')\n window.document.dispatchEvent(event)\n }\n onLoginSuccess(_get(authRes, 'data.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\n log in 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(\n requiredValidator,\n emailValidator\n )}\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\n aria-hidden=\"true\"\n onClick={onForgotPasswordButtonClick}\n >\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 </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","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","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(_get(res, 'data.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.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(\n 'user_data',\n JSON.stringify(_get(profileRes, 'data.data'))\n )\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 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 } 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 isWindowDefined = typeof window !== 'undefined'\n\n const result = await addToCart(eventId, data)\n const pageConfigsDataResponse = await getCheckoutPageConfigs()\n\n if (result.status === 200 && pageConfigsDataResponse.status === 200) {\n const pageConfigsData =\n _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const {\n skip_billing_page: skipBillingPage = false,\n names_required: nameIsRequired = false,\n age_required: ageIsRequired = false,\n phone_required: phoneIsRequired = false,\n hide_phone_field: hidePhoneField = false,\n has_add_on: hasAddOn = false,\n free_ticket: freeTicket = false,\n collect_optional_wallet_address: collectOptionalWalletAddress = false,\n collect_mandatory_wallet_address: collectMandatoryWalletAddress = false,\n } = pageConfigsData\n\n let hash = ''\n let total = ''\n\n isWindowDefined && window.localStorage.removeItem('add_ons')\n\n if (skipBillingPage && !hasAddOn) {\n // Get user data for checkout data\n const userData =\n isWindowDefined && 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 checkoutResult = enableBillingInfoAutoCreate\n ? await postOnCheckout(checkoutBody, undefined, freeTicket)\n : null\n\n hash = _get(checkoutResult, 'data.data.attributes.hash') || ''\n total = _get(checkoutResult, 'data.data.attributes.total') || ''\n }\n\n return {\n skip_billing_page: skipBillingPage,\n names_required: nameIsRequired,\n phone_required: phoneIsRequired,\n age_required: ageIsRequired,\n hide_phone_field: hidePhoneField,\n free_ticket: freeTicket,\n collect_optional_wallet_address: collectOptionalWalletAddress,\n collect_mandatory_wallet_address: collectMandatoryWalletAddress,\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 = (\n seatId: string,\n eventSeats: Array<EventSeat>\n) => {\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 = {\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 = (\n data: Array<TicketTypeTierRelationsData>\n) => {\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 React, { useState } from 'react'\nimport { Field, Form, Formik } from 'formik'\nimport Button from '@mui/material/Button'\nimport Modal from '@mui/material/Modal'\nimport Box from '@mui/material/Box'\nimport { CustomField, Loader } from '../common/index'\nimport { combineValidators, requiredValidator, emailValidator } from '../../validators'\nimport { sendRSVPInfo } from '../../api'\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 =\n typeof window !== 'undefined' ? 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 = {\n data: {\n email: values.email\n }\n }\n const { data } = await sendRSVPInfo(eventId, requestData)\n\n setModal({ isOpen: true, text: data.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 onClick={handleModalClose}>OK</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) => 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","/* 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 {\n getAddons,\n getCart,\n getCheckoutPageConfigs,\n postOnCheckout,\n} from '../../api'\nimport { currencyNormalizerCreator } from '../../normalizers'\nimport { ICheckoutPageConfigs } from '../../types'\nimport {\n createCheckoutDataBodyWithDefaultHolder,\n createMarkup,\n getQueryVariable,\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<\n any\n >({})\n const [\n groupsWithInitialVariantsValues,\n 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 = (\n groupId: any,\n changedGroupd: any\n ) => {\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] -\n variantCurrSelectedValue\n ) {\n allowedOptionCount = groupsWithInitialVariantsValues[groupId][variantId]\n } else {\n allowedOptionCount = remainingGroupStock + variantCurrSelectedValue\n }\n\n recreatedVariantsOptions[variantId] = generateSelectOptions(\n 0,\n allowedOptionCount\n )\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[\n currSelectedVariantId\n ]\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 isWindowDefined = typeof window !== 'undefined'\n const skipBillingPage = pageConfigsData.skip_billing_page ?? false\n const nameIsRequired = pageConfigsData.names_required ?? false\n const ageIsRequired = pageConfigsData.age_required ?? false\n const phoneIsRequired = pageConfigsData.phone_required ?? false\n const hasAddOn = pageConfigsData.has_add_on ?? false\n const freeTicket = pageConfigsData.free_ticket ?? false\n const collectOptionalWalletAddress =\n pageConfigsData.collect_optional_wallet_address ?? false\n const collectMandatoryWalletAddress =\n pageConfigsData.collect_mandatory_wallet_address ?? false\n\n if (skipBillingPage && enableBillingInfoAutoCreate) {\n const ticketsQuantity = window.localStorage.getItem('quantity')\n const userData = JSON.parse(\n window.localStorage.getItem('user_data') || '{}'\n )\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 = _get(checkoutResponse, 'data.data.attributes.hash')\n const total = _get(checkoutResponse, 'data.data.attributes.total')\n\n isWindowDefined && window.localStorage.removeItem('quantity')\n isWindowDefined && window.localStorage.removeItem('add_ons')\n\n onPostCheckoutSuccess(checkoutResponse?.data)\n onConfirmSelectionSuccess({\n skip_billing_page: skipBillingPage,\n names_required: nameIsRequired,\n phone_required: phoneIsRequired,\n age_required: ageIsRequired,\n event_id: String(eventId),\n hash,\n total,\n hasAddOn,\n free_ticket: freeTicket,\n collect_optional_wallet_address: collectOptionalWalletAddress,\n collect_mandatory_wallet_address: collectMandatoryWalletAddress,\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 (isWindowDefined) {\n if (!skipAddonPage) {\n window.localStorage.setItem('add_ons', JSON.stringify(values))\n }\n\n onConfirmSelectionSuccess({\n skip_billing_page: skipBillingPage && enableBillingInfoAutoCreate,\n names_required: nameIsRequired,\n phone_required: phoneIsRequired,\n age_required: ageIsRequired,\n event_id: String(eventId),\n hasAddOn,\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 <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}_title`}>UPGRADES & ADD-ONS</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\n className={`${classNamePrefix}_product_image_block`}\n >\n <img src={addon.imageUrl} alt=\"No Data\" />\n </div>\n )}\n </div>\n <div\n className={`${classNamePrefix}_product_info_block`}\n >\n <div className={`${classNamePrefix}_product_title`}>\n {addon.name}\n </div>\n <div className={`${classNamePrefix}_product_price`}>\n {addonNormalizedPrice}\n {!isAddonFree && (\n <span\n className={`${classNamePrefix}_product_fee`}\n >\n {addon.feeIncluded\n ? '(incl. Fees)'\n : '(excl. Fees)'}\n </span>\n )}\n </div>\n </div>\n <div\n className={`${classNamePrefix}_product_desc`}\n dangerouslySetInnerHTML={createMarkup(\n addon.description\n )}\n />\n <div\n className={`${classNamePrefix}_product_select_container`}\n >\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={`${\n isConfirmDisabled\n ? `${classNamePrefix}_is_disabled`\n : ''\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 */\n/* eslint-disable react/no-unescaped-entities */\nimport './style.css'\n\nimport Modal from '@mui/material/Modal'\nimport { AxiosError } from 'axios'\nimport _get from 'lodash/get'\nimport _identity from 'lodash/identity'\nimport _map from 'lodash/map'\nimport React, { 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 SocialButtons from './social-buttons'\n\nexport interface IShareButton {\n mainLabel: string;\n subLabel: string;\n platform: string;\n shareData: any;\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: any) => 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<any>(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 response = await getConfirmationData(hash)\n const data = _get(response, 'data.data.attributes')\n data.personal_share_sales = data.personal_share_sales.map((d: any) => {\n const salesData: IReferralPromotion = {\n label: `If your friends buy ${d.sales} tickets`,\n price: '',\n }\n if (d.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 + d.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(response.data)\n } catch (error) {\n onGetConfirmationDataError(error.response)\n }\n }\n })()\n }, [])\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 = { ...data, personal_share_link: e.target.value }\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 <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 {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, isJson } from '../../utils'\nimport Modal from '../common/ModalComponent'\nimport { VERIFICATION_MESSAGES, VERIFICATION_STATUSES } 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) => 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>(\n null\n )\n const [showModal, setShowModal] = useState(false)\n const [netverifyUrl, setNetverifyUrl] = useState<string | null>(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 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 useEffect(() => {\n let intervalId: any = null\n const orderHash = getQueryVariable('order_hash') || ''\n\n const getUrl = async () => {\n try {\n const urlResponse = await getNetverifyUrl()\n setNetverifyUrl(urlResponse.netverifyUrl)\n onGetVerifyUrlSuccess(urlResponse)\n } catch (error) {\n onGetVerifyUrlError(error)\n }\n }\n\n const getVerificationStatus = async () => {\n try {\n const statusResponse = await checkVerificationStatus()\n const { status } = statusResponse.data.attributes\n\n if (verificationStatus !== status) {\n setVerificationStatus(status)\n setModalData({\n displaModal:\n status === VERIFICATION_STATUSES.APPROVED ||\n status === VERIFICATION_STATUSES.FAILED,\n hideCancelBtn: true,\n message:\n status === VERIFICATION_STATUSES.APPROVED\n ? VERIFICATION_MESSAGES.APPROVED\n : status === VERIFICATION_STATUSES.FAILED\n ? VERIFICATION_MESSAGES.FAILED\n : status,\n })\n }\n onGetVerificationStatusSuccess(statusResponse)\n } catch (error) {\n onGetVerificationStatusError(error)\n } finally {\n setLoadingStatus(false)\n }\n }\n\n const getCustomerOrderStatus = async () => {\n try {\n const customerOrderResponse = await checkCustomerOrder(orderHash)\n return customerOrderResponse\n } catch (error) {\n throw error\n }\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 (\n error.response?.data?.message === VERIFICATION_MESSAGES.WRONG_CUSTOMER\n ) {\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 isWindowDefined = typeof window !== 'undefined'\n const orderHash = getQueryVariable('order_hash')\n\n if (isWindowDefined) {\n const checkoutData = JSON.parse(\n window.localStorage.getItem('checkoutData') || '{}'\n )\n if (_isEmpty(checkoutData) && orderHash) {\n window.localStorage.setItem(\n 'checkoutData',\n JSON.stringify({ hash: orderHash })\n )\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.PENDING && (\n <div className=\"verify-message\">\n {VERIFICATION_MESSAGES.PENDING}\n </div>\n )}\n {!isAccountVerifiedOrPending && (\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, filter: string) => {\n try {\n setLoading(true)\n const response = await getOrders(page, limit, filter)\n onGetOrdersSuccess(response)\n\n const data = _get(response, 'data.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 window.localStorage.removeItem('access_token')\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 _map from 'lodash/map'\nimport moment from 'moment-timezone'\nimport React, { useEffect, useState } from 'react'\n\nimport { getOrderDetails, removeFromResale, resaleTicket } from '../../api'\nimport { isBrowser } from '../../utils'\nimport ConfirmModal from '../confirmModal'\nimport { InitialValuesTypes, TicketResaleModal } from '../ticketResaleModal'\nimport TicketsTable, { IActionColumns, ITicketTypes } from './ticketsTable'\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 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\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 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 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 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.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.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.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 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 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\n return (\n <div className=\"order-details\">\n <h1 className=\"layout-title\">Order Details</h1>\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 (typeof window !== 'undefined') {\n window.location.assign(ordersPath ?? '/orders')\n }\n }}\n >\n Back to Orders\n </button>\n </div>\n </div>\n </div>\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 />\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 (typeof window !== 'undefined') {\n window.location.assign(ordersPath ?? '/orders')\n }\n }}\n >\n Return to Order History\n </button>\n </div>\n\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","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}\n\nexport const TicketResaleContainer = ({\n onProcessTicketSuccess = () => {},\n onProcessTicketError = () => {},\n onDeclineTicketPurchaseSuccess = () => {},\n onDeclineTicketPurchaseError = () => {},\n orderHash,\n billingPath,\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}`)\n .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(\"Thanks for letting us know! We'll offer this ticket to someone else!\")\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 data = _get(response, 'data.data.attributes')\n const age_required = _get(data, 'age_required', false)\n const names_required = _get(data, 'names_required', false)\n const event_id = _get(data, 'event_id')\n\n onProcessTicketSuccess(response.data)\n window.location.href = `${\n billingPath ?? '/billing/billing-info/'\n }?age_required=${age_required}&names_required=${names_required}&event_id=${event_id}`\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 jwt_decode from 'jwt-decode'\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 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 { X_TF_ECOMMERCE } from '../../constants'\nimport { useCookieListener } from '../../hooks/useCookieListener'\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 names_required: boolean;\n age_required: boolean;\n phone_required: boolean;\n hide_phone_field: boolean;\n event_id: string;\n hash?: string;\n total?: string;\n hasAddOn?: boolean;\n free_ticket: boolean;\n collect_optional_wallet_address?: boolean;\n collect_mandatory_wallet_address?: 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 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 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(\n Boolean(getCookieByName(X_TF_ECOMMERCE))\n )\n const [showLoginModal, setShowLoginModal] = useState(false)\n const [tickets, setTickets] = useState([] as ITicket[])\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(\n isAccessCodeEnabled\n )\n const [showPromoCodeSection, setShowPromoCodeSection] = useState(\n isPromotionsEnabled\n )\n const [error, setError] = useState(null)\n const [isNotInvitedError, setIsNotInvitedError] = useState('')\n const [isInvalidLinkError, setIsInvalidLinkError] = useState('')\n const [pendingVerificationMessage, setPendingVerificationMessage] = useState()\n\n const ticketsContainerRef = useRef<HTMLDivElement>(null)\n const pageUrl = isBrowser ? window.location.href.split('?')[0] : ''\n\n useCookieListener(X_TF_ECOMMERCE, value => setIsLogged(Boolean(value)))\n usePixel(eventId, { pageUrl })\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const access_token = window.localStorage.getItem('access_token')\n if (access_token) {\n const decoded = jwt_decode<{ exp: number }>(access_token)\n if (decoded && decoded.exp < Date.now() / 1000) {\n window.localStorage.removeItem('access_token')\n window.localStorage.removeItem('user_data')\n }\n }\n window.localStorage.removeItem('extraData')\n }\n }, [])\n\n useEffect(() => {\n !!eventId && getTicketsApi()\n }, [eventId])\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 (isWindowDefined) {\n window.localStorage.removeItem('access_token')\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.data.success) {\n const attributes = _get(response, 'data.data.attributes')\n type === 'promo' && setCodeIsApplied(attributes.ValidPromoCode)\n type === 'promo' && setCodeIsInvalid(!attributes.ValidPromoCode)\n setTickets(_get(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.data.success) {\n const event = _get(eventResponse, 'data.data.attributes')\n setEvent(event)\n\n if (event.country && isWindowDefined) {\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 const handleTicketSelect = (\n key: string,\n value: number | string,\n isTable = false\n ) => {\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 const handleOrdersClick = () => {\n if (isWindowDefined) {\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 =\n _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 = {\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 const result = await addToCart(eventId, data)\n const pageConfigsDataResponse = enableAddOns\n ? await getCheckoutPageConfigs()\n : {\n status: 200,\n data: { attributes: _get(result, 'data.data.attributes') },\n }\n\n if (result.status === 200 && pageConfigsDataResponse.status === 200) {\n const pageConfigsData =\n _get(pageConfigsDataResponse, 'data.attributes') || {}\n\n const skipBillingPage = pageConfigsData.skip_billing_page ?? false\n const nameIsRequired = pageConfigsData.names_required ?? false\n const ageIsRequired = pageConfigsData.age_required ?? false\n const phoneIsRequired = pageConfigsData.phone_required ?? false\n const hidePhoneField = pageConfigsData.hide_phone_field ?? false\n const hasAddOn = pageConfigsData.has_add_on ?? false\n const freeTicket = pageConfigsData.free_ticket ?? false\n const collectOptionalWalletAddress =\n pageConfigsData.collect_optional_wallet_address ?? false\n const collectMandatoryWalletAddress =\n pageConfigsData.collect_mandatory_wallet_address ?? false\n\n let hash = ''\n let total = ''\n\n const isWindowDefined = typeof window !== 'undefined'\n isWindowDefined && window.localStorage.removeItem('add_ons')\n\n if (skipBillingPage && !hasAddOn) {\n // Get user data for checkout data\n const userData =\n isWindowDefined && window.localStorage.getItem('user_data')\n ? JSON.parse(window.localStorage.getItem('user_data') || '')\n : {}\n\n const access_token =\n isWindowDefined && window.localStorage.getItem('access_token')\n ? window.localStorage.getItem('access_token') || ''\n : ''\n\n const checkoutBody = createCheckoutDataBodyWithDefaultHolder(\n ticketQuantity,\n userData\n )\n\n const checkoutResult = enableBillingInfoAutoCreate\n ? await postOnCheckout(checkoutBody, access_token, freeTicket)\n : null\n\n hash = _get(checkoutResult, 'data.data.attributes.hash')\n total = _get(checkoutResult, 'data.data.attributes.total')\n }\n\n onAddToCartSuccess({\n skip_billing_page: skipBillingPage,\n names_required: nameIsRequired,\n phone_required: phoneIsRequired,\n age_required: ageIsRequired,\n hide_phone_field: hidePhoneField,\n free_ticket: freeTicket,\n collect_optional_wallet_address: collectOptionalWalletAddress,\n collect_mandatory_wallet_address: collectMandatoryWalletAddress,\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.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 => item.salesStarted && !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 (\n isButtonScrollable &&\n ticketsContainerRef &&\n ticketsContainerRef.current\n ) {\n ticketsContainerRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'nearest',\n })\n }\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 => ticket.displayTicket && !ticket.soldOut && ticket.salesStarted\n )\n\n const wrappedActionsSectionComponent = React.isValidElement(\n ActionsSectionComponent\n )\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 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\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 {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={\n hideTableTicketsHeader || _isEmpty(tableTickets)\n }\n hideTicketsHeader={\n hideTicketsHeader || _isEmpty(ordinarTickets)\n }\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={handleGetTicketClick}\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","export const X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\n","export const setLoggedUserData = (data: IUserData) => ({\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 || data?.country || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zip || data?.zipCode || '',\n})\n"],"names":["ttfHeaders","Accept","Content-Type","CONFIGS","publicRequest","axios","create","baseURL","BASE_URL","headers","getQueryVariable","variable","window","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","accessToken","localStorage","getItem","Authorization","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","isBrowser","getFormInitialValues","fieldsSections","initialValues","isWindowDefined","userData","JSON","parse","_forEach","item","fields","fieldItem","isJson","value","e","getCustomerExistsData","accessHash","getDelegationTickets","issueTicket","_context2","post","isDocumentDefined","interceptors","use","authGuestToken","setItem","setGuestToken","_error$response","status","removeItem","_error$response2","_error$response2$data","Promise","reject","request","config","guestToken","updatedHeaders","Authorization-Guest","additionalCookiesHeaderValue","Additional-Cookies","X_SOURCE_ORIGIN","X-Source-Origin","method","days","expires","date","setTime","getTime","toUTCString","setCustomCookie","token","defaults","common","setBaseUrl","baseUrl","setAccessToken","setCustomHeader","guestHeaderResponseValue","guestHeaderExistingValue","guestHeader","getEvent","id","pk","referralValue","referralId","searchParams","referral_key","referralIdlocal","params","Referer-Url","referrer","Referrer-Id","getTickets","promoCode","invitationHash","Promotion-Event","String","Promotion-Code","addToCart","getCart","postOnCheckout","freeTicket","city","country","state","street_address","authorize","CLIENT_ID","register","getPaymentData","hash","handlePaymentSuccess","orderHash","undefined","createPaymentPlan","stripePaymentMethodId","stripe_payment_method_id","getProfileData","getCountries","getConfirmationData","getStates","countryId","getOrders","page","limit","eventSlug","BRAND_SLUG","getOrderDetails","orderId","getConditions","eventId","resaleTicket","postReferralVisits","forgotPassword","processTicket","declineInvitation","sendRSVPInfo","validatePhoneNumber","getAddons","addons","getCheckoutPageConfigs","_context3","getSeatMapData","reservedSeatsHash","reserved_seats_hash","_context4","getSeatMapStatuses","_context5","reserveSeat","tierId","seatId","_context6","ttl","removeSeatReserve","seatIds","_context7","getNetverifyUrl","_context8","checkVerificationStatus","_context9","updateVerificationStatus","_context10","patch","verification","verificationStatus","checkCustomerOrder","_context11","appendScriptsToHeader","code","tempEl","innerHTML","scripts","getElementsByTagName","index","script","src","head","addGTagToHeader","tagId","links","_document","_document2","trim","append","scriptBody","dataLayer","gtag","args","_window","domains","usePixel","options","getScript","page_url","pageOptions","pageUrl","order_hash","brandGoogleTagKey","eventGoogleTagKey","eventGoogleTagManagerLinkerDomains","console","useEffect","emailRegex","combineValidators","validators","error_message","requiredValidator","message","errorMessage","addEventListener","err","isFalsy","emailValidator","test","SnackbarAlert","_ref$autoHideDuration","autoHideDuration","onClose","React","className","Snackbar","open","isOpen","anchorOrigin","position","vertical","horizontal","classes","root","Alert","severity","variant","icon","action","filled","CustomField","label","_ref2$type","field","_ref2$selectOptions","selectOptions","_ref2$form","form","touched","submitCount","theme","_ref2$inputProps","inputProps","pInputProps","_ref2$InputProps","InputProps","inputRef","_ref2$multiline","multiline","minRows","maxRows","disabled","useState","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","_map","option","key","PoweredBy","alt","style","top","left","transform","minWidth","backgroundColor","border","outline","padding","Schema","Yup","shape","required","ForgotPasswordModal","_ref$onLogin","onLogin","_ref$onForgotPassword","onForgotPasswordSuccess","_ref$onForgotPassword2","onForgotPasswordError","_ref$showPoweredByIma","showPoweredByImage","loading","setLoading","onForgotPassword","isAxiosError","Modal","Box","Formik","validationSchema","onSubmit","isValid","dirty","Form","handleSubmit","Field","component","CircularProgress","size","onClick","maxHeight","overflow","_ref$actions","actions","_ref$modalClassName","modalClassName","MuiModal","children","Button","VerificationPendingModal","props","displayModal","showModal","setShowModal","LoginModal","_ref$alreadyHasUser","alreadyHasUser","_ref$userExpired","userExpired","_ref$onGetProfileData","onGetProfileDataSuccess","_identity","_ref$onGetProfileData2","onGetProfileDataError","_ref$onSignup","onSignup","_ref$modalClassname","modalClassname","logo","_ref$showForgotPasswo","showForgotPasswordButton","_ref$showSignUpButton","showSignUpButton","setError","password","profileResponse","profileSpecifiedData","profileDataObj","firstName","lastName","confirmEmail","streetAddress","stateId","zip","zipCode","stringify","event","CustomEvent","dispatchEvent","_e$response","_e$response$data","validate","meta","SignupSchema","min","confirmPassword","oneOf","SignupModal","_ref$onRegisterSucces","onRegisterSuccess","_ref$onRegisterError","onRegisterError","values","formData","FormData","set","CLIENT_SECRET","access_token_register","res","refreshToken","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","rest","FormControl","_rest$form","FormGroup","FormControlLabel","control","Checkbox","componentsProps","typography","checkbox","_rest$form2","FormHelperText","PhoneNumberField","_ref$form","setFieldError","setFieldValue","setFieldTouched","setErrors","_ref$disableDropdown","disableDropdown","_ref$defaultCountry","defaultCountry","_ref$fill","setPhoneValidationIsLoading","isCountryCodeEditable","debounceCb","useCallback","_debounce","cb","newErrors","MuiPhoneNumber","onChange","dialCode","autoFormat","disableAreaCodes","countryCodeEditable","Loader","SelectField","isMultiple","_ref$options","_ref$onChange","selectId","getSelectedItemLabel","selectedValue","selectedItem","find","InputLabel","Select","labelId","multiple","target","OutlinedInput","renderValue","selected","textAlign","map","MenuItem","checked","ListItemText","primary","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","radios","radioId","FormLabel","RadioGroup","radio","Radio","getInitialValues","propsInitialValues","userValues","results","_flatMapDeep","groupItems","groupItem","createRegisterFormData","checkoutBody","flagFreeTicket","bodyFormData","includes","setLoggedUserData","createCheckoutDataBody","holderAge","restValues","holders","individualHolder","fromEntries","entries","filter","_loop","holder","firstNameLogged","lastNameLogged","emailLogged","filteredRestValue","getValidateFunctions","element","states","validationFunctions","onValidate","assingUniqueIds","itemValue","_isArray","some","uniqueId","nanoid","getFieldLabel","flagRequirePhone","collectMandatoryWalletAddress","isRequiredField","isValidElement","getFieldComponent","select_multi","text","LogicRunner","setStates","setValues","setUserValues","onGetStatesSuccess","onGetStatesError","shouldFetchCountries","brandOptIn","prevCountry","mappedStates","stateExists","_mappedStates$find","_mappedStates$","fetchStates","userDataEncoded","parsedData","mappedValues","brand_opt_in","holderFirstName-0","holderLastName-0","holderEmail-0","extraDataJSON","extraData","getStoredUserData","BillingInfoContainer","_ref4$ticketHoldersFi","ticketHoldersFields","_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$onAuthorizeSucc","onAuthorizeSuccess","_ref4$onAuthorizeErro","onAuthorizeError","_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","setExtraData","isConfigLoading","setIsConfigLoading","configs","setConfigs","isNewUser","setIsNewUser","themeMui","_data$data","access_token","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","userDataResponse","_isEmpty","removeReferralKey","_e$response$data$data","hasUnverifiedOrder","_e$response2","_e$response2$data","collectPaymentData","collectCheckoutBody","profileData","initialCountry","_find","toLowerCase","Backdrop","color","zIndex","ttf_opt_in","data_capture","instagram","company","businessCategory","jobTitle","enableReinitialize","formikHelpers","checkoutBodyForRegistration","resRegister","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","groupClassname","el","handleBlur","format","_item","currencyNormalizerCreator","currency","getCurrencySymbolByCurrency","createFixedFloatNormalizer","fixedValue","toFixed","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","stripe","useStripe","elements","useElements","postalCode","setPostalCode","stripeError","setStripeError","checkboxes","setCheckboxes","allowSubmit","setAllowSubmit","preventDefault","card","getElement","CardNumberElement","address","line1","postal_code","confirmCardSetup","payment_method","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","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","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","SocialComponent","mainLabel","subLabel","platform","shareData","_config","Icon","_config2","round","SocialButtons","showDefaultShareButtons","shareLink","appId","shareButtons","clientLabel","showReferralsInfoText","quote","title","shareButton","useCookieListener","handler","getCookie","intervalValue","setIntervalValue","cookieRef","handleCookieChange","setInterval","clearInterval","ConfirmModal","_ref$loading","_ref$hideCancelBtn","hideCancelBtn","_ref$onClose","_ref$onConfirm","onConfirm","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","tickets","_ref$defaultMaxQuanti","defaultMaxQuantity","showSuccessMessage","setShowSuccessMessage","ticketTypesList","d","displayName","showTicketsField","requestData","success","ticketTypeId","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","salesStarted","salesEnded","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","image","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","TicketsTable","_ref$handleSellTicket","handleSellTicket","_ref$handleRemoveFrom","handleRemoveFromResale","_ref$icon","_ref$displayColumnNam","displayColumnNameInRow","_ref$canSellTicket","canSellTicket","_ref$ticketsTitle","ticketsTitle","pdfError","setPdfError","pdfDownload","setPdfDownload","TableContainer","Paper","Table","TableHead","TableBody","columnIndex","ticketIsDownloading","pdf_link","is_on_sale","pdfDownloadError","is_sellable","getRow","_ticket$add_ons","colSpan","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","authRes","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","varArray","re","RegExp","_","replaceVarInString","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","resetForm","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","nameIsRequired","ageIsRequired","phoneIsRequired","hasAddOn","has_add_on","collectOptionalWalletAddress","checkoutResult","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","description","guestPrice","guest_price","finalPrice","handleTicketChange","display","flexDirection","justifyContent","fee_included","ticket_type_deposit","alignItems","Tooltip","arrow","tooltip","& .MuiTooltip-arrow","onKeyDown","m","from","dangerouslySetInnerHTML","marginLeft","count","getButtonLabel","_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","checkoutResponse","_error$response$data","_error$response$data$","handleClearAddons","selectedAddons","isConfirmDisabled","autoComplete","cost","isAddonFree","addonNormalizedPrice","getNormalizedPrice","imageUrl","confirmationLabels","_ref$hasCopyIcon","hasCopyIcon","isReferralEnabled","_ref$messengerAppId","messengerAppId","_ref$shareButtons","_ref$onGetConfirmatio","onGetConfirmationDataSuccess","_ref$onGetConfirmatio2","onGetConfirmationDataError","_ref$onLinkCopied","onLinkCopied","_ref$showReferralsInf","_ref$showCopyInfoModa","showCopyInfoModal","_ref$showPricingNoteS","showPricingNoteSection","setData","dataEncoded","personal_share_sales","salesData","sales","_d$price","unshift","product_price","_data$product_price","showCopyModal","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","ref","personal_share_link","newData","navigator","clipboard","writeText","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","displaModal","modalData","setModalData","isAccountVerifiedOrPending","callbackNetVerify","payload","transactionStatus","removeEventListener","intervalId","getUrl","urlResponse","getVerificationStatus","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","onReturnButtonClick","_ref$personalLinkIcon","personalLinkIcon","ticketsTableColumns","ordersPath","pOrderId","_ref$referralTitle","referralTitle","_ref$itemsTitle","itemsTitle","removeFromResaleLoading","setRemoveFromResaleLoading","resaleTicketLoading","setResaleTicketLoading","showResaleModal","setShowResaleModal","showRemoveResaleModal","setShowRemoveResaleModal","activeTicket","setActiveTicket","handleOnSubmit","updatedData","_updatedData$tickets","onConfirmRemoveResale","_updatedData$tickets2","orderSummery","columnsProps","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","errorText","_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","orderDataArray","_cart$","_cart$2","debt","tableTypes","conditionsInfo","fetchConditions","showPaymentForm","handlePaymentMiddleWare","paymentSuccessResponse","orderValue","orderCurrency","hasTableTypes","paymentFieldsData","parseFloat","Container","maxWidth","_field$className","_field$normalizer","tableTypeItem","gridTemplateColumns","gridColumnGap","_paymentPlanConfig$sa2","Elements","StripePayment","_paymentPlanConfig$sa3","_ref$onClickOk","onClickOk","tokenProps","_ref$onResetPasswordS","onResetPasswordSuccess","_ref$onResetPasswordE","onResetPasswordError","showSection","modal","setModal","handleModalClose","_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","successMessage","setSuccessMessage","isDeclined","getTicketsLabel","_ref$contentStyle","_ref$onAddToCartError","onAddToCartError","_ref$onGetTicketsSucc","onGetTicketsSuccess","_ref$onGetTicketsErro","onGetTicketsError","_ref$onLogoutSuccess","onLogoutSuccess","_ref$onLogoutError","onLogoutError","_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","ticketsContainerRef","decoded","jwt_decode","exp","getTicketsApi","handleLogout","handleExternalLogin","_getTicketsApi","isUpdateingCode","previewKey","eventResponse","ValidPromoCode","is_access_code","handleBook","optionName","isTableType","isTicketOnSale","eventHasTickets","scrollIntoView","behavior","block","inline","flagSeatMapAllowed","isTicketAvailable","wrappedActionsSectionComponent","cloneElement","externalUrl","redirectUrl","eventSaleIsNotStarted","salesStart","influencers","referralsEnabled","referrals","hideTopInfluencers","isTableMapEnabled","_filter","ordinarTickets","waitingListMaxQuantity","influencer","_influencer$lastName"],"mappings":"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"}
|