tf-checkout-react-native 1.0.39 → 1.0.42

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/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/components/bottomSheetModal/BottomSheetModal.tsx","../src/res/colors.ts","../src/res/icons.ts","../src/res/images.ts","../src/res/index.ts","../src/components/bottomSheetModal/BottomSheetModalStyles.ts","../src/components/button/Button.tsx","../src/components/button/styles.tsx","../src/components/cartTimer/CartTimer.tsx","../src/components/cartTimer/styles.ts","../src/components/checkbox/Checkbox.tsx","../src/components/checkbox/styles.ts","../src/components/datePicker/DatePicker.tsx","../src/components/input/Input.tsx","../src/components/input/styles.ts","../src/packages/rn-material-ui-textfield/components/field/index.js","../src/packages/rn-material-ui-textfield/components/line/index.js","../src/packages/rn-material-ui-textfield/components/line/styles.js","../src/packages/rn-material-ui-textfield/components/label/index.js","../src/packages/rn-material-ui-textfield/components/label/styles.js","../src/packages/rn-material-ui-textfield/components/affix/index.js","../src/packages/rn-material-ui-textfield/components/affix/styles.js","../src/packages/rn-material-ui-textfield/components/helper/index.js","../src/packages/rn-material-ui-textfield/components/helper/styles.js","../src/packages/rn-material-ui-textfield/components/counter/index.js","../src/packages/rn-material-ui-textfield/components/counter/styles.js","../src/packages/rn-material-ui-textfield/components/field/styles.js","../src/packages/rn-material-ui-textfield/components/field-filled/styles.js","../src/packages/rn-material-ui-textfield/components/field-filled/index.js","../src/packages/rn-material-ui-textfield/components/field-outlined/index.js","../src/packages/rn-material-ui-textfield/components/outline/index.js","../src/packages/rn-material-ui-textfield/components/outline/styles.js","../src/components/datePicker/styles.ts","../src/components/dropdown/Dropdown.tsx","../src/components/separator/Separator.tsx","../src/components/dropdown/DropdownListItem.tsx","../src/components/dropdown/styles.ts","../src/components/dropdownMaterial/DropdownMaterial.tsx","../src/components/dropdownMaterial/styles.ts","../src/components/enterPassword/EnterPassword.tsx","../src/components/enterPassword/styles.ts","../src/components/formField/FormField.tsx","../src/components/radioGroup/RadioGroup.tsx","../src/components/radioGroup/index.ts","../src/components/formField/styles.ts","../src/components/loading/Loading.tsx","../src/components/loading/styles.ts","../src/components/loggedIn/LoggedIn.tsx","../src/components/loggedIn/styles.ts","../src/components/login/Login.tsx","../src/core/BillingCore/BillingCore.tsx","../src/api/ApiClient.ts","../src/helpers/Config.ts","../src/api/Constants.ts","../src/helpers/Domains.ts","../src/helpers/LocalStorage.tsx","../src/api/ErrorHandler.ts","../src/core/LoginCore/LoginCoreHelper.ts","../src/helpers/RefreshAccessToken.ts","../src/core/CheckoutCore/CheckoutCore.tsx","../src/core/LoginCore/LoginCore.tsx","../src/core/MyOrdersCore/MyOrdersCore.tsx","../src/core/OrderDetailsCore/OrderDetailsCore.tsx","../src/core/PurchaseConfirmationCore/PurchaseConfirmationCore.tsx","../src/core/ResetPasswordCore/ResetPasswordCore.tsx","../src/core/Session/SessionHandle.tsx","../src/core/TicketsCore/TicketsCore.tsx","../src/core/WaitingListCore/WaitingListCore.tsx","../src/components/login/LoginView.tsx","../src/helpers/Debounced.ts","../src/helpers/Validators.ts","../src/components/restorePassword/RestorePassword.tsx","../src/components/restorePassword/styles.ts","../src/components/restorePassword/ResultDialog.tsx","../src/components/login/components/LoginForm.tsx","../src/components/login/styles.ts","../src/components/phoneInput/PhoneInput.tsx","../src/components/phoneInput/styles.ts","../src/components/promoCode/PromoCode.tsx","../src/components/promoCode/styles.ts","../src/components/radioButton/RadioButton.tsx","../src/components/radioButton/styles.ts","../src/components/stripePayment/StripePayment.tsx","../src/components/stripePayment/styles.ts","../src/components/waitingList/WaitingList.tsx","../src/components/waitingList/WaitingListView.tsx","../src/components/waitingList/styles.ts","../src/containers/billingInfo/Billing.tsx","../src/helpers/CountryCodes.ts","../../tf-checkout-shared/src/utils/validators.ts","../../tf-checkout-shared/src/utils/formatters.ts","../../tf-checkout-shared/src/utils/constants.ts","../../tf-checkout-shared/src/api/constants.ts","../../tf-checkout-shared/src/api/headers.ts","../../tf-checkout-shared/src/api/endpoints.ts","../src/helpers/StringsHelper.ts","../src/containers/billingInfo/styles.ts","../src/containers/checkout/Checkout.tsx","../src/containers/checkout/CheckoutData.ts","../src/containers/checkout/components/Conditions.tsx","../src/containers/checkout/components/styles.ts","../src/containers/checkout/components/OrderReview.tsx","../src/containers/checkout/styles.ts","../src/containers/myOrderDetails/MyOrderDetails.tsx","../src/containers/myOrderDetails/MyOrderDetailsView.tsx","../src/containers/myOrderDetails/components/Notification.tsx","../src/containers/myOrderDetails/components/styles.ts","../src/containers/myOrderDetails/components/TicketActions/TicketActions.tsx","../src/containers/myOrderDetails/components/TicketListItem/TicketListItem.tsx","../src/containers/myOrderDetails/components/TicketListItem/TicketListItemStyles.ts","../src/containers/myOrderDetails/styles.ts","../src/containers/myOrders/MyOrders.tsx","../src/containers/myOrders/MyOrdersView.tsx","../src/containers/myOrders/components/OrderListItem.tsx","../src/containers/myOrders/components/styles.ts","../src/containers/myOrders/styles.ts","../src/utils/Logger.ts","../src/containers/purchaseConfirmation/PurchaseConfirmation.tsx","../src/containers/purchaseConfirmation/PurchaseConfirmationView.tsx","../src/containers/purchaseConfirmation/styles.ts","../src/containers/resaleTickets/ResaleTickets.tsx","../src/containers/resaleTickets/ResaleTicketsView.tsx","../src/containers/resetPassword/ResetPassword.tsx","../src/containers/resetPassword/ResetPasswordView.tsx","../src/containers/resetPassword/styles.ts","../src/containers/tickets/Tickets.tsx","../src/containers/tickets/TicketsView.tsx","../src/containers/tickets/components/TicketGroupListHeader.tsx","../src/containers/tickets/components/TicketListItem.tsx","../src/containers/tickets/components/styles.ts","../src/containers/tickets/styles.ts","../src/features/checkout-v2/hooks/use-checkout.ts","../src/utils/handlers.ts","../src/features/auth/api-hooks.ts","../src/features/auth/utils.ts","../src/features/event/api-hooks.ts","../src/features/geo/api-hooks.ts","../src/features/checkout-v2/utils.ts","../src/features/checkout-v2/hooks/api-hooks.ts","../src/features/checkout-v2/index.tsx","../src/features/checkout-v2/form/index.tsx","../src/features/form/index.tsx","../src/features/checkout-v2/components/AddonsContainer.tsx","../src/features/checkout-v2/components/Conditions.tsx","../src/features/checkout-v2/components/OrderReview.tsx","../src/features/checkout-v2/form/config.tsx","../src/features/checkout-v2/form/styles.ts","../src/features/checkout-v2/form/texts.ts"],"sourcesContent":["import { IMyOrderDetailsTicket } from './api/types'\nimport {\n ICheckoutBody,\n IEventResponse,\n IMyOrderDetailsData,\n IMyOrdersOrder,\n IPromoCodeResponse,\n IPurchaseConfirmationData,\n IRegisterNewUserBody,\n MyOrderRequestFromType,\n} from './api/types'\nimport {\n CartTimer,\n Dropdown,\n DropdownMaterial,\n Loading,\n LoggedIn,\n Login,\n PromoCode,\n WaitingList,\n} from './components'\nimport { IDropdownStyles } from './components/dropdown/types'\nimport { ILoadingStyles } from './components/loading/types'\nimport { ILoginSuccessData } from './components/login/types'\nimport {\n BillingInfo,\n Checkout,\n MyOrderDetails,\n MyOrders,\n PurchaseConfirmation,\n ResaleTickets,\n ResetPassword,\n Tickets,\n} from './containers'\nimport { ICheckoutSuccessData } from './features/checkout-v2/hooks/use-checkout'\nimport { IConfig } from './helpers/Config'\nimport { IMyOrderDetailsProps } from './containers/myOrderDetails/types'\nimport { IMyOrdersProps } from './containers/myOrders/types'\nimport { IPurchaseConfirmationProps } from './containers/purchaseConfirmation/types'\nimport { IResaleTicketsProps } from './containers/resaleTickets/types'\nimport { IPasswordProtectedEventData, ITicketsProps } from './containers/tickets/types'\nimport {\n BillingCore,\n BillingCoreHandle,\n CheckoutCore,\n CheckoutCoreHandle,\n LoginCore,\n LoginCoreHandle,\n MyOrdersCore,\n MyOrdersCoreHandle,\n OrderDetailsCore,\n OrderDetailsCoreHandle,\n PurchaseConfirmationCore,\n PurchaseConfirmationCoreHandle,\n ResetPasswordCore,\n ResetPasswordCoreHandle,\n SessionCoreHandleType,\n SessionHandleType,\n TicketsCore,\n TicketsCoreHandle,\n WaitingListCore,\n WaitingListCoreHandle,\n} from './core'\nimport {\n IBookTicketsOptions,\n IGetTicketsPayload,\n IGroupedTickets,\n} from './core/TicketsCore/TicketsCoreTypes'\nimport { useRegisterUser, useUserProfile } from './features/auth/api-hooks'\nimport {\n CheckoutController as CheckoutV2,\n CheckoutProvider,\n CheckoutStyles,\n} from './features/checkout-v2'\nimport { CheckoutForm, PaymentForm } from './features/checkout-v2/form'\nimport {\n useAddons,\n useAddToCart,\n useCart,\n useCheckout,\n useEventConditions,\n useEventInfo,\n usePaymentData,\n usePaymentSuccess,\n useTickets,\n useUpdateCheckout,\n} from './features/checkout-v2/hooks/api-hooks'\nimport { useCheckoutFlow } from './features/checkout-v2/hooks/use-checkout'\nimport { CheckoutTexts } from './features/checkout-v2/types'\nimport { useCountries, useStates } from './features/geo/api-hooks'\nimport { setConfig } from './helpers/Config'\nimport { deleteAllData, deleteUserData } from './helpers/LocalStorage'\nimport { refreshAccessToken } from './helpers/RefreshAccessToken'\nimport {\n IAccountOrdersPurchasedEvent,\n IAccountOrdersTicket,\n IAccountTicketsAttributes,\n IAccountTicketsData,\n IAccountTicketsResponse,\n IAddToCartResponse,\n IError,\n IEvent,\n ISelectedTicket,\n ITicket,\n ITicketsResponseData,\n IUserProfile,\n} from './types'\n\nimport { LogBox, NativeModules } from 'react-native'\n\nLogBox.ignoreAllLogs()\n\nexport {\n /**\n * @deprecated Use hooks like useCart(), useCheckout(), etc. imported directly from 'tf-checkout-react-native'. See core/MIGRATION.md\n */\n BillingCore,\n /**\n * @deprecated Use hooks like useCart(), useCheckout(), etc. imported directly from 'tf-checkout-react-native'. See core/MIGRATION.md\n */\n BillingCoreHandle,\n BillingInfo,\n CartTimer,\n Checkout,\n /**\n * @deprecated Use hooks like usePaymentData(), useEventConditions(), etc. imported directly from 'tf-checkout-react-native'. See core/MIGRATION.md\n */\n CheckoutCore,\n CheckoutCoreHandle,\n /**\n * @deprecated Use hooks like usePaymentData(), useEventConditions(), etc. imported directly from 'tf-checkout-react-native'. See core/MIGRATION.md\n */\n CheckoutForm,\n CheckoutProvider,\n CheckoutStyles,\n CheckoutTexts,\n CheckoutV2,\n deleteAllData,\n deleteUserData,\n Dropdown,\n DropdownMaterial,\n IAccountOrdersPurchasedEvent,\n IAccountOrdersTicket,\n IAccountTicketsAttributes,\n IAccountTicketsData,\n IAccountTicketsResponse,\n IAddToCartResponse,\n IBookTicketsOptions,\n ICheckoutBody,\n IDropdownStyles,\n IError,\n IEvent,\n IEventResponse,\n IGetTicketsPayload,\n IGroupedTickets,\n ILoadingStyles,\n ILoginSuccessData,\n IMyOrderDetailsData,\n IMyOrderDetailsProps,\n IMyOrdersOrder,\n IMyOrdersProps,\n IPasswordProtectedEventData,\n IPromoCodeResponse,\n IPurchaseConfirmationData,\n IPurchaseConfirmationProps,\n IRegisterNewUserBody,\n IResaleTicketsProps,\n ISelectedTicket,\n ITicket,\n ITicketsProps,\n ITicketsResponseData,\n IUserProfile,\n IConfig,\n ICheckoutSuccessData,\n IMyOrderDetailsTicket,\n Loading,\n LoggedIn,\n Login,\n LoginCore,\n LoginCoreHandle,\n MyOrderDetails,\n MyOrderRequestFromType,\n MyOrders,\n MyOrdersCore,\n MyOrdersCoreHandle,\n OrderDetailsCore,\n OrderDetailsCoreHandle,\n PaymentForm,\n PromoCode,\n PurchaseConfirmation,\n PurchaseConfirmationCore,\n PurchaseConfirmationCoreHandle,\n refreshAccessToken,\n ResaleTickets,\n ResetPassword,\n ResetPasswordCore,\n ResetPasswordCoreHandle,\n SessionCoreHandleType,\n SessionHandleType,\n setConfig,\n Tickets,\n TicketsCore,\n TicketsCoreHandle,\n useAddons,\n useAddToCart,\n // New checkout hooks (replacing BillingCore and CheckoutCore functionality)\n useCart,\n useCheckout,\n useCheckoutFlow,\n useCountries,\n useEventConditions,\n useEventInfo,\n usePaymentData,\n usePaymentSuccess,\n useRegisterUser,\n useStates,\n useTickets,\n useUpdateCheckout,\n useUserProfile,\n WaitingList,\n WaitingListCore,\n WaitingListCoreHandle,\n}\nexport default NativeModules.TFCheckoutRNModule\n\nexport { isValidEmail, formatCurrency } from 'tf-checkout-shared'\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react'\nimport {\n Animated,\n Dimensions,\n Image,\n Modal as RNModal,\n StyleProp,\n Text,\n TouchableOpacity,\n View,\n} from 'react-native'\n\nimport R from '../../res'\nimport s from './BottomSheetModalStyles'\nimport { IBottomSheetModalProps } from './BottomSheetModalTypes'\n\nconst animationDuration = 350\nconst { height: screenHeight } = Dimensions.get('window')\n\nexport type BottomSheetHandle = {\n close(): void\n}\n\nconst BottomSheetModal = forwardRef<BottomSheetHandle, IBottomSheetModalProps>(\n ({ onClose, texts, styles, content, contentHeight = screenHeight / 2 }, ref) => {\n const contentYPosition = useRef(new Animated.Value(contentHeight)).current\n\n const showContent = () => {\n Animated.timing(contentYPosition, {\n toValue: 0,\n duration: animationDuration,\n useNativeDriver: true,\n }).start()\n }\n\n const hideContent = () => {\n Animated.timing(contentYPosition, {\n toValue: contentHeight,\n duration: animationDuration,\n useNativeDriver: true,\n }).start(onClose)\n }\n\n useEffect(() => {\n showContent()\n })\n\n const onCloseHandler = () => {\n hideContent()\n }\n\n const animatedStyle: StyleProp<any> = {\n height: contentHeight,\n transform: [\n {\n translateY: contentYPosition,\n },\n ],\n }\n\n useImperativeHandle(ref, () => ({\n async close() {\n hideContent()\n },\n }))\n\n const mergedStyle = [s.animatedContent, animatedStyle, styles?.content]\n\n const title = texts?.title || 'Title'\n\n return (\n <RNModal transparent>\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Animated.View style={mergedStyle}>\n <View style={[s.header, styles?.headerContainer]}>\n <Text style={[s.title, styles?.title]}>{title}</Text>\n <TouchableOpacity\n onPress={onCloseHandler}\n style={[s.closeButton, styles?.closeButton]}\n >\n <Image\n style={[s.closeButtonIcon, styles?.closeButtonIcon]}\n source={R.icons.error}\n />\n </TouchableOpacity>\n </View>\n <View style={[s.contentContainer, styles?.contentContainer]}>{content}</View>\n </Animated.View>\n </View>\n </RNModal>\n )\n }\n)\n\nexport default BottomSheetModal\n","const colors = {\n primary: 'black',\n disabled: 'gray',\n white: 'white',\n black: 'black',\n tint: 'rgba(0,0,0,0.1)',\n transparentBlack: 'rgba(0,0,0,0.5)',\n transparent: 'rgba(0,0,0,0)',\n danger: '#D9534F',\n listBackground: 'rgba(0,0,0,0.1)',\n validGreen: '#139679',\n fff: '#fff',\n timerBackground: '#f4daa3',\n}\n\nexport default colors\n","export default {\n dropdown: require('../assets/icons/ic_dropdown.png'),\n check: require('../assets/icons/ic_check.png'),\n copy: require('../assets/icons/ic_copy.png'),\n next: require('../assets/icons/ic_next.png'),\n error: require('../assets/icons/ic_error.png'),\n more: require('../assets/icons/ic_more.png'),\n clock: require('../assets/icons/ic_clock.png'),\n eye: require('../assets/icons/ic_eye.png'),\n eyeOff: require('../assets/icons/ic_eye_off.png'),\n}\n","export default {\n brand: require('../assets/images/brand.png'),\n}\n","import colors from './colors'\nimport icons from './icons'\nimport images from './images'\n\nconst R = {\n icons: icons,\n colors: colors,\n images: images,\n}\n\nexport default R\n","import { Dimensions, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst { width: screenWidth } = Dimensions.get('window')\n\nexport default StyleSheet.create({\n rootContainer: {\n backgroundColor: R.colors.transparentBlack,\n flex: 1,\n justifyContent: 'flex-end',\n },\n animatedContent: {\n width: screenWidth,\n borderTopStartRadius: 20,\n borderTopEndRadius: 20,\n paddingVertical: 24,\n backgroundColor: R.colors.listBackground,\n },\n closeButton: {\n padding: 8,\n justifyContent: 'flex-end',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n marginBottom: 16,\n paddingHorizontal: 24,\n },\n title: {\n fontSize: 20,\n },\n closeButtonIcon: {\n height: 16,\n width: 16,\n resizeMode: 'contain',\n tintColor: R.colors.white,\n },\n contentContainer: {\n flex: 1,\n },\n})\n","//@ts-nocheck\nimport React from 'react'\nimport { ActivityIndicator, Text, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { IButtonProps } from './types'\n\nconst Button = React.forwardRef(\n (\n {\n text = 'Press me',\n onPress,\n isUpperCase,\n isDisabled,\n isLoading,\n styles,\n }: IButtonProps,\n ref\n ) => {\n const formatText = isUpperCase ? text.toUpperCase() : text\n\n return (\n <>\n <View style={[s.container, styles?.container]} ref={ref?.containerView}>\n <TouchableOpacity\n ref={ref?.touchableOpacity}\n onPress={onPress}\n activeOpacity={0.8}\n style={[isDisabled ? s.buttonDisabled : s.button, styles?.button]}\n disabled={isDisabled || isLoading}\n >\n {isLoading ? (\n <View ref={ref?.loadingView}>\n <ActivityIndicator\n color={R.colors.white}\n size={'small'}\n ref={ref?.activityIndicator}\n />\n </View>\n ) : (\n <Text style={[s.text, styles?.text]} ref={ref?.loadingText}>\n {formatText}\n </Text>\n )}\n </TouchableOpacity>\n </View>\n </>\n )\n }\n)\n\nexport default Button\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n button: {\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: R.colors.primary,\n height: 45,\n width: '100%',\n paddingHorizontal: 8,\n },\n buttonDisabled: {\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: R.colors.disabled,\n height: 45,\n width: '100%',\n },\n text: {\n color: R.colors.white,\n fontSize: 18,\n fontWeight: '700',\n },\n})\n","import React, { FC, useEffect, useState } from 'react'\nimport { Image, Pressable, Text, View } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { ICartTimerProps } from './types'\n\nconst CartTimer: FC<ICartTimerProps> = ({\n shouldNotMinimize,\n texts,\n styles,\n secondsLeft,\n}) => {\n const [isOnlyTimeVisible, setIsOnlyTimeVisible] = useState(false)\n const hideOtherData = () => {\n if (!shouldNotMinimize) {\n setIsOnlyTimeVisible(!isOnlyTimeVisible)\n }\n }\n const [timeRemaining, setTimeRemaining] = useState('')\n\n const message = texts?.message\n ? texts.message\n : 'Please complete your purchase before the timer reaches zero:'\n\n useEffect(() => {\n const clockify = () => {\n //let hours = Math.floor(secondsLeft / 60 / 60)\n const mins = Math.floor((secondsLeft / 60) % 60)\n const seconds = Math.floor(secondsLeft % 60)\n //let displayHours = hours < 10 ? `0${hours}` : hours\n const displayMins = mins < 10 ? `0${mins}` : mins\n const displaySecs = seconds < 10 ? `0${seconds}` : seconds\n\n setTimeRemaining(`${displayMins}:${displaySecs}`)\n }\n\n clockify()\n }, [secondsLeft])\n\n return (\n <View\n style={[\n s.rootContainer,\n isOnlyTimeVisible && s.rootContainerSmall,\n styles?.rootContainer,\n ]}\n >\n <Pressable onPressOut={hideOtherData}>\n <View style={[s.contentContainer, styles?.contentContainer]}>\n {!isOnlyTimeVisible && (\n <Image source={R.icons.clock} style={[s.icon, styles?.icon]} />\n )}\n <View style={[s.textsContainer, styles?.textsContainer]}>\n {!isOnlyTimeVisible && (\n <Text style={[s.message, styles?.message]}>{message}</Text>\n )}\n <Text style={[s.time, isOnlyTimeVisible && s.timeOnlyVisible, styles?.time]}>\n {timeRemaining}\n </Text>\n </View>\n </View>\n </Pressable>\n </View>\n )\n}\n\nexport default CartTimer\n","import { Dimensions, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst { width: sWidth } = Dimensions.get('window')\n\nexport default StyleSheet.create({\n rootContainer: {\n backgroundColor: R.colors.timerBackground,\n position: 'absolute',\n right: 0,\n top: 40,\n width: sWidth / 1.5,\n borderRadius: 2,\n padding: 8,\n elevation: 3,\n shadowOffset: { width: -3, height: 3 },\n shadowColor: R.colors.black,\n shadowOpacity: 0.2,\n shadowRadius: 3,\n },\n rootContainerSmall: {\n width: sWidth / 5,\n },\n contentContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n flex: 1,\n },\n icon: {\n width: 16,\n height: 16,\n resizeMode: 'contain',\n marginRight: 8,\n },\n textsContainer: { flex: 1 },\n message: { marginBottom: 4 },\n time: {\n fontWeight: '800',\n },\n timeOnlyVisible: {\n alignSelf: 'center',\n },\n})\n","import React from 'react'\nimport { Image, StyleProp, Text, TouchableOpacity, View, ViewStyle } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { ICheckboxProps } from './types'\n\nconst Checkbox = ({\n onPress,\n text,\n styles,\n isActive,\n customTextComp,\n error,\n}: ICheckboxProps) => {\n let indicatorStyles: StyleProp<ViewStyle> = isActive\n ? [s.indicatorOn, styles?.indicator]\n : [s.indicator, styles?.indicatorDisabled]\n\n if (error) {\n indicatorStyles = [...indicatorStyles, { borderColor: styles?.errorColor }]\n }\n\n return (\n <TouchableOpacity\n onPress={onPress}\n activeOpacity={0.8}\n style={[s.container, styles?.container]}\n >\n <>\n <View style={[s.content, styles?.content]}>\n <View style={indicatorStyles}>\n {isActive && <Image source={R.icons.check} style={[s.check, styles?.icon]} />}\n </View>\n {customTextComp || (\n <Text\n style={[\n s.textContainer,\n styles?.text,\n !!error && { color: styles?.errorColor },\n ]}\n >\n {text}\n </Text>\n )}\n </View>\n {!!error && <Text style={styles?.error}>{error}</Text>}\n </>\n </TouchableOpacity>\n )\n}\n\nexport default Checkbox\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n container: {\n marginBottom: 24,\n },\n content: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n indicator: {\n width: 24,\n height: 24,\n borderRadius: 5,\n borderWidth: 1,\n backgroundColor: R.colors.transparent,\n marginRight: 16,\n justifyContent: 'center',\n alignItems: 'center',\n },\n indicatorOn: {\n width: 24,\n height: 24,\n borderRadius: 5,\n borderWidth: 1,\n backgroundColor: R.colors.primary,\n marginRight: 16,\n justifyContent: 'center',\n alignItems: 'center',\n },\n check: {\n width: '60%',\n height: '60%',\n tintColor: R.colors.white,\n },\n textContainer: {\n flex: 1,\n },\n})\n","import React, { useState } from 'react'\nimport { Pressable, StyleSheet, View } from 'react-native'\nimport DateTimePickerModal from 'react-native-modal-datetime-picker'\n\nimport Input from '../input/Input'\nimport s from './styles'\nimport { IDatePickerProps } from './types'\n\nconst DatePicker = ({\n onSelectDate,\n onCancel,\n styles,\n text = 'Select date',\n selectedDate,\n placeholder = 'Select date',\n error,\n}: IDatePickerProps) => {\n const [isVisible, setIsVisible] = useState(false)\n const onButtonPress = () => {\n setIsVisible(true)\n }\n\n const handleOnSelectDate = (date: Date) => {\n if (onSelectDate) {\n onSelectDate(date)\n }\n setIsVisible(false)\n }\n\n const handleOnCancel = () => {\n if (onCancel) {\n onCancel()\n }\n setIsVisible(false)\n }\n\n // Format date in a more readable way\n const formatDate = (date: Date) => {\n if (!date) return ''\n // Format as MM/DD/YYYY\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const year = date.getFullYear()\n return `${month}/${day}/${year}`\n }\n\n return (\n <View style={[styles?.container, s.container]}>\n <Input\n label={text}\n value={selectedDate ? formatDate(selectedDate) : ''}\n placeholder={placeholder}\n pointerEvents=\"none\"\n editable={false} // Prevent keyboard from showing\n error={error}\n styles={{\n container: styles?.inputContainer,\n input: styles?.input,\n fieldWrapper: styles?.fieldWrapper,\n baseColor: styles?.baseColor,\n errorColor: styles?.errorColor,\n }}\n />\n <Pressable\n style={StyleSheet.absoluteFill} // covers the whole field\n onPress={onButtonPress}\n />\n <DateTimePickerModal\n isVisible={isVisible}\n mode=\"date\"\n onConfirm={handleOnSelectDate}\n onCancel={handleOnCancel}\n date={selectedDate || new Date()}\n maximumDate={new Date()}\n pickerComponentStyleIOS={{ height: 200 }}\n />\n </View>\n )\n}\n\nexport default DatePicker\n","//@ts-nocheck\n\nimport React from 'react'\nimport { Image, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { IInputProps } from './types'\nimport { OutlinedTextField } from '../../packages/rn-material-ui-textfield'\n\nconst Input = (props: IInputProps) => {\n const {\n id,\n value,\n onTextChanged,\n onChangeText,\n reference,\n label,\n styles,\n isShowPasswordButtonVisible,\n showPasswordImages,\n secureTextEntry,\n } = props\n const mainColor = styles?.baseColor ? styles.baseColor : styles?.color || R.colors.black\n\n const showPasswordImage = showPasswordImages?.show || R.icons.eye\n const hidePasswordImage = showPasswordImages?.hide || R.icons.eyeOff\n const [isShowingPassword, setIsShowingPassword] = React.useState(false)\n\n const handleOnPressShowPassword = () => {\n setIsShowingPassword(!isShowingPassword)\n }\n\n const showPasswordButton = () => {\n return (\n isShowPasswordButtonVisible &&\n secureTextEntry && (\n <TouchableOpacity onPress={handleOnPressShowPassword} activeOpacity={0.8}>\n <Image\n source={isShowingPassword ? hidePasswordImage : showPasswordImage}\n style={[s.showPasswordIcon, styles?.showPasswordIcon]}\n />\n </TouchableOpacity>\n )\n )\n }\n\n return (\n <View style={[s.container, styles?.container]}>\n <OutlinedTextField\n placeholderTextColor={styles?.placeholderColor}\n // inputRef={reference}\n value={value}\n onChangeText={(text: string) =>\n id && onTextChanged ? onTextChanged(id, text) : onChangeText\n }\n label={label}\n tintColor={mainColor}\n containerStyle={[s.fieldWrapper, styles?.fieldWrapper]}\n baseColor={mainColor}\n activeLineWidth={styles?.activeLineWidth || 1}\n lineWidth={styles?.lineWidth || 1}\n textContentType={props.isSecure ? 'oneTimeCode' : 'none'}\n autoCorrect={false}\n style={styles?.input}\n errorColor={styles?.errorColor}\n secureTextEntry={secureTextEntry && !isShowingPassword}\n renderRightAccessory={showPasswordButton}\n // // 👇 ADDED/MODIFIED LINE: Explicitly set contentInset to ensure alignment\n // // contentInset={{ left: 12, top: 10, label: 4, input: 8, right: 12 }}\n {...props}\n />\n </View>\n )\n}\n\nexport default Input\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst LEFT_ICON_SIZE = 22\nconst TEXT_LEFT_MARGIN = LEFT_ICON_SIZE + 10\nconst FONT_SIZE = 16\n\nexport default StyleSheet.create({\n container: {\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n marginBottom: 16,\n },\n textLabelFocused: {\n color: R.colors.primary,\n fontSize: 14,\n },\n textLabelFocusedError: {\n color: R.colors.danger,\n fontSize: 14,\n },\n textLabel: {\n color: R.colors.primary,\n fontSize: FONT_SIZE,\n },\n textValue: {\n color: R.colors.white,\n fontSize: FONT_SIZE,\n marginLeft: TEXT_LEFT_MARGIN,\n marginBottom: -2,\n },\n textValueWithoutIcon: {\n color: R.colors.white,\n fontSize: FONT_SIZE,\n marginLeft: 0,\n marginBottom: -2,\n },\n fieldWrapper: {\n flex: 1,\n },\n error: {\n color: R.colors.danger,\n fontSize: 14,\n marginTop: -4,\n },\n showPasswordIcon: {\n tintColor: 'black',\n width: 24,\n height: 24,\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { View, TextInput, Animated, StyleSheet, Platform } from 'react-native'\nimport {\n TextPropTypes,\n ViewPropTypes,\n TextInputPropTypes,\n} from 'deprecated-react-native-prop-types'\n\nimport Line from '../line'\nimport Label from '../label'\nimport Affix from '../affix'\nimport Helper from '../helper'\nimport Counter from '../counter'\n\nimport styles from './styles'\n\nfunction startAnimation(animation, options, callback) {\n Animated.timing(animation, options).start(callback)\n}\n\nfunction labelStateFromProps(props, state) {\n const { placeholder, defaultValue } = props\n const { value, receivedFocus } = state\n\n return !!(placeholder || value || (!receivedFocus && defaultValue))\n}\n\nfunction errorStateFromProps(props, state) {\n const { error } = props\n\n return !!error\n}\n\nexport default class TextField extends PureComponent {\n static defaultProps = {\n underlineColorAndroid: 'transparent',\n disableFullscreenUI: true,\n autoCapitalize: 'sentences',\n editable: true,\n\n animationDuration: 225,\n\n fontSize: 16,\n labelFontSize: 12,\n\n tintColor: 'rgb(0, 145, 234)',\n textColor: 'rgba(0, 0, 0, .87)',\n baseColor: 'rgba(0, 0, 0, .38)',\n\n errorColor: 'rgb(213, 0, 0)',\n\n lineWidth: StyleSheet.hairlineWidth,\n activeLineWidth: 2,\n disabledLineWidth: 1,\n\n lineType: 'solid',\n disabledLineType: 'dotted',\n\n disabled: false,\n }\n\n static propTypes = {\n ...TextInputPropTypes,\n\n animationDuration: PropTypes.number,\n\n fontSize: PropTypes.number,\n labelFontSize: PropTypes.number,\n\n contentInset: PropTypes.shape({\n top: PropTypes.number,\n label: PropTypes.number,\n input: PropTypes.number,\n left: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n }),\n\n labelOffset: Label.propTypes.offset,\n\n labelTextStyle: TextPropTypes.style,\n titleTextStyle: TextPropTypes.style,\n affixTextStyle: TextPropTypes.style,\n\n tintColor: PropTypes.string,\n textColor: PropTypes.string,\n baseColor: PropTypes.string,\n\n label: PropTypes.string,\n title: PropTypes.string,\n\n characterRestriction: PropTypes.number,\n\n error: PropTypes.string,\n errorColor: PropTypes.string,\n\n lineWidth: PropTypes.number,\n activeLineWidth: PropTypes.number,\n disabledLineWidth: PropTypes.number,\n\n lineType: Line.propTypes.lineType,\n disabledLineType: Line.propTypes.lineType,\n\n disabled: PropTypes.bool,\n\n formatText: PropTypes.func,\n\n renderLeftAccessory: PropTypes.func,\n renderRightAccessory: PropTypes.func,\n\n prefix: PropTypes.string,\n suffix: PropTypes.string,\n\n containerStyle: ViewPropTypes.style,\n inputContainerStyle: ViewPropTypes.style,\n }\n\n static inputContainerStyle = styles.inputContainer\n\n static contentInset = {\n top: 16,\n label: 4,\n input: 8,\n left: 0,\n right: 0,\n bottom: 8,\n }\n\n static labelOffset = {\n x0: 0,\n y0: 0,\n x1: 0,\n y1: 0,\n }\n\n static getDerivedStateFromProps({ error, value }, state) {\n const newState = {}\n /* Keep last received error in state */\n if (error && error !== state.error) {\n newState.error = error\n }\n\n if (value !== undefined && value !== state.value) {\n newState.value = value\n }\n\n return newState\n }\n\n constructor(props) {\n super(props)\n\n this.onBlur = this.onBlur.bind(this)\n this.onFocus = this.onFocus.bind(this)\n this.onPress = this.focus.bind(this)\n this.onChange = this.onChange.bind(this)\n this.onChangeText = this.onChangeText.bind(this)\n this.onContentSizeChange = this.onContentSizeChange.bind(this)\n this.onFocusAnimationEnd = this.onFocusAnimationEnd.bind(this)\n\n this.createGetter('contentInset')\n this.createGetter('labelOffset')\n\n this.inputRef = this.props.inputRef ?? React.createRef()\n this.mounted = false\n this.focused = false\n\n const { value, error, fontSize } = this.props\n\n const labelState = labelStateFromProps(this.props, { value }) ? 1 : 0\n const focusState = errorStateFromProps(this.props) ? -1 : 0\n\n this.state = {\n value,\n error,\n\n focusAnimation: new Animated.Value(focusState),\n labelAnimation: new Animated.Value(labelState),\n\n receivedFocus: false,\n\n height: fontSize * 1.5,\n }\n }\n\n createGetter(name) {\n this[name] = () => {\n const { [name]: value } = this.props\n const { [name]: defaultValue } = this.constructor\n\n return { ...defaultValue, ...value }\n }\n }\n\n componentDidMount() {\n this.mounted = true\n }\n\n componentWillUnmount() {\n this.mounted = false\n }\n\n componentDidUpdate(prevProps, prevState) {\n const errorState = errorStateFromProps(this.props)\n const prevErrorState = errorStateFromProps(prevProps)\n\n if (errorState ^ prevErrorState) {\n this.startFocusAnimation()\n }\n\n const labelState = labelStateFromProps(this.props, this.state)\n const prevLabelState = labelStateFromProps(prevProps, prevState)\n\n if (labelState ^ prevLabelState) {\n this.startLabelAnimation()\n }\n }\n\n startFocusAnimation() {\n const { focusAnimation } = this.state\n const { animationDuration: duration } = this.props\n\n const options = {\n toValue: this.focusState(),\n duration,\n useNativeDriver: false,\n }\n\n startAnimation(focusAnimation, options, this.onFocusAnimationEnd)\n }\n\n startLabelAnimation() {\n const { labelAnimation } = this.state\n const { animationDuration: duration } = this.props\n\n const options = {\n toValue: this.labelState(),\n useNativeDriver: true,\n duration,\n }\n\n startAnimation(labelAnimation, options)\n }\n\n setNativeProps(props) {\n const { current: input } = this.inputRef\n\n input.setNativeProps(props)\n }\n\n focusState() {\n if (errorStateFromProps(this.props)) {\n return -1\n }\n\n return this.focused ? 1 : 0\n }\n\n labelState() {\n if (labelStateFromProps(this.props, this.state)) {\n return 1\n }\n\n return this.focused ? 1 : 0\n }\n\n focus() {\n const { disabled, editable } = this.props\n const { current: input } = this.inputRef\n\n if (!disabled && editable) {\n input.focus()\n }\n }\n\n blur() {\n const { current: input } = this.inputRef\n\n input.blur()\n }\n\n clear() {\n const { current: input } = this.inputRef\n\n input.clear()\n\n /* onChangeText is not triggered by .clear() */\n this.onChangeText('')\n }\n\n value() {\n const { defaultValue } = this.props\n\n const value = this.isDefaultVisible() ? defaultValue : this.state.value\n\n if (value == null) {\n return ''\n }\n\n return typeof value === 'string' ? value : String(value)\n }\n\n setValue(value) {\n this.setState({ value })\n }\n\n isFocused() {\n const { current: input } = this.inputRef\n\n return input.isFocused()\n }\n\n isRestricted() {\n const { characterRestriction: limit } = this.props\n const { length: count } = this.value()\n\n return limit < count\n }\n\n isErrored() {\n return errorStateFromProps(this.props)\n }\n\n isDefaultVisible() {\n const { value, receivedFocus } = this.state\n const { defaultValue } = this.props\n\n return !receivedFocus && value == null && defaultValue != null\n }\n\n isPlaceholderVisible() {\n const { placeholder } = this.props\n\n return placeholder && !this.focused && !this.value()\n }\n\n isLabelActive() {\n return this.labelState() === 1\n }\n\n onFocus(event) {\n const { onFocus, clearTextOnFocus } = this.props\n const { receivedFocus } = this.state\n\n if (typeof onFocus === 'function') {\n onFocus(event)\n }\n\n if (clearTextOnFocus) {\n this.clear()\n }\n\n this.focused = true\n\n this.startFocusAnimation()\n this.startLabelAnimation()\n\n if (!receivedFocus) {\n this.setState({ receivedFocus: true, value: this.value() })\n }\n }\n\n onBlur(event) {\n const { onBlur } = this.props\n\n if (typeof onBlur === 'function') {\n onBlur(event)\n }\n\n this.focused = false\n\n this.startFocusAnimation()\n this.startLabelAnimation()\n }\n\n onChange(event) {\n const { onChange } = this.props\n\n if (typeof onChange === 'function') {\n onChange(event)\n }\n }\n\n onChangeText(text) {\n const { onChangeText, formatText } = this.props\n\n if (typeof formatText === 'function') {\n text = formatText(text)\n }\n\n this.setState({ value: text })\n\n if (typeof onChangeText === 'function') {\n onChangeText(text)\n }\n }\n\n onContentSizeChange(event) {\n const { onContentSizeChange, fontSize } = this.props\n const { height } = event.nativeEvent.contentSize\n\n if (typeof onContentSizeChange === 'function') {\n onContentSizeChange(event)\n }\n\n this.setState({\n height: Math.max(\n fontSize * 1.5,\n Math.ceil(height) + Platform.select({ ios: 4, android: 1 })\n ),\n })\n }\n\n onFocusAnimationEnd() {\n const { error } = this.props\n const { error: retainedError } = this.state\n\n if (this.mounted && !error && retainedError) {\n this.setState({ error: null })\n }\n }\n\n inputHeight() {\n const { height: computedHeight } = this.state\n const { multiline, fontSize, height = computedHeight } = this.props\n\n return multiline ? height : fontSize * 1.5\n }\n\n inputContainerHeight() {\n const { labelFontSize, multiline } = this.props\n const contentInset = this.contentInset()\n\n if (Platform.OS === 'web' && multiline) {\n return 'auto'\n }\n\n return (\n contentInset.top +\n labelFontSize +\n contentInset.label +\n this.inputHeight() +\n contentInset.input\n )\n }\n\n inputProps() {\n const store = {}\n\n for (const key in TextInputPropTypes) {\n if (key === 'defaultValue') {\n continue\n }\n\n if (key in this.props) {\n store[key] = this.props[key]\n }\n }\n\n return store\n }\n\n inputStyle() {\n const { fontSize, baseColor, textColor, disabled, multiline } = this.props\n\n const color = disabled || this.isDefaultVisible() ? baseColor : textColor\n\n const style = {\n fontSize,\n color,\n\n height: this.inputHeight(),\n }\n\n if (multiline) {\n const lineHeight = fontSize * 1.5\n const offset = Platform.OS === 'ios' ? 2 : 0\n\n style.height += lineHeight\n style.transform = [\n {\n translateY: lineHeight + offset,\n },\n ]\n }\n\n return style\n }\n\n renderLabel(props) {\n const offset = this.labelOffset()\n\n const { label, fontSize, labelFontSize, labelTextStyle } = this.props\n\n return (\n <Label\n {...props}\n fontSize={fontSize}\n activeFontSize={labelFontSize}\n offset={offset}\n label={label}\n style={labelTextStyle}\n />\n )\n }\n\n renderLine(props) {\n return <Line {...props} />\n }\n\n renderAccessory(prop) {\n const { [prop]: renderAccessory } = this.props\n\n return typeof renderAccessory === 'function' ? renderAccessory() : null\n }\n\n renderAffix(type) {\n const { labelAnimation } = this.state\n const {\n [type]: affix,\n fontSize,\n baseColor: color,\n affixTextStyle: style,\n } = this.props\n\n if (affix == null) {\n return null\n }\n\n const props = {\n type,\n style,\n color,\n fontSize,\n labelAnimation,\n }\n\n return <Affix {...props}>{affix}</Affix>\n }\n\n renderHelper() {\n const { focusAnimation, error } = this.state\n\n const {\n title,\n disabled,\n baseColor,\n errorColor,\n titleTextStyle: style,\n characterRestriction: limit,\n } = this.props\n\n const { length: count } = this.value()\n const contentInset = this.contentInset()\n\n const containerStyle = {\n paddingLeft: contentInset.left,\n paddingRight: contentInset.right,\n minHeight: contentInset.bottom,\n }\n\n const styleProps = {\n style,\n baseColor,\n errorColor,\n }\n\n const counterProps = {\n ...styleProps,\n limit,\n count,\n }\n\n const helperProps = {\n ...styleProps,\n title,\n error,\n disabled,\n focusAnimation,\n }\n\n return (\n <View style={[styles.helperContainer, containerStyle]}>\n <Helper {...helperProps} />\n <Counter {...counterProps} />\n </View>\n )\n }\n\n renderInput() {\n const { disabled, editable, tintColor, style: inputStyleOverrides } = this.props\n\n const props = this.inputProps()\n const inputStyle = this.inputStyle()\n\n return (\n <TextInput\n selectionColor={tintColor}\n {...props}\n style={[styles.input, inputStyle, inputStyleOverrides]}\n editable={!disabled && editable}\n onChange={this.onChange}\n onChangeText={this.onChangeText}\n onContentSizeChange={this.onContentSizeChange}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n value={this.value()}\n ref={this.inputRef}\n />\n )\n }\n\n render() {\n const { labelAnimation, focusAnimation } = this.state\n const {\n editable,\n disabled,\n lineType,\n disabledLineType,\n lineWidth,\n activeLineWidth,\n disabledLineWidth,\n tintColor,\n baseColor,\n errorColor,\n containerStyle,\n inputContainerStyle: inputContainerStyleOverrides,\n } = this.props\n\n const restricted = this.isRestricted()\n const contentInset = this.contentInset()\n\n const inputContainerStyle = {\n paddingTop: contentInset.top,\n paddingRight: contentInset.right,\n paddingBottom: contentInset.input,\n paddingLeft: contentInset.left,\n height: this.inputContainerHeight(),\n }\n\n const containerProps = {\n style: containerStyle,\n onStartShouldSetResponder: () => true,\n onResponderRelease: this.onPress,\n pointerEvents: !disabled ? 'auto' : 'none',\n }\n\n const inputContainerProps = {\n style: [\n this.constructor.inputContainerStyle,\n inputContainerStyle,\n inputContainerStyleOverrides,\n ],\n }\n\n const styleProps = {\n disabled,\n restricted,\n baseColor,\n tintColor,\n errorColor,\n\n contentInset,\n\n focusAnimation,\n labelAnimation,\n }\n\n const lineProps = {\n ...styleProps,\n\n lineWidth,\n activeLineWidth,\n disabledLineWidth,\n\n lineType,\n disabledLineType,\n }\n\n return (\n <View {...containerProps}>\n <Animated.View {...inputContainerProps}>\n {this.renderLine(lineProps)}\n {this.renderAccessory('renderLeftAccessory')}\n <View style={styles.stack} pointerEvents={editable ? 'auto' : 'none'}>\n {this.renderLabel(styleProps)}\n <View style={styles.row}>\n {this.renderAffix('prefix')}\n {this.renderInput()}\n {this.renderAffix('suffix')}\n </View>\n </View>\n {this.renderAccessory('renderRightAccessory')}\n </Animated.View>\n {this.renderHelper()}\n </View>\n )\n }\n}\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { View, Animated } from 'react-native'\n\nimport styles from './styles'\n\nconst lineTypes = PropTypes.oneOf(['solid', 'dotted', 'dashed', 'none'])\n\nexport default class Line extends PureComponent {\n static defaultProps = {\n lineType: 'solid',\n disabledLineType: 'dotted',\n\n disabled: false,\n restricted: false,\n }\n\n static propTypes = {\n lineType: lineTypes,\n disabledLineType: lineTypes,\n\n disabled: PropTypes.bool,\n restricted: PropTypes.bool,\n\n tintColor: PropTypes.string,\n baseColor: PropTypes.string,\n errorColor: PropTypes.string,\n\n lineWidth: PropTypes.number,\n activeLineWidth: PropTypes.number,\n disabledLineWidth: PropTypes.number,\n\n focusAnimation: PropTypes.instanceOf(Animated.Value),\n }\n\n static getDerivedStateFromProps(props, state) {\n const { lineWidth, activeLineWidth, disabledLineWidth } = props\n\n const maxLineWidth = Math.max(lineWidth, activeLineWidth, disabledLineWidth, 1)\n\n if (maxLineWidth !== state.maxLineWidth) {\n return { maxLineWidth }\n }\n\n return null\n }\n\n state = { maxLineWidth: 1 }\n\n borderProps() {\n const {\n disabled,\n restricted,\n lineWidth,\n activeLineWidth,\n disabledLineWidth,\n baseColor,\n tintColor,\n errorColor,\n focusAnimation,\n } = this.props\n\n if (disabled) {\n return {\n borderColor: baseColor,\n borderWidth: disabledLineWidth,\n }\n }\n\n if (restricted) {\n return {\n borderColor: errorColor,\n borderWidth: activeLineWidth,\n }\n }\n\n return {\n borderColor: focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [errorColor, baseColor, tintColor],\n }),\n\n borderWidth: focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [activeLineWidth, lineWidth, activeLineWidth],\n }),\n }\n }\n\n render() {\n const { maxLineWidth } = this.state\n const { disabled, lineType, disabledLineType } = this.props\n\n const borderStyle = disabled ? disabledLineType : lineType\n\n if (borderStyle === 'none') {\n return null\n }\n\n const [top, right, left] = Array.from(new Array(3), () => -1.5 * maxLineWidth)\n\n const lineStyle = {\n ...this.borderProps(),\n\n borderStyle,\n top,\n right,\n left,\n }\n\n return (\n <View style={styles.container} pointerEvents=\"none\">\n <Animated.View style={[styles.line, lineStyle]} />\n </View>\n )\n }\n}\n","import { StyleSheet, Platform } from 'react-native'\n\nexport default StyleSheet.create({\n line: {\n position: 'absolute',\n bottom: 0,\n\n ...Platform.select({\n android: { borderRadius: Number.EPSILON },\n }),\n },\n\n container: {\n ...StyleSheet.absoluteFillObject,\n\n overflow: 'hidden',\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { Animated } from 'react-native'\nimport { TextPropTypes } from 'deprecated-react-native-prop-types'\n\nimport styles from './styles'\n\nexport default class Label extends PureComponent {\n static defaultProps = {\n numberOfLines: 1,\n disabled: false,\n restricted: false,\n }\n\n static propTypes = {\n numberOfLines: PropTypes.number,\n\n disabled: PropTypes.bool,\n restricted: PropTypes.bool,\n\n fontSize: PropTypes.number.isRequired,\n activeFontSize: PropTypes.number.isRequired,\n\n baseColor: PropTypes.string.isRequired,\n tintColor: PropTypes.string.isRequired,\n errorColor: PropTypes.string.isRequired,\n\n focusAnimation: PropTypes.instanceOf(Animated.Value).isRequired,\n\n labelAnimation: PropTypes.instanceOf(Animated.Value).isRequired,\n\n contentInset: PropTypes.shape({\n label: PropTypes.number,\n }),\n\n offset: PropTypes.shape({\n x0: PropTypes.number,\n y0: PropTypes.number,\n x1: PropTypes.number,\n y1: PropTypes.number,\n }),\n\n style: TextPropTypes.style,\n label: PropTypes.string,\n }\n\n render() {\n const {\n label,\n offset,\n disabled,\n restricted,\n fontSize,\n activeFontSize,\n contentInset,\n errorColor,\n baseColor,\n tintColor,\n style,\n focusAnimation,\n labelAnimation,\n ...props\n } = this.props\n\n if (label == null) {\n return null\n }\n\n const color = disabled\n ? baseColor\n : restricted\n ? errorColor\n : focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [errorColor, baseColor, tintColor],\n })\n\n const textStyle = {\n lineHeight: style?.lineHeight || fontSize,\n fontSize,\n color,\n }\n\n let { x0, y0, x1, y1 } = offset\n\n y0 += activeFontSize\n y0 += contentInset.label\n y0 += fontSize * 0.25\n\n const scale = labelAnimation.interpolate({\n inputRange: [0, 1],\n outputRange: [1, activeFontSize / fontSize],\n })\n\n const containerStyle = {\n transform: [\n {\n translateX: labelAnimation.interpolate({\n inputRange: [0, 1],\n outputRange: [x0, x1],\n }),\n },\n {\n translateY: labelAnimation.interpolate({\n inputRange: [0, 1],\n outputRange: [y0, y1],\n }),\n },\n {\n scale,\n },\n ],\n }\n\n return (\n <Animated.View style={[styles.container, containerStyle]}>\n <Animated.Text style={[styles.text, style, textStyle]} {...props}>\n {label}\n </Animated.Text>\n </Animated.View>\n )\n }\n}\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n container: {\n position: 'absolute',\n top: 0,\n transformOrigin: 'left',\n transform: [{ translateX: '-50%' }],\n },\n\n text: {\n textAlign: 'left',\n includeFontPadding: false,\n textAlignVertical: 'top',\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { Animated } from 'react-native'\nimport { TextPropTypes } from 'deprecated-react-native-prop-types'\n\nimport styles from './styles'\n\nexport default class Affix extends PureComponent {\n static defaultProps = {\n numberOfLines: 1,\n }\n\n static propTypes = {\n numberOfLines: PropTypes.number,\n style: TextPropTypes.style,\n\n color: PropTypes.string.isRequired,\n fontSize: PropTypes.number.isRequired,\n\n type: PropTypes.oneOf(['prefix', 'suffix']).isRequired,\n\n labelAnimation: PropTypes.instanceOf(Animated.Value).isRequired,\n\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n }\n\n render() {\n const { labelAnimation, style, children, type, fontSize, color } = this.props\n\n const containerStyle = {\n height: fontSize * 1.5,\n opacity: labelAnimation,\n }\n\n const textStyle = {\n includeFontPadding: false,\n textAlignVertical: 'top',\n\n fontSize,\n color,\n }\n\n switch (type) {\n case 'prefix':\n containerStyle.paddingRight = 8\n textStyle.textAlign = 'left'\n break\n\n case 'suffix':\n containerStyle.paddingLeft = 8\n textStyle.textAlign = 'right'\n break\n }\n\n return (\n <Animated.View style={[styles.container, containerStyle]}>\n <Animated.Text style={[style, textStyle]}>{children}</Animated.Text>\n </Animated.View>\n )\n }\n}\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n container: {\n top: 2,\n justifyContent: 'center',\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { Animated } from 'react-native'\nimport { TextPropTypes } from 'deprecated-react-native-prop-types'\n\nimport styles from './styles'\n\nexport default class Helper extends PureComponent {\n static propTypes = {\n title: PropTypes.string,\n error: PropTypes.string,\n disabled: PropTypes.bool,\n style: TextPropTypes.style,\n baseColor: PropTypes.string,\n errorColor: PropTypes.string,\n focusAnimation: PropTypes.instanceOf(Animated.Value),\n }\n\n constructor(props) {\n super(props)\n\n const { error, focusAnimation } = this.props\n\n const opacity = focusAnimation.interpolate({\n inputRange: [-1, -0.5, 0],\n outputRange: [1, 0, 1],\n extrapolate: 'clamp',\n })\n\n this.state = {\n errored: !!error,\n opacity,\n }\n }\n\n componentDidMount() {\n const { focusAnimation } = this.props\n\n this.listener = focusAnimation.addListener(this.onAnimation.bind(this))\n }\n\n componentWillUnmount() {\n const { focusAnimation } = this.props\n\n focusAnimation.removeListener(this.listener)\n }\n\n onAnimation({ value }) {\n if (this.animationValue > -0.5 && value <= -0.5) {\n this.setState({ errored: true })\n }\n\n if (this.animationValue < -0.5 && value >= -0.5) {\n this.setState({ errored: false })\n }\n\n this.animationValue = value\n }\n\n render() {\n const { errored, opacity } = this.state\n const { style, title, error, disabled, baseColor, errorColor } = this.props\n\n const text = errored ? error : title\n\n if (text == null) {\n return null\n }\n\n const textStyle = {\n opacity,\n\n color: !disabled && errored ? errorColor : baseColor,\n }\n\n return <Animated.Text style={[styles.text, style, textStyle]}>{text}</Animated.Text>\n }\n}\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n text: {\n flex: 1,\n fontSize: 12,\n lineHeight: 16,\n backgroundColor: 'transparent',\n paddingVertical: 2,\n textAlign: 'left',\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { Text } from 'react-native'\n\nimport styles from './styles'\nimport { TextPropTypes } from 'deprecated-react-native-prop-types'\n\nexport default class Counter extends PureComponent {\n static propTypes = {\n count: PropTypes.number.isRequired,\n limit: PropTypes.number,\n\n baseColor: PropTypes.string.isRequired,\n errorColor: PropTypes.string.isRequired,\n\n style: TextPropTypes.style,\n }\n\n render() {\n const { count, limit, baseColor, errorColor, style } = this.props\n\n if (!limit) {\n return null\n }\n\n const textStyle = {\n color: count > limit ? errorColor : baseColor,\n }\n\n return (\n <Text style={[styles.text, style, textStyle]}>\n {count} / {limit}\n </Text>\n )\n }\n}\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n text: {\n fontSize: 12,\n lineHeight: 16,\n textAlign: 'right',\n backgroundColor: 'transparent',\n paddingVertical: 2,\n marginLeft: 8,\n },\n})\n","import { StyleSheet, I18nManager } from 'react-native'\n\nexport default StyleSheet.create({\n inputContainer: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n\n input: {\n top: 2,\n padding: 0,\n paddingTop: 0 /* XXX: iOS has paddingTop set for multiline input */,\n margin: 0,\n flex: 1,\n\n textAlign: I18nManager.isRTL ? 'right' : 'left',\n\n includeFontPadding: false,\n textAlignVertical: 'top',\n },\n\n helperContainer: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n },\n\n row: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n\n stack: {\n flex: 1,\n alignSelf: 'stretch',\n },\n\n flex: {\n flex: 1,\n },\n})\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n inputContainer: {\n borderTopLeftRadius: 4,\n borderTopRightRadius: 4,\n\n backgroundColor: 'rgb(204, 204, 204)',\n },\n})\n","import TextField from '../field'\nimport styles from './styles'\n\nexport default class FilledTextField extends TextField {\n static contentInset = {\n ...TextField.contentInset,\n\n top: 8,\n left: 12,\n right: 12,\n }\n\n static labelOffset = {\n ...TextField.labelOffset,\n\n y0: -10,\n y1: -2,\n }\n\n static inputContainerStyle = [TextField.inputContainerStyle, styles.inputContainer]\n}\n","import React from 'react'\nimport { Animated, StyleSheet } from 'react-native'\n\nimport TextField from '../field'\nimport Outline from '../outline'\n\nexport default class OutlinedTextField extends TextField {\n static contentInset = {\n ...TextField.contentInset,\n\n input: 16,\n\n top: 0,\n left: 12,\n right: 12,\n }\n\n static labelOffset = {\n ...TextField.labelOffset,\n\n y0: 0,\n y1: -10,\n }\n\n static defaultProps = {\n ...TextField.defaultProps,\n\n lineWidth: 1,\n disabledLineWidth: StyleSheet.hairlineWidth,\n }\n\n constructor(props) {\n super(props)\n\n this.onTextLayout = this.onTextLayout.bind(this)\n this.state.labelWidth = new Animated.Value(0)\n }\n\n onTextLayout({ nativeEvent: { lines } }) {\n const { fontSize, labelFontSize } = this.props\n const { labelWidth } = this.state\n\n const scale = labelFontSize / fontSize\n\n labelWidth.setValue(lines[0].width * scale)\n }\n\n renderLabel(props) {\n const { onTextLayout } = this\n\n return super.renderLabel({ ...props, onTextLayout })\n }\n\n renderLine(props) {\n const { labelWidth } = this.state\n\n return <Outline {...props} labelWidth={labelWidth} />\n }\n}\n","import PropTypes from 'prop-types'\nimport React, { Fragment, PureComponent } from 'react'\nimport { View, Animated, I18nManager } from 'react-native'\n\nimport styles, { borderRadius } from './styles'\n\nexport default class Line extends PureComponent {\n static defaultProps = {\n lineType: 'solid',\n disabled: false,\n restricted: false,\n }\n\n static propTypes = {\n lineType: PropTypes.oneOf(['solid', 'none']),\n\n disabled: PropTypes.bool,\n restricted: PropTypes.bool,\n\n tintColor: PropTypes.string,\n baseColor: PropTypes.string,\n errorColor: PropTypes.string,\n\n lineWidth: PropTypes.number,\n activeLineWidth: PropTypes.number,\n disabledLineWidth: PropTypes.number,\n\n focusAnimation: PropTypes.instanceOf(Animated.Value),\n labelAnimation: PropTypes.instanceOf(Animated.Value),\n labelWidth: PropTypes.instanceOf(Animated.Value),\n\n contentInset: PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n }),\n }\n\n borderProps() {\n const {\n disabled,\n restricted,\n lineType,\n lineWidth,\n activeLineWidth,\n disabledLineWidth,\n baseColor,\n tintColor,\n errorColor,\n focusAnimation,\n } = this.props\n\n if (disabled) {\n return {\n borderColor: baseColor,\n borderWidth: disabledLineWidth,\n }\n }\n\n if (restricted) {\n return {\n borderColor: errorColor,\n borderWidth: activeLineWidth,\n }\n }\n\n return {\n borderColor: focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [errorColor, baseColor, tintColor],\n }),\n\n borderWidth: focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [activeLineWidth, lineWidth, activeLineWidth],\n }),\n\n borderStyle: lineType,\n }\n }\n\n render() {\n const { lineType, labelWidth, labelAnimation, contentInset } = this.props\n\n if (lineType === 'none') {\n return null\n }\n\n const labelOffset = 2 * (contentInset.left - 2 * borderRadius)\n const lineOffset = Animated.add(labelWidth, labelOffset)\n\n const topLineContainerStyle = {\n transform: [\n {\n scaleX: I18nManager.isRTL ? -1 : 1,\n },\n {\n translateX: Animated.multiply(labelAnimation, lineOffset),\n },\n ],\n }\n\n const leftContainerStyle = {\n width: contentInset.left - borderRadius,\n }\n\n const rightContainerStyle = {\n width: contentInset.right - borderRadius,\n }\n\n const topContainerStyle = {\n left: leftContainerStyle.width,\n right: rightContainerStyle.width,\n }\n\n const lineStyle = this.borderProps()\n\n return (\n <Fragment>\n <View style={[styles.topContainer, topContainerStyle]} pointerEvents=\"none\">\n <Animated.View style={[styles.topLineContainer, topLineContainerStyle]}>\n <Animated.View style={[styles.borderTop, lineStyle]} />\n </Animated.View>\n </View>\n\n <View style={[styles.rightContainer, rightContainerStyle]} pointerEvents=\"none\">\n <Animated.View style={[styles.borderRight, lineStyle]} />\n </View>\n\n <View style={styles.bottomContainer} pointerEvents=\"none\">\n <Animated.View style={[styles.borderBottom, lineStyle]} />\n </View>\n\n <View style={[styles.leftContainer, leftContainerStyle]} pointerEvents=\"none\">\n <Animated.View style={[styles.borderLeft, lineStyle]} />\n </View>\n </Fragment>\n )\n }\n}\n","import { StyleSheet, Platform } from 'react-native'\n\nexport const borderRadius = 4\n\nconst containerStyle = {\n position: 'absolute',\n overflow: 'hidden',\n}\n\nexport default StyleSheet.create({\n borderLeft: {\n ...StyleSheet.absoluteFillObject,\n borderRadius,\n\n right: -borderRadius,\n bottom: -borderRadius,\n },\n\n borderRight: {\n ...StyleSheet.absoluteFillObject,\n borderRadius,\n\n left: -borderRadius,\n bottom: -borderRadius,\n },\n\n borderBottom: {\n ...StyleSheet.absoluteFillObject,\n borderRadius,\n\n top: -borderRadius,\n\n /* XXX: Android positioning error workaround */\n bottom: StyleSheet.hairlineWidth,\n },\n\n borderTop: {\n ...StyleSheet.absoluteFillObject,\n borderRadius,\n\n left: -borderRadius,\n right: -borderRadius,\n bottom: -borderRadius,\n },\n\n leftContainer: {\n ...containerStyle,\n\n top: 0,\n left: 0,\n width: borderRadius,\n height: borderRadius,\n },\n\n rightContainer: {\n ...containerStyle,\n\n top: 0,\n right: 0,\n height: borderRadius,\n },\n\n bottomContainer: {\n ...containerStyle,\n\n top: borderRadius - (Platform.OS === 'android' ? 0.25 : 0),\n left: 0,\n right: 0,\n bottom: 0,\n },\n\n topContainer: {\n ...containerStyle,\n\n top: 0,\n height: borderRadius,\n },\n\n topLineContainer: {\n ...StyleSheet.absoluteFillObject,\n overflow: 'hidden',\n },\n})\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst FONT_SIZE = 16\n\nexport default StyleSheet.create({\n container: {\n width: '100%',\n position: 'relative',\n },\n label: {\n fontSize: 12,\n color: R.colors.primary,\n marginBottom: 4,\n fontWeight: '400',\n },\n button: {\n width: '100%',\n borderWidth: 1,\n height: 56,\n alignItems: 'flex-start',\n justifyContent: 'center',\n paddingHorizontal: 12,\n borderColor: '#bdbdbd',\n borderRadius: 4,\n backgroundColor: 'transparent',\n },\n text: {\n fontSize: FONT_SIZE,\n paddingVertical: 8,\n color: '#000000',\n },\n error: {\n color: R.colors.danger,\n fontSize: 12,\n marginTop: 4,\n },\n})\n","//@ts-nocheck\n\nimport React, { MutableRefObject, useCallback, useEffect, useRef, useState } from 'react'\nimport {\n FlatList,\n Image,\n Modal,\n Text,\n TouchableOpacity,\n TouchableWithoutFeedback,\n View,\n} from 'react-native'\n\nimport R from '../../res'\nimport Separator from '../separator/Separator'\nimport DropdownListItem from './DropdownListItem'\nimport { DropdownStyles as s } from './styles'\nimport { IDropdownItem, IDropdownProps } from './types'\n\nconst Dropdown = ({ items, selectedOption, onSelectItem, styles }: IDropdownProps) => {\n const [isModalVisible, setIsModalVisible] = useState(false)\n const flatListRef: MutableRefObject<FlatList> = useRef()\n\n const showModal = () => {\n requestAnimationFrame(() => {\n setIsModalVisible(true)\n })\n }\n const hideModal = () => {\n requestAnimationFrame(() => {\n setIsModalVisible(false)\n })\n }\n\n const handleOnSelectItem = (item: IDropdownItem) => {\n onSelectItem(item)\n hideModal()\n }\n\n useEffect(() => {\n if (flatListRef?.current) {\n flatListRef.current.flashScrollIndicators()\n }\n }, [isModalVisible])\n\n const renderItem = useCallback(\n ({ item }) => (\n <DropdownListItem\n item={item}\n onSelectItem={handleOnSelectItem}\n selectedOption={selectedOption}\n styles={styles?.listItem}\n />\n ),\n\n [handleOnSelectItem, selectedOption]\n )\n\n const keyExtractor = useCallback((item: IDropdownItem) => item.value.toString(), [])\n\n const renderSeparator = useCallback(() => <Separator />, [])\n\n const getItemLayout = useCallback(\n (data, index) => ({\n length: 45,\n offset: 45 * index,\n index,\n }),\n []\n )\n\n return (\n <View style={[s.rootContainer, styles?.container]}>\n <TouchableOpacity onPress={showModal} style={[s.button, styles?.button]}>\n <Text style={[s.label, styles?.label]}>{selectedOption?.label}</Text>\n <Image source={R.icons.dropdown} style={[s.icon, styles?.icon]} />\n </TouchableOpacity>\n {isModalVisible && items.length > 0 && (\n <Modal presentationStyle=\"overFullScreen\" transparent={true}>\n <View style={s.modalContainer}>\n <TouchableOpacity\n activeOpacity={1}\n onPress={hideModal}\n style={s.modalBackgroundTouchable}\n >\n <TouchableWithoutFeedback>\n <View style={[s.dialog, styles?.dialog]}>\n <FlatList\n keyExtractor={keyExtractor}\n ref={flatListRef}\n indicatorStyle=\"black\"\n data={items}\n extraData={items}\n maxToRenderPerBatch={6}\n initialNumToRender={6}\n renderItem={renderItem}\n ItemSeparatorComponent={renderSeparator}\n getItemLayout={getItemLayout}\n style={[s.flatListContainer, styles?.flatListContainer]}\n />\n </View>\n </TouchableWithoutFeedback>\n </TouchableOpacity>\n </View>\n </Modal>\n )}\n </View>\n )\n}\n\nexport default Dropdown\n","import React from 'react'\nimport { View } from 'react-native'\n\nimport { ISeparatorProps } from './types'\n\nconst Separator = ({\n color,\n height,\n width,\n marginLeft,\n marginVertical,\n}: ISeparatorProps) => {\n return (\n <View\n style={{\n height: height || 1,\n backgroundColor: color || '#DEDEDE',\n width: width || '99%',\n marginLeft: marginLeft || '0.5%',\n marginVertical: marginVertical,\n }}\n />\n )\n}\n\nexport default Separator\n","import React from 'react'\nimport { Text, TouchableOpacity, View } from 'react-native'\n\nimport { DropdownListItemStyles as s } from './styles'\nimport { IDropdownListItemProps } from './types'\n\nconst DropdownListItem = ({\n item,\n onSelectItem,\n selectedOption,\n styles,\n}: IDropdownListItemProps) => {\n const handleOnSelectItem = () => onSelectItem(item)\n const isSelected = !!selectedOption && selectedOption.value === item.value\n const selectedStyles = [s.buttonSelected, styles?.buttonSelected]\n\n const buttonStyles = [s.button, styles?.button]\n\n return (\n <View style={[s.rootContainer, styles?.container]}>\n <TouchableOpacity\n onPress={handleOnSelectItem}\n style={isSelected ? selectedStyles : buttonStyles}\n >\n <Text\n style={[s.text, isSelected ? styles?.textSelected : styles?.text]}\n numberOfLines={2}\n >\n {item.label}\n </Text>\n </TouchableOpacity>\n </View>\n )\n}\n\nexport default DropdownListItem\n","import { Dimensions, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst { width: sWidth, height: sHeight } = Dimensions.get('window')\n\nconst DIALOG = {\n width: sWidth * 0.8,\n maxHeight: sHeight * 0.5,\n minHeight: sHeight * 0.2,\n}\n\nexport const DropdownStyles = StyleSheet.create({\n rootContainer: {\n width: 50,\n },\n button: {\n width: '100%',\n borderWidth: 2,\n height: 45,\n alignItems: 'center',\n justifyContent: 'space-between',\n flexDirection: 'row',\n paddingHorizontal: 8,\n borderColor: R.colors.black,\n },\n icon: {\n height: 14,\n width: 14,\n resizeMode: 'contain',\n tintColor: R.colors.black,\n },\n label: {\n color: R.colors.black,\n fontSize: 16,\n },\n modalContainer: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.8)',\n },\n modalBackgroundTouchable: {\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n dialog: {\n backgroundColor: R.colors.white,\n paddingVertical: 16,\n borderRadius: 2,\n alignItems: 'center',\n justifyContent: 'center',\n width: DIALOG.width,\n maxHeight: DIALOG.maxHeight,\n minHeight: DIALOG.minHeight,\n shadowColor: R.colors.black,\n shadowOffset: {\n width: 3,\n height: 2,\n },\n shadowOpacity: 0.3,\n shadowRadius: 3,\n },\n flatListContainer: {\n width: DIALOG.width,\n },\n})\n\nexport const DropdownListItemStyles = StyleSheet.create({\n rootContainer: {\n paddingVertical: 4,\n minWidth: 100,\n alignItems: 'center',\n },\n button: {\n width: '100%',\n minHeight: 35,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: R.colors.white,\n paddingHorizontal: 8,\n },\n buttonSelected: {\n width: '100%',\n minHeight: 35,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: R.colors.tint,\n paddingHorizontal: 8,\n },\n text: {\n fontSize: 18,\n fontWeight: '600',\n textAlign: 'center',\n color: R.colors.black,\n },\n})\n","//@ts-nocheck\n\nimport React, { MutableRefObject, useCallback, useEffect, useRef, useState } from 'react'\nimport {\n FlatList,\n Image,\n Modal,\n TouchableOpacity,\n TouchableWithoutFeedback,\n View,\n} from 'react-native'\n\nimport R from '../../res'\nimport DropdownListItem from '../dropdown/DropdownListItem'\nimport Input from '../input/Input'\nimport Separator from '../separator/Separator'\nimport { DropdownMaterialStyles as s } from './styles'\nimport { IDropdownItem, IDropdownMaterialProps } from './types'\n\nconst DropdownMaterial = ({\n items,\n selectedOption,\n onSelectItem,\n styles,\n materialInputProps,\n}: IDropdownMaterialProps) => {\n const [isModalVisible, setIsModalVisible] = useState(false)\n const flatListRef: MutableRefObject<FlatList> = useRef()\n\n const showModal = () => {\n requestAnimationFrame(() => {\n setIsModalVisible(true)\n })\n }\n const hideModal = () => {\n requestAnimationFrame(() => {\n setIsModalVisible(false)\n })\n }\n\n const handleOnSelectItem = (item: IDropdownItem) => {\n onSelectItem(item)\n hideModal()\n }\n\n useEffect(() => {\n if (flatListRef?.current) {\n flatListRef.current.flashScrollIndicators()\n }\n }, [isModalVisible])\n\n const renderItem = useCallback(\n ({ item }) => (\n <DropdownListItem\n item={item}\n onSelectItem={handleOnSelectItem}\n selectedOption={selectedOption}\n styles={styles?.listItem}\n />\n ),\n\n [handleOnSelectItem, selectedOption]\n )\n\n const keyExtractor = useCallback((item: IDropdownItem) => item.value.toString(), [])\n\n const renderSeparator = useCallback(() => <Separator />, [])\n\n const getItemLayout = useCallback(\n (data, index) => ({\n length: 45,\n offset: 45 * index,\n index,\n }),\n []\n )\n\n const RightComponent = useCallback(\n () => <Image source={R.icons.dropdown} style={[s.icon, styles?.icon]} />,\n [styles?.icon]\n )\n\n return (\n <View style={[s.rootContainer, styles?.container]}>\n <TouchableOpacity onPress={showModal} style={s.button}>\n <Input\n {...materialInputProps}\n value={selectedOption?.label}\n styles={styles?.input}\n disabled={true}\n pointerEvents=\"box-none\"\n disabledLineWidth={1}\n renderRightAccessory={RightComponent}\n />\n </TouchableOpacity>\n {isModalVisible && items.length > 0 && (\n <Modal presentationStyle=\"overFullScreen\" transparent={true}>\n <View style={s.modalContainer}>\n <TouchableOpacity\n activeOpacity={1}\n onPress={hideModal}\n style={s.modalBackgroundTouchable}\n >\n <TouchableWithoutFeedback>\n <View style={[s.dialog, styles?.dialog]}>\n <FlatList\n keyExtractor={keyExtractor}\n ref={flatListRef}\n indicatorStyle=\"black\"\n data={items}\n extraData={items}\n maxToRenderPerBatch={6}\n initialNumToRender={6}\n renderItem={renderItem}\n ItemSeparatorComponent={renderSeparator}\n getItemLayout={getItemLayout}\n style={[s.flatListContainer, styles?.flatListContainer]}\n />\n </View>\n </TouchableWithoutFeedback>\n </TouchableOpacity>\n </View>\n </Modal>\n )}\n </View>\n )\n}\n\nexport default DropdownMaterial\n","import { Dimensions, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst { width: sWidth, height: sHeight } = Dimensions.get('window')\n\nconst DIALOG = {\n width: sWidth * 0.8,\n maxHeight: sHeight * 0.5,\n minHeight: sHeight * 0.2,\n}\n\nexport const DropdownMaterialStyles = StyleSheet.create({\n rootContainer: {\n width: '100%',\n height: 45,\n marginBottom: 32,\n },\n button: {\n height: '120%',\n },\n icon: {\n height: 14,\n width: 14,\n resizeMode: 'contain',\n tintColor: R.colors.white,\n },\n label: {\n color: R.colors.black,\n fontSize: 16,\n },\n modalContainer: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.8)',\n },\n modalBackgroundTouchable: {\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n dialog: {\n backgroundColor: R.colors.white,\n paddingVertical: 16,\n borderRadius: 2,\n alignItems: 'center',\n justifyContent: 'center',\n width: DIALOG.width,\n maxHeight: DIALOG.maxHeight,\n shadowColor: R.colors.black,\n shadowOffset: {\n width: 3,\n height: 2,\n },\n shadowOpacity: 0.3,\n shadowRadius: 3,\n },\n flatListContainer: {\n width: DIALOG.width,\n },\n})\n\nexport const DropdownListItemStyles = StyleSheet.create({\n rootContainer: {\n paddingVertical: 4,\n minWidth: 100,\n alignItems: 'center',\n },\n button: {\n width: '100%',\n minHeight: 35,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: R.colors.white,\n paddingHorizontal: 8,\n },\n buttonSelected: {\n width: '100%',\n minHeight: 35,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: R.colors.tint,\n paddingHorizontal: 8,\n },\n text: {\n fontSize: 18,\n fontWeight: '600',\n textAlign: 'center',\n color: R.colors.black,\n },\n})\n","import React, { FC, useState } from 'react'\nimport { Modal, Text, View } from 'react-native'\n\nimport Button from '../button/Button'\nimport Input from '../input/Input'\nimport s from './styles'\nimport { IEnterPasswordProps } from './types'\n\nconst EnterPassword: FC<IEnterPasswordProps> = ({\n styles,\n texts,\n onSubmit,\n isLoading,\n apiError,\n}) => {\n const [password, setPassword] = useState('')\n\n const handleOnSubmit = () => {\n if (password.length > 0) onSubmit?.(password)\n }\n\n return (\n <Modal presentationStyle=\"overFullScreen\" transparent={false}>\n <View style={styles?.rootContainer || s.rootContainer}>\n <View style={styles?.contentContainer || s.contentContainer}>\n <Text style={styles?.title || s.title}>\n {texts?.title || 'Password is required for this event'}\n </Text>\n <Input\n label={texts?.inputLabel || `Enter the event's password`}\n value={password}\n onChangeText={setPassword}\n styles={styles?.input}\n autoCapitalize=\"none\"\n />\n {!!apiError && <Text style={s.errorText || styles?.error}>{apiError}</Text>}\n <Button\n text={texts?.buttonText || 'Submit'}\n styles={styles?.button}\n onPress={handleOnSubmit}\n isLoading={isLoading}\n isDisabled={isLoading || password.length === 0}\n />\n </View>\n </View>\n </Modal>\n )\n}\n\nexport default EnterPassword\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n rootContainer: {\n flex: 1,\n backgroundColor: R.colors.white,\n justifyContent: 'center',\n alignItems: 'center',\n },\n contentContainer: {\n marginHorizontal: 32,\n },\n title: {\n fontSize: 18,\n fontWeight: '800',\n marginBottom: 32,\n },\n errorText: {\n color: R.colors.danger,\n },\n})\n","import React from 'react'\nimport { Text } from 'react-native'\n\nimport Checkbox from '../checkbox/Checkbox'\nimport DatePicker from '../datePicker/DatePicker'\nimport DropdownMaterial from '../dropdownMaterial/DropdownMaterial'\nimport Input from '../input/Input'\nimport RadioGroup from '../radioGroup'\nimport styles from './styles'\nimport { IFormFieldProps } from './types'\n\nconst FormField = ({\n id,\n fieldType,\n error,\n dropdownProps,\n inputProps,\n title,\n checkboxProps,\n datePickerProps,\n radioProps,\n headerStyle,\n titleStyle,\n textStyle,\n}: IFormFieldProps) => {\n switch (fieldType) {\n case 'input':\n return (\n <Input\n value={inputProps!.value}\n id={id}\n onTextChanged={inputProps!.onTextChanged}\n label={inputProps!.label || 'Label'}\n error={error}\n {...inputProps}\n />\n )\n\n case 'dropdown':\n // Special handling for multi-select dropdown\n if (dropdownProps?.isMultiSelect && dropdownProps.selectedOptions) {\n // For multi-select, we create a display string from selected options\n const selectedText =\n dropdownProps.selectedOptions.length > 0\n ? dropdownProps.selectedOptions.map((item) => item.label).join(', ')\n : `Select ${dropdownProps?.style?.label?.text || 'items'}`\n\n // Use a fake selectedOption for the display\n const displayOption = {\n value: '',\n label: selectedText,\n }\n\n // Return with special multi-select handling\n return (\n <DropdownMaterial\n items={dropdownProps.options}\n selectedOption={displayOption}\n onSelectItem={(item) => dropdownProps.onSelectOption(id!, item)}\n materialInputProps={{\n label: dropdownProps?.style?.label?.text || 'Select Multiple',\n error: error,\n }}\n />\n )\n } else {\n // Standard single-select dropdown\n return (\n <DropdownMaterial\n items={dropdownProps!.options}\n selectedOption={dropdownProps?.selectedOption}\n onSelectItem={(item) => dropdownProps!.onSelectOption(id!, item)}\n materialInputProps={{\n label: dropdownProps?.style?.label?.text || 'Select',\n error: error,\n }}\n />\n )\n }\n\n case 'title':\n return <Text style={[styles.title, titleStyle]}>{title}</Text>\n\n case 'header':\n return <Text style={[styles.header, headerStyle]}>{title}</Text>\n\n case 'text':\n return <Text style={[styles.text, textStyle]}>{title}</Text>\n\n case 'checkbox':\n return (\n <Checkbox\n isActive={checkboxProps!.isActive}\n text={checkboxProps!.text}\n onPress={() => {\n checkboxProps!.onPress(id!)\n }}\n styles={checkboxProps?.styles}\n customTextComp={checkboxProps?.customTextComp}\n />\n )\n\n case 'datePicker':\n return (\n <DatePicker\n error={error}\n onSelectDate={datePickerProps!.onSelectDate}\n text={datePickerProps?.text || 'Select date'}\n onCancel={datePickerProps?.onCancel}\n selectedDate={datePickerProps!.selectedDate}\n />\n )\n\n case 'radio':\n return (\n <RadioGroup\n options={radioProps!.options}\n selectedValue={radioProps!.selectedValue}\n onValueChange={(value) => {\n // Just call the function directly since we're using non-null assertion\n radioProps!.onValueChange(value)\n }}\n label={radioProps?.label}\n error={error}\n styles={radioProps?.styles}\n />\n )\n }\n}\n\nexport default FormField\n","import React from 'react'\nimport { Text, TouchableOpacity, View } from 'react-native'\n\nimport { IRadioGroupProps } from './types'\n\nconst RadioGroup = ({\n options,\n selectedValue,\n onValueChange,\n label,\n error,\n styles,\n}: IRadioGroupProps) => {\n return (\n <View style={[{ marginBottom: 16 }, styles?.container]}>\n {label && (\n <Text\n style={[\n { fontSize: 16, fontWeight: '500', marginBottom: 8 },\n styles?.labelText,\n ]}\n >\n {label}\n </Text>\n )}\n {options.map((option) => {\n const isSelected = selectedValue === option.value\n return (\n <TouchableOpacity\n key={option.value}\n style={[\n {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 10,\n },\n styles?.optionContainer,\n ]}\n onPress={() => {\n onValueChange(option.value)\n }}\n >\n <View\n style={[\n {\n height: 20,\n width: 20,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: isSelected ? '#007BFF' : '#C4C4C4',\n justifyContent: 'center',\n alignItems: 'center',\n marginRight: 10,\n },\n styles?.radioOuter,\n isSelected && styles?.radioOuterSelected,\n ]}\n >\n {isSelected && (\n <View\n style={[\n {\n height: 10,\n width: 10,\n borderRadius: 5,\n backgroundColor: '#007BFF',\n },\n styles?.radioInner,\n ]}\n />\n )}\n </View>\n <Text style={[{}, styles?.optionText]}>{option.label}</Text>\n </TouchableOpacity>\n )\n })}\n {error && (\n <Text style={[{ color: 'red', fontSize: 12, marginTop: 5 }, styles?.errorText]}>\n {error}\n </Text>\n )}\n </View>\n )\n}\n\nexport default RadioGroup\n","import RadioGroup from './RadioGroup'\n\nexport default RadioGroup\nexport * from './types'\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n dropdownContainer: {\n width: '100%',\n height: 50,\n marginBottom: 24,\n },\n dropdownButton: {\n height: 55,\n borderWidth: 1,\n borderRadius: 5,\n },\n dropdownLabel: {\n fontSize: 16,\n color: R.colors.primary,\n },\n title: {\n fontSize: 20,\n fontWeight: '700',\n marginBottom: 16,\n color: R.colors.primary,\n },\n header: {\n fontSize: 28,\n fontWeight: '800',\n marginBottom: 16,\n color: R.colors.primary,\n },\n text: {\n fontSize: 14,\n marginBottom: 16,\n color: R.colors.primary,\n },\n})\n","import React from 'react'\nimport { ActivityIndicator, Modal, Text, View } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { ILoadingProps } from './types'\n\nconst Loading = ({ text = 'Loading...', styles, customComponent }: ILoadingProps) => {\n return (\n <Modal presentationStyle=\"overFullScreen\" transparent={true}>\n <View style={s.rootContainer}>\n <View style={[s.content, styles?.content]}>\n {customComponent ? (\n customComponent\n ) : (\n <>\n <ActivityIndicator\n size={styles?.animation?.size || 'large'}\n color={styles?.animation?.color || R.colors.black}\n />\n <Text style={[s.text, styles?.text]}>{text}</Text>\n </>\n )}\n </View>\n </View>\n </Modal>\n )\n}\n\nexport default Loading\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n rootContainer: {\n flex: 1,\n backgroundColor: R.colors.transparentBlack,\n justifyContent: 'center',\n alignItems: 'center',\n },\n text: {\n color: R.colors.black,\n marginTop: 16,\n fontSize: 18,\n },\n content: {\n backgroundColor: R.colors.white,\n padding: 24,\n borderRadius: 5,\n alignItems: 'center',\n justifyContent: 'center',\n elevation: 3,\n shadowColor: 'black',\n shadowOpacity: 0.5,\n shadowRadius: 5,\n shadowOffset: {\n height: 5,\n width: 0,\n },\n },\n})\n","import React, { FC } from 'react'\nimport { Alert, View } from 'react-native'\n\nimport { Button } from '..'\nimport s from './styles'\nimport { ILoggedInProps } from './types'\n\nconst LoggedIn: FC<ILoggedInProps> = ({\n styles,\n texts,\n onPressMyOrders,\n onPressLogout,\n}) => {\n const { rootContainer, myOrdersButton, logOutButton } = {\n ...styles,\n }\n const { logoutDialog, myOrderButtonText, logOutButtonText } = { ...texts }\n const handleMyOrdersPress = async () => {\n if (onPressMyOrders) {\n onPressMyOrders()\n }\n }\n\n const handleLogOutPress = () => {\n if (onPressLogout) {\n Alert.alert(\n logoutDialog?.title || 'Do you want to log out?',\n logoutDialog?.message ||\n 'You will lose your selection and you will need to enter your credentials again.',\n [\n {\n text: logoutDialog?.confirmButton || 'Yes',\n style: 'destructive',\n onPress: onPressLogout,\n },\n {\n text: logoutDialog?.cancelButton || 'No',\n },\n ]\n )\n }\n }\n\n return (\n <View style={[s.rootContainer, rootContainer]}>\n <Button\n text={myOrderButtonText || 'MY ORDERS'}\n onPress={handleMyOrdersPress}\n styles={myOrdersButton}\n />\n <Button\n text={logOutButtonText || 'LOG OUT'}\n onPress={handleLogOutPress}\n styles={logOutButton}\n />\n </View>\n )\n}\n\nexport default LoggedIn\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n rootContainer: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n marginVertical: 24,\n },\n})\n","import React, { FC, useRef, useState } from 'react'\nimport { Keyboard } from 'react-native'\n\nimport { LoginCore, LoginCoreHandle } from '../../core'\nimport { IUserProfilePublic } from '../../types'\nimport LoginView from './LoginView'\nimport { ILoginFields, ILoginProps, LoginContentType } from './types'\n\nconst Login: FC<ILoginProps> = ({\n onLoginSuccessful,\n onLoginError,\n isLoginDialogVisible,\n showLoginDialog,\n hideLoginDialog,\n userFirstName,\n onLogoutSuccess,\n onLogoutError,\n texts,\n styles,\n refs,\n brandImages,\n isShowPasswordButtonVisible,\n onRestorePasswordError,\n onRestorePasswordSuccess,\n}) => {\n //#region State\n const [isLoading, setIsLoading] = useState(false)\n const [loginApiError, setLoginApiError] = useState('')\n const [restorePasswordApiError, setRestorePasswordApiError] = useState('')\n const [restorePasswordSuccessMessage, setRestorePasswordSuccessMessage] = useState('')\n const [userProfileData, setUserProfileData] = useState<IUserProfilePublic>()\n const [loginContentType, setLoginContentType] = useState<LoginContentType>('login')\n const [isRestorePasswordLoading, setIsRestorePasswordLoading] = useState(false)\n //#endregion State\n\n const loginCoreRef = useRef<LoginCoreHandle>(null)\n\n //#region Handlers\n const handleOnPressForgotPassword = () => setLoginContentType('restorePassword')\n\n const handleOnPressLogin = async (fields: ILoginFields) => {\n if (loginApiError) {\n setLoginApiError('')\n }\n\n if (!loginCoreRef.current?.login) {\n return onLoginError?.({\n message: 'LoginCoreRef is not initialized',\n })\n }\n\n setIsLoading(true)\n const {\n userProfile,\n error: authorizationError,\n accessTokenData,\n } = await loginCoreRef.current.login(fields)\n\n if (authorizationError || !userProfile) {\n setIsLoading(false)\n setLoginApiError(authorizationError?.message || 'Auth error')\n return onLoginError?.(authorizationError!)\n }\n\n Keyboard.dismiss()\n setUserProfileData(userProfile)\n onLoginSuccessful({\n userProfile,\n accessTokenData,\n })\n setIsLoading(false)\n hideLoginDialog()\n }\n\n const handleOnPressLogout = async () => {\n if (!loginCoreRef.current?.logout) {\n return onLogoutError?.({ message: 'LoginCoreRef is not initialized' })\n }\n\n await loginCoreRef.current.logout()\n\n setUserProfileData(undefined)\n onLogoutSuccess?.()\n }\n\n const handleOnPressCancelRestorePasswordButton = () => setLoginContentType('login')\n\n const handleOnPressRestorePasswordButton = async (email: string) => {\n if (!loginCoreRef.current?.restorePassword) {\n return onRestorePasswordError?.({\n message: 'LoginCoreRef is not initialized',\n })\n }\n\n setIsRestorePasswordLoading(true)\n const { data: restorePasswordSuccessData, error: restorePassError } =\n await loginCoreRef.current.restorePassword(email)\n setIsRestorePasswordLoading(false)\n\n if (restorePassError || !restorePasswordSuccessData) {\n setRestorePasswordApiError(\n restorePassError?.message || 'Restore password unknown error'\n )\n setIsRestorePasswordLoading(false)\n onRestorePasswordError?.(restorePassError!)\n return\n }\n\n setLoginContentType('restorePasswordSuccess')\n\n setRestorePasswordSuccessMessage(restorePasswordSuccessData.message)\n onRestorePasswordSuccess?.()\n }\n\n const handleOnPressRestorePasswordSuccessButton = () => {\n handleHideDialog()\n }\n\n const handleHideDialog = () => {\n setLoginContentType('login')\n hideLoginDialog()\n }\n //#endregion\n\n //#region Render Main Content\n return (\n <LoginCore ref={loginCoreRef}>\n <LoginView\n showDialog={showLoginDialog}\n hideDialog={handleHideDialog}\n isDialogVisible={isLoginDialogVisible}\n onPressLogin={handleOnPressLogin}\n isLoading={isLoading}\n userProfile={userProfileData}\n onPressLogout={handleOnPressLogout}\n texts={texts}\n styles={styles}\n userFirstName={userFirstName}\n loginApiError={loginApiError}\n refs={refs}\n brandImages={brandImages}\n isShowPasswordButtonVisible={isShowPasswordButtonVisible}\n content={loginContentType}\n onPressForgotPassword={handleOnPressForgotPassword}\n restorePasswordProps={{\n apiError: restorePasswordApiError,\n onPressRestorePasswordButton: handleOnPressRestorePasswordButton,\n isLoading: isRestorePasswordLoading,\n onPressCancelButton: handleOnPressCancelRestorePasswordButton,\n }}\n resultDialogPropsProps={{\n message: restorePasswordSuccessMessage,\n onPressButton: handleOnPressRestorePasswordSuccessButton,\n }}\n />\n </LoginCore>\n )\n //#endregion Render Main Content\n}\n\nexport default Login\n","/**\n * @deprecated This component is deprecated and will be removed in a future release.\n * Please use the hooks from 'src/features/checkout-v2/hooks' instead.\n * See README.md in this directory for migration guide.\n */\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { forwardRef, useImperativeHandle } from 'react'\n\nimport {\n checkoutOrder,\n fetchCart,\n fetchCountries,\n fetchStates,\n fetchUserProfile,\n registerNewUser,\n} from '../../api/ApiClient'\nimport {\n ICartResponse,\n ICheckoutBody,\n ICountriesResponse,\n IFetchAccessTokenResponse,\n IRegisterNewUserResponse,\n IStatesResponse,\n IUserProfileResponse,\n} from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport {\n BillingCoreHandle,\n IBillingCoreProps,\n ICheckoutResponse,\n} from './BillingCoreTypes'\nimport BackgroundTimer from 'react-native-background-timer'\n\n/**\n * @deprecated Use the hooks from 'src/features/checkout-v2/hooks' instead\n */\nconst BillingCore = forwardRef<BillingCoreHandle, IBillingCoreProps>((props, ref) => {\n const [secondsLeft, setSecondsLeft] = useState(420)\n const [timerOn, setTimerOn] = useState(false)\n\n const handleStopTimer = useCallback(() => {\n BackgroundTimer.stop()\n BackgroundTimer.stopBackgroundTimer()\n }, [])\n\n const handleStartTimer = useCallback(() => {\n BackgroundTimer.runBackgroundTimer(() => {\n setSecondsLeft((secs) => {\n if (secs > 0) {\n return secs - 1\n } else {\n return 0\n }\n })\n }, 1000)\n }, [])\n\n const handleTimeIsUp = () => {\n BackgroundTimer.stopBackgroundTimer()\n props.onCartExpired?.()\n }\n\n useEffect(() => {\n if (secondsLeft === 0) {\n handleTimeIsUp()\n }\n props.onSecondsLeftChange?.(secondsLeft)\n }, [secondsLeft])\n\n useEffect(() => {\n if (timerOn) {\n handleStartTimer()\n } else {\n BackgroundTimer.stopBackgroundTimer()\n }\n return () => {\n BackgroundTimer.stopBackgroundTimer()\n }\n }, [handleStartTimer, timerOn])\n\n useImperativeHandle(ref, () => ({\n async checkoutOrder(body: ICheckoutBody): Promise<ICheckoutResponse> {\n const checkout = await checkoutOrder(body)\n if (!checkout.error) {\n BackgroundTimer.stopBackgroundTimer()\n }\n return checkout\n },\n\n async getCart(): Promise<ICartResponse> {\n const cart = await fetchCart()\n\n if (cart.cartData?.expiresAt) {\n setSecondsLeft(cart.cartData.expiresAt)\n setTimerOn(true)\n }\n\n return cart\n },\n\n async getCountries(): Promise<ICountriesResponse> {\n return await fetchCountries()\n },\n\n async getStates(countryId: string): Promise<IStatesResponse> {\n return await fetchStates(countryId)\n },\n\n async getUserProfile(): Promise<IUserProfileResponse> {\n return await fetchUserProfile()\n },\n\n async registerNewUser(data: FormData): Promise<IRegisterNewUserResponse> {\n return await registerNewUser(data)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n stopCartTimer() {\n return handleStopTimer()\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default BillingCore\n","import Axios, { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport axiosRetry from 'axios-retry'\nimport _filter from 'lodash/filter'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _map from 'lodash/map'\nimport _mapKeys from 'lodash/mapKeys'\nimport _sortBy from 'lodash/sortBy'\n\nimport { IWaitingListFields } from '../components/waitingList/types'\nimport { IOnCheckoutSuccess } from '../containers/billingInfo/types'\nimport { Config } from '../helpers/Config'\nimport { getDomainByClientAndEnv } from '../helpers/Domains'\nimport {\n deleteAllData,\n getData,\n LocalStorageKeys,\n storeData,\n} from '../helpers/LocalStorage'\nimport { IAccountTicketsResponse, IError, IEvent, IUserProfile } from '../types'\nimport { IAddToCartResponse, ITicket, ITicketsResponseData } from '../types/ITicket'\nimport Constants from './Constants'\nimport { getApiError } from './ErrorHandler'\nimport {\n IAddToCartParams,\n IAddToWaitingListResponse,\n IAuthorizeResponse,\n ICartData,\n ICartResponse,\n ICheckoutBody,\n ICheckoutResponse,\n IClientRequest,\n ICloseSessionData,\n ICloseSessionResponse,\n ICountriesResponse,\n IEventResponse,\n IFetchAccessTokenResponse,\n IFetchTicketsParams,\n IFetchTicketsResponse,\n IFreeRegistrationData,\n IFreeRegistrationResponse,\n IMyOrderDetailsData,\n IMyOrderDetailsItem,\n IMyOrderDetailsResponse,\n IMyOrderDetailsTicket,\n IMyOrdersData,\n IMyOrdersRequestParams,\n IMyOrdersResponse,\n IOrderReview,\n IOrderReviewResponse,\n IPostReferralData,\n IPostReferralResponse,\n IPromoCodeResponse,\n IPurchaseConfirmationData,\n IPurchaseConfirmationResponse,\n IRegisterNewUserResponse,\n IRemoveTicketFromResaleData,\n IRemoveTicketFromResaleResponse,\n IResaleTicketData,\n IResaleTicketResponse,\n IResetPasswordRequestData,\n IResetPasswordResponse,\n IRestorePasswordData,\n IRestorePasswordResponse,\n IStatesResponse,\n IUpdateCheckoutResponse,\n IUserProfileResponse,\n} from './types'\n\n// Type for error response data from API\ninterface ErrorResponseData {\n message?: string | { email?: string; [key: string]: any }\n error_description?: string\n status?: number | string\n [key: string]: any\n}\n\n// Helper function to safely extract message from error response\nconst getErrorMessage = (\n data: ErrorResponseData | undefined,\n fallback: string\n): string => {\n if (!data?.message) return fallback\n return typeof data.message === 'string' ? data.message : fallback\n}\n\nconst HEADERS: { [key: string]: any } = {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json',\n}\n\nexport const Client: IClientRequest = Axios.create({\n baseURL: Constants.BASE_URL,\n headers: HEADERS,\n timeout: Constants.TIMEOUT,\n data: {},\n}) as IClientRequest\n\naxiosRetry(Client, { retries: 3 })\n\nClient.interceptors.request.use(async (config: InternalAxiosRequestConfig) => {\n const guestToken = await getData(LocalStorageKeys.AUTH_GUEST_TOKEN)\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n const storedTokenType = await getData(LocalStorageKeys.AUTH_TOKEN_TYPE)\n const tokenType = storedTokenType || 'Bearer'\n\n if (accessToken) {\n config.headers['Authorization'] = `${tokenType} ${accessToken}`\n }\n\n if (guestToken) {\n Client.setGuestToken(guestToken)\n config.headers['Authorization-Guest'] = guestToken\n }\n\n if (Config.CLIENT) {\n config.headers['origin'] = getDomainByClientAndEnv(Config.CLIENT, Config.ENV)\n }\n\n return config\n})\n\nClient.interceptors.response.use(\n (response: AxiosResponse) => {\n return response\n },\n async (error: AxiosError<ErrorResponseData>) => {\n if (error?.response?.status === 401) {\n error.code = error.code\n error.message = error.response.data?.error_description || error.message\n } else if (error.message) {\n error.message = error.message\n }\n\n return Promise.reject(error)\n }\n)\n\nClient.setGuestToken = (token: string) =>\n (Client.defaults.headers.common['Authorization-Guest'] = token)\n\nClient.removeGuestToken = () =>\n delete Client.defaults.headers.common['Authorization-Guest']\n\nClient.removeAccessToken = () => delete Client.defaults.headers.common.Authorization\n\nClient.setAccessToken = (token: string) =>\n (Client.defaults.headers.common.Authorization = token)\n\nClient.setBaseUrl = (baseUrl: string) => (Client.defaults.baseURL = baseUrl)\n\nClient.setTimeOut = (timeOut: number) => (Client.defaults.timeout = timeOut)\n\nClient.setDomain = (domain: string) => {\n Client.defaults.headers.common['origin'] = domain\n}\n\nClient.setContentType = (contentType: string) =>\n (Client.defaults.headers.common['Content-Type'] = contentType)\n\nexport const setCustomHeader = (response: any) => {\n const guestHeaderResponseValue = _get(response, 'headers.authorization-guest')\n\n const guestHeaderExistingValue = _get(response, 'config.headers[Authorization-Guest]')\n\n const guestHeader = guestHeaderResponseValue || guestHeaderExistingValue\n\n if (guestHeader) {\n storeData(LocalStorageKeys.AUTH_GUEST_TOKEN, guestHeader)\n Client.setGuestToken(guestHeader)\n }\n}\n\nexport const setAccessTokenHandler = async (accessToken: string) => {\n await storeData(LocalStorageKeys.ACCESS_TOKEN, accessToken)\n Client.setAccessToken(accessToken)\n}\n\n// API Authentication\nexport const authorize = async (data: FormData): Promise<IAuthorizeResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(\n `/v1/oauth/authorize-rn?client_id=${Config.CLIENT_ID}`,\n data\n )\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError?.response?.data, 'Authorization failed'),\n code: axiosError?.response?.status,\n }\n }\n\n return {\n error: responseError,\n code: response?.data?.data?.code,\n }\n}\n\nexport const fetchAccessToken = async (\n data: FormData\n): Promise<IFetchAccessTokenResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post('/v1/oauth/access_token', data)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status,\n }\n }\n\n const accessToken = _get(response, 'data.access_token')\n if (accessToken) {\n await storeData(LocalStorageKeys.ACCESS_TOKEN, accessToken)\n }\n const refreshToken = _get(response, 'data.refresh_token')\n if (refreshToken) {\n await storeData(LocalStorageKeys.REFRESH_TOKEN, refreshToken)\n }\n const tokenType = _get(response, 'data.token_type')\n if (tokenType) {\n await storeData(LocalStorageKeys.TOKEN_TYPE, tokenType)\n }\n const scope = _get(response, 'data.scope')\n if (scope) {\n await storeData(LocalStorageKeys.AUTH_SCOPE, scope)\n }\n\n return {\n accessTokenError: responseError,\n accessTokenData: {\n accessToken,\n refreshToken,\n tokenType,\n scope,\n },\n }\n}\n\nexport const fetchUserProfile = async (): Promise<IUserProfileResponse> => {\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n if (!accessToken) {\n return { userProfileError: { message: 'Access token not found' } }\n }\n\n let responseError: IError | undefined\n let userProfile: IUserProfile | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get('/customer/profile/', {\n headers: {\n ...HEADERS,\n Authorization: `Bearer ${accessToken}`,\n },\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError?.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n if (!responseError && response) {\n userProfile = response.data.data\n }\n\n return {\n userProfileError: responseError,\n userProfileData: userProfile,\n }\n}\n\n//#region Register new user\nexport const registerNewUser = async (\n data: FormData\n): Promise<IRegisterNewUserResponse> => {\n const resultData: IRegisterNewUserResponse = {\n registerNewUserResponseError: undefined,\n registerNewUserResponseData: undefined,\n }\n\n let res: AxiosResponse<any> | undefined\n\n try {\n res = await Client.post('/v1/oauth/register-rn', data, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n const messageObject = axiosError.response?.data.message\n let errorMessage = ''\n\n if (!messageObject) {\n resultData.registerNewUserResponseError = {\n message: 'Error registering user',\n }\n } else {\n if (\n typeof messageObject === 'object' &&\n 'email' in messageObject &&\n messageObject.email\n ) {\n resultData.registerNewUserResponseError = {\n isAlreadyRegistered: true,\n message:\n 'It appears this email is already attached to an account. Please log in here to complete your registration.',\n raw: axiosError.response,\n }\n } else {\n if (typeof messageObject === 'object') {\n _mapKeys(messageObject, (value) => {\n _forEach(value, (eachVal) => {\n errorMessage += `- ${eachVal} \\n`\n })\n })\n }\n resultData.registerNewUserResponseError = {\n message: errorMessage || 'Error registering user',\n }\n }\n }\n }\n\n if (res?.status === 200) {\n const userProfile = _get(res, 'data.data.attributes.user_profile')\n const accessToken = _get(res, 'data.data.attributes.access_token')\n const refreshToken = _get(res, 'data.data.attributes.refresh_token')\n const scope = _get(res, 'data.data.attributes.scope')\n const tokenType = _get(res, 'data.data.attributes.token_type')\n\n if (accessToken) {\n await storeData(LocalStorageKeys.ACCESS_TOKEN, accessToken)\n await setAccessTokenHandler(accessToken)\n }\n\n if (refreshToken) {\n await storeData(LocalStorageKeys.REFRESH_TOKEN, refreshToken)\n }\n\n if (tokenType) {\n await storeData(LocalStorageKeys.TOKEN_TYPE, tokenType)\n }\n\n if (scope) {\n await storeData(LocalStorageKeys.AUTH_SCOPE, scope)\n }\n\n resultData.registerNewUserResponseData = {\n accessTokenData: {\n accessToken: accessToken,\n refreshToken: refreshToken,\n tokenType: tokenType,\n scope: scope,\n },\n userProfile: {\n firstName: _get(userProfile, 'first_name'),\n lastName: _get(userProfile, 'last_name'),\n email: _get(userProfile, 'email'),\n },\n }\n }\n\n return resultData\n}\n//#endregion\n\n//#region Waiting List\nexport const addToWaitingList = async (\n values: IWaitingListFields\n): Promise<IAddToWaitingListResponse> => {\n if (!Config.EVENT_ID) {\n return {\n addToWaitingListError: { message: 'Event ID is not configured!' },\n }\n }\n\n const requestData = { data: { attributes: values } }\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(\n `/v1/event/${Config.EVENT_ID}/add_to_waiting_list`,\n requestData\n )\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n return {\n addToWaitingListError: responseError,\n addToWaitingListData: response?.data,\n }\n}\n//#endregion\n\n//#region MyOrders\nexport const fetchMyOrders = async ({\n page,\n limit = 20,\n filter = '',\n from = '',\n}: IMyOrdersRequestParams): Promise<IMyOrdersResponse> => {\n const data: IMyOrdersData = {\n events: [],\n orders: [],\n pagination: {\n page: 0,\n limit: 0,\n totalCount: 0,\n totalPages: 0,\n },\n }\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n const withFilterEvent = filter ? `&filter[event]=${filter}` : ''\n const withBrand = Config.BRAND ? `&filter[brand]=${Config.BRAND}` : ''\n const withSubBrands = Config.ARE_SUB_BRANDS_INCLUDED\n ? `&filter[subbrands]=${Config.ARE_SUB_BRANDS_INCLUDED}`\n : ''\n const withFrom = from ? `&filter[from]=${from}` : ''\n\n const endpoint = `/v1/account/orders/?page=${page}&limit=${limit}${withFilterEvent}${withBrand}${withSubBrands}${withFrom}`\n\n try {\n response = await Client.get(endpoint)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = getApiError(axiosError, 'Error fetching My Orders')\n }\n\n if (response?.data) {\n const dataAttributes = response.data.data.attributes\n\n data.events = dataAttributes.purchased_events\n data.orders = dataAttributes.orders\n data.pagination.limit = dataAttributes.limit\n data.pagination.page = dataAttributes.page\n data.pagination.totalCount = dataAttributes.total_count\n data.pagination.totalPages = dataAttributes.total_pages\n data.filter = dataAttributes.filter\n data.brandFilter = dataAttributes.brand_filter\n data.subBrands = dataAttributes.sub_brands\n }\n\n return {\n myOrdersError: responseError,\n myOrdersData: data,\n }\n}\n//#endregion\n\n//#region OrderDetails\nexport const fetchOrderDetails = async (\n orderId: string\n): Promise<IMyOrderDetailsResponse> => {\n let responseError: IError | undefined\n let responseData: IMyOrderDetailsData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`/v1/account/order/${orderId}`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(\n axiosError.response?.data,\n 'Error while fetching order details'\n ),\n code: axiosError.response?.status,\n }\n }\n\n if (!responseError && response) {\n const { attributes } = response.data.data\n let items: IMyOrderDetailsItem[] | undefined\n\n if (attributes.items?.ticket_types) {\n items = _map(attributes.items.ticket_types, (item) => {\n return {\n name: item.name,\n currency: item.currency,\n price: item.price,\n discount: item.discount,\n quantity: item.quantity,\n total: item.total,\n isActive: item.active,\n hash: item.hash,\n }\n })\n }\n\n const tickets: IMyOrderDetailsTicket[] = _map(attributes.tickets, (item) => {\n return {\n hash: item.hash,\n ticketType: item.ticket_type,\n holderName: item.holder_name,\n status: item.status,\n pdfLink: item.pdf_link,\n qrData: item.qr_data,\n isSellable: item.is_sellable,\n holderEmail: item.holder_email,\n holderPhone: item.holder_phone,\n description: item.description,\n descriptionPlain: item.description_plain,\n currency: item.currency,\n eventName: item.event_name,\n isOnSale: item.is_on_sale,\n resaleFeeAmount: item.resale_fee_amount,\n ticketTypeHash: item.ticket_type_hash,\n isTable: item.is_table,\n }\n })\n responseData = {\n header: {\n currency: attributes.currency,\n date: attributes.date,\n isReferralDisabled: attributes.disable_referral,\n eventEndDate: attributes.event_end_date,\n eventStartDate: attributes.event_start_date,\n eventId: attributes.event_id,\n eventName: attributes.event_name,\n eventSalesEndDate: attributes.event_sales_end_date,\n eventSalesStartDate: attributes.event_sales_start_date,\n eventUrl: attributes.event_url,\n isVenueHidden: attributes.hide_venue,\n id: attributes.id,\n image: attributes.image,\n shareLink: attributes.personal_share_link,\n salesReferred: attributes.sales_referred,\n total: attributes.total,\n hideVenueUntil: attributes.hide_venue_until,\n timeZone: attributes.timezone,\n venue: {\n city: attributes.venue_city,\n country: attributes.venue_country,\n googlePlaceId: attributes.venue_google_place_id || undefined,\n latitude: attributes.venue_latitude || undefined,\n longitude: attributes.venue_longitude || undefined,\n name: attributes.venue_name || undefined,\n postalCode: attributes.venue_postal_code || undefined,\n state: attributes.venue_state,\n street: attributes.venue_street || undefined,\n streetNumber: attributes.venue_street_number || undefined,\n },\n },\n items: items,\n tickets: tickets,\n }\n }\n\n return {\n orderDetailsError: responseError,\n orderDetailsData: responseData,\n }\n}\n\n//#endregion\n\n//#region Tickets\n// PromoCode higher priority than ReferredId\nexport const fetchTickets = async ({\n promoCode,\n referredId,\n}: IFetchTicketsParams): Promise<IFetchTicketsResponse> => {\n if (!Config.EVENT_ID) {\n return {\n error: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n const eventId = Config.EVENT_ID.toString()\n const headers = {\n 'Promotion-Event': eventId,\n 'Promotion-Code': promoCode,\n 'Referrer-Id': referredId,\n }\n\n let responseError\n let response: AxiosResponse<any> | undefined\n\n if (!referredId) {\n delete headers['Referrer-Id']\n }\n\n if (!promoCode) {\n //@ts-ignore\n delete headers['Promotion-Code']\n }\n\n if (!promoCode && !referredId) {\n //@ts-ignore\n delete headers['Promotion-Event']\n }\n\n // If there are promoCode and referredId, then we need to remove the Referrer-Id header\n if (promoCode && referredId && headers['Referrer-Id']) {\n delete headers['Referrer-Id']\n }\n\n try {\n response = await Client.get(`v1/event/${eventId}/tickets/`, {\n //@ts-ignore\n headers: headers,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n if (axiosError.response) {\n responseError = {\n code: axiosError.response.status!,\n message: axiosError.response.data.message,\n }\n } else {\n responseError = {\n message: axiosError.message,\n }\n }\n }\n\n if (responseError) {\n return {\n error: responseError,\n }\n }\n\n const attributes = _get(response, 'data.data.attributes.tickets')\n const ticketsAttributes = _filter(attributes, (item) => typeof item === 'object')\n const promoCodeResult: IPromoCodeResponse = {\n message: _get(response, 'data.data.attributes.PromoCodeValidationMessage'),\n isValid: _get(response, 'data.data.attributes.ValidPromoCode'),\n }\n\n const tickets = (Object.values(ticketsAttributes) || []) as ITicket[]\n const guestHeaderValue = _get(response, 'headers.authorization-guest')\n if (guestHeaderValue) {\n setCustomHeader(response)\n }\n\n return {\n tickets: _sortBy(tickets, 'sortOrder'),\n error: responseError,\n promoCodeResult: promoCodeResult,\n isInWaitingList: _get(response, 'data.data.attributes.showWaitingList'),\n isAccessCodeRequired: _get(response, 'data.data.attributes.is_access_code'),\n }\n}\n//#endregion Tickets\n\nexport const addToCart = async (data: IAddToCartParams): Promise<IAddToCartResponse> => {\n if (!Config.EVENT_ID) {\n return {\n error: { message: 'Event ID is not configured!' },\n }\n }\n\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/event/${Config.EVENT_ID}/add-to-cart/`, {\n data,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code: axiosError.response?.status!,\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n }\n }\n\n let responseData: ITicketsResponseData | undefined\n if (!responseError && response) {\n setCustomHeader(response)\n const { attributes } = response.data\n\n responseData = {\n isBillingRequired: !attributes?.skip_billing_page,\n isNameRequired: attributes?.names_required ?? false,\n isAgeRequired: attributes?.age_required ?? false,\n isPhoneRequired: attributes?.phone_required ?? false,\n minimumAge: attributes?.age_required ? (attributes?.minimum_age ?? 18) : undefined,\n isTicketFree: attributes?.free_ticket ?? false,\n isPhoneHidden: attributes?.hide_phone_field && false,\n }\n }\n\n return { data: responseData, error: responseError }\n}\n\nexport const fetchEvent = async (): Promise<IEventResponse> => {\n if (!Config.EVENT_ID) {\n return {\n eventError: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n let responseError: IError | undefined\n let event: IEvent | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/event/${Config.EVENT_ID}`, {\n headers: HEADERS,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code:\n typeof axiosError?.response?.data.status === 'number'\n ? axiosError.response.data.status\n : undefined,\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : undefined,\n }\n }\n\n if (response?.status === 200) {\n event = response.data.data.attributes\n }\n\n if (event?.country) {\n await storeData(LocalStorageKeys.EVENT_COUNTRY, event.country)\n }\n\n return {\n eventError: responseError,\n eventData: event,\n }\n}\n\nexport const postReferralVisit = async (\n referralId: string\n): Promise<IPostReferralResponse> => {\n if (!Config.EVENT_ID) {\n return {\n postReferralError: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n const eventId = Config.EVENT_ID.toString()\n const referralIdNumber = parseInt(referralId, 10)\n let responseError: IError | undefined\n let responseData: IPostReferralData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/event/${eventId}/referrer/`, {\n referrer: referralIdNumber,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n if (axiosError.response?.data.errors && axiosError.response?.data.errors.length > 0) {\n responseError = {\n code: axiosError.response?.data.errors[0].status,\n message: axiosError.response?.data.errors[0].details,\n }\n } else {\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n if (axiosError.response?.status === 422 && responseError.message === undefined) {\n responseError.message = 'Cannot process request'\n }\n }\n\n if (response?.data && response.data.status === 200) {\n responseData = {\n message: response.data.message,\n status: response.data.status,\n }\n }\n\n return {\n postReferralData: responseData,\n postReferralError: responseError,\n }\n}\n//#region Unlock Password Protected Event\nexport const unlockPasswordProtectedEvent = async (\n password: string\n): Promise<IEventResponse> => {\n if (!Config.EVENT_ID) {\n return {\n eventError: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n const eventId = Config.EVENT_ID.toString()\n let responseError: IError | undefined\n let responseData: any | undefined\n let response: AxiosResponse<any> | undefined\n\n const body = {\n attributes: {\n data: {\n password: password,\n },\n },\n }\n\n try {\n response = await Client.post(`v1/event/${eventId}/authenticate`, body)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error while unlocking Event'),\n code: axiosError?.response?.status,\n }\n }\n\n if (response?.data) {\n responseData = {\n message: response.data.message,\n status: response.data.status,\n }\n\n const guestHeaderValue = _get(response, 'headers.authorization-guest')\n if (guestHeaderValue) {\n setCustomHeader(response)\n }\n }\n\n return {\n eventData: responseData,\n eventError: responseError,\n }\n}\n//#endregion Unlock Password Protected Event\n\n//#region Billing Information\nexport const fetchCountries = async (): Promise<ICountriesResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get('/countries/list')\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n if (response?.status === 200) {\n setCustomHeader(response)\n }\n\n return {\n countriesData: response?.data.data,\n countriesError: responseError,\n }\n}\n\nexport const fetchStates = async (countryId: string): Promise<IStatesResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`/countries/${countryId}/states/`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code: axiosError.response?.status!,\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n }\n }\n\n if (response?.status === 200) {\n setCustomHeader(response)\n }\n\n return {\n statesError: responseError,\n statesData: response?.data?.data,\n }\n}\n\nexport const fetchCart = async (): Promise<ICartResponse> => {\n let responseError: IError | undefined\n let cartData = {} as ICartData\n let res: AxiosResponse<any> | undefined\n\n try {\n res = await Client.get('v1/cart/')\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code: axiosError.response?.status!,\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n }\n }\n\n const data = res?.data.data\n if (data?.attributes) {\n const attr = data?.attributes\n const quantityString = _get(attr, 'cart[0].quantity', '1')\n const tfOptIn = _get(attr, 'ttfOptIn', false)\n const isMarketingOptedIn = _get(attr, 'optedIn', false)\n const expiresAt = _get(attr, 'expiresAt', 420)\n const eventId = _get(attr, 'eventId', null)\n\n cartData = {\n quantity: parseInt(quantityString, 10),\n isMarketingOptedIn:\n typeof isMarketingOptedIn === 'number'\n ? isMarketingOptedIn > 0\n : isMarketingOptedIn,\n isTfOptInHidden: _get(attr, 'hide_ttf_opt_in', false),\n isTfOptIn: typeof tfOptIn === 'number' ? tfOptIn > 0 : tfOptIn,\n expiresAt: expiresAt,\n }\n\n return {\n success: true,\n cartError: responseError,\n cartData,\n eventId: eventId,\n }\n } else {\n responseError = {\n message: 'Error fetching cart',\n }\n }\n\n return {\n cartError: responseError,\n cartData: cartData,\n }\n}\n\nexport const checkoutOrder = async (data: ICheckoutBody): Promise<ICheckoutResponse> => {\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n\n if (!accessToken) {\n return {\n error: {\n message: 'Access token not found',\n },\n }\n }\n let responseError: IError | undefined\n let res: AxiosResponse<any> | undefined\n\n try {\n res = await Client.post(\n 'v1/on-checkout/',\n { data },\n {\n headers: {\n ...HEADERS,\n Authorization: `Bearer ${accessToken}`,\n },\n }\n )\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code: axiosError.response?.status!,\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n }\n }\n\n if (!res || !res.data) {\n return { error: responseError }\n }\n\n const checkoutResponseData: IOnCheckoutSuccess = {\n id: res.data.data.attributes.id,\n hash: res.data.data.attributes.hash,\n total: res.data.data.attributes.total,\n status: res.data.data.attributes.status,\n }\n\n return {\n error: responseError,\n data: checkoutResponseData,\n }\n}\n//#endregion\n//#region Checkout\nexport const fetchEventConditions = async () => {\n if (!Config.EVENT_ID) {\n return {\n error: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/event/${Config.EVENT_ID}/conditions`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : 'Error fetching event conditions',\n code: axiosError.response?.status,\n }\n }\n\n return {\n error: responseError,\n data: response?.data?.data?.attributes,\n }\n}\n\nexport const fetchOrderReview = async (hash: string): Promise<IOrderReviewResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/order/${hash}/review/`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n let resData: IOrderReview | undefined\n\n if (!responseError) {\n const attributes = _get(response, 'data.data.attributes')\n const { cart, order_details, payment_method, billing_info } = attributes\n\n if (!payment_method.stripe_client_secret && order_details.total !== '0.00') {\n responseError = {\n message: 'Stripe is not configured',\n }\n } else {\n const {\n tickets: [ticket],\n } = order_details\n\n resData = {\n expiresAt: attributes.expires_at,\n reviewData: {\n event: cart[0]?.product_name,\n price: ticket?.price,\n ticketType: ticket?.name,\n total: order_details?.total,\n numberOfTickets: ticket?.quantity,\n currency: order_details?.currency,\n },\n paymentData: {\n id: payment_method.id,\n name: payment_method.name,\n stripeClientSecret: payment_method.stripe_client_secret,\n stripeConnectedAccount:\n payment_method.stripe_connected_account?.length > 0\n ? payment_method.stripe_connected_account\n : undefined,\n stripePublishableKey: payment_method.stripe_publishable_key,\n },\n addressData: {\n city: billing_info.city,\n line1: billing_info.street_address,\n state: billing_info.state ? billing_info.state.toString() : '',\n postalCode: billing_info.zip,\n },\n billingData: {\n firstName: billing_info.first_name,\n lastName: billing_info.last_name,\n isActAsBillingInfo: billing_info.as_act_billing_info,\n city: billing_info.city,\n company: billing_info.company,\n country: billing_info.country,\n email: billing_info.email,\n isBusiness: billing_info.is_business,\n phone: billing_info.phone,\n state: billing_info.state,\n streetAddress: billing_info.street_address,\n zipCode: billing_info.zip,\n },\n cart: attributes.cart,\n cartTotalPrice: attributes.cart_total_price,\n couponCode: attributes.coupon_code,\n discount: attributes.discount,\n estimatedTax: attributes.estimated_tax,\n estimatedTotal: attributes.estimated_total,\n isSeatMapAllowed: attributes.flagSeatMapAllowed,\n isShippingRequired: attributes.shipping_required,\n shippingInfo: attributes.shipping_info,\n orderDetails: attributes.order_details,\n isOptedId: attributes.opted_id,\n isTtfOptedIn: attributes.hide_ttf_opt_in,\n eventDetails: attributes.event_details,\n countries: attributes.countries,\n }\n }\n }\n return {\n orderReviewError: responseError,\n orderReviewData: resData,\n }\n}\n\n// Update checkout with add-ons and pricing\nexport const updateCheckout = async (data: any): Promise<IUpdateCheckoutResponse> => {\n let responseError: IError | undefined\n let responseData: any | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post('v1/checkout', {\n data,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error updating checkout'),\n code: axiosError.response?.status,\n }\n }\n\n if (response?.data) {\n responseData = response.data\n }\n\n return {\n success: !responseError,\n error: responseError,\n data: responseData,\n }\n}\n\n// Get add-ons for event\nexport const getAddons = async (eventId: string): Promise<any> => {\n let responseError: IError | undefined\n let addonsData: any = {}\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/event/${eventId}/add-ons`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error fetching add-ons'),\n code: axiosError.response?.status,\n }\n }\n\n if (response?.data?.data?.attributes) {\n addonsData = response.data.data.attributes\n }\n\n return {\n data: addonsData,\n error: responseError,\n success: !responseError,\n }\n}\n\n// Get payment data and order review\nexport const getPaymentData = async (hash: string): Promise<any> => {\n let responseError: IError | undefined\n let responseData: any | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/order/${hash}/review`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error fetching payment data'),\n code: axiosError.response?.status,\n }\n }\n\n if (response?.data) {\n responseData = response.data\n }\n\n return {\n success: !responseError,\n error: responseError,\n data: responseData,\n }\n}\n\nexport const postOnPaymentSuccess = async (orderHash: string) => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/order/${orderHash}/success`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(\n axiosError.response?.data,\n 'Error while notifying Payment Success'\n ),\n code: axiosError.response?.status,\n }\n }\n\n return {\n error: responseError,\n data: response?.data,\n }\n}\n\nexport const postOnFreeRegistration = async (\n orderHash: string\n): Promise<IFreeRegistrationResponse> => {\n let responseError: IError | undefined\n let responseData: IFreeRegistrationData | undefined\n let res: AxiosResponse<any> | undefined\n\n try {\n res = await Client.post(`v1/order/${orderHash}/complete_free_registration`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status,\n }\n }\n\n if (res?.data) {\n const orderDetails = res.data.data.attributes.order_details\n responseData = {\n id: orderDetails.id,\n customerId: orderDetails.customer_id,\n total: orderDetails.total,\n currency: orderDetails.currency,\n orderHash: orderDetails.order_hash,\n }\n }\n return {\n freeRegistrationError: responseError,\n freeRegistrationData: responseData,\n }\n}\n//#endregion\n\n//#region Purchase Confirmation\nexport const fetchPurchaseConfirmation = async (\n orderHash: string\n): Promise<IPurchaseConfirmationResponse> => {\n let responseError: IError | undefined\n let data: IPurchaseConfirmationData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`/v1/order/${orderHash}/payment/complete`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status,\n }\n }\n\n if (response?.data?.data.attributes) {\n const resData = response.data.data.attributes\n data = {\n conversionPixels: resData.conversion_pixels,\n currency: resData.currency,\n customConfirmationPageText: resData.custom_confirmation_page_text,\n customerId: resData.customer_id,\n isReferralDisabled: resData.disable_referral,\n eventDate: resData.event_date,\n eventDescription: resData.event_description,\n eventType: resData.event_type,\n message: resData.message,\n orderTotal: resData.order_total,\n personalShareLink: resData.personal_share_link,\n productId: resData.product_id,\n productName: resData.product_name,\n productImage: resData.product_image,\n productPrice: resData.product_price,\n productUrl: resData.product_url,\n personalShareSales: resData.personal_share_sales,\n }\n }\n\n return {\n purchaseConfirmationError: responseError,\n purchaseConfirmationData: data,\n }\n}\n//#endregion\n\n//#region Resale Tickets\nexport const resaleTicket = async (\n data: FormData,\n orderHash: string\n): Promise<IResaleTicketResponse> => {\n let responseError: IError | undefined\n let responseData: IResaleTicketData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/ticket/${orderHash}/sell`, data)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error while re-sale ticket'),\n }\n }\n\n if (response?.data && response.data.status) {\n responseData = {\n message: response.data.message,\n }\n }\n\n return {\n resaleTicketData: responseData,\n resaleTicketError: responseError,\n }\n}\n\nexport const removeTicketFromResale = async (\n orderHash: string\n): Promise<IRemoveTicketFromResaleResponse> => {\n let responseError: IError | undefined\n let responseData: IRemoveTicketFromResaleData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.delete(`v1/ticket/${orderHash}/sell`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : 'Error removing ticket from resale',\n }\n }\n\n if (response?.data.message && response.data.status === 200) {\n responseData = {\n message: response.data.message,\n }\n }\n\n return {\n removeTicketFromResaleData: responseData,\n removeTicketFromResaleError: responseError,\n }\n}\n//#endregion\n\n//#region Logout\nexport const closeSession = async (): Promise<ICloseSessionResponse> => {\n let responseData: ICloseSessionData | undefined\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.delete('/auth')\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : 'Error while closing session',\n }\n }\n\n if (response?.data && response.data.status && response.data.status === 200) {\n responseData = {\n message: response.data.message || 'Session closed successfully',\n }\n }\n\n await deleteAllData()\n\n Client.removeGuestToken()\n Client.removeAccessToken()\n\n return {\n closeSessionData: responseData,\n closeSessionError: responseError,\n }\n}\n//endregion Logout\n\n//#region Restore Password\nexport const requestRestorePassword = async (\n email: string\n): Promise<IRestorePasswordResponse> => {\n let responseError: IError | undefined\n let successData: IRestorePasswordData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/oauth/restore-password-rn`, {\n email: email,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(\n axiosError.response?.data,\n 'Error while restoring password'\n ),\n code: axiosError.response?.status,\n }\n }\n\n if (!responseError && response?.status === 200) {\n successData = {\n message: response.data.message,\n status: response.data.status,\n }\n }\n\n return {\n data: successData,\n error: responseError,\n }\n}\n//#endregion\n\n//#region Request Password\nexport const requestResetPassword = async (\n data: IResetPasswordRequestData\n): Promise<IResetPasswordResponse> => {\n let responseError: IError | undefined\n let responseData: any | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`/auth/reset-password`, data)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : 'Reset password error',\n code:\n typeof axiosError.response?.data.status === 'number'\n ? axiosError.response.data.status\n : undefined,\n }\n }\n\n if (!responseError && response?.status === 200) {\n responseData = {\n message: response.data.message,\n status: response.status,\n }\n }\n\n return {\n error: responseError,\n data: responseData,\n }\n}\n//#endregion Request Password\n\n//#region Account Tickets\nexport const fetchAccountTickets = async ({\n page = 1,\n limit = 20,\n filter = '',\n from = '',\n}: IMyOrdersRequestParams): Promise<IAccountTicketsResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n const withFilterEvent = filter ? `&filter[event]=${filter}` : ''\n const withBrand = Config.BRAND ? `&filter[brand]=${Config.BRAND}` : ''\n const withSubBrands = Config.ARE_SUB_BRANDS_INCLUDED\n ? `&filter[subbrands]=${Config.ARE_SUB_BRANDS_INCLUDED}`\n : ''\n const withFrom = from ? `&filter[from]=${from}` : ''\n\n const endpoint = `/v1/account/tickets/?page=${page}&limit=${limit}${withFilterEvent}${withBrand}${withSubBrands}${withFrom}`\n\n try {\n response = await Client.get(endpoint)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = getApiError(axiosError)\n }\n\n if (responseError) {\n return {\n error: responseError,\n }\n }\n\n if (response?.data) {\n return {\n data: response.data.data,\n }\n }\n\n return {\n error: {\n message: 'No data was received in Account Tickets.',\n },\n }\n}\n//#endregion Account Tickets\n","import _forEach from 'lodash/forEach'\n\nimport { Client } from '../api/ApiClient'\nimport Constants from '../api/Constants'\nimport { getDomainByClientAndEnv } from './Domains'\nimport { LocalStorageKeys, storeData } from './LocalStorage'\nimport { LogLevel } from '../utils/Logger'\n\nexport type EnvType = 'PROD' | 'DEV' | 'STAG'\n\nexport interface IConfigAuth {\n ACCESS_TOKEN: string\n REFRESH_TOKEN: string\n TOKEN_TYPE: string\n SCOPE: string\n}\n\nexport interface IConfig {\n EVENT_ID?: string | number\n CLIENT?: string\n ENV?: EnvType\n CLIENT_ID?: string\n CLIENT_SECRET?: string\n TIMEOUT?: number\n BRAND?: string\n ARE_SUB_BRANDS_INCLUDED?: boolean\n AUTH?: IConfigAuth\n logLevel?: LogLevel\n [key: string]: string | number | boolean | undefined | IConfigAuth\n}\n\nexport const Config: IConfig = {} as IConfig\n\nexport const setConfig = async (configs: IConfig): Promise<string | undefined> => {\n _forEach(configs, (value, key) => {\n Config[key] = value\n })\n\n if (Config.ENV) {\n if (Config.ENV === 'PROD') {\n Client.setBaseUrl(Constants.BASE_URL)\n } else if (Config.ENV === 'DEV') {\n Client.setBaseUrl(Constants.BASE_URL_DEV)\n } else if (Config.ENV === 'STAG') {\n Client.setBaseUrl(Constants.BASE_URL_STAG)\n }\n } else {\n Client.setBaseUrl(Constants.BASE_URL)\n }\n\n if (Config.TIMEOUT) {\n Client.setTimeOut(Config.TIMEOUT)\n }\n\n if (Config.CLIENT) {\n Client.setDomain(getDomainByClientAndEnv(Config.CLIENT, Config.ENV))\n }\n\n if (!Config.CLIENT_SECRET) {\n Config.CLIENT_SECRET = Constants.CLIENT_SECRET\n }\n if (!Config.Client_ID) {\n Config.CLIENT_ID = Constants.CLIENT_ID\n }\n\n if (!Config.ARE_SUB_BRANDS_INCLUDED) {\n Config.ARE_SUB_BRANDS_INCLUDED = false\n }\n\n Config.IS_BILLING_STREET_NAME_REQUIRED = true\n\n if (Config.AUTH) {\n await storeData(LocalStorageKeys.ACCESS_TOKEN, Config.AUTH.ACCESS_TOKEN)\n await storeData(LocalStorageKeys.AUTH_TOKEN_TYPE, Config.AUTH.TOKEN_TYPE || 'Bearer')\n await storeData(LocalStorageKeys.AUTH_SCOPE, Config.AUTH.SCOPE)\n await storeData(LocalStorageKeys.REFRESH_TOKEN, Config.AUTH.REFRESH_TOKEN)\n Client.setAccessToken(Config.AUTH.ACCESS_TOKEN)\n }\n\n return undefined\n}\n","export default {\n BASE_URL: 'https://www.ticketfairy.com/api',\n BASE_URL_DEV: 'https://sandbox.ticketfairy.com/api',\n BASE_URL_STAG: 'https://test.ticketfairy.com/api',\n CLIENT_ID: 'e9d8f8922797b4621e562255afe90dbf',\n CLIENT_SECRET: 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9',\n\n PRIVACY_POLICY_LINK: 'https://www.ticketfairy.com/privacy-policy/',\n TIMEOUT: 60000,\n}\n","import { EnvType } from './Config'\n\nexport const getDomainByClientAndEnv = (\n client: string = 'ttf',\n env: EnvType = 'PROD'\n): string => {\n //@ts-ignore\n const brand = domains[client] ?? 'ttf'\n let origin = ''\n\n if (typeof brand === 'string') {\n //@ts-ignore\n origin = domains[brand][env] ?? 'https://www.ticketfairy.com'\n } else {\n origin = brand[env]\n }\n\n return origin\n}\n\nconst domains = {\n mana: {\n DEV: 'https://manacommon.com',\n STAG: 'https://manacommon.com',\n PROD: 'https://manacommon.com',\n },\n ttf: {\n DEV: 'https://sandbox.ticketfairy.com',\n STAG: 'https://test.ticketfairy.com',\n PROD: 'https://www.ticketfairy.com',\n },\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage'\nimport { jwtDecode } from 'jwt-decode'\n\nexport const LocalStorageKeys = {\n AUTH_GUEST_TOKEN: 'AUTH_GUEST_TOKEN',\n USER_DATA: 'USER_DATA',\n ACCESS_TOKEN: 'ACCESS_TOKEN',\n CHECKOUT_DATA: 'CHECKOUT_DATA',\n REFRESH_TOKEN: 'REFRESH_TOKEN',\n TOKEN_TYPE: 'TOKEN_TYPE',\n SCOPE: 'SCOPE',\n RESET_PASS_TOKEN: 'RESET_PASS_TOKEN',\n AUTH_SCOPE: 'AUTH_SCOPE',\n AUTH_TOKEN_TYPE: 'AUTH_TOKEN_TYPE',\n EVENT_COUNTRY: 'EVENT_COUNTRY',\n}\n\nexport interface IStoredUserData {\n id: string\n firstName: string\n lastName: string\n email: string\n}\n\nexport const storeData = async (key: string, value: string) => {\n try {\n await AsyncStorage.setItem(key, value)\n } catch (ex) {\n return undefined\n }\n}\n\nexport const getData = async (key: string) => {\n try {\n const value = await AsyncStorage.getItem(key)\n if (value !== null) {\n return value\n }\n } catch (ex) {\n return undefined\n }\n}\n\nexport const deleteData = async (key: string) => {\n try {\n const value = await AsyncStorage.removeItem(key)\n if (value !== null) {\n return value\n }\n } catch (ex) {\n return undefined\n }\n}\n\nexport const deleteUserData = async () => {\n try {\n const value = await AsyncStorage.multiRemove([\n LocalStorageKeys.ACCESS_TOKEN,\n LocalStorageKeys.REFRESH_TOKEN,\n LocalStorageKeys.TOKEN_TYPE,\n LocalStorageKeys.AUTH_TOKEN_TYPE,\n LocalStorageKeys.SCOPE,\n LocalStorageKeys.USER_DATA,\n LocalStorageKeys.CHECKOUT_DATA,\n LocalStorageKeys.RESET_PASS_TOKEN,\n LocalStorageKeys.AUTH_SCOPE,\n ])\n\n if (value !== null) {\n return value\n }\n } catch (ex) {\n return undefined\n }\n}\n\nexport const deleteAllData = async () => {\n try {\n const value = await AsyncStorage.multiRemove([\n LocalStorageKeys.ACCESS_TOKEN,\n LocalStorageKeys.AUTH_GUEST_TOKEN,\n LocalStorageKeys.USER_DATA,\n LocalStorageKeys.CHECKOUT_DATA,\n LocalStorageKeys.REFRESH_TOKEN,\n LocalStorageKeys.RESET_PASS_TOKEN,\n LocalStorageKeys.AUTH_TOKEN_TYPE,\n LocalStorageKeys.AUTH_SCOPE,\n LocalStorageKeys.SCOPE,\n LocalStorageKeys.TOKEN_TYPE,\n LocalStorageKeys.EVENT_COUNTRY,\n ])\n\n if (value !== null) {\n return value\n }\n } catch (ex) {\n return undefined\n }\n}\n\nexport const checkStoredData = async () => {\n try {\n const values = await AsyncStorage.multiGet([\n LocalStorageKeys.ACCESS_TOKEN,\n LocalStorageKeys.AUTH_GUEST_TOKEN,\n LocalStorageKeys.USER_DATA,\n LocalStorageKeys.CHECKOUT_DATA,\n LocalStorageKeys.REFRESH_TOKEN,\n LocalStorageKeys.RESET_PASS_TOKEN,\n LocalStorageKeys.AUTH_TOKEN_TYPE,\n LocalStorageKeys.AUTH_SCOPE,\n LocalStorageKeys.SCOPE,\n LocalStorageKeys.TOKEN_TYPE,\n LocalStorageKeys.EVENT_COUNTRY,\n ])\n return values\n } catch (ex) {\n console.log('Local Storage GetData Error - checkStoredData')\n }\n}\n\nexport const isStoredTokenValid = async () => {\n const token = await getData(LocalStorageKeys.ACCESS_TOKEN)\n if (!token) {\n return false\n }\n\n try {\n const decodedToken = jwtDecode<{ exp?: number }>(token)\n\n // Check if exp is missing or invalid\n if (!decodedToken || typeof decodedToken.exp !== 'number') {\n await deleteData(LocalStorageKeys.ACCESS_TOKEN)\n await deleteData(LocalStorageKeys.USER_DATA)\n return false\n }\n\n // Check if token is expired\n if (decodedToken.exp < Date.now() / 1000) {\n await deleteData(LocalStorageKeys.ACCESS_TOKEN)\n await deleteData(LocalStorageKeys.USER_DATA)\n return false\n }\n\n return true\n } catch {\n // Token is malformed or cannot be decoded\n await deleteData(LocalStorageKeys.ACCESS_TOKEN)\n await deleteData(LocalStorageKeys.USER_DATA)\n return false\n }\n}\n","import { AxiosError } from 'axios'\n\nimport { IError } from '../types'\n\nconst ERROR = 'Something went wrong!'\n\ninterface ErrorResponseData {\n message?: string | { email?: string; [key: string]: any }\n [key: string]: any\n}\n\nexport const getApiError = (\n error: AxiosError<ErrorResponseData>,\n defaultMessage?: string\n): IError => {\n const errorJSON = error.toJSON()\n\n if (error.response) {\n const message = error.response?.data?.message\n return {\n message: typeof message === 'string' ? message : defaultMessage || ERROR,\n code: error.response?.status,\n }\n } else {\n if (error.code === 'ECONNABORTED') {\n return {\n // @ts-ignore\n message: errorJSON.message || 'Connection time out',\n }\n }\n }\n\n return {\n message: defaultMessage || ERROR,\n }\n}\n","import { Config } from '../../helpers/Config'\n\nexport const getFetchAccessTokenBody = (authorizationCode: string): FormData => {\n const bodyFormDataToken = new FormData()\n bodyFormDataToken.append('code', authorizationCode)\n bodyFormDataToken.append('scope', 'profile')\n bodyFormDataToken.append('grant_type', 'authorization_code')\n bodyFormDataToken.append('client_id', Config.CLIENT_ID)\n bodyFormDataToken.append('client_secret', Config.CLIENT_SECRET)\n\n return bodyFormDataToken\n}\n\nexport const getRefreshAccessTokenBody = (refreshToken: string): FormData => {\n const bodyFormDataToken = new FormData()\n bodyFormDataToken.append('grant_type', 'refresh_token')\n bodyFormDataToken.append('client_id', Config.CLIENT_ID)\n bodyFormDataToken.append('client_secret', Config.CLIENT_SECRET)\n bodyFormDataToken.append('refresh_token', refreshToken)\n\n return bodyFormDataToken\n}\n","import { fetchAccessToken } from '../api/ApiClient'\nimport { IFetchAccessTokenResponse } from '../api/types'\nimport { getRefreshAccessTokenBody } from '../core/LoginCore/LoginCoreHelper'\nimport { getData, LocalStorageKeys } from './LocalStorage'\n\nexport const refreshAccessToken = async (\n refreshToken?: string\n): Promise<IFetchAccessTokenResponse> => {\n let token = await getData(LocalStorageKeys.REFRESH_TOKEN)\n if (refreshToken) {\n token = refreshToken\n }\n if (!token) {\n return {\n accessTokenError: {\n message: 'There is not stored or passed Refresh Token',\n },\n }\n }\n\n const refreshTokenBody = getRefreshAccessTokenBody(token)\n const response = await fetchAccessToken(refreshTokenBody)\n\n return response\n}\n","/**\n * @deprecated This component is deprecated and will be removed in a future release.\n * Please use the hooks from 'tf-checkout-react-native' instead.\n * Example: import { useCheckoutFlow } from 'tf-checkout-react-native'\n * See README.md in this directory for migration guide.\n */\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { forwardRef, useImperativeHandle } from 'react'\nimport BackgroundTimer from 'react-native-background-timer'\n\nimport {\n fetchEventConditions,\n fetchOrderDetails,\n fetchOrderReview,\n postOnFreeRegistration,\n postOnPaymentSuccess,\n} from '../../api/ApiClient'\nimport {\n IFetchAccessTokenResponse,\n IFreeRegistrationResponse,\n IMyOrderDetailsResponse,\n IOrderReviewResponse,\n} from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { CheckoutCoreHandle, ICheckoutCoreProps } from './CheckoutCoreTypes'\n\n/**\n * @deprecated Use the hooks from 'tf-checkout-react-native' instead.\n * Example: import { useCheckoutFlow } from 'tf-checkout-react-native'\n */\nconst CheckoutCore = forwardRef<CheckoutCoreHandle, ICheckoutCoreProps>((props, ref) => {\n const [secondsLeft, setSecondsLeft] = useState(420)\n const [timerOn, setTimerOn] = useState(false)\n\n const handleStopTimer = useCallback(() => {\n BackgroundTimer.stop()\n BackgroundTimer.stopBackgroundTimer()\n }, [])\n\n const handleStartTimer = useCallback(() => {\n BackgroundTimer.runBackgroundTimer(() => {\n setSecondsLeft((secs) => {\n if (secs > 0) {\n return secs - 1\n } else {\n return 0\n }\n })\n }, 1000)\n }, [])\n\n const handleTimeIsUp = () => {\n BackgroundTimer.stopBackgroundTimer()\n props.onCartExpired?.()\n }\n\n useEffect(() => {\n if (secondsLeft === 0) {\n handleTimeIsUp()\n }\n props.onSecondsLeftChange?.(secondsLeft)\n }, [secondsLeft])\n\n useEffect(() => {\n if (timerOn) {\n handleStartTimer()\n } else {\n BackgroundTimer.stopBackgroundTimer()\n }\n return () => {\n BackgroundTimer.stopBackgroundTimer()\n }\n }, [handleStartTimer, timerOn])\n\n useImperativeHandle(ref, () => ({\n async getEventConditions(): Promise<any> {\n return await fetchEventConditions()\n },\n\n async getPurchaseOrderDetails(orderId: string): Promise<IMyOrderDetailsResponse> {\n return await fetchOrderDetails(orderId)\n },\n\n async getOrderReview(orderHash: string): Promise<IOrderReviewResponse> {\n const res = await fetchOrderReview(orderHash)\n if (res.orderReviewData) {\n setSecondsLeft(res.orderReviewData.expiresAt)\n setTimerOn(true)\n }\n return res\n },\n\n async freeRegistration(orderHash: string): Promise<IFreeRegistrationResponse> {\n return await postOnFreeRegistration(orderHash)\n },\n\n async paymentSuccess(orderHash: string): Promise<any> {\n return await postOnPaymentSuccess(orderHash)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n stopCartTimer() {\n return handleStopTimer()\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default CheckoutCore\n","import React, { forwardRef, useImperativeHandle } from 'react'\n\nimport {\n authorize,\n closeSession,\n fetchAccessToken,\n fetchUserProfile,\n requestResetPassword,\n requestRestorePassword,\n} from '../../api/ApiClient'\nimport { ICloseSessionResponse, IResetPasswordRequestData } from '../../api/types'\nimport { ILoginFields } from '../../components/login/types'\nimport { IStoredUserData, LocalStorageKeys, storeData } from '../../helpers/LocalStorage'\nimport { IUserProfilePublic } from '../../types'\nimport { ICoreProps } from '../CoreProps'\nimport { getFetchAccessTokenBody } from './LoginCoreHelper'\nimport { ILoginCoreResponse, LoginCoreHandle } from './LoginCoreTypes'\n\nconst LoginCore = forwardRef<LoginCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n // #region Login\n async login({ email, password }: ILoginFields): Promise<ILoginCoreResponse> {\n const bodyFormData = new FormData()\n bodyFormData.append('email', email)\n bodyFormData.append('password', password)\n\n const { code: authorizationCode, error: authorizationError } =\n await authorize(bodyFormData)\n\n if (authorizationError) {\n return {\n error: {\n ...authorizationError,\n extraData: { endpoint: 'authorize' },\n },\n }\n }\n\n if (!authorizationCode) {\n return {\n error: {\n message: 'There is no authorization code',\n extraData: { endpoint: 'authorize' },\n },\n }\n }\n\n const { accessTokenError, accessTokenData } = await fetchAccessToken(\n getFetchAccessTokenBody(authorizationCode)\n )\n\n if (accessTokenError) {\n return {\n error: {\n ...accessTokenError,\n extraData: {\n endpoint: 'accessToken',\n },\n },\n }\n }\n\n const { userProfileError, userProfileData } = await fetchUserProfile()\n\n if (userProfileError) {\n return {\n error: {\n ...userProfileError,\n extraData: {\n endpoint: 'userProfile',\n },\n },\n }\n }\n\n if (!userProfileData) {\n return {\n error: {\n message: 'There is no user profile',\n extraData: {\n endpoint: 'userProfile',\n },\n },\n }\n }\n\n const storedUserData: IStoredUserData = {\n id: userProfileData!.id,\n firstName: userProfileData!.firstName,\n lastName: userProfileData!.lastName,\n email: userProfileData!.email,\n }\n\n const userPublicData: IUserProfilePublic = {\n customerId: userProfileData.id,\n firstName: userProfileData.firstName,\n lastName: userProfileData.lastName,\n email: userProfileData.email,\n phone: userProfileData.phone,\n streetAddress: userProfileData.streetAddress,\n zipCode: userProfileData.zipCode,\n countryId: userProfileData.countryId,\n city: userProfileData.city,\n state: userProfileData.state,\n company: userProfileData.company,\n stateId: userProfileData.stateId,\n dateOfBirth: userProfileData.dateOfBirth,\n }\n\n await storeData(LocalStorageKeys.USER_DATA, JSON.stringify(storedUserData))\n\n return { userProfile: userPublicData, accessTokenData: accessTokenData }\n },\n // #endregion Login\n\n // #region Logout\n async logout(): Promise<ICloseSessionResponse> {\n return await closeSession()\n },\n // #endregion Logout\n\n // #region Restore Password\n async restorePassword(email: string) {\n const response = await requestRestorePassword(email)\n return response\n },\n // #endregion Restore Password\n\n // #region Reset Password\n async resetPassword(data: IResetPasswordRequestData) {\n const response = await requestResetPassword(data)\n return response\n },\n // #endregion Reset Password\n }))\n\n return <>{props.children}</>\n})\n\nexport default LoginCore\n","import React from 'react'\nimport { forwardRef, useImperativeHandle } from 'react'\n\nimport {\n fetchAccountTickets,\n fetchMyOrders,\n fetchOrderDetails,\n} from '../../api/ApiClient'\nimport {\n IFetchAccessTokenResponse,\n IMyOrderDetailsResponse,\n IMyOrdersRequestParams,\n IMyOrdersResponse,\n} from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { IAccountTicketsResponse } from '../../types'\nimport { ICoreProps } from '../CoreProps'\nimport { MyOrdersCoreHandle } from './MyOrdersCoreTypes'\n\nconst MyOrdersCore = forwardRef<MyOrdersCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async getMyOrders(params: IMyOrdersRequestParams): Promise<IMyOrdersResponse> {\n return await fetchMyOrders(params)\n },\n\n async getOrderDetails(orderId: string): Promise<IMyOrderDetailsResponse> {\n return await fetchOrderDetails(orderId)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n async getAccountTickets(\n params: IMyOrdersRequestParams\n ): Promise<IAccountTicketsResponse> {\n return await fetchAccountTickets(params)\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default MyOrdersCore\n","import React, { forwardRef, useImperativeHandle } from 'react'\n\nimport { removeTicketFromResale, resaleTicket } from '../../api/ApiClient'\nimport {\n IFetchAccessTokenResponse,\n IRemoveTicketFromResaleResponse,\n IResaleTicketResponse,\n} from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { ICoreProps } from '../CoreProps'\nimport { OrderDetailsCoreHandle } from './OrderDetailsCoreTypes'\n\nconst OrderDetailsCore = forwardRef<OrderDetailsCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async resaleTicket(\n data: FormData,\n orderHash: string\n ): Promise<IResaleTicketResponse> {\n return await resaleTicket(data, orderHash)\n },\n\n async removeTicketFromResale(\n orderHash: string\n ): Promise<IRemoveTicketFromResaleResponse> {\n return await removeTicketFromResale(orderHash)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default OrderDetailsCore\n","import React, { forwardRef, useCallback, useImperativeHandle } from 'react'\nimport BackgroundTimer from 'react-native-background-timer'\n\nimport { fetchPurchaseConfirmation } from '../../api/ApiClient'\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { ICoreProps } from '../CoreProps'\nimport { PurchaseConfirmationCoreHandle } from './PurchaseConfirmationCoreTypes'\n\nconst PurchaseConfirmationCore = forwardRef<PurchaseConfirmationCoreHandle, ICoreProps>(\n (props, ref) => {\n const handleStopTimer = useCallback(() => {\n BackgroundTimer.stop()\n BackgroundTimer.stopBackgroundTimer()\n }, [])\n\n useImperativeHandle(ref, () => ({\n async getPurchaseConfirmation(orderHash: string): Promise<any> {\n return await fetchPurchaseConfirmation(orderHash)\n },\n\n async refreshAccessToken(\n refreshToken?: string\n ): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n stopCartTimer() {\n return handleStopTimer()\n },\n }))\n\n return <>{props.children}</>\n }\n)\n\nexport default PurchaseConfirmationCore\n","import React, { forwardRef, useImperativeHandle } from 'react'\n\nimport { requestResetPassword } from '../../api/ApiClient'\nimport { IResetPasswordRequestData, IResetPasswordResponse } from '../../api/types'\nimport { ICoreProps } from '../CoreProps'\nimport { ResetPasswordCoreHandle } from './ResetPasswordCoreTypes'\n\nconst ResetPasswordCore = forwardRef<ResetPasswordCoreHandle, ICoreProps>(\n (props, ref) => {\n useImperativeHandle(ref, () => ({\n async postResetPassword(\n data: IResetPasswordRequestData\n ): Promise<IResetPasswordResponse> {\n return await requestResetPassword(data)\n },\n }))\n return <>{props.children}</>\n }\n)\n\nexport default ResetPasswordCore\n","import React from 'react'\nimport { forwardRef, useImperativeHandle } from 'react'\n\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { ICoreProps } from '../CoreProps'\nimport { SessionHandleType } from './SessionCoreTypes'\n\nconst SessionHandle = forwardRef<SessionHandleType, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n async reloadData() {\n return null\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default SessionHandle\n","import { jwtDecode } from 'jwt-decode'\nimport _find from 'lodash/find'\nimport _groupBy from 'lodash/groupBy'\nimport _map from 'lodash/map'\nimport _mapKeys from 'lodash/mapKeys'\nimport _sortBy from 'lodash/sortBy'\nimport React, { forwardRef, useImperativeHandle } from 'react'\n\nimport {\n addToCart,\n closeSession,\n fetchAccountTickets,\n fetchEvent,\n fetchTickets,\n postReferralVisit,\n unlockPasswordProtectedEvent,\n} from '../../api/ApiClient'\nimport {\n IAddToCartParams,\n ICloseSessionResponse,\n IEventResponse,\n IFetchAccessTokenResponse,\n IMyOrdersRequestParams,\n IPostReferralResponse,\n} from '../../api/types'\nimport { Config } from '../../helpers/Config'\nimport { deleteData, getData, LocalStorageKeys } from '../../helpers/LocalStorage'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { IAccountTicketsResponse, IAddToCartResponse, ITicket } from '../../types'\nimport { ICoreProps } from '../CoreProps'\nimport {\n IBookTicketsOptions,\n IGetTicketsOptions,\n IGetTicketsPayload,\n IGroupedTickets,\n TicketsCoreHandle,\n} from './TicketsCoreTypes'\n\nconst TicketsCore = forwardRef<TicketsCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async getTickets({\n promoCode,\n areTicketsSortedBySoldOut,\n areTicketsGrouped,\n referredId,\n }: IGetTicketsOptions): Promise<IGetTicketsPayload> {\n const groupTickets = (tickets: ITicket[]) => {\n // Create an array of tickets with the GroupName set\n const ticketsWithGroupName = _map(tickets, (ticket) => {\n return {\n ...ticket,\n groupName: ticket.groupName || '',\n }\n })\n const groupedTickets = _groupBy(ticketsWithGroupName, 'groupName')\n const ticketsSections: IGroupedTickets[] = []\n _mapKeys(groupedTickets, (val, key) => {\n ticketsSections.push({\n title: key,\n data: val,\n })\n })\n\n return ticketsSections\n }\n // PromoCode higher priority than ReferredId\n\n const ticketsResponse = await fetchTickets({\n promoCode: promoCode,\n referredId: referredId,\n })\n\n if (ticketsResponse.error || !ticketsResponse.tickets) {\n return ticketsResponse\n }\n\n const sortedTickets = areTicketsSortedBySoldOut\n ? _sortBy(_sortBy(ticketsResponse.tickets, 'sortOrder'), 'soldOut')\n : _sortBy(ticketsResponse.tickets, 'sortOrder')\n\n const areGroupsShown = !!_find(sortedTickets, (ticket) => ticket.groupName)\n\n if (!areTicketsSortedBySoldOut) {\n if (!areTicketsGrouped) {\n return {\n ...ticketsResponse,\n tickets: sortedTickets,\n areGroupsShown: false,\n }\n }\n if (areGroupsShown) {\n return {\n ...ticketsResponse,\n tickets: groupTickets(sortedTickets),\n areGroupsShown: areGroupsShown,\n }\n } else {\n return {\n ...ticketsResponse,\n tickets: sortedTickets,\n areGroupsShown: areGroupsShown,\n }\n }\n } else {\n // Sort tickets by sold out\n if (!areTicketsGrouped) {\n return {\n ...ticketsResponse,\n tickets: sortedTickets,\n areGroupsShown: false,\n }\n } else {\n if (areGroupsShown) {\n return {\n ...ticketsResponse,\n tickets: groupTickets(sortedTickets),\n areGroupsShown: areGroupsShown,\n }\n }\n return {\n ...ticketsResponse,\n tickets: sortedTickets,\n areGroupsShown: areGroupsShown,\n }\n }\n }\n },\n\n async getEvent(): Promise<IEventResponse> {\n return await fetchEvent()\n },\n\n async unlockPasswordProtectedEvent(password: string): Promise<IEventResponse> {\n return await unlockPasswordProtectedEvent(password)\n },\n\n async addToCart({\n quantity,\n optionName,\n ticketId,\n price,\n }: IBookTicketsOptions): Promise<IAddToCartResponse> {\n if (!Config.EVENT_ID) {\n return {\n error: {\n message: 'Event ID is not configured',\n },\n }\n }\n const parsedEventId =\n typeof Config.EVENT_ID === 'string'\n ? parseInt(Config.EVENT_ID, 10)\n : Config.EVENT_ID\n\n const data: IAddToCartParams = {\n attributes: {\n alternative_view_id: null,\n product_cart_quantity: quantity,\n product_options: {\n [optionName]: ticketId,\n },\n product_id: parsedEventId,\n ticket_types: {\n [ticketId]: {\n product_options: {\n [optionName]: ticketId,\n ticket_price: price,\n },\n quantity: quantity,\n },\n },\n },\n }\n return await addToCart(data)\n },\n\n async getIsUserLoggedIn(): Promise<boolean> {\n const token = await getData(LocalStorageKeys.ACCESS_TOKEN)\n\n if (!token) {\n return false\n }\n\n const decodedToken = jwtDecode<{ exp: number }>(token)\n if (decodedToken && decodedToken.exp < Date.now() / 1000) {\n await deleteData(LocalStorageKeys.ACCESS_TOKEN)\n await deleteData(LocalStorageKeys.USER_DATA)\n return false\n }\n\n return true\n },\n\n async logout(): Promise<ICloseSessionResponse> {\n return await closeSession()\n },\n\n async postReferralVisit(referralId: string): Promise<IPostReferralResponse> {\n return await postReferralVisit(referralId)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n async getAccountTickets(\n params: IMyOrdersRequestParams\n ): Promise<IAccountTicketsResponse> {\n return await fetchAccountTickets(params)\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default TicketsCore\n","import React, { forwardRef, useImperativeHandle } from 'react'\n\nimport { addToWaitingList } from '../../api/ApiClient'\nimport { IAddToWaitingListResponse, IFetchAccessTokenResponse } from '../../api/types'\nimport { IWaitingListFields } from '../../components/waitingList/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { ICoreProps } from '../CoreProps'\nimport {\n IAddToWaitingListCoreParams,\n WaitingListCoreHandle,\n} from './WaitingListCoreTypes'\n\nconst WaitingListCore = forwardRef<WaitingListCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async addToWaitingList(\n params: IAddToWaitingListCoreParams\n ): Promise<IAddToWaitingListResponse> {\n const fields: IWaitingListFields = {\n ticketTypeId: '',\n quantity: '',\n ...params,\n }\n\n return await addToWaitingList(fields)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default WaitingListCore\n","import React, { FC, useMemo, useState } from 'react'\nimport { Alert, Image, Modal, Text, TouchableOpacity, View } from 'react-native'\n\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validateEmail, validateMinLength } from '../../helpers/Validators'\nimport R from '../../res'\nimport Button from '../button/Button'\nimport RestorePassword from '../restorePassword/RestorePassword'\nimport ResultDialog from '../restorePassword/ResultDialog'\nimport LoginForm from './components/LoginForm'\nimport s from './styles'\nimport { ILoginViewProps, ILoginViewState } from './types'\n\nconst initialState: ILoginViewState = {\n loginEmail: '',\n loginPassword: '',\n}\n\nconst LoginView: FC<ILoginViewProps> = ({\n showDialog,\n hideDialog,\n isDialogVisible,\n onPressLogin,\n isLoading,\n onPressLogout,\n styles,\n texts,\n userFirstName,\n loginApiError,\n brandImages,\n isShowPasswordButtonVisible,\n content,\n onPressForgotPassword,\n restorePasswordProps,\n resultDialogPropsProps,\n}) => {\n const [data, setData] = useState<ILoginViewState>(initialState)\n const { loginEmail, loginPassword } = data\n\n const loginEmailError = useDebounced(loginEmail, validateEmail)\n const loginPasswordError = useDebounced(loginPassword, (value: string) =>\n validateMinLength(value, 6, 'Password')\n )\n\n const handleOnPressLogin = () => {\n onPressLogin({\n email: loginEmail,\n password: loginPassword,\n })\n }\n\n const logoutTitle = texts?.logoutDialog?.title\n ? texts.logoutDialog.title\n : 'Are you sure that you want to logout?'\n\n const logoutMessage = texts?.logoutDialog?.message\n ? texts.logoutDialog.message\n : 'You will need to enter your login data again to place the order.'\n\n const logoutConfirm = texts?.logoutDialog?.confirm\n ? texts.logoutDialog.confirm\n : 'Yes, logout'\n\n const logoutCancel = texts?.logoutDialog?.cancel ? texts.logoutDialog.cancel : 'No'\n\n const line1 = texts?.line1 || 'Got a TICKETFAIRY account?'\n\n const line2 = texts?.line2 || 'Login & skip ahead:'\n\n const handleLogout = () => {\n setData(initialState)\n if (onPressLogout) {\n onPressLogout()\n }\n }\n\n const checkIsLoginDataValid = (): boolean => {\n if (loginEmailError) {\n return false\n }\n if (loginPasswordError) {\n return false\n }\n return true\n }\n\n const LoggedComponent = () => (\n <View style={styles?.loggedIn?.container}>\n <Text style={styles?.loggedIn?.placeholder}>\n {texts?.loggedIn?.loggedAs || 'Logged in as:'}{' '}\n <Text style={styles?.loggedIn?.value}>{userFirstName}</Text>\n </Text>\n <Text style={styles?.loggedIn?.message}>\n {texts?.loggedIn?.notYou || 'Not you?'}\n </Text>\n <Button\n text={texts?.logoutButton || 'LOGOUT'}\n onPress={handleOnPressLogout}\n styles={{ container: s.button, ...styles?.loggedIn?.button }}\n />\n </View>\n )\n\n const GuestComponent = () => (\n <>\n {texts?.message ? (\n <Text style={styles?.guest?.message}>{texts?.message}</Text>\n ) : (\n <View style={styles?.guest?.linesContainer}>\n <Text style={styles?.guest?.line1}>{line1}</Text>\n <Text style={styles?.guest?.line2}>{line2}</Text>\n </View>\n )}\n <Button\n styles={{ container: s.button, ...styles?.guest?.loginButton }}\n text={texts?.loginButton || 'LOGIN'}\n onPress={showDialog}\n />\n </>\n )\n\n const BrandImages = useMemo(\n () => (\n <View style={brandImages?.containerStyle}>\n <Image\n source={brandImages?.image1 || R.images.brand}\n style={[s.brand, brandImages?.image1Style]}\n />\n\n {brandImages?.image2 && (\n <Image source={brandImages.image2} style={brandImages?.image2Style} />\n )}\n </View>\n ),\n [\n brandImages?.containerStyle,\n brandImages?.image1,\n brandImages?.image1Style,\n brandImages?.image2,\n brandImages?.image2Style,\n ]\n )\n\n //#region Button Press\n const handleOnPressLogout = () => {\n Alert.alert(logoutTitle, logoutMessage, [\n {\n text: logoutConfirm,\n onPress: handleLogout,\n style: 'destructive',\n },\n {\n text: logoutCancel,\n },\n ])\n }\n //#endregion Button Press\n\n //#region Text Changed\n const handleOnLoginEmailChanged = (text: string) =>\n setData({ ...data, loginEmail: text })\n\n const handleOnLoginPasswordChanged = (text: string) =>\n setData({ ...data, loginPassword: text })\n //#endregion Text Changed\n\n const renderContent = (): React.ReactElement => {\n switch (content) {\n case 'login':\n return (\n <LoginForm\n email={loginEmail}\n emailError={loginEmailError}\n onEmailChanged={handleOnLoginEmailChanged}\n password={loginPassword}\n passwordError={loginPasswordError}\n onPasswordChanged={handleOnLoginPasswordChanged}\n onPressLoginButton={handleOnPressLogin}\n onPressForgotPassword={onPressForgotPassword}\n viewProps={{\n styles: styles,\n texts: texts,\n }}\n loginApiError={loginApiError}\n isLoginButtonDisabled={!checkIsLoginDataValid()}\n isLoading={isLoading}\n brandImages={BrandImages}\n isShowPasswordButtonVisible={isShowPasswordButtonVisible}\n />\n )\n\n case 'restorePassword':\n return (\n <RestorePassword\n onPressRestorePasswordButton={\n restorePasswordProps.onPressRestorePasswordButton\n }\n onPressCancelButton={restorePasswordProps.onPressCancelButton}\n styles={styles?.restorePassword}\n texts={texts?.restorePassword}\n isLoading={restorePasswordProps.isLoading}\n />\n )\n\n case 'restorePasswordSuccess':\n return (\n <ResultDialog\n onPressButton={() => {\n resultDialogPropsProps?.onPressButton()\n }}\n message={resultDialogPropsProps?.message}\n />\n )\n\n default:\n return (\n <LoginForm\n email={loginEmail}\n emailError={loginEmailError}\n onEmailChanged={handleOnLoginEmailChanged}\n password={loginPassword}\n passwordError={loginPasswordError}\n onPasswordChanged={handleOnLoginPasswordChanged}\n onPressLoginButton={handleOnPressLogin}\n onPressForgotPassword={onPressForgotPassword}\n viewProps={{\n styles: styles,\n texts: texts,\n }}\n loginApiError={loginApiError}\n isLoginButtonDisabled={!checkIsLoginDataValid()}\n isLoading={isLoading}\n brandImages={BrandImages}\n isShowPasswordButtonVisible={isShowPasswordButtonVisible}\n />\n )\n }\n }\n\n //#region Render main component\n return (\n <View style={s.rootContainer}>\n {userFirstName ? LoggedComponent() : GuestComponent()}\n\n {isDialogVisible && (\n <Modal transparent={true} presentationStyle=\"overFullScreen\">\n <View style={s.touchableContainer}>\n <TouchableOpacity style={s.dismissibleArea} onPress={hideDialog}>\n <TouchableOpacity>{renderContent()}</TouchableOpacity>\n </TouchableOpacity>\n </View>\n </Modal>\n )}\n </View>\n )\n //#endregion Render main component\n}\n\nexport default LoginView\n","import { useEffect, useState } from 'react'\nconst DELAY = 300\n\nexport const useDebounced = (value: string, validate: (value: string) => string) => {\n const [debouncedValue, setDebouncedValue] = useState(value)\n const [error, setError] = useState<string>()\n useEffect(\n () => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n if (debouncedValue) {\n setError(validate(value))\n }\n }, DELAY)\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler)\n }\n },\n [debouncedValue, validate, value] // Only re-call effect if value or delay changes\n )\n return error\n}\n","export const emailRegex =\n /^(([^<>()\\[\\]\\\\.,;:\\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\n//https://www.twilio.com/docs/glossary/what-e164\nexport const phoneRegex = /^\\+[1-9]\\d{1,14}$/\n\nconst emptyRegex = /^\\s+$/\n\nexport const validateEmpty = (value?: string | number, message?: string): string => {\n if (!value) {\n return message || 'Required'\n }\n\n if (typeof value === 'string') {\n return emptyRegex.test(value) ? message || 'Required' : ''\n }\n return ''\n}\n\nexport const validateMinLength = (\n value: string,\n minLength: number,\n fieldName: string = 'Field'\n) =>\n value.length < minLength ? `${fieldName} requires at least ${minLength} characters` : ''\n\nexport const validateEmail = (email: string, equalTo?: string) => {\n if (!email) {\n return 'Required'\n }\n\n let validation = ''\n\n if (equalTo) {\n validation = email === equalTo ? '' : 'Emails must match'\n }\n if (validation) {\n return validation\n }\n return !emailRegex.test(email) ? 'Please enter a valid email address' : ''\n}\n\nexport const validatePasswords = (password?: string, equalTo?: string) => {\n if (!password) {\n return 'Required'\n }\n\n let validation = ''\n if (equalTo) {\n validation = password === equalTo ? '' : 'Passwords must match'\n }\n if (validation) {\n return validation\n }\n validation = validateEmpty(password)\n if (validation) {\n return validation\n }\n\n return validateMinLength(password, 6, 'Password')\n}\n\nexport const validateAge = (dateOfBirth?: Date, minimumAge: number = 18): string => {\n if (!dateOfBirth) {\n return 'Required'\n }\n\n const today = new Date()\n const age = today.getFullYear() - dateOfBirth.getFullYear()\n return age < minimumAge ? `You must be at least ${minimumAge} years old` : ''\n}\n\ninterface IValidatePhoneNumber {\n phoneNumber?: string\n customError?: string\n countryCode?: string\n}\n\nexport const validatePhoneNumber = ({\n phoneNumber,\n customError,\n countryCode,\n}: IValidatePhoneNumber) => {\n if (!phoneNumber) {\n return customError || 'Please enter a phone number'\n }\n\n if (phoneNumber === countryCode)\n return customError || 'Please enter a valid phone number'\n\n return !phoneRegex.test(`${phoneNumber}`)\n ? customError || 'Please enter a valid phone number'\n : ''\n}\n\nexport const validateDropDownEmpty = (selectedOptionId?: string | number): string => {\n if (!selectedOptionId) return 'Required'\n\n if (typeof selectedOptionId === 'string') {\n return selectedOptionId === '-1' ? 'Required' : ''\n }\n\n if (typeof selectedOptionId === 'number') {\n return selectedOptionId === -1 ? 'Required' : ''\n }\n\n return ''\n}\n","import React, { FC, useState } from 'react'\nimport { Text, View } from 'react-native'\n\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validateEmail } from '../../helpers/Validators'\nimport Button from '../button/Button'\nimport Input from '../input/Input'\nimport { restorePasswordStyles as s } from './styles'\nimport { IRestorePasswordProps } from './types'\n\nconst RestorePassword: FC<IRestorePasswordProps> = ({\n styles,\n texts,\n isLoading,\n onPressRestorePasswordButton,\n onPressCancelButton,\n apiError,\n}) => {\n const [email, setEmail] = useState('')\n const emailError = useDebounced(email, validateEmail)\n\n const handleOnPressRestoreButton = () => {\n onPressRestorePasswordButton(email)\n }\n\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Text style={[s.title, styles?.title]}>\n {texts?.title || 'Enter your email to restore your password'}\n </Text>\n\n <Input\n label={texts?.inputLabel || 'Email'}\n error={emailError}\n keyboardType=\"email-address\"\n value={email}\n onChangeText={setEmail}\n autoCapitalize=\"none\"\n styles={styles?.input}\n />\n\n {!!apiError && <Text style={styles?.apiError}>{apiError}</Text>}\n\n <Button\n text={texts?.restorePasswordButton || 'RESTORE PASSWORD'}\n onPress={handleOnPressRestoreButton}\n isLoading={isLoading}\n isDisabled={isLoading || !!emailError || email.length === 0}\n styles={styles?.restorePasswordButton}\n />\n\n {!isLoading && (\n <Button\n text={texts?.cancelButton || 'CANCEL'}\n onPress={onPressCancelButton}\n styles={styles?.cancelRestorePasswordButton}\n />\n )}\n </View>\n )\n}\n\nexport default RestorePassword\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport const restorePasswordStyles = StyleSheet.create({\n rootContainer: {\n paddingVertical: 32,\n width: '80%',\n backgroundColor: R.colors.white,\n borderRadius: 2,\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n title: {\n color: R.colors.black,\n fontSize: 18,\n fontWeight: '800',\n },\n})\n\nexport const restorePasswordSuccessStyles = StyleSheet.create({\n rootContainer: {\n paddingVertical: 32,\n width: '80%',\n backgroundColor: R.colors.white,\n borderRadius: 2,\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n title: {\n color: R.colors.black,\n fontSize: 18,\n fontWeight: '800',\n },\n message: {\n color: R.colors.black,\n },\n})\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport Button from '../button/Button'\nimport { restorePasswordSuccessStyles as s } from './styles'\nimport { IResultDialogProps } from './types'\n\nconst ResultDialog: FC<IResultDialogProps> = ({\n styles,\n texts,\n message,\n onPressButton,\n}) => (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Text style={[s.title, styles?.title]}>{texts?.title || 'Email Sent!'}</Text>\n\n {!!texts?.message && (\n <Text style={[s.message, styles?.message]}>{texts.message}</Text>\n )}\n {!!message && <Text>{message}</Text>}\n\n <Button text={texts?.button || 'OK'} onPress={onPressButton!} />\n </View>\n)\n\nexport default ResultDialog\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport Button from '../../button/Button'\nimport Input from '../../input/Input'\nimport s from '../styles'\nimport { ILoginFormProps } from './types'\n\nconst LoginForm: FC<ILoginFormProps> = ({\n viewProps,\n email,\n emailError,\n onEmailChanged,\n password,\n passwordError,\n onPasswordChanged,\n loginApiError,\n isShowPasswordButtonVisible,\n onPressForgotPassword,\n isLoginButtonDisabled,\n isLoading,\n onPressLoginButton,\n brandImages,\n}) => {\n const { styles, texts } = viewProps || {}\n\n return (\n <View style={[s.dialog, styles?.dialog?.container]}>\n <Text style={[s.dialogTitle, styles?.dialog?.title]}>\n {texts?.dialog?.title || 'Login'}\n </Text>\n\n {brandImages}\n\n {!!texts?.dialog?.message && (\n <Text style={[s.message, styles?.dialog?.message]}>{texts.dialog.message}</Text>\n )}\n\n <Input\n label={texts?.dialog?.emailLabel || 'Email'}\n error={emailError}\n keyboardType=\"email-address\"\n value={email}\n onChangeText={onEmailChanged}\n autoCapitalize=\"none\"\n styles={styles?.dialog?.input}\n />\n <Input\n label={texts?.dialog?.passwordLabel || 'Password'}\n error={passwordError}\n keyboardType=\"default\"\n value={password}\n onChangeText={onPasswordChanged}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n isShowPasswordButtonVisible={isShowPasswordButtonVisible}\n styles={styles?.dialog?.input}\n />\n\n {!!loginApiError && (\n <Text style={[s.error, styles?.dialog?.apiError]}>{loginApiError}</Text>\n )}\n\n <Text\n onPress={onPressForgotPassword}\n style={[s.forgotPassword, styles?.dialog?.forgotPassword]}\n >\n {texts?.dialog?.forgotPassword || 'Forgot Password'}\n </Text>\n\n <Button\n styles={\n isLoginButtonDisabled\n ? {\n container: [s.loginButton],\n ...styles?.dialog?.loginButtonDisabled,\n }\n : {\n container: [s.loginButton],\n ...styles?.dialog?.loginButton,\n }\n }\n text={texts?.dialog?.loginButton || 'LOGIN'}\n onPress={onPressLoginButton}\n isLoading={isLoading}\n isDisabled={isLoginButtonDisabled}\n />\n </View>\n )\n}\n\nexport default LoginForm\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\nexport default StyleSheet.create({\n rootContainer: {\n paddingVertical: 16,\n },\n title: {\n fontWeight: '800',\n },\n button: {\n marginVertical: 16,\n },\n touchableContainer: {\n flex: 1,\n },\n dismissibleArea: {\n flex: 1,\n backgroundColor: R.colors.transparentBlack,\n justifyContent: 'center',\n alignItems: 'center',\n },\n dialog: {\n paddingVertical: 32,\n width: '80%',\n backgroundColor: R.colors.white,\n borderRadius: 2,\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n dialogTitle: {\n color: R.colors.black,\n fontSize: 18,\n fontWeight: '800',\n },\n emailInput: {\n marginBottom: 16,\n },\n loginButton: {\n height: 45,\n width: '100%',\n marginTop: 16,\n },\n brand: {\n width: 200,\n height: 50,\n resizeMode: 'contain',\n marginBottom: 16,\n tintColor: R.colors.white,\n },\n message: {\n color: R.colors.black,\n marginBottom: 24,\n marginTop: -8,\n },\n error: {\n color: R.colors.danger,\n fontWeight: '600',\n },\n forgotPassword: {\n color: R.colors.black,\n },\n})\n","import InputPhone from '@sesamsolutions/phone-input'\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react'\nimport { Platform, View } from 'react-native'\n\nimport Input from '../input/Input'\nimport s from './/styles'\nimport { IOnChangePhoneNumberPayload, IPhoneInputProps } from './types'\n\nconst PhoneInput: FC<IPhoneInputProps> = ({\n phoneNumber,\n onChangePhoneNumber,\n onBlur,\n styles,\n error,\n texts,\n country = 'US',\n}) => {\n const [localValue, setLocalValue] = useState('')\n const isUserInitiatedRef = useRef(false)\n\n useEffect(() => {\n if (!isUserInitiatedRef.current) {\n setLocalValue(phoneNumber)\n }\n isUserInitiatedRef.current = false\n }, [phoneNumber])\n\n const handleOnChangeInputPhone = useCallback(\n (payload: IOnChangePhoneNumberPayload) => {\n isUserInitiatedRef.current = true\n setLocalValue(payload.input)\n onChangePhoneNumber(payload)\n },\n [onChangePhoneNumber]\n )\n\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Input\n onChangeText={(text) => {\n isUserInitiatedRef.current = true\n setLocalValue(text)\n }}\n onBlur={onBlur}\n label={texts?.label || 'Phone number'}\n keyboardType=\"phone-pad\"\n value={localValue}\n styles={{\n container: s.phoneInputContainer,\n ...styles?.input,\n color: error ? styles?.input?.errorColor : styles?.input?.baseColor,\n }}\n labelOffset={{ x1: -32 }}\n renderLeftAccessory={() => (\n <View style={(s.countryContainer, styles?.country?.container)}>\n <InputPhone\n initialCountry={country}\n onChange={handleOnChangeInputPhone}\n style={s.countryButton}\n textStyle={s.textInput}\n value={localValue}\n dismissKeyboard={false}\n />\n </View>\n )}\n error={error}\n />\n </View>\n )\n}\n\nexport default PhoneInput\n","import { Platform, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n rootContainer: {\n flexDirection: 'row',\n width: '100%',\n },\n countryContainer: {\n marginBottom: 0,\n paddingBottom: 0,\n width: Platform.OS === 'ios' ? 32 : 16,\n },\n countryButton: {\n width: Platform.OS === 'ios' ? 32 : 32,\n overflow: 'hidden',\n marginBottom: -8,\n paddingBottom: 0,\n borderBottomWidth: 0,\n borderBottomColor: R.colors.transparent,\n zIndex: 4,\n },\n phoneInputContainer: {\n flex: 1,\n },\n textInput: {\n width: 0,\n borderBottomWidth: 0,\n },\n})\n","import React, { FC, useState } from 'react'\nimport { Image, Text, TextInput, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../res'\nimport Button from '../button/Button'\nimport s from './styles'\nimport { IPromoCodeProps } from './types'\n\nconst PromoCode: FC<IPromoCodeProps> = ({\n onPressApply,\n promoCodeValidationMessage,\n isPromoCodeValid,\n styles,\n texts,\n isAccessCodeEnabled,\n closeButtonIcon,\n}) => {\n const [isActive, setIsActive] = useState(false)\n const [promoCode, setPromoCode] = useState('')\n\n const activate = () => setIsActive(true)\n const deactivate = (): string => {\n const code = promoCode\n setIsActive(false)\n setPromoCode('')\n return code\n }\n\n const handleOnPressPromoCode = () => {\n activate()\n }\n\n const handleOnPressApply = () => {\n onPressApply(promoCode)\n }\n\n const isCodeValid = () => {\n if (typeof isPromoCodeValid === 'boolean') {\n return isPromoCodeValid\n } else if (typeof isPromoCodeValid === 'number') {\n return isPromoCodeValid > 0\n }\n }\n\n const isApplyButtonDisabled = promoCode.length === 0\n const submitButton = texts?.apply\n ? texts.apply\n : isAccessCodeEnabled\n ? 'ENTER'\n : 'APPLY'\n\n const resultMessageValidStyle = [s.validMessage, styles?.validMessage]\n const resultMessageErrorStyle = [s.errorMessage, styles?.errorMessage]\n const resultMessageStyle = isCodeValid()\n ? resultMessageValidStyle\n : resultMessageErrorStyle\n const resultMessage = isCodeValid()\n ? texts?.validMessage || 'Valid promo code'\n : texts?.errorMessage || promoCodeValidationMessage\n\n return (\n <View style={[{}, styles?.rootContainer]}>\n {isActive || isAccessCodeEnabled ? (\n <View style={styles?.contentWrapper}>\n <View style={[s.content, styles?.content]}>\n <TextInput\n placeholder={texts?.inputPlaceHolder || 'Enter promo code'}\n placeholderTextColor={styles?.inputPlaceholderColor || R.colors.disabled}\n value={promoCode}\n style={[s.input, styles?.input]}\n onChangeText={(text) => setPromoCode(text)}\n autoCapitalize=\"none\"\n underlineColorAndroid={R.colors.transparent}\n />\n\n <TouchableOpacity\n style={[s.cancelButton, styles?.cancelButton]}\n onPress={deactivate}\n >\n <Image\n source={closeButtonIcon || R.icons.error}\n style={[s.cancelIcon, styles?.cancelIcon]}\n />\n </TouchableOpacity>\n <Button\n text={texts?.apply || submitButton}\n styles={\n isApplyButtonDisabled ? styles?.applyDisabledButton : styles?.applyButton\n }\n onPress={handleOnPressApply}\n isDisabled={isApplyButtonDisabled}\n />\n </View>\n {!!resultMessage && <Text style={resultMessageStyle}>{resultMessage}</Text>}\n </View>\n ) : (\n <Button\n text={texts?.mainButton || 'Got a promo code? Click here'}\n onPress={handleOnPressPromoCode}\n styles={{\n text: [s.mainButtonText, styles?.mainButton?.text],\n container: [s.mainButtonContainer, styles?.mainButton?.container],\n button: styles?.mainButton?.button,\n }}\n />\n )}\n </View>\n )\n}\n\nexport default PromoCode\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n content: {\n flexDirection: 'row',\n width: '100%',\n alignItems: 'center',\n backgroundColor: R.colors.listBackground,\n },\n input: {\n paddingHorizontal: 8,\n minWidth: 100,\n flex: 0.8,\n borderColor: R.colors.black,\n color: R.colors.black,\n height: 45,\n fontSize: 16,\n },\n applyButton: {\n backgroundColor: R.colors.primary,\n paddingHorizontal: 8,\n flex: 0.4,\n },\n applyText: {\n fontWeight: '400',\n fontSize: 14,\n color: R.colors.white,\n },\n cancelButton: {\n padding: 4,\n flex: 0.2,\n marginLeft: 4,\n },\n cancelIcon: {\n width: 20,\n height: 20,\n tintColor: R.colors.white,\n },\n errorMessage: {\n color: R.colors.danger,\n },\n validMessage: {\n color: R.colors.validGreen,\n },\n mainButtonContainer: {},\n mainButtonText: {\n fontWeight: '400',\n fontSize: 14,\n textAlign: 'center',\n color: R.colors.white,\n },\n messageContainer: {\n padding: 8,\n backgroundColor: 'gainsboro',\n alignItems: 'center',\n },\n title: {\n marginVertical: 16,\n fontWeight: '600',\n },\n})\n","import React, { FC } from 'react'\nimport { Text, TouchableOpacity, View } from 'react-native'\n\nimport s from './styles'\nimport { IRadioButtonProps } from './types'\n\nconst RadioButton: FC<IRadioButtonProps> = ({\n styles,\n text = 'Radio button',\n value = true,\n onValueChange,\n}) => (\n <TouchableOpacity\n onPress={onValueChange}\n style={[s.rootContainer, styles?.rootContainer]}\n >\n <View style={[s.contentContainer, styles?.contentContainer]}>\n <View style={[s.radio, styles?.radio]}>\n {value && <View style={[s.indicator, styles?.indicator]} />}\n </View>\n <Text style={styles?.text}>{text}</Text>\n </View>\n </TouchableOpacity>\n)\n\nexport default RadioButton\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst RADIO_SIZE = 20\nconst RADIO_RADIUS = RADIO_SIZE / 2\nconst INDICATOR_SIZE = RADIO_SIZE * 0.6\nconst INDICATOR_RADIUS = INDICATOR_SIZE / 2\n\nexport default StyleSheet.create({\n rootContainer: {\n marginVertical: 4,\n },\n contentContainer: {\n flexDirection: 'row',\n },\n radio: {\n height: RADIO_SIZE,\n width: RADIO_SIZE,\n borderRadius: RADIO_RADIUS,\n borderWidth: 1,\n marginRight: 8,\n justifyContent: 'center',\n alignItems: 'center',\n },\n indicator: {\n width: INDICATOR_SIZE,\n height: INDICATOR_SIZE,\n borderRadius: INDICATOR_RADIUS,\n backgroundColor: R.colors.black,\n },\n})\n","import {\n CardForm,\n initStripe,\n InitStripeParams,\n PaymentIntent,\n useConfirmPayment,\n} from '@stripe/stripe-react-native'\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle } from 'react'\n\nimport styles from './styles'\nimport { IStripePaymentProps, StripePaymentHandle } from './types'\n\nconst StripePayment = forwardRef<StripePaymentHandle, IStripePaymentProps>(\n (props, ref) => {\n const { confirmPayment, loading } = useConfirmPayment()\n\n const handleOnChangeConfirmPaymentLoading = useCallback(\n (isLoading: boolean) => {\n props.onChangeConfirmPaymentLoading?.(isLoading)\n },\n [props]\n )\n\n useEffect(() => {\n handleOnChangeConfirmPaymentLoading(loading)\n }, [handleOnChangeConfirmPaymentLoading, loading])\n\n useImperativeHandle(ref, () => ({\n async initStripe(params: InitStripeParams): Promise<any> {\n return await initStripe(params)\n },\n\n async confirmPayment(\n stripeClientSecret: string,\n params: PaymentIntent.ConfirmParams\n ): Promise<any> {\n return await confirmPayment(stripeClientSecret, params)\n },\n }))\n\n return (\n <CardForm\n onFormComplete={props.onChangePaymentInfo}\n style={[styles.cardForm, props.style]}\n cardStyle={props.cardStyle}\n />\n )\n }\n)\n\nexport default StripePayment\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n cardForm: {\n height: 300,\n },\n})\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert } from 'react-native'\n\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport { WaitingListCore, WaitingListCoreHandle } from '../../core'\nimport { SessionCoreHandleType } from '../../core/Session/SessionCoreTypes'\nimport { IAddToWaitingListCoreParams } from '../../core/WaitingListCore/WaitingListCoreTypes'\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validateEmail, validateEmpty } from '../../helpers/Validators'\nimport { IWaitingListProps } from './types'\nimport WaitingListView from './WaitingListView'\n\nconst WaitingList = forwardRef<SessionCoreHandleType, IWaitingListProps>(\n (\n {\n styles,\n texts,\n onAddToWaitingListError,\n onAddToWaitingListSuccess,\n onLoadingChange,\n areAlertsEnabled,\n },\n ref\n ) => {\n //#region State\n const [isSuccess, setIsSuccess] = useState<boolean | undefined>(undefined)\n const [isLoading, setIsLoading] = useState<boolean>(false)\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [email, setEmail] = useState('')\n\n const firstNameError = useDebounced(firstName, validateEmpty)\n const lastNameError = useDebounced(lastName, validateEmpty)\n const emailError = useDebounced(email, validateEmail)\n //#endregion State\n\n const handleSetFirstName = (val: string) => setFirstName(val)\n const handleSetLastName = (val: string) => setLastName(val)\n const handleSetEmail = (val: string) => setEmail(val)\n\n //#region Ref\n const waitingListCoreRef = useRef<WaitingListCoreHandle>(null)\n //#endregion Ref\n\n const showAlert = (message: string) => {\n if (areAlertsEnabled) {\n Alert.alert('', message)\n }\n }\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n const { accessTokenError, accessTokenData } =\n await waitingListCoreRef.current!.refreshAccessToken(refreshToken)\n\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {},\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleOnPressButton = async () => {\n if (!waitingListCoreRef.current) {\n showAlert('WaitingListCore is not initialized')\n return onAddToWaitingListError?.({\n message: 'WaitingListCore is not initialized',\n })\n }\n\n const values: IAddToWaitingListCoreParams = {\n firstName: firstName,\n lastName: lastName,\n email: email,\n }\n\n setIsLoading(true)\n\n const { addToWaitingListData, addToWaitingListError } =\n await waitingListCoreRef.current.addToWaitingList(values)\n\n setIsLoading(false)\n if (addToWaitingListError) {\n setIsSuccess(false)\n showAlert(addToWaitingListError.message)\n onAddToWaitingListError?.(addToWaitingListError)\n return\n }\n\n if (addToWaitingListData) {\n onAddToWaitingListSuccess?.()\n setIsSuccess(true)\n }\n }\n\n const onLoadingChangeCallback = useCallback(\n (loading: boolean) => {\n onLoadingChange?.(loading)\n },\n [onLoadingChange]\n )\n //#endregion Handlers\n\n useEffect(() => {\n onLoadingChangeCallback(isLoading)\n }, [isLoading, onLoadingChangeCallback])\n\n //#region RENDER\n return (\n <WaitingListCore ref={waitingListCoreRef}>\n <WaitingListView\n data={{\n firstName: firstName,\n lastName: lastName,\n email: email,\n firstNameError: firstNameError,\n lastNameError: lastNameError,\n emailError: emailError,\n onChangeEmail: handleSetEmail,\n onChangeFirstName: handleSetFirstName,\n onChangeLastName: handleSetLastName,\n }}\n onPressButton={handleOnPressButton}\n isSuccess={isSuccess}\n styles={styles}\n texts={texts}\n isLoading={isLoading}\n />\n </WaitingListCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default WaitingList\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport { Button, Input } from '..'\nimport s from './styles'\nimport { IWaitingListViewProps } from './types'\n\nconst WaitingListView: FC<IWaitingListViewProps> = ({\n styles,\n texts,\n onPressButton,\n data,\n isSuccess,\n isLoading,\n}) => {\n const {\n firstName,\n lastName,\n email,\n emailError,\n lastNameError,\n firstNameError,\n onChangeEmail,\n onChangeFirstName,\n onChangeLastName,\n } = data\n\n const getIsDataValid = () =>\n firstName.length > 0 &&\n lastName.length > 0 &&\n email.length > 0 &&\n !emailError &&\n !lastNameError &&\n !firstNameError\n\n const isDataValid = getIsDataValid()\n\n const buttonStyle = isDataValid\n ? styles?.button\n : styles?.buttonDisabled\n ? styles?.buttonDisabled\n : styles?.button\n\n return (\n <View style={styles?.rootContainer}>\n {isSuccess ? (\n <View style={styles?.success?.container}>\n <Text style={styles?.success?.title}>\n {texts?.successTitle || `You've been added to the waiting list!`}\n </Text>\n <Text style={styles?.success?.message}>\n {texts?.successMessage || `You'll be notified if tickets become available.`}\n </Text>\n </View>\n ) : (\n <>\n <Text style={[s.title, styles?.title]}>{texts?.title || 'Waiting list'}</Text>\n <Input\n label={texts?.firstName || 'First name'}\n value={firstName}\n onChangeText={onChangeFirstName}\n error={firstNameError}\n styles={styles?.input}\n />\n <Input\n label={texts?.lastName || 'Last name'}\n value={lastName}\n onChangeText={onChangeLastName}\n error={lastNameError}\n styles={styles?.input}\n />\n <Input\n label={texts?.email || 'Email'}\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n value={email}\n onChangeText={onChangeEmail}\n error={emailError}\n styles={styles?.input}\n />\n <Button\n onPress={onPressButton}\n text={texts?.button || 'ADD TO WAITING LIST'}\n styles={buttonStyle}\n isDisabled={!isDataValid}\n isLoading={isLoading}\n />\n </>\n )}\n </View>\n )\n}\n\nexport default WaitingListView\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n title: {\n fontSize: 20,\n fontWeight: '800',\n marginBottom: 24,\n },\n})\n","import _every from 'lodash/every'\nimport _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _map from 'lodash/map'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { ActivityIndicator, Alert, Image, Linking, Text, View } from 'react-native'\nimport DeviceCountry, { TYPE_ANY } from 'react-native-device-country'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\n\nimport Constants from '../../api/Constants'\nimport {\n ICheckoutBody,\n ICheckoutTicketHolder,\n IFetchAccessTokenResponse,\n IRegisterNewUserBody,\n} from '../../api/types'\nimport {\n Button,\n CartTimer,\n Checkbox,\n DatePicker,\n DropdownMaterial,\n Input,\n Loading,\n Login,\n PhoneInput,\n} from '../../components'\nimport { IDropdownItem } from '../../components/dropdown/types'\nimport { ILoginSuccessData } from '../../components/login/types'\nimport { IOnChangePhoneNumberPayload } from '../../components/phoneInput/types'\nimport { BillingCore, BillingCoreHandle, SessionHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport { Config } from '../../helpers/Config'\nimport { getCountryDialCode } from '../../helpers/CountryCodes'\nimport { useDebounced } from '../../helpers/Debounced'\nimport { getData, LocalStorageKeys } from '../../helpers/LocalStorage'\nimport { emptyPhone } from '../../helpers/StringsHelper'\nimport {\n validateAge,\n validateDropDownEmpty,\n validateEmail,\n validateEmpty,\n validatePasswords,\n validatePhoneNumber,\n} from '../../helpers/Validators'\nimport R from '../../res'\nimport { IError, IUserProfile, IUserProfilePublic } from '../../types'\nimport s from './styles'\nimport {\n IBillingFormFieldsData,\n IBillingProps,\n ITicketHolderField,\n SkippingStatusType,\n} from './types'\n\n/*\n Fields to hide when ticket is free\n - Billing Street Address\n - City\n - State/County\n - Post Code/Zip\n - Country\n*/\n\nconst Billing = forwardRef<SessionHandleType, IBillingProps>(\n (\n {\n styles,\n texts,\n cartProps: {\n isAgeRequired,\n isNameRequired,\n isPhoneRequired,\n minimumAge,\n isBillingRequired,\n isTicketFree,\n isPhoneHidden,\n },\n loginBrandImages,\n skipBillingConfig,\n areAlertsEnabled = true,\n areLoadingIndicatorsEnabled = true,\n onLoadingChange,\n onLoginError,\n onLoginSuccess,\n onRegisterError,\n onRegisterSuccess,\n onCheckoutSuccess,\n onCheckoutError,\n onFetchUserProfileSuccess,\n onFetchUserProfileError,\n onFetchCartError,\n onFetchCartSuccess,\n onFetchCountriesError,\n onFetchCountriesSuccess,\n onFetchStatesError,\n onFetchStatesSuccess,\n onSkippingStatusChange,\n onLogoutSuccess,\n onLogoutError,\n onCartExpired,\n shouldCartTimerNotMinimizeOnTap,\n config = {\n isCheckoutAlwaysButtonEnabled: false,\n shouldHideTicketHolderSectionOnSingleTicket: false,\n },\n },\n ref\n ) => {\n //#region State\n const [isLoading, setIsLoading] = useState<boolean>(false)\n const [isSubmittingData, setIsSubmittingData] = useState<boolean>(false)\n const [loggedUserFirstName, setLoggedUserFirstName] = useState<string>('')\n const [loginMessage, setLoginMessage] = useState('')\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [email, setEmail] = useState('')\n const [emailConfirmation, setEmailConfirmation] = useState('')\n const [password, setPassword] = useState('')\n const [passwordConfirmation, setPasswordConfirmation] = useState('')\n const [isSubToTicketFairy, setIsSubToTicketFairy] = useState(false)\n const [isSubToBrand, setIsSubToBrand] = useState(false)\n const [phone, setPhone] = useState('')\n const [street, setStreet] = useState('')\n const [city, setCity] = useState('')\n const [countryId, setCountryId] = useState('')\n const [stateId, setStateId] = useState('')\n const [postalCode, setPostalCode] = useState('')\n const [dateOfBirth, setDateOfBirth] = useState<Date | undefined>(undefined)\n const [selectedCountry, setSelectedCountry] = useState<IDropdownItem | undefined>(\n undefined\n )\n const [selectedState, setSelectedState] = useState<IDropdownItem | undefined>(\n undefined\n )\n\n const [ticketHoldersData, setTicketHoldersData] = useState<ITicketHolderField[]>([])\n\n const [numberOfTicketHolders, setNumberOfTicketHolders] = useState<\n number | undefined\n >(0)\n\n const [states, setStates] = useState<IDropdownItem[]>([])\n const [countries, setCountries] = useState<IDropdownItem[]>([])\n\n const [isLoginDialogVisible, setIsLoginDialogVisible] = useState(false)\n const [skippingStatus, setSkippingStatus] = useState<SkippingStatusType>(undefined)\n const [isTtfCheckboxHidden, setIsTtfCheckboxHidden] = useState(false)\n //#endregion State\n\n //#region Labels\n const holderLabels = useMemo(() => {\n if (\n numberOfTicketHolders === 1 &&\n config.shouldHideTicketHolderSectionOnSingleTicket\n ) {\n return null\n }\n\n const optional = isNameRequired ? '' : texts?.form?.optional || '(optional)'\n return {\n firstName: texts?.form?.holderFirstName\n ? `${texts.form.holderFirstName} ${optional}`\n : `First Name ${optional}`,\n lastName: texts?.form?.holderLastName\n ? `${texts.form.holderLastName} ${optional}`\n : `Last Name ${optional}`,\n email: texts?.form?.holderEmail\n ? `${texts.form.holderEmail} ${texts?.form?.optional || '(optional)'}`\n : `Email ${optional}`,\n phone: texts?.form?.holderPhone\n ? `${texts.form.holderPhone} ${texts?.form?.optional || '(optional)'}`\n : `Phone ${optional}`,\n }\n }, [isNameRequired, texts, numberOfTicketHolders])\n\n const brandCheckBoxText =\n texts?.form?.isSubToBrand ||\n 'I would like to be updated on news, events and offers.'\n\n const phoneLabel = useMemo(() => {\n const optionalPhone = isPhoneRequired ? '' : texts?.form?.optional || ' (optional)'\n return texts?.form?.phone\n ? `${texts?.form?.phone} ${optionalPhone}`\n : `Phone ${optionalPhone}`\n }, [isPhoneRequired, texts])\n\n const addressLabel = useMemo(() => {\n const optionalAddress = Config.IS_BILLING_STREET_NAME_REQUIRED\n ? ''\n : texts?.form?.optional || ' (optional)'\n\n return texts?.form?.street\n ? `${texts.form.street} ${optionalAddress}`\n : `Street ${optionalAddress}`\n }, [texts])\n //#endregion Labels\n\n // Cart expiration timer\n const [secondsLeft, setSecondsLeft] = React.useState(420)\n\n //#region Errors state\n const firstNameError = useDebounced(firstName, validateEmpty)\n const lastNameError = useDebounced(lastName, validateEmpty)\n const emailError = useDebounced(email, () => validateEmail(email, emailConfirmation))\n const confirmEmailError = useDebounced(emailConfirmation, () =>\n validateEmail(emailConfirmation, email)\n )\n const passwordError = useDebounced(password, () =>\n validatePasswords(password, passwordConfirmation)\n )\n const confirmPasswordError = useDebounced(passwordConfirmation, () =>\n validatePasswords(passwordConfirmation, password)\n )\n const [phoneError, setPhoneError] = useState('')\n const streetError = useDebounced(street, validateEmpty)\n const cityError = useDebounced(city, validateEmpty)\n const postalCodeError = useDebounced(postalCode, validateEmpty)\n const [ttfPrivacyPolicyError, setTtfPrivacyPolicyError] = useState('')\n\n const [firstNameErrorState, setFirstNameErrorState] = useState('')\n const [lastNameErrorState, setLastNameErrorState] = useState('')\n const [streetErrorState, setStreetErrorState] = useState('')\n const [dateOfBirthError, setDateOfBirthError] = useState('')\n const [emailErrorState, setEmailErrorState] = useState('')\n const [emailConfirmationErrorState, setEmailConfirmationErrorState] = useState('')\n const [cityErrorState, setCityErrorState] = useState('')\n const [postalCodeErrorState, setPostalCodeErrorState] = useState('')\n const [countryErrorState, setCountryErrorState] = useState('')\n const [stateErrorState, setStateErrorState] = useState('')\n const [passwordErrorState, setPasswordErrorState] = useState('')\n const [confirmPasswordErrorState, setConfirmPasswordErrorState] = useState('')\n\n const requiredText = texts?.required || 'Required'\n\n //#endregion Errors state\n //#endregion\n\n const getSkippingStatus = (numOfTickets: number): SkippingStatusType => {\n // DO NOT SKIP IF\n // * User is not logged in.\n // * Event Collect_names is turned on and tickets are more than one.\n // * Event validate_age is turned on.\n // * phone_required is turned on and customer does not have a phone number.\n\n if (isBillingRequired || skippingStatus === 'fail') {\n return 'false'\n }\n\n if ((isNameRequired && numOfTickets > 1) || isAgeRequired) {\n return 'false'\n } else {\n return 'skipping'\n }\n }\n\n //#region Refs\n const storedToken = useRef('')\n const storedProfileData = useRef({} as IUserProfilePublic)\n const phoneErrorCounter = useRef(0)\n const billingCoreRef = useRef<BillingCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n const phoneCountryCode = useRef('')\n const errorsRef = useRef({\n firstName: '',\n lastName: '',\n email: '',\n confirmEmail: '',\n password: '',\n confirmPassword: '',\n dateOfBirth: '',\n phone: '',\n street: '',\n city: '',\n country: '',\n zipCode: '',\n state: '',\n privacy: '',\n })\n\n //#endregion\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n if (!accessTokenError && accessTokenData?.accessToken) {\n await fetchData()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n await fetchData()\n },\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleSetPhoneError = useCallback(\n (error: string) => {\n if (isPhoneRequired && phone.length > 0) {\n setPhoneError(error)\n }\n },\n [isPhoneRequired, phone.length]\n )\n\n const handleOnChangePhoneNumber = (payload: IOnChangePhoneNumberPayload) => {\n setPhone(payload.input)\n\n if (payload.isValid) {\n errorsRef.current.phone = ''\n setPhoneError('')\n\n return\n }\n\n if (!payload.isValid && phoneErrorCounter.current > 0) {\n errorsRef.current.phone =\n texts?.form?.phoneInput?.customError || 'Invalid phone number'\n\n return handleSetPhoneError(\n texts?.form?.phoneInput?.customError || 'Invalid phone number'\n )\n }\n\n phoneErrorCounter.current = phoneErrorCounter.current + 1\n }\n\n const handleOnLoadingChange = useCallback(\n (loading: boolean) => {\n if (onLoadingChange) {\n onLoadingChange(loading)\n }\n },\n [onLoadingChange]\n )\n\n const handleOnSkippingStatusChange = useCallback(\n (status: SkippingStatusType) => {\n onSkippingStatusChange?.(status)\n },\n [onSkippingStatusChange]\n )\n\n const showAlert = (text: string) => {\n if (areAlertsEnabled) {\n Alert.alert('', text)\n }\n }\n\n const showLoginDialog = () => setIsLoginDialogVisible(true)\n const hideLoginDialog = () => setIsLoginDialogVisible(false)\n\n const handleIsSubToBrandToggle = () => {\n setIsSubToBrand(!isSubToBrand)\n }\n\n const handleIsSubToTicketFairyToggle = () => {\n const newValue = !isSubToTicketFairy\n\n if (newValue) {\n errorsRef.current.privacy = ''\n setTtfPrivacyPolicyError('')\n } else {\n errorsRef.current.privacy = requiredText\n setTtfPrivacyPolicyError(requiredText)\n }\n\n setIsSubToTicketFairy(newValue)\n }\n\n const handleOpenPrivacyLink = async () => {\n const canOpenLink = await Linking.canOpenURL(Constants.PRIVACY_POLICY_LINK)\n if (canOpenLink) {\n await Linking.openURL(Constants.PRIVACY_POLICY_LINK)\n }\n }\n\n const handleSetFormDataFromUserProfile = (\n userProfile: IUserProfilePublic,\n accessToken?: string\n ) => {\n storedProfileData.current = userProfile\n setFirstName(userProfile.firstName)\n setLastName(userProfile.lastName)\n setEmail(userProfile.email)\n setEmailConfirmation(userProfile.email)\n setPhone(userProfile.phone)\n setStreet(userProfile.streetAddress)\n setCity(userProfile.city)\n setPostalCode(userProfile.zipCode)\n setCountryId(userProfile.countryId)\n setStateId(userProfile.stateId)\n setLoggedUserFirstName(userProfile.firstName)\n\n let dob: Date | undefined\n\n if (userProfile.dateOfBirth) {\n const dobSplitted = userProfile.dateOfBirth.split('-')\n dob = new Date(\n parseInt(dobSplitted[0]!, 10),\n parseInt(dobSplitted[1]!, 10) - 1,\n parseInt(dobSplitted[2]!, 10)\n )\n handleOnSelectDate(dob)\n }\n\n const thData = [...ticketHoldersData]\n thData.forEach((th, index) => {\n th.firstName = index === 0 ? userProfile.firstName : ''\n th.lastName = index === 0 ? userProfile.lastName : ''\n th.email = index === 0 ? userProfile.email : ''\n th.phone = index === 0 ? userProfile.phone : ''\n })\n setTicketHoldersData(thData)\n\n if (accessToken) {\n storedToken.current = accessToken\n }\n\n showErrorMessages({\n firstName: userProfile.firstName,\n lastName: userProfile.lastName,\n email: userProfile.email,\n confirmEmail: userProfile.email,\n street: userProfile.streetAddress,\n city: userProfile.city,\n selectedCountry: userProfile.countryId\n ? {\n label: '',\n value: userProfile.countryId,\n }\n : undefined,\n selectedState: userProfile.stateId\n ? {\n label: '',\n value: userProfile.stateId,\n }\n : undefined,\n postalCode: userProfile.zipCode,\n dateOfBirth: dob,\n phoneNumber: userProfile.phone,\n isRegistering: !loggedUserFirstName && !storedToken.current,\n ticketHolderData: ticketHoldersData,\n })\n }\n\n const clearFormErrors = () => {\n setFirstNameErrorState('')\n setLastNameErrorState('')\n setEmailErrorState('')\n setEmailConfirmationErrorState('')\n setDateOfBirthError('')\n setPhoneError('')\n setStreetErrorState('')\n setCityErrorState('')\n setCountryErrorState('')\n setPostalCodeErrorState('')\n setStateErrorState('')\n setTtfPrivacyPolicyError('')\n errorsRef.current = {\n firstName: '',\n lastName: '',\n email: '',\n confirmEmail: '',\n password: '',\n confirmPassword: '',\n dateOfBirth: '',\n phone: '',\n street: '',\n city: '',\n country: '',\n zipCode: '',\n state: '',\n privacy: '',\n }\n }\n\n const handleOnLoginSuccess = async ({\n userProfile,\n accessTokenData,\n }: ILoginSuccessData) => {\n clearFormErrors()\n\n let countryCode = 'US'\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n const usrProfile = { ...userProfile }\n\n onLoginSuccess?.({\n userProfile,\n accessTokenData,\n })\n\n try {\n const deviceCountry = await DeviceCountry.getCountryCode(TYPE_ANY)\n countryCode = deviceCountry.code.toUpperCase()\n } catch (err) {\n countryCode = 'US'\n }\n\n if (!userProfile.phone) {\n usrProfile.phone = ''\n } else {\n if (!usrProfile.phone?.includes('+')) {\n usrProfile.phone = `${getCountryDialCode(countryCode)}${usrProfile.phone}`\n }\n }\n\n if (!isBillingRequired && skippingStatus === 'fail') {\n setSkippingStatus('skipping')\n\n const phoneValidError = validatePhoneNumber({\n phoneNumber: userProfile.phone,\n customError: texts?.form?.phoneInput?.customError,\n })\n\n if (phoneValidError && isPhoneRequired) {\n setIsLoading(false)\n handleSetPhoneError(\n texts?.invalidPhoneNumberError || 'Please enter a valid phone number'\n )\n }\n\n await performCheckout(\n getCheckoutBodyWhenSkipping({\n userProfile: usrProfile,\n ticketsQuantity: numberOfTicketHolders || 1,\n })\n )\n }\n handleSetFormDataFromUserProfile(usrProfile, accessToken)\n }\n\n const handleOnLoginError = (error: IError) => {\n onLoginError?.(error)\n }\n\n const handleOnLogoutSuccess = async () => {\n setFirstName('')\n setLastName('')\n setEmail('')\n setEmailConfirmation('')\n setPhone('')\n setStreet('')\n setCity('')\n setPostalCode('')\n setPassword('')\n setPasswordConfirmation('')\n setCountryId('')\n setStateId('')\n handleOnSelectDate(undefined)\n\n setSelectedCountry({\n value: '-1',\n label: texts?.form?.country || 'Country',\n code: '__',\n })\n setStates([\n {\n value: '-1',\n label: texts?.form?.state || 'State/County',\n },\n ])\n setIsSubToTicketFairy(false)\n setIsSubToBrand(false)\n storedToken.current = ''\n setLoggedUserFirstName('')\n\n const thData = [...ticketHoldersData]\n thData.forEach((th) => {\n th.firstName = ''\n th.lastName = ''\n th.email = ''\n th.phone = ''\n th.firstNameError = ''\n th.lastNameError = ''\n })\n setTicketHoldersData(thData)\n onLogoutSuccess?.()\n }\n\n //#region Handlers input changed\n const handleOnSelectDate = (newDate: Date | undefined) => {\n setDateOfBirth(newDate)\n\n if (dateOfBirthError.length > 0 && newDate) {\n setDateOfBirthError('')\n }\n\n if (minimumAge) {\n const ageError = validateAge(newDate, minimumAge)\n setDateOfBirthError(ageError)\n } else {\n if (!newDate) {\n setDateOfBirthError(requiredText)\n }\n }\n }\n\n const handleOnStreetChanged = (text: string) => {\n if (streetErrorState.length > 0 && text.length > 0) {\n setStreetErrorState('')\n }\n setStreet(text)\n }\n\n const handleOnCityChanged = (text: string) => {\n if (cityErrorState.length > 0 && text.length > 0) {\n setCityErrorState('')\n }\n setCity(text)\n }\n\n const handleOnFirstNameChanged = (text: string) => {\n if (firstNameErrorState.length > 0 && text.length > 0) {\n setFirstNameErrorState('')\n }\n setFirstName(text)\n }\n\n const handleOnLastNameChanged = (text: string) => {\n if (lastNameErrorState.length > 0 && text.length > 0) {\n setLastNameErrorState('')\n }\n setLastName(text)\n }\n\n const handleOnEmailChanged = (text: string) => {\n if (emailErrorState.length > 0 && text.length > 0) {\n setEmailErrorState('')\n }\n setEmail(text)\n }\n\n const handleOnEmailConfirmationChanged = (text: string) => {\n if (emailConfirmationErrorState.length > 0 && text.length > 0) {\n setEmailConfirmationErrorState('')\n }\n setEmailConfirmation(text)\n }\n\n const handleOnPostalCodeChanged = (text: string) => {\n if (postalCodeErrorState.length > 0 && text.length > 0) {\n setPostalCodeErrorState('')\n }\n setPostalCode(text)\n }\n\n const handleOnStateChanged = (itm: IDropdownItem) => {\n if (stateErrorState.length > 0 && itm.value !== '-1') {\n setStateErrorState('')\n } else if (itm.value === '-1') {\n setStateErrorState(requiredText)\n }\n setSelectedState(itm)\n }\n\n const handleOnCountryChanged = (itm: IDropdownItem) => {\n if (countryErrorState.length > 0 && itm.value !== '-1') {\n setCountryErrorState('')\n } else if (itm.value === '-1') {\n setCountryErrorState(requiredText)\n }\n setSelectedCountry(itm)\n }\n\n const handleOnPasswordChanged = (text: string) => {\n if (passwordErrorState.length > 0 && text.length > 0) {\n setPasswordErrorState('')\n }\n setPassword(text)\n }\n\n const handleOnConfirmPasswordChanged = (text: string) => {\n if (confirmPasswordErrorState.length > 0 && text.length > 0) {\n setConfirmPasswordErrorState('')\n }\n setPasswordConfirmation(text)\n }\n //#endregion Handlers input changed\n\n //#endregion\n\n //#region Form validation\n const checkIsStoredPhoneNumberFormat = (storedPhoneNumber?: string) => {\n if (!storedPhoneNumber) {\n handleSetPhoneError(\n texts?.invalidPhoneNumberError || 'Please enter a valid phone number'\n )\n return false\n }\n\n if (!storedPhoneNumber.includes('+')) {\n handleSetPhoneError(\n texts?.invalidPhoneNumberError || 'Please enter a valid phone number'\n )\n return false\n }\n return true\n }\n\n const showErrorMessages = (data: IBillingFormFieldsData) => {\n if (secondsLeft === 0) {\n return false\n }\n\n const validateFirstName = validateEmpty(data.firstName)\n const validateLastName = validateEmpty(data.lastName)\n\n const validateEmails = validateEmail(data.email, data.confirmEmail)\n const validateEmailsConfirmation = validateEmail(data.confirmEmail, data.email)\n\n if (isTicketFree) {\n setFirstNameErrorState(validateFirstName)\n setLastNameErrorState(validateLastName)\n errorsRef.current.firstName = validateFirstName\n errorsRef.current.lastName = validateLastName\n\n setEmailErrorState(validateEmails)\n setEmailConfirmationErrorState(validateEmailsConfirmation)\n errorsRef.current.email = validateEmails\n errorsRef.current.confirmEmail = validateEmailsConfirmation\n\n if (data.isRegistering) {\n const validatePassword = validatePasswords(data.password, data.confirmPassword)\n const validatePasswordConfirmation = validatePasswords(\n data.confirmPassword,\n data.password\n )\n\n setPasswordErrorState(validatePassword)\n setConfirmPasswordErrorState(validatePasswordConfirmation)\n\n errorsRef.current.password = validatePassword\n errorsRef.current.confirmPassword = validatePasswordConfirmation\n }\n\n if (isAgeRequired) {\n if (minimumAge) {\n const birthdayValidation = validateAge(data.dateOfBirth, minimumAge)\n setDateOfBirthError(birthdayValidation)\n errorsRef.current.dateOfBirth = birthdayValidation\n } else {\n setDateOfBirthError(data.dateOfBirth ? '' : requiredText)\n errorsRef.current.dateOfBirth = data.dateOfBirth ? '' : requiredText\n }\n }\n\n if (isPhoneRequired && !isPhoneHidden) {\n const validatePhone = validatePhoneNumber({\n phoneNumber: data.phoneNumber,\n customError: texts?.form?.phoneInput?.customError,\n countryCode: phoneCountryCode.current,\n })\n setPhoneError(validatePhone)\n errorsRef.current.phone = validatePhone\n }\n\n errorsRef.current.privacy = isSubToTicketFairy ? '' : requiredText\n\n if (isNameRequired) {\n const ticketHoldersDataCopy = [...data.ticketHolderData]\n _map(data.ticketHolderData, (th, index) => {\n if (isNameRequired) {\n ticketHoldersDataCopy[index].firstNameError = validateEmpty(th.firstName)\n ticketHoldersDataCopy[index].lastNameError = validateEmpty(th.lastName)\n }\n })\n\n setTicketHoldersData(ticketHoldersDataCopy)\n }\n\n return\n } // end of Ticket Free\n\n const validateStreet = validateEmpty(data.street)\n const validateCity = validateEmpty(data.city)\n const validatePostalCode = validateEmpty(data.postalCode)\n\n setStreetErrorState(validateStreet)\n setCityErrorState(validateCity)\n setPostalCodeErrorState(validatePostalCode)\n setFirstNameErrorState(validateFirstName)\n setLastNameErrorState(validateLastName)\n setEmailErrorState(validateEmails)\n setEmailConfirmationErrorState(validateEmailsConfirmation)\n\n errorsRef.current.street = validateStreet\n errorsRef.current.city = validateCity\n errorsRef.current.zipCode = validatePostalCode\n errorsRef.current.firstName = validateFirstName\n errorsRef.current.lastName = validateLastName\n errorsRef.current.email = validateEmails\n errorsRef.current.confirmEmail = validateEmailsConfirmation\n\n if (data.isRegistering) {\n const validatePassword = validatePasswords(data.password, data.confirmPassword)\n const validatePasswordConfirmation = validatePasswords(\n data.confirmPassword,\n data.password\n )\n\n setPasswordErrorState(validatePassword)\n setConfirmPasswordErrorState(validatePasswordConfirmation)\n\n errorsRef.current.password = validatePassword\n errorsRef.current.confirmPassword = validatePasswordConfirmation\n }\n\n const countryValidation = validateDropDownEmpty(data.selectedCountry?.value)\n\n setCountryErrorState(countryValidation)\n errorsRef.current.country = countryValidation\n\n if (isAgeRequired) {\n if (minimumAge) {\n const birthdayValidation = validateAge(data.dateOfBirth, minimumAge)\n setDateOfBirthError(birthdayValidation)\n errorsRef.current.dateOfBirth = birthdayValidation\n } else {\n setDateOfBirthError(data.dateOfBirth ? '' : requiredText)\n errorsRef.current.dateOfBirth = data.dateOfBirth ? '' : requiredText\n }\n }\n\n const validateState = validateDropDownEmpty(data.selectedState?.value)\n\n setStateErrorState(validateState)\n errorsRef.current.state = validateState\n\n if (isPhoneRequired && !isPhoneHidden) {\n const validatePhone = validatePhoneNumber({\n phoneNumber: data.phoneNumber,\n customError: texts?.form?.phoneInput?.customError,\n countryCode: phoneCountryCode.current,\n })\n\n setPhoneError(validatePhone)\n errorsRef.current.phone = validatePhone\n }\n\n //setTtfPrivacyPolicyError(isSubToTicketFairy ? '' : requiredText)\n errorsRef.current.privacy = isSubToTicketFairy ? '' : requiredText\n\n if (isNameRequired) {\n const ticketHoldersDataCopy = [...data.ticketHolderData]\n _map(data.ticketHolderData, (th, index) => {\n if (isNameRequired) {\n ticketHoldersDataCopy[index].firstNameError = validateEmpty(th.firstName)\n ticketHoldersDataCopy[index].lastNameError = validateEmpty(th.lastName)\n }\n })\n\n setTicketHoldersData(ticketHoldersDataCopy)\n }\n }\n\n const checkBasicDataValid = (): boolean => {\n if (secondsLeft === 0) {\n return false\n }\n\n if (isTicketFree) {\n if (\n errorsRef.current.firstName ||\n errorsRef.current.lastName ||\n errorsRef.current.email ||\n errorsRef.current.confirmEmail\n ) {\n return false\n }\n } else {\n if (\n errorsRef.current.firstName ||\n errorsRef.current.lastName ||\n errorsRef.current.email ||\n errorsRef.current.confirmEmail ||\n errorsRef.current.city ||\n errorsRef.current.zipCode ||\n errorsRef.current.state ||\n errorsRef.current.country ||\n errorsRef.current.street\n ) {\n return false\n }\n }\n\n if (isPhoneRequired && !isPhoneHidden && errorsRef.current.phone) {\n if (isLoading) {\n setIsLoading(false)\n }\n\n return false\n }\n\n return true\n }\n\n const fillAllRequiredFieldsAlert =\n texts?.form?.fillAllRequiredFieldsAlert ||\n 'You must fill all Ticket Holder required fields'\n\n const checkExtraDataValid = (): string => {\n if (!isTtfCheckboxHidden && !isSubToTicketFairy) {\n setTtfPrivacyPolicyError(\n texts?.form?.ttfPrivacyPolicyRequiredError || requiredText\n )\n return 'Please review the errors'\n }\n\n if (isAgeRequired) {\n if (!dateOfBirth) {\n setDateOfBirthError(requiredText)\n return 'Please enter your date of birth'\n }\n\n if (minimumAge) {\n const ageValidationMessage = validateAge(dateOfBirth, minimumAge)\n if (ageValidationMessage) {\n setDateOfBirthError(ageValidationMessage)\n return ageValidationMessage\n }\n }\n }\n\n if (!isNameRequired) {\n return ''\n }\n\n if (\n ticketHoldersData.length === 1 &&\n config.shouldHideTicketHolderSectionOnSingleTicket\n ) {\n return ''\n }\n\n return _every(\n _map(\n ticketHoldersData,\n (th) => validateEmpty(th.firstName) || validateEmpty(th.lastName)\n ),\n (itm) => itm === ''\n )\n ? ''\n : fillAllRequiredFieldsAlert\n }\n //#endregion\n\n //#region Submit form\n const handleOnRegisterFail = (rawError: any) => {\n onRegisterError?.(rawError)\n }\n\n const performCheckout = async (checkoutBodyWhenSkipping?: ICheckoutBody) => {\n if (!billingCoreRef.current) {\n return onCheckoutError?.({ message: 'BillingCore is not ready' })\n }\n\n const checkoutBody = checkoutBodyWhenSkipping || getCheckoutBody()\n\n setIsSubmittingData(true)\n const { error: checkoutError, data: checkoutData } =\n await billingCoreRef.current.checkoutOrder(checkoutBody)\n setIsLoading(false)\n setIsSubmittingData(false)\n\n if (checkoutError) {\n onCheckoutError?.(checkoutError)\n setSkippingStatus('false')\n return showAlert(checkoutError.message)\n }\n\n if (!checkoutData) {\n onCheckoutError?.({ message: 'Checkout returned not data' })\n setSkippingStatus('false')\n return showAlert('Checkout returned not data')\n }\n\n setSkippingStatus('success')\n billingCoreRef.current.stopCartTimer()\n onCheckoutSuccess(checkoutData)\n }\n\n const getRegisterFormData = (data: IRegisterNewUserBody): FormData => {\n const bodyFormData = new FormData()\n _forEach(data.attributes, (item: any, key: string) => {\n bodyFormData.append(key, item)\n })\n return bodyFormData\n }\n\n const performNewUserRegister = async () => {\n if (!billingCoreRef.current) {\n showAlert('BillingCore is not ready')\n return onRegisterError?.({ message: 'BillingCore is not initialized' })\n }\n\n setIsSubmittingData(true)\n\n const registerUserBody = getRegisterNewUserBody()\n const registerForm = getRegisterFormData(registerUserBody)\n\n const { registerNewUserResponseData, registerNewUserResponseError } =\n await billingCoreRef.current.registerNewUser(registerForm)\n\n if (registerNewUserResponseError) {\n setIsSubmittingData(false)\n if (registerNewUserResponseError.isAlreadyRegistered) {\n setLoginMessage(registerNewUserResponseError.message!)\n showLoginDialog()\n return handleOnRegisterFail(registerNewUserResponseError.raw)\n }\n handleOnRegisterFail(registerNewUserResponseError.raw)\n return showAlert(registerNewUserResponseError.message!)\n }\n\n if (!registerNewUserResponseData) {\n setIsSubmittingData(false)\n handleOnRegisterFail('Register user returned no data')\n return showAlert('Register user returned no data')\n }\n\n storedToken.current = registerNewUserResponseData.accessTokenData.accessToken\n\n onRegisterSuccess?.(registerNewUserResponseData)\n\n await performCheckout()\n }\n\n const getRegisterNewUserBody = (): IRegisterNewUserBody => {\n const phoneNumber = isPhoneRequired ? phone : emptyPhone(phone)\n\n const body: IRegisterNewUserBody = isTicketFree\n ? {\n attributes: {\n email: email,\n first_name: firstName,\n last_name: lastName,\n password: password,\n phone: phoneNumber,\n password_confirmation: passwordConfirmation,\n client_id: Config.CLIENT_ID!,\n client_secret: Config.CLIENT_SECRET!,\n check_cart_expiration: true,\n },\n }\n : {\n attributes: {\n city: city,\n country: parseInt(selectedCountry!.value as string, 10),\n email: email,\n first_name: firstName,\n last_name: lastName,\n password: password,\n phone: phoneNumber,\n state: parseInt(selectedState!.value as string, 10),\n street_address: street,\n zip: postalCode,\n password_confirmation: passwordConfirmation,\n client_id: Config.CLIENT_ID!,\n client_secret: Config.CLIENT_SECRET!,\n check_cart_expiration: true,\n },\n }\n\n if (body.attributes.phone === undefined) {\n delete body.attributes.phone\n }\n\n if (isAgeRequired && dateOfBirth) {\n body.attributes.dob_day = dateOfBirth.getDate()\n body.attributes.dob_month = dateOfBirth.getMonth() + 1\n body.attributes.dob_year = dateOfBirth.getFullYear()\n }\n\n return body\n }\n\n const getCheckoutBody = (): ICheckoutBody => {\n const parsedTicketHolders: ICheckoutTicketHolder[] = []\n\n if (config.shouldHideTicketHolderSectionOnSingleTicket && numberOfTicketHolders) {\n parsedTicketHolders.push({\n first_name: firstName,\n last_name: lastName,\n phone: phone,\n email: email,\n })\n } else {\n for (let i = 0; i <= numberOfTicketHolders! - 1; i++) {\n const individualHolder = {\n first_name: ticketHoldersData[i]?.firstName || '',\n last_name: ticketHoldersData[i]?.lastName || '',\n phone: ticketHoldersData[i]?.phone || '',\n email: ticketHoldersData[i]?.email || '',\n }\n parsedTicketHolders.push(individualHolder)\n }\n }\n\n const formattedPhone = isPhoneRequired ? phone : emptyPhone(phone)\n\n const checkoutBody: ICheckoutBody = isTicketFree\n ? {\n attributes: {\n confirm_email: emailConfirmation,\n email: email,\n first_name: firstName,\n last_name: lastName,\n password: password,\n phone: formattedPhone,\n ticket_holders: parsedTicketHolders,\n ttf_opt_in: isSubToTicketFairy,\n brand_opt_in: isSubToBrand,\n },\n }\n : {\n attributes: {\n city: city,\n confirm_email: emailConfirmation,\n country: parseInt(selectedCountry!.value as string, 10),\n email: email,\n first_name: firstName,\n last_name: lastName,\n password: password,\n phone: formattedPhone,\n state: parseInt(selectedState!.value as string, 10),\n street_address: street,\n zip: postalCode,\n ticket_holders: parsedTicketHolders,\n ttf_opt_in: isSubToTicketFairy,\n brand_opt_in: isSubToBrand,\n },\n }\n\n if (isAgeRequired && dateOfBirth) {\n checkoutBody.attributes.dob_day = dateOfBirth.getDate()\n checkoutBody.attributes.dob_month = dateOfBirth.getMonth() + 1\n checkoutBody.attributes.dob_year = dateOfBirth.getFullYear()\n }\n\n if (checkoutBody.attributes.phone === undefined) {\n delete checkoutBody.attributes.phone\n }\n\n return checkoutBody\n }\n\n const getCheckoutBodyWhenSkipping = ({\n userProfile,\n ticketsQuantity,\n }: {\n userProfile: IUserProfilePublic\n ticketsQuantity: number\n }): ICheckoutBody => {\n const parsedTicketHolders: ICheckoutTicketHolder[] = []\n const hFirstName = userProfile.firstName\n const hLastName = userProfile.lastName\n const hPhone = userProfile.phone\n const hEmail = userProfile.email\n\n for (let i = 0; i <= ticketsQuantity - 1; i++) {\n const individualHolder = i\n ? {\n first_name: '',\n last_name: '',\n phone: '',\n email: '',\n }\n : {\n first_name: hFirstName,\n last_name: hLastName,\n phone: hPhone,\n email: hEmail,\n }\n\n parsedTicketHolders.push(individualHolder)\n }\n\n const checkoutBody: ICheckoutBody = isTicketFree\n ? {\n attributes: {\n confirm_email: userProfile.email,\n email: userProfile.email,\n first_name: userProfile.firstName,\n last_name: userProfile.lastName,\n phone: userProfile.phone,\n ticket_holders: parsedTicketHolders,\n ttf_opt_in: isSubToTicketFairy,\n brand_opt_in: isSubToBrand,\n password: password,\n },\n }\n : {\n attributes: {\n city: userProfile.city,\n confirm_email: userProfile.email,\n country: parseInt(userProfile.countryId, 10),\n email: userProfile.email,\n first_name: userProfile.firstName,\n last_name: userProfile.lastName,\n phone: userProfile.phone,\n state: parseInt(userProfile.stateId, 10),\n street_address: userProfile.streetAddress,\n zip: userProfile.zipCode,\n ticket_holders: parsedTicketHolders,\n ttf_opt_in: isSubToTicketFairy,\n brand_opt_in: isSubToBrand,\n password: password,\n },\n }\n\n if (checkoutBody.attributes.phone === undefined) {\n delete checkoutBody.attributes.phone\n }\n\n return checkoutBody\n }\n\n const onSubmit = async () => {\n showErrorMessages({\n firstName: firstName,\n lastName: lastName,\n email: email,\n confirmEmail: emailConfirmation,\n password: password,\n confirmPassword: passwordConfirmation,\n street: street,\n city: city,\n selectedCountry: selectedCountry,\n selectedState: selectedState,\n postalCode: postalCode,\n dateOfBirth: dateOfBirth,\n phoneNumber: phone,\n isRegistering: !loggedUserFirstName && !storedToken.current,\n ticketHolderData: ticketHoldersData,\n })\n\n const isBasicDataValid = checkBasicDataValid()\n const isExtraDataValidErrors = checkExtraDataValid()\n\n if (isExtraDataValidErrors || !isBasicDataValid) {\n return\n }\n\n if (loggedUserFirstName && storedToken.current) {\n await performCheckout()\n } else {\n await performNewUserRegister()\n }\n }\n //#endregion\n\n const setCountryByEvent = async () => {\n const eventCountry = await getData(LocalStorageKeys.EVENT_COUNTRY)\n\n if (!eventCountry) {\n return\n }\n\n if (countries.length > 1 && eventCountry) {\n const selectedCountryItem = _find(countries, (item) => {\n const stringValue = item.code as string\n return stringValue.toUpperCase() === eventCountry?.toUpperCase()\n })\n setSelectedCountry(selectedCountryItem)\n }\n }\n\n //#region Fetch Initial Data\n const fetchData = async () => {\n if (!billingCoreRef.current) {\n onFetchCartError?.({ message: 'BillingCoreRef not initialized' })\n return showAlert('BillingCoreRef not initialized')\n }\n\n setIsLoading(true)\n\n let usrPrfl: IUserProfile | undefined\n const usrTkn = await getData(LocalStorageKeys.ACCESS_TOKEN)\n let skippingStatusInner: SkippingStatusType\n\n const { countriesData, countriesError } =\n await billingCoreRef.current.getCountries()\n\n if (countriesError) {\n setSkippingStatus('fail')\n setIsLoading(false)\n onFetchCountriesError?.(countriesError)\n return showAlert(countriesError.message || 'Error fetching countries')\n }\n\n onFetchCountriesSuccess?.(countriesData!)\n\n const parsedCountries: IDropdownItem[] = _map(countriesData, (item) => {\n return { label: item.name, value: item.id, code: item.code }\n })\n\n if (usrTkn) {\n storedToken.current = usrTkn\n const { userProfileError, userProfileData } =\n await billingCoreRef.current.getUserProfile()\n\n if (userProfileError || !userProfileData) {\n setSkippingStatus('fail')\n setIsLoading(false)\n onFetchUserProfileError?.(userProfileError!)\n\n return showAlert(userProfileError?.message || 'Error fetching user profile')\n }\n\n onFetchUserProfileSuccess?.({\n firstName: userProfileData.firstName,\n lastName: userProfileData.lastName,\n })\n\n usrPrfl = userProfileData\n } else {\n skippingStatusInner = 'fail'\n parsedCountries.unshift({\n value: '-1',\n label: texts?.form?.country || 'Country',\n code: '__',\n })\n setSelectedCountry({\n value: '-1',\n label: texts?.form?.country || 'Country',\n code: '__',\n })\n }\n\n const { cartData, cartError } = await billingCoreRef.current.getCart()\n\n if (cartError || !cartData) {\n setSkippingStatus('fail')\n setIsLoading(false)\n onFetchCartError?.(cartError || { message: 'Error fetching cart' })\n return showAlert(cartError?.message || 'Error fetching cart')\n }\n\n onFetchCartSuccess?.()\n\n if (skippingStatusInner === 'fail') {\n setSkippingStatus('fail')\n } else {\n setSkippingStatus(getSkippingStatus(cartData.quantity))\n }\n\n setNumberOfTicketHolders(cartData.quantity)\n setIsSubToBrand(cartData.isMarketingOptedIn)\n setIsSubToTicketFairy(cartData.isTfOptIn || false)\n setIsTtfCheckboxHidden(cartData.isTfOptInHidden || false)\n\n if (cartData.expiresAt) {\n setSecondsLeft(cartData.expiresAt)\n }\n\n const tHolders: ITicketHolderField[] = []\n for (let i = 0; i < cartData.quantity; i++) {\n tHolders.push({\n firstName: i === 0 && usrPrfl ? usrPrfl.firstName : '',\n lastName: i === 0 && usrPrfl ? usrPrfl.lastName : '',\n email: i === 0 && usrPrfl ? usrPrfl.email : '',\n phone: i === 0 && usrPrfl ? usrPrfl.phone : '',\n firstNameError: '',\n lastNameError: '',\n })\n }\n\n let phoneCountry = 'US'\n let phoneCountryDialCode = '+1'\n const eventCountry = await getData(LocalStorageKeys.EVENT_COUNTRY)\n\n if (eventCountry) {\n phoneCountry = eventCountry.toUpperCase()\n phoneCountryDialCode = getCountryDialCode(phoneCountry)\n } else {\n try {\n const deviceCountry = await DeviceCountry.getCountryCode(TYPE_ANY)\n phoneCountry = deviceCountry.code.toUpperCase()\n phoneCountryDialCode = getCountryDialCode(phoneCountry)\n } catch (err) {\n phoneCountry = 'US'\n }\n }\n\n if (usrPrfl) {\n if (!isPhoneHidden && isPhoneRequired) {\n if (!checkIsStoredPhoneNumberFormat(usrPrfl.phone)) {\n setPhoneError(\n texts?.invalidPhoneNumberError || 'Please enter a valid phone number'\n )\n skippingStatusInner = 'fail'\n setSkippingStatus('fail')\n setIsLoading(false)\n } else {\n // We can perform Checkout process since phone is valid\n if (!isBillingRequired && usrTkn && cartData) {\n const checkoutBody: ICheckoutBody = getCheckoutBodyWhenSkipping({\n userProfile: usrPrfl,\n ticketsQuantity: cartData.quantity,\n })\n return await performCheckout(checkoutBody)\n } else {\n if (skippingStatusInner === 'skipping') {\n setSkippingStatus('fail')\n }\n }\n }\n } else {\n // We can perform Checkout process since phone is valid\n if (!isBillingRequired && usrTkn && cartData) {\n const checkoutBody: ICheckoutBody = getCheckoutBodyWhenSkipping({\n userProfile: usrPrfl,\n ticketsQuantity: cartData.quantity,\n })\n return await performCheckout(checkoutBody)\n } else {\n if (skippingStatusInner === 'skipping') {\n setSkippingStatus('fail')\n }\n }\n }\n\n const userPhone = usrPrfl.phone === null ? phoneCountryDialCode : usrPrfl.phone\n\n if (userPhone.length <= 5) {\n phoneCountryCode.current = userPhone\n }\n\n handleSetFormDataFromUserProfile({\n ...usrPrfl,\n phone: userPhone,\n })\n } else {\n // There is no user profile data\n phoneCountryCode.current = phoneCountryDialCode\n setPhone(phoneCountryDialCode)\n }\n\n setCountries(parsedCountries)\n setTicketHoldersData(tHolders)\n setIsSubmittingData(false)\n setIsLoading(false)\n }\n //#endregion Fetch Initial Data\n\n //#region Effects\n useEffect(() => {\n handleOnLoadingChange(isLoading)\n }, [isLoading, handleOnLoadingChange])\n\n useEffect(() => {\n handleOnSkippingStatusChange(skippingStatus)\n }, [handleOnSkippingStatusChange, skippingStatus])\n\n useEffect(() => {\n if (countryId) {\n if (countries.length > 1) {\n const selectedCountryItem = _find(countries, (item) => item.value === countryId)\n setSelectedCountry(selectedCountryItem)\n }\n } else {\n setCountryByEvent()\n }\n }, [countries, countryId])\n\n useEffect(() => {\n const getStates = async () => {\n if (!selectedCountry) {\n return\n }\n\n if (!billingCoreRef.current) {\n onFetchCartError?.({ message: 'BillingCoreRef not initialized' })\n return showAlert('BillingCoreRef not initialized')\n }\n\n const { statesData, statesError } = await billingCoreRef.current.getStates(\n selectedCountry.value.toString()\n )\n\n if (statesError) {\n onFetchStatesError?.(statesError!)\n return showAlert(statesError?.message || 'Error fetching states')\n }\n\n const parsedStates: IDropdownItem[] = _map(statesData, (item, index) => {\n return { label: item, value: index }\n })\n\n onFetchStatesSuccess?.()\n setStates(parsedStates)\n }\n\n if (selectedCountry && selectedCountry.value !== '-1') {\n getStates()\n }\n }, [selectedCountry])\n\n useEffect(() => {\n if (states.length > 1 && stateId) {\n const selectedStateItem = _find(states, (item) => item.value === stateId)\n if (!selectedStateItem) {\n return setSelectedState({\n value: '-1',\n label: texts?.form?.state || 'State/County',\n })\n }\n setSelectedState(selectedStateItem)\n } else {\n setSelectedState({\n value: '-1',\n label: texts?.form?.state || 'State/County',\n })\n }\n }, [stateId, states])\n\n useEffect(() => {\n setCountries([\n {\n value: '-1',\n label: texts?.form?.country || 'Country',\n },\n ])\n setStates([\n {\n value: '-1',\n label: texts?.form?.state || 'State/County',\n },\n ])\n fetchData()\n }, [])\n //#endregion\n\n const isDataValid = checkBasicDataValid()\n\n const isButtonDisabled = config.isCheckoutAlwaysButtonEnabled ? false : !isDataValid\n\n //#region RENDER\n const renderTicketHolders = () => {\n if (!numberOfTicketHolders || !holderLabels || ticketHoldersData.length === 0) {\n return null\n }\n\n const tHolders = []\n for (let i = 0; i < numberOfTicketHolders; i++) {\n const thItemTitle = texts?.form?.ticketHolderItem || 'Ticket Holder'\n tHolders.push(\n <View key={`ticketHolder.${i}`}>\n <Text style={styles?.ticketHolderItemHeader}>\n {thItemTitle} {i + 1}\n </Text>\n <Input\n label={holderLabels.firstName}\n value={ticketHoldersData[i].firstName}\n onChangeText={(text) => {\n const copyTicketHolders = [...ticketHoldersData]\n copyTicketHolders[i].firstName = text\n copyTicketHolders[i].firstNameError = validateEmpty(text)\n\n setTicketHoldersData(copyTicketHolders)\n }}\n error={ticketHoldersData[i].firstNameError}\n styles={styles?.inputStyles}\n />\n <Input\n label={holderLabels.lastName}\n value={ticketHoldersData[i].lastName}\n onChangeText={(text) => {\n const copyTicketHolders = [...ticketHoldersData]\n copyTicketHolders[i].lastName = text\n copyTicketHolders[i].lastNameError = validateEmpty(text)\n\n setTicketHoldersData(copyTicketHolders)\n }}\n error={ticketHoldersData[i].lastNameError}\n styles={styles?.inputStyles}\n />\n <Input\n label={holderLabels.email}\n value={ticketHoldersData[i].email}\n onChangeText={(text) => {\n const copyTicketHolders = [...ticketHoldersData]\n copyTicketHolders[i].email = text\n setTicketHoldersData(copyTicketHolders)\n }}\n keyboardType=\"email-address\"\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n />\n <Input\n label={holderLabels.phone}\n value={ticketHoldersData[i].phone}\n onChangeText={(text) => {\n const copyTicketHolders = [...ticketHoldersData]\n copyTicketHolders[i].phone = text\n setTicketHoldersData(copyTicketHolders)\n }}\n keyboardType=\"phone-pad\"\n styles={styles?.inputStyles}\n />\n </View>\n )\n }\n\n return (\n <>\n <Text style={styles?.ticketHoldersTitle}>\n {texts?.form?.ticketHoldersTitle || 'Ticket Holders'}\n </Text>\n {tHolders}\n </>\n )\n }\n\n const renderCheckingOut = () => {\n const skippingStyles = skipBillingConfig?.styles\n return (\n <View style={[s.skippingRootContainer, skippingStyles?.rootContainer]}>\n <View style={[s.skippingDialogContainer, skippingStyles?.dialogContainer]}>\n <Image\n source={skipBillingConfig?.brandImage || R.images.brand}\n style={[s.skippingBrandImage, skippingStyles?.brandImage]}\n />\n <Text style={[s.skippingMessage, skippingStyles?.text]}>\n {texts?.skippingMessage || 'Checking out...'}\n </Text>\n {!!skipBillingConfig?.isActivityIndicatorVisible && (\n <ActivityIndicator\n color={skippingStyles?.activityIndicator?.color || R.colors.black}\n size={skippingStyles?.activityIndicator?.size || 'large'}\n />\n )}\n </View>\n </View>\n )\n }\n\n const renderContent = () => (\n <>\n <KeyboardAwareScrollView extraScrollHeight={32}>\n <View style={styles?.rootContainer}>\n <Login\n onLoginSuccessful={handleOnLoginSuccess}\n onLoginError={handleOnLoginError}\n onLogoutSuccess={handleOnLogoutSuccess}\n onLogoutError={onLogoutError}\n isLoginDialogVisible={isLoginDialogVisible}\n showLoginDialog={showLoginDialog}\n hideLoginDialog={hideLoginDialog}\n userFirstName={loggedUserFirstName}\n texts={{ ...texts?.loginTexts, message: loginMessage }}\n styles={styles?.loginStyles}\n brandImages={loginBrandImages}\n />\n <Text style={styles?.screenTitle}>\n {texts?.form?.getYourTicketsTitle || 'Get Your Tickets'}\n </Text>\n\n <Input\n label={texts?.form?.firstName || 'First name'}\n value={firstName}\n onChangeText={handleOnFirstNameChanged}\n error={firstNameError || firstNameErrorState}\n styles={styles?.inputStyles}\n />\n <Input\n label={texts?.form?.lastName || 'Last name'}\n value={lastName}\n onChangeText={handleOnLastNameChanged}\n error={lastNameError || lastNameErrorState}\n styles={styles?.inputStyles}\n />\n\n <Text style={styles?.texts}>\n {texts?.form?.emailsAdvice ||\n `IMPORTANT: Please double check that your email address is correct.\\nIt's where we send your confirmation and e-tickets to!`}\n </Text>\n\n <Input\n label={texts?.form?.email || 'Email'}\n value={email}\n onChangeText={handleOnEmailChanged}\n keyboardType=\"email-address\"\n error={emailError || emailErrorState}\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n />\n <Input\n label={texts?.form?.confirmEmail || 'Confirm email'}\n value={emailConfirmation}\n onChangeText={handleOnEmailConfirmationChanged}\n keyboardType=\"email-address\"\n error={confirmEmailError || emailConfirmationErrorState}\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n />\n {isAgeRequired && (\n <DatePicker\n text={texts?.form?.dateOfBirth || 'Date of Birth'}\n onSelectDate={handleOnSelectDate}\n selectedDate={dateOfBirth}\n styles={styles?.datePicker}\n error={dateOfBirthError}\n />\n )}\n {!loggedUserFirstName && (\n <>\n <Text style={styles?.passwordTitle}>\n {texts?.form?.choosePassword ||\n 'Choose a password for your new TICKETFAIRY account'}\n </Text>\n <Input\n label={texts?.form?.password || 'Password'}\n isSecure\n onChangeText={handleOnPasswordChanged}\n error={passwordError || passwordErrorState}\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n textContentType=\"oneTimeCode\"\n />\n <Input\n label={texts?.form?.confirmPassword || 'Confirm password'}\n isSecure\n onChangeText={handleOnConfirmPasswordChanged}\n error={confirmPasswordError || confirmPasswordErrorState}\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n textContentType=\"oneTimeCode\"\n />\n </>\n )}\n\n {!isPhoneHidden && (\n <PhoneInput\n phoneNumber={phone}\n onChangePhoneNumber={handleOnChangePhoneNumber}\n styles={styles?.phoneInputStyles}\n error={phoneError}\n texts={{\n label: phoneLabel,\n ...texts?.form?.phoneInput,\n }}\n />\n )}\n\n {!isTicketFree && (\n <>\n <Input\n label={addressLabel}\n value={street}\n onChangeText={handleOnStreetChanged}\n error={streetError || streetErrorState}\n styles={styles?.inputStyles}\n />\n <Input\n label={texts?.form?.city || 'City'}\n value={city}\n onChangeText={handleOnCityChanged}\n error={cityError || cityErrorState}\n styles={styles?.inputStyles}\n />\n <DropdownMaterial\n items={countries}\n onSelectItem={handleOnCountryChanged}\n selectedOption={selectedCountry}\n styles={styles?.dropdownMaterialStyles}\n materialInputProps={{\n label: texts?.form?.country || 'Country',\n error: countryErrorState,\n }}\n />\n <Input\n label={texts?.form?.zipCode || 'Postal Code / Zip Code'}\n value={postalCode}\n onChangeText={handleOnPostalCodeChanged}\n error={postalCodeError || postalCodeErrorState}\n styles={styles?.inputStyles}\n />\n <DropdownMaterial\n items={states}\n onSelectItem={handleOnStateChanged}\n selectedOption={selectedState}\n styles={styles?.dropdownMaterialStyles}\n materialInputProps={{\n label: texts?.form?.state || 'State',\n error: stateErrorState,\n }}\n />\n </>\n )}\n <Checkbox\n onPress={handleIsSubToBrandToggle}\n text={brandCheckBoxText}\n isActive={isSubToBrand}\n styles={styles?.checkboxStyles}\n />\n\n {!isTtfCheckboxHidden && (\n <Checkbox\n onPress={handleIsSubToTicketFairyToggle}\n isActive={isSubToTicketFairy}\n customTextComp={\n <Text\n style={[\n styles?.customCheckbox?.text,\n !!ttfPrivacyPolicyError && {\n color: styles?.customCheckbox?.errorColor,\n },\n ]}\n >\n {texts?.form?.isSubToTicketFairy ||\n `I agree that The Ticket Fairy may use the personal data that have provided for marketing purposes, such as recommending events that I might be interested in, in accordance with its `}\n <Text\n style={styles?.privacyPolicyLinkStyle}\n onPress={handleOpenPrivacyLink}\n >\n {texts?.form?.privacyPolicy || 'Privacy Policy'}\n </Text>\n .\n </Text>\n }\n styles={{ error: s.ttfPolicyError, ...styles?.checkboxStyles }}\n error={ttfPrivacyPolicyError}\n />\n )}\n\n {renderTicketHolders()}\n\n <Button\n onPress={onSubmit}\n text={texts?.checkoutButton || 'CHECKOUT'}\n isDisabled={isButtonDisabled}\n isLoading={isSubmittingData}\n styles={\n isButtonDisabled\n ? {\n button: s.submitButtonDisabled,\n ...styles?.checkoutButtonDisabled,\n }\n : {\n container: [s.submitButton, styles?.checkoutButton?.container],\n text: styles?.checkoutButton?.text,\n button: styles?.checkoutButton?.button,\n }\n }\n />\n </View>\n {areLoadingIndicatorsEnabled && isLoading && <Loading />}\n </KeyboardAwareScrollView>\n <CartTimer\n secondsLeft={secondsLeft}\n styles={styles?.cartTimer}\n texts={texts?.cartTimer}\n shouldNotMinimize={shouldCartTimerNotMinimizeOnTap}\n />\n </>\n )\n\n return (\n <BillingCore\n ref={billingCoreRef}\n onSecondsLeftChange={setSecondsLeft}\n onCartExpired={onCartExpired}\n >\n <SessionHandle ref={sessionHandleRef}>\n {skippingStatus === 'skipping' && areLoadingIndicatorsEnabled\n ? renderCheckingOut()\n : renderContent()}\n </SessionHandle>\n </BillingCore>\n )\n //#endregion\n }\n)\n\nexport default Billing\n","import _find from 'lodash/find'\n\nexport const getCountryDialCode = (country: string) =>\n _find(countryCodes, (item) => item.code.toUpperCase() === country.toUpperCase())\n ?.dial_code || '+1'\n\nexport const countryCodes = [\n {\n name: {\n en: 'Afghanistan',\n ru: 'Афганистан',\n pl: 'Afganistan',\n ua: 'Афганістан',\n cz: 'Afghánistán',\n by: '',\n pt: 'Afeganistão',\n },\n dial_code: '+93',\n code: 'AF',\n flag: '🇦🇫',\n },\n {\n name: {\n en: 'Albania',\n ru: 'Албания',\n pl: 'Albania',\n ua: 'Албанія',\n cz: 'Albánie',\n by: '',\n pt: 'Albânia',\n },\n dial_code: '+355',\n code: 'AL',\n flag: '🇦🇱',\n },\n {\n name: {\n en: 'Algeria',\n ru: 'Алжир',\n pl: 'Algieria',\n ua: 'Алжир',\n cz: 'Alžírsko',\n by: '',\n pt: 'Argélia',\n },\n dial_code: '+213',\n code: 'DZ',\n flag: '🇩🇿',\n },\n {\n name: {\n en: 'American Samoa',\n ru: 'Американское Самоа',\n pl: 'Samoa Amerykańskie',\n ua: 'Американське Самоа',\n cz: 'Americká Samoa',\n by: '',\n pt: 'Samoa',\n },\n dial_code: '+1684',\n code: 'AS',\n flag: '🇦🇸',\n },\n {\n name: {\n en: 'Andorra',\n ru: 'Андорра',\n pl: 'Andora',\n ua: 'Андорра',\n cz: 'Andorra',\n by: '',\n pt: 'Andorra',\n },\n dial_code: '+376',\n code: 'AD',\n flag: '🇦🇩',\n },\n {\n name: {\n en: 'Angola',\n ru: 'Ангола',\n pl: 'Angola',\n ua: 'Ангола',\n cz: 'Angola',\n by: '',\n pt: 'Angola',\n },\n dial_code: '+244',\n code: 'AO',\n flag: '🇦🇴',\n },\n {\n name: {\n en: 'Anguilla',\n ru: 'Ангилья',\n pl: 'Anguilla',\n ua: 'Ангілья',\n cz: 'Anguilla',\n by: '',\n pt: 'Anguila',\n },\n dial_code: '+1264',\n code: 'AI',\n flag: '🇦🇮',\n },\n {\n name: {\n en: 'Antarctica',\n ru: 'Антарктида',\n pl: 'Antarktyda',\n ua: 'Антарктида',\n cz: 'Antarktida',\n by: '',\n pt: 'Antarctica',\n },\n dial_code: '+672',\n code: 'AQ',\n flag: '🇦🇶',\n },\n {\n name: {\n en: 'Antigua and Barbuda',\n ru: 'Антигуа и Барбуда',\n pl: 'Antigua i Barbuda',\n ua: 'Антигуа та Барбуда',\n cz: 'Antigua a Barbuda',\n by: '',\n pt: 'Antiga e Barbuda',\n },\n dial_code: '+1268',\n code: 'AG',\n flag: '🇦🇬',\n },\n {\n name: {\n en: 'Argentina',\n ru: 'Аргентина',\n pl: 'Argentyna',\n ua: 'Аргентина',\n cz: 'Argentina',\n by: '',\n pt: 'Argentina',\n },\n dial_code: '+54',\n code: 'AR',\n flag: '🇦🇷',\n },\n {\n name: {\n en: 'Armenia',\n ru: 'Армения',\n pl: 'Armenia',\n ua: 'Вірменія',\n cz: 'Arménie',\n by: '',\n pt: 'Arménia',\n },\n dial_code: '+374',\n code: 'AM',\n flag: '🇦🇲',\n },\n {\n name: {\n en: 'Aruba',\n ru: 'Аруба',\n pl: 'Aruba',\n ua: 'Аруба',\n cz: 'Aruba',\n by: '',\n pt: 'Aruba',\n },\n dial_code: '+297',\n code: 'AW',\n flag: '🇦🇼',\n },\n {\n name: {\n en: 'Australia',\n ru: 'Австралия',\n pl: 'Australia',\n ua: 'Австралія',\n cz: 'Austrálie',\n by: '',\n pt: 'Austrália',\n },\n dial_code: '+61',\n code: 'AU',\n flag: '🇦🇺',\n },\n {\n name: {\n en: 'Austria',\n ru: 'Австрия',\n pl: 'Austria',\n ua: 'Австрія',\n cz: 'Rakousko',\n by: '',\n pt: 'Áustria',\n },\n dial_code: '+43',\n code: 'AT',\n flag: '🇦🇹',\n },\n {\n name: {\n en: 'Azerbaijan',\n ru: 'Азербайджан',\n pl: 'Azerbejdżan',\n ua: 'Азербайджан',\n cz: 'Ázerbajdžán',\n by: '',\n pt: 'Azerbaijão',\n },\n dial_code: '+994',\n code: 'AZ',\n flag: '🇦🇿',\n },\n {\n name: {\n en: 'Bahamas',\n ru: 'Багамские Острова',\n pl: 'Bahamy',\n ua: 'Багамські острови',\n cz: 'Bahamy',\n by: '',\n pt: 'Baamas',\n },\n dial_code: '+1242',\n code: 'BS',\n flag: '🇧🇸',\n },\n {\n name: {\n en: 'Bahrain',\n ru: 'Бахрейн',\n pl: 'Bahrajn',\n ua: 'Бахрейн',\n cz: 'Bahrajn',\n by: '',\n pt: 'Barém',\n },\n dial_code: '+973',\n code: 'BH',\n flag: '🇧🇭',\n },\n {\n name: {\n en: 'Bangladesh',\n ru: 'Бангладеш',\n pl: 'Bangladesz',\n ua: 'Бангладеш',\n cz: 'Bangladéš',\n by: '',\n pt: 'Bangladeche',\n },\n dial_code: '+880',\n code: 'BD',\n flag: '🇧🇩',\n },\n {\n name: {\n en: 'Barbados',\n ru: 'Барбадос',\n pl: 'Barbados',\n ua: 'Барбадос',\n cz: 'Barbados',\n by: '',\n pt: 'Barbados',\n },\n dial_code: '+1246',\n code: 'BB',\n flag: '🇧🇧',\n },\n {\n name: {\n en: 'Belarus',\n ru: 'Белоруссия',\n pl: 'Białoruś',\n ua: 'Білорусь',\n cz: 'Bělorusko',\n by: '',\n pt: 'Bielorrússia',\n },\n dial_code: '+375',\n code: 'BY',\n flag: '🇧🇾',\n },\n {\n name: {\n en: 'Belgium',\n ru: 'Бельгия',\n pl: 'Belgia',\n ua: 'Бельгія',\n cz: 'Belgie',\n by: '',\n pt: 'Bélgica',\n },\n dial_code: '+32',\n code: 'BE',\n flag: '🇧🇪',\n },\n {\n name: {\n en: 'Belize',\n ru: 'Белиз',\n pl: 'Belize',\n ua: 'Беліз',\n cz: 'Belize',\n by: '',\n pt: 'Belize',\n },\n dial_code: '+501',\n code: 'BZ',\n flag: '🇧🇿',\n },\n {\n name: {\n en: 'Benin',\n ru: 'Бенин',\n pl: 'Benin',\n ua: 'Бенін',\n cz: 'Benin',\n by: '',\n pt: 'Benim',\n },\n dial_code: '+229',\n code: 'BJ',\n flag: '🇧🇯',\n },\n {\n name: {\n en: 'Bermuda',\n ru: 'Бермуды',\n pl: 'Bermudy',\n ua: 'Бермуди',\n cz: 'Bermudy',\n by: '',\n pt: 'Bermudas',\n },\n dial_code: '+1441',\n code: 'BM',\n flag: '🇧🇲',\n },\n {\n name: {\n en: 'Bhutan',\n ru: 'Бутан',\n pl: 'Bhutan',\n ua: 'Бутан',\n cz: 'Bhútán',\n by: '',\n pt: 'Butão',\n },\n dial_code: '+975',\n code: 'BT',\n flag: '🇧🇹',\n },\n {\n name: {\n en: 'Bolivia',\n ru: 'Боливия',\n pl: 'Boliwia',\n ua: 'Болівія',\n cz: 'Bolívie',\n by: '',\n pt: 'Bolívia',\n },\n dial_code: '+591',\n code: 'BO',\n flag: '🇧🇴',\n },\n {\n name: {\n en: 'Bosnia and Herzegovina',\n ru: 'Босния и Герцеговина',\n pl: 'Bośnia i Hercegowina',\n ua: 'Боснія і Герцеговина',\n cz: 'Bosna a Hercegovina',\n by: '',\n pt: 'Bósnia e Herzegovina',\n },\n dial_code: '+387',\n code: 'BA',\n flag: '🇧🇦',\n },\n {\n name: {\n en: 'Botswana',\n ru: 'Ботсвана',\n pl: 'Botswana',\n ua: 'Ботсвана',\n cz: 'Botswana',\n by: '',\n pt: 'Botsuana',\n },\n dial_code: '+267',\n code: 'BW',\n flag: '🇧🇼',\n },\n {\n name: {\n en: 'Brazil',\n ru: 'Бразилия',\n pl: 'Brazylia',\n ua: 'Бразилія',\n cz: 'Brazílie',\n by: '',\n pt: 'Brasil',\n },\n dial_code: '+55',\n code: 'BR',\n flag: '🇧🇷',\n },\n {\n name: {\n en: 'British Indian Ocean Territory',\n ru: 'Британская территория Индийского океана',\n pl: 'Brytyjskie Terytorium Oceanu Indyjskiego',\n ua: 'Британська територія в Індійському океані',\n cz: 'Britské území v Indickém oceánu',\n by: '',\n pt: 'Território Britânico do Oceano Índico',\n },\n dial_code: '+246',\n code: 'IO',\n flag: '🇮🇴',\n },\n {\n name: {\n en: 'Brunei Darussalam',\n ru: 'Бруней-Даруссалам',\n pl: 'Brunei Darussalam',\n ua: 'Бруней-Даруссалам',\n cz: 'Brunej Darussalam',\n by: '',\n pt: 'Brunei',\n },\n dial_code: '+673',\n code: 'BN',\n flag: '🇧🇳',\n },\n {\n name: {\n en: 'Bulgaria',\n ru: 'Болгария',\n pl: 'Bułgaria',\n ua: 'Болгарія',\n cz: 'Bulharsko',\n by: '',\n pt: 'Bulgária',\n },\n dial_code: '+359',\n code: 'BG',\n flag: '🇧🇬',\n },\n {\n name: {\n en: 'Burkina Faso',\n ru: 'Буркина-Фасо',\n pl: 'Burkina Faso',\n ua: 'Буркіна-Фасо',\n cz: 'Burkina Faso',\n by: '',\n pt: 'Burquina Faso',\n },\n dial_code: '+226',\n code: 'BF',\n flag: '🇧🇫',\n },\n {\n name: {\n en: 'Burundi',\n ru: 'Бурунди',\n pl: 'Burundi',\n ua: 'Бурунді',\n cz: 'Burundi',\n by: '',\n pt: 'Burúndi',\n },\n dial_code: '+257',\n code: 'BI',\n flag: '🇧🇮',\n },\n {\n name: {\n en: 'Cambodia',\n ru: 'Камбоджа',\n pl: 'Kambodża',\n ua: 'Камбоджа',\n cz: 'Kambodža',\n by: '',\n pt: 'Camboja',\n },\n dial_code: '+855',\n code: 'KH',\n flag: '🇰🇭',\n },\n {\n name: {\n en: 'Cameroon',\n ru: 'Камерун',\n pl: 'Kamerun',\n ua: 'Камерун',\n cz: 'Kamerun',\n by: '',\n pt: 'Camarões',\n },\n dial_code: '+237',\n code: 'CM',\n flag: '🇨🇲',\n },\n {\n name: {\n en: 'Canada',\n ru: 'Канада',\n pl: 'Kanada',\n ua: 'Канада',\n cz: 'Kanada',\n by: '',\n pt: 'Canadá',\n },\n dial_code: '+1',\n code: 'CA',\n flag: '🇨🇦',\n },\n {\n name: {\n en: 'Cape Verde',\n ru: 'Кабо-Верде',\n pl: 'Wyspy Zielonego Przylądka',\n ua: 'Кабо-Верде',\n cz: 'Kapverdy',\n by: '',\n pt: 'Cabo Verde',\n },\n dial_code: '+238',\n code: 'CV',\n flag: '🇨🇻',\n },\n {\n name: {\n en: 'Cayman Islands',\n ru: 'Каймановы острова',\n pl: 'Kajmany',\n ua: 'Кайманові острови',\n cz: 'Kajmanské ostrovy',\n by: '',\n pt: 'Ilhas Caimão',\n },\n dial_code: '+345',\n code: 'KY',\n flag: '🇰🇾',\n },\n {\n name: {\n en: 'Central African Republic',\n ru: 'Центрально-Африканская Республика',\n pl: 'Republika Środkowoafrykańska',\n ua: 'Центральноафриканська Республіка',\n cz: 'Středoafrická republika',\n by: '',\n pt: 'República Centro-Africana',\n },\n dial_code: '+236',\n code: 'CF',\n flag: '🇨🇫',\n },\n {\n name: {\n en: 'Chad',\n ru: 'Чад',\n pl: 'Czad',\n ua: 'Чад',\n cz: 'Čad',\n by: '',\n pt: 'Chade',\n },\n dial_code: '+235',\n code: 'TD',\n flag: '🇹🇩',\n },\n {\n name: {\n en: 'Chile',\n ru: 'Чили',\n pl: 'Chile',\n ua: 'Чилі',\n cz: 'Chile',\n by: '',\n pt: 'Chile',\n },\n dial_code: '+56',\n code: 'CL',\n flag: '🇨🇱',\n },\n {\n name: {\n en: 'China',\n ru: 'Китай',\n pl: 'Chiny',\n ua: 'Китай',\n cz: 'Čína',\n by: '',\n pt: 'China',\n },\n dial_code: '+86',\n code: 'CN',\n flag: '🇨🇳',\n },\n {\n name: {\n en: 'Christmas Island',\n ru: 'Остров Рождества',\n pl: 'Wyspa Bożego Narodzenia',\n ua: 'Острів Різдва',\n cz: 'Vánoční ostrov',\n by: '',\n pt: 'Ilha do Natal',\n },\n dial_code: '+61',\n code: 'CX',\n flag: '🇨🇽',\n },\n {\n name: {\n en: 'Cocos (Keeling) Islands',\n ru: 'Кокосовые (Килинг) острова',\n pl: 'Wyspy Kokosowe (Keelinga)',\n ua: 'Кокосові (Кілінг) острови',\n cz: 'Kokosové (Keelingovy) ostrovy',\n by: '',\n pt: 'Ilhas dos Cocos',\n },\n dial_code: '+61',\n code: 'CC',\n flag: '🇨🇨',\n },\n {\n name: {\n en: 'Colombia',\n ru: 'Колумбия',\n pl: 'Kolumbia',\n ua: 'Колумбія',\n cz: 'Kolumbie',\n by: '',\n pt: 'Colômbia',\n },\n dial_code: '+57',\n code: 'CO',\n flag: '🇨🇴',\n },\n {\n name: {\n en: 'Comoros',\n ru: 'Коморские острова',\n pl: 'Komory',\n ua: 'Коморські острови',\n cz: 'Komory',\n by: '',\n pt: 'Comores',\n },\n dial_code: '+269',\n code: 'KM',\n flag: '🇰🇲',\n },\n {\n name: {\n en: 'Congo',\n ru: 'Конго',\n pl: 'Kongo',\n ua: 'Конго',\n cz: 'Kongo',\n by: '',\n pt: 'Congo-Brazzaville',\n },\n dial_code: '+242',\n code: 'CG',\n flag: '🇨🇬',\n },\n {\n name: {\n en: 'Congo, The Democratic Republic of the',\n ru: 'Конго, Демократическая Республика',\n pl: 'Kongo, Republika Demokratyczna',\n ua: 'Конго, Демократична Республіка',\n cz: 'Kongo, Demokratická Republika',\n by: '',\n pt: 'Congo-Kinshasa',\n },\n dial_code: '+243',\n code: 'CD',\n flag: '🇨🇩',\n },\n {\n name: {\n en: 'Cook Islands',\n ru: 'Острова Кука',\n pl: 'Wyspy Cooka',\n ua: 'Острови Кука',\n cz: 'Cookovy ostrovy',\n by: '',\n pt: 'Ilhas Cook',\n },\n dial_code: '+682',\n code: 'CK',\n flag: '🇨🇰',\n },\n {\n name: {\n en: 'Costa Rica',\n ru: 'Коста-Рика',\n pl: 'Kostaryka',\n ua: 'Коста-Ріка',\n cz: 'Kostarika',\n by: '',\n pt: 'Costa Rica',\n },\n dial_code: '+506',\n code: 'CR',\n flag: '🇨🇷',\n },\n {\n name: {\n en: \"Cote d'Ivoire\",\n ru: \"Кот-д'Ивуар\",\n pl: 'Wybrzeże Kości Słoniowej',\n ua: \"Кот-д'Івуар\",\n cz: 'Pobřeží slonoviny',\n by: '',\n pt: 'Costa do Marfim',\n },\n dial_code: '+225',\n code: 'CI',\n flag: '🇨🇮',\n },\n {\n name: {\n en: 'Croatia',\n ru: 'Хорватия',\n pl: 'Chorwacja',\n ua: 'Хорватія',\n cz: 'Chorvatsko',\n by: '',\n pt: 'Croácia',\n },\n dial_code: '+385',\n code: 'HR',\n flag: '🇭🇷',\n },\n {\n name: {\n en: 'Cuba',\n ru: 'Куба',\n pl: 'Kuba',\n ua: 'Куба',\n cz: 'Kuba',\n by: '',\n pt: 'Cuba',\n },\n dial_code: '+53',\n code: 'CU',\n flag: '🇨🇺',\n },\n {\n name: {\n en: 'Cyprus',\n ru: 'Кипр',\n pl: 'Cypr',\n ua: 'Кіпр',\n cz: 'Kypr',\n by: '',\n pt: 'Chipre',\n },\n dial_code: '+537',\n code: 'CY',\n flag: '🇨🇾',\n },\n {\n name: {\n en: 'Czech Republic',\n ru: 'Чехия',\n pl: 'Republika Czeska',\n ua: 'Чеська Республіка',\n cz: 'Česká republika',\n by: '',\n pt: 'República Checa',\n },\n dial_code: '+420',\n code: 'CZ',\n flag: '🇨🇿',\n },\n {\n name: {\n en: 'Denmark',\n ru: 'Дания',\n pl: 'Dania',\n ua: 'Данія',\n cz: 'Dánsko',\n by: '',\n pt: 'Dinamarca',\n },\n dial_code: '+45',\n code: 'DK',\n flag: '🇩🇰',\n },\n {\n name: {\n en: 'Djibouti',\n ru: 'Джибути',\n pl: 'Dżibuti',\n ua: 'Джибуті',\n cz: 'Džibuti',\n by: '',\n pt: 'Jibuti',\n },\n dial_code: '+253',\n code: 'DJ',\n flag: '🇩🇯',\n },\n {\n name: {\n en: 'Dominica',\n ru: 'Доминика',\n pl: 'Dominika',\n ua: 'Домініка',\n cz: 'Dominika',\n by: '',\n pt: 'Domínica',\n },\n dial_code: '+1767',\n code: 'DM',\n flag: '🇩🇲',\n },\n {\n name: {\n en: 'Dominican Republic',\n ru: 'Доминиканская Респблика',\n pl: 'Republika Dominikany',\n ua: 'Домініканська республіка',\n cz: 'Dominikánská republika',\n by: '',\n pt: 'República Dominicana',\n },\n dial_code: '+1849',\n code: 'DO',\n flag: '🇩🇴',\n },\n {\n name: {\n en: 'Ecuador',\n ru: 'Эквадор',\n pl: 'Ekwador',\n ua: 'Еквадор',\n cz: 'Ekvádor',\n by: '',\n pt: 'Equador',\n },\n dial_code: '+593',\n code: 'EC',\n flag: '🇪🇨',\n },\n {\n name: {\n en: 'Egypt',\n ru: 'Египет',\n pl: 'Egipt',\n ua: 'Єгипет',\n cz: 'Egypt',\n by: '',\n pt: 'Egipto',\n },\n dial_code: '+20',\n code: 'EG',\n flag: '🇪🇬',\n },\n {\n name: {\n en: 'El Salvador',\n ru: 'Сальвадор',\n pl: 'Salwador',\n ua: 'Сальвадор',\n cz: 'El Salvador',\n by: '',\n pt: 'Salvador',\n },\n dial_code: '+503',\n code: 'SV',\n flag: '🇸🇻',\n },\n {\n name: {\n en: 'Equatorial Guinea',\n ru: 'Экваториальная Гвинея',\n pl: 'Gwinea Równikowa',\n ua: 'Екваторіальна Гвінея',\n cz: 'Rovníková Guinea',\n by: '',\n pt: 'Guiné Equatorial',\n },\n dial_code: '+240',\n code: 'GQ',\n flag: '🇬🇶',\n },\n {\n name: {\n en: 'Eritrea',\n ru: 'Эритрея',\n pl: 'Erytrea',\n ua: 'Еритрея',\n cz: 'Eritrea',\n by: '',\n pt: 'Eritreia',\n },\n dial_code: '+291',\n code: 'ER',\n flag: '🇪🇷',\n },\n {\n name: {\n en: 'Estonia',\n ru: 'Эстония',\n pl: 'Estonia',\n ua: 'Естонія',\n cz: 'Estonsko',\n by: '',\n pt: 'Estónia',\n },\n dial_code: '+372',\n code: 'EE',\n flag: '🇪🇪',\n },\n {\n name: {\n en: 'Ethiopia',\n ru: 'Эфиопия',\n pl: 'Etiopia',\n ua: 'Ефіопія',\n cz: 'Etiopie',\n by: '',\n pt: 'Etiópia',\n },\n dial_code: '+251',\n code: 'ET',\n flag: '🇪🇹',\n },\n {\n name: {\n en: 'Falkland Islands (Malvinas)',\n ru: 'Фолклендские острова (Malvinas)',\n pl: 'Falklandy (Malwiny)',\n ua: 'Фолклендські острови (Мальвінські острови)',\n cz: 'Falklandské ostrovy (Malvíny)',\n by: '',\n pt: 'Ilhas Falkland',\n },\n dial_code: '+500',\n code: 'FK',\n flag: '🇫🇰',\n },\n {\n name: {\n en: 'Faroe Islands',\n ru: 'Фарерские острова',\n pl: 'Wyspy Owcze',\n ua: 'Фарерські острови',\n cz: 'Faerské ostrovy',\n by: '',\n pt: 'Faroé',\n },\n dial_code: '+298',\n code: 'FO',\n flag: '🇫🇴',\n },\n {\n name: {\n en: 'Fiji',\n ru: 'Фиджи',\n pl: 'Fidżi',\n ua: 'Фіджі',\n cz: 'Fidži',\n by: '',\n pt: 'Fiji',\n },\n dial_code: '+679',\n code: 'FJ',\n flag: '🇫🇯',\n },\n {\n name: {\n en: 'Finland',\n ru: 'Финляндия',\n pl: 'Finlandia',\n ua: 'Фінляндія',\n cz: 'Finsko',\n by: '',\n pt: 'Finlândia',\n },\n dial_code: '+358',\n code: 'FI',\n flag: '🇫🇮',\n },\n {\n name: {\n en: 'France',\n ru: 'Франция',\n pl: 'Francja',\n ua: 'Франція',\n cz: 'Francie',\n by: '',\n pt: 'França',\n },\n dial_code: '+33',\n code: 'FR',\n flag: '🇫🇷',\n },\n {\n name: {\n en: 'French Guiana',\n ru: 'Французская Гвиана',\n pl: 'Gujana Francuska',\n ua: 'Французька Гвіана',\n cz: 'Francouzská Guyana',\n by: '',\n pt: 'Guiana Francesa',\n },\n dial_code: '+594',\n code: 'GF',\n flag: '🇬🇫',\n },\n {\n name: {\n en: 'French Polynesia',\n ru: 'Французская Полинезия',\n pl: 'Polinezja Francuska',\n ua: 'Французька Полінезія',\n cz: 'Francouzská Polynésie',\n by: '',\n pt: 'Polinésia Francesa',\n },\n dial_code: '+689',\n code: 'PF',\n flag: '🇵🇫',\n },\n {\n name: {\n en: 'Gabon',\n ru: 'Габон',\n pl: 'Gabon',\n ua: 'Габон',\n cz: 'Gabon',\n by: '',\n pt: 'Gabão',\n },\n dial_code: '+241',\n code: 'GA',\n flag: '🇬🇦',\n },\n {\n name: {\n en: 'Gambia',\n ru: 'Гамбия',\n pl: 'Gambia',\n ua: 'Гамбія',\n cz: 'Gambie',\n by: '',\n pt: 'Gâmbia',\n },\n dial_code: '+220',\n code: 'GM',\n flag: '🇬🇲',\n },\n {\n name: {\n en: 'Georgia',\n ru: 'Грузия',\n pl: 'Gruzja',\n ua: 'Грузія',\n cz: 'Gruzie',\n by: '',\n pt: 'Geórgia',\n },\n dial_code: '+995',\n code: 'GE',\n flag: '🇬🇪',\n },\n {\n name: {\n en: 'Germany',\n ru: 'Германия',\n pl: 'Niemcy',\n ua: 'Німеччина',\n cz: 'Německo',\n by: '',\n pt: 'Alemanha',\n },\n dial_code: '+49',\n code: 'DE',\n flag: '🇩🇪',\n },\n {\n name: {\n en: 'Ghana',\n ru: 'Гана',\n pl: 'Ghana',\n ua: 'Гана',\n cz: 'Ghana',\n by: '',\n pt: 'Gana',\n },\n dial_code: '+233',\n code: 'GH',\n flag: '🇬🇭',\n },\n {\n name: {\n en: 'Gibraltar',\n ru: 'Гибралтар',\n pl: 'Gibraltar',\n ua: 'Гібралтар',\n cz: 'Gibraltar',\n by: '',\n pt: 'Gibraltar',\n },\n dial_code: '+350',\n code: 'GI',\n flag: '🇬🇮',\n },\n {\n name: {\n en: 'Greece',\n ru: 'Греция',\n pl: 'Grecja',\n ua: 'Греція',\n cz: 'Řecko',\n by: '',\n pt: 'Grécia',\n },\n dial_code: '+30',\n code: 'GR',\n flag: '🇬🇷',\n },\n {\n name: {\n en: 'Greenland',\n ru: 'Гренландия',\n pl: 'Grenlandia',\n ua: 'Гренландія',\n cz: 'Grenlandia',\n by: '',\n pt: 'Gronelândia',\n },\n dial_code: '+299',\n code: 'GL',\n flag: '🇬🇱',\n },\n {\n name: {\n en: 'Grenada',\n ru: 'Гренада',\n pl: 'Grenada',\n ua: 'Гренада',\n cz: 'Grenada',\n by: '',\n pt: 'Granada',\n },\n dial_code: '+1473',\n code: 'GD',\n flag: '🇬🇩',\n },\n {\n name: {\n en: 'Guadeloupe',\n ru: 'Гваделупа',\n pl: 'Gwadelupa',\n ua: 'Гваделупа',\n cz: 'Guadeloupe',\n by: '',\n pt: 'Guadalupe',\n },\n dial_code: '+590',\n code: 'GP',\n flag: '🇬🇵',\n },\n {\n name: {\n en: 'Guam',\n ru: 'Гуам',\n pl: 'Guam',\n ua: 'Гуам',\n cz: 'Guam',\n by: '',\n pt: 'Guame',\n },\n dial_code: '+1671',\n code: 'GU',\n flag: '🇬🇺',\n },\n {\n name: {\n en: 'Guatemala',\n ru: 'Гватемала',\n pl: 'Gwatemala',\n ua: 'Гватемала',\n cz: 'Guatemala',\n by: '',\n pt: 'Guatemala',\n },\n dial_code: '+502',\n code: 'GT',\n flag: '🇬🇹',\n },\n {\n name: {\n en: 'Guernsey',\n ru: 'Гернси',\n pl: 'Guernsey',\n ua: 'Гернсі',\n cz: 'Guernsey',\n by: '',\n pt: 'Guernsey',\n },\n dial_code: '+44',\n code: 'GG',\n flag: '🇬🇬',\n },\n {\n name: {\n en: 'Guinea',\n ru: 'Гвинея',\n pl: 'Gwinea',\n ua: 'Гвінея',\n cz: 'Guinea',\n by: '',\n pt: 'Guiné',\n },\n dial_code: '+224',\n code: 'GN',\n flag: '🇬🇳',\n },\n {\n name: {\n en: 'Guinea-Bissau',\n ru: 'Гвинея-Бисау',\n pl: 'Gwinea Bissau',\n ua: 'Гвінея-Бісау',\n cz: 'Guinea-Bissau',\n by: '',\n pt: 'Guiné-Bissau',\n },\n dial_code: '+245',\n code: 'GW',\n flag: '🇬🇼',\n },\n {\n name: {\n en: 'Guyana',\n ru: 'Гайана',\n pl: 'Gujana',\n ua: 'Гайана',\n cz: 'Guyana',\n by: '',\n pt: 'Guiana',\n },\n dial_code: '+595',\n code: 'GY',\n flag: '🇬🇾',\n },\n {\n name: {\n en: 'Haiti',\n ru: 'Гаити',\n pl: 'Haiti',\n ua: 'Гаїті',\n cz: 'Haiti',\n by: '',\n pt: 'Haiti',\n },\n dial_code: '+509',\n code: 'HT',\n flag: '🇭🇹',\n },\n {\n name: {\n en: 'Holy See (Vatican City State)',\n ru: 'Святой Престол (Vatican City State)',\n pl: 'Stolica Apostolska (Państwo Watykańskie)',\n ua: 'Святий Престол (Ватикан)',\n cz: 'Svatý stolec (Vatikánský městský stát)',\n by: '',\n pt: 'Vaticano',\n },\n dial_code: '+379',\n code: 'VA',\n flag: '🇻🇦',\n },\n {\n name: {\n en: 'Honduras',\n ru: 'Гондурас',\n pl: 'Honduras',\n ua: 'Гондурас',\n cz: 'Honduras',\n by: '',\n pt: 'Honduras',\n },\n dial_code: '+504',\n code: 'HN',\n flag: '🇭🇳',\n },\n {\n name: {\n en: 'Hong Kong',\n ru: 'Гонконг',\n pl: 'Hongkong',\n ua: 'Гонконг',\n cz: 'Hongkong',\n by: '',\n pt: 'Hong Kong',\n },\n dial_code: '+852',\n code: 'HK',\n flag: '🇭🇰',\n },\n {\n name: {\n en: 'Hungary',\n ru: 'Венгрия',\n pl: 'Węgry',\n ua: 'Угорщина',\n cz: 'Maďarsko',\n by: '',\n pt: 'Hungria',\n },\n dial_code: '+36',\n code: 'HU',\n flag: '🇭🇺',\n },\n {\n name: {\n en: 'Iceland',\n ru: 'Исландия',\n pl: 'Islandia',\n ua: 'Ісландія',\n cz: 'Island',\n by: '',\n pt: 'Islândia',\n },\n dial_code: '+354',\n code: 'IS',\n flag: '🇮🇸',\n },\n {\n name: {\n en: 'India',\n ru: 'Индия',\n pl: 'Indie',\n ua: 'Індія',\n cz: 'Indie',\n by: '',\n pt: 'Índia',\n },\n dial_code: '+91',\n code: 'IN',\n flag: '🇮🇳',\n },\n {\n name: {\n en: 'Indonesia',\n ru: 'Индонезия',\n pl: 'Indonezja',\n ua: 'Індонезія',\n cz: 'Indonésie',\n by: '',\n pt: 'Indonésia',\n },\n dial_code: '+62',\n code: 'ID',\n flag: '🇮🇩',\n },\n {\n name: {\n en: 'Iran, Islamic Republic of',\n ru: 'Иран, Исламская Республика',\n pl: 'Iran, Republika Islamska',\n ua: 'Іран, Ісламська Республіка',\n cz: 'Írán, Islámská Republika',\n by: '',\n pt: 'Irão',\n },\n dial_code: '+98',\n code: 'IR',\n flag: '🇮🇷',\n },\n {\n name: {\n en: 'Iraq',\n ru: 'Ирак',\n pl: 'Irak',\n ua: 'Ірак',\n cz: 'Irák',\n by: '',\n pt: 'Iraque',\n },\n dial_code: '+964',\n code: 'IQ',\n flag: '🇮🇶',\n },\n {\n name: {\n en: 'Ireland',\n ru: 'Ирландия',\n pl: 'Irlandia',\n ua: 'Ірландія',\n cz: 'Irsko',\n by: '',\n pt: 'Irlanda',\n },\n dial_code: '+353',\n code: 'IE',\n flag: '🇮🇪',\n },\n {\n name: {\n en: 'Isle of Man',\n ru: 'Остров Мэн',\n pl: 'Wyspa Man',\n ua: 'Острів Мен',\n cz: 'Isle of Man',\n by: '',\n pt: 'Ilha de Man',\n },\n dial_code: '+44',\n code: 'IM',\n flag: '🇮🇲',\n },\n {\n name: {\n en: 'Israel',\n ru: 'Израиль',\n pl: 'Izrael',\n ua: 'Ізраїль',\n cz: 'Izrael',\n by: '',\n pt: 'Israel',\n },\n dial_code: '+972',\n code: 'IL',\n flag: '🇮🇱',\n },\n {\n name: {\n en: 'Italy',\n ru: 'Италия',\n pl: 'Włochy',\n ua: 'Італія',\n cz: 'Itálie',\n by: '',\n pt: 'Itália',\n },\n dial_code: '+39',\n code: 'IT',\n flag: '🇮🇹',\n },\n {\n name: {\n en: 'Jamaica',\n ru: 'Ямайка',\n pl: 'Jamajka',\n ua: 'Ямайка',\n cz: 'Jamaica',\n by: '',\n pt: 'Jamaica',\n },\n dial_code: '+1876',\n code: 'JM',\n flag: '🇯🇲',\n },\n {\n name: {\n en: 'Japan',\n ru: 'Япония',\n pl: 'Japonia',\n ua: 'Японія',\n cz: 'Japonsko',\n by: '',\n pt: 'Japão',\n },\n dial_code: '+81',\n code: 'JP',\n flag: '🇯🇵',\n },\n {\n name: {\n en: 'Jersey',\n ru: 'Джерси',\n pl: 'Jersey',\n ua: 'Джерсі',\n cz: 'Trikot',\n by: '',\n pt: 'Jersey',\n },\n dial_code: '+44',\n code: 'JE',\n flag: '🇯🇪',\n },\n {\n name: {\n en: 'Jordan',\n ru: 'Иордания',\n pl: 'Jordania',\n ua: 'Йорданія',\n cz: 'Jordán',\n by: '',\n pt: 'Jordânia',\n },\n dial_code: '+962',\n code: 'JO',\n flag: '🇯🇴',\n },\n {\n name: {\n en: 'Kazakhstan',\n ru: 'Казахстан',\n pl: 'Kazachstan',\n ua: 'Казахстан',\n cz: 'Kazachstán',\n by: '',\n pt: 'Cazaquistão',\n },\n dial_code: '+77',\n code: 'KZ',\n flag: '🇰🇿',\n },\n {\n name: {\n en: 'Kenya',\n ru: 'Кения',\n pl: 'Kenia',\n ua: 'Кенія',\n cz: 'Keňa',\n by: '',\n pt: 'Quénia',\n },\n dial_code: '+254',\n code: 'KE',\n flag: '🇰🇪',\n },\n {\n name: {\n en: 'Kiribati',\n ru: 'Кирибати',\n pl: 'Kiribati',\n ua: 'Kiribati',\n cz: 'Kiribati',\n by: '',\n pt: 'Quiribáti',\n },\n dial_code: '+686',\n code: 'KI',\n flag: '🇰🇮',\n },\n {\n name: {\n en: \"Korea, Democratic People's Republic of\",\n ru: 'Корея, Народно-Демократическая Республика',\n pl: 'Korea, Republika Ludowo-Demokratyczna',\n ua: 'Корея, Народно-Демократична Республіка',\n cz: 'Korea, Demokratická lidová republika',\n by: '',\n pt: 'Coreia do Norte',\n },\n dial_code: '+850',\n code: 'KP',\n flag: '🇰🇵',\n },\n {\n name: {\n en: 'Korea, Republic of',\n ru: 'Республика Корея',\n pl: 'Republika Korei',\n ua: 'Корея, Республіка',\n cz: 'Korea, republika',\n by: '',\n pt: 'Coreia do Sul',\n },\n dial_code: '+82',\n code: 'KR',\n flag: '🇰🇷',\n },\n {\n name: {\n en: 'Kuwait',\n ru: 'Кувейт',\n pl: 'Kuwejt',\n ua: 'Кувейт',\n cz: 'Kuvajt',\n by: '',\n pt: 'Kuwait',\n },\n dial_code: '+965',\n code: 'KW',\n flag: '🇰🇼',\n },\n {\n name: {\n en: 'Kyrgyzstan',\n ru: 'Kyrgyzstan',\n pl: 'Kirgistan',\n ua: 'Киргизстан',\n cz: 'Kyrgyzstán',\n by: '',\n pt: 'Quirguizistão',\n },\n dial_code: '+996',\n code: 'KG',\n flag: '🇰🇬',\n },\n {\n name: {\n en: \"Lao People's Democratic Republic\",\n ru: 'Лаосская Народно-Демократическая Республика',\n pl: 'Laotańska Republika Ludowo-Demokratyczna',\n ua: 'Лаоська Народно-Демократична Республіка',\n cz: 'Laoská lidově demokratická republika',\n by: '',\n pt: 'Laos',\n },\n dial_code: '+856',\n code: 'LA',\n flag: '🇱🇦',\n },\n {\n name: {\n en: 'Latvia',\n ru: 'Латвия',\n pl: 'Łotwa',\n ua: 'Латвія',\n cz: 'Lotyšsko',\n by: '',\n pt: 'Letónia',\n },\n dial_code: '+371',\n code: 'LV',\n flag: '🇱🇻',\n },\n {\n name: {\n en: 'Lebanon',\n ru: 'Ливан',\n pl: 'Liban',\n ua: 'Ліван',\n cz: 'Libanon',\n by: '',\n pt: 'Líbano',\n },\n dial_code: '+961',\n code: 'LB',\n flag: '🇱🇧',\n },\n {\n name: {\n en: 'Lesotho',\n ru: 'Лесото',\n pl: 'Lesoto',\n ua: 'Лесото',\n cz: 'Lesotho',\n by: '',\n pt: 'Lesoto',\n },\n dial_code: '+266',\n code: 'LS',\n flag: '🇱🇸',\n },\n {\n name: {\n en: 'Liberia',\n ru: 'Либерия',\n pl: 'Liberia',\n ua: 'Ліберія',\n cz: 'Libérie',\n by: '',\n pt: 'Libéria',\n },\n dial_code: '+231',\n code: 'LR',\n flag: '🇱🇷',\n },\n {\n name: {\n en: 'Libyan Arab Jamahiriya',\n ru: 'Ливийская Арабская Джамахирия',\n pl: 'Libijska Arabska Dżamahirija',\n ua: 'Лівійська Арабська Джамахірія',\n cz: 'Libyjský Arab Jamahiriya',\n by: '',\n pt: 'Líbia',\n },\n dial_code: '+218',\n code: 'LY',\n flag: '🇱🇾',\n },\n {\n name: {\n en: 'Liechtenstein',\n ru: 'Лихтенштейн',\n pl: 'Liechtenstein',\n ua: 'Ліхтенштейн',\n cz: 'Lichtenštejnsko',\n by: '',\n pt: 'Listenstaine',\n },\n dial_code: '+423',\n code: 'LI',\n flag: '🇱🇮',\n },\n {\n name: {\n en: 'Lithuania',\n ru: 'Литва',\n pl: 'Litwa',\n ua: 'Литва',\n cz: 'Litva',\n by: '',\n pt: 'Lituânia',\n },\n dial_code: '+370',\n code: 'LT',\n flag: '🇱🇹',\n },\n {\n name: {\n en: 'Luxembourg',\n ru: 'Люксембург',\n pl: 'Luksemburg',\n ua: 'Люксембург',\n cz: 'Lucembursko',\n by: '',\n pt: 'Luxemburgo',\n },\n dial_code: '+352',\n code: 'LU',\n flag: '🇱🇺',\n },\n {\n name: {\n en: 'Macao',\n ru: 'Макао',\n pl: 'Makao',\n ua: 'Макао',\n cz: 'Macao',\n by: '',\n pt: 'Macau',\n },\n dial_code: '+853',\n code: 'MO',\n flag: '🇲🇴',\n },\n {\n name: {\n en: 'Macedonia, The Former Yugoslav Republic of',\n ru: 'Македония, Бывшая Югославская Республика',\n pl: 'Macedonia, Była Jugosłowiańska Republika',\n ua: 'Македонія, колишня югославська республіка',\n cz: 'Makedonie, Bývalá jugoslávská republika',\n by: '',\n pt: 'Macedónia',\n },\n dial_code: '+389',\n code: 'MK',\n flag: '🇲🇰',\n },\n {\n name: {\n en: 'Madagascar',\n ru: 'Мадагаскар',\n pl: 'Madagaskar',\n ua: 'Мадагаскар',\n cz: 'Madagaskar',\n by: '',\n pt: 'Madagáscar',\n },\n dial_code: '+261',\n code: 'MG',\n flag: '🇲🇬',\n },\n {\n name: {\n en: 'Malawi',\n ru: 'Малави',\n pl: 'Malawi',\n ua: 'Малаві',\n cz: 'Malawi',\n by: '',\n pt: 'Malávi',\n },\n dial_code: '+265',\n code: 'MW',\n flag: '🇲🇼',\n },\n {\n name: {\n en: 'Malaysia',\n ru: 'Малайзия',\n pl: 'Malezja',\n ua: 'Малайзія',\n cz: 'Malajsie',\n by: '',\n pt: 'Malásia',\n },\n dial_code: '+60',\n code: 'MY',\n flag: '🇲🇾',\n },\n {\n name: {\n en: 'Maldives',\n ru: 'Мальдивы',\n pl: 'Malediwy',\n ua: 'Мальдіви',\n cz: 'Maledivy',\n by: '',\n pt: 'Maldivas',\n },\n dial_code: '+960',\n code: 'MV',\n flag: '🇲🇻',\n },\n {\n name: {\n en: 'Mali',\n ru: 'Мали',\n pl: 'Mali',\n ua: 'Малі',\n cz: 'Mali',\n by: '',\n pt: 'Mali',\n },\n dial_code: '+223',\n code: 'ML',\n flag: '🇲🇱',\n },\n {\n name: {\n en: 'Malta',\n ru: 'Мальта',\n pl: 'Malta',\n ua: 'Мальта',\n cz: 'Malta',\n by: '',\n pt: 'Malta',\n },\n dial_code: '+356',\n code: 'MT',\n flag: '🇲🇹',\n },\n {\n name: {\n en: 'Marshall Islands',\n ru: 'Маршалловы острова',\n pl: 'Wyspy Marshalla',\n ua: 'Маршаллові острови',\n cz: 'Marshallovy ostrovy',\n by: '',\n pt: 'Ilhas Marshall',\n },\n dial_code: '+692',\n code: 'MH',\n flag: '🇲🇭',\n },\n {\n name: {\n en: 'Martinique',\n ru: 'Мартиника',\n pl: 'Martynika',\n ua: 'Мартініка',\n cz: 'Martinik',\n by: '',\n pt: 'Martinica',\n },\n dial_code: '+596',\n code: 'MQ',\n flag: '🇲🇶',\n },\n {\n name: {\n en: 'Mauritania',\n ru: 'Мавритания',\n pl: 'Mauretania',\n ua: 'Мавританія',\n cz: 'Mauretánie',\n by: '',\n pt: 'Mauritânia',\n },\n dial_code: '+222',\n code: 'MR',\n flag: '🇲🇷',\n },\n {\n name: {\n en: 'Mauritius',\n ru: 'Маврикий',\n pl: 'Mauritius',\n ua: 'Маврикій',\n cz: 'Mauricius',\n by: '',\n pt: 'Maurícia',\n },\n dial_code: '+230',\n code: 'MU',\n flag: '🇲🇺',\n },\n {\n name: {\n en: 'Mayotte',\n ru: 'Майотта',\n pl: 'Majotta',\n ua: 'Майотта',\n cz: 'Mayotte',\n by: '',\n pt: 'Mayotte',\n },\n dial_code: '+262',\n code: 'YT',\n flag: '🇾🇹',\n },\n {\n name: {\n en: 'Mexico',\n ru: 'Мексика',\n pl: 'Meksyk',\n ua: 'Мексика',\n cz: 'Mexiko',\n by: '',\n pt: 'México',\n },\n dial_code: '+52',\n code: 'MX',\n flag: '🇲🇽',\n },\n {\n name: {\n en: 'Micronesia, Federated States of',\n ru: 'Микронезия, Федеративные Штаты',\n pl: 'Mikronezja, Sfederowane Stany',\n ua: 'Мікронезія, Федеративні Штати',\n cz: 'Mikronésie, federativní státy',\n by: '',\n pt: 'Micronésia',\n },\n dial_code: '+691',\n code: 'FM',\n flag: '🇫🇲',\n },\n {\n name: {\n en: 'Moldova, Republic of',\n ru: 'Молдова, Республика',\n pl: 'Mołdawia, Republika',\n ua: 'Молдова, республіка',\n cz: 'Moldavsko, republika',\n by: '',\n pt: 'Moldávia',\n },\n dial_code: '+373',\n code: 'MD',\n flag: '🇲🇩',\n },\n {\n name: {\n en: 'Monaco',\n ru: 'Монако',\n pl: 'Monako',\n ua: 'Монако',\n cz: 'Monako',\n by: '',\n pt: 'Mónaco',\n },\n dial_code: '+377',\n code: 'MC',\n flag: '🇲🇨',\n },\n {\n name: {\n en: 'Mongolia',\n ru: 'Монголия',\n pl: 'Mongolia',\n ua: 'Монголія',\n cz: 'Mongolsko',\n by: '',\n pt: 'Mongólia',\n },\n dial_code: '+976',\n code: 'MN',\n flag: '🇲🇳',\n },\n {\n name: {\n en: 'Montenegro',\n ru: 'Черногория',\n pl: 'Czarnogóra',\n ua: 'Чорногорія',\n cz: 'Černá Hora',\n by: '',\n pt: 'Montenegro',\n },\n dial_code: '+382',\n code: 'ME',\n flag: '🇲🇪',\n },\n {\n name: {\n en: 'Montserrat',\n ru: 'Монтсеррат',\n pl: 'Montserrat',\n ua: 'Монтсеррат',\n cz: 'Montserrat',\n by: '',\n pt: 'Monserrate',\n },\n dial_code: '+1664',\n code: 'MS',\n flag: '🇲🇸',\n },\n {\n name: {\n en: 'Morocco',\n ru: 'Марокко',\n pl: 'Maroko',\n ua: 'Марокко',\n cz: 'Maroko',\n by: '',\n pt: 'Marrocos',\n },\n dial_code: '+212',\n code: 'MA',\n flag: '🇲🇦',\n },\n {\n name: {\n en: 'Mozambique',\n ru: 'Мозамбик',\n pl: 'Mozambik',\n ua: 'Мозамбік',\n cz: 'Mosambik',\n by: '',\n pt: 'Moçambique',\n },\n dial_code: '+258',\n code: 'MZ',\n flag: '🇲🇿',\n },\n {\n name: {\n en: 'Myanmar',\n ru: 'Мьянма',\n pl: 'Myanmar',\n ua: \"М'янма\",\n cz: 'Myanmar',\n by: '',\n pt: 'Birmânia',\n },\n dial_code: '+95',\n code: 'MM',\n flag: '🇲🇲',\n },\n {\n name: {\n en: 'Namibia',\n ru: 'Намибия',\n pl: 'Namibia',\n ua: 'Намібія',\n cz: 'Namibie',\n by: '',\n pt: 'Namíbia',\n },\n dial_code: '+264',\n code: 'NA',\n flag: '🇳🇦',\n },\n {\n name: {\n en: 'Nauru',\n ru: 'Науру',\n pl: 'Nauru',\n ua: 'Науру',\n cz: 'Nauru',\n by: '',\n pt: 'Nauru',\n },\n dial_code: '+674',\n code: 'NR',\n flag: '🇳🇷',\n },\n {\n name: {\n en: 'Nepal',\n ru: 'Непал',\n pl: 'Nepal',\n ua: 'Непал',\n cz: 'Nepál',\n by: '',\n pt: 'Nepal',\n },\n dial_code: '+977',\n code: 'NP',\n flag: '🇳🇵',\n },\n {\n name: {\n en: 'Netherlands',\n ru: 'Нидерланды',\n pl: 'Holandia',\n ua: 'Нідерланди',\n cz: 'Holandsko',\n by: '',\n pt: 'Países Baixos',\n },\n dial_code: '+31',\n code: 'NL',\n flag: '🇳🇱',\n },\n {\n name: {\n en: 'Netherlands Antilles',\n ru: 'Нидерландские Антильские острова',\n pl: 'Antyle Holenderskie',\n ua: 'Нідерландські Антильські острови',\n cz: 'Nizozemské Antily',\n by: '',\n pt: 'Antilhas Neerlandesas',\n },\n dial_code: '+599',\n code: 'AN',\n flag: '🇦🇳',\n },\n {\n name: {\n en: 'New Caledonia',\n ru: 'Новая Каледония',\n pl: 'Nowa Kaledonia',\n ua: 'Нова Каледонія',\n cz: 'Nová Kaledonie',\n by: '',\n pt: 'Nova Caledónia',\n },\n dial_code: '+687',\n code: 'NC',\n flag: '🇳🇨',\n },\n {\n name: {\n en: 'New Zealand',\n ru: 'Новая Зеландия',\n pl: 'Nowa Zelandia',\n ua: 'Нова Зеландія',\n cz: 'Nový Zéland',\n by: '',\n pt: 'Nova Zelândia',\n },\n dial_code: '+64',\n code: 'NZ',\n flag: '🇳🇿',\n },\n {\n name: {\n en: 'Nicaragua',\n ru: 'Никарагуа',\n pl: 'Nikaragua',\n ua: 'Нікарагуа',\n cz: 'Nikaragua',\n by: '',\n pt: 'Nicarágua',\n },\n dial_code: '+505',\n code: 'NI',\n flag: '🇳🇮',\n },\n {\n name: {\n en: 'Niger',\n ru: 'Нигер',\n pl: 'Niger',\n ua: 'Нігер',\n cz: 'Niger',\n by: '',\n pt: 'Níger',\n },\n dial_code: '+227',\n code: 'NE',\n flag: '🇳🇪',\n },\n {\n name: {\n en: 'Nigeria',\n ru: 'Нигерия',\n pl: 'Nigeria',\n ua: 'Нігерія',\n cz: 'Nigérie',\n by: '',\n pt: 'Nigéria',\n },\n dial_code: '+234',\n code: 'NG',\n flag: '🇳🇬',\n },\n {\n name: {\n en: 'Niue',\n ru: 'Ниуэ',\n pl: 'Niue',\n ua: 'Ніуе',\n cz: 'Niue',\n by: '',\n pt: 'Niue',\n },\n dial_code: '+683',\n code: 'NU',\n flag: '🇳🇺',\n },\n {\n name: {\n en: 'Norfolk Island',\n ru: 'Остров Норфолк',\n pl: 'Wyspa Norfolk',\n ua: 'Острів Норфолк',\n cz: 'Ostrov Norfolk',\n by: '',\n pt: 'Ilha Norfolk',\n },\n dial_code: '+672',\n code: 'NF',\n flag: '🇳🇫',\n },\n {\n name: {\n en: 'Northern Mariana Islands',\n ru: 'Северные Марианские острова',\n pl: 'Mariany Północne',\n ua: 'Північні Маріанські острови',\n cz: 'Severní Mariany',\n by: '',\n pt: 'Marianas do Norte',\n },\n dial_code: '+1670',\n code: 'MP',\n flag: '🇲🇵',\n },\n {\n name: {\n en: 'Norway',\n ru: 'Норвегия',\n pl: 'Norwegia',\n ua: 'Норвегія',\n cz: 'Norsko',\n by: '',\n pt: 'Noruega',\n },\n dial_code: '+47',\n code: 'NO',\n flag: '🇳🇴',\n },\n {\n name: {\n en: 'Oman',\n ru: 'Оман',\n pl: 'Oman',\n ua: 'Оман',\n cz: 'Omán',\n by: '',\n pt: 'Omã',\n },\n dial_code: '+968',\n code: 'OM',\n flag: '🇴🇲',\n },\n {\n name: {\n en: 'Pakistan',\n ru: 'Пакистан',\n pl: 'Pakistan',\n ua: 'Пакистан',\n cz: 'Pákistán',\n by: '',\n pt: 'Paquistão',\n },\n dial_code: '+92',\n code: 'PK',\n flag: '🇵🇰',\n },\n {\n name: {\n en: 'Palau',\n ru: 'Палау',\n pl: 'Palau',\n ua: 'Палау',\n cz: 'Palau',\n by: '',\n pt: 'Palau',\n },\n dial_code: '+680',\n code: 'PW',\n flag: '🇵🇼',\n },\n {\n name: {\n en: 'Palestinian Territory, Occupied',\n ru: 'Палестинская Территория, Оккупированная',\n pl: 'Teretorium Paleństynskie, Okupowane',\n ua: 'Палестинська територія, окупована',\n cz: 'Palestinské území, obsazené',\n by: '',\n pt: 'Território Palestino, Ocupado',\n },\n dial_code: '+970',\n code: 'PS',\n flag: '🇵🇸',\n },\n {\n name: {\n en: 'Panama',\n ru: 'Панама',\n pl: 'Panama',\n ua: 'Панама',\n cz: 'Panama',\n by: '',\n pt: 'Panamá',\n },\n dial_code: '+507',\n code: 'PA',\n flag: '🇵🇦',\n },\n {\n name: {\n en: 'Papua New Guinea',\n ru: 'Папуа - Новая Гвинея',\n pl: 'Papua Nowa Gwinea',\n ua: 'Папуа-Нова Гвінея',\n cz: 'Papua-Nová Guinea',\n by: '',\n pt: 'Papua-Nova Guiné',\n },\n dial_code: '+675',\n code: 'PG',\n flag: '🇵🇬',\n },\n {\n name: {\n en: 'Paraguay',\n ru: 'Парагвай',\n pl: 'Paragwaj',\n ua: 'Парагвай',\n cz: 'Paraguay',\n by: '',\n pt: 'Paraguai',\n },\n dial_code: '+595',\n code: 'PY',\n flag: '🇵🇾',\n },\n {\n name: {\n en: 'Peru',\n ru: 'Перу',\n pl: 'Peru',\n ua: 'Перу',\n cz: 'Peru',\n by: '',\n pt: 'Peru',\n },\n dial_code: '+51',\n code: 'PE',\n flag: '🇵🇪',\n },\n {\n name: {\n en: 'Philippines',\n ru: 'Филиппины',\n pl: 'Filipiny',\n ua: 'Філіппіни',\n cz: 'Filipíny',\n by: '',\n pt: 'Filipinas',\n },\n dial_code: '+63',\n code: 'PH',\n flag: '🇵🇭',\n },\n {\n name: {\n en: 'Pitcairn',\n ru: 'Питкэрн',\n pl: 'Pitcairn',\n ua: 'Піткерн',\n cz: 'Pitcairn',\n by: '',\n pt: 'Pitcairn',\n },\n dial_code: '+872',\n code: 'PN',\n flag: '🇵🇳',\n },\n {\n name: {\n en: 'Poland',\n ru: 'Польша',\n pl: 'Polska',\n ua: 'Польща',\n cz: 'Polsko',\n by: '',\n pt: 'Polónia',\n },\n dial_code: '+48',\n code: 'PL',\n flag: '🇵🇱',\n },\n {\n name: {\n en: 'Portugal',\n ru: 'Португалия',\n pl: 'Portugalia',\n ua: 'Португалія',\n cz: 'Portugalsko',\n by: '',\n pt: 'Portugal',\n },\n dial_code: '+351',\n code: 'PT',\n flag: '🇵🇹',\n },\n {\n name: {\n en: 'Puerto Rico',\n ru: 'Пуэрто-Рико',\n pl: 'Portoryko',\n ua: 'Пуерто Ріко',\n cz: 'Portoriko',\n by: '',\n pt: 'Porto Rico',\n },\n dial_code: '+1939',\n code: 'PR',\n flag: '🇵🇷',\n },\n {\n name: {\n en: 'Qatar',\n ru: 'Катар',\n pl: 'Katar',\n ua: 'Катар',\n cz: 'Katar',\n by: '',\n pt: 'Catar',\n },\n dial_code: '+974',\n code: 'QA',\n flag: '🇶🇦',\n },\n {\n name: {\n en: 'Romania',\n ru: 'Румыния',\n pl: 'Rumunia',\n ua: 'Румунія',\n cz: 'Rumunsko',\n by: '',\n pt: 'Roménia',\n },\n dial_code: '+40',\n code: 'RO',\n flag: '🇷🇴',\n },\n {\n name: {\n en: 'Russia',\n ru: 'Россия',\n pl: 'Rosja',\n ua: 'Росія',\n cz: 'Rusko',\n by: '',\n pt: 'Rússia',\n },\n dial_code: '+7',\n code: 'RU',\n flag: '🇷🇺',\n },\n {\n name: {\n en: 'Rwanda',\n ru: 'Руанда',\n pl: 'Rwanda',\n ua: 'Руанда',\n cz: 'Rwanda',\n by: '',\n pt: 'Ruanda',\n },\n dial_code: '+250',\n code: 'RW',\n flag: '🇷🇼',\n },\n {\n name: {\n en: 'Réunion',\n ru: 'Реюньон',\n pl: 'Réunion',\n ua: 'Реюньйон',\n cz: 'Réunion',\n by: '',\n pt: 'Reunião',\n },\n dial_code: '+262',\n code: 'RE',\n flag: '🇷🇪',\n },\n {\n name: {\n en: 'Saint Barthélemy',\n ru: 'Святой Варфоломей',\n pl: 'Saint Barthelemy',\n ua: 'Сен-Бартелемі',\n cz: 'Svatý Bartoloměj',\n by: '',\n pt: 'São Bartolomeu',\n },\n dial_code: '+590',\n code: 'BL',\n flag: '🇧🇱',\n },\n {\n name: {\n en: 'Saint Helena, Ascension and Tristan Da Cunha',\n ru: 'Святой Елены, Вознесения и Тристан-да-Кунья',\n pl: 'Święta Helena, Wniebowstąpienie i Tristan Da Cunha',\n ua: 'Свята Олена, Вознесіння і Трістан Да Кунья',\n cz: 'Svatá Helena, Nanebevstoupení a Tristan Da Cunha',\n by: '',\n pt: 'Santa Helena',\n },\n dial_code: '+290',\n code: 'SH',\n flag: '🇸🇭',\n },\n {\n name: {\n en: 'Saint Kitts and Nevis',\n ru: 'Сент-Китс и Невис',\n pl: 'Saint Kitts i Nevis',\n ua: 'Сент-Кітс і Невіс',\n cz: 'Svatý Kryštof a Nevis',\n by: '',\n pt: 'São Cristóvão e Neves',\n },\n dial_code: '+1869',\n code: 'KN',\n flag: '🇰🇳',\n },\n {\n name: {\n en: 'Saint Lucia',\n ru: 'Санкт-Люсия',\n pl: 'święta Lucia',\n ua: 'Сент-Люсія',\n cz: 'Svatá Lucie',\n by: '',\n pt: 'Santa Lúcia',\n },\n dial_code: '+1758',\n code: 'LC',\n flag: '🇱🇨',\n },\n {\n name: {\n en: 'Saint Martin',\n ru: 'Сен-Мартен',\n pl: 'święty Marcin',\n ua: 'Святий Мартін',\n cz: 'Svatý Martin',\n by: '',\n pt: 'São Martinho',\n },\n dial_code: '+590',\n code: 'MF',\n flag: '🇲🇫',\n },\n {\n name: {\n en: 'Saint Pierre and Miquelon',\n ru: 'Сен-Пьер и Микелон',\n pl: 'Saint-Pierre i Miquelon',\n ua: \"Сен-П'єр і Мікелон\",\n cz: 'Svatý Pierre a Miquelon',\n by: '',\n pt: 'São Pedro e Miquelon',\n },\n dial_code: '+508',\n code: 'PM',\n flag: '🇵🇲',\n },\n {\n name: {\n en: 'Saint Vincent and the Grenadines',\n ru: 'Святой Винсент и Гренадины',\n pl: 'Saint Vincent i Grenadyny',\n ua: 'Сент-Вінсент і Гренадини',\n cz: 'Svatý Vincenc a Grenadiny',\n by: '',\n pt: 'São Vicente e Granadinas',\n },\n dial_code: '+1784',\n code: 'VC',\n flag: '🇻🇨',\n },\n {\n name: {\n en: 'Samoa',\n ru: 'Самоа',\n pl: 'Samoa',\n ua: 'Самоа',\n cz: 'Samoa',\n by: '',\n pt: 'Samoa',\n },\n dial_code: '+685',\n code: 'WS',\n flag: '🇼🇸',\n },\n {\n name: {\n en: 'San Marino',\n ru: 'Сан-Марино',\n pl: 'San Marino',\n ua: 'Сан-Марино',\n cz: 'San Marino',\n by: '',\n pt: 'São Marinho',\n },\n dial_code: '+378',\n code: 'SM',\n flag: '🇸🇲',\n },\n {\n name: {\n en: 'Sao Tome and Principe',\n ru: 'Сан-Томе и Принсипи',\n pl: 'Wyspy Świętego Tomasza i Książęca',\n ua: 'Сан-Томе і Принсіпі',\n cz: 'Svatý Tomáš a Princův ostrov',\n by: '',\n pt: 'São Tomé e Príncipe',\n },\n dial_code: '+239',\n code: 'ST',\n flag: '🇸🇹',\n },\n {\n name: {\n en: 'Saudi Arabia',\n ru: 'Саудовская Аравия',\n pl: 'Arabia Saudyjska',\n ua: 'Саудівська Аравія',\n cz: 'Saudská arábie',\n by: '',\n pt: 'Arábia Saudita',\n },\n dial_code: '+966',\n code: 'SA',\n flag: '🇸🇦',\n },\n {\n name: {\n en: 'Senegal',\n ru: 'Сенегал',\n pl: 'Senegal',\n ua: 'Сенегал',\n cz: 'Senegal',\n by: '',\n pt: 'Senegal',\n },\n dial_code: '+221',\n code: 'SN',\n flag: '🇸🇳',\n },\n {\n name: {\n en: 'Serbia',\n ru: 'Сербия',\n pl: 'Serbia',\n ua: 'Сербія',\n cz: 'Srbsko',\n by: '',\n pt: 'Sérvia',\n },\n dial_code: '+381',\n code: 'RS',\n flag: '🇷🇸',\n },\n {\n name: {\n en: 'Seychelles',\n ru: 'Сейшельские острова',\n pl: 'Seszele',\n ua: 'Сейшельські острови',\n cz: 'Seychely',\n by: '',\n pt: 'Seicheles',\n },\n dial_code: '+248',\n code: 'SC',\n flag: '🇸🇨',\n },\n {\n name: {\n en: 'Sierra Leone',\n ru: 'Сьерра-Леоне',\n pl: 'Sierra Leone',\n ua: 'Сьєрра-Леоне',\n cz: 'Sierra Leone',\n by: '',\n pt: 'Serra Leoa',\n },\n dial_code: '+232',\n code: 'SL',\n flag: '🇸🇱',\n },\n {\n name: {\n en: 'Singapore',\n ru: 'Сингапур',\n pl: 'Singapur',\n ua: 'Сінгапур',\n cz: 'Singapur',\n by: '',\n pt: 'Singapura',\n },\n dial_code: '+65',\n code: 'SG',\n flag: '🇸🇬',\n },\n {\n name: {\n en: 'Slovakia',\n ru: 'Словакия',\n pl: 'Słowacja',\n ua: 'Словаччина',\n cz: 'Slovensko',\n by: '',\n pt: 'Eslováquia',\n },\n dial_code: '+421',\n code: 'SK',\n flag: '🇸🇰',\n },\n {\n name: {\n en: 'Slovenia',\n ru: 'Словения',\n pl: 'Słowenia',\n ua: 'Словенія',\n cz: 'Slovinsko',\n by: '',\n pt: 'Eslovénia',\n },\n dial_code: '+386',\n code: 'SI',\n flag: '🇸🇮',\n },\n {\n name: {\n en: 'Solomon Islands',\n ru: 'Соломоновы острова',\n pl: 'Wyspy Salomona',\n ua: 'Соломонові острови',\n cz: 'Solomonovy ostrovy',\n by: '',\n pt: 'Ilhas Salomão',\n },\n dial_code: '+677',\n code: 'SB',\n flag: '🇸🇧',\n },\n {\n name: {\n en: 'Somalia',\n ru: 'Сомали',\n pl: 'Somali',\n ua: 'Сомалі',\n cz: 'Somálsko',\n by: '',\n pt: 'Somália',\n },\n dial_code: '+252',\n code: 'SO',\n flag: '🇸🇴',\n },\n {\n name: {\n en: 'South Africa',\n ru: 'Южная Африка',\n pl: 'Afryka Południowa',\n ua: 'Південна Африка',\n cz: 'Jižní Afrika',\n by: '',\n pt: 'África do Sul',\n },\n dial_code: '+27',\n code: 'ZA',\n flag: '🇿🇦',\n },\n {\n name: {\n en: 'South Georgia and the South Sandwich Islands',\n ru: 'Южная Георгия и Южные Сандвичевы острова',\n pl: 'Georgia Południowa i Sandwich Południowy',\n ua: 'Південна Джорджія та Південні Сандвічеві острови',\n cz: 'Jižní Georgie a Jižní Sandwichovy ostrovy',\n by: '',\n pt: 'Geórgia do Sul e Sandwich do Sul',\n },\n dial_code: '+500',\n code: 'GS',\n flag: '🇬🇸',\n },\n {\n name: {\n en: 'Spain',\n ru: 'Испания',\n pl: 'Hiszpania',\n ua: 'Іспанія',\n cz: 'Španělsko',\n by: '',\n pt: 'Espanha',\n },\n dial_code: '+34',\n code: 'ES',\n flag: '🇪🇸',\n },\n {\n name: {\n en: 'Sri Lanka',\n ru: 'Шри-Ланка',\n pl: 'Sri Lanka',\n ua: 'Шрі Ланка',\n cz: 'Srí Lanka',\n by: '',\n pt: 'Sri Lanca',\n },\n dial_code: '+94',\n code: 'LK',\n flag: '🇱🇰',\n },\n {\n name: {\n en: 'Sudan',\n ru: 'Судан',\n pl: 'Sudan',\n ua: 'Судан',\n cz: 'Súdán',\n by: '',\n pt: 'Sudão',\n },\n dial_code: '+249',\n code: 'SD',\n flag: '🇸🇩',\n },\n {\n name: {\n en: 'Suriname',\n ru: 'Суринам',\n pl: 'Surinam',\n ua: 'Суринам',\n cz: 'Surinam',\n by: '',\n pt: 'Suriname',\n },\n dial_code: '+597',\n code: 'SR',\n flag: '🇸🇷',\n },\n {\n name: {\n en: 'Svalbard and Jan Mayen',\n ru: 'Шпицберген и Ян Майен',\n pl: 'Svalbard i Jan Mayen',\n ua: 'Шпіцберген та Ян Маєн',\n cz: 'Špicberky a Jan Mayen',\n by: '',\n pt: 'Svalbard e Jan Mayen',\n },\n dial_code: '+47',\n code: 'SJ',\n flag: '🇸🇯',\n },\n {\n name: {\n en: 'Swaziland',\n ru: 'Свазиленд',\n pl: 'Suazi',\n ua: 'Свазіленд',\n cz: 'Svazijsko',\n by: '',\n pt: 'Suazilândia',\n },\n dial_code: '+268',\n code: 'SZ',\n flag: '🇸🇿',\n },\n {\n name: {\n en: 'Sweden',\n ru: 'Швеция',\n pl: 'Szwecja',\n ua: 'Швеція',\n cz: 'Švédsko',\n by: '',\n pt: 'Suécia',\n },\n dial_code: '+46',\n code: 'SE',\n flag: '🇸🇪',\n },\n {\n name: {\n en: 'Switzerland',\n ru: 'Швейцария',\n pl: 'Szwajcaria',\n ua: 'Швейцарія',\n cz: 'Švýcarsko',\n by: '',\n pt: 'Suíça',\n },\n dial_code: '+41',\n code: 'CH',\n flag: '🇨🇭',\n },\n {\n name: {\n en: 'Syrian Arab Republic',\n ru: 'Сирийская Арабская Республика',\n pl: 'Republika Syryjsko-Arabska',\n ua: 'Сирійська Арабська Республіка',\n cz: 'Syrská Arabská republika',\n by: '',\n pt: 'Síria',\n },\n dial_code: '+963',\n code: 'SY',\n flag: '🇸🇾',\n },\n {\n name: {\n en: 'Taiwan, Province of China',\n ru: 'Тайвань, провинция Китая',\n pl: 'Tajwan, prowincja Chin',\n ua: 'Тайвань, провінція Китаю',\n cz: 'Tchaj-wan, provincie Číny',\n by: '',\n pt: 'Taiwan',\n },\n dial_code: '+886',\n code: 'TW',\n flag: '🇹🇼',\n },\n {\n name: {\n en: 'Tajikistan',\n ru: 'Таджикистан',\n pl: 'Tadżykistan',\n ua: 'Таджикистан',\n cz: 'Tádžikistán',\n by: '',\n pt: 'Tajiquistão',\n },\n dial_code: '+992',\n code: 'TJ',\n flag: '🇹🇯',\n },\n {\n name: {\n en: 'Tanzania, United Republic of',\n ru: 'Танзания, Объединенная Республика',\n pl: 'Tanzania, Zjednoczona Republika',\n ua: \"Танзанія, Об'єднана республіка\",\n cz: 'Tanzanie, Velká republika',\n by: '',\n pt: 'Tanzânia',\n },\n dial_code: '+255',\n code: 'TZ',\n flag: '🇹🇿',\n },\n {\n name: {\n en: 'Thailand',\n ru: 'Таиланд',\n pl: 'Tajlandia',\n ua: 'Таїланд',\n cz: 'Thajsko',\n by: '',\n pt: 'Tailândia',\n },\n dial_code: '+66',\n code: 'TH',\n flag: '🇹🇭',\n },\n {\n name: {\n en: 'Timor-Leste',\n ru: 'Восточный Тимор',\n pl: 'Timor Wschodni',\n ua: 'Восточний Тимор',\n cz: 'Východní Timor',\n by: '',\n pt: 'Timor Leste',\n },\n dial_code: '+670',\n code: 'TL',\n flag: '🇹🇱',\n },\n {\n name: {\n en: 'Togo',\n ru: 'Того',\n pl: 'Togo',\n ua: 'Того',\n cz: 'Togo',\n by: '',\n pt: 'Togo',\n },\n dial_code: '+228',\n code: 'TG',\n flag: '🇹🇬',\n },\n {\n name: {\n en: 'Tokelau',\n ru: 'Токелау',\n pl: 'Tokelau',\n ua: 'Токелау',\n cz: 'Tokelau',\n by: '',\n pt: 'Tokelau',\n },\n dial_code: '+690',\n code: 'TK',\n flag: '🇹🇰',\n },\n {\n name: {\n en: 'Tonga',\n ru: 'Тонга',\n pl: 'Tonga',\n ua: 'Тонга',\n cz: 'Tonga',\n by: '',\n pt: 'Tonga',\n },\n dial_code: '+676',\n code: 'TO',\n flag: '🇹🇴',\n },\n {\n name: {\n en: 'Trinidad and Tobago',\n ru: 'Тринидад и Тобаго',\n pl: 'Trynidad i Tobago',\n ua: 'Тринідад і Тобаго',\n cz: 'Trinidad a Tobago',\n by: '',\n pt: 'Trindade e Tobago',\n },\n dial_code: '+1868',\n code: 'TT',\n flag: '🇹🇹',\n },\n {\n name: {\n en: 'Tunisia',\n ru: 'Тунис',\n pl: 'Tunezja',\n ua: 'Туніс',\n cz: 'Tunisko',\n by: '',\n pt: 'Tunísia',\n },\n dial_code: '+216',\n code: 'TN',\n flag: '🇹🇳',\n },\n {\n name: {\n en: 'Turkey',\n ru: 'Турция',\n pl: 'Turcja',\n ua: 'Туреччина',\n cz: 'Turecko',\n by: '',\n pt: 'Turquia',\n },\n dial_code: '+90',\n code: 'TR',\n flag: '🇹🇷',\n },\n {\n name: {\n en: 'Turkmenistan',\n ru: 'Туркменистан',\n pl: 'Turkmenia',\n ua: 'Туркменістан',\n cz: 'Turkmenistán',\n by: '',\n pt: 'Turquemenistão',\n },\n dial_code: '+993',\n code: 'TM',\n flag: '🇹🇲',\n },\n {\n name: {\n en: 'Turks and Caicos Islands',\n ru: 'Острова Теркс и Кайкос',\n pl: 'Wyspy Turks i Caicos',\n ua: 'Острови Теркс і Кайкос',\n cz: 'ostrovy Turks a Cacois',\n by: '',\n pt: 'Ilhas Turcas e Caicos',\n },\n dial_code: '+1649',\n code: 'TC',\n flag: '🇹🇨',\n },\n {\n name: {\n en: 'Tuvalu',\n ru: 'Тувалу',\n pl: 'Tuvalu',\n ua: 'Тувалу',\n cz: 'Tuvalu',\n by: '',\n pt: 'Tuvalu',\n },\n dial_code: '+688',\n code: 'TV',\n flag: '🇹🇻',\n },\n {\n name: {\n en: 'Uganda',\n ru: 'Уганда',\n pl: 'Uganda',\n ua: 'Уганда',\n cz: 'Uganda',\n by: '',\n pt: 'Uganda',\n },\n dial_code: '+256',\n code: 'UG',\n flag: '🇺🇬',\n },\n {\n name: {\n en: 'Ukraine',\n ru: 'Украина',\n pl: 'Ukraina',\n ua: 'Україна',\n cz: 'Ukrajina',\n by: '',\n pt: 'Ucrânia',\n },\n dial_code: '+380',\n code: 'UA',\n flag: '🇺🇦',\n },\n {\n name: {\n en: 'United Arab Emirates',\n ru: 'Объединенные Арабские Эмираты',\n pl: 'Zjednoczone Emiraty Arabskie',\n ua: \"Об'єднані Арабські Емірати\",\n cz: 'Spojené arabské emiráty',\n by: '',\n pt: 'Emiratos Árabes Unidos',\n },\n dial_code: '+971',\n code: 'AE',\n flag: '🇦🇪',\n },\n {\n name: {\n en: 'United Kingdom',\n ru: 'Объединенное Королевство',\n pl: 'Zjednoczone Królestwo',\n ua: \"Об'єднане Королівство\",\n cz: 'Spojené království',\n by: '',\n pt: 'Reino Unido',\n },\n dial_code: '+44',\n code: 'GB',\n flag: '🇬🇧',\n },\n {\n name: {\n en: 'United States',\n ru: 'Соединенные Штаты',\n pl: 'Stany Zjednoczone',\n ua: 'Сполучені Штати',\n cz: 'Spojené státy',\n by: '',\n pt: 'Estados Unidos',\n },\n dial_code: '+1',\n code: 'US',\n flag: '🇺🇸',\n },\n {\n name: {\n en: 'Uruguay',\n ru: 'Уругвай',\n pl: 'Urugwaj',\n ua: 'Уругвай',\n cz: 'Uruguay',\n by: '',\n pt: 'Uruguai',\n },\n dial_code: '+598',\n code: 'UY',\n flag: '🇺🇾',\n },\n {\n name: {\n en: 'Uzbekistan',\n ru: 'Узбекистан',\n pl: 'Uzbekistan',\n ua: 'Узбекистан',\n cz: 'Uzbekistán',\n by: '',\n pt: 'Usbequistão',\n },\n dial_code: '+998',\n code: 'UZ',\n flag: '🇺🇿',\n },\n {\n name: {\n en: 'Vanuatu',\n ru: 'Вануату',\n pl: 'Vanuatu',\n ua: 'Вануату',\n cz: 'Vanuatu',\n by: '',\n pt: 'Vanuatu',\n },\n dial_code: '+678',\n code: 'VU',\n flag: '🇻🇺',\n },\n {\n name: {\n en: 'Venezuela, Bolivarian Republic of',\n ru: 'Венесуэла, Боливарианская Республика',\n pl: 'Wenezuela, Republika Boliwariańska',\n ua: 'Венесуела, Боліваріанська Республіка',\n cz: 'Venezuela, Bolívarovská republika',\n by: '',\n pt: 'Venezuela',\n },\n dial_code: '+58',\n code: 'VE',\n flag: '🇻🇪',\n },\n {\n name: {\n en: 'Viet Nam',\n ru: 'Вьетнам',\n pl: 'Wietnam',\n ua: \"В'єтнам\",\n cz: 'Vietnam',\n by: '',\n pt: 'Vietname',\n },\n dial_code: '+84',\n code: 'VN',\n flag: '🇻🇳',\n },\n {\n name: {\n en: 'Virgin Islands, British',\n ru: 'Виргинские острова, Британские',\n pl: 'Wyspy Dziewicze, Brytyjskie',\n ua: 'Віргінські острови, Британські',\n cz: 'Panenské ostrovy, Britové',\n by: '',\n pt: 'Ilhas Virgens Britânicas',\n },\n dial_code: '+1284',\n code: 'VG',\n flag: '🇻🇬',\n },\n {\n name: {\n en: 'Virgin Islands, U.S.',\n ru: 'Американские Виргинские острова',\n pl: 'Wyspy Dziewicze Stanów Zjednoczonych',\n ua: 'Віргінські острови, США',\n cz: 'Panenské ostrovy, USA',\n by: '',\n pt: 'Ilhas Virgens Americanas',\n },\n dial_code: '+1340',\n code: 'VI',\n flag: '🇻🇮',\n },\n {\n name: {\n en: 'Wallis and Futuna',\n ru: 'Уоллис и Футуна',\n pl: 'Wallis i Futuna',\n ua: 'Уолліс і Футуна',\n cz: 'Wallis a Futuna',\n by: '',\n pt: 'Wallis e Futuna',\n },\n dial_code: '+681',\n code: 'WF',\n flag: '🇼🇫',\n },\n {\n name: {\n en: 'Yemen',\n ru: 'Йемен',\n pl: 'Jemen',\n ua: 'Ємен',\n cz: 'Jemen',\n by: '',\n pt: 'Iémen',\n },\n dial_code: '+967',\n code: 'YE',\n flag: '🇾🇪',\n },\n {\n name: {\n en: 'Zambia',\n ru: 'Замбия',\n pl: 'Zambia',\n ua: 'Замбія',\n cz: 'Zambie',\n by: '',\n pt: 'Zâmbia',\n },\n dial_code: '+260',\n code: 'ZM',\n flag: '🇿🇲',\n },\n {\n name: {\n en: 'Zimbabwe',\n ru: 'Зимбабве',\n pl: 'Zimbabwe',\n ua: 'Зімбабве',\n cz: 'Zimbabwe',\n by: '',\n pt: 'Zimbabué',\n },\n dial_code: '+263',\n code: 'ZW',\n flag: '🇿🇼',\n },\n {\n name: {\n en: 'Åland Islands',\n ru: 'Аландские острова',\n pl: 'Wyspy Alandzkie',\n ua: 'Аландські острови',\n cz: 'Alandy',\n by: '',\n pt: 'Ilhas Aland',\n },\n dial_code: '+358',\n code: 'AX',\n flag: '🇦🇽',\n },\n]\n","/**\n * Shared validation utilities\n */\n\nexport const isValidEmail = (email: string): boolean => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return emailRegex.test(email)\n}\n\nexport const isValidPhoneNumber = (phone: string): boolean => {\n const phoneRegex = /^\\+?[\\d\\s-()]+$/\n return phoneRegex.test(phone)\n}\n","/**\n * Shared formatting utilities\n */\n\nexport const formatCurrency = (amount: number, currency = 'USD'): string => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n }).format(amount)\n}\n\nexport const formatDate = (date: Date): string => {\n return new Intl.DateTimeFormat('en-US').format(date)\n}\n\n/**\n * Formats a price value with currency symbol\n * @param value - The numeric value to format\n * @param currency - Currency symbol (default: 'US$')\n * @returns Formatted price string\n */\nexport const priceWithCurrency = (value = '', currency = 'US$'): string => {\n const num = parseFloat(value)\n const safe = Number.isFinite(num) ? num : 0\n const formatted = safe.toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n return `${currency} ${formatted}`\n}\n","/**\n * Shared constants\n */\n\nexport const API_TIMEOUT = 30000\n\nexport const ERROR_MESSAGES = {\n NETWORK_ERROR: 'Network error occurred',\n TIMEOUT: 'Request timed out',\n VALIDATION_ERROR: 'Validation error',\n} as const\n","/**\n * API configuration constants\n */\n\n// Base URLs for different environments\nexport const API_BASE_URLS = {\n PROD: 'https://www.ticketfairy.com/api',\n STAG: 'https://test.ticketfairy.com/api',\n DEV: 'https://sandbox.ticketfairy.com/api',\n} as const\n\n// Default client credentials (if public)\nexport const DEFAULT_CLIENT_ID = 'e9d8f8922797b4621e562255afe90dbf'\nexport const DEFAULT_CLIENT_SECRET =\n 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9'\n\n// Privacy policy\nexport const PRIVACY_POLICY_LINK = 'https://www.ticketfairy.com/privacy'\n\n// Note: API_TIMEOUT is exported from utils/constants.ts\n","/**\n * Standard HTTP headers used across the application\n */\n\nexport const HTTP_HEADERS = {\n // Content type headers\n ACCEPT: 'Accept',\n CONTENT_TYPE: 'Content-Type',\n\n // API-specific headers\n AUTHORIZATION_GUEST: 'Authorization-Guest',\n X_TF_ECOMMERCE: 'X-TF-ECOMMERCE',\n PROMOTION_EVENT: 'Promotion-Event',\n PROMOTION_CODE: 'Promotion-Code',\n REFERRER_ID: 'Referrer-Id',\n} as const\n\nexport const CONTENT_TYPES = {\n JSON_API: 'application/vnd.api+json',\n JSON: 'application/json',\n} as const\n\nexport const DEFAULT_HEADERS = {\n [HTTP_HEADERS.ACCEPT]: CONTENT_TYPES.JSON_API,\n [HTTP_HEADERS.CONTENT_TYPE]: CONTENT_TYPES.JSON_API,\n} as const\n","/**\n * API endpoint path definitions\n */\n\nexport const API_ENDPOINTS = {\n // Authentication\n AUTH: '/auth',\n OAUTH_AUTHORIZE: '/v1/oauth/authorize-rn',\n OAUTH_REGISTER: '/v1/oauth/register-rn',\n RESET_PASSWORD: '/auth/reset-password',\n\n // Events\n EVENT: (eventId: string | number) => `/v1/event/${eventId}`,\n EVENT_TICKETS: (eventId: string | number) => `/v1/event/${eventId}/tickets/`,\n ADD_TO_CART: (eventId: string | number) => `/v1/event/${eventId}/add-to-cart/`,\n WAITING_LIST: (eventId: string | number) =>\n `/v1/event/${eventId}/add_to_waiting_list`,\n\n // Cart\n CART: '/v1/cart',\n\n // Orders\n ACCOUNT_ORDERS: '/v1/account/orders/',\n ACCOUNT_ORDER: (orderId: string) => `/v1/account/order/${orderId}`,\n ORDER_REVIEW: (orderHash: string) => `/v1/order/${orderHash}/review/`,\n ORDER_SUCCESS: (orderHash: string) => `/v1/order/${orderHash}/success`,\n ORDER_COMPLETE_FREE: (orderHash: string) =>\n `/v1/order/${orderHash}/complete_free_registration`,\n ORDER_PAYMENT_COMPLETE: (orderHash: string) =>\n `/v1/order/${orderHash}/payment/complete`,\n\n // Geography\n COUNTRIES_LIST: '/countries/list',\n COUNTRY_STATES: (countryId: string | number) => `/countries/${countryId}/states/`,\n} as const\n","// Import and re-export from shared\nexport { priceWithCurrency } from 'tf-checkout-shared'\n\nexport const emptyPhone = (phone: string): string | undefined =>\n phone.length < 4 ? undefined : phone\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n container: {\n marginHorizontal: 24,\n marginBottom: 50,\n },\n input: {\n marginBottom: 16,\n },\n submitButton: {\n marginVertical: 32,\n },\n submitButtonDisabled: {\n marginVertical: 32,\n backgroundColor: R.colors.disabled,\n },\n customCheckboxText: {\n paddingRight: 32,\n },\n privacyPolicyLink: {\n textDecorationLine: 'underline',\n color: 'blue',\n },\n\n skippingRootContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n flex: 1,\n },\n skippingDialogContainer: {\n backgroundColor: R.colors.white,\n alignItems: 'center',\n justifyContent: 'center',\n padding: 24,\n borderRadius: 5,\n elevation: 4,\n shadowColor: R.colors.black,\n shadowOffset: {\n width: 2,\n height: 4,\n },\n shadowOpacity: 0.5,\n shadowRadius: 3,\n },\n skippingBrandImage: {\n height: 90,\n width: 250,\n resizeMode: 'contain',\n tintColor: R.colors.black,\n },\n skippingMessage: {\n fontSize: 20,\n color: R.colors.black,\n fontWeight: '700',\n marginBottom: 24,\n },\n ttfPolicyError: {\n color: R.colors.danger,\n marginTop: 8,\n },\n})\n","import {\n BillingDetails,\n CardForm,\n CardFormView,\n initStripe,\n useConfirmPayment,\n} from '@stripe/stripe-react-native'\nimport _every from 'lodash/every'\nimport _forEach from 'lodash/forEach'\nimport _map from 'lodash/map'\nimport _mapKeys from 'lodash/mapKeys'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert, Text, View } from 'react-native'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\n\nimport { IFetchAccessTokenResponse, IOrderReview } from '../../api/types'\nimport { CartTimer, Loading } from '../../components'\nimport Button from '../../components/button/Button'\nimport { IFormFieldProps } from '../../components/formField/types'\nimport { CheckoutCore, CheckoutCoreHandle, SessionHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport { Config } from '../../helpers/Config'\nimport { priceWithCurrency } from '../../helpers/StringsHelper'\nimport { orderReviewItems } from './CheckoutData'\nimport Conditions from './components/Conditions'\nimport OrderReview from './components/OrderReview'\nimport s from './styles'\nimport { ICheckoutProps, IOrderDetails, IOrderItem } from './types'\n\n/** @deprecated Use CheckoutV2 instead */\nconst Checkout = forwardRef<SessionHandleType, ICheckoutProps>(\n (\n {\n checkoutData,\n onFetchOrderReviewError,\n onFetchOrderReviewSuccess,\n onFetchEventConditionsError,\n onFetchEventConditionsSuccess,\n onCheckoutCompletedError,\n onCheckoutCompletedSuccess,\n onPaymentError,\n onPaymentSuccess,\n onStripeInitializeError,\n texts,\n styles,\n onPressExit,\n areAlertsEnabled = true,\n areLoadingIndicatorsEnabled = true,\n onLoadingChange,\n onFetchOrderDetailsError,\n onFetchOrderDetailsSuccess,\n onCartExpired,\n shouldCartTimerNotMinimizeOnTap,\n },\n ref\n ) => {\n //#region State\n const { confirmPayment, loading: isLoadingPayment } = useConfirmPayment()\n const [isLoading, setIsLoading] = useState(true)\n const [orderReview, setOrderReview] = useState<IOrderReview>()\n const [conditionsTexts, setConditionsTexts] = useState<string[]>([])\n const [conditionsValues, setConditionsValues] = useState<boolean[]>([])\n const [orderInfo, setOrderInfo] = useState<IOrderItem[]>(orderReviewItems)\n const [paymentInfo, setPaymentInfo] = useState<CardFormView.Details>()\n const [isStripeConfigMissing, setIsStripeConfigMissing] = useState(false)\n const [isPaymentRequired, setIsPaymentRequired] = useState<boolean | undefined>(\n undefined\n )\n const [secondsLeft, setSecondsLeft] = useState<number | undefined>(undefined)\n //#endregion State\n\n //#region Ref\n const checkoutCoreRef = useRef<CheckoutCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n //#endregion Ref\n\n const showLoading = () => setIsLoading(true)\n const hideLoading = () => setIsLoading(false)\n\n const showAlert = (message: string) => {\n if (areAlertsEnabled) {\n Alert.alert('', message)\n }\n }\n\n const isCheckoutCoreRefReady = (): boolean => {\n if (!checkoutCoreRef.current) {\n onFetchOrderReviewError?.({\n message: 'CheckoutCore is not initialized',\n })\n showAlert('CheckoutCore is not initialized')\n return false\n }\n\n return true\n }\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n if (!accessTokenError && accessTokenData?.accessToken) {\n await fetchInitialData()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n await fetchInitialData()\n },\n }))\n //#endregion Imperative Handler\n\n //#region Fetch Data\n const fetchEventConditionsAsync = async () => {\n if (!isCheckoutCoreRefReady || !Config.EVENT_ID) {\n return\n }\n\n const { error: conditionsError, data: conditionsData } =\n await checkoutCoreRef.current!.getEventConditions()\n\n if (conditionsError) {\n hideLoading()\n onFetchEventConditionsError?.(conditionsError)\n\n return showAlert(conditionsError.message || 'Error while fetching conditions')\n }\n\n setConditionsValues(_map(conditionsData, () => false))\n setConditionsTexts(conditionsData)\n hideLoading()\n onFetchEventConditionsSuccess?.(conditionsData)\n }\n\n const fetchOrderReviewAsync = async () => {\n const { orderReviewData, orderReviewError } =\n await checkoutCoreRef.current!.getOrderReview(checkoutData.hash)\n hideLoading()\n\n if (orderReviewError) {\n hideLoading()\n setIsStripeConfigMissing(true)\n onFetchOrderReviewError?.(orderReviewError)\n\n return showAlert(orderReviewError?.message || 'Error while getting Order Review')\n }\n\n if (!orderReviewData) {\n onFetchOrderReviewError?.({\n message: 'No order review data found. Please try again later',\n })\n\n return showAlert('No order review data found. Please try again later')\n }\n\n hideLoading()\n onFetchOrderReviewSuccess?.(orderReviewData)\n setSecondsLeft(orderReviewData.expiresAt)\n\n const tOrderInfo = [...orderInfo]\n const currency = orderReviewData.reviewData.currency\n _forEach(tOrderInfo, (item) => {\n _mapKeys(orderReviewData.reviewData, (value, key) => {\n if (item.id === key) {\n //@ts-ignore\n item.title = texts?.orderReviewItems?.[key] ?? item.title\n if (key === 'price' || key === 'total') {\n item.value = priceWithCurrency(value, currency)\n } else {\n item.value = value\n }\n }\n })\n })\n\n setOrderInfo(tOrderInfo)\n setOrderReview(orderReviewData)\n\n if (orderReviewData?.reviewData.total !== '0.00') {\n if (!orderReviewData.paymentData?.stripePublishableKey) {\n onStripeInitializeError?.('Stripe is not configured for this event')\n\n showAlert('Stripe is not configured for this event.Please contact support.')\n return\n }\n\n setIsPaymentRequired(true)\n\n try {\n await initStripe({\n publishableKey: orderReviewData.paymentData.stripePublishableKey,\n stripeAccountId: orderReviewData.paymentData.stripeConnectedAccount,\n })\n } catch (stripeError) {\n onStripeInitializeError?.('Error initializing Stripe')\n }\n } else {\n setIsPaymentRequired(false)\n }\n }\n\n const fetchInitialData = async () => {\n showLoading()\n await fetchEventConditionsAsync()\n await fetchOrderReviewAsync()\n hideLoading()\n }\n //#endregion Fetch Data\n\n //#region Handlers\n const handleOnPressExit = () => {\n onPressExit()\n }\n\n const handleOnChangePaymentInfo = (details: CardFormView.Details) => {\n setPaymentInfo(details)\n }\n\n const handleOnCheckCondition = (index: number) => {\n const tConditionsValues = [...conditionsValues]\n tConditionsValues[index] = !conditionsValues[index]\n setConditionsValues(tConditionsValues)\n }\n\n const handleFetchOrderDetails = async () => {\n showLoading()\n const { orderDetailsData, orderDetailsError } =\n await checkoutCoreRef.current!.getPurchaseOrderDetails(checkoutData.id)\n hideLoading()\n\n if (orderDetailsError) {\n onFetchOrderDetailsError?.(orderDetailsError)\n return showAlert(\n orderDetailsError.message || 'Error while fetching order details'\n )\n }\n\n if (!orderDetailsData) {\n onFetchOrderDetailsError?.({\n code: 404,\n message: 'No order data found',\n })\n return showAlert('No order data found')\n }\n\n if (!orderDetailsData.items) {\n onFetchOrderDetailsError?.({\n message: 'No items found in order',\n })\n return showAlert('No items found in order')\n }\n\n if (!Config.EVENT_ID) {\n return onFetchOrderDetailsError?.({\n message: 'EventId not configured.',\n })\n }\n\n const eventIdNumber =\n typeof Config.EVENT_ID === 'number'\n ? Config.EVENT_ID\n : parseInt(Config.EVENT_ID, 10)\n\n const orderDetails: IOrderDetails = {\n eventId: eventIdNumber,\n ticketName: orderDetailsData.items[0].name,\n ticketCost: orderDetailsData.items[0].price,\n numberOfTickets: parseInt(orderDetailsData.items[0].quantity, 10),\n eventUserTickets: _map(orderDetailsData.tickets, (ticket) => ({\n hash: ticket.hash,\n ticketType: ticket.ticketType,\n holderEmail: ticket.holderEmail,\n holderPhone: ticket.holderPhone,\n holderName: ticket.holderName,\n qrData: ticket.qrData,\n pdfLink: ticket.pdfLink,\n description: ticket.description,\n descriptionPlain: ticket.descriptionPlain,\n })),\n }\n\n onFetchOrderDetailsSuccess?.(orderDetails)\n }\n\n const handleOnPressFreeRegistration = async () => {\n showLoading()\n const { freeRegistrationError } = await checkoutCoreRef.current!.freeRegistration(\n checkoutData.hash\n )\n\n if (freeRegistrationError) {\n hideLoading()\n onPaymentError?.(freeRegistrationError)\n\n return showAlert(freeRegistrationError.message || 'Error while registering')\n }\n\n hideLoading()\n await handleFetchOrderDetails()\n\n checkoutCoreRef.current?.stopCartTimer()\n onPaymentSuccess?.()\n }\n\n const handleOnPressPay = async () => {\n if (!orderReview) {\n onPaymentError?.({\n message: `Order data is missing ${JSON.stringify(orderReview)}`,\n })\n\n return showAlert('No order data found')\n }\n\n const { addressData } = orderReview\n\n showLoading()\n\n const billingDetails: BillingDetails = {\n name: `${orderReview.billingData.firstName} ${orderReview.billingData.lastName}`,\n address: {\n line1: addressData.line1,\n city: addressData.city,\n state: addressData.state,\n postalCode: addressData.postalCode,\n },\n }\n\n const { error: confirmPaymentError, paymentIntent } = await confirmPayment(\n orderReview.paymentData!.stripeClientSecret!,\n {\n paymentMethodType: 'Card',\n paymentMethodData: { billingDetails },\n }\n )\n\n if (confirmPaymentError || paymentIntent?.status !== 'Succeeded') {\n hideLoading()\n onCheckoutCompletedError?.({\n message: confirmPaymentError?.message || 'Error confirming payment',\n extraData: confirmPaymentError?.code,\n })\n\n return showAlert(confirmPaymentError?.message || 'Error confirming payment')\n }\n\n onCheckoutCompletedSuccess?.(checkoutData)\n\n const { error: onPaymentSuccessError } =\n await checkoutCoreRef.current!.paymentSuccess(checkoutData.hash)\n\n if (onPaymentSuccessError) {\n hideLoading()\n onPaymentError?.(onPaymentSuccessError)\n\n return showAlert(\n onPaymentSuccessError.message || 'Error while performing payment'\n )\n }\n\n hideLoading()\n await handleFetchOrderDetails()\n\n checkoutCoreRef.current?.stopCartTimer()\n onPaymentSuccess?.()\n }\n //#endregion\n\n const getConditions = (): IFormFieldProps[] =>\n _map(conditionsTexts, (conditionTxt, index) => {\n return {\n id: `condition${index}`,\n fieldType: 'checkbox',\n checkboxProps: {\n isActive: conditionsValues[index],\n text: conditionTxt,\n onPress: () => handleOnCheckCondition(index),\n },\n }\n })\n\n const onLoadingChangeCallback = useCallback(\n (loading: boolean) => {\n if (onLoadingChange) {\n onLoadingChange(loading)\n }\n },\n [onLoadingChange]\n )\n\n //#region useEffects\n useEffect(() => {\n onLoadingChangeCallback(isLoading)\n }, [isLoading, onLoadingChangeCallback])\n\n useEffect(() => {\n fetchInitialData()\n }, [])\n //#endregion\n\n const getIsDataValid = () => {\n if (secondsLeft === 0) {\n return false\n }\n const paymentValid = paymentInfo?.complete\n return paymentValid && _every(conditionsValues, (item) => item === true)\n }\n\n const isDataValid = getIsDataValid()\n\n const payButtonStyle = isDataValid\n ? styles?.payment?.button\n : styles?.payment?.buttonDisabled\n\n //#region RENDER\n return isStripeConfigMissing ? (\n <View style={[s.missingStripeContainer, styles?.missingStripeConfig?.container]}>\n <Text style={[s.missingStripeMessage, styles?.missingStripeConfig?.message]}>\n {texts?.missingStripeConfigMessage ||\n 'Payment handler is missing, please contact support'}\n </Text>\n\n <Button\n styles={styles?.missingStripeConfig?.exitButton}\n text={texts?.exitButton || 'Exit'}\n onPress={handleOnPressExit}\n />\n </View>\n ) : (\n <CheckoutCore\n ref={checkoutCoreRef}\n onSecondsLeftChange={setSecondsLeft}\n onCartExpired={onCartExpired}\n >\n <SessionHandle ref={sessionHandleRef}>\n <KeyboardAwareScrollView extraScrollHeight={32}>\n <View style={styles?.rootStyle}>\n <View>\n <Text style={[s.title, styles?.title]}>\n {texts?.title || 'GET YOUR TICKETS'}\n </Text>\n <Text style={[styles?.subTitle]}>\n {texts?.subTitle || 'Order review'}\n </Text>\n </View>\n <OrderReview orderItems={orderInfo} styles={styles?.orderReview} />\n {isPaymentRequired && !isStripeConfigMissing && (\n <View style={styles?.payment?.container}>\n <Text style={styles?.payment?.title}>\n {texts?.providePaymentInfo ||\n 'Please provide your payment information'}\n </Text>\n <CardForm\n onFormComplete={handleOnChangePaymentInfo}\n style={[s.card, styles?.payment?.cardContainer]}\n cardStyle={styles?.payment?.cardStyle}\n />\n </View>\n )}\n <Conditions {...getConditions()} />\n {isPaymentRequired && !isStripeConfigMissing && (\n <Button\n text={texts?.payButton || 'PAY'}\n onPress={handleOnPressPay}\n isLoading={isLoading || isLoadingPayment}\n isDisabled={!isDataValid}\n styles={{\n container: s.payButton,\n ...payButtonStyle,\n }}\n />\n )}\n {isPaymentRequired !== undefined && !isPaymentRequired && (\n <Button\n text={texts?.freeRegistrationButton || 'COMPLETE REGISTRATION'}\n onPress={handleOnPressFreeRegistration}\n isLoading={isLoading || isLoadingPayment}\n styles={styles?.freeRegistrationButton}\n isDisabled={secondsLeft === 0}\n />\n )}\n </View>\n {isLoading && areLoadingIndicatorsEnabled && <Loading />}\n </KeyboardAwareScrollView>\n {secondsLeft !== undefined && (\n <CartTimer\n secondsLeft={secondsLeft!}\n styles={styles?.cartTimer}\n texts={texts?.cartTimer}\n shouldNotMinimize={shouldCartTimerNotMinimizeOnTap}\n />\n )}\n </SessionHandle>\n </CheckoutCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default Checkout\n","import { IOrderItem } from './types'\n\nexport const orderReviewItems: IOrderItem[] = [\n {\n id: 'event',\n title: 'EVENT',\n value: '',\n },\n {\n id: 'ticketType',\n title: 'TICKET TYPE',\n value: 'First RELEASE',\n },\n {\n id: 'numberOfTickets',\n title: 'NUMBER OF TICKETS',\n value: '',\n },\n {\n id: 'price',\n title: 'PRICE PER TICKET',\n value: '',\n },\n {\n id: 'total',\n title: 'TOTAL',\n value: '',\n },\n]\n","import _map from 'lodash/map'\nimport React from 'react'\nimport { View } from 'react-native'\n\nimport { Checkbox } from '../../../components'\nimport { IFormFieldProps } from '../../../components/formField/types'\nimport { ConditionsStyles as s } from './styles'\n\nconst ConditionItem = ({ id, checkboxProps }: IFormFieldProps) => (\n <Checkbox\n key={id}\n text={checkboxProps!.text}\n isActive={checkboxProps!.isActive}\n onPress={() => checkboxProps!.onPress(id!)}\n />\n)\n\nconst Conditions = (props: IFormFieldProps[]) => {\n return <View style={s.rootContainer}>{_map(props, ConditionItem)}</View>\n}\n\nexport default Conditions\n","import { StyleSheet } from 'react-native'\n\nexport const OrderReviewStyles = StyleSheet.create({\n rootContainer: {\n marginHorizontal: 0,\n marginVertical: 24,\n paddingVertical: 12,\n flex: 1,\n flexWrap: 'wrap',\n },\n orderItemContainer: {\n paddingVertical: 4,\n width: '100%',\n },\n orderItemTitle: {\n fontWeight: '800',\n fontSize: 16,\n },\n orderItemValue: {\n lineHeight: 20,\n },\n})\n\nexport const ConditionsStyles = StyleSheet.create({\n rootContainer: {\n marginVertical: 16,\n },\n})\n","import _map from 'lodash/map'\nimport React from 'react'\nimport { Text, View } from 'react-native'\n\nimport { IOrderItem, IOrderReviewProps } from '../types'\nimport { OrderReviewStyles as s } from './styles'\n\nconst OrderItem = ({ title, value, styles }: IOrderItem) => (\n <View style={[s.orderItemContainer, styles?.container]} key={`orderReview.${title}`}>\n <Text style={[s.orderItemTitle, styles?.title]}>{title}</Text>\n <Text style={[s.orderItemValue, styles?.value]} allowFontScaling={true}>\n {value}\n </Text>\n </View>\n)\n\nconst OrderReview = ({ orderItems, styles }: IOrderReviewProps) => (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n {_map(orderItems, (item) => (\n <OrderItem\n key={`orderReview.${item.id}`}\n id={item.id}\n title={item.title}\n value={item.value}\n styles={styles?.item}\n />\n ))}\n </View>\n)\n\nexport default OrderReview\n","import { Platform, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n title: {\n fontSize: 20,\n fontWeight: '700',\n marginBottom: 16,\n color: R.colors.primary,\n },\n subTitle: {\n fontSize: 14,\n fontWeight: '700',\n marginBottom: 16,\n color: R.colors.primary,\n },\n payButton: {\n width: '100%',\n marginVertical: 24,\n alignSelf: 'center',\n },\n card: {\n marginTop: 24,\n minHeight: Platform.OS === 'ios' ? 180 : 270,\n maxHeight: Platform.OS === 'ios' ? 300 : 350,\n width: '80%',\n borderRadius: 10,\n padding: 8,\n alignSelf: 'center',\n },\n missingStripeContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 16,\n },\n missingStripeMessage: {\n fontSize: 16,\n color: R.colors.white,\n textAlign: 'center',\n marginBottom: 24,\n },\n})\n","import _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert, PermissionsAndroid, Platform } from 'react-native'\nimport {\n DocumentDirectoryPath,\n DownloadDirectoryPath,\n downloadFile,\n DownloadFileOptions,\n} from 'react-native-fs'\n\nimport {\n IFetchAccessTokenResponse,\n IMyOrderDetailsData,\n IMyOrderDetailsTicket,\n} from '../../api/types'\nimport { BottomSheetHandle } from '../../components/bottomSheetModal/BottomSheetModal'\nimport { OrderDetailsCore, SessionHandle, SessionHandleType } from '../../core'\nimport { OrderDetailsCoreHandle } from '../../core/OrderDetailsCore/OrderDetailsCoreTypes'\nimport { getData, LocalStorageKeys } from '../../helpers/LocalStorage'\nimport { TicketActionType } from './components/TicketActions/TicketActionsTypes'\nimport { IOnPressTicketDownload } from './components/TicketListItem/TicketListItem'\nimport MyOrderDetailsView from './MyOrderDetailsView'\nimport { DownloadStatus, IMyOrderDetailsProps } from './types'\n\nconst MyOrderDetails = forwardRef<SessionHandleType, IMyOrderDetailsProps>(\n (\n {\n data,\n styles,\n texts,\n config,\n onDownloadStatusChange,\n downloadStatusIcons,\n onAndroidWritePermission,\n onLinkCopied,\n onPressResaleTicket,\n\n onRemoveTicketFromResaleSuccess,\n onRemoveTicketFromResaleError,\n moreButtonIcon,\n ticketActionsIcons,\n },\n ref\n ) => {\n //#region State\n const [isWriteStorageEnabled, setIsWriteStorageEnabled] = useState<\n boolean | undefined\n >(undefined)\n const [isLinkCopied, setIsLinkCopied] = useState(false)\n const [downloadStatus, setDownloadStatus] = useState<DownloadStatus | undefined>(\n undefined\n )\n const [orderInfo, setOrderInfo] = useState<IMyOrderDetailsData>(data)\n const [isLoading, setIsLoading] = useState(false)\n\n const [selectedTicket, setSelectedTicket] = useState<\n IMyOrderDetailsTicket | undefined\n >(undefined)\n //#endregion State\n\n //#region refs\n const sessionHandleRef = useRef<SessionHandleType>(null)\n const myOrderDetailsCoreRef = useRef<OrderDetailsCoreHandle>(null)\n const bottomSheetModalRef = useRef<BottomSheetHandle>(null)\n //#endregion\n\n const handleOnDownloadStatusChange = useCallback(\n (status?: DownloadStatus) => {\n onDownloadStatusChange?.(status)\n },\n [onDownloadStatusChange]\n )\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {},\n async removeTicketFromResale() {},\n async resaleTicket() {},\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleOnPressTicketDownload = async ({\n hash,\n pdfLink,\n }: IOnPressTicketDownload) => {\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n if (!accessToken) {\n return setDownloadStatus(undefined)\n }\n if (!pdfLink) {\n return setDownloadStatus('failed')\n }\n\n //Define path to store file along with the extension\n const path =\n Platform.OS === 'ios'\n ? `${DocumentDirectoryPath}/${hash}.pdf`\n : `${DownloadDirectoryPath}/${hash}.pdf`\n\n const headers = {\n Accept: 'application/pdf',\n 'Content-Type': 'application/pdf',\n Authorization: `Bearer ${accessToken}`,\n }\n //Define options\n const options: DownloadFileOptions = {\n fromUrl: pdfLink,\n toFile: path,\n headers: headers,\n }\n setDownloadStatus('downloading')\n const response = await downloadFile(options).promise\n\n if (response.statusCode === 200) {\n setDownloadStatus('downloaded')\n } else {\n setDownloadStatus('failed')\n }\n\n setTimeout(() => {\n setDownloadStatus(undefined)\n }, 5000)\n }\n\n const handleRemoveTicketFromResale = async (ticket: IMyOrderDetailsTicket) => {\n if (!myOrderDetailsCoreRef.current) {\n return Alert.alert('MyOrderDetailsCoreRef is not initialized')\n }\n\n setIsLoading(true)\n const { removeTicketFromResaleData, removeTicketFromResaleError } =\n await myOrderDetailsCoreRef.current.removeTicketFromResale(ticket.hash)\n setIsLoading(false)\n\n if (removeTicketFromResaleError || !removeTicketFromResaleData) {\n onRemoveTicketFromResaleError?.(removeTicketFromResaleError!)\n return Alert.alert('', removeTicketFromResaleError?.message)\n }\n\n const updatedOrderInfo = { ...orderInfo }\n _forEach(updatedOrderInfo.tickets, (item) => {\n if (item.hash === ticket.hash) {\n item.isSellable = true\n item.isOnSale = false\n }\n })\n\n Alert.alert('', removeTicketFromResaleData.message)\n\n setOrderInfo(updatedOrderInfo)\n onRemoveTicketFromResaleSuccess?.(removeTicketFromResaleData.message)\n }\n\n const askToRemoveTicketFromResale = (ticket: IMyOrderDetailsTicket) => {\n Alert.alert(\n 'Withdraw ticket confirmation',\n 'Are you sure you want to withdraw your ticket from resale?',\n [\n {\n text: 'No',\n },\n {\n text: 'Yes, withdraw',\n onPress: () => handleRemoveTicketFromResale(ticket),\n },\n ]\n )\n }\n\n const handleOnPressResaleTicket = (ticket: IMyOrderDetailsTicket) => {\n const activeTicketType = _find(\n data.items,\n (ticketType) => ticketType.hash === ticket.ticketTypeHash\n )\n\n return onPressResaleTicket(ticket, activeTicketType!.isActive)\n }\n\n const handleCloseBottomSheet = () => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.close()\n }\n setSelectedTicket(undefined)\n }\n\n const handleOnActionSelected = async (action: TicketActionType) => {\n if (!selectedTicket) {\n return\n }\n\n switch (action) {\n case 'download-pdf':\n handleOnPressTicketDownload({\n hash: selectedTicket.hash,\n pdfLink: selectedTicket.pdfLink,\n })\n handleCloseBottomSheet()\n break\n\n case 'refund':\n break\n\n case 'sell':\n handleOnPressResaleTicket(selectedTicket)\n handleCloseBottomSheet()\n break\n\n case 'remove-from-sale':\n await handleRemoveTicketFromResale(selectedTicket)\n handleCloseBottomSheet()\n break\n\n default:\n console.log('Nothing is selected')\n }\n }\n\n const handleOnPressCopyLink = () => {\n setIsLinkCopied(true)\n onLinkCopied?.(true)\n setTimeout(() => {\n setIsLinkCopied(false)\n onLinkCopied?.(false)\n }, 3000)\n }\n //#endregion Handlers\n\n //#region Effects\n useEffect(() => {\n handleOnDownloadStatusChange(downloadStatus)\n }, [downloadStatus, handleOnDownloadStatusChange])\n\n useEffect(() => {\n if (Platform.OS === 'ios') {\n return\n }\n\n PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE\n ).then((result) => {\n setIsWriteStorageEnabled(result)\n })\n }, [])\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n onAndroidWritePermission?.(isWriteStorageEnabled)\n }\n\n if (isWriteStorageEnabled === false && Platform.OS === 'android') {\n PermissionsAndroid.request(\n PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE\n ).then((result) => {\n setIsWriteStorageEnabled(result === 'granted')\n })\n }\n }, [isWriteStorageEnabled])\n //#endregion Effects\n\n //#region RENDER\n return (\n <OrderDetailsCore ref={myOrderDetailsCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <MyOrderDetailsView\n data={data}\n styles={styles}\n texts={texts}\n isLinkCopied={isLinkCopied}\n onPressCopyLink={handleOnPressCopyLink}\n onPressTicketDownload={handleOnPressTicketDownload}\n downloadStatus={downloadStatus}\n config={config}\n downloadStatusIcons={downloadStatusIcons}\n onPressResaleTicket={handleOnPressResaleTicket}\n onPressRemoveTicketFromResale={askToRemoveTicketFromResale}\n isLoading={isLoading}\n moreButtonIcon={moreButtonIcon}\n onTicketSelection={setSelectedTicket}\n selectedTicket={selectedTicket}\n onActionSelected={handleOnActionSelected}\n ticketActionsIcons={ticketActionsIcons}\n bottomSheetModalRef={bottomSheetModalRef}\n />\n </SessionHandle>\n </OrderDetailsCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default MyOrderDetails\n","import Clipboard from '@react-native-clipboard/clipboard'\nimport _map from 'lodash/map'\nimport React, { FC } from 'react'\nimport { Image, SectionList, Text, TouchableOpacity, View } from 'react-native'\n\nimport { IMyOrderDetailsItem, IMyOrderDetailsTicket } from '../../api/types'\nimport { BottomSheetModal, Loading } from '../../components'\nimport R from '../../res'\nimport Notification from './components/Notification'\nimport TicketActions from './components/TicketActions/TicketActions'\nimport { TicketActionType } from './components/TicketActions/TicketActionsTypes'\nimport TicketListItem from './components/TicketListItem/TicketListItem'\nimport s from './styles'\nimport { IMyOrderDetailsViewProps, IOrderDetailsSectionData } from './types'\n\nconst MyOrderDetailsView: FC<IMyOrderDetailsViewProps> = ({\n data: { header, items, tickets },\n styles,\n texts,\n isLinkCopied,\n onPressCopyLink,\n downloadStatus,\n config = {\n areActivityIndicatorsEnabled: true,\n areAlertsEnabled: true,\n },\n isLoading,\n\n onTicketSelection,\n selectedTicket,\n onActionSelected,\n ticketActionsIcons,\n bottomSheetModalRef,\n moreButtonIcon,\n}) => {\n //#region Handlers\n const onCopyLinkHandler = () => {\n if (isLinkCopied) {\n return\n }\n Clipboard.setString(header.shareLink)\n onPressCopyLink()\n }\n\n const handleOnTicketSelection = (ticket: IMyOrderDetailsTicket) => {\n onTicketSelection(ticket)\n }\n\n const handleHideActionsModal = () => {\n onTicketSelection(undefined)\n }\n\n const handleOnActionSelected = (actionType: TicketActionType) => {\n onActionSelected(actionType)\n }\n //#endregion\n\n const copyIconTint = styles?.header?.shareLink?.copyIconTint || R.colors.black\n const copyIconTintActive =\n styles?.header?.shareLink?.copyIconTintActive || R.colors.validGreen\n const title = texts?.title || 'ORDER DETAILS'\n const subTitle = texts?.subTitle || 'ORDER SUMMARY'\n const referralLink =\n texts?.referralLink || 'Your personal share link for this event is:'\n const itemsTotal = texts?.listItem?.total || 'Total'\n const itemsTicketType = texts?.listItem?.ticketType || 'Ticket Type: '\n const itemsPrice = texts?.listItem?.price || 'Price: '\n const itemsQuantity = texts?.listItem?.quantity || 'Quantity: '\n\n const ticketsTitle = texts?.ticketsTitle || 'Your Tickets: '\n const ticketsId = texts?.ticketItem?.ticketId || 'Ticket ID: '\n const ticketsType = texts?.ticketItem?.ticketType || 'Ticket Type: '\n const ticketsHolderName = texts?.ticketItem?.holderName || 'Ticket Holder Name: '\n const ticketsStatus = texts?.ticketItem?.status || 'Status: '\n const copyText = texts?.copyText?.copy || 'Copy'\n const copiedText = texts?.copyText?.copied || 'Copied'\n\n const soFarText = texts?.referral?.soFar || `So far, you've referred`\n const ticketsText = texts?.referral?.tickets || `tickets.`\n const sellTicket = texts?.sellTicket || 'Sell Ticket'\n const removeTicketFromResale = texts?.removeTicketFromResale || 'Remove from resale'\n const download = texts?.ticketItem?.download || `Download`\n\n const renderShareLink = () => (\n <View style={[s.shareLinkContainer, styles?.header?.shareLink?.container]}>\n <Text\n numberOfLines={1}\n ellipsizeMode=\"head\"\n style={styles?.header?.shareLink?.link}\n >\n {header.shareLink}\n </Text>\n <TouchableOpacity\n style={[s.copyContainer, styles?.header?.shareLink?.copyContainer]}\n onPress={onCopyLinkHandler}\n >\n <Text style={[s.copyText, styles?.header?.shareLink?.copyText]}>\n {isLinkCopied ? copiedText : copyText}\n </Text>\n <Image\n source={isLinkCopied ? R.icons.check : R.icons.copy}\n style={[\n s.copyIcon,\n styles?.header?.shareLink?.copyIcon,\n {\n tintColor: isLinkCopied ? copyIconTintActive : copyIconTint,\n },\n ]}\n />\n </TouchableOpacity>\n </View>\n )\n\n const renderHeader = () => (\n <View style={styles?.header?.container}>\n <Text style={styles?.header?.title}>{title}</Text>\n <Text style={styles?.header?.subTitle}>{subTitle}</Text>\n <Text style={styles?.header?.shareLink?.message}>{referralLink} </Text>\n {header?.shareLink && renderShareLink()}\n <Text style={styles?.header?.shareLink?.referrals}>\n {soFarText}{' '}\n <Text style={styles?.header?.shareLink?.referralValue}>\n {header.salesReferred}\n </Text>{' '}\n {ticketsText}\n </Text>\n </View>\n )\n\n const parsedItems: IOrderDetailsSectionData[] | undefined = items\n ? _map(items, (item) => {\n return {\n id: `${item.name}.${item.price}`,\n item: item,\n }\n })\n : undefined\n\n const parsedTickets = _map(tickets, (item) => {\n return {\n id: `${item.hash}`,\n item: item,\n }\n })\n\n const itemsData = [\n {\n title: items ? texts?.listItem?.title || 'Items' : '',\n data: parsedItems || [],\n renderItem: ({ item }: any) => renderItemComp(item),\n id: 0,\n },\n {\n title: ticketsTitle,\n data: parsedTickets,\n renderItem: ({ item }: any) => _renderTicket(item),\n id: 1,\n },\n ]\n\n const renderItemComp = ({ item }: { item: IMyOrderDetailsItem }) =>\n item ? (\n <View style={[s.listItemContainer, styles?.listItem?.container]}>\n <View style={styles?.listItem?.innerLeftContainer}>\n <Text style={styles?.listItem?.rowPlaceholder}>\n {itemsTicketType} <Text style={styles?.listItem?.rowValue}>{item.name}</Text>\n </Text>\n <View style={s.rowContainer}>\n <Text style={styles?.listItem?.rowPlaceholder}>{itemsPrice}</Text>\n <Text style={styles?.listItem?.rowValue}>\n {item.currency}\n {item.price}\n </Text>\n </View>\n <View style={s.rowContainer}>\n <Text style={styles?.listItem?.rowPlaceholder}>{itemsQuantity}</Text>\n <Text style={styles?.listItem?.rowValue}>{item.quantity}</Text>\n </View>\n </View>\n <View\n style={[s.listItemInnerRightContainer, styles?.listItem?.innerRightContainer]}\n >\n <Text style={styles?.listItem?.rowPlaceholder}>{itemsTotal}</Text>\n <Text style={styles?.listItem?.rowValue}>\n {item.currency}\n {item.total}\n </Text>\n </View>\n </View>\n ) : null\n\n const _renderTicket = ({ item }: { item: IMyOrderDetailsTicket }) => (\n <TicketListItem\n data={item}\n styles={styles?.ticketItem}\n texts={{\n ticketType: ticketsType,\n holderName: ticketsHolderName,\n ticketId: ticketsId,\n status: ticketsStatus,\n download: download,\n sellTicket: sellTicket,\n removeTicketFromResale: removeTicketFromResale,\n }}\n onPressActionsButton={handleOnTicketSelection}\n moreButtonIcon={moreButtonIcon || R.icons.more}\n />\n )\n\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <SectionList\n ListHeaderComponent={renderHeader}\n //@ts-ignore\n sections={[...itemsData]}\n renderSectionHeader={({ section }) => {\n if (section.id === 0) {\n if (!items) {\n return null\n }\n }\n return <Text style={styles?.sectionHeader}>{section.title}</Text>\n }}\n renderSectionFooter={({ section }) => {\n if (section.id === 0 && parsedItems) {\n return (\n <View style={[s.sectionFooterContainer, styles?.section0Footer?.container]}>\n <Text style={styles?.section0Footer?.label}>{itemsTotal}</Text>\n <Text style={styles?.section0Footer?.value}>\n {parsedItems ? parsedItems[0].item.currency : ''} {header.total}\n </Text>\n </View>\n )\n }\n return null\n }}\n />\n {config?.areAlertsEnabled &&\n (downloadStatus === 'downloaded' || downloadStatus === 'failed') && (\n <Notification\n isSuccess={downloadStatus === 'downloaded'}\n textSuccess={texts?.downloadNotification?.successMessage}\n textError={texts?.downloadNotification?.errorMessage}\n />\n )}\n {isLoading && <Loading />}\n\n {selectedTicket && (\n <BottomSheetModal\n onClose={handleHideActionsModal}\n styles={styles?.bottomSheetModal}\n texts={texts?.bottomSheetModal}\n ref={bottomSheetModalRef}\n content={\n <TicketActions\n onSelectAction={handleOnActionSelected}\n ticket={selectedTicket}\n styles={styles?.ticketActions}\n texts={texts?.ticketActions}\n icons={ticketActionsIcons}\n />\n }\n />\n )}\n </View>\n )\n}\n\nexport default MyOrderDetailsView\n","import React, { FC } from 'react'\nimport { Image, ImageSourcePropType, Text, View } from 'react-native'\n\nimport R from '../../../res'\nimport { NotificationStyles as s } from './styles'\n\nexport interface INotificationIcons {\n success?: ImageSourcePropType\n error?: ImageSourcePropType\n}\n\nexport interface INotificationProps {\n isSuccess: boolean\n textSuccess?: string\n textError?: string\n\n icons?: INotificationIcons\n}\n\nconst Notification: FC<INotificationProps> = ({\n isSuccess,\n textSuccess = 'File downloaded successfully',\n textError = 'There was an error downloading the file',\n icons,\n}) => {\n const textToShow = isSuccess ? textSuccess : textError\n const successIcon = icons?.success || R.icons.check\n const errorIcon = icons?.error || R.icons.error\n return (\n <View style={s.rootContainer}>\n <Text style={s.text}>{textToShow}</Text>\n <Image\n source={isSuccess ? successIcon : errorIcon}\n style={isSuccess ? s.iconSuccess : s.iconError}\n />\n </View>\n )\n}\n\nexport default Notification\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../../res'\n\nexport const NotificationStyles = StyleSheet.create({\n rootContainer: {\n padding: 24,\n backgroundColor: R.colors.white,\n position: 'absolute',\n bottom: 48,\n left: 24,\n right: 24,\n borderRadius: 2,\n elevation: 5,\n shadowColor: R.colors.black,\n shadowOffset: {\n width: 1,\n height: 5,\n },\n shadowRadius: 2,\n shadowOpacity: 0.2,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n text: {\n fontSize: 16,\n color: R.colors.black,\n },\n iconSuccess: {\n tintColor: R.colors.validGreen,\n height: 16,\n width: 16,\n resizeMode: 'contain',\n },\n iconError: {\n tintColor: R.colors.danger,\n height: 16,\n width: 16,\n resizeMode: 'contain',\n },\n})\n","import React, { FC } from 'react'\nimport {\n Image,\n ImageSourcePropType,\n ScrollView,\n Text,\n TouchableOpacity,\n View,\n} from 'react-native'\n\nimport { ITicketActionsProps } from './TicketActionsTypes'\n\nconst TicketActions: FC<ITicketActionsProps> = ({\n onSelectAction,\n ticket,\n icons,\n texts,\n styles,\n}) => {\n const handleOnPressDownload = () => onSelectAction('download-pdf')\n const handleOnPressSell = () => onSelectAction('sell')\n const handleOnPressRemoveFromSale = () => onSelectAction('remove-from-sale')\n\n const renderButton = (\n onPress: () => void,\n text: string,\n icon?: ImageSourcePropType\n ) => (\n <TouchableOpacity onPress={onPress} style={styles?.buttonContainer}>\n <View style={styles?.buttonContent}>\n {!!icon && <Image source={icon} style={styles?.icon} />}\n <Text style={styles?.text}>{text}</Text>\n </View>\n </TouchableOpacity>\n )\n\n const downloadPdf =\n ticket.pdfLink &&\n renderButton(\n handleOnPressDownload,\n texts?.downloadPdf || 'Download PDF',\n icons?.downloadPdf\n )\n\n const sellTicket =\n ticket.isSellable &&\n !ticket.isOnSale &&\n renderButton(handleOnPressSell, texts?.sell || 'Sell Ticket', icons?.sell)\n\n const removeFromResale =\n !ticket.isSellable &&\n ticket.isOnSale &&\n renderButton(\n handleOnPressRemoveFromSale,\n texts?.removeFromSale || 'Remove from resale',\n icons?.removeFromSale\n )\n\n return (\n <ScrollView style={[styles?.rootScrollViewContainer]}>\n {downloadPdf}\n {sellTicket}\n {removeFromResale}\n </ScrollView>\n )\n}\n\nexport default TicketActions\n","import React from 'react'\nimport { Image, Text, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../../../res'\nimport s from './TicketListItemStyles'\nimport { ITicketListItemProps } from './TicketListItemTypes'\n\nexport interface IOnPressTicketDownload {\n pdfLink?: string\n hash: string\n}\n\nconst TicketListItem = ({\n styles,\n texts,\n data,\n moreButtonIcon,\n onPressActionsButton,\n}: ITicketListItemProps) => {\n const handleOnPressActionsButton = () => {\n onPressActionsButton(data)\n }\n\n return (\n <View>\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <View style={styles?.leftContent}>\n <View style={s.rowContainer}>\n <Text style={styles?.rowPlaceholder}>{texts.ticketId}</Text>\n <Text style={styles?.rowValue}>{data.hash}</Text>\n </View>\n <View style={s.rowContainer}>\n <Text style={styles?.rowPlaceholder}>{texts.ticketType}</Text>\n <Text style={styles?.rowValue}>{data.ticketType}</Text>\n </View>\n <View style={s.rowContainer}>\n <Text style={styles?.rowPlaceholder}>{texts.holderName}</Text>\n <Text style={styles?.rowValue}>{data.holderName}</Text>\n </View>\n </View>\n\n <View style={[s.rightContent, styles?.rightContent]}>\n <Text style={styles?.rowPlaceholder}>\n {texts.status}\n <Text style={styles?.rowValue}>{data.status}</Text>\n </Text>\n\n <TouchableOpacity\n style={[s.moreButton, styles?.moreButton]}\n onPress={handleOnPressActionsButton}\n >\n <Image\n source={moreButtonIcon || R.icons.more}\n style={[s.moreButtonIcon, styles?.moreButtonIcon]}\n />\n </TouchableOpacity>\n </View>\n </View>\n </View>\n )\n}\n\nexport default TicketListItem\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n rootContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n borderWidth: 2,\n marginVertical: 8,\n },\n rightContent: {\n justifyContent: 'space-between',\n alignItems: 'flex-end',\n },\n rowContainer: {\n flexDirection: 'row',\n },\n downloadButtonText: {\n fontSize: 12,\n },\n downloadButton: {\n height: 30,\n marginVertical: 8,\n },\n moreButton: {\n marginRight: 4,\n marginBottom: 4,\n },\n moreButtonIcon: {\n height: 25,\n width: 30,\n resizeMode: 'contain',\n },\n})\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n rootContainer: {\n flex: 1,\n },\n shareLinkContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n copyContainer: {\n alignItems: 'center',\n borderWidth: 1,\n padding: 4,\n justifyContent: 'center',\n flexDirection: 'row',\n },\n copyText: {\n fontSize: 11,\n },\n copyIcon: {\n height: 16,\n width: 16,\n marginLeft: 4,\n resizeMode: 'contain',\n },\n sectionFooterContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n\n listItemContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n borderWidth: 2,\n marginVertical: 8,\n },\n rowContainer: {\n flexDirection: 'row',\n },\n listItemInnerRightContainer: {\n justifyContent: 'center',\n alignItems: 'flex-end',\n },\n\n ticketItemContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n borderWidth: 2,\n marginVertical: 8,\n },\n ticketItemInnerRightContainer: {\n justifyContent: 'center',\n alignItems: 'flex-end',\n },\n})\n","import _map from 'lodash/map'\nimport _sortBy from 'lodash/sortBy'\nimport _uniqBy from 'lodash/uniqBy'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert } from 'react-native'\n\nimport {\n IFetchAccessTokenResponse,\n IMyOrdersData,\n IMyOrdersOrder,\n IMyOrdersRequestParams,\n MyOrderRequestFromType,\n} from '../../api/types'\nimport { IDropdownItem } from '../../components/dropdown/types'\nimport { MyOrdersCore, MyOrdersCoreHandle, SessionHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport { IError } from '../../types'\nimport MyOrdersView from './MyOrdersView'\nimport { IMyOrdersProps } from './types'\nimport { logger } from '../../utils/Logger'\n\nconst MyOrders = forwardRef<SessionHandleType, IMyOrdersProps>(\n (\n {\n onSelectOrder,\n onFetchOrderDetailsError,\n onFetchMyOrdersError,\n onFetchMyOrdersSuccess,\n onFetchOrderDetailsSuccess,\n onLoadingChange,\n styles,\n texts,\n config,\n },\n ref\n ) => {\n //#region State\n const [isLoading, setIsLoading] = useState(true)\n const [isRefreshing, setIsRefreshing] = useState(false)\n const [isGettingEventDetails, setIsGettingEventDetails] = useState(false)\n const [myEvents, setMyEvents] = useState<IDropdownItem[]>([])\n const [selectedEvent, setSelectedEvent] = useState<IDropdownItem>({\n label: texts?.selectEventPlaceholder || 'Select event',\n value: '',\n })\n\n const [selectedTimeFilter, setSelectedTimeFilter] = useState<IDropdownItem>({\n label: texts?.selectTimeFilterPlaceholder || 'Select time filter',\n value: '',\n })\n const [myOrders, setMyOrders] = useState<IMyOrdersOrder[]>([])\n //#endregion\n\n const timeFilters: IDropdownItem[] = [\n {\n label: texts?.timeFilters?.upcoming || 'Upcoming events',\n value: 'upcoming_events',\n },\n {\n label: texts?.timeFilters?.ongoingAndUpcoming || 'Ongoing and upcoming events',\n value: 'ongoing_and_upcoming_events',\n },\n {\n label: texts?.timeFilters?.ongoing || 'Ongoing events',\n value: 'ongoing_events',\n },\n {\n label: texts?.timeFilters?.past || 'Past events',\n value: 'past_events',\n },\n ]\n\n //#region Refs\n const currentPage = useRef(1)\n const myOrdersCoreRef = useRef<MyOrdersCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n //#endregion\n\n const showAlert = (text: string) => {\n if (config?.areAlertsEnabled) {\n Alert.alert('', text)\n }\n }\n\n const isMyOrdersCoreRefReady = (): boolean => {\n if (!myOrdersCoreRef.current) {\n onFetchMyOrdersError?.({\n message: 'MyOrdersCore is not initialized',\n })\n showAlert('MyOrdersCore is not initialized')\n return false\n }\n\n return true\n }\n\n //#region Fetch data\n const getOrdersAsync = async (): Promise<undefined | IMyOrdersData> => {\n if (!isMyOrdersCoreRefReady()) {\n return\n }\n\n setIsLoading(true)\n const validSelectedEvent = selectedEvent.value === '' ? null : selectedEvent\n\n const myOrdersRequestParams: IMyOrdersRequestParams = {\n limit: 20,\n page: currentPage.current,\n filter:\n validSelectedEvent?.value.toString() === 'none'\n ? ''\n : validSelectedEvent?.value.toString(),\n from:\n selectedTimeFilter.value === 'none'\n ? ''\n : (selectedTimeFilter.value as MyOrderRequestFromType),\n }\n\n const { myOrdersData, myOrdersError } =\n await myOrdersCoreRef.current!.getMyOrders(myOrdersRequestParams)\n\n setIsLoading(false)\n\n if (myOrdersError) {\n onFetchMyOrdersError?.(myOrdersError)\n showAlert(myOrdersError.message)\n return undefined\n }\n\n if (!myOrdersData) {\n const altError: IError = {\n message: 'My orders returned no data',\n }\n onFetchMyOrdersError?.(altError)\n showAlert(altError.message)\n return undefined\n }\n\n onFetchMyOrdersSuccess?.(myOrdersData)\n\n const events = _sortBy(\n _map(myOrdersData.events, (item) => {\n return {\n label: item.event_name,\n value: item.url_name,\n }\n }),\n 'value'\n )\n\n setMyEvents(events)\n\n return myOrdersData\n }\n\n const getOrders = async () => {\n const fetchedOrders = await getOrdersAsync()\n setMyOrders(fetchedOrders?.orders ?? [])\n }\n\n const getMoreOrders = async () => {\n const fetchedOrders = await getOrdersAsync()\n const uniqOrders = _uniqBy(\n [...myOrders, ...(fetchedOrders?.orders ?? [])],\n (item) => item.id\n )\n setMyOrders(uniqOrders)\n }\n //#endregion Fetch data\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n logger.debug('MyOrders', 'refreshAccessToken', { refreshToken })\n if (!sessionHandleRef.current) {\n logger.debug('MyOrders', 'refreshAccessToken', {\n message: 'Session Handle ref is not initialized',\n })\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n logger.debug('MyOrders', 'refreshAccessToken', {\n accessTokenError,\n accessTokenData,\n })\n if (!accessTokenError && accessTokenData?.accessToken) {\n logger.debug('MyOrders', 'refreshAccessToken', {\n message: 'Access token refreshed successfully',\n })\n await getOrders()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n logger.debug('MyOrders', 'reloadData')\n await getOrders()\n },\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleOnRefresh = async () => {\n setIsRefreshing(true)\n await getOrders()\n setIsRefreshing(false)\n }\n\n const handleOnLoadingChange = useCallback(\n (loading: boolean) => {\n onLoadingChange?.(loading)\n },\n [onLoadingChange]\n )\n\n const handleOnChangeTimeFilter = (item: IDropdownItem) => {\n setMyOrders([])\n setSelectedEvent({\n label: texts?.selectEventPlaceholder || 'Select event',\n value: '',\n })\n\n if (item.value !== selectedTimeFilter.value) {\n currentPage.current = 1\n setSelectedTimeFilter(item)\n }\n }\n\n const handleOnChangeEvent = (event: IDropdownItem) => {\n setMyOrders([])\n\n if (event.value !== selectedEvent.value || event.value === '') {\n currentPage.current = 1\n setSelectedEvent(event)\n }\n }\n\n const handleOnFetchMoreOrders = () => {\n if (myOrders.length < 8) {\n return\n }\n if (!isLoading) {\n currentPage.current = currentPage.current + 1\n getMoreOrders()\n }\n }\n\n const handleOnSelectOrder = async (order: IMyOrdersOrder) => {\n if (!isMyOrdersCoreRefReady()) {\n return\n }\n\n setIsGettingEventDetails(true)\n\n const { orderDetailsData, orderDetailsError } =\n await myOrdersCoreRef.current!.getOrderDetails(order.id)\n\n setIsGettingEventDetails(false)\n\n if ((!orderDetailsData || orderDetailsError) && onFetchOrderDetailsError) {\n showAlert(orderDetailsError?.message ?? 'Error fetching order details')\n return onFetchOrderDetailsError(\n orderDetailsError || {\n message: 'Order details returned no data',\n }\n )\n }\n\n if (orderDetailsData) {\n onFetchOrderDetailsSuccess?.(orderDetailsData)\n onSelectOrder(orderDetailsData)\n }\n }\n //#endregion\n\n //#region useEffect\n useEffect(() => {\n handleOnLoadingChange(isLoading || isGettingEventDetails)\n }, [handleOnLoadingChange, isLoading, isGettingEventDetails])\n\n useEffect(() => {\n const _fetchMyOrders = async () => {\n await getOrders()\n }\n _fetchMyOrders()\n }, [])\n\n useEffect(() => {\n if (selectedEvent.value !== '' || selectedTimeFilter.value !== '') {\n getOrders()\n }\n }, [selectedEvent, selectedTimeFilter])\n //#endregion useEffect\n\n //#region Return\n return (\n <MyOrdersCore ref={myOrdersCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <MyOrdersView\n myEvents={myEvents}\n selectedEvent={selectedEvent}\n onChangeEvent={handleOnChangeEvent}\n myOrders={myOrders}\n onSelectOrder={handleOnSelectOrder}\n onRefresh={handleOnRefresh}\n isLoading={isLoading}\n isGettingEventDetails={isGettingEventDetails}\n styles={styles}\n config={config}\n onFetchMoreOrders={handleOnFetchMoreOrders}\n texts={texts}\n timeFilters={timeFilters}\n selectedTimeFilter={selectedTimeFilter}\n onChangeTimeFilter={handleOnChangeTimeFilter}\n isRefreshing={isRefreshing}\n />\n </SessionHandle>\n </MyOrdersCore>\n )\n //#endregion Return\n }\n)\n\nexport default MyOrders\n","import React, { FC, useCallback, useMemo, useRef } from 'react'\nimport {\n ActivityIndicator,\n FlatList,\n Image,\n RefreshControl,\n SafeAreaView,\n StyleProp,\n Text,\n TextStyle,\n TouchableOpacity,\n View,\n} from 'react-native'\n\nimport { IMyOrdersOrder } from '../../api/types'\nimport { Dropdown, Loading } from '../../components'\nimport { IDropdownStyles } from '../../components/dropdown/types'\nimport R from '../../res'\nimport OrderListItem from './components/OrderListItem'\nimport { MyOrdersViewStyles as s } from './styles'\nimport { IMyOrdersViewProps } from './types'\n\nconst MyOrdersView: FC<IMyOrdersViewProps> = ({\n myEvents,\n onChangeEvent,\n selectedEvent,\n myOrders,\n onSelectOrder,\n styles,\n isLoading,\n onRefresh,\n isGettingEventDetails,\n config,\n onFetchMoreOrders,\n texts,\n onChangeTimeFilter,\n timeFilters,\n selectedTimeFilter,\n isRefreshing,\n}) => {\n const onEndReachedCalledDuringMomentum = useRef(false)\n //#region Handlers\n const handleOnSelectOrder = (order: IMyOrdersOrder) => {\n if (onSelectOrder) {\n onSelectOrder(order)\n }\n }\n\n const handleOnReachEnd = () => {\n if (!onEndReachedCalledDuringMomentum.current) {\n onFetchMoreOrders()\n onEndReachedCalledDuringMomentum.current = true\n }\n }\n\n const handleOnMomentumScrollBegin = () => {\n onEndReachedCalledDuringMomentum.current = false\n }\n //#endregion Handlers\n\n //#region Renders\n const renderOrderListItem = useCallback(\n ({ item }: { item: any }) => (\n <OrderListItem\n order={item}\n onSelectOrder={handleOnSelectOrder}\n styles={styles?.orderListItem}\n />\n ),\n\n [handleOnSelectOrder]\n )\n\n const renderRefreshControl = (\n <RefreshControl\n enabled={false}\n tintColor={styles?.refreshControlColor || R.colors.primary}\n refreshing={!!isLoading}\n onRefresh={onRefresh}\n />\n )\n\n const dropdownStyles = useMemo<IDropdownStyles>(\n () => ({\n container: s.eventsDropdownContainer,\n button: s.eventsDropdownButton,\n label: {\n maxWidth: '100%',\n ...styles?.eventsDropdown?.label,\n },\n icon: {},\n dialog: {},\n flatListContainer: {},\n }),\n []\n )\n\n const onClearSelectedEvent = () =>\n onChangeEvent({\n label: texts?.selectEventPlaceholder || 'Select event',\n value: 'none',\n })\n\n const onClearSelectedTimeFilter = () =>\n onChangeTimeFilter({\n label: texts?.selectTimeFilterPlaceholder || 'Select time filter',\n value: 'none',\n })\n\n const eventsDropdown = (\n <View style={[s.eventsContainer, styles?.eventsContainer]}>\n <View style={[s.eventsSelectionContainer, styles?.eventsSelectionContainer]}>\n <Dropdown\n items={myEvents}\n onSelectItem={onChangeEvent}\n selectedOption={selectedEvent}\n styles={dropdownStyles}\n />\n <TouchableOpacity onPress={onClearSelectedEvent}>\n <Image\n source={R.icons.error}\n style={[s.clearEventSelectionIcon, styles?.clearEventSelectionIcon]}\n />\n </TouchableOpacity>\n </View>\n </View>\n )\n\n const timeFilterDropdown = (\n <View style={[s.eventsContainer, styles?.timeFilters?.container]}>\n <View style={[s.eventsSelectionContainer, styles?.timeFilters?.selectionContainer]}>\n <Dropdown\n items={timeFilters}\n onSelectItem={onChangeTimeFilter}\n selectedOption={selectedTimeFilter}\n styles={dropdownStyles}\n />\n <TouchableOpacity onPress={onClearSelectedTimeFilter}>\n <Image\n source={R.icons.error}\n style={[s.clearEventSelectionIcon, styles?.timeFilters?.clearSelectionIcon]}\n />\n </TouchableOpacity>\n </View>\n </View>\n )\n //#endregion Renders\n\n //#region Return\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <SafeAreaView style={[s.safeArea, styles?.safeArea]}>\n <Text style={[s.eventsTitle, styles?.eventsTitle]}>\n {texts?.title || 'Events'}\n </Text>\n {!config?.isTimeFilterDropdownHidden && timeFilterDropdown}\n {!config?.isEventsDropdownHidden && eventsDropdown}\n <View style={[s.listContainer, styles?.listContainer]}>\n <FlatList\n data={myOrders}\n renderItem={renderOrderListItem}\n refreshControl={renderRefreshControl}\n onEndReached={handleOnReachEnd}\n onMomentumScrollBegin={handleOnMomentumScrollBegin}\n onEndReachedThreshold={0.2}\n extraData={myOrders}\n />\n {isLoading && myOrders.length > 8 && !isRefreshing && (\n <ActivityIndicator\n size={'large'}\n color={styles?.refreshControlColor || R.colors.primary}\n />\n )}\n </View>\n {config?.areActivityIndicatorsEnabled && isGettingEventDetails && <Loading />}\n </SafeAreaView>\n </View>\n )\n //#endregion Return\n}\n\nexport default MyOrdersView\n","import React, { FC } from 'react'\nimport { Image, Text, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../../res'\nimport { OrderListItemStyles as s } from './styles'\nimport { IOrderListItemProps } from './types'\n\nconst OrderListItem: FC<IOrderListItemProps> = ({ order, onSelectOrder, styles }) => {\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <TouchableOpacity\n onPress={() => {\n onSelectOrder(order)\n }}\n >\n <View style={[s.contentContainer, styles?.contentContainer]}>\n {/* Left side of the item */}\n <View style={[s.infoRootContainer, styles?.infoRootContainer]}>\n {/* Image content */}\n <View style={[s.imageContainer, styles?.imageContainer]}>\n <Image source={{ uri: order.image }} style={[s.image, styles?.image]} />\n </View>\n {/* Info content */}\n <View style={[s.infoContainer, styles?.infoContainer]}>\n <View style={[s.infoTopContainer, styles?.infoTopContainer]}>\n <Text style={styles?.orderId}>{order.id}</Text>\n <Text style={styles?.orderDate}>{order.date}</Text>\n </View>\n <View style={[s.infoBottomContainer, styles?.infoBottomContainer]}>\n <Text style={[s.eventName, styles?.eventName]} numberOfLines={2}>\n {order.eventName}\n </Text>\n <View style={[s.priceContainer, styles?.priceContainer]}>\n <Text style={styles?.currency}>{order.currency} </Text>\n <Text style={styles?.price}>{order.amount}</Text>\n </View>\n </View>\n </View>\n </View>\n {/* Right side of the item */}\n <View style={[s.iconNextContainer, styles?.iconNextContainer]}>\n <Image style={[s.iconNext, styles?.iconNext]} source={R.icons.next} />\n </View>\n </View>\n </TouchableOpacity>\n </View>\n )\n}\n\nexport default OrderListItem\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../../res'\n\nexport const OrderListItemStyles = StyleSheet.create({\n rootContainer: {\n backgroundColor: R.colors.listBackground,\n marginVertical: 8,\n },\n contentContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n imageContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n marginRight: 16,\n },\n image: { height: 60, width: 60, resizeMode: 'contain' },\n infoRootContainer: {\n flexDirection: 'row',\n flex: 1,\n },\n infoContainer: {\n flex: 1,\n },\n infoTopContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginVertical: 8,\n },\n infoBottomContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginVertical: 8,\n alignItems: 'flex-end',\n },\n iconNext: {\n height: 24,\n width: 24,\n resizeMode: 'contain',\n },\n iconNextContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n padding: 16,\n paddingRight: 0,\n },\n priceContainer: {\n flexDirection: 'row',\n },\n eventName: {\n width: '65%',\n },\n})\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport const MyOrdersViewStyles = StyleSheet.create({\n eventsContainer: {\n marginVertical: 16,\n },\n eventsTitle: {\n marginBottom: 8,\n },\n eventsDropdownContainer: {\n flex: 1,\n marginRight: 16,\n },\n eventsDropdownButton: {\n marginBottom: 0,\n },\n safeArea: {\n flex: 1,\n },\n listContainer: {\n //flex: 1,\n },\n backButtonContainer: {\n marginBottom: 24,\n },\n rootContainer: {\n flex: 1,\n },\n eventsSelectionContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'space-between',\n },\n clearEventSelectionIcon: {\n tintColor: R.colors.white,\n width: 20,\n height: 20,\n },\n})\n","import { Config } from '../helpers/Config'\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error'\n\ninterface LoggerOptions {\n level?: LogLevel\n showTimestamp?: boolean\n}\n\nexport class Logger {\n private readonly level: LogLevel\n private readonly showTimestamp: boolean\n public readonly debug: (...data: any[]) => void\n public readonly info: (...data: any[]) => void\n public readonly warn: (...data: any[]) => void\n public readonly error: (...data: any[]) => void\n\n constructor(options: LoggerOptions = {}) {\n this.level = options.level || 'info'\n this.showTimestamp = options.showTimestamp ?? true\n this.debug = this.shouldLog('debug')\n ? console.debug.bind('', ...this.loggerArgs('debug'))\n : () => null\n this.warn = this.shouldLog('warn')\n ? console.warn.bind('', ...this.loggerArgs('warn'))\n : () => null\n this.info = this.shouldLog('info')\n ? console.info.bind('', ...this.loggerArgs('info'))\n : () => null\n this.error = this.shouldLog('error')\n ? console.error.bind('', ...this.loggerArgs('error'))\n : () => null\n }\n\n private getTimestamp(): string {\n const date = new Date()\n const options: Intl.DateTimeFormatOptions = {\n year: '2-digit',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n }\n\n return new Intl.DateTimeFormat('en-US', options).format(date)\n }\n\n private formatMessage(level: LogLevel, ...args: any[]): [string, ...any[]] {\n const timestamp = this.showTimestamp ? `[${this.getTimestamp()}]` : ''\n\n return [`${timestamp}`, ...args]\n }\n\n private shouldLog(level: LogLevel): boolean {\n const levels: LogLevel[] = ['debug', 'info', 'warn', 'error']\n\n if (levels.indexOf(this.level) < 0) {\n return false\n }\n\n return levels.indexOf(level) >= levels.indexOf(this.level)\n }\n\n private loggerArgs(level: LogLevel, ...args: any[]) {\n const [message, ...rest] = this.formatMessage(level, ...args)\n\n return [message, ...rest]\n }\n}\n\nexport const logger = new Logger({\n level: Config.logLevel || 'info',\n})\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert } from 'react-native'\n\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport {\n PurchaseConfirmationCore,\n PurchaseConfirmationCoreHandle,\n SessionHandle,\n} from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport PurchaseConfirmationView from './PurchaseConfirmationView'\nimport { IPurchaseConfirmationProps } from './types'\n\nconst PurchaseConfirmation = forwardRef<SessionHandleType, IPurchaseConfirmationProps>(\n (\n {\n orderHash,\n onComplete,\n styles,\n texts,\n onFetchPurchaseConfirmationError,\n onFetchPurchaseConfirmationSuccess,\n onLoadingChange,\n areActivityIndicatorsEnabled,\n areAlertsEnabled,\n },\n ref\n ) => {\n //#region State\n const [isLoading, setIsLoading] = useState(false)\n //#endregion State\n\n const showAlert = (text: string) => {\n areAlertsEnabled && Alert.alert(text)\n }\n\n const isPurchaseConfirmationCoreRefReady = (): boolean => {\n if (!purchaseConfirmationCoreRef.current) {\n onFetchPurchaseConfirmationError?.({\n message: 'PurchaseConfirmationCore is not initialized',\n })\n showAlert('PurchaseConfirmationCore is not initialized')\n return false\n }\n\n return true\n }\n\n //#region Fetch data\n const getInitialData = async () => {\n if (!isPurchaseConfirmationCoreRefReady()) {\n return\n }\n\n purchaseConfirmationCoreRef.current?.stopCartTimer()\n setIsLoading(true)\n const { purchaseConfirmationError } =\n await purchaseConfirmationCoreRef.current!.getPurchaseConfirmation(orderHash)\n setIsLoading(false)\n\n if (purchaseConfirmationError) {\n onFetchPurchaseConfirmationError?.(purchaseConfirmationError)\n return showAlert(purchaseConfirmationError.message)\n }\n\n onFetchPurchaseConfirmationSuccess?.()\n }\n //#endregion Fetch data\n\n //#region Ref\n const purchaseConfirmationCoreRef = useRef<PurchaseConfirmationCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n //#endregion Ref\n\n const handleOnLoadingChange = useCallback(\n (loading: boolean) => {\n onLoadingChange?.(loading)\n },\n [onLoadingChange]\n )\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n if (!accessTokenError && accessTokenData?.accessToken) {\n await getInitialData()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n await getInitialData()\n },\n }))\n //#endregion Imperative Handler\n\n //#region useEffect\n useEffect(() => {\n handleOnLoadingChange(isLoading)\n }, [handleOnLoadingChange, isLoading])\n\n useEffect(() => {\n getInitialData()\n }, [])\n //#endregion useEffect\n\n //#region RENDER\n return (\n <PurchaseConfirmationCore ref={purchaseConfirmationCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <PurchaseConfirmationView\n orderHash={orderHash}\n onComplete={onComplete}\n styles={styles}\n texts={texts}\n areActivityIndicatorsEnabled={areActivityIndicatorsEnabled}\n />\n </SessionHandle>\n </PurchaseConfirmationCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default PurchaseConfirmation\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport { Button, Loading } from '../../components'\nimport s from './styles'\nimport { IPurchaseConfirmationViewProps } from './types'\n\nconst PurchaseConfirmationView: FC<IPurchaseConfirmationViewProps> = ({\n texts,\n styles,\n onComplete,\n areActivityIndicatorsEnabled,\n isLoading,\n}) => (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Text style={[s.title, styles?.title]}>\n {texts?.title || 'Your Tickets are Confirmed!'}\n </Text>\n\n <View style={[s.messagesContainer, styles?.message?.container]}>\n <Text style={styles?.message?.line1}>\n {texts?.message?.line1 || 'YOUR TICKETS HAVE BEEN EMAILED TO YOU \\n'}\n </Text>\n <Text style={styles?.message?.line2}>\n {texts?.message?.line2 || 'PLEASE BRING THEM WITH YOU TO THE EVENT'}\n </Text>\n </View>\n {/* \n <View style={[s.promoContainer, styles?.promo?.container]}>\n <Text style={[s.promoTitle, styles?.promo?.title]}>\n Your ticket can become{' '}\n <Text style={[s.promoTitleKeyword, styles?.promo?.titleKeyword]}>\n cheaper\n </Text>{' '}\n or even{' '}\n <Text style={[s.promoTitleKeyword, styles?.promo?.titleKeyword]}>\n FREE!\n </Text>\n </Text>\n\n <Text style={[s.promoMessage, styles?.promo?.message]}>\n <Text style={[s.promoMessageKeyword, styles?.promo?.messageKeyword]}>\n Invite friends\n </Text>{' '}\n and we'll refund up to{' '}\n <Text style={[s.promoDiscount, styles?.promo?.discount]}>\n {texts?.promo?.discount || '100%'}\n </Text>{' '}\n of your ticket money, if they buy tickets as well!\n </Text>\n </View>\n\n <View style={[s.inviteContainer, styles?.invite?.container]}>\n <Text style={[s.inviteTitle, styles?.invite?.title]}>\n {texts?.invite?.title || 'How do you invite your friends?'}\n </Text>\n <Text style={[s.inviteMessage, styles?.invite?.message]}>\n {texts?.invite?.message || 'Send them this link:'}\n </Text>\n\n <View style={[s.inviteLinkContainer, styles?.invite?.linkContainer]}>\n <Text style={[s.inviteLink, styles?.invite?.link]}>\n {referralLink || 'http://www.theticketfairy.com'}\n </Text>\n <TouchableOpacity style={[s.copyButton, styles?.invite?.copyButton]}>\n <Image\n source={R.icons.copy}\n style={[s.copyIcon, styles?.invite?.copyIcon]}\n />\n </TouchableOpacity>\n </View>\n </View> */}\n <Button\n text={texts?.exitButton || 'Exit'}\n styles={styles?.exitButton}\n onPress={onComplete}\n />\n {areActivityIndicatorsEnabled && isLoading && <Loading />}\n </View>\n)\n\nexport default PurchaseConfirmationView\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n rootContainer: {\n backgroundColor: R.colors.white,\n padding: 24,\n flex: 1,\n },\n messagesContainer: {\n marginVertical: 24,\n padding: 12,\n backgroundColor: 'gainsboro',\n },\n title: {\n fontWeight: '700',\n color: R.colors.black,\n fontSize: 22,\n },\n\n promoContainer: {\n marginVertical: 24,\n },\n promoTitleKeyword: {\n fontWeight: '800',\n color: R.colors.danger,\n },\n promoTitle: {\n fontSize: 25,\n },\n promoMessage: {\n fontSize: 18,\n marginTop: 8,\n },\n promoMessageKeyword: {\n fontWeight: '600',\n },\n promoDiscount: {\n fontWeight: '700',\n color: R.colors.danger,\n },\n\n inviteContainer: {\n marginVertical: 24,\n },\n inviteTitle: {\n fontSize: 18,\n fontWeight: '500',\n marginBottom: 16,\n },\n inviteMessage: {\n fontSize: 18,\n },\n\n inviteLinkContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: 16,\n },\n inviteLink: {\n padding: 8,\n backgroundColor: R.colors.black,\n color: R.colors.white,\n },\n copyButton: {\n backgroundColor: R.colors.black,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 16,\n padding: 4,\n },\n copyIcon: {\n width: 28,\n height: 28,\n resizeMode: 'contain',\n tintColor: R.colors.white,\n },\n})\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from 'react'\nimport { Alert } from 'react-native'\n\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport { OrderDetailsCore, OrderDetailsCoreHandle, SessionHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validateEmail, validateEmpty } from '../../helpers/Validators'\nimport ResaleTicketsView from './ResaleTicketsView'\nimport { IResaleTicketsProps, IResaleToWhomData, ResaleToWhomFieldIdEnum } from './types'\n\nconst sellToWhomInitialData: IResaleToWhomData = {\n toWhom: undefined,\n someoneData: {\n firstName: '',\n lastName: '',\n email: '',\n emailConfirm: '',\n },\n isTermsAgreed: false,\n}\n\nconst ResaleTickets = forwardRef<SessionHandleType, IResaleTicketsProps>(\n (\n {\n styles,\n ticket,\n onResaleTicketsSuccess,\n onResaleTicketsError,\n config = {\n areActivityIndicatorsEnabled: true,\n areAlertsEnabled: true,\n },\n isTicketTypeActive,\n },\n ref\n ) => {\n //#region refs\n const orderDetailsCoreRef = useRef<OrderDetailsCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n //#endregion\n\n //#region state\n const [isLoading, setIsLoading] = useState(false)\n const [sellToWhomData, setSellToWhomData] =\n useState<IResaleToWhomData>(sellToWhomInitialData)\n\n const {\n someoneData: { firstName, lastName, email, emailConfirm },\n isTermsAgreed,\n toWhom,\n } = sellToWhomData\n\n const firstNameError = useDebounced(firstName, validateEmpty)\n const lastNameError = useDebounced(lastName, validateEmpty)\n const emailError = useDebounced(email, () => validateEmail(email, emailConfirm))\n const emailConfirmError = useDebounced(emailConfirm, () =>\n validateEmail(emailConfirm, email)\n )\n //#endregion\n\n const showAlert = (message: string) => {\n if (config?.areAlertsEnabled) {\n Alert.alert('', message)\n }\n }\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {},\n }))\n //#endregion Imperative Handler\n\n //#region handlers\n const handleOnPressSellTickets = async () => {\n if (!orderDetailsCoreRef.current) {\n showAlert('ResaleTicketsCoreRef is not initialized')\n }\n\n setIsLoading(true)\n const formData = new FormData()\n formData.append('to', toWhom)\n formData.append('first_name', firstName)\n formData.append('last_name', lastName)\n formData.append('email', email)\n formData.append('confirm_email', emailConfirm)\n formData.append('confirm', String(isTermsAgreed))\n\n const { resaleTicketData, resaleTicketError } =\n await orderDetailsCoreRef.current!.resaleTicket(formData, ticket.hash)\n\n setIsLoading(false)\n\n if (resaleTicketError || !resaleTicketData) {\n onResaleTicketsError?.(resaleTicketError!)\n return showAlert(resaleTicketError!.message)\n }\n\n showAlert(resaleTicketData.message)\n\n return onResaleTicketsSuccess(resaleTicketData, {\n ...ticket,\n isOnSale: true,\n isSellable: false,\n })\n }\n\n const handleSellToWhomDataChange = (\n id: ResaleToWhomFieldIdEnum,\n value?: string | number\n ) => {\n switch (id) {\n case ResaleToWhomFieldIdEnum.terms:\n setSellToWhomData({\n ...sellToWhomData,\n isTermsAgreed: !isTermsAgreed,\n })\n break\n case ResaleToWhomFieldIdEnum.radioIndex:\n setSellToWhomData({\n ...sellToWhomData,\n toWhom: value === 0 ? 'friend' : 'anyone',\n })\n break\n case ResaleToWhomFieldIdEnum.firstName:\n setSellToWhomData({\n ...sellToWhomData,\n someoneData: {\n ...sellToWhomData.someoneData,\n firstName: value as string,\n },\n })\n break\n case ResaleToWhomFieldIdEnum.lastName:\n setSellToWhomData({\n ...sellToWhomData,\n someoneData: {\n ...sellToWhomData.someoneData,\n lastName: value as string,\n },\n })\n break\n case ResaleToWhomFieldIdEnum.email:\n setSellToWhomData({\n ...sellToWhomData,\n someoneData: {\n ...sellToWhomData.someoneData,\n email: value as string,\n },\n })\n break\n case ResaleToWhomFieldIdEnum.emailConfirm:\n setSellToWhomData({\n ...sellToWhomData,\n someoneData: {\n ...sellToWhomData.someoneData,\n emailConfirm: value as string,\n },\n })\n break\n }\n }\n //#endregion\n\n //#region data validation\n const isDataValid = () => {\n if (toWhom === 'anyone' && isTermsAgreed) {\n return true\n }\n if (\n toWhom === 'friend' &&\n firstName &&\n lastName &&\n email &&\n emailConfirm &&\n !emailConfirmError &&\n !emailError &&\n !firstNameError &&\n !lastNameError &&\n isTermsAgreed\n ) {\n return true\n }\n\n return false\n }\n //#endregion\n\n //#region render\n return (\n <OrderDetailsCore ref={orderDetailsCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <ResaleTicketsView\n styles={styles}\n isLoading={isLoading}\n resaleToWhomData={sellToWhomData}\n someoneDataErrors={{\n firstNameError: firstNameError,\n lastNameError: lastNameError,\n emailError: emailError,\n emailConfirmError: emailConfirmError,\n }}\n isDataValid={isDataValid()}\n onResaleToWhomDataChanged={handleSellToWhomDataChange}\n onPressResaleTickets={handleOnPressSellTickets}\n ticket={ticket}\n isTicketsTypeActive={isTicketTypeActive}\n />\n </SessionHandle>\n </OrderDetailsCore>\n )\n //#endregion\n }\n)\n\nexport default ResaleTickets\n","import React, { FC, useEffect, useMemo, useRef } from 'react'\nimport { Text, View } from 'react-native'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport { TextField } from '../../packages/rn-material-ui-textfield'\n\nimport { Button, Checkbox, Input, RadioButton } from '../../components'\nimport {\n IResaleTicketsViewProps,\n IResaleTicketsViewTexts,\n ResaleToWhomFieldIdEnum,\n} from './types'\n\nconst ResaleTicketsView: FC<IResaleTicketsViewProps> = ({\n styles,\n isDataValid,\n resaleToWhomData,\n onResaleToWhomDataChanged,\n someoneDataErrors,\n onPressResaleTickets,\n ticket,\n isLoading,\n texts,\n isTicketsTypeActive,\n}) => {\n //#region Texts\n const txt: IResaleTicketsViewTexts = {\n title: texts?.title || 'Resale tickets',\n orderDetails: {\n title: texts?.orderDetails?.title || 'Order details',\n eventName: texts?.orderDetails?.eventName || 'Event',\n orderedBy: texts?.orderDetails?.orderedBy || 'Ordered By',\n orderId: texts?.orderDetails?.orderId || 'Order ID',\n },\n sellToWhom: {\n title: texts?.sellToWhom?.title || 'Sell to whom?',\n anyone:\n texts?.sellToWhom?.anyone ||\n 'I will sell my ticket to anyone who wants to buy it',\n friend: texts?.sellToWhom?.friend || 'I will sell my ticket to someone I know',\n },\n terms: {\n title: texts?.terms?.title || 'Terms of resale',\n paragraph1:\n texts?.terms?.paragraph1 ||\n '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. \\n',\n paragraph2_1:\n texts?.terms?.paragraph2_1 ||\n 'I also understand that, if no one chooses to buy it, it remains my property, is valid for entry to',\n paragraph2_2: texts?.terms?.paragraph2_2 || 'and I will not receive any refund.',\n paragraph3_1:\n texts?.terms?.paragraph3_1 ||\n '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',\n paragraph3_2:\n texts?.terms?.paragraph3_2 ||\n ', and that any existing refunds due to me for referring sales for this event are no longer valid.',\n },\n agree: texts?.agree || 'I agree',\n friendForm: {\n firstName: texts?.friendForm?.firstName || 'First Name',\n lastName: texts?.friendForm?.lastName || 'Last Name',\n email: texts?.friendForm?.email || 'Email Address',\n emailConfirm: texts?.friendForm?.emailConfirm || 'Confirm Email Address',\n },\n resaleTicketsButton: texts?.resaleTicketsButton || 'Resale Ticket',\n }\n //#endregion\n\n //#region Refs\n const firstNameRef = useRef<TextField>(null)\n const lastNameRef = useRef(null)\n const emailRef = useRef(null)\n const confirmEmailRef = useRef(null)\n //#endregion\n\n //#region Styles\n const ticketBuyerFormStyles = styles?.ticketBuyerForm\n const ticketOrderDetailsStyles = styles?.ticketOrderDetails\n const termsStyles = styles?.terms\n const buttonStyles = !isDataValid\n ? styles?.resaleTicketsButtonDisabled\n : styles?.resaleTicketsButton\n //#endregion\n\n const {\n someoneData: { firstName, lastName, email, emailConfirm },\n toWhom,\n isTermsAgreed,\n } = resaleToWhomData\n\n const { firstNameError, lastNameError, emailError, emailConfirmError } =\n someoneDataErrors\n\n const Terms = useMemo(\n () => (\n <View style={termsStyles?.rootContainer}>\n <Text style={termsStyles?.title}>{txt.terms?.title}</Text>\n <Text style={termsStyles?.item}>{txt.terms?.paragraph1}</Text>\n\n <Text style={termsStyles?.item}>\n {txt.terms?.paragraph2_1}{' '}\n <Text style={termsStyles?.itemBold}>{ticket.eventName}</Text>{' '}\n {txt.terms?.paragraph2_2}\n {'\\n'}\n </Text>\n <Text style={termsStyles?.item}>\n {txt.terms?.paragraph3_1}{' '}\n <Text style={termsStyles?.itemBold}>\n {ticket.currency} {ticket.resaleFeeAmount}\n </Text>\n {txt.terms?.paragraph3_2}\n </Text>\n\n <Checkbox\n onPress={() => onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.terms)}\n isActive={isTermsAgreed}\n styles={styles?.termsCheckbox}\n text={txt.agree}\n />\n </View>\n ),\n [\n isTermsAgreed,\n onResaleToWhomDataChanged,\n styles?.termsCheckbox,\n termsStyles?.item,\n termsStyles?.itemBold,\n termsStyles?.rootContainer,\n termsStyles?.title,\n ticket.currency,\n ticket.eventName,\n ticket.resaleFeeAmount,\n txt.agree,\n txt.terms?.paragraph1,\n txt.terms?.paragraph2_1,\n txt.terms?.paragraph2_2,\n txt.terms?.paragraph3_1,\n txt.terms?.paragraph3_2,\n txt.terms?.title,\n ]\n )\n\n const OrderDetails = useMemo(\n () => (\n <View style={ticketOrderDetailsStyles?.rootContainer}>\n <Text style={ticketOrderDetailsStyles?.title}>{txt.orderDetails?.title}</Text>\n <Text style={ticketOrderDetailsStyles?.label}>{txt.orderDetails?.eventName}</Text>\n <Text style={ticketOrderDetailsStyles?.value}>{ticket.eventName}</Text>\n <Text style={ticketOrderDetailsStyles?.label}>{txt.orderDetails?.orderedBy}</Text>\n <Text style={ticketOrderDetailsStyles?.value}>{ticket.holderName}</Text>\n <Text style={ticketOrderDetailsStyles?.label}>{txt.orderDetails?.orderId}</Text>\n <Text style={ticketOrderDetailsStyles?.value}>{ticket.hash}</Text>\n </View>\n ),\n [\n ticket.eventName,\n ticket.hash,\n ticket.holderName,\n ticketOrderDetailsStyles?.label,\n ticketOrderDetailsStyles?.rootContainer,\n ticketOrderDetailsStyles?.title,\n ticketOrderDetailsStyles?.value,\n txt.orderDetails?.eventName,\n txt.orderDetails?.orderId,\n txt.orderDetails?.orderedBy,\n txt.orderDetails?.title,\n ]\n )\n\n const TicketBuyerForm = useMemo(\n () => (\n <View style={ticketBuyerFormStyles?.rootContainer}>\n <Text style={ticketBuyerFormStyles?.title}>{txt.sellToWhom?.title}</Text>\n {isTicketsTypeActive && (\n <RadioButton\n styles={ticketBuyerFormStyles?.radioButtons}\n index={0}\n text={txt.sellToWhom!.friend!}\n value={toWhom === 'friend'}\n onValueChange={() =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.radioIndex, 0)\n }\n />\n )}\n {toWhom === 'friend' && (\n <View style={ticketBuyerFormStyles?.formContainer}>\n <Input\n reference={firstNameRef}\n label={txt.friendForm!.firstName!}\n value={firstName}\n onChangeText={(text) =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.firstName, text)\n }\n styles={ticketBuyerFormStyles?.inputs}\n error={firstNameError}\n blurOnSubmit={false}\n //@ts-ignore\n onSubmitEditing={lastNameRef.current?.focus}\n returnKeyType=\"next\"\n />\n <Input\n reference={lastNameRef}\n label={txt.friendForm!.lastName!}\n value={lastName}\n onChangeText={(text) =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.lastName, text)\n }\n styles={ticketBuyerFormStyles?.inputs}\n error={lastNameError}\n blurOnSubmit={false}\n onSubmitEditing={() => {\n if (emailRef.current) {\n //@ts-ignore\n emailRef.current.focus()\n }\n }}\n returnKeyType=\"next\"\n />\n <Input\n reference={emailRef}\n label={txt.friendForm!.email!}\n autoCapitalize=\"none\"\n keyboardType=\"email-address\"\n value={email}\n onChangeText={(text) =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.email, text)\n }\n styles={ticketBuyerFormStyles?.inputs}\n error={emailError}\n blurOnSubmit={false}\n onSubmitEditing={() => {\n if (confirmEmailRef.current) {\n //@ts-ignore\n confirmEmailRef.current.focus()\n }\n }}\n returnKeyType=\"next\"\n />\n <Input\n reference={confirmEmailRef}\n label={txt.friendForm!.emailConfirm!}\n autoCapitalize=\"none\"\n keyboardType=\"email-address\"\n value={emailConfirm}\n onChangeText={(text) =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.emailConfirm, text)\n }\n styles={ticketBuyerFormStyles?.inputs}\n error={emailConfirmError}\n blurOnSubmit={true}\n returnKeyType=\"go\"\n />\n </View>\n )}\n {isTicketsTypeActive && (\n <RadioButton\n styles={ticketBuyerFormStyles?.radioButtons}\n index={1}\n text={txt.sellToWhom!.anyone!}\n value={toWhom === 'anyone'}\n onValueChange={() =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.radioIndex, 1)\n }\n />\n )}\n </View>\n ),\n [\n email,\n emailConfirm,\n emailConfirmError,\n emailError,\n firstName,\n firstNameError,\n isTicketsTypeActive,\n lastName,\n lastNameError,\n onResaleToWhomDataChanged,\n ticketBuyerFormStyles?.formContainer,\n ticketBuyerFormStyles?.inputs,\n ticketBuyerFormStyles?.radioButtons,\n ticketBuyerFormStyles?.rootContainer,\n ticketBuyerFormStyles?.title,\n toWhom,\n txt.friendForm,\n txt.sellToWhom,\n ]\n )\n\n useEffect(() => {\n if (!isTicketsTypeActive) {\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.radioIndex, 0)\n }\n }, [])\n\n return (\n <KeyboardAwareScrollView extraScrollHeight={32}>\n <View style={styles?.rootContainer}>\n <Text style={styles?.title}>{txt.title}</Text>\n {OrderDetails}\n {TicketBuyerForm}\n {Terms}\n <Button\n styles={buttonStyles}\n text={txt.resaleTicketsButton!}\n onPress={onPressResaleTickets}\n isDisabled={!isDataValid}\n isLoading={isLoading}\n />\n </View>\n </KeyboardAwareScrollView>\n )\n}\n\nexport default ResaleTicketsView\n","import React, { FC, useRef, useState } from 'react'\n\nimport { ResetPasswordCore, ResetPasswordCoreHandle } from '../../core'\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validatePasswords } from '../../helpers/Validators'\nimport ResetPasswordView from './ResetPasswordView'\nimport { IResetPasswordProps } from './types'\n\nconst ResetPassword: FC<IResetPasswordProps> = ({\n token,\n styles,\n texts,\n onResetPasswordError,\n onResetPasswordSuccess,\n onPressCancelButton,\n onPressResetButton,\n}) => {\n //#region State\n const [newPassword, setNewPassword] = useState('')\n const [confirmNewPassword, setConfirmNewPassword] = useState('')\n const [apiError, setApiError] = useState('')\n const [apiSuccess, setApiSuccess] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n //#endregion State\n\n const resetPasswordCoreRef = useRef<ResetPasswordCoreHandle>(null)\n\n const newPasswordError = useDebounced(newPassword, () =>\n validatePasswords(newPassword, confirmNewPassword)\n )\n\n const confirmNewPasswordError = useDebounced(confirmNewPassword, () =>\n validatePasswords(newPassword, confirmNewPassword)\n )\n\n const isDataValid = (): boolean => {\n if (!newPassword) {\n return false\n }\n\n if (!confirmNewPassword) {\n return false\n }\n\n if (newPassword !== confirmNewPassword) {\n return false\n }\n\n return true\n }\n\n //#region Handlers\n const handleOnPressResetPasswordButton = async () => {\n if (!resetPasswordCoreRef.current) {\n return\n }\n\n onPressResetButton?.()\n\n if (!isDataValid()) {\n return\n }\n\n setIsLoading(true)\n const response = await resetPasswordCoreRef.current.postResetPassword({\n token: token,\n password: newPassword,\n password_confirmation: confirmNewPassword,\n })\n setIsLoading(false)\n\n if (response.error) {\n setApiError(response.error.message)\n return onResetPasswordError?.(response.error)\n }\n\n setApiSuccess(response.data!.message)\n return onResetPasswordSuccess?.(response.data!)\n }\n\n const handleOnPressCancelButton = () => {\n onPressCancelButton?.()\n }\n //#endregion Handlers\n\n //#region Return\n return (\n <ResetPasswordCore ref={resetPasswordCoreRef}>\n <ResetPasswordView\n onChangePassword={setNewPassword}\n onChangePasswordConfirm={setConfirmNewPassword}\n password={newPassword}\n passwordConfirm={confirmNewPassword}\n onPressResetButton={handleOnPressResetPasswordButton}\n onPressCancelButton={handleOnPressCancelButton}\n passwordError={newPasswordError}\n passwordConfirmError={confirmNewPasswordError}\n styles={styles}\n texts={texts}\n isDataValid={isDataValid()}\n apiError={apiError}\n isLoading={isLoading}\n apiSuccess={apiSuccess}\n />\n </ResetPasswordCore>\n )\n //#endregion Return\n}\n\nexport default ResetPassword\n","import React, { FC } from 'react'\nimport { Keyboard, Pressable, Text, View } from 'react-native'\n\nimport { Button, Input } from '../../components'\nimport s from './styles'\nimport { IResetPasswordViewProps } from './types'\n\nconst ResetPasswordView: FC<IResetPasswordViewProps> = ({\n styles,\n texts,\n isLoading,\n onPressCancelButton,\n onPressResetButton,\n apiError,\n password,\n passwordConfirm,\n onChangePassword,\n onChangePasswordConfirm,\n passwordConfirmError,\n passwordError,\n isDataValid,\n apiSuccess,\n}) => (\n <Pressable style={s.pressable} onPress={Keyboard.dismiss}>\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <View style={[s.contentContainer, styles?.contentContainer]}>\n <Text style={[s.dialogTitle, styles?.title]}>\n {texts?.title || 'Enter your new password'}\n </Text>\n\n <Input\n onChangeText={onChangePassword}\n styles={styles?.input}\n label={texts?.newPasswordLabel || 'New password'}\n error={passwordError}\n value={password}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n isShowPasswordButtonVisible={true}\n />\n\n <Input\n onChangeText={onChangePasswordConfirm}\n styles={styles?.input}\n label={texts?.confirmNewPasswordLabel || 'Confirm new password'}\n error={passwordConfirmError}\n value={passwordConfirm}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n isShowPasswordButtonVisible={true}\n />\n\n {!!apiError && <Text style={[s.apiError, styles?.apiError]}>{apiError}</Text>}\n\n {apiSuccess ? (\n <Text style={styles?.apiSuccess}>{apiSuccess}</Text>\n ) : (\n <Button\n text={texts?.resetButton || 'RESET PASSWORD'}\n onPress={onPressResetButton}\n isLoading={isLoading}\n isDisabled={!isDataValid || isLoading}\n styles={{\n container: [s.resetButtonContainer, styles?.resetButton?.container],\n ...styles?.resetButton,\n }}\n />\n )}\n\n <Button\n text={texts?.cancelButton || 'CANCEL'}\n onPress={onPressCancelButton}\n isDisabled={isLoading}\n styles={styles?.cancelButton}\n />\n </View>\n </View>\n </Pressable>\n)\n\nexport default ResetPasswordView\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n pressable: {\n flex: 1,\n },\n rootContainer: {\n flex: 1,\n alignItems: 'center',\n paddingTop: 32,\n },\n contentContainer: {\n paddingVertical: 32,\n width: '80%',\n backgroundColor: R.colors.white,\n borderRadius: 5,\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n dialogTitle: {\n color: R.colors.black,\n fontSize: 18,\n fontWeight: '800',\n marginBottom: 16,\n },\n resetButtonContainer: {\n marginBottom: 16,\n },\n apiError: {\n color: R.colors.danger,\n marginBottom: 16,\n },\n})\n","import _get from 'lodash/get'\nimport _isEmpty from 'lodash/isEmpty'\nimport _some from 'lodash/some'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert } from 'react-native'\n\nimport {\n IEventResponse,\n IFetchAccessTokenResponse,\n IPromoCodeResponse,\n} from '../../api/types'\nimport { SessionHandle, TicketsCore, TicketsCoreHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport {\n IBookTicketsOptions,\n IGetTicketsPayload,\n IGroupedTickets,\n} from '../../core/TicketsCore/TicketsCoreTypes'\nimport {\n IAddToCartResponse,\n IEvent,\n IOnFetchTicketsSuccess,\n ISelectedTicket,\n ITicket,\n} from '../../types'\nimport TicketsView from './TicketsView'\nimport { IPasswordProtectedEventData, ITicketsProps } from './types'\nimport { Logger } from '../../utils/Logger'\n\nconst Tickets = forwardRef<SessionHandleType, ITicketsProps>(\n (\n {\n onAddToCartSuccess,\n onAddToCartError,\n onFetchTicketsError,\n styles,\n texts,\n isAccessCodeEnabled = false,\n isPromoEnabled = true,\n onPressMyOrders,\n onPressLogout,\n onFetchTicketsSuccess,\n onFetchEventError,\n onLoadingChange,\n onFetchEventSuccess,\n onAddToWaitingListError,\n onAddToWaitingListSuccess,\n promoCodeCloseIcon,\n isCheckingCurrentSession,\n config = {\n areTicketsGrouped: true,\n areActivityIndicatorsEnabled: true,\n areAlertsEnabled: true,\n areTicketsSortedBySoldOut: true,\n },\n referrerId,\n debugMode,\n },\n ref\n ) => {\n const logger = new Logger({ level: debugMode ? 'debug' : 'error' })\n const [isUserLogged, setIsUserLogged] = useState(false)\n const [isGettingTickets, setIsGettingTickets] = useState(false)\n const [isGettingEvent, setIsGettingEvent] = useState(false)\n const [event, setEvent] = useState<IEvent>()\n const [isBooking, setIsBooking] = useState(false)\n const [areTicketGroupsShown, setAreTicketGroupsShown] = useState(false)\n const [tickets, setTickets] = useState<ITicket[]>([])\n const [groupedTickets, setGroupedTickets] = useState<IGroupedTickets[]>([])\n const [isWaitingListVisible, setIsWaitingListVisible] = useState(false)\n const [isAccessCode, setIsAccessCode] = useState(false)\n const [selectedTicket, setSelectedTicket] = useState<ISelectedTicket>()\n const [promoCodeResponse, setPromoCodeResponse] = useState<\n IPromoCodeResponse | undefined\n >(undefined)\n const [isFirstCall, setIsFirstCall] = useState(true)\n const [passwordProtectedEventData, setPasswordProtectedEventData] = useState<\n IPasswordProtectedEventData | undefined\n >()\n\n //#region Refs\n const eventErrorCodeRef = useRef(0)\n const ticketsCoreRef = useRef<TicketsCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n const isApiErrorRef = useRef<boolean>(false)\n //#endregion Refs\n\n const showAlert = (message: string) => {\n if (config.areAlertsEnabled) {\n Alert.alert('', message)\n }\n }\n\n const isTicketOnSale = (ticketsForCheck: ITicket[]) =>\n _some(\n ticketsForCheck,\n (item: ITicket) => item.salesStarted && !item.salesEnded && !item.soldOut\n )\n\n const areTicketsOnSale = (): boolean => {\n if (event?.salesEnded) {\n return false\n }\n\n if (\n config.areTicketsGrouped &&\n areTicketGroupsShown &&\n groupedTickets.length === 0\n ) {\n return false\n }\n\n if (!config.areTicketsGrouped && tickets.length === 0) {\n return false\n }\n\n if (config.areTicketsGrouped) {\n return _some(groupedTickets, (gTicket) => isTicketOnSale(gTicket.data))\n } else {\n return isTicketOnSale(tickets)\n }\n }\n\n //#region Core Api calls\n const retrieveStoredAccessToken = async () => {\n if (!ticketsCoreRef.current) {\n return { eventError: { message: 'Ticket core is not initialized' } }\n }\n\n setIsUserLogged(await ticketsCoreRef.current.getIsUserLoggedIn())\n }\n\n const getTicketsCore = async (promoCode?: string): Promise<IGetTicketsPayload> => {\n if (!ticketsCoreRef.current) {\n return { error: { message: 'Ticket core is not initialized' } }\n }\n\n return await ticketsCoreRef.current.getTickets({\n referredId: referrerId,\n promoCode,\n areTicketsSortedBySoldOut: config.areTicketsSortedBySoldOut,\n areTicketsGrouped: config.areTicketsGrouped,\n })\n }\n\n const unlockPasswordProtectedEventCore = async (\n password: string\n ): Promise<IEventResponse> => {\n if (!ticketsCoreRef.current) {\n return { eventError: { message: 'Ticket core is not initialized' } }\n }\n\n return await ticketsCoreRef.current.unlockPasswordProtectedEvent(password)\n }\n\n const getEventCore = async (): Promise<IEventResponse> => {\n if (!ticketsCoreRef.current) {\n return { eventError: { message: 'Ticket core is not initialized' } }\n }\n\n return await ticketsCoreRef.current.getEvent()\n }\n\n const addToCartCore = async (\n data: IBookTicketsOptions\n ): Promise<IAddToCartResponse> => {\n if (!ticketsCoreRef.current) {\n return { error: { message: 'Ticket core is not initialized' } }\n }\n\n return await ticketsCoreRef.current.addToCart(data)\n }\n //#endregion Core Api calls\n\n //#region Fetch Initial Data\n const fetchInitialData = async () => {\n try {\n logger.info('Fetching initial data')\n await retrieveStoredAccessToken()\n logger.info('retrieveStoredAccessToken')\n await getEventData()\n logger.info('getEventData success')\n } catch (error) {\n logger.error('Error while fetching initial data', error)\n }\n }\n //#endregion Fetch Initial Data\n\n //#region Api Calls\n const getTickets = async (promoCode: string = '') => {\n setIsGettingTickets(true)\n isApiErrorRef.current = false\n const {\n error,\n tickets: responseTickets,\n promoCodeResult,\n isInWaitingList,\n isAccessCodeRequired,\n areGroupsShown,\n } = await getTicketsCore(promoCode)\n logger.info('getTicketsCore response', {\n error,\n tickets: responseTickets,\n promoCodeResult,\n isInWaitingList,\n isAccessCodeRequired,\n areGroupsShown,\n })\n setIsGettingTickets(false)\n\n if (error) {\n onFetchTicketsError?.(error)\n isApiErrorRef.current = true\n return showAlert('Error while getting tickets, please try again')\n }\n\n setIsWaitingListVisible(!!isInWaitingList)\n setIsAccessCode(!!isAccessCodeRequired)\n setAreTicketGroupsShown(areGroupsShown || false)\n\n if (responseTickets && !_isEmpty(responseTickets)) {\n if (config.areTicketsGrouped) {\n if (areGroupsShown) {\n setGroupedTickets(responseTickets as IGroupedTickets[])\n } else {\n setTickets(responseTickets as ITicket[])\n }\n } else {\n setTickets(responseTickets as ITicket[])\n }\n\n if (isFirstCall && promoCodeResult?.isValid) {\n setPromoCodeResponse(promoCodeResult)\n } else if (!isFirstCall) {\n setPromoCodeResponse(promoCodeResult)\n }\n\n const onFetchTicketsData: IOnFetchTicketsSuccess = {\n promoCodeResponse: {\n success: true,\n message: promoCodeResponse?.message,\n },\n tickets: responseTickets,\n isInWaitingList,\n isAccessCodeRequired,\n areTicketsGroupsShown: areGroupsShown,\n }\n\n onFetchTicketsSuccess?.(onFetchTicketsData)\n\n if (\n !isFirstCall &&\n (!promoCodeResult?.isValid || promoCodeResult.isValid === 0)\n ) {\n onFetchTicketsSuccess?.({\n ...onFetchTicketsData,\n promoCodeResponse: {\n success: false,\n message: promoCodeResult?.message,\n },\n })\n }\n }\n\n setIsFirstCall(false)\n }\n\n const getEventData = async () => {\n logger.info('Fetching event data: API call')\n if (isApiErrorRef.current === true) {\n logger.info('Fetching event data: API call: Skip, error already occurred')\n return\n }\n\n setIsGettingEvent(true)\n const { eventError, eventData } = await getEventCore()\n logger.info('Fetching event data: API call: response', {\n eventError,\n eventData,\n })\n setIsGettingEvent(false)\n\n if (eventError) {\n logger.info('Fetching event data: API call: Error', eventError)\n eventErrorCodeRef.current = eventError.code || 400\n if (eventError.code === 401) {\n logger.info('Fetching event data: API call: Error: 401')\n setPasswordProtectedEventData({\n isPasswordProtected: true,\n message: eventError.message,\n })\n } else {\n logger.info('Fetching event data: API call: Error: ' + eventError.message)\n showAlert(eventError.message)\n }\n return onFetchEventError?.(\n eventError || { message: 'There was an error while fetching event' }\n )\n }\n\n eventErrorCodeRef.current = 0\n\n if (!eventData) {\n logger.info('Fetching event data: API call: Error: No event data')\n return onFetchEventError?.({\n message: 'There was an error while fetching event',\n })\n }\n\n try {\n logger.info('Fetching tickets: getTickets()')\n await getTickets()\n } catch (error) {\n logger.info('Fetching tickets: getTickets() Error: ' + error)\n showAlert(error)\n }\n\n onFetchEventSuccess?.(eventData)\n setEvent(eventData)\n }\n\n const performBookTickets = async () => {\n if (!selectedTicket || !selectedTicket.selectedOption) {\n onAddToCartError?.({ message: 'Please select a ticket' })\n return showAlert('Please select a ticket')\n }\n\n const ticketQuantity =\n typeof selectedTicket.selectedOption.value === 'string'\n ? parseInt(selectedTicket.selectedOption.value, 10)\n : selectedTicket.selectedOption.value\n\n const ticketsOptions: IBookTicketsOptions = {\n quantity: ticketQuantity,\n optionName: _get(selectedTicket, 'optionName'),\n ticketId: _get(selectedTicket, 'id'),\n price: selectedTicket.price,\n }\n\n setIsBooking(true)\n const { data: result, error: addToCartError } = await addToCartCore(ticketsOptions)\n setIsBooking(false)\n\n if (result) {\n return onAddToCartSuccess?.(result)\n }\n\n if (addToCartError) {\n showAlert(addToCartError.message || 'Error while adding tickets to cart')\n return onAddToCartError?.(addToCartError)\n }\n }\n //#endregion Api Calls\n\n const onLoadingChangeCallback = useCallback(\n (loading: boolean) => {\n if (onLoadingChange) {\n onLoadingChange(loading)\n }\n },\n [onLoadingChange]\n )\n\n //#region UseEffects\n useEffect(() => {\n if (isGettingEvent || isGettingTickets || isBooking) {\n onLoadingChangeCallback(true)\n } else {\n onLoadingChangeCallback(false)\n }\n }, [isGettingTickets, isGettingEvent, isBooking, onLoadingChangeCallback])\n\n useEffect(() => {\n if (!isCheckingCurrentSession && isFirstCall) {\n fetchInitialData()\n }\n }, [isCheckingCurrentSession])\n //#endregion UseEffects\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n if (!accessTokenError && accessTokenData?.accessToken) {\n await fetchInitialData()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n await fetchInitialData()\n },\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleOnPressGetTickets = () => {\n if (eventErrorCodeRef.current !== 0) {\n showAlert('Event not found')\n return onAddToCartError?.({\n code: eventErrorCodeRef.current,\n message: 'Event not found',\n })\n }\n performBookTickets()\n }\n\n const handleOnPressApplyPromoCode = async (code: string) => {\n await getTickets(code)\n }\n\n const handleOnSelectTicketOption = (ticket: ISelectedTicket) => {\n setSelectedTicket(ticket)\n }\n\n const handleOnLogout = async () => {\n if (!ticketsCoreRef.current) {\n return { error: { message: 'Ticket core is not initialized' } }\n }\n\n await ticketsCoreRef.current.logout()\n setIsUserLogged(false)\n\n await getEventData()\n onPressLogout?.()\n }\n\n const handleOnLoadingChange = (loading: boolean) => {\n onLoadingChangeCallback(loading)\n }\n\n const handleOnSubmitEventPassword = async (password: string) => {\n setPasswordProtectedEventData({\n ...passwordProtectedEventData,\n isLoading: true,\n })\n\n const { eventData, eventError } = await unlockPasswordProtectedEventCore(password)\n\n if (eventError) {\n return setPasswordProtectedEventData({\n ...passwordProtectedEventData,\n isLoading: false,\n apiError: eventError.message,\n })\n }\n\n setPasswordProtectedEventData({\n ...passwordProtectedEventData,\n isLoading: false,\n apiError: '',\n isPasswordProtected: false,\n message: '',\n })\n eventErrorCodeRef.current = 0\n\n onFetchEventSuccess?.(eventData!)\n setEvent(eventData)\n getTickets()\n }\n //#endregion\n\n //#region RENDER\n return (\n <TicketsCore ref={ticketsCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <TicketsView\n isGettingTickets={isGettingTickets}\n tickets={tickets}\n groupedTickets={groupedTickets}\n onPressGetTickets={handleOnPressGetTickets}\n onPressApplyPromoCode={handleOnPressApplyPromoCode}\n promoCodeValidationMessage={promoCodeResponse?.message}\n isPromoCodeValid={promoCodeResponse?.isValid}\n onSelectTicketOption={handleOnSelectTicketOption}\n selectedTicket={selectedTicket}\n isBookingTickets={isBooking}\n styles={styles}\n isGettingEvent={isGettingEvent}\n texts={texts}\n event={event}\n isWaitingListVisible={isWaitingListVisible}\n isGetTicketsButtonVisible={areTicketsOnSale()}\n isAccessCodeEnabled={isAccessCodeEnabled || isAccessCode}\n isPromoEnabled={isPromoEnabled}\n isUserLogged={isUserLogged}\n onPressMyOrders={onPressMyOrders}\n onPressLogout={handleOnLogout}\n areLoadingIndicatorsEnabled={config.areActivityIndicatorsEnabled}\n onAddToWaitingListError={onAddToWaitingListError}\n onAddToWaitingListSuccess={onAddToWaitingListSuccess}\n onLoadingChange={handleOnLoadingChange}\n promoCodeCloseIcon={promoCodeCloseIcon}\n areTicketsGroupsShown={areTicketGroupsShown}\n passwordProtectedEventData={passwordProtectedEventData}\n onPressSubmitEventPassword={handleOnSubmitEventPassword}\n isCheckingCurrentSession={isCheckingCurrentSession}\n />\n </SessionHandle>\n </TicketsCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default Tickets\n","import React from 'react'\nimport { FlatList, SectionList, Text, View } from 'react-native'\n\nimport {\n EnterPassword,\n Loading,\n LoggedIn,\n PromoCode,\n WaitingList,\n} from '../../components'\nimport Button from '../../components/button/Button'\nimport Separator from '../../components/separator/Separator'\nimport TicketGroupListHeader from './components/TicketGroupListHeader'\nimport CartListItem from './components/TicketListItem'\nimport s from './styles'\nimport { ITicketsViewProps } from './types'\n\nconst TicketsView = ({\n isGettingTickets,\n tickets,\n groupedTickets,\n styles,\n onPressGetTickets,\n onPressApplyPromoCode,\n promoCodeValidationMessage,\n isPromoCodeValid,\n onSelectTicketOption,\n selectedTicket,\n isBookingTickets,\n texts,\n isGettingEvent,\n event,\n isWaitingListVisible,\n isGetTicketsButtonVisible,\n isAccessCodeEnabled,\n isUserLogged,\n onPressMyOrders,\n onPressLogout,\n areLoadingIndicatorsEnabled,\n onAddToWaitingListError,\n onAddToWaitingListSuccess,\n onLoadingChange,\n areAlertsEnabled,\n promoCodeCloseIcon,\n areTicketsGroupsShown,\n passwordProtectedEventData,\n onPressSubmitEventPassword,\n}: ITicketsViewProps) => {\n const isButtonDisabled = !selectedTicket || selectedTicket.selectedOption?.value === 0\n const buttonText = texts?.getTicketsButton\n ? texts.getTicketsButton\n : isButtonDisabled\n ? 'Get tickets'\n : `Get ${selectedTicket?.selectedOption?.value} tickets`\n const title = texts?.title ? texts.title : 'GET TICKETS'\n\n return passwordProtectedEventData?.isPasswordProtected ? (\n <EnterPassword\n onSubmit={onPressSubmitEventPassword}\n styles={styles?.enterPassword}\n texts={texts?.enterPassword}\n isLoading={passwordProtectedEventData?.isLoading}\n apiError={passwordProtectedEventData?.apiError}\n />\n ) : (\n <View style={[s.container, styles?.rootContainer]}>\n <View style={[s.container, styles?.container]}>\n <View style={s.header}>\n <Text style={[s.headerText, styles?.title]}>{title}</Text>\n </View>\n <PromoCode\n onPressApply={onPressApplyPromoCode}\n promoCodeValidationMessage={promoCodeValidationMessage}\n isPromoCodeValid={isPromoCodeValid}\n isAccessCodeEnabled={isAccessCodeEnabled}\n styles={styles?.promoCode}\n texts={texts?.promoCode}\n closeButtonIcon={promoCodeCloseIcon}\n />\n {areTicketsGroupsShown ? (\n <SectionList\n sections={groupedTickets}\n style={styles?.ticketList?.listContainer}\n renderItem={({ item, index }) => (\n <CartListItem\n onSelectTicketItem={onSelectTicketOption}\n ticket={item}\n ticketNumber={index}\n selectedTicket={selectedTicket}\n styles={styles?.ticketList?.item}\n texts={texts?.listItem}\n {...item}\n />\n )}\n renderSectionHeader={(data) => (\n <TicketGroupListHeader\n text={data.section.title}\n styles={{\n container: styles?.ticketList?.sectionHeader?.container,\n text: styles?.ticketList?.sectionHeader?.title,\n }}\n />\n )}\n />\n ) : (\n <FlatList\n data={tickets}\n style={styles?.ticketList?.listContainer}\n keyExtractor={(item) => `ticket.${item.id}`}\n renderItem={({ item, index }) => (\n <CartListItem\n onSelectTicketItem={onSelectTicketOption}\n ticket={item}\n ticketNumber={index}\n selectedTicket={selectedTicket}\n styles={styles?.ticketList?.item}\n texts={texts?.listItem}\n {...item}\n />\n )}\n ItemSeparatorComponent={() => <Separator />}\n />\n )}\n {isWaitingListVisible && event?.salesStarted && (\n <WaitingList\n styles={styles?.waitingList}\n texts={texts?.waitingList}\n onAddToWaitingListSuccess={onAddToWaitingListSuccess}\n onAddToWaitingListError={onAddToWaitingListError}\n onLoadingChange={onLoadingChange}\n areAlertsEnabled={areAlertsEnabled}\n />\n )}\n {isGetTicketsButtonVisible && (\n <Button\n text={buttonText}\n onPress={onPressGetTickets}\n isUpperCase={true}\n isLoading={isBookingTickets}\n isDisabled={isButtonDisabled}\n styles={\n isButtonDisabled\n ? styles?.getTicketsButtonDisabled\n : styles?.getTicketsButtonActive\n }\n />\n )}\n {isUserLogged && (\n <LoggedIn\n onPressMyOrders={onPressMyOrders}\n styles={styles?.loggedIn}\n texts={texts?.loggedInTexts}\n onPressLogout={onPressLogout}\n />\n )}\n {(isGettingTickets || isGettingEvent) && areLoadingIndicatorsEnabled && (\n <Loading />\n )}\n </View>\n </View>\n )\n}\n\nexport default TicketsView\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport { ITicketGroupListHeaderProps } from './types'\n\nconst TicketGroupListHeader: FC<ITicketGroupListHeaderProps> = ({ styles, text }) => (\n <View style={styles?.container}>\n {!!text && <Text style={styles?.text}>{text}</Text>}\n </View>\n)\n\nexport default TicketGroupListHeader\n","import _maxBy from 'lodash/maxBy'\nimport React from 'react'\nimport { Text, View } from 'react-native'\n\nimport { Dropdown } from '../../../components'\nimport { IDropdownItem } from '../../../components/dropdown/types'\nimport { priceWithCurrency } from '../../../helpers/StringsHelper'\nimport { CartListItemStyles as s } from './styles'\nimport { ITicketListItemProps } from './types'\n\nconst TicketListItem = ({\n ticket,\n ticketNumber,\n onSelectTicketItem,\n selectedTicket,\n styles,\n texts,\n}: ITicketListItemProps) => {\n const soldOutText = texts?.soldOut || 'SOLD OUT'\n const salesNotStartedText = texts?.salesNotStarted || 'Sales not started'\n const salesEnded = texts?.salesEnded || 'Sales ended'\n const feesIncludedText = texts?.inclFees || '(incl. Fees)'\n const feesExcludedText = texts?.exclFees || '(excl. Fees)'\n const freeText = texts?.free || 'Free'\n const ticketText = texts?.ticket || 'Ticket'\n const isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut\n const isSalesClosed = !ticket.salesStarted || ticket.salesEnded\n const customSoldOutMessage = texts?.soldOut || 'SOLD OUT'\n const soldOutMessage = ticket.soldOutMessage\n ? `${ticket.soldOutMessage}`.toUpperCase()\n : customSoldOutMessage\n\n const ticketsClosedMessage = !ticket.salesStarted ? salesNotStartedText : salesEnded\n\n const getSelectOptions = (\n maxCount: number = 10,\n minCount: number = 1,\n multiplier: number = 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.toString(), value: i })\n }\n return options\n }\n\n const dropdownOptions = getSelectOptions(\n ticket.maxQuantity,\n ticket.minQuantity,\n ticket.multiplier\n )\n\n const handleOnSelectItem = (item: IDropdownItem) => {\n onSelectTicketItem({ ...ticket, selectedOption: item })\n }\n\n const selectedOption: IDropdownItem =\n selectedTicket && ticket.id === selectedTicket.id && selectedTicket.selectedOption\n ? selectedTicket.selectedOption\n : { label: '0', value: 0 }\n\n const feesIncluded = ticket.feeIncluded ? feesIncludedText : feesExcludedText\n const showOldPrice = ticket.price !== ticket.oldPrice\n const isTicketFree = +ticket.price === 0\n const ticketPrice = isSoldOut\n ? soldOutText\n : isTicketFree\n ? freeText\n : priceWithCurrency(ticket.price.toFixed(2).toString(), ticket.priceSymbol)\n\n const maximumOption = _maxBy(dropdownOptions, (o) => o.value)?.value\n\n let rightContent = <></>\n\n if (ticket.soldOut || ticket.sold_out || !ticket.displayTicket) {\n rightContent = <Text>{soldOutMessage}</Text>\n }\n if (ticket.displayTicket) {\n rightContent = isSalesClosed ? (\n <Text>{ticketsClosedMessage}</Text>\n ) : maximumOption && maximumOption > 0 ? (\n <Dropdown\n items={dropdownOptions}\n selectedOption={selectedOption}\n onSelectItem={handleOnSelectItem}\n styles={styles?.dropdown}\n />\n ) : (\n <></>\n )\n }\n\n return (\n <View style={[s.container, styles?.container]}>\n <View style={s.leftContainer}>\n <Text style={[s.ticketNumber, styles?.ticketName]} numberOfLines={2}>\n {ticket.displayName.toUpperCase() || `${ticketText} ${ticketNumber}`}\n </Text>\n {isSoldOut ? (\n <View style={[s.soldOutContainer, styles?.soldOutContainer]}>\n <Text style={[s.soldOut, styles?.soldOutText]}>{soldOutMessage}</Text>\n </View>\n ) : (\n <>\n <View style={styles?.pricesContainer}>\n {showOldPrice && (\n <Text style={[s.oldPrice, styles?.oldPrice]}>\n {priceWithCurrency(ticket.oldPrice?.toString(), ticket.priceSymbol)}\n </Text>\n )}\n <Text style={[s.price, styles?.price]}>{ticketPrice}</Text>\n </View>\n <Text style={[s.tax, styles?.fees]}>{feesIncluded.toUpperCase()}</Text>\n </>\n )}\n </View>\n {!isSalesClosed && !isSoldOut && (\n <View style={s.rightContainer}>{rightContent}</View>\n )}\n </View>\n )\n}\n\nexport default TicketListItem\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../../res'\n\nexport const CartListItemStyles = StyleSheet.create({\n container: {\n width: '100%',\n paddingVertical: 16,\n flexDirection: 'row',\n },\n ticketNumber: {\n fontWeight: '600',\n fontSize: 16,\n marginBottom: 4,\n color: R.colors.primary,\n },\n price: {\n fontWeight: '800',\n fontSize: 18,\n color: R.colors.primary,\n },\n soldOut: {\n fontWeight: '800',\n fontSize: 20,\n color: R.colors.primary,\n },\n leftContainer: {\n flex: 7,\n },\n rightContainer: {\n flex: 3,\n alignItems: 'flex-end',\n justifyContent: 'center',\n },\n tax: {\n marginTop: 4,\n fontWeight: '600',\n color: R.colors.primary,\n },\n soldOutContainer: {\n borderRadius: 2,\n borderWidth: 2,\n justifyContent: 'center',\n alignItems: 'center',\n paddingVertical: 8,\n marginTop: 8,\n borderColor: R.colors.primary,\n },\n oldPrice: {\n fontSize: 16,\n color: R.colors.danger,\n textDecorationLine: 'line-through',\n },\n})\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n container: {\n flex: 1,\n },\n header: {\n paddingVertical: 16,\n },\n headerText: {\n fontSize: 22,\n color: R.colors.primary,\n fontWeight: '800',\n },\n headerTextBold: {\n fontSize: 18,\n fontWeight: '800',\n color: R.colors.primary,\n },\n})\n","/*\n * COMPOSITE HOOK FOR CHECKOUT FLOW\n *\n * This hook is used to initialize the checkout flow\n * and provide all the necessary data and functions\n * to the checkout component.\n *\n */\n\nimport {\n BillingDetails,\n initStripe,\n useConfirmPayment,\n createPaymentMethod,\n} from '@stripe/stripe-react-native'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport BackgroundTimer from 'react-native-background-timer'\n\nimport { logger } from '../../../utils/Logger'\nimport { logError } from '../../../utils/handlers'\nimport { useRegisterUser } from '../../auth/api-hooks'\nimport { CustomerProfileResponse, IRegisterUserResponse } from '../../auth/types'\nimport { storeAuthTokens } from '../../auth/utils'\nimport { useEventCustomFields } from '../../event/api-hooks'\nimport { AddOnAttribute, OrderAttribute, TicketAttribute } from '../../event/types'\nimport { useCountries, useStates } from '../../geo/api-hooks'\nimport { CheckoutFormProps, CheckoutFormValues } from '../form/types'\nimport { IOrderItem, OrderResult, UpdateCheckoutResponse } from '../types'\nimport { createCheckoutBody, createRegistrationData, priceWithCurrency } from '../utils'\nimport {\n useAddons,\n useCart,\n useCheckout,\n useEventConditions,\n useEventInfo,\n usePaymentData,\n usePaymentSuccess,\n useTickets,\n useUpdateCheckout,\n} from './api-hooks'\n\nexport interface UseCheckoutFlowProps {\n onCartExpired?: () => void\n isSinglePageCheckout?: boolean\n isAgeRequired?: boolean\n isPhoneRequired?: boolean\n isPhoneHidden?: boolean\n minimumAge?: number\n customerProfile?: CustomerProfileResponse\n onCheckoutSuccess?: (data: ICheckoutSuccessData) => void\n onCheckoutError?: (error: any) => void\n onPaymentSuccess?: (data: OrderResult) => void\n onPaymentError?: (error: any) => void\n // Return true if the form should be submitted\n onRegistrationSuccess?: (data: IRegisterUserResponse) => void\n onRegistrationError?: (error: any) => void\n}\n\nexport interface UseCheckoutFlowReturn extends Omit<CheckoutFormProps, 'scrollRef'> {\n secondsLeft: number | undefined\n eventId: string | undefined\n isInitialLoading: boolean\n isSubmitting: boolean\n isLoggedIn: boolean\n setSecondsLeft: React.Dispatch<React.SetStateAction<number | undefined>>\n setSelectedCountry: React.Dispatch<React.SetStateAction<string>>\n checkoutData: UpdateCheckoutResponse | null\n handlePayment: (input: ICheckoutSuccessData) => Promise<void>\n}\n\nexport interface ICheckoutSuccessData {\n hash: string\n total: string | number\n values: CheckoutFormValues\n}\n\nexport const useCheckoutFlow = ({\n onCartExpired,\n onCheckoutSuccess,\n onCheckoutError,\n onPaymentSuccess,\n onPaymentError,\n isAgeRequired,\n isPhoneRequired,\n isPhoneHidden,\n minimumAge,\n isSinglePageCheckout,\n customerProfile,\n onRegistrationSuccess,\n onRegistrationError,\n}: UseCheckoutFlowProps): UseCheckoutFlowReturn => {\n const cartQuery = useCart()\n const eventId = cartQuery.data?.data?.attributes?.eventId\n\n const [orderItems, setOrderItems] = useState<IOrderItem[]>([])\n const [secondsLeft, setSecondsLeft] = useState<number | undefined>(undefined)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [checkoutData, setCheckoutData] = useState<UpdateCheckoutResponse | null>(null)\n\n const [selectedCountry, setSelectedCountry] = useState<string>('1')\n const [addons, setAddons] = useState<Record<string, number>>({})\n\n const ticketsQuery = useTickets(eventId)\n const eventInfoQuery = useEventInfo(eventId)\n\n const countriesQuery = useCountries()\n\n const checkoutMutation = useCheckout()\n const paymentDataMutation = usePaymentData()\n const updateCheckoutMutation = useUpdateCheckout()\n const paymentSuccessMutation = usePaymentSuccess()\n const customFieldsQuery = useEventCustomFields(eventId)\n\n const addonsQuery = useAddons(eventId)\n const statesQuery = useStates(selectedCountry)\n const conditionsQuery = useEventConditions(eventId)\n\n const handleRegistrationError = useCallback(\n (registerError: any): boolean => {\n // Check for already registered user (422 status)\n if (registerError?.response?.status === 422) {\n const errorData = registerError.response?.data\n\n // Check all possible email error structures\n const emailErrors =\n errorData?.errors?.email ||\n errorData?.data?.message?.email ||\n (errorData?.message?.email ? errorData.message.email : null)\n\n logger.debug('[useCheckoutFlow] Email validation error:', { emailErrors })\n if (emailErrors) {\n // Show login dialog for already registered user\n const emailAlreadyRegisteredText =\n 'It appears this email is already attached to an account. Please log in here to complete your registration.'\n\n let errorMessage: string\n if (Array.isArray(emailErrors)) {\n errorMessage = emailErrors[0]\n } else if (typeof emailErrors === 'string') {\n errorMessage = emailErrors\n } else {\n errorMessage = emailAlreadyRegisteredText\n }\n\n if (errorMessage === 'The email is already used') {\n errorMessage = emailAlreadyRegisteredText\n }\n\n // Show login dialog\n onRegistrationError?.(errorMessage)\n return true // Registration handled, don't continue with checkout\n } else {\n // Other validation errors\n const errorMessages = Object.entries(errorData?.errors || {})\n .map(\n ([field, messages]) =>\n `${field}: ${Array.isArray(messages) ? messages.join(', ') : messages}`\n )\n .join('\\n')\n throw new Error(`Validation errors: ${errorMessages}`)\n }\n }\n\n // Generic error\n throw new Error(registerError?.message || 'Registration failed')\n },\n [onRegistrationError]\n )\n\n const registerUserMutation = useRegisterUser()\n\n const registerUser = useCallback(\n async (values: CheckoutFormValues): Promise<boolean> => {\n try {\n // User is already registered or logged in, skip registration\n if (customerProfile) {\n logger.debug('[useCheckoutFlow] User already logged in, skipping registration')\n return true\n }\n logger.debug('[useCheckoutFlow] Starting user registration', {\n email: values.email,\n })\n // Create and submit registration data\n const registerUserData = createRegistrationData(values, isAgeRequired)\n const result = await registerUserMutation.mutateAsync(registerUserData)\n\n // Store tokens and extract user data\n await storeAuthTokens(result.data.attributes)\n\n logger.debug('[useCheckoutFlow] User registration successful', {\n email: values.email,\n })\n // Registration successful\n onRegistrationSuccess?.(result.data)\n return true\n } catch (registerError: any) {\n logger.error('[useCheckoutFlow] User registration failed', {\n error: registerError?.message,\n email: values.email,\n })\n return !handleRegistrationError(registerError)\n }\n },\n [\n customerProfile,\n isAgeRequired,\n registerUserMutation,\n handleRegistrationError,\n onRegistrationSuccess,\n ]\n )\n\n // Extract and sort order custom fields\n const orderCustomFields = useMemo(() => {\n if (!customFieldsQuery.data?.data?.attributes) {\n return []\n }\n\n // Filter for order attributes only\n const orderAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr): attr is OrderAttribute => 'order' in attr\n )\n\n // Extract fields from order attributes and sort by order property\n const fields = orderAttributes\n .map((attr) => attr.order.group.fields)\n .flat()\n .sort((a, b) => {\n // Convert order strings to numbers for comparison\n const orderA = parseInt(a.order, 10) || 0\n const orderB = parseInt(b.order, 10) || 0\n return orderA - orderB\n })\n\n return fields\n }, [customFieldsQuery.data])\n\n // Extract and sort ticket custom fields\n const ticketCustomFields = useMemo(() => {\n if (!customFieldsQuery.data?.data?.attributes) {\n return []\n }\n\n // Filter for ticket attributes only\n const ticketAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr) => 'ticket' in attr\n ) as TicketAttribute[]\n\n // Extract fields from ticket attributes and sort by order property\n const fields = ticketAttributes\n .map((attr) => attr.ticket.group.fields)\n .flat()\n .sort((a, b) => {\n // Convert order strings to numbers for comparison\n const orderA = parseInt(a.order, 10) || 0\n const orderB = parseInt(b.order, 10) || 0\n return orderA - orderB\n })\n\n return fields\n }, [customFieldsQuery.data])\n\n const addonCustomFields = useMemo(() => {\n if (!customFieldsQuery.data?.data?.attributes) {\n return []\n }\n\n // Filter for addon attributes only\n const addonAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr) => 'add-on' in attr\n ) as AddOnAttribute[]\n\n // Extract fields from addon attributes and sort by order property\n const fields = addonAttributes\n .map((attr) => attr['add-on'].group.fields)\n .flat()\n .sort((a, b) => {\n // Convert order strings to numbers for comparison\n const orderA = parseInt(a.order, 10) || 0\n const orderB = parseInt(b.order, 10) || 0\n return orderA - orderB\n })\n\n return fields\n }, [customFieldsQuery.data])\n\n const { confirmPayment } = useConfirmPayment()\n\n const isInitialLoading = useMemo(() => {\n if (cartQuery.isPending) return true\n if (eventInfoQuery.isPending) return true\n if (ticketsQuery.isPending) return true\n if (countriesQuery.isPending) return true\n if (customFieldsQuery.isPending) return true\n\n return false\n }, [\n cartQuery.isPending,\n eventInfoQuery.isPending,\n ticketsQuery.isPending,\n countriesQuery.isPending,\n customFieldsQuery.isPending,\n ])\n\n const defaultCustomFieldValues = useMemo(() => {\n const orderDefaults: Record<string, string | string[]> = {}\n const ticketDefaults: Record<string, string | string[]> = {}\n const addonDefaults: Record<string, string | string[]> = {}\n\n // Get the custom fields from the query response\n if (customFieldsQuery.data?.data?.attributes) {\n // Filter to only include OrderAttribute types and cast accordingly\n const orderAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr): attr is OrderAttribute => 'order' in attr\n )\n\n const ticketAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr): attr is TicketAttribute => 'ticket' in attr\n )\n\n const addonAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr): attr is AddOnAttribute => 'add-on' in attr\n )\n // Extract fields from order attributes - now TypeScript knows these are OrderAttribute\n const orderFields = orderAttributes.map((attr) => attr.order.group.fields).flat()\n // Set default values for fields that have them\n orderFields.forEach((field) => {\n if (field.defaultValue !== undefined && field.defaultValue !== null) {\n orderDefaults[field.name] = field.defaultValue\n }\n })\n\n // Extract fields from ticket attributes - now TypeScript knows these are TicketAttribute\n const ticketFields = ticketAttributes.map((attr) => attr.ticket.group.fields).flat()\n\n ticketFields.forEach((field) => {\n if (field.defaultValue !== undefined && field.defaultValue !== null) {\n ticketDefaults[field.name] = field.defaultValue\n }\n })\n\n // Extract fields from addon attributes - now TypeScript knows these are AddOnAttribute\n const addonFields = addonAttributes\n .map((attr) => attr['add-on'].group.fields)\n .flat()\n\n addonFields.forEach((field) => {\n if (field.defaultValue !== undefined && field.defaultValue !== null) {\n addonDefaults[field.name] = field.defaultValue\n }\n })\n }\n\n return { orderDefaults, ticketDefaults, addonDefaults }\n }, [customFieldsQuery.data])\n\n // Prefill form with user profile data when available\n const initialValues = useMemo(() => {\n // Get ticket quantity from cart\n const ticketQuantity = cartQuery.data?.data?.attributes?.cart?.[0]?.quantity || 1\n // Create empty ticket holders array based on ticket quantity\n const ticketHolders = Array.from({ length: ticketQuantity }, () => ({\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n customFields: { ...defaultCustomFieldValues.ticketDefaults }, // Apply default values for ticket custom fields\n }))\n\n const availableAddons = addonsQuery.data?.data?.attributes?.add_ons || []\n\n // build addon defaults\n const addonDefaults: CheckoutFormValues['addons'] = {}\n\n availableAddons.forEach((addon) => {\n const addonId = addon.id?.toString()\n\n addonDefaults[addonId] = {\n quantity: 0,\n customFields: {},\n }\n\n // every add-on uses the same addonCustomFields list\n addonCustomFields.forEach((field) => {\n if (field.defaultValue != null) {\n addonDefaults[addonId].customFields[field.name] = Array.isArray(\n field.defaultValue\n )\n ? field.defaultValue.join(',')\n : field.defaultValue\n }\n })\n })\n\n const base: CheckoutFormValues = {\n firstName: '',\n lastName: '',\n email: '',\n emailConfirmation: '',\n phone: '',\n dateOfBirth: undefined,\n street: '',\n city: '',\n postalCode: '',\n password: '',\n passwordConfirmation: '',\n isSubToTicketFairy: false,\n isSubToBrand: false,\n isCardFormComplete: false,\n country: '-1',\n state: '-1',\n addons: addonDefaults,\n acceptedConditions: {},\n customFields: { ...defaultCustomFieldValues.orderDefaults },\n ticketHolders,\n }\n\n if (customerProfile) {\n const profile = customerProfile\n\n // Fill main user info\n base.firstName = profile.firstName || ''\n base.lastName = profile.lastName || ''\n base.email = profile.email || ''\n base.emailConfirmation = profile.email || ''\n base.phone = profile.phone || ''\n base.street = profile.streetAddress || ''\n base.city = profile.city || ''\n base.postalCode = profile.zipCode || ''\n base.country = profile.countryId || '-1'\n base.state = profile.stateId || '-1'\n base.dateOfBirth = profile.dateOfBirth || undefined\n\n // Fill first ticket holder info from the user's profile data\n if (base.ticketHolders.length > 0) {\n base.ticketHolders[0] = {\n ...base.ticketHolders[0],\n firstName: profile.firstName || '',\n lastName: profile.lastName || '',\n email: profile.email || '',\n phone: profile.phone || '',\n }\n }\n }\n\n return base\n }, [cartQuery.data?.data?.attributes?.cart, customerProfile, defaultCustomFieldValues])\n\n const countries = useMemo(() => {\n return countriesQuery.data?.data || []\n }, [countriesQuery.data?.data])\n\n const states = useMemo(() => {\n return statesQuery?.data?.data || []\n }, [statesQuery?.data?.data])\n\n const availableAddons = useMemo(() => {\n return addonsQuery.data?.data?.attributes?.add_ons || []\n }, [addonsQuery.data?.data?.attributes?.add_ons])\n\n const conditions = useMemo(() => {\n return conditionsQuery.data?.data?.attributes?.conditions || []\n }, [conditionsQuery.data?.data?.attributes?.conditions])\n\n const eventCurrency = useMemo(() => {\n return eventInfoQuery.data?.data.attributes.currency.currency\n }, [eventInfoQuery.data?.data.attributes.currency.currency])\n\n const isLoggedIn = useMemo(() => {\n return !!customerProfile\n }, [customerProfile])\n\n // Handle payment processing\n const handlePayment = useCallback(\n async (input: ICheckoutSuccessData) => {\n try {\n setIsSubmitting(true)\n logger.debug('[useCheckoutFlow] Starting payment process', {\n hash: input.hash,\n total: input.total,\n })\n\n // Get payment data\n const paymentResponse = await paymentDataMutation.mutateAsync(String(input.hash))\n const { order_details, payment_method } = paymentResponse.data.attributes\n // Check if this is a free ticket\n const isFreeTicket =\n Number(input.total) === 0 || Number(order_details.pay_now) === 0\n\n if (isFreeTicket) {\n logger.debug('[useCheckoutFlow] Processing free ticket order', {\n hash: input.hash,\n })\n // For free tickets, just confirm the order\n await paymentSuccessMutation.mutateAsync(String(input.hash))\n\n const result: OrderResult = {\n orderHash: String(input.hash),\n total: Number(input.total),\n currency: order_details.currency,\n email: input.values.email,\n }\n\n logger.debug('[useCheckoutFlow] Free ticket order confirmed', {\n hash: input.hash,\n email: input.values.email,\n })\n onPaymentSuccess?.(result)\n } else {\n logger.debug('[useCheckoutFlow] Processing paid ticket with Stripe', {\n hash: input.hash,\n amount: order_details.pay_now,\n })\n\n // Lookup country ISO-2 code from the countries list\n const selectedCountry = countries.find((c) => c.id === input.values.country)\n const countryCode = selectedCountry?.code || undefined\n\n // Lookup state code from the states list\n const selectedState = states.find((s) => s.value === input.values.state)\n const stateCode = selectedState?.code || undefined\n\n const billingDetails: BillingDetails = {\n email: input.values.email,\n name: `${input.values.firstName} ${input.values.lastName}`,\n phone: input.values.phone || undefined,\n address: {\n city: input.values.city || undefined,\n country: countryCode,\n line1: input.values.street || undefined,\n postalCode: input.values.postalCode || undefined,\n state: stateCode,\n },\n }\n\n logger.debug('[useCheckoutFlow] Confirming payment with Stripe')\n const { error: confirmError, paymentIntent } = await confirmPayment(\n payment_method.stripe_client_secret!,\n { paymentMethodType: 'Card', paymentMethodData: { billingDetails } }\n )\n\n if (confirmError || paymentIntent?.status !== 'Succeeded') {\n const errorMessage = confirmError?.message || 'Payment failed'\n logger.error('[useCheckoutFlow] Stripe payment failed', {\n error: errorMessage,\n errorCode: confirmError?.code,\n paymentIntentStatus: paymentIntent?.status,\n })\n\n // Provide user-friendly error messages\n if (\n errorMessage.includes('incomplete') ||\n errorMessage.includes('not complete')\n ) {\n throw new Error('Please complete all card details before submitting')\n }\n throw new Error(errorMessage)\n }\n\n logger.debug('[useCheckoutFlow] Stripe payment succeeded', {\n paymentIntentId: paymentIntent.id,\n })\n // Notify backend of successful payment\n await paymentSuccessMutation.mutateAsync(String(input.hash))\n\n // Notify about successful payment\n const result: OrderResult = {\n orderHash: String(input.hash),\n total: Number(input.total),\n currency: order_details.currency,\n email: input.values.email,\n paymentIntentId: paymentIntent.id,\n }\n\n logger.debug('[useCheckoutFlow] Payment process completed successfully', {\n hash: input.hash,\n email: input.values.email,\n })\n onPaymentSuccess?.(result)\n }\n } catch (error) {\n logger.error('[useCheckoutFlow] Payment process failed', {\n error: error instanceof Error ? error.message : String(error),\n })\n logError(error, 'Checkout: handlePayment')\n onPaymentError?.(error)\n throw error\n } finally {\n setIsSubmitting(false)\n }\n },\n [\n paymentDataMutation,\n paymentSuccessMutation,\n onPaymentSuccess,\n onPaymentError,\n confirmPayment,\n ]\n )\n\n const handleCheckout = useCallback(\n async (values: CheckoutFormValues) => {\n try {\n logger.debug('[useCheckoutFlow] Starting checkout process', {\n email: values.email,\n ticketHoldersCount: values.ticketHolders.length,\n })\n const checkoutBody = createCheckoutBody(values, isAgeRequired)\n const checkoutResponse = await checkoutMutation.mutateAsync(checkoutBody)\n\n const hash = checkoutResponse.data.attributes.hash\n const total = checkoutResponse.data.attributes.total\n logger.debug('[useCheckoutFlow] Checkout created successfully', {\n hash,\n total,\n email: values.email,\n })\n onCheckoutSuccess?.({ hash, total, values })\n\n return { hash, total }\n } catch (error) {\n logger.error('[useCheckoutFlow] Checkout process failed', {\n error: error instanceof Error ? error.message : String(error),\n email: values.email,\n })\n logError(error, 'Checkout: handleCheckout')\n onCheckoutError?.(error)\n throw error\n }\n },\n [checkoutMutation, isAgeRequired, onCheckoutSuccess, onCheckoutError]\n )\n\n const onSubmit = useCallback(\n async (values: CheckoutFormValues) => {\n try {\n setIsSubmitting(true)\n if (!(await registerUser(values))) return\n\n const { hash, total } = await handleCheckout(values)\n\n if (isSinglePageCheckout) {\n await handlePayment({\n hash,\n total,\n values,\n })\n }\n } catch (error) {\n logError(error, 'Checkout: onSubmit')\n } finally {\n setIsSubmitting(false)\n }\n },\n [registerUser, handleCheckout, isSinglePageCheckout, handlePayment]\n )\n\n const updateOrderItemsFromCheckoutData = useCallback(\n (\n cartPriceBreakdown: UpdateCheckoutResponse['attributes']['cart_price_breakdown']\n ) => {\n if (!cartPriceBreakdown) return\n\n // Update order items with the latest pricing information\n const updatedOrderItems: IOrderItem[] = []\n const currency = cartPriceBreakdown.currency?.currency || 'USD'\n\n // Add ticket items\n if (cartPriceBreakdown.tickets_price_breakdown) {\n cartPriceBreakdown.tickets_price_breakdown.forEach((ticket: any) => {\n updatedOrderItems.push({\n id: ticket.ticket_type_id,\n title: ticket.ticket_type_name,\n subtitle: `${ticket.quantity} x ${priceWithCurrency(\n ticket.price_per_ticket,\n currency\n )}`,\n value: priceWithCurrency(ticket.total_price.toString(), currency),\n })\n })\n }\n\n // Add add-ons\n if (\n cartPriceBreakdown.total_add_ons > 0 &&\n cartPriceBreakdown.add_ons_price_breakdown &&\n Array.isArray(cartPriceBreakdown.add_ons_price_breakdown)\n ) {\n cartPriceBreakdown.add_ons_price_breakdown.forEach((addon: any) => {\n updatedOrderItems.push({\n id: `addon_${addon.add_on_name}`,\n title: `${addon.add_on_name} (Add-on)`,\n subtitle: `${addon.quantity} x ${priceWithCurrency(\n addon.price_per_add_on,\n currency\n )}`,\n value: priceWithCurrency(addon.total_price.toString(), currency),\n })\n })\n }\n\n // Add tax if available\n if (cartPriceBreakdown.goods_tax > 0) {\n updatedOrderItems.push({\n id: 'tax',\n title: cartPriceBreakdown.goods_tax_name || 'Tax',\n value: priceWithCurrency(cartPriceBreakdown.goods_tax.toString(), currency),\n })\n }\n\n // Add total\n updatedOrderItems.push({\n id: 'total',\n title: 'Total',\n value: priceWithCurrency(cartPriceBreakdown.total.toString(), currency),\n })\n\n // Update the order items state\n setOrderItems(updatedOrderItems)\n },\n [setOrderItems]\n )\n\n // Function to update checkout with add-ons\n const updateCheckoutWithAddOns = useCallback(\n async (newAddons: { [key: string]: number } = {}) => {\n if (!eventId) {\n console.warn('Cannot update addons - no event ID')\n return\n }\n\n const mergedAddons = { ...addons, ...newAddons }\n console.log('Updating checkout with addons', {\n eventId,\n newAddons,\n mergedAddons,\n })\n\n // Remove zero quantities\n Object.entries(mergedAddons).forEach(([key, value]) => {\n if (!Number(value)) {\n delete mergedAddons[key]\n }\n })\n\n try {\n console.log('Updating checkout with addons', {\n event_id: eventId,\n add_ons: mergedAddons,\n is_from_resale: false,\n })\n // Call the API\n const response = await updateCheckoutMutation.mutateAsync({\n attributes: {\n event_id: eventId,\n add_ons: mergedAddons,\n is_from_resale: false,\n },\n })\n\n console.log('Update checkout response', JSON.stringify(response))\n\n if (response.data?.attributes) {\n const cartPriceBreakdown = response.data.attributes.cart_price_breakdown\n\n setAddons(mergedAddons)\n updateOrderItemsFromCheckoutData(cartPriceBreakdown)\n }\n } catch (error) {\n console.error('Failed to update addons', { error, eventId })\n }\n },\n [eventId, addons, updateCheckoutMutation, setAddons, updateOrderItemsFromCheckoutData]\n )\n\n // Function to handle addon changes from the form\n const onAddonChange = useCallback(\n (addonId: string, quantity: number) => {\n const updatedAddons = { [addonId]: quantity }\n updateCheckoutWithAddOns(updatedAddons)\n },\n [updateCheckoutWithAddOns]\n )\n\n const onCountryChange = useCallback(\n (countryId: string) => {\n setSelectedCountry(countryId)\n },\n [setSelectedCountry]\n )\n\n useEffect(() => {\n if (cartQuery.data?.data?.attributes?.expiresAt) {\n const expiresAt = cartQuery.data.data.attributes.expiresAt\n setSecondsLeft(expiresAt)\n\n BackgroundTimer.runBackgroundTimer(() => {\n setSecondsLeft((prev: number | undefined) => {\n if (!prev || prev <= 1) {\n BackgroundTimer.stopBackgroundTimer()\n onCartExpired?.()\n return 0\n }\n return prev - 1\n })\n }, 1000)\n\n return () => BackgroundTimer.stopBackgroundTimer()\n }\n }, [cartQuery.data, setSecondsLeft, onCartExpired])\n\n useEffect(() => {\n if (cartQuery.data?.data?.attributes) {\n const cartData = cartQuery.data.data.attributes\n const currency = (cartData.cart?.[0] as any)?.currency || 'USD'\n const eventName = eventInfoQuery.data?.data.attributes.name ?? 'Event'\n\n const items: IOrderItem[] = [\n {\n id: 'event',\n title: 'Event',\n value: eventName,\n },\n {\n id: 'tickets',\n title: 'Number of Tickets',\n value: (cartData.cart?.[0] as any)?.quantity?.toString() || '1',\n },\n ]\n\n if ((cartData.cart?.[0] as any)?.price) {\n items.push({\n id: 'price',\n title: 'Ticket Price',\n value: priceWithCurrency((cartData.cart[0] as any).price, currency),\n })\n }\n\n const total = (cartData.cart?.[0] as any)?.price || 0\n items.push({\n id: 'total',\n title: 'Total',\n value: priceWithCurrency(total, currency),\n })\n\n setOrderItems(items)\n }\n }, [cartQuery.data, eventInfoQuery.data])\n\n useEffect(() => {\n if (!eventId) return\n\n ;(async () => {\n const response = await updateCheckoutMutation.mutateAsync({\n attributes: {\n event_id: eventId,\n add_ons: addons,\n is_from_resale: false,\n },\n })\n const cartPriceBreakdown = response.data?.attributes?.cart_price_breakdown\n const additionalPaymentInformation =\n response.data?.attributes?.additional_payment_information\n\n const stripeConfig = {\n publishableKey: additionalPaymentInformation?.basic_config.apiKey,\n accountId: additionalPaymentInformation?.basic_config.accountId,\n }\n\n // await initStripe(stripeConfig);\n // setTimeout(() => {\n // setStripeInitialized(true);\n // }, 100);\n\n if (cartPriceBreakdown) {\n updateOrderItemsFromCheckoutData(cartPriceBreakdown)\n }\n\n setCheckoutData(response.data)\n })()\n }, [eventInfoQuery.data])\n\n useEffect(() => {\n if (customerProfile) {\n const profile = customerProfile\n if (profile.countryId) {\n setSelectedCountry(profile.countryId.toString())\n }\n }\n }, [setSelectedCountry, customerProfile])\n\n return {\n // Handlers\n onAddonChange,\n onCountryChange,\n onSubmit,\n\n setSecondsLeft,\n setSelectedCountry,\n\n handlePayment,\n\n // States\n states,\n eventId,\n countries,\n orderItems,\n conditions,\n secondsLeft,\n availableAddons,\n initialValues,\n eventCurrency,\n isSubmitting,\n isInitialLoading,\n isLoggedIn,\n isPhoneRequired,\n isAgeRequired,\n isPhoneHidden,\n minimumAge,\n isSinglePageCheckout,\n\n orderCustomFields,\n ticketCustomFields,\n addonCustomFields,\n checkoutData,\n }\n}\n","import axios from 'axios'\n\nexport function readableError(error: unknown) {\n if (axios.isAxiosError(error)) {\n return error.response?.data?.message || error.message\n } else if (error instanceof Error) {\n return error.message\n } else {\n return String(error)\n }\n}\n\n/**\n * Logs the most useful information from any error (Axios or otherwise).\n */\nexport function logError(\n error: unknown,\n context?: string,\n options?: { logStack?: boolean; logConfig?: boolean }\n) {\n const prefix = context ? `[${context}]` : '[Error]'\n\n if (axios.isAxiosError(error)) {\n console.error(`${prefix}: ${error.message}`)\n\n if (error.response) {\n console.error(`${prefix} Response:`, {\n status: error.response.status,\n statusText: error.response.statusText,\n data: error.response.data,\n })\n } else if (error.request) {\n console.error(`${prefix} No response received:`, error.request)\n }\n\n if (options?.logConfig) {\n console.error(`${prefix} Config:`, error.config)\n }\n } else if (error instanceof Error) {\n // Regular JS Error\n console.error(`${prefix}: ${error.message}`)\n if (options?.logStack) {\n console.error(`${prefix} Stack:`, error.stack)\n }\n } else {\n // Unknown type\n console.error(`${prefix} Unknown error:`, error)\n }\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport { AxiosError } from 'axios'\nimport { useCallback, useEffect, useState } from 'react'\n\nimport { ApiResponse } from '../../api/api.types'\nimport { Client } from '../../api/ApiClient'\nimport { QueryOpts } from '../../common/query.types'\nimport { isStoredTokenValid } from '../../helpers/LocalStorage'\nimport { CustomerProfileResponse, IRegisterUserResponse } from './types'\n\n/*\n * Hook to register new user\n */\nexport const useRegisterUser = () => {\n return useMutation<ApiResponse<IRegisterUserResponse>, AxiosError, FormData>({\n mutationFn: (userData) =>\n Client.post<ApiResponse<IRegisterUserResponse>>(\n 'v1/oauth/register-rn',\n userData\n ).then((response) => response.data),\n })\n}\n\n/**\n * Hook to fetch user profile\n */\nexport const useUserProfile = (\n options?: QueryOpts<ApiResponse<CustomerProfileResponse>, AxiosError>\n) => {\n const queryClient = useQueryClient()\n const [enabled, setEnabled] = useState(false)\n\n useEffect(() => {\n isStoredTokenValid().then((isValid) => setEnabled(isValid))\n }, [])\n\n const invalidate = useCallback(async () => {\n const isValid = await isStoredTokenValid()\n setEnabled(isValid)\n queryClient.invalidateQueries({ queryKey: ['userProfile'] })\n\n if (!isValid) {\n queryClient.cancelQueries({ queryKey: ['userProfile'] })\n queryClient.removeQueries({ queryKey: ['userProfile'] })\n queryClient.setQueryData(['userProfile'], undefined)\n }\n }, [queryClient])\n\n const query = useQuery<ApiResponse<CustomerProfileResponse>, AxiosError>({\n queryKey: ['userProfile'],\n queryFn: () =>\n Client.get<ApiResponse<CustomerProfileResponse>>(`customer/profile/`).then(\n (response) => response.data\n ),\n retry: false,\n enabled,\n ...options,\n })\n\n return { ...query, invalidate }\n}\n","import { setAccessTokenHandler } from '../../api/ApiClient'\nimport { LocalStorageKeys, storeData } from '../../helpers/LocalStorage'\nimport { IAuthAttributes } from './types'\n\n// Helper to store authentication tokens\nexport const storeAuthTokens = async (attributes: IAuthAttributes): Promise<void> => {\n const accessToken = attributes.access_token\n const refreshToken = attributes.refresh_token\n const tokenType = attributes.token_type\n const scope = attributes.scope\n\n if (!accessToken) return\n\n await setAccessTokenHandler(accessToken)\n\n if (refreshToken) {\n await storeData(LocalStorageKeys.REFRESH_TOKEN, refreshToken)\n }\n\n if (tokenType) {\n await storeData(LocalStorageKeys.TOKEN_TYPE, tokenType)\n }\n\n if (scope) {\n await storeData(LocalStorageKeys.AUTH_SCOPE, scope)\n }\n}\n","import { useQuery } from '@tanstack/react-query'\nimport { AxiosError } from 'axios'\n\nimport { ApiResponse } from '../../api/api.types'\nimport { Client } from '../../api/ApiClient'\nimport { QueryOpts } from '../../common/query.types'\nimport { IEventCustomFields } from './types'\n\n/**\n * Hook to fetch user profile\n */\nexport const useEventCustomFields = (\n eventId?: string,\n options?: QueryOpts<ApiResponse<IEventCustomFields>, AxiosError>\n) => {\n const query = useQuery<ApiResponse<IEventCustomFields>, AxiosError>({\n queryKey: ['eventCustomFields', eventId],\n queryFn: () =>\n Client.get<ApiResponse<IEventCustomFields>>(\n `v1/event/${eventId}/custom_fields/`\n ).then((response) => response.data),\n retry: false,\n enabled: !!eventId,\n ...options,\n })\n\n return { ...query }\n}\n","import { useQuery } from '@tanstack/react-query'\nimport { AxiosError } from 'axios'\n\nimport { ApiResponse } from '../../api/api.types'\nimport { Client } from '../../api/ApiClient'\nimport { CountriesResponse, StatesResponse } from './types'\n\n/**\n * Hook to fetch countries list\n */\nexport const useCountries = () => {\n return useQuery<ApiResponse<CountriesResponse>, AxiosError>({\n queryKey: ['countries'],\n queryFn: () =>\n Client.get<ApiResponse<CountriesResponse>>(`countries/list`).then(\n (response) => response.data\n ),\n staleTime: 1000 * 60 * 60 * 24, // 24 hours - countries rarely change\n })\n}\n\n/**\n * Hook to fetch states for a country\n */\nexport const useStates = (countryId?: string) => {\n return useQuery<ApiResponse<StatesResponse>, AxiosError>({\n queryKey: ['states', countryId],\n queryFn: () =>\n Client.get<ApiResponse<Record<string, string>>>(\n `countries/${countryId}/states/`\n ).then((response) => {\n return {\n ...response.data,\n data: Object.entries(response.data.data || {}).map(([id, name]) => ({\n label: String(name),\n value: id,\n code: id, // Use the key as the state code (ISO-2/state code)\n })),\n }\n }),\n enabled: !!countryId && countryId !== '-1',\n })\n}\n","/**\n * Utility functions for checkout flow\n */\n\nimport { Config } from '../../helpers/Config'\nimport { CustomField } from '../event/types'\nimport { FieldType } from '../form/types'\nimport { CheckoutFormValues } from './form/types'\nimport { ICheckoutBody } from './types'\n\n// Import and re-export from shared\nexport { priceWithCurrency } from 'tf-checkout-shared'\n\nexport const createRegistrationData = (\n values: CheckoutFormValues,\n isAgeRequired?: boolean\n): FormData => {\n const registerUserData = new FormData()\n\n // Basic user info\n registerUserData.append('email', values.email)\n registerUserData.append('first_name', values.firstName)\n registerUserData.append('last_name', values.lastName)\n registerUserData.append('password', values.password)\n registerUserData.append('password_confirmation', values.passwordConfirmation)\n\n // Required credentials\n registerUserData.append('client_id', Config.CLIENT_ID)\n registerUserData.append('client_secret', Config.CLIENT_SECRET)\n registerUserData.append('check_cart_expiration', 'true')\n\n // Optional fields\n if (values.phone) registerUserData.append('phone', values.phone)\n if (values.city) registerUserData.append('city', values.city)\n if (values.street) registerUserData.append('street_address', values.street)\n if (values.postalCode) registerUserData.append('zip', values.postalCode)\n\n // Address fields\n if (values.country && values.country !== '-1') {\n registerUserData.append('country', values.country)\n }\n if (values.state && values.state !== '-1') {\n registerUserData.append('state', values.state)\n }\n\n // Age verification\n if (isAgeRequired && values.dateOfBirth) {\n addDateOfBirthToFormData(registerUserData, values.dateOfBirth)\n }\n\n return registerUserData\n}\n\n// Helper to add date of birth fields to form data\nconst addDateOfBirthToFormData = (formData: FormData, dateOfBirth: string): void => {\n const dob = new Date(dateOfBirth)\n formData.append('dob_day', dob.getDate().toString())\n formData.append('dob_month', (dob.getMonth() + 1).toString())\n formData.append('dob_year', dob.getFullYear().toString())\n}\n\n// Helper to create checkout request body\nexport const createCheckoutBody = (\n values: CheckoutFormValues,\n isAgeRequired?: boolean\n): ICheckoutBody => {\n // Use the ticket holders from the form values - no fallbacks\n const ticketHolders = values.ticketHolders.map((holder) => ({\n email: holder.email,\n first_name: holder.firstName,\n last_name: holder.lastName,\n phone: holder.phone,\n }))\n\n const body: ICheckoutBody = {\n attributes: {\n city: values.city,\n confirm_email: values.emailConfirmation,\n country:\n values.country && values.country !== '-1'\n ? parseInt(values.country, 10)\n : undefined,\n email: values.email,\n first_name: values.firstName,\n last_name: values.lastName,\n password: values.password || '',\n phone: values.phone || '',\n state:\n values.state && values.state !== '-1' ? parseInt(values.state, 10) : undefined,\n street_address: values.street,\n zip: values.postalCode,\n ticket_holders: ticketHolders,\n ttf_opt_in: values.isSubToTicketFairy,\n brand_opt_in: values.isSubToBrand,\n },\n }\n\n if (values.addons && Object.keys(values.addons).length > 0) {\n body.attributes.add_ons = {}\n body.attributes.add_on_data_capture = {}\n\n Object.entries(values.addons).forEach(([addonId, addonData]) => {\n if (addonData.quantity > 0) {\n body.attributes.add_ons[addonId] = addonData.quantity\n\n if (addonData.customFields && Object.keys(addonData.customFields).length > 0) {\n body.attributes.add_on_data_capture[addonId] = {}\n\n Object.entries(addonData.customFields).forEach(([key, value]) => {\n if (value !== undefined && value !== '') {\n body.attributes.add_on_data_capture[addonId][key] = value\n }\n })\n }\n }\n })\n }\n\n // Add date of birth if required\n if (isAgeRequired && values.dateOfBirth) {\n const dob = new Date(values.dateOfBirth)\n body.attributes.dob_day = dob.getDate()\n body.attributes.dob_month = dob.getMonth() + 1\n body.attributes.dob_year = dob.getFullYear()\n }\n\n // Add custom fields if present\n if (values.customFields && Object.keys(values.customFields).length > 0) {\n body.attributes.data_capture = {}\n // Format custom fields for API\n Object.entries(values.customFields).forEach(([key, value]) => {\n if (value !== undefined && value !== '') {\n body.attributes.data_capture![key] = value\n }\n })\n }\n\n return body\n}\n\nexport const getFieldType = (type: CustomField['type']): FieldType => {\n switch (type) {\n case 'text':\n return FieldType.INPUT\n case 'textarea':\n return FieldType.TEXTAREA\n case 'phone':\n return FieldType.PHONE\n case 'radio':\n return FieldType.RADIO\n case 'select':\n return FieldType.SELECT\n case 'select_multi':\n return FieldType.SELECT_MULTI\n }\n}\n","import {\n useMutation,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { AxiosError } from 'axios'\nimport { useCallback } from 'react'\n\nimport { ApiResponse } from '../../../api/api.types'\nimport { Client } from '../../../api/ApiClient'\nimport { logger } from '../../../utils/Logger'\nimport { ICheckoutBody } from '../../../api/types'\nimport {\n AddonsResponse,\n AddToCartResponse,\n CartResponse,\n CheckoutResponse,\n EventResponse,\n IAddToCartParams,\n PaymentDataResponse,\n PaymentSuccessResponse,\n TicketsResponse,\n UpdateCheckoutParams,\n UpdateCheckoutResponse,\n} from '../types'\n\n/**\n * Hook to fetch event information\n */\nexport const useEventInfo = (\n eventId?: string | number,\n options?: UseQueryOptions<ApiResponse<EventResponse>, AxiosError>\n) => {\n return useQuery<ApiResponse<EventResponse>, AxiosError>({\n queryKey: ['eventInfo', eventId],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching event info', { eventId })\n return Client.get<ApiResponse<EventResponse>>(`v1/event/${eventId}`)\n .then((response) => {\n logger.debug('[api-hooks] Event info fetched successfully', {\n eventId,\n eventName: response.data.data?.attributes?.name,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch event info', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n enabled: !!eventId,\n ...options,\n })\n}\n\n/**\n * Hook to fetch available tickets\n */\nexport const useTickets = (\n eventId?: string | number,\n options?: UseQueryOptions<ApiResponse<TicketsResponse>, AxiosError>\n) => {\n return useQuery<ApiResponse<TicketsResponse>, AxiosError>({\n queryKey: ['tickets', eventId],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching tickets', { eventId })\n return Client.get<ApiResponse<TicketsResponse>>(`v1/event/${eventId}/tickets/`)\n .then((response) => {\n const ticketCount = Object.keys(\n response.data.data?.data?.attributes?.tickets || {}\n ).length\n logger.debug('[api-hooks] Tickets fetched successfully', {\n eventId,\n ticketCount,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch tickets', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n enabled: !!eventId,\n ...options,\n })\n}\n\n/**\n * Hook to add items to cart\n */\nexport const useAddToCart = () => {\n return useMutation<\n ApiResponse<AddToCartResponse>,\n AxiosError,\n { eventId: string | number; ticketData: IAddToCartParams }\n >({\n mutationFn: ({ eventId, ticketData }) => {\n logger.debug('[api-hooks] Adding items to cart', {\n eventId,\n quantity: ticketData.attributes.product_cart_quantity,\n })\n return Client.post<ApiResponse<AddToCartResponse>>(\n `v1/event/${eventId}/add-to-cart/`,\n ticketData\n )\n .then((response) => {\n logger.debug('[api-hooks] Items added to cart successfully', { eventId })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to add items to cart', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to process checkout\n */\nexport const useCheckout = () => {\n return useMutation<ApiResponse<CheckoutResponse>, AxiosError, ICheckoutBody>({\n mutationFn: (checkoutData) => {\n logger.debug('[api-hooks] Processing checkout', {\n email: checkoutData.attributes.email,\n })\n return Client.post<ApiResponse<CheckoutResponse>>(`v1/on-checkout/`, {\n data: checkoutData,\n })\n .then((response) => {\n logger.debug('[api-hooks] Checkout processed successfully', {\n hash: response.data.data?.attributes?.hash,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Checkout failed', { error: error?.message })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to update checkout with add-ons\n */\nexport const useUpdateCheckout = () => {\n return useMutation<\n ApiResponse<UpdateCheckoutResponse>,\n AxiosError,\n UpdateCheckoutParams\n >({\n mutationFn: (params) => {\n logger.debug('[api-hooks] Updating checkout with add-ons', {\n eventId: params.attributes.event_id,\n })\n return Client.post<ApiResponse<UpdateCheckoutResponse>>(`v1/checkout`, {\n data: params,\n })\n .then((response) => {\n logger.debug('[api-hooks] Checkout updated successfully')\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to update checkout', { error: error?.message })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to get payment data\n */\nexport const usePaymentData = () => {\n return useMutation<ApiResponse<PaymentDataResponse>, AxiosError, string>({\n mutationFn: (orderHash) => {\n logger.debug('[api-hooks] Fetching payment data', { orderHash })\n return Client.get<ApiResponse<PaymentDataResponse>>(`/v1/order/${orderHash}/review`)\n .then((response) => {\n logger.debug('[api-hooks] Payment data fetched successfully', { orderHash })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch payment data', {\n orderHash,\n error: error?.message,\n })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to notify backend after payment success\n */\nexport const usePaymentSuccess = () => {\n return useMutation<ApiResponse<PaymentSuccessResponse>, AxiosError, string>({\n mutationFn: (orderHash) => {\n logger.debug('[api-hooks] Confirming payment success', { orderHash })\n return Client.post<ApiResponse<PaymentSuccessResponse>>(\n `/v1/order/${orderHash}/success/`\n )\n .then((response) => {\n logger.debug('[api-hooks] Payment success confirmed', { orderHash })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to confirm payment success', {\n orderHash,\n error: error?.message,\n })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to fetch cart data\n */\nexport const useCart = (\n options?: UseQueryOptions<ApiResponse<CartResponse>, AxiosError>\n) => {\n const queryClient = useQueryClient()\n const query = useQuery<ApiResponse<CartResponse>, AxiosError>({\n queryKey: ['cart'],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching cart data')\n return Client.get<ApiResponse<CartResponse>>('v1/cart/')\n .then((response) => {\n const cartItems = response.data.data?.attributes?.cart?.length || 0\n logger.debug('[api-hooks] Cart data fetched successfully', { cartItems })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch cart', { error: error?.message })\n throw error\n })\n },\n ...options,\n })\n\n const invalidate = useCallback(\n () => queryClient.invalidateQueries({ queryKey: ['cart'] }),\n [queryClient]\n )\n\n return { ...query, invalidate }\n}\n\n/**\n * Hook to get add-ons for an event\n */\nexport const useAddons = (eventId?: string | number) => {\n return useQuery<ApiResponse<AddonsResponse>, AxiosError>({\n queryKey: ['addons', eventId],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching add-ons', { eventId })\n return Client.get<ApiResponse<AddonsResponse>>(`v1/event/${eventId}/add-ons`)\n .then((response) => {\n const addonCount = response.data.data?.attributes?.add_ons?.length || 0\n logger.debug('[api-hooks] Add-ons fetched successfully', {\n eventId,\n addonCount,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch add-ons', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n enabled: !!eventId,\n })\n}\n\n/**\n * Hook to get event conditions\n */\nexport interface EventConditionsResponse {\n attributes: {\n conditions: Array<{\n id: string\n name: string\n content: string\n is_required: boolean\n }>\n }\n}\n\nexport const useEventConditions = (eventId?: string | number) => {\n return useQuery<ApiResponse<EventConditionsResponse>, AxiosError>({\n queryKey: ['eventConditions', eventId],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching event conditions', { eventId })\n return Client.get<ApiResponse<EventConditionsResponse>>(\n `v1/event/${eventId}/conditions`\n )\n .then((response) => {\n const conditionCount = response.data.data?.attributes?.conditions?.length || 0\n logger.debug('[api-hooks] Event conditions fetched successfully', {\n eventId,\n conditionCount,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch event conditions', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n enabled: !!eventId,\n })\n}\n","import { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport React, { JSX, useCallback, useMemo, useRef, useState } from 'react'\nimport {\n ScrollView,\n ScrollViewScrollToOptions,\n StyleProp,\n StyleSheet,\n TextStyle,\n ViewStyle,\n} from 'react-native'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\n\nimport { CartTimer, FormField, Login } from '../../components'\nimport { ICartTimerStyles } from '../../components/cartTimer/types'\nimport {\n ILoginBrandImages,\n ILoginSuccessData,\n ILoginViewStyles,\n} from '../../components/login/types'\nimport { IError } from '../../types'\nimport { logger } from '../../utils/Logger'\nimport { useUserProfile } from '../auth/api-hooks'\nimport { IRegisterUserResponse } from '../auth/types'\nimport { CheckoutForm, PaymentForm } from './form'\nimport { CheckoutFormStyles } from './form/styles'\nimport { ICheckoutSuccessData, useCheckoutFlow } from './hooks/use-checkout'\nimport { CheckoutTexts, OrderResult } from './types'\nimport { StripeProvider } from '@stripe/stripe-react-native'\n\nexport interface CheckoutV2Props {\n isSinglePageCheckout?: boolean\n onCartExpired?: () => void\n onCheckoutSuccess?: (data: ICheckoutSuccessData) => void\n onCheckoutError?: (error: any) => void\n onPaymentSuccess?: (data: OrderResult) => void\n onPaymentError?: (error: any) => void\n onLoginSuccess?: (data: ILoginSuccessData) => void\n onLoginError?: (error: any) => void\n onLogoutSuccess?: () => void\n onRegistrationSuccess?: (data: IRegisterUserResponse) => void\n onRegistrationError?: (error: any) => void\n isAgeRequired?: boolean\n minimumAge?: number\n isPhoneRequired?: boolean\n isPhoneHidden?: boolean\n loginBrandImages?: ILoginBrandImages\n styles?: CheckoutStyles\n texts?: CheckoutTexts\n}\n\nexport interface CheckoutStyles {\n container?: StyleProp<ViewStyle>\n contentContainer?: StyleProp<ViewStyle>\n title?: StyleProp<TextStyle>\n login?: ILoginViewStyles\n cartTimer?: ICartTimerStyles\n form?: CheckoutFormStyles\n paymentForm?: CheckoutFormStyles\n}\n\nconst defaultStyles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#ffffff',\n padding: 20,\n },\n contentContainer: {\n paddingBottom: 24,\n },\n title: {\n fontSize: 24,\n fontWeight: 'bold',\n marginBottom: 20,\n },\n})\n\nexport const CheckoutController = ({\n isSinglePageCheckout = true,\n onCartExpired: _onCartExpired,\n onCheckoutSuccess: _onCheckoutSuccess,\n onCheckoutError: _onCheckoutError,\n onPaymentSuccess: _onPaymentSuccess,\n onPaymentError: _onPaymentError,\n onLoginSuccess: _onLoginSuccess,\n onLoginError: _onLoginError,\n onLogoutSuccess: _onLogoutSuccess,\n onRegistrationSuccess: _onRegistrationSuccess,\n onRegistrationError: _onRegistrationError,\n isAgeRequired = false,\n minimumAge = 18,\n isPhoneRequired = false,\n isPhoneHidden = false,\n loginBrandImages,\n styles: stylesProp,\n texts: textsProp,\n}: CheckoutV2Props) => {\n const scrollRef = useRef<{\n scrollTo: (options: ScrollViewScrollToOptions) => void\n }>(null)\n const [checkoutSuccessData, setCheckoutSuccessData] = useState<ICheckoutSuccessData>()\n const [loginMessage, setLoginMessage] = useState('')\n const [isLoginDialogVisible, setIsLoginDialogVisible] = useState(false)\n const formTexts = textsProp?.form\n const loginTexts = useMemo(() => {\n const baseLogin = textsProp?.login\n const baseDialog = baseLogin?.dialog ?? {}\n const dialogMessage = loginMessage || baseDialog.message\n\n if (!baseLogin && !dialogMessage) {\n return undefined\n }\n\n return {\n ...baseLogin,\n dialog: {\n ...baseDialog,\n message: dialogMessage,\n },\n }\n }, [loginMessage, textsProp])\n\n const cartTimerTexts = textsProp?.cartTimer\n\n const { data: userProfile, invalidate } = useUserProfile()\n\n const onCheckoutSuccess = useCallback(\n (data: ICheckoutSuccessData) => {\n setCheckoutSuccessData(data)\n _onCheckoutSuccess?.(data)\n },\n [_onCheckoutSuccess]\n )\n\n const onRegistrationSuccess = useCallback(\n (data: IRegisterUserResponse) => {\n _onRegistrationSuccess?.(data)\n invalidate()\n },\n [_onRegistrationSuccess, invalidate]\n )\n\n const onRegistrationError = useCallback(\n (error: any) => {\n logger.error('[CheckoutController] Registration failed:', { error })\n _onRegistrationError?.(error)\n // Show login dialog\n setLoginMessage(error)\n setIsLoginDialogVisible(true)\n },\n [_onRegistrationError]\n )\n\n const checkoutFlow = useCheckoutFlow({\n onCheckoutSuccess,\n onCartExpired: _onCartExpired,\n onCheckoutError: _onCheckoutError,\n onPaymentError: _onPaymentError,\n onPaymentSuccess: _onPaymentSuccess,\n onRegistrationSuccess,\n onRegistrationError,\n isPhoneRequired,\n isAgeRequired,\n isPhoneHidden,\n minimumAge,\n isSinglePageCheckout,\n customerProfile: userProfile?.data,\n })\n\n const { secondsLeft } = checkoutFlow\n\n const handleLoginError = (error: IError) => {\n logger.error('[CheckoutController] Login error:', { error })\n _onLoginError?.(error)\n }\n\n const handleLogout = () => {\n logger.debug('[CheckoutController] User logged out')\n invalidate()\n _onLogoutSuccess?.()\n }\n\n const handleLoginSuccess = useCallback(\n (data: ILoginSuccessData) => {\n logger.debug('[CheckoutController] Login successful', {\n email: data?.userProfile?.email,\n })\n invalidate()\n _onLoginSuccess?.(data)\n setIsLoginDialogVisible(false)\n },\n [_onLoginSuccess, invalidate]\n )\n\n const containerStyle = StyleSheet.flatten([\n defaultStyles.container,\n stylesProp?.container,\n ]) as StyleProp<ViewStyle>\n\n const contentContainerStyle = StyleSheet.flatten([\n defaultStyles.contentContainer,\n stylesProp?.contentContainer,\n ]) as StyleProp<ViewStyle>\n\n const titleStyle = StyleSheet.flatten([\n defaultStyles.title,\n stylesProp?.title,\n ]) as StyleProp<TextStyle>\n\n return (\n <>\n <KeyboardAwareScrollView\n innerRef={(ref) => (scrollRef.current = ref)}\n style={containerStyle}\n contentContainerStyle={contentContainerStyle}\n keyboardShouldPersistTaps=\"handled\"\n enableAutomaticScroll={false}\n extraScrollHeight={0}\n >\n {/* Login Component */}\n <Login\n onLoginSuccessful={handleLoginSuccess}\n onLoginError={handleLoginError}\n onLogoutSuccess={handleLogout}\n isLoginDialogVisible={isLoginDialogVisible}\n showLoginDialog={() => setIsLoginDialogVisible(true)}\n hideLoginDialog={() => {\n setIsLoginDialogVisible(false)\n setLoginMessage('')\n }}\n userFirstName={userProfile?.data?.firstName}\n brandImages={loginBrandImages}\n texts={loginTexts}\n styles={stylesProp?.login}\n />\n <FormField\n fieldType=\"title\"\n title={formTexts?.form?.sectionTitle || 'Personal Information'}\n titleStyle={titleStyle}\n />\n\n {/* Use our new CheckoutForm component */}\n {checkoutFlow.checkoutData?.attributes?.additional_payment_information\n ?.basic_config?.apiKey ? (\n <StripeProvider\n publishableKey={\n checkoutFlow.checkoutData.attributes.additional_payment_information\n .basic_config.apiKey\n }\n >\n {isSinglePageCheckout || !checkoutSuccessData ? (\n <CheckoutForm\n scrollRef={scrollRef}\n styles={stylesProp?.form}\n texts={formTexts}\n {...checkoutFlow}\n />\n ) : (\n <PaymentForm\n scrollRef={scrollRef}\n styles={stylesProp?.paymentForm ?? stylesProp?.form}\n texts={formTexts}\n onSubmit={async () =>\n await checkoutFlow.handlePayment(checkoutSuccessData)\n }\n orderItems={checkoutFlow.orderItems}\n />\n )}\n </StripeProvider>\n ) : null}\n </KeyboardAwareScrollView>\n\n {/* Cart Timer */}\n {typeof secondsLeft === 'number' && secondsLeft > 0 && (\n <CartTimer\n secondsLeft={secondsLeft}\n shouldNotMinimize={false}\n styles={stylesProp?.cartTimer}\n texts={cartTimerTexts}\n />\n )}\n </>\n )\n}\n\nconst queryClient = new QueryClient()\n\nexport const CheckoutProvider = ({ children }: { children: React.ReactNode }) => {\n return <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n}\n","import { CardForm, CardFormView } from '@stripe/stripe-react-native'\nimport { FormikProvider, useFormik } from 'formik'\nimport React, { ComponentRef, useCallback, useMemo, useRef, useState } from 'react'\nimport {\n ActivityIndicator,\n findNodeHandle,\n Text,\n TouchableOpacity,\n View,\n ViewProps,\n} from 'react-native'\n\nimport { Loading } from '../../../components'\nimport { logger } from '../../../utils/Logger'\nimport { readableError } from '../../../utils/handlers'\nimport { FormikField } from '../../form'\nimport { FieldType } from '../../form/types'\nimport AddonsContainer from '../components/AddonsContainer'\nimport Conditions from '../components/Conditions'\nimport OrderReview, { IOrderItem } from '../components/OrderReview'\nimport { createCheckoutFormConfig, formFieldsOrder } from './config'\nimport { CheckoutFormComputedStyles, mergeCheckoutFormStyles } from './styles'\nimport { mergeCheckoutFormTexts } from './texts'\nimport {\n CheckoutFormOrderSummaryTexts,\n CheckoutFormPaymentTexts,\n CheckoutFormProps,\n CheckoutFormTexts,\n PaymentFormProps,\n} from './types'\nimport { getFieldType } from '../utils'\n\nconst MemoizedAddonsContainer = React.memo(AddonsContainer)\nconst MemoizedConditions = React.memo(Conditions)\nconst MemoizedOrderReview = React.memo(OrderReview)\n\nexport const CheckoutForm: React.FC<CheckoutFormProps> = ({\n initialValues,\n isSubmitting,\n isLoggedIn,\n isAgeRequired = false,\n minimumAge,\n isTicketFree = false,\n isPhoneRequired = false,\n isPhoneHidden = false,\n countries,\n states,\n onCountryChange,\n orderItems,\n availableAddons = [],\n onAddonChange,\n onSubmit: onSubmitCallback,\n scrollRef,\n isInitialLoading,\n eventCurrency,\n conditions,\n isSinglePageCheckout = true,\n orderCustomFields = [],\n ticketCustomFields = [],\n addonCustomFields = [],\n styles: stylesProp,\n texts: textsProp,\n}) => {\n // Handle card form state for payment\n const [isCardFormComplete, setIsCardFormComplete] = useState(false)\n const [cardFormError, setCardFormError] = useState<string>()\n\n const styles = useMemo<CheckoutFormComputedStyles>(\n () => mergeCheckoutFormStyles(stylesProp),\n [stylesProp]\n )\n\n const texts = useMemo<Required<CheckoutFormTexts>>(\n () => mergeCheckoutFormTexts(textsProp),\n [textsProp]\n )\n\n const fieldComponentStyles = styles.fields\n\n const addonsStyles = useMemo(\n () => ({\n container: styles.addonSection,\n title: styles.sectionTitle,\n addonItem: styles.addonItem,\n addonInfo: styles.addonInfo,\n addonName: styles.addonName,\n addonRow: styles.addonRow,\n addonPrice: styles.addonPrice,\n addonPriceWithFees: styles.addonPriceWithFees,\n addonDescription: styles.addonDescription,\n addonSelectContainer: styles.addonSelectContainer,\n fieldComponentStyles,\n }),\n [fieldComponentStyles, styles]\n )\n\n // Initial values already include default custom field values from the hook\n const modifiedInitialValues = {\n ...initialValues,\n isCardFormComplete: isTicketFree ? true : initialValues.isCardFormComplete,\n }\n const requiredConditions = useMemo(\n () => conditions?.filter((c) => c.is_required) || [],\n [conditions]\n )\n\n const formik = useFormik({\n initialValues: modifiedInitialValues,\n onSubmit: onSubmitCallback,\n validationSchema: createCheckoutFormConfig({\n minimumAge,\n isAgeRequired,\n requirePassword: !isLoggedIn,\n isTicketFree,\n isSinglePageCheckout,\n requiredConditions,\n isPhoneRequired,\n orderCustomFields,\n ticketCustomFields,\n }),\n validateOnChange: true,\n enableReinitialize: true,\n })\n const fieldTopRef = useRef<Record<string, number>>({})\n\n // Helper: scroll to a field by key using onLayout-captured positions\n const scrollToField = (key: string, attempt: number = 0) => {\n if (key === 'isCardFormComplete' || !scrollRef.current) return\n\n let y = fieldTopRef.current[key]\n\n // Fallback for nested ticket holder fields\n if (\n !(typeof y === 'number' && Number.isFinite(y)) &&\n key.startsWith('ticketHolders[')\n ) {\n const holderMatch = key.match(/^ticketHolders\\[(\\d+)\\]/)\n const index = holderMatch ? holderMatch[1] : undefined\n if (index != null) {\n const holderKey = `ticketHolders[${index}]`\n y = fieldTopRef.current[holderKey]\n if (!(typeof y === 'number' && Number.isFinite(y))) {\n y = fieldTopRef.current.ticketHolders\n }\n }\n }\n\n if (typeof y === 'number' && Number.isFinite(y)) {\n try {\n scrollRef.current.scrollTo({ y: Math.max(0, y - 16), animated: true })\n logger.debug('[CheckoutForm] Scrolled to field', { key, position: y })\n } catch (e) {\n logger.debug('[CheckoutForm] scrollTo failed', {\n key,\n error: e instanceof Error ? e.message : String(e),\n })\n }\n } else if (attempt < 3) {\n setTimeout(() => scrollToField(key, attempt + 1), 50)\n } else {\n logger.warn('[CheckoutForm] Could not scroll to field - position not found', {\n key,\n })\n }\n }\n\n const onPressSubmit = async () => {\n logger.debug('[CheckoutForm] Form submission initiated')\n const allFields = Object.keys(initialValues)\n\n // Create touched fields with special handling for nested ticket holders\n const touchedFields = allFields.reduce(\n (acc, field) => {\n // Handle ticketHolders specially as a nested structure\n if (field === 'ticketHolders') {\n // Create a properly structured touched fields object for ticket holders\n acc[field] = formik.values.ticketHolders.map(() => ({\n firstName: true,\n lastName: true,\n email: true,\n phone: true,\n }))\n } else {\n // Mark all other fields as touched\n acc[field] = true\n }\n return acc\n },\n {} as Record<string, boolean | Record<string, boolean>[]>\n )\n\n const result = await formik.setTouched(touchedFields, true)\n const formErrors = typeof result === 'object' ? result : {}\n const paymentValid = isCardFormComplete || isTicketFree || !isSinglePageCheckout\n logger.debug('[CheckoutForm] submitting', {\n paymentValid,\n isCardFormComplete,\n isTicketFree,\n isSinglePageCheckout,\n })\n\n if (!paymentValid) {\n setCardFormError(texts.payment.errorRequired)\n }\n\n if (Object.keys(formErrors).length === 0 && paymentValid) {\n logger.debug('[CheckoutForm] Form validation passed, submitting', {\n email: formik.values.email,\n })\n formik.handleSubmit()\n return\n }\n logger.warn('[CheckoutForm] Form validation failed', {\n errors: Object.keys(formErrors),\n paymentValid,\n })\n\n const firstErroredKey = formFieldsOrder.find(\n (k) => (formErrors as any)[k as keyof typeof formErrors] != null\n )\n\n if (firstErroredKey === 'ticketHolders') {\n const thErrors = (formErrors as any).ticketHolders as Array<any>\n if (Array.isArray(thErrors)) {\n const erroredIndex = thErrors.findIndex((e) => e && Object.keys(e).length > 0)\n if (erroredIndex >= 0) {\n scrollToField(`ticketHolders[${erroredIndex}]`)\n logger.debug('[CheckoutForm] Scrolling to errored ticket holder', {\n index: erroredIndex,\n })\n return\n }\n }\n scrollToField('ticketHolders')\n } else if (firstErroredKey) {\n scrollToField(firstErroredKey)\n } else if (!paymentValid) {\n scrollToField('isCardFormComplete')\n }\n }\n\n const handleAddonChange = useCallback(\n (addonId: string, quantity: number) => {\n formik.setFieldValue(`addons.${addonId}.quantity`, quantity)\n if (quantity > 0) {\n // reapply defaults if coming from 0\n addonCustomFields.forEach((field) => {\n if (field.defaultValue != null) {\n formik.setFieldValue(\n `addons.${addonId}.customFields.${field.name}`,\n Array.isArray(field.defaultValue)\n ? field.defaultValue.join(',')\n : field.defaultValue\n )\n }\n })\n }\n onAddonChange?.(addonId, quantity)\n },\n [formik, onAddonChange]\n )\n return (\n <FormikProvider value={formik}>\n {isInitialLoading && <Loading />}\n <View style={styles.form} collapsable={false}>\n <View onLayout={(e) => (fieldTopRef.current.firstName = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'firstName',\n type: FieldType.INPUT,\n label: texts.form.firstName,\n placeholder: texts.form.firstNamePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.lastName = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'lastName',\n type: FieldType.INPUT,\n label: texts.form.lastName,\n placeholder: texts.form.lastNamePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.email = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'email',\n type: FieldType.INPUT,\n label: texts.form.email,\n placeholder: texts.form.emailPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View\n onLayout={(e) =>\n (fieldTopRef.current.emailConfirmation = e.nativeEvent.layout.y)\n }\n >\n <FormikField\n field={{\n name: 'emailConfirmation',\n type: FieldType.INPUT,\n label: texts.form.emailConfirmation,\n placeholder: texts.form.emailConfirmationPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.password = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'password',\n type: FieldType.INPUT,\n label: texts.form.password,\n placeholder: texts.form.passwordPlaceholder,\n hide: isLoggedIn,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View\n onLayout={(e) =>\n (fieldTopRef.current.passwordConfirmation = e.nativeEvent.layout.y)\n }\n >\n <FormikField\n field={{\n name: 'passwordConfirmation',\n type: FieldType.INPUT,\n label: texts.form.passwordConfirmation,\n placeholder: texts.form.passwordConfirmationPlaceholder,\n hide: isLoggedIn,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.phone = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'phone',\n type: FieldType.PHONE,\n label: texts.form.phone,\n placeholder: texts.form.phonePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.phone = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'dateOfBirth',\n type: FieldType.DATE_PICKER,\n label: texts.form.dateOfBirth,\n placeholder: texts.form.dateOfBirthPlaceholder,\n hide: !isAgeRequired,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View\n onLayout={(e) => (fieldTopRef.current.dateOfBirth = e.nativeEvent.layout.y)}\n >\n <FormikField\n field={{\n name: 'street',\n type: FieldType.INPUT,\n label: texts.form.street,\n placeholder: texts.form.streetPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.street = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'city',\n type: FieldType.INPUT,\n label: texts.form.city,\n placeholder: texts.form.cityPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.country = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'country',\n type: FieldType.SELECT,\n label: texts.form.country,\n options: countries.map((c) => ({\n value: String(c.id),\n label: c.name,\n })),\n onChange: (val) => {\n onCountryChange(val)\n },\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.country = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'state',\n type: FieldType.SELECT,\n label: texts.form.state,\n options: states,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.postalCode = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'postalCode',\n type: FieldType.INPUT,\n label: texts.form.postalCode,\n placeholder: texts.form.postalCodePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n {orderCustomFields.map((field) => (\n <View\n key={field.name}\n onLayout={(e) => (fieldTopRef.current[field.name] = e.nativeEvent.layout.y)}\n >\n <FormikField\n field={{\n name: `customFields.${field.name}`,\n type: getFieldType(field.type),\n label: texts.form.customFields?.[field.name]?.label ?? field.label,\n placeholder:\n texts.form.customFields?.[field.name]?.placeholder ??\n (field.description || `Enter ${field.label}`),\n options: field.options?.map((option) => ({\n value: option.value,\n label: option.name,\n })),\n }}\n styles={fieldComponentStyles}\n />\n </View>\n ))}\n <View>\n <FormikField\n field={{\n name: 'isSubToTicketFairy',\n type: FieldType.CHECKBOX,\n label: texts.marketingOptIns.ticketFairyOptIn,\n }}\n styles={fieldComponentStyles}\n />\n <FormikField\n field={{\n name: 'isSubToBrand',\n type: FieldType.CHECKBOX,\n label: texts.marketingOptIns.organizerOptIn,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View\n collapsable={false}\n onLayout={(e) => {\n fieldTopRef.current.ticketHolders = e.nativeEvent.layout.y\n }}\n >\n <Text style={styles.sectionTitle}>{texts.ticketHolders.title}</Text>\n\n {formik.values.ticketHolders.map((_, index) => {\n const ticketLabel = (\n texts.ticketHolders.itemTitle || 'Ticket {index}'\n ).replace('{index}', String(index + 1))\n\n return (\n <View\n key={index}\n collapsable={false}\n onLayout={(e) => {\n const sectionY = fieldTopRef.current.ticketHolders ?? 0\n const holderY = sectionY + e.nativeEvent.layout.y\n fieldTopRef.current[`ticketHolders[${index}]`] = holderY\n }}\n >\n <Text style={styles.ticketHolderTitle}>{ticketLabel}</Text>\n\n <View\n collapsable={false}\n onLayout={(e) => {\n const baseY =\n fieldTopRef.current[`ticketHolders[${index}]`] ??\n fieldTopRef.current.ticketHolders ??\n 0\n fieldTopRef.current[`ticketHolders[${index}].firstName`] =\n baseY + e.nativeEvent.layout.y\n }}\n >\n <FormikField\n field={{\n name: `ticketHolders[${index}].firstName`,\n type: FieldType.INPUT,\n label: texts.ticketHolders.firstName,\n placeholder: texts.ticketHolders.firstNamePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n\n <View\n collapsable={false}\n onLayout={(e) => {\n const baseY =\n fieldTopRef.current[`ticketHolders[${index}]`] ??\n fieldTopRef.current.ticketHolders ??\n 0\n fieldTopRef.current[`ticketHolders[${index}].lastName`] =\n baseY + e.nativeEvent.layout.y\n }}\n >\n <FormikField\n field={{\n name: `ticketHolders[${index}].lastName`,\n type: FieldType.INPUT,\n label: texts.ticketHolders.lastName,\n placeholder: texts.ticketHolders.lastNamePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n\n <View\n collapsable={false}\n onLayout={(e) => {\n const baseY =\n fieldTopRef.current[`ticketHolders[${index}]`] ??\n fieldTopRef.current.ticketHolders ??\n 0\n fieldTopRef.current[`ticketHolders[${index}].email`] =\n baseY + e.nativeEvent.layout.y\n }}\n >\n <FormikField\n field={{\n name: `ticketHolders[${index}].email`,\n type: FieldType.INPUT,\n label: texts.ticketHolders.email,\n placeholder: texts.ticketHolders.emailPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n\n <View\n collapsable={false}\n onLayout={(e) => {\n const baseY =\n fieldTopRef.current[`ticketHolders[${index}]`] ??\n fieldTopRef.current.ticketHolders ??\n 0\n fieldTopRef.current[`ticketHolders[${index}].phone`] =\n baseY + e.nativeEvent.layout.y\n }}\n >\n <FormikField\n field={{\n name: `ticketHolders[${index}].phone`,\n type: FieldType.PHONE,\n label: texts.ticketHolders.phone,\n placeholder: texts.ticketHolders.phonePlaceholder,\n hide: isPhoneHidden,\n }}\n styles={fieldComponentStyles}\n />\n\n {/* Ticket custom fields */}\n {ticketCustomFields.map((field) => (\n <FormikField\n key={`${index}-${field.name}`}\n field={{\n name: `ticketHolders[${index}].customFields.${field.name}`,\n type: getFieldType(field.type),\n label:\n texts.ticketHolders.customFields?.[field.name]?.label ??\n field.label,\n required: field.required,\n placeholder:\n texts.ticketHolders.customFields?.[field.name]?.placeholder ??\n (field.description || `Enter ${field.label}`),\n options: field.options?.map((option) => ({\n value: option.value,\n label: option.name,\n })),\n }}\n styles={fieldComponentStyles}\n />\n ))}\n </View>\n </View>\n )\n })}\n </View>\n <View style={styles.sectionContainer}>\n <MemoizedAddonsContainer\n addonCustomFields={addonCustomFields}\n addons={formik.values.addons}\n availableAddons={availableAddons || []}\n onAddonChange={handleAddonChange}\n currency={eventCurrency}\n styles={addonsStyles}\n texts={{\n title: texts.addons.title,\n quantityLabel: texts.addons.quantityLabel,\n priceWithFeesSuffix: texts.addons.priceWithFeesSuffix,\n }}\n />\n </View>\n {/* Event Conditions */}\n {conditions && conditions.length > 0 && (\n <View style={styles.sectionContainer}>\n <MemoizedConditions\n conditions={conditions}\n acceptedConditions={formik.values.acceptedConditions}\n onAcceptCondition={(conditionId, isAccepted) => {\n formik.setFieldValue('acceptedConditions', {\n ...formik.values.acceptedConditions,\n [conditionId]: isAccepted,\n })\n }}\n texts={{\n title: texts.conditions.title,\n viewButton: texts.conditions.viewButton,\n hideButton: texts.conditions.hideButton,\n acceptCheckbox: texts.conditions.acceptLabel,\n }}\n />\n </View>\n )}\n\n {/* Payment - only show in single-page mode and if ticket is not free */}\n {!isTicketFree && isSinglePageCheckout && (\n <View\n style={styles.sectionContainer}\n onLayout={(e) =>\n (fieldTopRef.current.isCardFormComplete = e.nativeEvent.layout.y)\n }\n >\n <Payment\n orderItems={orderItems}\n onFormComplete={(details) => {\n logger.debug('[CheckoutForm] Payment form complete', { ...details })\n if (details.complete) {\n setCardFormError(undefined)\n }\n setIsCardFormComplete(details.complete)\n }}\n error={cardFormError}\n styles={styles}\n texts={{\n orderSummary: texts.orderSummary,\n payment: texts.payment,\n }}\n />\n </View>\n )}\n\n {/* Submit Button */}\n <TouchableOpacity\n style={[styles.button, isSubmitting ? styles.buttonDisabled : {}]}\n onPress={onPressSubmit}\n disabled={isSubmitting}\n >\n {isSubmitting ? (\n <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n ) : (\n <Text style={styles.buttonText}>\n {isSinglePageCheckout\n ? texts.buttons.singlePageSubmit\n : texts.buttons.goToPayment}\n </Text>\n )}\n </TouchableOpacity>\n </View>\n </FormikProvider>\n )\n}\n\ninterface PaymentProps {\n onFormComplete: (details: CardFormView.Details) => void\n error?: string\n orderItems: IOrderItem[]\n paymentViewProps?: ViewProps\n styles: CheckoutFormComputedStyles\n texts: {\n orderSummary: CheckoutFormOrderSummaryTexts\n payment: CheckoutFormPaymentTexts\n }\n}\n\nexport const Payment = ({\n onFormComplete,\n error,\n orderItems,\n paymentViewProps,\n styles,\n texts,\n}: PaymentProps) => {\n return (\n <View>\n <View style={styles.sectionContainer}>\n <Text style={styles.sectionTitle}>{texts.orderSummary.sectionTitle}</Text>\n <MemoizedOrderReview\n orderItems={orderItems}\n styles={{\n rootContainer: styles.orderReviewContainer,\n item: styles.orderReviewItem,\n }}\n />\n </View>\n\n <View style={styles.sectionContainer} {...paymentViewProps}>\n <Text style={styles.sectionTitle}>{texts.payment.sectionTitle}</Text>\n <View style={styles.paymentContainer}>\n <CardForm\n onFormComplete={(details) => {\n logger.warn('[PaymentForm] CardForm onFormComplete triggered', {\n complete: details.complete,\n details: JSON.stringify(details),\n })\n\n onFormComplete(details)\n }}\n style={styles.cardContainer}\n cardStyle={styles.cardStyle}\n autofocus={false}\n />\n\n {error ? <Text style={styles.errorText}>{error}</Text> : null}\n </View>\n </View>\n </View>\n )\n}\n\nexport const PaymentForm = ({\n orderItems,\n onSubmit,\n styles: stylesProp,\n texts: textsProp,\n}: PaymentFormProps) => {\n const [error, setError] = useState<string>()\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [isCardFormComplete, setIsCardFormComplete] = useState(false)\n\n const styles = useMemo<CheckoutFormComputedStyles>(\n () => mergeCheckoutFormStyles(stylesProp),\n [stylesProp]\n )\n\n const texts = useMemo<Required<CheckoutFormTexts>>(\n () => mergeCheckoutFormTexts(textsProp),\n [textsProp]\n )\n\n const onFormComplete = (details: CardFormView.Details) => {\n logger.warn('[PaymentForm] CardForm onFormComplete triggered', {\n complete: details.complete,\n details: JSON.stringify(details),\n })\n setIsCardFormComplete(details.complete)\n\n if (details.complete) {\n setError(undefined)\n logger.debug('[PaymentForm] Card form marked as complete')\n } else {\n logger.debug('[PaymentForm] Card form incomplete')\n }\n }\n\n const onPressSubmit = async () => {\n try {\n setIsSubmitting(true)\n\n // Don't validate isCardFormComplete here - onFormComplete doesn't trigger on Android v40+\n // Let Stripe's confirmPayment handle validation instead\n logger.debug('[PaymentForm] Submitting payment', { isCardFormComplete })\n\n await onSubmit()\n } catch (e) {\n const errorMsg = readableError(e)\n logger.error('[PaymentForm] Payment submission failed', { error: errorMsg })\n setError(errorMsg)\n } finally {\n setIsSubmitting(false)\n }\n }\n\n return (\n <View>\n <Payment\n orderItems={orderItems}\n onFormComplete={onFormComplete}\n error={error}\n paymentViewProps={{}}\n styles={styles}\n texts={{\n orderSummary: texts.orderSummary,\n payment: texts.payment,\n }}\n />\n {/* Submit Button */}\n <TouchableOpacity\n style={[styles.button, isSubmitting ? styles.buttonDisabled : {}]}\n onPress={onPressSubmit}\n disabled={isSubmitting}\n >\n {isSubmitting ? (\n <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n ) : (\n <Text style={styles.buttonText}>{texts.buttons.paymentSubmit}</Text>\n )}\n </TouchableOpacity>\n </View>\n )\n}\n","import { useField } from 'formik'\nimport React from 'react'\nimport { Text } from 'react-native'\n\nimport {\n Checkbox,\n DatePicker,\n DropdownMaterial,\n Input,\n PhoneInput,\n RadioGroup,\n} from '../../components'\nimport { ICheckboxStyles } from '../../components/checkbox/types'\nimport { IDatePickerStyles } from '../../components/datePicker/types'\nimport { IDropdownMaterialStyles } from '../../components/dropdownMaterial/types'\nimport { IInputStyles } from '../../components/input/types'\nimport { IPhoneInputStyles } from '../../components/phoneInput/types'\nimport { IRadioGroupStyles } from '../../components/radioGroup/types'\nimport { FieldConfig } from './types'\n\nexport interface FormikFieldComponentStyles {\n input?: IInputStyles\n select?: IDropdownMaterialStyles\n selectMulti?: IDropdownMaterialStyles\n phone?: IPhoneInputStyles\n checkbox?: ICheckboxStyles\n radio?: IRadioGroupStyles\n datePicker?: IDatePickerStyles\n}\n\ninterface FormikFieldProps<TValues extends Record<string, unknown>> {\n field: FieldConfig<TValues>\n styles?: FormikFieldComponentStyles\n}\n\nexport const FormikField = React.memo(\n <TValues extends Record<string, unknown>>({\n field,\n styles: componentStyles,\n }: FormikFieldProps<TValues>) => {\n const [formikField, meta, helpers] = useField(field.name)\n\n const value = formikField.value\n const error = meta.touched ? meta.error : undefined\n\n if (field.hide) return null\n\n const handleChange = (val: string | number | boolean | string[]) => {\n field.onChange?.(val)\n helpers.setValue(val)\n }\n\n switch (field.type) {\n case 'input':\n return (\n <Input\n id={field.name}\n value={value}\n label={field.label ?? 'Label'}\n placeholder={field.placeholder}\n error={error}\n onTextChanged={(_, val) => handleChange(val)}\n styles={componentStyles?.input}\n />\n )\n\n case 'textarea':\n return (\n <Input\n id={field.name}\n value={value}\n label={field.label ?? 'Label'}\n placeholder={field.placeholder}\n error={error}\n multiline\n numberOfLines={4}\n onTextChanged={(_, val) => handleChange(val)}\n styles={componentStyles?.input}\n />\n )\n\n case 'select': {\n const options = field.options ?? []\n return (\n <DropdownMaterial\n items={options}\n selectedOption={\n options.find((o) => o.value === value) ?? {\n value: '',\n label: field.placeholder ?? `Select ${field.label}`,\n }\n }\n onSelectItem={(item) => handleChange(item.value)}\n materialInputProps={{\n label: field.label ?? 'Select',\n error,\n }}\n styles={componentStyles?.select}\n />\n )\n }\n\n case 'select_multi': {\n const options = field.options ?? []\n const selectedValues = (Array.isArray(value) ? value : []) as string[]\n const selectedOptions = options.filter((o) => selectedValues.includes(o.value))\n const displayOption = {\n value: '',\n label:\n selectedOptions.length > 0\n ? selectedOptions.map((o) => o.label).join(', ')\n : `Select ${field.label ?? 'items'}`,\n }\n return (\n <DropdownMaterial\n items={options}\n selectedOption={displayOption}\n onSelectItem={(item) => {\n let newValues = [...selectedValues]\n if (newValues.includes(String(item.value))) {\n newValues = newValues.filter((v) => v !== item.value)\n } else {\n newValues.push(String(item.value))\n }\n handleChange(newValues)\n }}\n materialInputProps={{\n label: field.label ?? 'Select Multiple',\n error,\n }}\n styles={componentStyles?.selectMulti ?? componentStyles?.select}\n />\n )\n }\n\n case 'phone':\n return (\n <PhoneInput\n phoneNumber={value}\n onChangePhoneNumber={(payload) => handleChange(payload.input)}\n error={error}\n texts={{ label: field.label }}\n styles={componentStyles?.phone}\n />\n )\n\n case 'checkbox':\n return (\n <Checkbox\n isActive={!!value}\n text={field.label || ''}\n onPress={() => handleChange(!value)}\n styles={componentStyles?.checkbox}\n />\n )\n\n case 'radio':\n return (\n <RadioGroup\n options={field.options ?? []}\n selectedValue={value}\n onValueChange={(val) => handleChange(val)}\n label={field.label}\n error={error}\n styles={componentStyles?.radio}\n />\n )\n\n case 'datePicker':\n return (\n <DatePicker\n selectedDate={value ? new Date(value) : undefined}\n onSelectDate={(date) => handleChange(date.toISOString())}\n error={error}\n text={field.label || 'Select date'}\n placeholder={field.placeholder}\n styles={componentStyles?.datePicker}\n />\n )\n\n default:\n return <Text>{field.type} is not supported</Text>\n }\n }\n)\n","import React, { useCallback } from 'react'\nimport { StyleProp, Text, TextStyle, View, ViewStyle } from 'react-native'\n\nimport { IDropdownMaterialStyles } from '../../../components/dropdownMaterial/types'\nimport { AddonItem } from '../types'\nimport { getFieldType, priceWithCurrency } from '../utils'\nimport { CheckoutFormProps, CheckoutFormValues } from '../form/types'\nimport { FormikField, FormikFieldComponentStyles } from '../../form'\nimport { DropdownMaterial } from '../../../components'\n\nexport interface AddonsContainerStyles {\n container?: StyleProp<ViewStyle>\n title?: StyleProp<TextStyle>\n addonRow?: StyleProp<ViewStyle>\n addonList?: StyleProp<ViewStyle>\n addonItem?: StyleProp<ViewStyle>\n addonInfo?: StyleProp<ViewStyle>\n addonName?: StyleProp<TextStyle>\n addonPrice?: StyleProp<TextStyle>\n addonPriceWithFees?: StyleProp<TextStyle>\n\n addonDescription?: StyleProp<TextStyle>\n addonSelectContainer?: StyleProp<ViewStyle>\n dropdownMaterial?: IDropdownMaterialStyles\n fieldComponentStyles?: FormikFieldComponentStyles\n}\n\ninterface AddonsContainerProps {\n addons: CheckoutFormValues['addons']\n availableAddons: AddonItem[]\n onAddonChange: (addonId: string, quantity: number) => void\n currency?: string\n styles?: AddonsContainerStyles\n texts?: {\n title?: string\n quantityLabel?: string\n priceWithFeesSuffix?: string\n }\n addonCustomFields?: CheckoutFormProps['addonCustomFields']\n}\n\nconst AddonsContainer: React.FC<AddonsContainerProps> = ({\n addons = {},\n availableAddons = [],\n onAddonChange,\n currency,\n styles: customStyles,\n texts,\n addonCustomFields,\n}) => {\n // Generate quantity options for the dropdown\n const generateAddonQuantityOptions = useCallback((addon: AddonItem['attributes']) => {\n const options = []\n // Check different possible locations for max quantity\n const maxQty = addon.maxQuantity || '1'\n const maxQtyNum = parseInt(maxQty, 10)\n\n for (let i = 0; i <= maxQtyNum; i++) {\n options.push({\n value: i.toString(),\n label: i.toString(),\n })\n }\n\n return options\n }, [])\n\n // Don't render if no addons available\n if (!availableAddons || availableAddons.length === 0) {\n return null\n }\n\n return (\n <View style={[customStyles?.container]}>\n <Text style={[customStyles?.title]}>{texts?.title || 'Available Add-ons'}</Text>\n\n <View style={[customStyles?.addonList]}>\n {availableAddons.map((addon) => {\n // Extract addon data from the API structure\n const addonData = addon.attributes\n const addonId = addon.id || addonData.id\n\n // Get price (could be in different locations based on API structure)\n const priceWithFees = addonData.price || 0\n const addonCurrency = addonData.currency || currency\n const isAddonFree = Number(priceWithFees) === 0\n\n const basePriceFormatted = isAddonFree\n ? 'FREE'\n : priceWithCurrency((priceWithFees / 100).toString(), addonCurrency)\n\n return (\n <View key={addonId} style={[customStyles?.addonItem]}>\n <View style={[customStyles?.addonRow]}>\n <View style={[customStyles?.addonInfo]}>\n <Text style={[customStyles?.addonName]}>\n {addonData.name || 'Add-on'}\n </Text>\n <Text style={[customStyles?.addonPrice]}>\n {basePriceFormatted}\n {!isAddonFree && (\n <Text style={[customStyles?.addonPriceWithFees]}>\n {texts?.priceWithFeesSuffix || ' (with fees)'}\n </Text>\n )}\n </Text>\n {addonData.description && (\n <Text style={[customStyles?.addonDescription]}>\n {addonData.description}\n </Text>\n )}\n </View>\n <View style={[customStyles?.addonSelectContainer]}>\n <DropdownMaterial\n items={generateAddonQuantityOptions(addonData)}\n onSelectItem={(item) => {\n onAddonChange(\n addonId.toString(),\n parseInt(item.value.toString(), 10)\n )\n }}\n selectedOption={{\n value: (addons[addonId]?.quantity || 0).toString(),\n label: (addons[addonId]?.quantity || 0).toString(),\n }}\n materialInputProps={{\n label: texts?.quantityLabel || 'Qty',\n }}\n styles={customStyles?.fieldComponentStyles?.select}\n />\n </View>\n </View>\n {(addons[addonId]?.quantity ?? 0) > 0 &&\n addonCustomFields.map((field) => (\n <FormikField\n key={`${addonId}-${field.name}`}\n field={{\n name: `addons.${addonId}.customFields.${field.name}`,\n type: getFieldType(field.type),\n label: field.label,\n required: field.required,\n placeholder: field.description || `Enter ${field.label}`,\n options: field.options?.map((o) => ({\n value: o.value,\n label: o.name,\n })),\n }}\n styles={customStyles?.fieldComponentStyles}\n />\n ))}\n </View>\n )\n })}\n </View>\n </View>\n )\n}\n\nexport default AddonsContainer\n","import React, { useState } from 'react'\nimport { ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native'\n\nimport { Checkbox } from '../../../components'\nimport { logger } from '../../../utils/Logger'\n\nexport interface Condition {\n id: string\n name: string\n content: string\n is_required: boolean\n}\n\ninterface ConditionsProps {\n conditions: Condition[]\n acceptedConditions: Record<string, boolean>\n onAcceptCondition: (conditionId: string, isAccepted: boolean) => void\n styles?: {\n container?: object\n title?: object\n conditionButton?: object\n conditionButtonText?: object\n checkbox?: object\n conditionContent?: object\n expandedContent?: object\n }\n texts?: {\n title?: string\n viewButton?: string\n hideButton?: string\n acceptCheckbox?: string\n }\n}\n\nconst Conditions: React.FC<ConditionsProps> = ({\n conditions,\n acceptedConditions,\n onAcceptCondition,\n styles: customStyles,\n texts,\n}) => {\n // Track which conditions are expanded\n const [expandedConditions, setExpandedConditions] = useState<Record<string, boolean>>(\n {}\n )\n\n if (!conditions || conditions.length === 0) {\n return null\n }\n\n const toggleCondition = (conditionId: string) => {\n setExpandedConditions((prev) => ({\n ...prev,\n [conditionId]: !prev[conditionId],\n }))\n logger.debug('[Conditions] Condition toggled', {\n conditionId,\n expanded: !expandedConditions[conditionId],\n })\n }\n\n return (\n <View style={[styles.container, customStyles?.container]}>\n <Text style={[styles.title, customStyles?.title]}>\n {texts?.title || 'Event Conditions'}\n </Text>\n\n {conditions.map((condition) => (\n <View key={condition.id} style={styles.conditionRow}>\n <TouchableOpacity\n style={[styles.conditionButton, customStyles?.conditionButton]}\n onPress={() => toggleCondition(condition.id)}\n >\n <Text style={[styles.conditionButtonText, customStyles?.conditionButtonText]}>\n {condition.name} {condition.is_required ? '*' : ''} (\n {expandedConditions[condition.id]\n ? texts?.hideButton || 'Hide'\n : texts?.viewButton || 'View'}\n )\n </Text>\n </TouchableOpacity>\n\n {expandedConditions[condition.id] && (\n <ScrollView\n style={[styles.expandedContent, customStyles?.expandedContent]}\n nestedScrollEnabled={true}\n >\n <Text style={[styles.conditionContent, customStyles?.conditionContent]}>\n {condition.content}\n </Text>\n </ScrollView>\n )}\n\n {condition.is_required && (\n <Checkbox\n isActive={!!acceptedConditions[condition.id]}\n onPress={() =>\n onAcceptCondition(condition.id, !acceptedConditions[condition.id])\n }\n styles={customStyles?.checkbox}\n text={texts?.acceptCheckbox || 'I have read and accept these conditions'}\n />\n )}\n </View>\n ))}\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 20,\n },\n title: {\n fontSize: 18,\n fontWeight: 'bold',\n marginBottom: 10,\n },\n conditionRow: {\n marginBottom: 15,\n },\n conditionButton: {\n padding: 8,\n backgroundColor: '#f5f5f5',\n borderRadius: 4,\n marginBottom: 5,\n },\n conditionButtonText: {\n color: '#007bff',\n },\n expandedContent: {\n backgroundColor: '#f9f9f9',\n padding: 15,\n borderRadius: 4,\n marginBottom: 10,\n maxHeight: 150,\n },\n conditionContent: {\n fontSize: 14,\n lineHeight: 20,\n },\n})\n\nexport default Conditions\n","import _map from 'lodash/map'\nimport React from 'react'\nimport { StyleProp, StyleSheet, Text, TextStyle, View, ViewStyle } from 'react-native'\nimport { logger } from '../../../utils/Logger'\n\nexport interface IOrderItem {\n id: string\n title: string\n subtitle?: string\n value: string\n styles?: OrderReviewItemStyles\n}\n\nexport interface OrderReviewItemStyles {\n container?: StyleProp<ViewStyle>\n title?: StyleProp<TextStyle>\n subtitle?: StyleProp<TextStyle>\n value?: StyleProp<TextStyle>\n}\n\nexport interface OrderReviewStyles {\n item?: OrderReviewItemStyles\n rootContainer?: StyleProp<ViewStyle>\n}\n\nexport interface IOrderReviewProps {\n orderItems: IOrderItem[]\n styles?: OrderReviewStyles\n}\n\nconst styles = StyleSheet.create({\n rootContainer: {\n flex: 1,\n flexWrap: 'wrap',\n },\n orderItemContainer: {\n paddingVertical: 4,\n width: '100%',\n },\n orderItemTitle: {\n fontWeight: '800',\n fontSize: 16,\n },\n orderItemValue: {\n lineHeight: 20,\n },\n orderItemSubtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 4,\n },\n})\n\nconst OrderItem = ({ title, subtitle, value, styles: itemStyles }: IOrderItem) => (\n <View\n style={[styles.orderItemContainer, itemStyles?.container]}\n key={`orderReview.${title}`}\n >\n <Text style={[styles.orderItemTitle, itemStyles?.title]}>{title}</Text>\n {subtitle && (\n <Text\n style={[styles.orderItemSubtitle, itemStyles?.subtitle]}\n allowFontScaling={true}\n >\n {subtitle}\n </Text>\n )}\n <Text style={[styles.orderItemValue, itemStyles?.value]} allowFontScaling={true}>\n {value}\n </Text>\n </View>\n)\n\nconst OrderReview = ({ orderItems, styles: customStyles }: IOrderReviewProps) => {\n return (\n <View style={[styles.rootContainer, customStyles?.rootContainer]}>\n {_map(orderItems, (item) => (\n <OrderItem\n key={`orderReview.${item.id}`}\n id={item.id}\n title={item.title}\n subtitle={item.subtitle}\n value={item.value}\n styles={{\n container: customStyles?.item?.container ?? item.styles?.container,\n title: customStyles?.item?.title ?? item.styles?.title,\n subtitle: customStyles?.item?.subtitle ?? item.styles?.subtitle,\n value: customStyles?.item?.value ?? item.styles?.value,\n }}\n />\n ))}\n </View>\n )\n}\n\nexport default OrderReview\n","import * as Yup from 'yup'\n\nimport { CustomField } from '../../event/types'\n\nexport const createCheckoutFormConfig = ({\n minimumAge,\n isAgeRequired,\n requirePassword,\n isTicketFree = false,\n requiredConditions = [],\n isPhoneRequired = false,\n orderCustomFields = [],\n ticketCustomFields = [],\n}: {\n minimumAge?: number\n isAgeRequired: boolean\n requirePassword: boolean\n isTicketFree?: boolean\n isSinglePageCheckout?: boolean\n requiredConditions?: Array<{ id: string }>\n isPhoneRequired?: boolean\n orderCustomFields?: CustomField[]\n ticketCustomFields?: CustomField[]\n}) =>\n Yup.object().shape({\n firstName: Yup.string().required('First name is required'),\n lastName: Yup.string().required('Last name is required'),\n email: Yup.string().email('Invalid email format').required('Email is required'),\n emailConfirmation: Yup.string()\n .oneOf([Yup.ref('email')], 'Emails must match')\n .required('Email confirmation is required'),\n dateOfBirth: isAgeRequired\n ? Yup.date()\n .required('Date of birth is required')\n .test(\n 'is-old-enough',\n `You must be at least ${minimumAge} years old`,\n (value) => {\n if (!value) return false\n\n const today = new Date()\n const birthDate = new Date(value)\n\n let age = today.getFullYear() - birthDate.getFullYear()\n const monthDiff = today.getMonth() - birthDate.getMonth()\n\n // Adjust age if birthday hasn't occurred this year yet\n if (\n monthDiff < 0 ||\n (monthDiff === 0 && today.getDate() < birthDate.getDate())\n ) {\n age--\n }\n\n return age >= (minimumAge || 0)\n }\n )\n : Yup.date().optional(),\n street: isTicketFree\n ? Yup.string()\n : Yup.string().required('Street address is required'),\n city: isTicketFree ? Yup.string() : Yup.string().required('City is required'),\n postalCode: isTicketFree\n ? Yup.string()\n : Yup.string().required('Postal code is required'),\n password: requirePassword\n ? Yup.string().required('Password is required')\n : Yup.string(),\n passwordConfirmation: requirePassword\n ? Yup.string()\n .oneOf([Yup.ref('password')], 'Passwords must match')\n .required('Password confirmation is required')\n : Yup.string().oneOf([Yup.ref('password')], 'Passwords must match'),\n phone: isPhoneRequired\n ? Yup.string().required('Phone number is required')\n : Yup.string().optional(),\n isSubToTicketFairy: Yup.boolean(),\n isSubToBrand: Yup.boolean(),\n country: isTicketFree\n ? Yup.string()\n : Yup.string().test(\n 'is-not-default',\n 'Country is required',\n (value) => value !== '-1' && !!value\n ),\n state: Yup.string(),\n acceptedConditions: Yup.object().test(\n 'required-conditions-accepted',\n 'You must accept all required conditions to proceed',\n (value) => {\n // If no required conditions, skip validation\n if (!requiredConditions || requiredConditions.length === 0) {\n return true\n }\n\n // Check that all required conditions are accepted\n return requiredConditions.every(\n (condition) => value && value[condition.id as keyof typeof value] === true\n )\n }\n ),\n\n // Ticket holders validation\n ticketHolders: Yup.array().of(\n Yup.object().shape({\n firstName: Yup.string().required('First name is required'),\n lastName: Yup.string().required('Last name is required'),\n email: Yup.string().email('Invalid email format'), // Email not required\n phone: Yup.string().optional(),\n customFields: Yup.object().test(\n 'validate-ticket-custom-fields',\n 'Please fill out all required ticket fields',\n (value: Record<string, string | string[]> | undefined) => {\n // If no ticket custom fields, validation passes\n if (!ticketCustomFields || ticketCustomFields.length === 0) {\n return true\n }\n\n // Find required fields\n const requiredFields = ticketCustomFields.filter((field) => field.required)\n\n // If no required fields, validation passes\n if (requiredFields.length === 0) {\n return true\n }\n\n // Check that all required fields have values\n return requiredFields.every((field) => {\n const fieldValue = value?.[field.name]\n\n // For arrays (multi-select), check that there's at least one item\n if (Array.isArray(fieldValue)) {\n return fieldValue.length > 0\n }\n\n // For strings, check that it's not empty\n return fieldValue !== undefined && fieldValue !== ''\n })\n }\n ),\n })\n ),\n\n // Custom fields validation\n customFields: Yup.object().test(\n 'validate-custom-fields',\n 'Please fill out all required custom fields',\n (value: Record<string, string | string[]> | undefined) => {\n // If no custom fields, validation passes\n if (!orderCustomFields || orderCustomFields.length === 0) {\n return true\n }\n\n // Find required fields\n const requiredFields = orderCustomFields.filter((field) => field.required)\n\n // If no required fields, validation passes\n if (requiredFields.length === 0) {\n return true\n }\n\n // Check that all required fields have values\n return requiredFields.every((field) => {\n const fieldValue = value?.[field.name]\n\n // For arrays (multi-select), check that there's at least one item\n if (Array.isArray(fieldValue)) {\n return fieldValue.length > 0\n }\n\n // For strings, check that it's not empty\n return fieldValue !== undefined && fieldValue !== ''\n })\n }\n ),\n })\n\nexport const formFieldsOrder = [\n 'firstName',\n 'lastName',\n 'email',\n 'emailConfirmation',\n 'password',\n 'passwordConfirmation',\n 'phone',\n 'dateOfBirth',\n 'street',\n 'city',\n 'country',\n 'postalCode',\n 'state',\n 'ticketHolders',\n 'isCardFormComplete',\n]\n","import { CardFormView } from '@stripe/stripe-react-native'\nimport { StyleProp, StyleSheet, TextStyle, ViewStyle } from 'react-native'\n\nimport type { FormikFieldComponentStyles } from '../../form'\n\nconst baseStyles = StyleSheet.create({\n form: {\n width: '100%',\n marginBottom: 50,\n },\n sectionTitle: {\n fontSize: 20,\n fontWeight: 'bold',\n marginTop: 20,\n marginBottom: 16,\n },\n sectionContainer: {\n marginVertical: 8,\n width: '100%',\n },\n paymentContainer: {\n padding: 10,\n backgroundColor: '#f9f9f9',\n borderRadius: 8,\n marginVertical: 10,\n minHeight: 180,\n },\n cardContainer: {\n height: 200,\n width: '100%',\n },\n orderReviewContainer: {\n marginVertical: 16,\n },\n // Add-ons styles\n addonSection: {\n marginVertical: 16,\n width: '100%',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n borderRadius: 8,\n padding: 16,\n },\n addonRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginVertical: 12,\n paddingBottom: 12,\n borderBottomWidth: 1,\n borderBottomColor: '#f0f0f0',\n },\n addonItem: {\n flexDirection: 'column',\n gap: 16,\n },\n addonInfo: {\n flex: 1,\n marginRight: 16,\n },\n addonName: {\n fontSize: 16,\n fontWeight: 'bold',\n marginBottom: 4,\n },\n addonPrice: {\n fontSize: 15,\n color: '#333',\n marginBottom: 4,\n },\n addonPriceWithFees: {\n fontSize: 12,\n color: '#666',\n },\n addonDescription: {\n fontSize: 14,\n color: '#666',\n marginTop: 4,\n },\n addonSelectContainer: {\n width: 80,\n },\n addonMainTitle: {\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 8,\n },\n addonSubtitle: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n marginBottom: 16,\n },\n button: {\n backgroundColor: '#007bff',\n padding: 15,\n borderRadius: 5,\n alignItems: 'center',\n marginTop: 20,\n elevation: 3, // Android shadow\n shadowColor: '#000', // iOS shadow\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.2,\n shadowRadius: 3,\n },\n buttonDisabled: {\n opacity: 0.6,\n },\n buttonText: {\n color: '#ffffff',\n fontSize: 16,\n fontWeight: 'bold',\n },\n errorContainer: {\n marginTop: 8,\n padding: 10,\n backgroundColor: '#ffebee',\n borderRadius: 5,\n },\n errorText: {\n color: '#d32f2f',\n marginBottom: 10,\n },\n ticketHolderTitle: {\n fontSize: 16,\n fontWeight: '600',\n marginBottom: 16,\n },\n})\n\nexport interface CheckoutFormStyles {\n form?: StyleProp<ViewStyle>\n sectionTitle?: StyleProp<TextStyle>\n sectionContainer?: StyleProp<ViewStyle>\n paymentContainer?: StyleProp<ViewStyle>\n cardContainer?: StyleProp<ViewStyle>\n orderReviewContainer?: StyleProp<ViewStyle>\n orderReviewItem?: {\n container?: StyleProp<ViewStyle>\n title?: StyleProp<TextStyle>\n subtitle?: StyleProp<TextStyle>\n value?: StyleProp<TextStyle>\n }\n addonRow?: StyleProp<ViewStyle>\n addonSection?: StyleProp<ViewStyle>\n addonItem?: StyleProp<ViewStyle>\n addonInfo?: StyleProp<ViewStyle>\n addonName?: StyleProp<TextStyle>\n addonPrice?: StyleProp<TextStyle>\n addonPriceWithFees?: StyleProp<TextStyle>\n addonDescription?: StyleProp<TextStyle>\n addonSelectContainer?: StyleProp<ViewStyle>\n addonMainTitle?: StyleProp<TextStyle>\n addonSubtitle?: StyleProp<TextStyle>\n button?: StyleProp<ViewStyle>\n buttonDisabled?: StyleProp<ViewStyle>\n buttonText?: StyleProp<TextStyle>\n errorContainer?: StyleProp<ViewStyle>\n errorText?: StyleProp<TextStyle>\n paymentContainerInner?: StyleProp<ViewStyle>\n cardStyle?: Partial<CardFormView.Styles>\n ticketHolderTitle?: StyleProp<TextStyle>\n fields?: FormikFieldComponentStyles\n}\n\nexport type CheckoutFormComputedStyles = ReturnType<typeof mergeCheckoutFormStyles>\n\nexport const cardStyle: CardFormView.Styles = {\n backgroundColor: '#FFFFFF',\n textColor: '#000000',\n placeholderColor: '#999999',\n borderWidth: 1,\n borderColor: '#E0E0E0',\n borderRadius: 8,\n}\n\nexport const mergeCheckoutFormStyles = (overrides?: CheckoutFormStyles) => ({\n form: StyleSheet.flatten([baseStyles.form, overrides?.form]),\n sectionTitle: StyleSheet.flatten([baseStyles.sectionTitle, overrides?.sectionTitle]),\n sectionContainer: StyleSheet.flatten([\n baseStyles.sectionContainer,\n overrides?.sectionContainer,\n ]),\n paymentContainer: StyleSheet.flatten([\n baseStyles.paymentContainer,\n overrides?.paymentContainer,\n ]),\n cardContainer: StyleSheet.flatten([baseStyles.cardContainer, overrides?.cardContainer]),\n orderReviewContainer: StyleSheet.flatten([\n baseStyles.orderReviewContainer,\n overrides?.orderReviewContainer,\n ]),\n orderReviewItem: overrides?.orderReviewItem,\n addonSection: StyleSheet.flatten([baseStyles.addonSection, overrides?.addonSection]),\n addonRow: StyleSheet.flatten([baseStyles.addonRow, overrides?.addonRow]),\n addonItem: StyleSheet.flatten([baseStyles.addonItem, overrides?.addonItem]),\n addonInfo: StyleSheet.flatten([baseStyles.addonInfo, overrides?.addonInfo]),\n addonName: StyleSheet.flatten([baseStyles.addonName, overrides?.addonName]),\n addonPrice: StyleSheet.flatten([baseStyles.addonPrice, overrides?.addonPrice]),\n addonPriceWithFees: StyleSheet.flatten([\n baseStyles.addonPriceWithFees,\n overrides?.addonPriceWithFees,\n ]),\n addonDescription: StyleSheet.flatten([\n baseStyles.addonDescription,\n overrides?.addonDescription,\n ]),\n addonSelectContainer: StyleSheet.flatten([\n baseStyles.addonSelectContainer,\n overrides?.addonSelectContainer,\n ]),\n addonMainTitle: StyleSheet.flatten([\n baseStyles.addonMainTitle,\n overrides?.addonMainTitle,\n ]),\n addonSubtitle: StyleSheet.flatten([baseStyles.addonSubtitle, overrides?.addonSubtitle]),\n button: StyleSheet.flatten([baseStyles.button, overrides?.button]),\n buttonDisabled: StyleSheet.flatten([\n baseStyles.buttonDisabled,\n overrides?.buttonDisabled,\n ]),\n buttonText: StyleSheet.flatten([baseStyles.buttonText, overrides?.buttonText]),\n errorContainer: StyleSheet.flatten([\n baseStyles.errorContainer,\n overrides?.errorContainer,\n ]),\n errorText: StyleSheet.flatten([baseStyles.errorText, overrides?.errorText]),\n paymentContainerInner: StyleSheet.flatten([overrides?.paymentContainerInner]),\n cardStyle: {\n ...cardStyle,\n ...(overrides?.cardStyle || {}),\n },\n ticketHolderTitle: StyleSheet.flatten([\n baseStyles.ticketHolderTitle,\n overrides?.ticketHolderTitle,\n ]),\n fields: overrides?.fields,\n})\n\nexport default baseStyles\n","import { CheckoutFormTexts } from './types'\n\nexport const defaultCheckoutFormTexts: Required<CheckoutFormTexts> = {\n form: {\n sectionTitle: 'Personal Information',\n firstName: 'First Name',\n firstNamePlaceholder: 'Enter your first name',\n lastName: 'Last Name',\n lastNamePlaceholder: 'Enter your last name',\n email: 'Email',\n emailPlaceholder: 'Enter your email',\n emailConfirmation: 'Confirm Email',\n emailConfirmationPlaceholder: 'Confirm your email',\n password: 'Password',\n passwordPlaceholder: 'Enter a password',\n passwordConfirmation: 'Confirm Password',\n passwordConfirmationPlaceholder: 'Confirm your password',\n phone: 'Phone Number',\n phonePlaceholder: 'Enter your phone number',\n dateOfBirth: 'Date of Birth',\n dateOfBirthPlaceholder: 'Date of Birth',\n street: 'Street Address',\n streetPlaceholder: 'Enter your street address',\n city: 'City',\n cityPlaceholder: 'Enter your city',\n country: 'Country',\n countryPlaceholder: 'Select your country',\n state: 'State',\n statePlaceholder: 'Select your state',\n postalCode: 'Postal Code',\n postalCodePlaceholder: 'Enter your postal code',\n customFields: {},\n },\n ticketHolders: {\n title: 'Ticket Holders',\n itemTitle: 'Ticket {index}',\n firstName: 'First Name *',\n firstNamePlaceholder: 'Enter first name',\n lastName: 'Last Name *',\n lastNamePlaceholder: 'Enter last name',\n email: 'Email',\n emailPlaceholder: 'Enter email address',\n phone: 'Phone Number',\n phonePlaceholder: 'Enter phone number',\n customFields: {},\n },\n marketingOptIns: {\n ticketFairyOptIn: 'Subscribe to The Ticket Fairy newsletters',\n organizerOptIn: 'Subscribe to event organizer newsletters',\n },\n addons: {\n title: 'Available Add-ons',\n quantityLabel: 'Qty',\n priceWithFeesSuffix: ' (with fees)',\n },\n orderSummary: {\n sectionTitle: 'Order Summary',\n },\n payment: {\n sectionTitle: 'Payment Details',\n errorRequired: 'Please fill your payment information',\n },\n buttons: {\n singlePageSubmit: 'Complete Checkout',\n goToPayment: 'Proceed to Payment',\n paymentSubmit: 'Complete Payment',\n },\n conditions: {\n title: 'Event Conditions',\n acceptLabel: 'I have read and accept these conditions',\n viewButton: 'View',\n hideButton: 'Hide',\n },\n}\n\nconst mergeCustomFieldMap = (\n base: Record<string, { label?: string; placeholder?: string }>,\n override?: Record<string, { label?: string; placeholder?: string }>\n): Record<string, { label?: string; placeholder?: string }> => ({\n ...base,\n ...(override ?? {}),\n})\n\nexport const mergeCheckoutFormTexts = (\n overrides?: CheckoutFormTexts\n): Required<CheckoutFormTexts> => {\n if (!overrides) {\n return defaultCheckoutFormTexts\n }\n\n return {\n form: {\n ...defaultCheckoutFormTexts.form,\n ...overrides.form,\n customFields: mergeCustomFieldMap(\n defaultCheckoutFormTexts.form.customFields || {},\n overrides.form?.customFields\n ),\n },\n ticketHolders: {\n ...defaultCheckoutFormTexts.ticketHolders,\n ...overrides.ticketHolders,\n customFields: mergeCustomFieldMap(\n defaultCheckoutFormTexts.ticketHolders.customFields || {},\n overrides.ticketHolders?.customFields\n ),\n },\n marketingOptIns: {\n ...defaultCheckoutFormTexts.marketingOptIns,\n ...overrides.marketingOptIns,\n },\n addons: {\n ...defaultCheckoutFormTexts.addons,\n ...overrides.addons,\n },\n orderSummary: {\n ...defaultCheckoutFormTexts.orderSummary,\n ...overrides.orderSummary,\n },\n payment: {\n ...defaultCheckoutFormTexts.payment,\n ...overrides.payment,\n },\n buttons: {\n ...defaultCheckoutFormTexts.buttons,\n ...overrides.buttons,\n },\n conditions: {\n ...defaultCheckoutFormTexts.conditions,\n ...overrides.conditions,\n },\n }\n}\n"],"mappings":"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","names":["import_react_native","styles","ref","RNModal","import_react","import_react_native","import_react_native","import_jsx_runtime","React","styles","ref","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react","import_react_native","import_react","import_react_native","import_react_native","styles_default","import_prop_types","import_react","import_react_native","import_deprecated_react_native_prop_types","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","PropTypes","styles_default","import_prop_types","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","containerStyle","styles_default","PropTypes","import_prop_types","import_react","import_react_native","import_deprecated_react_native_prop_types","import_react_native","styles_default","import_jsx_runtime","containerStyle","styles_default","PropTypes","import_prop_types","import_react","import_react_native","import_deprecated_react_native_prop_types","import_react_native","styles_default","import_jsx_runtime","styles_default","PropTypes","import_prop_types","import_react","import_react_native","import_react_native","styles_default","import_deprecated_react_native_prop_types","import_jsx_runtime","styles_default","PropTypes","import_react_native","styles_default","import_jsx_runtime","React","containerStyle","styles_default","PropTypes","import_react_native","styles_default","styles_default","import_react","import_react_native","import_prop_types","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","Line","styles_default","PropTypes","import_jsx_runtime","Line","import_jsx_runtime","styles","React","styles_default","import_react_native","FONT_SIZE","styles_default","import_jsx_runtime","styles","date","styles_default","DateTimePickerModal","import_react","import_react_native","import_react_native","import_jsx_runtime","import_react_native","import_react_native","sWidth","import_jsx_runtime","styles","import_jsx_runtime","styles","import_react","import_react_native","import_react_native","sWidth","sHeight","DIALOG","DropdownListItemStyles","import_jsx_runtime","styles","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","styles_default","import_jsx_runtime","styles_default","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react","import_react_native","import_react","import_forEach","AsyncStorage","_forEach","Axios","axiosRetry","_get","_mapKeys","_forEach","_map","_filter","_sortBy","import_jsx_runtime","ref","BackgroundTimer","import_react","import_react_native_background_timer","import_jsx_runtime","ref","BackgroundTimer","import_react","import_jsx_runtime","ref","import_react","import_jsx_runtime","ref","import_react","import_jsx_runtime","ref","import_react","import_react_native_background_timer","import_jsx_runtime","ref","BackgroundTimer","import_react","import_jsx_runtime","ref","import_react","import_jsx_runtime","ref","import_jwt_decode","import_map","import_mapKeys","import_sortBy","import_react","import_jsx_runtime","ref","_map","_groupBy","_mapKeys","_sortBy","_find","import_react","import_jsx_runtime","ref","import_react","import_react_native","import_react","import_react","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","import_jsx_runtime","styles","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_jsx_runtime","styles","_a","_b","_c","_d","styles_default","import_jsx_runtime","styles","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","_a","InputPhone","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react","import_react_native","styles_default","import_jsx_runtime","ref","styles_default","import_react","import_react_native","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_jsx_runtime","styles","ref","import_find","import_forEach","import_map","import_react","import_react_native","import_find","_find","emailRegex","import_react_native","styles_default","import_jsx_runtime","styles","ref","_a","_b","React","DeviceCountry","_map","_every","_forEach","_find","styles_default","import_stripe_react_native","import_every","import_forEach","import_map","import_mapKeys","import_react","import_react_native","import_react_native_keyboard_aware_scroll_view","import_map","import_react_native","import_react_native","import_jsx_runtime","_map","import_map","import_react_native","import_jsx_runtime","styles","_map","import_react_native","styles_default","import_jsx_runtime","styles","ref","_map","_a","_forEach","_mapKeys","_b","_every","styles_default","import_find","import_forEach","import_react","import_react_native","import_map","import_react_native","import_react_native","import_react_native","import_jsx_runtime","import_react_native","import_jsx_runtime","styles","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","styles_default","import_jsx_runtime","styles","Clipboard","removeTicketFromResale","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","styles_default","_map","_k","import_jsx_runtime","styles","ref","_forEach","_find","import_map","import_sortBy","import_react","import_react_native","import_react","import_react_native","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","import_jsx_runtime","styles","_a","date","import_jsx_runtime","styles","ref","_sortBy","_map","_a","_uniqBy","import_react","import_react_native","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_jsx_runtime","styles","ref","import_react","import_react_native","import_react","import_react_native","import_react_native_keyboard_aware_scroll_view","import_jsx_runtime","styles","_a","_b","_c","_d","_e","_f","import_jsx_runtime","styles","ref","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_jsx_runtime","styles","import_get","import_react","import_react_native","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","import_react_native","import_jsx_runtime","TicketListItem","styles","_maxBy","TicketListItem_default","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","_a","TicketListItem_default","_b","_c","_d","import_jsx_runtime","styles","ref","logger","_some","_isEmpty","_get","import_stripe_react_native","import_react","import_react_native_background_timer","import_axios","axios","import_react","queryClient","import_react_query","import_react_query","import_react_query","import_react","queryClient","_a","_b","_c","_d","_e","_f","_g","_h","availableAddons","selectedCountry","BackgroundTimer","_i","_j","_k","_l","_m","import_react_query","import_react","import_react_native","import_react_native_keyboard_aware_scroll_view","import_stripe_react_native","import_formik","import_react","import_react_native","import_react","import_react_native","import_jsx_runtime","React","_a","date","import_react","import_react_native","import_jsx_runtime","_a","import_react","import_react_native","import_jsx_runtime","Conditions","Conditions_default","import_map","import_react_native","import_jsx_runtime","styles","OrderItem","OrderReview","_map","OrderReview_default","import_react_native","import_jsx_runtime","React","Conditions_default","OrderReview_default","styles","import_stripe_react_native","import_jsx_runtime","_a","containerStyle","ref","import_react_native"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/components/bottomSheetModal/BottomSheetModal.tsx","../src/res/colors.ts","../src/res/icons.ts","../src/res/images.ts","../src/res/index.ts","../src/components/bottomSheetModal/BottomSheetModalStyles.ts","../src/components/button/Button.tsx","../src/components/button/styles.tsx","../src/components/cartTimer/CartTimer.tsx","../src/components/cartTimer/styles.ts","../src/components/checkbox/Checkbox.tsx","../src/components/checkbox/styles.ts","../src/components/datePicker/DatePicker.tsx","../src/components/input/Input.tsx","../src/components/input/styles.ts","../src/packages/rn-material-ui-textfield/components/field/index.js","../src/packages/rn-material-ui-textfield/components/line/index.js","../src/packages/rn-material-ui-textfield/components/line/styles.js","../src/packages/rn-material-ui-textfield/components/label/index.js","../src/packages/rn-material-ui-textfield/components/label/styles.js","../src/packages/rn-material-ui-textfield/components/affix/index.js","../src/packages/rn-material-ui-textfield/components/affix/styles.js","../src/packages/rn-material-ui-textfield/components/helper/index.js","../src/packages/rn-material-ui-textfield/components/helper/styles.js","../src/packages/rn-material-ui-textfield/components/counter/index.js","../src/packages/rn-material-ui-textfield/components/counter/styles.js","../src/packages/rn-material-ui-textfield/components/field/styles.js","../src/packages/rn-material-ui-textfield/components/field-filled/styles.js","../src/packages/rn-material-ui-textfield/components/field-filled/index.js","../src/packages/rn-material-ui-textfield/components/field-outlined/index.js","../src/packages/rn-material-ui-textfield/components/outline/index.js","../src/packages/rn-material-ui-textfield/components/outline/styles.js","../src/components/datePicker/styles.ts","../src/components/dropdown/Dropdown.tsx","../src/components/separator/Separator.tsx","../src/components/dropdown/DropdownListItem.tsx","../src/components/dropdown/styles.ts","../src/components/dropdownMaterial/DropdownMaterial.tsx","../src/components/dropdownMaterial/styles.ts","../src/components/enterPassword/EnterPassword.tsx","../src/components/enterPassword/styles.ts","../src/components/formField/FormField.tsx","../src/components/radioGroup/RadioGroup.tsx","../src/components/radioGroup/index.ts","../src/components/formField/styles.ts","../src/components/loading/Loading.tsx","../src/components/loading/styles.ts","../src/components/loggedIn/LoggedIn.tsx","../src/components/loggedIn/styles.ts","../src/components/login/Login.tsx","../src/core/BillingCore/BillingCore.tsx","../src/api/ApiClient.ts","../src/helpers/Config.ts","../src/api/Constants.ts","../src/helpers/Domains.ts","../src/helpers/LocalStorage.tsx","../src/api/ErrorHandler.ts","../src/core/LoginCore/LoginCoreHelper.ts","../src/helpers/RefreshAccessToken.ts","../src/core/CheckoutCore/CheckoutCore.tsx","../src/core/LoginCore/LoginCore.tsx","../src/core/MyOrdersCore/MyOrdersCore.tsx","../src/core/OrderDetailsCore/OrderDetailsCore.tsx","../src/core/PurchaseConfirmationCore/PurchaseConfirmationCore.tsx","../src/core/ResetPasswordCore/ResetPasswordCore.tsx","../src/core/Session/SessionHandle.tsx","../src/core/TicketsCore/TicketsCore.tsx","../src/core/WaitingListCore/WaitingListCore.tsx","../src/components/login/LoginView.tsx","../src/helpers/Debounced.ts","../src/helpers/Validators.ts","../src/components/restorePassword/RestorePassword.tsx","../src/components/restorePassword/styles.ts","../src/components/restorePassword/ResultDialog.tsx","../src/components/login/components/LoginForm.tsx","../src/components/login/styles.ts","../src/components/phoneInput/PhoneInput.tsx","../src/components/phoneInput/styles.ts","../src/components/promoCode/PromoCode.tsx","../src/components/promoCode/styles.ts","../src/components/radioButton/RadioButton.tsx","../src/components/radioButton/styles.ts","../src/components/stripePayment/StripePayment.tsx","../src/components/stripePayment/styles.ts","../src/components/waitingList/WaitingList.tsx","../src/components/waitingList/WaitingListView.tsx","../src/components/waitingList/styles.ts","../src/containers/billingInfo/Billing.tsx","../src/helpers/CountryCodes.ts","../../tf-checkout-shared/src/api/client/publicRequest.ts","../../tf-checkout-shared/src/utils/getDomain.ts","../../tf-checkout-shared/src/utils/cookies.ts","../../tf-checkout-shared/src/constants/index.ts","../../tf-checkout-shared/src/config/setConfigs.ts","../../tf-checkout-shared/src/api/client/auth.ts","../../tf-checkout-shared/src/utils/isBrowser.ts","../../tf-checkout-shared/src/utils/auth.ts","../../tf-checkout-shared/src/utils/getQueryVariable.ts","../../tf-checkout-shared/src/api/client/interceptors.ts","../../tf-checkout-shared/src/api/client/cart.ts","../../tf-checkout-shared/src/api/client/checkout.ts","../../tf-checkout-shared/src/api/client/common.ts","../../tf-checkout-shared/src/api/client/orders.ts","../../tf-checkout-shared/src/api/client/payment.ts","../../../node_modules/.pnpm/nanoid@3.3.11/node_modules/nanoid/non-secure/index.js","../src/helpers/StringsHelper.ts","../src/containers/billingInfo/styles.ts","../src/containers/checkout/Checkout.tsx","../src/containers/checkout/CheckoutData.ts","../src/containers/checkout/components/Conditions.tsx","../src/containers/checkout/components/styles.ts","../src/containers/checkout/components/OrderReview.tsx","../src/containers/checkout/styles.ts","../src/containers/myOrderDetails/MyOrderDetails.tsx","../src/containers/myOrderDetails/MyOrderDetailsView.tsx","../src/containers/myOrderDetails/components/Notification.tsx","../src/containers/myOrderDetails/components/styles.ts","../src/containers/myOrderDetails/components/TicketActions/TicketActions.tsx","../src/containers/myOrderDetails/components/TicketListItem/TicketListItem.tsx","../src/containers/myOrderDetails/components/TicketListItem/TicketListItemStyles.ts","../src/containers/myOrderDetails/styles.ts","../src/containers/myOrders/MyOrders.tsx","../src/containers/myOrders/MyOrdersView.tsx","../src/containers/myOrders/components/OrderListItem.tsx","../src/containers/myOrders/components/styles.ts","../src/containers/myOrders/styles.ts","../src/utils/Logger.ts","../src/containers/purchaseConfirmation/PurchaseConfirmation.tsx","../src/containers/purchaseConfirmation/PurchaseConfirmationView.tsx","../src/containers/purchaseConfirmation/styles.ts","../src/containers/resaleTickets/ResaleTickets.tsx","../src/containers/resaleTickets/ResaleTicketsView.tsx","../src/containers/resetPassword/ResetPassword.tsx","../src/containers/resetPassword/ResetPasswordView.tsx","../src/containers/resetPassword/styles.ts","../src/containers/tickets/Tickets.tsx","../src/containers/tickets/TicketsView.tsx","../src/containers/tickets/components/TicketGroupListHeader.tsx","../src/containers/tickets/components/TicketListItem.tsx","../src/containers/tickets/components/styles.ts","../src/containers/tickets/styles.ts","../src/features/checkout-v2/hooks/use-checkout.ts","../src/utils/handlers.ts","../src/features/auth/api-hooks.ts","../src/features/auth/utils.ts","../src/features/event/api-hooks.ts","../src/features/geo/api-hooks.ts","../src/features/checkout-v2/utils.ts","../src/features/checkout-v2/hooks/api-hooks.ts","../src/features/checkout-v2/index.tsx","../src/features/checkout-v2/form/index.tsx","../src/features/form/index.tsx","../src/features/checkout-v2/components/AddonsContainer.tsx","../src/features/checkout-v2/components/Conditions.tsx","../src/features/checkout-v2/components/OrderReview.tsx","../src/features/checkout-v2/form/config.tsx","../src/features/checkout-v2/form/styles.ts","../src/features/checkout-v2/form/texts.ts"],"sourcesContent":["import { IMyOrderDetailsTicket } from './api/types'\nimport {\n ICheckoutBody,\n IEventResponse,\n IMyOrderDetailsData,\n IMyOrdersOrder,\n IPromoCodeResponse,\n IPurchaseConfirmationData,\n IRegisterNewUserBody,\n MyOrderRequestFromType,\n} from './api/types'\nimport {\n CartTimer,\n Dropdown,\n DropdownMaterial,\n Loading,\n LoggedIn,\n Login,\n PromoCode,\n WaitingList,\n} from './components'\nimport { IDropdownStyles } from './components/dropdown/types'\nimport { ILoadingStyles } from './components/loading/types'\nimport { ILoginSuccessData } from './components/login/types'\nimport {\n BillingInfo,\n Checkout,\n MyOrderDetails,\n MyOrders,\n PurchaseConfirmation,\n ResaleTickets,\n ResetPassword,\n Tickets,\n} from './containers'\nimport { ICheckoutSuccessData } from './features/checkout-v2/hooks/use-checkout'\nimport { IConfig } from './helpers/Config'\nimport { IMyOrderDetailsProps } from './containers/myOrderDetails/types'\nimport { IMyOrdersProps } from './containers/myOrders/types'\nimport { IPurchaseConfirmationProps } from './containers/purchaseConfirmation/types'\nimport { IResaleTicketsProps } from './containers/resaleTickets/types'\nimport { IPasswordProtectedEventData, ITicketsProps } from './containers/tickets/types'\nimport {\n BillingCore,\n BillingCoreHandle,\n CheckoutCore,\n CheckoutCoreHandle,\n LoginCore,\n LoginCoreHandle,\n MyOrdersCore,\n MyOrdersCoreHandle,\n OrderDetailsCore,\n OrderDetailsCoreHandle,\n PurchaseConfirmationCore,\n PurchaseConfirmationCoreHandle,\n ResetPasswordCore,\n ResetPasswordCoreHandle,\n SessionCoreHandleType,\n SessionHandleType,\n TicketsCore,\n TicketsCoreHandle,\n WaitingListCore,\n WaitingListCoreHandle,\n} from './core'\nimport {\n IBookTicketsOptions,\n IGetTicketsPayload,\n IGroupedTickets,\n} from './core/TicketsCore/TicketsCoreTypes'\nimport { useRegisterUser, useUserProfile } from './features/auth/api-hooks'\nimport {\n CheckoutController as CheckoutV2,\n CheckoutProvider,\n CheckoutStyles,\n} from './features/checkout-v2'\nimport { CheckoutForm, PaymentForm } from './features/checkout-v2/form'\nimport {\n useAddons,\n useAddToCart,\n useCart,\n useCheckout,\n useEventConditions,\n useEventInfo,\n usePaymentData,\n usePaymentSuccess,\n useTickets,\n useUpdateCheckout,\n} from './features/checkout-v2/hooks/api-hooks'\nimport { useCheckoutFlow } from './features/checkout-v2/hooks/use-checkout'\nimport { CheckoutTexts } from './features/checkout-v2/types'\nimport { useCountries, useStates } from './features/geo/api-hooks'\nimport { setConfig } from './helpers/Config'\nimport { deleteAllData, deleteUserData } from './helpers/LocalStorage'\nimport { refreshAccessToken } from './helpers/RefreshAccessToken'\nimport {\n IAccountOrdersPurchasedEvent,\n IAccountOrdersTicket,\n IAccountTicketsAttributes,\n IAccountTicketsData,\n IAccountTicketsResponse,\n IAddToCartResponse,\n IError,\n IEvent,\n ISelectedTicket,\n ITicket,\n ITicketsResponseData,\n IUserProfile,\n} from './types'\n\nimport { LogBox, NativeModules } from 'react-native'\n\nLogBox.ignoreAllLogs()\n\nexport {\n /**\n * @deprecated Use hooks like useCart(), useCheckout(), etc. imported directly from 'tf-checkout-react-native'. See core/MIGRATION.md\n */\n BillingCore,\n /**\n * @deprecated Use hooks like useCart(), useCheckout(), etc. imported directly from 'tf-checkout-react-native'. See core/MIGRATION.md\n */\n BillingCoreHandle,\n BillingInfo,\n CartTimer,\n Checkout,\n /**\n * @deprecated Use hooks like usePaymentData(), useEventConditions(), etc. imported directly from 'tf-checkout-react-native'. See core/MIGRATION.md\n */\n CheckoutCore,\n CheckoutCoreHandle,\n /**\n * @deprecated Use hooks like usePaymentData(), useEventConditions(), etc. imported directly from 'tf-checkout-react-native'. See core/MIGRATION.md\n */\n CheckoutForm,\n CheckoutProvider,\n CheckoutStyles,\n CheckoutTexts,\n CheckoutV2,\n deleteAllData,\n deleteUserData,\n Dropdown,\n DropdownMaterial,\n IAccountOrdersPurchasedEvent,\n IAccountOrdersTicket,\n IAccountTicketsAttributes,\n IAccountTicketsData,\n IAccountTicketsResponse,\n IAddToCartResponse,\n IBookTicketsOptions,\n ICheckoutBody,\n IDropdownStyles,\n IError,\n IEvent,\n IEventResponse,\n IGetTicketsPayload,\n IGroupedTickets,\n ILoadingStyles,\n ILoginSuccessData,\n IMyOrderDetailsData,\n IMyOrderDetailsProps,\n IMyOrdersOrder,\n IMyOrdersProps,\n IPasswordProtectedEventData,\n IPromoCodeResponse,\n IPurchaseConfirmationData,\n IPurchaseConfirmationProps,\n IRegisterNewUserBody,\n IResaleTicketsProps,\n ISelectedTicket,\n ITicket,\n ITicketsProps,\n ITicketsResponseData,\n IUserProfile,\n IConfig,\n ICheckoutSuccessData,\n IMyOrderDetailsTicket,\n Loading,\n LoggedIn,\n Login,\n LoginCore,\n LoginCoreHandle,\n MyOrderDetails,\n MyOrderRequestFromType,\n MyOrders,\n MyOrdersCore,\n MyOrdersCoreHandle,\n OrderDetailsCore,\n OrderDetailsCoreHandle,\n PaymentForm,\n PromoCode,\n PurchaseConfirmation,\n PurchaseConfirmationCore,\n PurchaseConfirmationCoreHandle,\n refreshAccessToken,\n ResaleTickets,\n ResetPassword,\n ResetPasswordCore,\n ResetPasswordCoreHandle,\n SessionCoreHandleType,\n SessionHandleType,\n setConfig,\n Tickets,\n TicketsCore,\n TicketsCoreHandle,\n useAddons,\n useAddToCart,\n // New checkout hooks (replacing BillingCore and CheckoutCore functionality)\n useCart,\n useCheckout,\n useCheckoutFlow,\n useCountries,\n useEventConditions,\n useEventInfo,\n usePaymentData,\n usePaymentSuccess,\n useRegisterUser,\n useStates,\n useTickets,\n useUpdateCheckout,\n useUserProfile,\n WaitingList,\n WaitingListCore,\n WaitingListCoreHandle,\n}\nexport default NativeModules.TFCheckoutRNModule\n\nexport * from './apiv2'\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react'\nimport {\n Animated,\n Dimensions,\n Image,\n Modal as RNModal,\n StyleProp,\n Text,\n TouchableOpacity,\n View,\n} from 'react-native'\n\nimport R from '../../res'\nimport s from './BottomSheetModalStyles'\nimport { IBottomSheetModalProps } from './BottomSheetModalTypes'\n\nconst animationDuration = 350\nconst { height: screenHeight } = Dimensions.get('window')\n\nexport type BottomSheetHandle = {\n close(): void\n}\n\nconst BottomSheetModal = forwardRef<BottomSheetHandle, IBottomSheetModalProps>(\n ({ onClose, texts, styles, content, contentHeight = screenHeight / 2 }, ref) => {\n const contentYPosition = useRef(new Animated.Value(contentHeight)).current\n\n const showContent = () => {\n Animated.timing(contentYPosition, {\n toValue: 0,\n duration: animationDuration,\n useNativeDriver: true,\n }).start()\n }\n\n const hideContent = () => {\n Animated.timing(contentYPosition, {\n toValue: contentHeight,\n duration: animationDuration,\n useNativeDriver: true,\n }).start(onClose)\n }\n\n useEffect(() => {\n showContent()\n })\n\n const onCloseHandler = () => {\n hideContent()\n }\n\n const animatedStyle: StyleProp<any> = {\n height: contentHeight,\n transform: [\n {\n translateY: contentYPosition,\n },\n ],\n }\n\n useImperativeHandle(ref, () => ({\n async close() {\n hideContent()\n },\n }))\n\n const mergedStyle = [s.animatedContent, animatedStyle, styles?.content]\n\n const title = texts?.title || 'Title'\n\n return (\n <RNModal transparent>\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Animated.View style={mergedStyle}>\n <View style={[s.header, styles?.headerContainer]}>\n <Text style={[s.title, styles?.title]}>{title}</Text>\n <TouchableOpacity\n onPress={onCloseHandler}\n style={[s.closeButton, styles?.closeButton]}\n >\n <Image\n style={[s.closeButtonIcon, styles?.closeButtonIcon]}\n source={R.icons.error}\n />\n </TouchableOpacity>\n </View>\n <View style={[s.contentContainer, styles?.contentContainer]}>{content}</View>\n </Animated.View>\n </View>\n </RNModal>\n )\n }\n)\n\nexport default BottomSheetModal\n","const colors = {\n primary: 'black',\n disabled: 'gray',\n white: 'white',\n black: 'black',\n tint: 'rgba(0,0,0,0.1)',\n transparentBlack: 'rgba(0,0,0,0.5)',\n transparent: 'rgba(0,0,0,0)',\n danger: '#D9534F',\n listBackground: 'rgba(0,0,0,0.1)',\n validGreen: '#139679',\n fff: '#fff',\n timerBackground: '#f4daa3',\n}\n\nexport default colors\n","export default {\n dropdown: require('../assets/icons/ic_dropdown.png'),\n check: require('../assets/icons/ic_check.png'),\n copy: require('../assets/icons/ic_copy.png'),\n next: require('../assets/icons/ic_next.png'),\n error: require('../assets/icons/ic_error.png'),\n more: require('../assets/icons/ic_more.png'),\n clock: require('../assets/icons/ic_clock.png'),\n eye: require('../assets/icons/ic_eye.png'),\n eyeOff: require('../assets/icons/ic_eye_off.png'),\n}\n","export default {\n brand: require('../assets/images/brand.png'),\n}\n","import colors from './colors'\nimport icons from './icons'\nimport images from './images'\n\nconst R = {\n icons: icons,\n colors: colors,\n images: images,\n}\n\nexport default R\n","import { Dimensions, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst { width: screenWidth } = Dimensions.get('window')\n\nexport default StyleSheet.create({\n rootContainer: {\n backgroundColor: R.colors.transparentBlack,\n flex: 1,\n justifyContent: 'flex-end',\n },\n animatedContent: {\n width: screenWidth,\n borderTopStartRadius: 20,\n borderTopEndRadius: 20,\n paddingVertical: 24,\n backgroundColor: R.colors.listBackground,\n },\n closeButton: {\n padding: 8,\n justifyContent: 'flex-end',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n marginBottom: 16,\n paddingHorizontal: 24,\n },\n title: {\n fontSize: 20,\n },\n closeButtonIcon: {\n height: 16,\n width: 16,\n resizeMode: 'contain',\n tintColor: R.colors.white,\n },\n contentContainer: {\n flex: 1,\n },\n})\n","//@ts-nocheck\nimport React from 'react'\nimport { ActivityIndicator, Text, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { IButtonProps } from './types'\n\nconst Button = React.forwardRef(\n (\n {\n text = 'Press me',\n onPress,\n isUpperCase,\n isDisabled,\n isLoading,\n styles,\n }: IButtonProps,\n ref\n ) => {\n const formatText = isUpperCase ? text.toUpperCase() : text\n\n return (\n <>\n <View style={[s.container, styles?.container]} ref={ref?.containerView}>\n <TouchableOpacity\n ref={ref?.touchableOpacity}\n onPress={onPress}\n activeOpacity={0.8}\n style={[isDisabled ? s.buttonDisabled : s.button, styles?.button]}\n disabled={isDisabled || isLoading}\n >\n {isLoading ? (\n <View ref={ref?.loadingView}>\n <ActivityIndicator\n color={R.colors.white}\n size={'small'}\n ref={ref?.activityIndicator}\n />\n </View>\n ) : (\n <Text style={[s.text, styles?.text]} ref={ref?.loadingText}>\n {formatText}\n </Text>\n )}\n </TouchableOpacity>\n </View>\n </>\n )\n }\n)\n\nexport default Button\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n button: {\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: R.colors.primary,\n height: 45,\n width: '100%',\n paddingHorizontal: 8,\n },\n buttonDisabled: {\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: R.colors.disabled,\n height: 45,\n width: '100%',\n },\n text: {\n color: R.colors.white,\n fontSize: 18,\n fontWeight: '700',\n },\n})\n","import React, { FC, useEffect, useState } from 'react'\nimport { Image, Pressable, Text, View } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { ICartTimerProps } from './types'\n\nconst CartTimer: FC<ICartTimerProps> = ({\n shouldNotMinimize,\n texts,\n styles,\n secondsLeft,\n}) => {\n const [isOnlyTimeVisible, setIsOnlyTimeVisible] = useState(false)\n const hideOtherData = () => {\n if (!shouldNotMinimize) {\n setIsOnlyTimeVisible(!isOnlyTimeVisible)\n }\n }\n const [timeRemaining, setTimeRemaining] = useState('')\n\n const message = texts?.message\n ? texts.message\n : 'Please complete your purchase before the timer reaches zero:'\n\n useEffect(() => {\n const clockify = () => {\n //let hours = Math.floor(secondsLeft / 60 / 60)\n const mins = Math.floor((secondsLeft / 60) % 60)\n const seconds = Math.floor(secondsLeft % 60)\n //let displayHours = hours < 10 ? `0${hours}` : hours\n const displayMins = mins < 10 ? `0${mins}` : mins\n const displaySecs = seconds < 10 ? `0${seconds}` : seconds\n\n setTimeRemaining(`${displayMins}:${displaySecs}`)\n }\n\n clockify()\n }, [secondsLeft])\n\n return (\n <View\n style={[\n s.rootContainer,\n isOnlyTimeVisible && s.rootContainerSmall,\n styles?.rootContainer,\n ]}\n >\n <Pressable onPressOut={hideOtherData}>\n <View style={[s.contentContainer, styles?.contentContainer]}>\n {!isOnlyTimeVisible && (\n <Image source={R.icons.clock} style={[s.icon, styles?.icon]} />\n )}\n <View style={[s.textsContainer, styles?.textsContainer]}>\n {!isOnlyTimeVisible && (\n <Text style={[s.message, styles?.message]}>{message}</Text>\n )}\n <Text style={[s.time, isOnlyTimeVisible && s.timeOnlyVisible, styles?.time]}>\n {timeRemaining}\n </Text>\n </View>\n </View>\n </Pressable>\n </View>\n )\n}\n\nexport default CartTimer\n","import { Dimensions, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst { width: sWidth } = Dimensions.get('window')\n\nexport default StyleSheet.create({\n rootContainer: {\n backgroundColor: R.colors.timerBackground,\n position: 'absolute',\n right: 0,\n top: 40,\n width: sWidth / 1.5,\n borderRadius: 2,\n padding: 8,\n elevation: 3,\n shadowOffset: { width: -3, height: 3 },\n shadowColor: R.colors.black,\n shadowOpacity: 0.2,\n shadowRadius: 3,\n },\n rootContainerSmall: {\n width: sWidth / 5,\n },\n contentContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n flex: 1,\n },\n icon: {\n width: 16,\n height: 16,\n resizeMode: 'contain',\n marginRight: 8,\n },\n textsContainer: { flex: 1 },\n message: { marginBottom: 4 },\n time: {\n fontWeight: '800',\n },\n timeOnlyVisible: {\n alignSelf: 'center',\n },\n})\n","import React from 'react'\nimport { Image, StyleProp, Text, TouchableOpacity, View, ViewStyle } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { ICheckboxProps } from './types'\n\nconst Checkbox = ({\n onPress,\n text,\n styles,\n isActive,\n customTextComp,\n error,\n}: ICheckboxProps) => {\n let indicatorStyles: StyleProp<ViewStyle> = isActive\n ? [s.indicatorOn, styles?.indicator]\n : [s.indicator, styles?.indicatorDisabled]\n\n if (error) {\n indicatorStyles = [...indicatorStyles, { borderColor: styles?.errorColor }]\n }\n\n return (\n <TouchableOpacity\n onPress={onPress}\n activeOpacity={0.8}\n style={[s.container, styles?.container]}\n >\n <>\n <View style={[s.content, styles?.content]}>\n <View style={indicatorStyles}>\n {isActive && <Image source={R.icons.check} style={[s.check, styles?.icon]} />}\n </View>\n {customTextComp || (\n <Text\n style={[\n s.textContainer,\n styles?.text,\n !!error && { color: styles?.errorColor },\n ]}\n >\n {text}\n </Text>\n )}\n </View>\n {!!error && <Text style={styles?.error}>{error}</Text>}\n </>\n </TouchableOpacity>\n )\n}\n\nexport default Checkbox\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n container: {\n marginBottom: 24,\n },\n content: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n indicator: {\n width: 24,\n height: 24,\n borderRadius: 5,\n borderWidth: 1,\n backgroundColor: R.colors.transparent,\n marginRight: 16,\n justifyContent: 'center',\n alignItems: 'center',\n },\n indicatorOn: {\n width: 24,\n height: 24,\n borderRadius: 5,\n borderWidth: 1,\n backgroundColor: R.colors.primary,\n marginRight: 16,\n justifyContent: 'center',\n alignItems: 'center',\n },\n check: {\n width: '60%',\n height: '60%',\n tintColor: R.colors.white,\n },\n textContainer: {\n flex: 1,\n },\n})\n","import React, { useState } from 'react'\nimport { Pressable, StyleSheet, View } from 'react-native'\nimport DateTimePickerModal from 'react-native-modal-datetime-picker'\n\nimport Input from '../input/Input'\nimport s from './styles'\nimport { IDatePickerProps } from './types'\n\nconst DatePicker = ({\n onSelectDate,\n onCancel,\n styles,\n text = 'Select date',\n selectedDate,\n placeholder = 'Select date',\n error,\n}: IDatePickerProps) => {\n const [isVisible, setIsVisible] = useState(false)\n const onButtonPress = () => {\n setIsVisible(true)\n }\n\n const handleOnSelectDate = (date: Date) => {\n if (onSelectDate) {\n onSelectDate(date)\n }\n setIsVisible(false)\n }\n\n const handleOnCancel = () => {\n if (onCancel) {\n onCancel()\n }\n setIsVisible(false)\n }\n\n // Format date in a more readable way\n const formatDate = (date: Date) => {\n if (!date) return ''\n // Format as MM/DD/YYYY\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const year = date.getFullYear()\n return `${month}/${day}/${year}`\n }\n\n return (\n <View style={[styles?.container, s.container]}>\n <Input\n label={text}\n value={selectedDate ? formatDate(selectedDate) : ''}\n placeholder={placeholder}\n pointerEvents=\"none\"\n editable={false} // Prevent keyboard from showing\n error={error}\n styles={{\n container: styles?.inputContainer,\n input: styles?.input,\n fieldWrapper: styles?.fieldWrapper,\n baseColor: styles?.baseColor,\n errorColor: styles?.errorColor,\n }}\n />\n <Pressable\n style={StyleSheet.absoluteFill} // covers the whole field\n onPress={onButtonPress}\n />\n <DateTimePickerModal\n isVisible={isVisible}\n mode=\"date\"\n onConfirm={handleOnSelectDate}\n onCancel={handleOnCancel}\n date={selectedDate || new Date()}\n maximumDate={new Date()}\n pickerComponentStyleIOS={{ height: 200 }}\n />\n </View>\n )\n}\n\nexport default DatePicker\n","//@ts-nocheck\n\nimport React from 'react'\nimport { Image, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { IInputProps } from './types'\nimport { OutlinedTextField } from '../../packages/rn-material-ui-textfield'\n\nconst Input = (props: IInputProps) => {\n const {\n id,\n value,\n onTextChanged,\n onChangeText,\n reference,\n label,\n styles,\n isShowPasswordButtonVisible,\n showPasswordImages,\n secureTextEntry,\n } = props\n const mainColor = styles?.baseColor ? styles.baseColor : styles?.color || R.colors.black\n\n const showPasswordImage = showPasswordImages?.show || R.icons.eye\n const hidePasswordImage = showPasswordImages?.hide || R.icons.eyeOff\n const [isShowingPassword, setIsShowingPassword] = React.useState(false)\n\n const handleOnPressShowPassword = () => {\n setIsShowingPassword(!isShowingPassword)\n }\n\n const showPasswordButton = () => {\n return (\n isShowPasswordButtonVisible &&\n secureTextEntry && (\n <TouchableOpacity onPress={handleOnPressShowPassword} activeOpacity={0.8}>\n <Image\n source={isShowingPassword ? hidePasswordImage : showPasswordImage}\n style={[s.showPasswordIcon, styles?.showPasswordIcon]}\n />\n </TouchableOpacity>\n )\n )\n }\n\n return (\n <View style={[s.container, styles?.container]}>\n <OutlinedTextField\n placeholderTextColor={styles?.placeholderColor}\n // inputRef={reference}\n value={value}\n onChangeText={(text: string) =>\n id && onTextChanged ? onTextChanged(id, text) : onChangeText\n }\n label={label}\n tintColor={mainColor}\n containerStyle={[s.fieldWrapper, styles?.fieldWrapper]}\n baseColor={mainColor}\n activeLineWidth={styles?.activeLineWidth || 1}\n lineWidth={styles?.lineWidth || 1}\n textContentType={props.isSecure ? 'oneTimeCode' : 'none'}\n autoCorrect={false}\n style={styles?.input}\n errorColor={styles?.errorColor}\n secureTextEntry={secureTextEntry && !isShowingPassword}\n renderRightAccessory={showPasswordButton}\n // // 👇 ADDED/MODIFIED LINE: Explicitly set contentInset to ensure alignment\n // // contentInset={{ left: 12, top: 10, label: 4, input: 8, right: 12 }}\n {...props}\n />\n </View>\n )\n}\n\nexport default Input\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst LEFT_ICON_SIZE = 22\nconst TEXT_LEFT_MARGIN = LEFT_ICON_SIZE + 10\nconst FONT_SIZE = 16\n\nexport default StyleSheet.create({\n container: {\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n marginBottom: 16,\n },\n textLabelFocused: {\n color: R.colors.primary,\n fontSize: 14,\n },\n textLabelFocusedError: {\n color: R.colors.danger,\n fontSize: 14,\n },\n textLabel: {\n color: R.colors.primary,\n fontSize: FONT_SIZE,\n },\n textValue: {\n color: R.colors.white,\n fontSize: FONT_SIZE,\n marginLeft: TEXT_LEFT_MARGIN,\n marginBottom: -2,\n },\n textValueWithoutIcon: {\n color: R.colors.white,\n fontSize: FONT_SIZE,\n marginLeft: 0,\n marginBottom: -2,\n },\n fieldWrapper: {\n flex: 1,\n },\n error: {\n color: R.colors.danger,\n fontSize: 14,\n marginTop: -4,\n },\n showPasswordIcon: {\n tintColor: 'black',\n width: 24,\n height: 24,\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { View, TextInput, Animated, StyleSheet, Platform } from 'react-native'\nimport {\n TextPropTypes,\n ViewPropTypes,\n TextInputPropTypes,\n} from 'deprecated-react-native-prop-types'\n\nimport Line from '../line'\nimport Label from '../label'\nimport Affix from '../affix'\nimport Helper from '../helper'\nimport Counter from '../counter'\n\nimport styles from './styles'\n\nfunction startAnimation(animation, options, callback) {\n Animated.timing(animation, options).start(callback)\n}\n\nfunction labelStateFromProps(props, state) {\n const { placeholder, defaultValue } = props\n const { value, receivedFocus } = state\n\n return !!(placeholder || value || (!receivedFocus && defaultValue))\n}\n\nfunction errorStateFromProps(props, state) {\n const { error } = props\n\n return !!error\n}\n\nexport default class TextField extends PureComponent {\n static defaultProps = {\n underlineColorAndroid: 'transparent',\n disableFullscreenUI: true,\n autoCapitalize: 'sentences',\n editable: true,\n\n animationDuration: 225,\n\n fontSize: 16,\n labelFontSize: 12,\n\n tintColor: 'rgb(0, 145, 234)',\n textColor: 'rgba(0, 0, 0, .87)',\n baseColor: 'rgba(0, 0, 0, .38)',\n\n errorColor: 'rgb(213, 0, 0)',\n\n lineWidth: StyleSheet.hairlineWidth,\n activeLineWidth: 2,\n disabledLineWidth: 1,\n\n lineType: 'solid',\n disabledLineType: 'dotted',\n\n disabled: false,\n }\n\n static propTypes = {\n ...TextInputPropTypes,\n\n animationDuration: PropTypes.number,\n\n fontSize: PropTypes.number,\n labelFontSize: PropTypes.number,\n\n contentInset: PropTypes.shape({\n top: PropTypes.number,\n label: PropTypes.number,\n input: PropTypes.number,\n left: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n }),\n\n labelOffset: Label.propTypes.offset,\n\n labelTextStyle: TextPropTypes.style,\n titleTextStyle: TextPropTypes.style,\n affixTextStyle: TextPropTypes.style,\n\n tintColor: PropTypes.string,\n textColor: PropTypes.string,\n baseColor: PropTypes.string,\n\n label: PropTypes.string,\n title: PropTypes.string,\n\n characterRestriction: PropTypes.number,\n\n error: PropTypes.string,\n errorColor: PropTypes.string,\n\n lineWidth: PropTypes.number,\n activeLineWidth: PropTypes.number,\n disabledLineWidth: PropTypes.number,\n\n lineType: Line.propTypes.lineType,\n disabledLineType: Line.propTypes.lineType,\n\n disabled: PropTypes.bool,\n\n formatText: PropTypes.func,\n\n renderLeftAccessory: PropTypes.func,\n renderRightAccessory: PropTypes.func,\n\n prefix: PropTypes.string,\n suffix: PropTypes.string,\n\n containerStyle: ViewPropTypes.style,\n inputContainerStyle: ViewPropTypes.style,\n }\n\n static inputContainerStyle = styles.inputContainer\n\n static contentInset = {\n top: 16,\n label: 4,\n input: 8,\n left: 0,\n right: 0,\n bottom: 8,\n }\n\n static labelOffset = {\n x0: 0,\n y0: 0,\n x1: 0,\n y1: 0,\n }\n\n static getDerivedStateFromProps({ error, value }, state) {\n const newState = {}\n /* Keep last received error in state */\n if (error && error !== state.error) {\n newState.error = error\n }\n\n if (value !== undefined && value !== state.value) {\n newState.value = value\n }\n\n return newState\n }\n\n constructor(props) {\n super(props)\n\n this.onBlur = this.onBlur.bind(this)\n this.onFocus = this.onFocus.bind(this)\n this.onPress = this.focus.bind(this)\n this.onChange = this.onChange.bind(this)\n this.onChangeText = this.onChangeText.bind(this)\n this.onContentSizeChange = this.onContentSizeChange.bind(this)\n this.onFocusAnimationEnd = this.onFocusAnimationEnd.bind(this)\n\n this.createGetter('contentInset')\n this.createGetter('labelOffset')\n\n this.inputRef = this.props.inputRef ?? React.createRef()\n this.mounted = false\n this.focused = false\n\n const { value, error, fontSize } = this.props\n\n const labelState = labelStateFromProps(this.props, { value }) ? 1 : 0\n const focusState = errorStateFromProps(this.props) ? -1 : 0\n\n this.state = {\n value,\n error,\n\n focusAnimation: new Animated.Value(focusState),\n labelAnimation: new Animated.Value(labelState),\n\n receivedFocus: false,\n\n height: fontSize * 1.5,\n }\n }\n\n createGetter(name) {\n this[name] = () => {\n const { [name]: value } = this.props\n const { [name]: defaultValue } = this.constructor\n\n return { ...defaultValue, ...value }\n }\n }\n\n componentDidMount() {\n this.mounted = true\n }\n\n componentWillUnmount() {\n this.mounted = false\n }\n\n componentDidUpdate(prevProps, prevState) {\n const errorState = errorStateFromProps(this.props)\n const prevErrorState = errorStateFromProps(prevProps)\n\n if (errorState ^ prevErrorState) {\n this.startFocusAnimation()\n }\n\n const labelState = labelStateFromProps(this.props, this.state)\n const prevLabelState = labelStateFromProps(prevProps, prevState)\n\n if (labelState ^ prevLabelState) {\n this.startLabelAnimation()\n }\n }\n\n startFocusAnimation() {\n const { focusAnimation } = this.state\n const { animationDuration: duration } = this.props\n\n const options = {\n toValue: this.focusState(),\n duration,\n useNativeDriver: false,\n }\n\n startAnimation(focusAnimation, options, this.onFocusAnimationEnd)\n }\n\n startLabelAnimation() {\n const { labelAnimation } = this.state\n const { animationDuration: duration } = this.props\n\n const options = {\n toValue: this.labelState(),\n useNativeDriver: true,\n duration,\n }\n\n startAnimation(labelAnimation, options)\n }\n\n setNativeProps(props) {\n const { current: input } = this.inputRef\n\n input.setNativeProps(props)\n }\n\n focusState() {\n if (errorStateFromProps(this.props)) {\n return -1\n }\n\n return this.focused ? 1 : 0\n }\n\n labelState() {\n if (labelStateFromProps(this.props, this.state)) {\n return 1\n }\n\n return this.focused ? 1 : 0\n }\n\n focus() {\n const { disabled, editable } = this.props\n const { current: input } = this.inputRef\n\n if (!disabled && editable) {\n input.focus()\n }\n }\n\n blur() {\n const { current: input } = this.inputRef\n\n input.blur()\n }\n\n clear() {\n const { current: input } = this.inputRef\n\n input.clear()\n\n /* onChangeText is not triggered by .clear() */\n this.onChangeText('')\n }\n\n value() {\n const { defaultValue } = this.props\n\n const value = this.isDefaultVisible() ? defaultValue : this.state.value\n\n if (value == null) {\n return ''\n }\n\n return typeof value === 'string' ? value : String(value)\n }\n\n setValue(value) {\n this.setState({ value })\n }\n\n isFocused() {\n const { current: input } = this.inputRef\n\n return input.isFocused()\n }\n\n isRestricted() {\n const { characterRestriction: limit } = this.props\n const { length: count } = this.value()\n\n return limit < count\n }\n\n isErrored() {\n return errorStateFromProps(this.props)\n }\n\n isDefaultVisible() {\n const { value, receivedFocus } = this.state\n const { defaultValue } = this.props\n\n return !receivedFocus && value == null && defaultValue != null\n }\n\n isPlaceholderVisible() {\n const { placeholder } = this.props\n\n return placeholder && !this.focused && !this.value()\n }\n\n isLabelActive() {\n return this.labelState() === 1\n }\n\n onFocus(event) {\n const { onFocus, clearTextOnFocus } = this.props\n const { receivedFocus } = this.state\n\n if (typeof onFocus === 'function') {\n onFocus(event)\n }\n\n if (clearTextOnFocus) {\n this.clear()\n }\n\n this.focused = true\n\n this.startFocusAnimation()\n this.startLabelAnimation()\n\n if (!receivedFocus) {\n this.setState({ receivedFocus: true, value: this.value() })\n }\n }\n\n onBlur(event) {\n const { onBlur } = this.props\n\n if (typeof onBlur === 'function') {\n onBlur(event)\n }\n\n this.focused = false\n\n this.startFocusAnimation()\n this.startLabelAnimation()\n }\n\n onChange(event) {\n const { onChange } = this.props\n\n if (typeof onChange === 'function') {\n onChange(event)\n }\n }\n\n onChangeText(text) {\n const { onChangeText, formatText } = this.props\n\n if (typeof formatText === 'function') {\n text = formatText(text)\n }\n\n this.setState({ value: text })\n\n if (typeof onChangeText === 'function') {\n onChangeText(text)\n }\n }\n\n onContentSizeChange(event) {\n const { onContentSizeChange, fontSize } = this.props\n const { height } = event.nativeEvent.contentSize\n\n if (typeof onContentSizeChange === 'function') {\n onContentSizeChange(event)\n }\n\n this.setState({\n height: Math.max(\n fontSize * 1.5,\n Math.ceil(height) + Platform.select({ ios: 4, android: 1 })\n ),\n })\n }\n\n onFocusAnimationEnd() {\n const { error } = this.props\n const { error: retainedError } = this.state\n\n if (this.mounted && !error && retainedError) {\n this.setState({ error: null })\n }\n }\n\n inputHeight() {\n const { height: computedHeight } = this.state\n const { multiline, fontSize, height = computedHeight } = this.props\n\n return multiline ? height : fontSize * 1.5\n }\n\n inputContainerHeight() {\n const { labelFontSize, multiline } = this.props\n const contentInset = this.contentInset()\n\n if (Platform.OS === 'web' && multiline) {\n return 'auto'\n }\n\n return (\n contentInset.top +\n labelFontSize +\n contentInset.label +\n this.inputHeight() +\n contentInset.input\n )\n }\n\n inputProps() {\n const store = {}\n\n for (const key in TextInputPropTypes) {\n if (key === 'defaultValue') {\n continue\n }\n\n if (key in this.props) {\n store[key] = this.props[key]\n }\n }\n\n return store\n }\n\n inputStyle() {\n const { fontSize, baseColor, textColor, disabled, multiline } = this.props\n\n const color = disabled || this.isDefaultVisible() ? baseColor : textColor\n\n const style = {\n fontSize,\n color,\n\n height: this.inputHeight(),\n }\n\n if (multiline) {\n const lineHeight = fontSize * 1.5\n const offset = Platform.OS === 'ios' ? 2 : 0\n\n style.height += lineHeight\n style.transform = [\n {\n translateY: lineHeight + offset,\n },\n ]\n }\n\n return style\n }\n\n renderLabel(props) {\n const offset = this.labelOffset()\n\n const { label, fontSize, labelFontSize, labelTextStyle } = this.props\n\n return (\n <Label\n {...props}\n fontSize={fontSize}\n activeFontSize={labelFontSize}\n offset={offset}\n label={label}\n style={labelTextStyle}\n />\n )\n }\n\n renderLine(props) {\n return <Line {...props} />\n }\n\n renderAccessory(prop) {\n const { [prop]: renderAccessory } = this.props\n\n return typeof renderAccessory === 'function' ? renderAccessory() : null\n }\n\n renderAffix(type) {\n const { labelAnimation } = this.state\n const {\n [type]: affix,\n fontSize,\n baseColor: color,\n affixTextStyle: style,\n } = this.props\n\n if (affix == null) {\n return null\n }\n\n const props = {\n type,\n style,\n color,\n fontSize,\n labelAnimation,\n }\n\n return <Affix {...props}>{affix}</Affix>\n }\n\n renderHelper() {\n const { focusAnimation, error } = this.state\n\n const {\n title,\n disabled,\n baseColor,\n errorColor,\n titleTextStyle: style,\n characterRestriction: limit,\n } = this.props\n\n const { length: count } = this.value()\n const contentInset = this.contentInset()\n\n const containerStyle = {\n paddingLeft: contentInset.left,\n paddingRight: contentInset.right,\n minHeight: contentInset.bottom,\n }\n\n const styleProps = {\n style,\n baseColor,\n errorColor,\n }\n\n const counterProps = {\n ...styleProps,\n limit,\n count,\n }\n\n const helperProps = {\n ...styleProps,\n title,\n error,\n disabled,\n focusAnimation,\n }\n\n return (\n <View style={[styles.helperContainer, containerStyle]}>\n <Helper {...helperProps} />\n <Counter {...counterProps} />\n </View>\n )\n }\n\n renderInput() {\n const { disabled, editable, tintColor, style: inputStyleOverrides } = this.props\n\n const props = this.inputProps()\n const inputStyle = this.inputStyle()\n\n return (\n <TextInput\n selectionColor={tintColor}\n {...props}\n style={[styles.input, inputStyle, inputStyleOverrides]}\n editable={!disabled && editable}\n onChange={this.onChange}\n onChangeText={this.onChangeText}\n onContentSizeChange={this.onContentSizeChange}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n value={this.value()}\n ref={this.inputRef}\n />\n )\n }\n\n render() {\n const { labelAnimation, focusAnimation } = this.state\n const {\n editable,\n disabled,\n lineType,\n disabledLineType,\n lineWidth,\n activeLineWidth,\n disabledLineWidth,\n tintColor,\n baseColor,\n errorColor,\n containerStyle,\n inputContainerStyle: inputContainerStyleOverrides,\n } = this.props\n\n const restricted = this.isRestricted()\n const contentInset = this.contentInset()\n\n const inputContainerStyle = {\n paddingTop: contentInset.top,\n paddingRight: contentInset.right,\n paddingBottom: contentInset.input,\n paddingLeft: contentInset.left,\n height: this.inputContainerHeight(),\n }\n\n const containerProps = {\n style: containerStyle,\n onStartShouldSetResponder: () => true,\n onResponderRelease: this.onPress,\n pointerEvents: !disabled ? 'auto' : 'none',\n }\n\n const inputContainerProps = {\n style: [\n this.constructor.inputContainerStyle,\n inputContainerStyle,\n inputContainerStyleOverrides,\n ],\n }\n\n const styleProps = {\n disabled,\n restricted,\n baseColor,\n tintColor,\n errorColor,\n\n contentInset,\n\n focusAnimation,\n labelAnimation,\n }\n\n const lineProps = {\n ...styleProps,\n\n lineWidth,\n activeLineWidth,\n disabledLineWidth,\n\n lineType,\n disabledLineType,\n }\n\n return (\n <View {...containerProps}>\n <Animated.View {...inputContainerProps}>\n {this.renderLine(lineProps)}\n {this.renderAccessory('renderLeftAccessory')}\n <View style={styles.stack} pointerEvents={editable ? 'auto' : 'none'}>\n {this.renderLabel(styleProps)}\n <View style={styles.row}>\n {this.renderAffix('prefix')}\n {this.renderInput()}\n {this.renderAffix('suffix')}\n </View>\n </View>\n {this.renderAccessory('renderRightAccessory')}\n </Animated.View>\n {this.renderHelper()}\n </View>\n )\n }\n}\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { View, Animated } from 'react-native'\n\nimport styles from './styles'\n\nconst lineTypes = PropTypes.oneOf(['solid', 'dotted', 'dashed', 'none'])\n\nexport default class Line extends PureComponent {\n static defaultProps = {\n lineType: 'solid',\n disabledLineType: 'dotted',\n\n disabled: false,\n restricted: false,\n }\n\n static propTypes = {\n lineType: lineTypes,\n disabledLineType: lineTypes,\n\n disabled: PropTypes.bool,\n restricted: PropTypes.bool,\n\n tintColor: PropTypes.string,\n baseColor: PropTypes.string,\n errorColor: PropTypes.string,\n\n lineWidth: PropTypes.number,\n activeLineWidth: PropTypes.number,\n disabledLineWidth: PropTypes.number,\n\n focusAnimation: PropTypes.instanceOf(Animated.Value),\n }\n\n static getDerivedStateFromProps(props, state) {\n const { lineWidth, activeLineWidth, disabledLineWidth } = props\n\n const maxLineWidth = Math.max(lineWidth, activeLineWidth, disabledLineWidth, 1)\n\n if (maxLineWidth !== state.maxLineWidth) {\n return { maxLineWidth }\n }\n\n return null\n }\n\n state = { maxLineWidth: 1 }\n\n borderProps() {\n const {\n disabled,\n restricted,\n lineWidth,\n activeLineWidth,\n disabledLineWidth,\n baseColor,\n tintColor,\n errorColor,\n focusAnimation,\n } = this.props\n\n if (disabled) {\n return {\n borderColor: baseColor,\n borderWidth: disabledLineWidth,\n }\n }\n\n if (restricted) {\n return {\n borderColor: errorColor,\n borderWidth: activeLineWidth,\n }\n }\n\n return {\n borderColor: focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [errorColor, baseColor, tintColor],\n }),\n\n borderWidth: focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [activeLineWidth, lineWidth, activeLineWidth],\n }),\n }\n }\n\n render() {\n const { maxLineWidth } = this.state\n const { disabled, lineType, disabledLineType } = this.props\n\n const borderStyle = disabled ? disabledLineType : lineType\n\n if (borderStyle === 'none') {\n return null\n }\n\n const [top, right, left] = Array.from(new Array(3), () => -1.5 * maxLineWidth)\n\n const lineStyle = {\n ...this.borderProps(),\n\n borderStyle,\n top,\n right,\n left,\n }\n\n return (\n <View style={styles.container} pointerEvents=\"none\">\n <Animated.View style={[styles.line, lineStyle]} />\n </View>\n )\n }\n}\n","import { StyleSheet, Platform } from 'react-native'\n\nexport default StyleSheet.create({\n line: {\n position: 'absolute',\n bottom: 0,\n\n ...Platform.select({\n android: { borderRadius: Number.EPSILON },\n }),\n },\n\n container: {\n ...StyleSheet.absoluteFillObject,\n\n overflow: 'hidden',\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { Animated } from 'react-native'\nimport { TextPropTypes } from 'deprecated-react-native-prop-types'\n\nimport styles from './styles'\n\nexport default class Label extends PureComponent {\n static defaultProps = {\n numberOfLines: 1,\n disabled: false,\n restricted: false,\n }\n\n static propTypes = {\n numberOfLines: PropTypes.number,\n\n disabled: PropTypes.bool,\n restricted: PropTypes.bool,\n\n fontSize: PropTypes.number.isRequired,\n activeFontSize: PropTypes.number.isRequired,\n\n baseColor: PropTypes.string.isRequired,\n tintColor: PropTypes.string.isRequired,\n errorColor: PropTypes.string.isRequired,\n\n focusAnimation: PropTypes.instanceOf(Animated.Value).isRequired,\n\n labelAnimation: PropTypes.instanceOf(Animated.Value).isRequired,\n\n contentInset: PropTypes.shape({\n label: PropTypes.number,\n }),\n\n offset: PropTypes.shape({\n x0: PropTypes.number,\n y0: PropTypes.number,\n x1: PropTypes.number,\n y1: PropTypes.number,\n }),\n\n style: TextPropTypes.style,\n label: PropTypes.string,\n }\n\n render() {\n const {\n label,\n offset,\n disabled,\n restricted,\n fontSize,\n activeFontSize,\n contentInset,\n errorColor,\n baseColor,\n tintColor,\n style,\n focusAnimation,\n labelAnimation,\n ...props\n } = this.props\n\n if (label == null) {\n return null\n }\n\n const color = disabled\n ? baseColor\n : restricted\n ? errorColor\n : focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [errorColor, baseColor, tintColor],\n })\n\n const textStyle = {\n lineHeight: style?.lineHeight || fontSize,\n fontSize,\n color,\n }\n\n let { x0, y0, x1, y1 } = offset\n\n y0 += activeFontSize\n y0 += contentInset.label\n y0 += fontSize * 0.25\n\n const scale = labelAnimation.interpolate({\n inputRange: [0, 1],\n outputRange: [1, activeFontSize / fontSize],\n })\n\n const containerStyle = {\n transform: [\n {\n translateX: labelAnimation.interpolate({\n inputRange: [0, 1],\n outputRange: [x0, x1],\n }),\n },\n {\n translateY: labelAnimation.interpolate({\n inputRange: [0, 1],\n outputRange: [y0, y1],\n }),\n },\n {\n scale,\n },\n ],\n }\n\n return (\n <Animated.View style={[styles.container, containerStyle]}>\n <Animated.Text style={[styles.text, style, textStyle]} {...props}>\n {label}\n </Animated.Text>\n </Animated.View>\n )\n }\n}\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n container: {\n position: 'absolute',\n top: 0,\n transformOrigin: 'left',\n transform: [{ translateX: '-50%' }],\n },\n\n text: {\n textAlign: 'left',\n includeFontPadding: false,\n textAlignVertical: 'top',\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { Animated } from 'react-native'\nimport { TextPropTypes } from 'deprecated-react-native-prop-types'\n\nimport styles from './styles'\n\nexport default class Affix extends PureComponent {\n static defaultProps = {\n numberOfLines: 1,\n }\n\n static propTypes = {\n numberOfLines: PropTypes.number,\n style: TextPropTypes.style,\n\n color: PropTypes.string.isRequired,\n fontSize: PropTypes.number.isRequired,\n\n type: PropTypes.oneOf(['prefix', 'suffix']).isRequired,\n\n labelAnimation: PropTypes.instanceOf(Animated.Value).isRequired,\n\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n }\n\n render() {\n const { labelAnimation, style, children, type, fontSize, color } = this.props\n\n const containerStyle = {\n height: fontSize * 1.5,\n opacity: labelAnimation,\n }\n\n const textStyle = {\n includeFontPadding: false,\n textAlignVertical: 'top',\n\n fontSize,\n color,\n }\n\n switch (type) {\n case 'prefix':\n containerStyle.paddingRight = 8\n textStyle.textAlign = 'left'\n break\n\n case 'suffix':\n containerStyle.paddingLeft = 8\n textStyle.textAlign = 'right'\n break\n }\n\n return (\n <Animated.View style={[styles.container, containerStyle]}>\n <Animated.Text style={[style, textStyle]}>{children}</Animated.Text>\n </Animated.View>\n )\n }\n}\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n container: {\n top: 2,\n justifyContent: 'center',\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { Animated } from 'react-native'\nimport { TextPropTypes } from 'deprecated-react-native-prop-types'\n\nimport styles from './styles'\n\nexport default class Helper extends PureComponent {\n static propTypes = {\n title: PropTypes.string,\n error: PropTypes.string,\n disabled: PropTypes.bool,\n style: TextPropTypes.style,\n baseColor: PropTypes.string,\n errorColor: PropTypes.string,\n focusAnimation: PropTypes.instanceOf(Animated.Value),\n }\n\n constructor(props) {\n super(props)\n\n const { error, focusAnimation } = this.props\n\n const opacity = focusAnimation.interpolate({\n inputRange: [-1, -0.5, 0],\n outputRange: [1, 0, 1],\n extrapolate: 'clamp',\n })\n\n this.state = {\n errored: !!error,\n opacity,\n }\n }\n\n componentDidMount() {\n const { focusAnimation } = this.props\n\n this.listener = focusAnimation.addListener(this.onAnimation.bind(this))\n }\n\n componentWillUnmount() {\n const { focusAnimation } = this.props\n\n focusAnimation.removeListener(this.listener)\n }\n\n onAnimation({ value }) {\n if (this.animationValue > -0.5 && value <= -0.5) {\n this.setState({ errored: true })\n }\n\n if (this.animationValue < -0.5 && value >= -0.5) {\n this.setState({ errored: false })\n }\n\n this.animationValue = value\n }\n\n render() {\n const { errored, opacity } = this.state\n const { style, title, error, disabled, baseColor, errorColor } = this.props\n\n const text = errored ? error : title\n\n if (text == null) {\n return null\n }\n\n const textStyle = {\n opacity,\n\n color: !disabled && errored ? errorColor : baseColor,\n }\n\n return <Animated.Text style={[styles.text, style, textStyle]}>{text}</Animated.Text>\n }\n}\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n text: {\n flex: 1,\n fontSize: 12,\n lineHeight: 16,\n backgroundColor: 'transparent',\n paddingVertical: 2,\n textAlign: 'left',\n },\n})\n","import PropTypes from 'prop-types'\nimport React, { PureComponent } from 'react'\nimport { Text } from 'react-native'\n\nimport styles from './styles'\nimport { TextPropTypes } from 'deprecated-react-native-prop-types'\n\nexport default class Counter extends PureComponent {\n static propTypes = {\n count: PropTypes.number.isRequired,\n limit: PropTypes.number,\n\n baseColor: PropTypes.string.isRequired,\n errorColor: PropTypes.string.isRequired,\n\n style: TextPropTypes.style,\n }\n\n render() {\n const { count, limit, baseColor, errorColor, style } = this.props\n\n if (!limit) {\n return null\n }\n\n const textStyle = {\n color: count > limit ? errorColor : baseColor,\n }\n\n return (\n <Text style={[styles.text, style, textStyle]}>\n {count} / {limit}\n </Text>\n )\n }\n}\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n text: {\n fontSize: 12,\n lineHeight: 16,\n textAlign: 'right',\n backgroundColor: 'transparent',\n paddingVertical: 2,\n marginLeft: 8,\n },\n})\n","import { StyleSheet, I18nManager } from 'react-native'\n\nexport default StyleSheet.create({\n inputContainer: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n\n input: {\n top: 2,\n padding: 0,\n paddingTop: 0 /* XXX: iOS has paddingTop set for multiline input */,\n margin: 0,\n flex: 1,\n\n textAlign: I18nManager.isRTL ? 'right' : 'left',\n\n includeFontPadding: false,\n textAlignVertical: 'top',\n },\n\n helperContainer: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n },\n\n row: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n\n stack: {\n flex: 1,\n alignSelf: 'stretch',\n },\n\n flex: {\n flex: 1,\n },\n})\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n inputContainer: {\n borderTopLeftRadius: 4,\n borderTopRightRadius: 4,\n\n backgroundColor: 'rgb(204, 204, 204)',\n },\n})\n","import TextField from '../field'\nimport styles from './styles'\n\nexport default class FilledTextField extends TextField {\n static contentInset = {\n ...TextField.contentInset,\n\n top: 8,\n left: 12,\n right: 12,\n }\n\n static labelOffset = {\n ...TextField.labelOffset,\n\n y0: -10,\n y1: -2,\n }\n\n static inputContainerStyle = [TextField.inputContainerStyle, styles.inputContainer]\n}\n","import React from 'react'\nimport { Animated, StyleSheet } from 'react-native'\n\nimport TextField from '../field'\nimport Outline from '../outline'\n\nexport default class OutlinedTextField extends TextField {\n static contentInset = {\n ...TextField.contentInset,\n\n input: 16,\n\n top: 0,\n left: 12,\n right: 12,\n }\n\n static labelOffset = {\n ...TextField.labelOffset,\n\n y0: 0,\n y1: -10,\n }\n\n static defaultProps = {\n ...TextField.defaultProps,\n\n lineWidth: 1,\n disabledLineWidth: StyleSheet.hairlineWidth,\n }\n\n constructor(props) {\n super(props)\n\n this.onTextLayout = this.onTextLayout.bind(this)\n this.state.labelWidth = new Animated.Value(0)\n }\n\n onTextLayout({ nativeEvent: { lines } }) {\n const { fontSize, labelFontSize } = this.props\n const { labelWidth } = this.state\n\n const scale = labelFontSize / fontSize\n\n labelWidth.setValue(lines[0].width * scale)\n }\n\n renderLabel(props) {\n const { onTextLayout } = this\n\n return super.renderLabel({ ...props, onTextLayout })\n }\n\n renderLine(props) {\n const { labelWidth } = this.state\n\n return <Outline {...props} labelWidth={labelWidth} />\n }\n}\n","import PropTypes from 'prop-types'\nimport React, { Fragment, PureComponent } from 'react'\nimport { View, Animated, I18nManager } from 'react-native'\n\nimport styles, { borderRadius } from './styles'\n\nexport default class Line extends PureComponent {\n static defaultProps = {\n lineType: 'solid',\n disabled: false,\n restricted: false,\n }\n\n static propTypes = {\n lineType: PropTypes.oneOf(['solid', 'none']),\n\n disabled: PropTypes.bool,\n restricted: PropTypes.bool,\n\n tintColor: PropTypes.string,\n baseColor: PropTypes.string,\n errorColor: PropTypes.string,\n\n lineWidth: PropTypes.number,\n activeLineWidth: PropTypes.number,\n disabledLineWidth: PropTypes.number,\n\n focusAnimation: PropTypes.instanceOf(Animated.Value),\n labelAnimation: PropTypes.instanceOf(Animated.Value),\n labelWidth: PropTypes.instanceOf(Animated.Value),\n\n contentInset: PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n }),\n }\n\n borderProps() {\n const {\n disabled,\n restricted,\n lineType,\n lineWidth,\n activeLineWidth,\n disabledLineWidth,\n baseColor,\n tintColor,\n errorColor,\n focusAnimation,\n } = this.props\n\n if (disabled) {\n return {\n borderColor: baseColor,\n borderWidth: disabledLineWidth,\n }\n }\n\n if (restricted) {\n return {\n borderColor: errorColor,\n borderWidth: activeLineWidth,\n }\n }\n\n return {\n borderColor: focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [errorColor, baseColor, tintColor],\n }),\n\n borderWidth: focusAnimation.interpolate({\n inputRange: [-1, 0, 1],\n outputRange: [activeLineWidth, lineWidth, activeLineWidth],\n }),\n\n borderStyle: lineType,\n }\n }\n\n render() {\n const { lineType, labelWidth, labelAnimation, contentInset } = this.props\n\n if (lineType === 'none') {\n return null\n }\n\n const labelOffset = 2 * (contentInset.left - 2 * borderRadius)\n const lineOffset = Animated.add(labelWidth, labelOffset)\n\n const topLineContainerStyle = {\n transform: [\n {\n scaleX: I18nManager.isRTL ? -1 : 1,\n },\n {\n translateX: Animated.multiply(labelAnimation, lineOffset),\n },\n ],\n }\n\n const leftContainerStyle = {\n width: contentInset.left - borderRadius,\n }\n\n const rightContainerStyle = {\n width: contentInset.right - borderRadius,\n }\n\n const topContainerStyle = {\n left: leftContainerStyle.width,\n right: rightContainerStyle.width,\n }\n\n const lineStyle = this.borderProps()\n\n return (\n <Fragment>\n <View style={[styles.topContainer, topContainerStyle]} pointerEvents=\"none\">\n <Animated.View style={[styles.topLineContainer, topLineContainerStyle]}>\n <Animated.View style={[styles.borderTop, lineStyle]} />\n </Animated.View>\n </View>\n\n <View style={[styles.rightContainer, rightContainerStyle]} pointerEvents=\"none\">\n <Animated.View style={[styles.borderRight, lineStyle]} />\n </View>\n\n <View style={styles.bottomContainer} pointerEvents=\"none\">\n <Animated.View style={[styles.borderBottom, lineStyle]} />\n </View>\n\n <View style={[styles.leftContainer, leftContainerStyle]} pointerEvents=\"none\">\n <Animated.View style={[styles.borderLeft, lineStyle]} />\n </View>\n </Fragment>\n )\n }\n}\n","import { StyleSheet, Platform } from 'react-native'\n\nexport const borderRadius = 4\n\nconst containerStyle = {\n position: 'absolute',\n overflow: 'hidden',\n}\n\nexport default StyleSheet.create({\n borderLeft: {\n ...StyleSheet.absoluteFillObject,\n borderRadius,\n\n right: -borderRadius,\n bottom: -borderRadius,\n },\n\n borderRight: {\n ...StyleSheet.absoluteFillObject,\n borderRadius,\n\n left: -borderRadius,\n bottom: -borderRadius,\n },\n\n borderBottom: {\n ...StyleSheet.absoluteFillObject,\n borderRadius,\n\n top: -borderRadius,\n\n /* XXX: Android positioning error workaround */\n bottom: StyleSheet.hairlineWidth,\n },\n\n borderTop: {\n ...StyleSheet.absoluteFillObject,\n borderRadius,\n\n left: -borderRadius,\n right: -borderRadius,\n bottom: -borderRadius,\n },\n\n leftContainer: {\n ...containerStyle,\n\n top: 0,\n left: 0,\n width: borderRadius,\n height: borderRadius,\n },\n\n rightContainer: {\n ...containerStyle,\n\n top: 0,\n right: 0,\n height: borderRadius,\n },\n\n bottomContainer: {\n ...containerStyle,\n\n top: borderRadius - (Platform.OS === 'android' ? 0.25 : 0),\n left: 0,\n right: 0,\n bottom: 0,\n },\n\n topContainer: {\n ...containerStyle,\n\n top: 0,\n height: borderRadius,\n },\n\n topLineContainer: {\n ...StyleSheet.absoluteFillObject,\n overflow: 'hidden',\n },\n})\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst FONT_SIZE = 16\n\nexport default StyleSheet.create({\n container: {\n width: '100%',\n position: 'relative',\n },\n label: {\n fontSize: 12,\n color: R.colors.primary,\n marginBottom: 4,\n fontWeight: '400',\n },\n button: {\n width: '100%',\n borderWidth: 1,\n height: 56,\n alignItems: 'flex-start',\n justifyContent: 'center',\n paddingHorizontal: 12,\n borderColor: '#bdbdbd',\n borderRadius: 4,\n backgroundColor: 'transparent',\n },\n text: {\n fontSize: FONT_SIZE,\n paddingVertical: 8,\n color: '#000000',\n },\n error: {\n color: R.colors.danger,\n fontSize: 12,\n marginTop: 4,\n },\n})\n","//@ts-nocheck\n\nimport React, { MutableRefObject, useCallback, useEffect, useRef, useState } from 'react'\nimport {\n FlatList,\n Image,\n Modal,\n Text,\n TouchableOpacity,\n TouchableWithoutFeedback,\n View,\n} from 'react-native'\n\nimport R from '../../res'\nimport Separator from '../separator/Separator'\nimport DropdownListItem from './DropdownListItem'\nimport { DropdownStyles as s } from './styles'\nimport { IDropdownItem, IDropdownProps } from './types'\n\nconst Dropdown = ({ items, selectedOption, onSelectItem, styles }: IDropdownProps) => {\n const [isModalVisible, setIsModalVisible] = useState(false)\n const flatListRef: MutableRefObject<FlatList> = useRef()\n\n const showModal = () => {\n requestAnimationFrame(() => {\n setIsModalVisible(true)\n })\n }\n const hideModal = () => {\n requestAnimationFrame(() => {\n setIsModalVisible(false)\n })\n }\n\n const handleOnSelectItem = (item: IDropdownItem) => {\n onSelectItem(item)\n hideModal()\n }\n\n useEffect(() => {\n if (flatListRef?.current) {\n flatListRef.current.flashScrollIndicators()\n }\n }, [isModalVisible])\n\n const renderItem = useCallback(\n ({ item }) => (\n <DropdownListItem\n item={item}\n onSelectItem={handleOnSelectItem}\n selectedOption={selectedOption}\n styles={styles?.listItem}\n />\n ),\n\n [handleOnSelectItem, selectedOption]\n )\n\n const keyExtractor = useCallback((item: IDropdownItem) => item.value.toString(), [])\n\n const renderSeparator = useCallback(() => <Separator />, [])\n\n const getItemLayout = useCallback(\n (data, index) => ({\n length: 45,\n offset: 45 * index,\n index,\n }),\n []\n )\n\n return (\n <View style={[s.rootContainer, styles?.container]}>\n <TouchableOpacity onPress={showModal} style={[s.button, styles?.button]}>\n <Text style={[s.label, styles?.label]}>{selectedOption?.label}</Text>\n <Image source={R.icons.dropdown} style={[s.icon, styles?.icon]} />\n </TouchableOpacity>\n {isModalVisible && items.length > 0 && (\n <Modal presentationStyle=\"overFullScreen\" transparent={true}>\n <View style={s.modalContainer}>\n <TouchableOpacity\n activeOpacity={1}\n onPress={hideModal}\n style={s.modalBackgroundTouchable}\n >\n <TouchableWithoutFeedback>\n <View style={[s.dialog, styles?.dialog]}>\n <FlatList\n keyExtractor={keyExtractor}\n ref={flatListRef}\n indicatorStyle=\"black\"\n data={items}\n extraData={items}\n maxToRenderPerBatch={6}\n initialNumToRender={6}\n renderItem={renderItem}\n ItemSeparatorComponent={renderSeparator}\n getItemLayout={getItemLayout}\n style={[s.flatListContainer, styles?.flatListContainer]}\n />\n </View>\n </TouchableWithoutFeedback>\n </TouchableOpacity>\n </View>\n </Modal>\n )}\n </View>\n )\n}\n\nexport default Dropdown\n","import React from 'react'\nimport { View } from 'react-native'\n\nimport { ISeparatorProps } from './types'\n\nconst Separator = ({\n color,\n height,\n width,\n marginLeft,\n marginVertical,\n}: ISeparatorProps) => {\n return (\n <View\n style={{\n height: height || 1,\n backgroundColor: color || '#DEDEDE',\n width: width || '99%',\n marginLeft: marginLeft || '0.5%',\n marginVertical: marginVertical,\n }}\n />\n )\n}\n\nexport default Separator\n","import React from 'react'\nimport { Text, TouchableOpacity, View } from 'react-native'\n\nimport { DropdownListItemStyles as s } from './styles'\nimport { IDropdownListItemProps } from './types'\n\nconst DropdownListItem = ({\n item,\n onSelectItem,\n selectedOption,\n styles,\n}: IDropdownListItemProps) => {\n const handleOnSelectItem = () => onSelectItem(item)\n const isSelected = !!selectedOption && selectedOption.value === item.value\n const selectedStyles = [s.buttonSelected, styles?.buttonSelected]\n\n const buttonStyles = [s.button, styles?.button]\n\n return (\n <View style={[s.rootContainer, styles?.container]}>\n <TouchableOpacity\n onPress={handleOnSelectItem}\n style={isSelected ? selectedStyles : buttonStyles}\n >\n <Text\n style={[s.text, isSelected ? styles?.textSelected : styles?.text]}\n numberOfLines={2}\n >\n {item.label}\n </Text>\n </TouchableOpacity>\n </View>\n )\n}\n\nexport default DropdownListItem\n","import { Dimensions, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst { width: sWidth, height: sHeight } = Dimensions.get('window')\n\nconst DIALOG = {\n width: sWidth * 0.8,\n maxHeight: sHeight * 0.5,\n minHeight: sHeight * 0.2,\n}\n\nexport const DropdownStyles = StyleSheet.create({\n rootContainer: {\n width: 50,\n },\n button: {\n width: '100%',\n borderWidth: 2,\n height: 45,\n alignItems: 'center',\n justifyContent: 'space-between',\n flexDirection: 'row',\n paddingHorizontal: 8,\n borderColor: R.colors.black,\n },\n icon: {\n height: 14,\n width: 14,\n resizeMode: 'contain',\n tintColor: R.colors.black,\n },\n label: {\n color: R.colors.black,\n fontSize: 16,\n },\n modalContainer: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.8)',\n },\n modalBackgroundTouchable: {\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n dialog: {\n backgroundColor: R.colors.white,\n paddingVertical: 16,\n borderRadius: 2,\n alignItems: 'center',\n justifyContent: 'center',\n width: DIALOG.width,\n maxHeight: DIALOG.maxHeight,\n minHeight: DIALOG.minHeight,\n shadowColor: R.colors.black,\n shadowOffset: {\n width: 3,\n height: 2,\n },\n shadowOpacity: 0.3,\n shadowRadius: 3,\n },\n flatListContainer: {\n width: DIALOG.width,\n },\n})\n\nexport const DropdownListItemStyles = StyleSheet.create({\n rootContainer: {\n paddingVertical: 4,\n minWidth: 100,\n alignItems: 'center',\n },\n button: {\n width: '100%',\n minHeight: 35,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: R.colors.white,\n paddingHorizontal: 8,\n },\n buttonSelected: {\n width: '100%',\n minHeight: 35,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: R.colors.tint,\n paddingHorizontal: 8,\n },\n text: {\n fontSize: 18,\n fontWeight: '600',\n textAlign: 'center',\n color: R.colors.black,\n },\n})\n","//@ts-nocheck\n\nimport React, { MutableRefObject, useCallback, useEffect, useRef, useState } from 'react'\nimport {\n FlatList,\n Image,\n Modal,\n TouchableOpacity,\n TouchableWithoutFeedback,\n View,\n} from 'react-native'\n\nimport R from '../../res'\nimport DropdownListItem from '../dropdown/DropdownListItem'\nimport Input from '../input/Input'\nimport Separator from '../separator/Separator'\nimport { DropdownMaterialStyles as s } from './styles'\nimport { IDropdownItem, IDropdownMaterialProps } from './types'\n\nconst DropdownMaterial = ({\n items,\n selectedOption,\n onSelectItem,\n styles,\n materialInputProps,\n}: IDropdownMaterialProps) => {\n const [isModalVisible, setIsModalVisible] = useState(false)\n const flatListRef: MutableRefObject<FlatList> = useRef()\n\n const showModal = () => {\n requestAnimationFrame(() => {\n setIsModalVisible(true)\n })\n }\n const hideModal = () => {\n requestAnimationFrame(() => {\n setIsModalVisible(false)\n })\n }\n\n const handleOnSelectItem = (item: IDropdownItem) => {\n onSelectItem(item)\n hideModal()\n }\n\n useEffect(() => {\n if (flatListRef?.current) {\n flatListRef.current.flashScrollIndicators()\n }\n }, [isModalVisible])\n\n const renderItem = useCallback(\n ({ item }) => (\n <DropdownListItem\n item={item}\n onSelectItem={handleOnSelectItem}\n selectedOption={selectedOption}\n styles={styles?.listItem}\n />\n ),\n\n [handleOnSelectItem, selectedOption]\n )\n\n const keyExtractor = useCallback((item: IDropdownItem) => item.value.toString(), [])\n\n const renderSeparator = useCallback(() => <Separator />, [])\n\n const getItemLayout = useCallback(\n (data, index) => ({\n length: 45,\n offset: 45 * index,\n index,\n }),\n []\n )\n\n const RightComponent = useCallback(\n () => <Image source={R.icons.dropdown} style={[s.icon, styles?.icon]} />,\n [styles?.icon]\n )\n\n return (\n <View style={[s.rootContainer, styles?.container]}>\n <TouchableOpacity onPress={showModal} style={s.button}>\n <Input\n {...materialInputProps}\n value={selectedOption?.label}\n styles={styles?.input}\n disabled={true}\n pointerEvents=\"box-none\"\n disabledLineWidth={1}\n renderRightAccessory={RightComponent}\n />\n </TouchableOpacity>\n {isModalVisible && items.length > 0 && (\n <Modal presentationStyle=\"overFullScreen\" transparent={true}>\n <View style={s.modalContainer}>\n <TouchableOpacity\n activeOpacity={1}\n onPress={hideModal}\n style={s.modalBackgroundTouchable}\n >\n <TouchableWithoutFeedback>\n <View style={[s.dialog, styles?.dialog]}>\n <FlatList\n keyExtractor={keyExtractor}\n ref={flatListRef}\n indicatorStyle=\"black\"\n data={items}\n extraData={items}\n maxToRenderPerBatch={6}\n initialNumToRender={6}\n renderItem={renderItem}\n ItemSeparatorComponent={renderSeparator}\n getItemLayout={getItemLayout}\n style={[s.flatListContainer, styles?.flatListContainer]}\n />\n </View>\n </TouchableWithoutFeedback>\n </TouchableOpacity>\n </View>\n </Modal>\n )}\n </View>\n )\n}\n\nexport default DropdownMaterial\n","import { Dimensions, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst { width: sWidth, height: sHeight } = Dimensions.get('window')\n\nconst DIALOG = {\n width: sWidth * 0.8,\n maxHeight: sHeight * 0.5,\n minHeight: sHeight * 0.2,\n}\n\nexport const DropdownMaterialStyles = StyleSheet.create({\n rootContainer: {\n width: '100%',\n height: 45,\n marginBottom: 32,\n },\n button: {\n height: '120%',\n },\n icon: {\n height: 14,\n width: 14,\n resizeMode: 'contain',\n tintColor: R.colors.white,\n },\n label: {\n color: R.colors.black,\n fontSize: 16,\n },\n modalContainer: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.8)',\n },\n modalBackgroundTouchable: {\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n dialog: {\n backgroundColor: R.colors.white,\n paddingVertical: 16,\n borderRadius: 2,\n alignItems: 'center',\n justifyContent: 'center',\n width: DIALOG.width,\n maxHeight: DIALOG.maxHeight,\n shadowColor: R.colors.black,\n shadowOffset: {\n width: 3,\n height: 2,\n },\n shadowOpacity: 0.3,\n shadowRadius: 3,\n },\n flatListContainer: {\n width: DIALOG.width,\n },\n})\n\nexport const DropdownListItemStyles = StyleSheet.create({\n rootContainer: {\n paddingVertical: 4,\n minWidth: 100,\n alignItems: 'center',\n },\n button: {\n width: '100%',\n minHeight: 35,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: R.colors.white,\n paddingHorizontal: 8,\n },\n buttonSelected: {\n width: '100%',\n minHeight: 35,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: R.colors.tint,\n paddingHorizontal: 8,\n },\n text: {\n fontSize: 18,\n fontWeight: '600',\n textAlign: 'center',\n color: R.colors.black,\n },\n})\n","import React, { FC, useState } from 'react'\nimport { Modal, Text, View } from 'react-native'\n\nimport Button from '../button/Button'\nimport Input from '../input/Input'\nimport s from './styles'\nimport { IEnterPasswordProps } from './types'\n\nconst EnterPassword: FC<IEnterPasswordProps> = ({\n styles,\n texts,\n onSubmit,\n isLoading,\n apiError,\n}) => {\n const [password, setPassword] = useState('')\n\n const handleOnSubmit = () => {\n if (password.length > 0) onSubmit?.(password)\n }\n\n return (\n <Modal presentationStyle=\"overFullScreen\" transparent={false}>\n <View style={styles?.rootContainer || s.rootContainer}>\n <View style={styles?.contentContainer || s.contentContainer}>\n <Text style={styles?.title || s.title}>\n {texts?.title || 'Password is required for this event'}\n </Text>\n <Input\n label={texts?.inputLabel || `Enter the event's password`}\n value={password}\n onChangeText={setPassword}\n styles={styles?.input}\n autoCapitalize=\"none\"\n />\n {!!apiError && <Text style={s.errorText || styles?.error}>{apiError}</Text>}\n <Button\n text={texts?.buttonText || 'Submit'}\n styles={styles?.button}\n onPress={handleOnSubmit}\n isLoading={isLoading}\n isDisabled={isLoading || password.length === 0}\n />\n </View>\n </View>\n </Modal>\n )\n}\n\nexport default EnterPassword\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n rootContainer: {\n flex: 1,\n backgroundColor: R.colors.white,\n justifyContent: 'center',\n alignItems: 'center',\n },\n contentContainer: {\n marginHorizontal: 32,\n },\n title: {\n fontSize: 18,\n fontWeight: '800',\n marginBottom: 32,\n },\n errorText: {\n color: R.colors.danger,\n },\n})\n","import React from 'react'\nimport { Text } from 'react-native'\n\nimport Checkbox from '../checkbox/Checkbox'\nimport DatePicker from '../datePicker/DatePicker'\nimport DropdownMaterial from '../dropdownMaterial/DropdownMaterial'\nimport Input from '../input/Input'\nimport RadioGroup from '../radioGroup'\nimport styles from './styles'\nimport { IFormFieldProps } from './types'\n\nconst FormField = ({\n id,\n fieldType,\n error,\n dropdownProps,\n inputProps,\n title,\n checkboxProps,\n datePickerProps,\n radioProps,\n headerStyle,\n titleStyle,\n textStyle,\n}: IFormFieldProps) => {\n switch (fieldType) {\n case 'input':\n return (\n <Input\n value={inputProps!.value}\n id={id}\n onTextChanged={inputProps!.onTextChanged}\n label={inputProps!.label || 'Label'}\n error={error}\n {...inputProps}\n />\n )\n\n case 'dropdown':\n // Special handling for multi-select dropdown\n if (dropdownProps?.isMultiSelect && dropdownProps.selectedOptions) {\n // For multi-select, we create a display string from selected options\n const selectedText =\n dropdownProps.selectedOptions.length > 0\n ? dropdownProps.selectedOptions.map((item) => item.label).join(', ')\n : `Select ${dropdownProps?.style?.label?.text || 'items'}`\n\n // Use a fake selectedOption for the display\n const displayOption = {\n value: '',\n label: selectedText,\n }\n\n // Return with special multi-select handling\n return (\n <DropdownMaterial\n items={dropdownProps.options}\n selectedOption={displayOption}\n onSelectItem={(item) => dropdownProps.onSelectOption(id!, item)}\n materialInputProps={{\n label: dropdownProps?.style?.label?.text || 'Select Multiple',\n error: error,\n }}\n />\n )\n } else {\n // Standard single-select dropdown\n return (\n <DropdownMaterial\n items={dropdownProps!.options}\n selectedOption={dropdownProps?.selectedOption}\n onSelectItem={(item) => dropdownProps!.onSelectOption(id!, item)}\n materialInputProps={{\n label: dropdownProps?.style?.label?.text || 'Select',\n error: error,\n }}\n />\n )\n }\n\n case 'title':\n return <Text style={[styles.title, titleStyle]}>{title}</Text>\n\n case 'header':\n return <Text style={[styles.header, headerStyle]}>{title}</Text>\n\n case 'text':\n return <Text style={[styles.text, textStyle]}>{title}</Text>\n\n case 'checkbox':\n return (\n <Checkbox\n isActive={checkboxProps!.isActive}\n text={checkboxProps!.text}\n onPress={() => {\n checkboxProps!.onPress(id!)\n }}\n styles={checkboxProps?.styles}\n customTextComp={checkboxProps?.customTextComp}\n />\n )\n\n case 'datePicker':\n return (\n <DatePicker\n error={error}\n onSelectDate={datePickerProps!.onSelectDate}\n text={datePickerProps?.text || 'Select date'}\n onCancel={datePickerProps?.onCancel}\n selectedDate={datePickerProps!.selectedDate}\n />\n )\n\n case 'radio':\n return (\n <RadioGroup\n options={radioProps!.options}\n selectedValue={radioProps!.selectedValue}\n onValueChange={(value) => {\n // Just call the function directly since we're using non-null assertion\n radioProps!.onValueChange(value)\n }}\n label={radioProps?.label}\n error={error}\n styles={radioProps?.styles}\n />\n )\n }\n}\n\nexport default FormField\n","import React from 'react'\nimport { Text, TouchableOpacity, View } from 'react-native'\n\nimport { IRadioGroupProps } from './types'\n\nconst RadioGroup = ({\n options,\n selectedValue,\n onValueChange,\n label,\n error,\n styles,\n}: IRadioGroupProps) => {\n return (\n <View style={[{ marginBottom: 16 }, styles?.container]}>\n {label && (\n <Text\n style={[\n { fontSize: 16, fontWeight: '500', marginBottom: 8 },\n styles?.labelText,\n ]}\n >\n {label}\n </Text>\n )}\n {options.map((option) => {\n const isSelected = selectedValue === option.value\n return (\n <TouchableOpacity\n key={option.value}\n style={[\n {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 10,\n },\n styles?.optionContainer,\n ]}\n onPress={() => {\n onValueChange(option.value)\n }}\n >\n <View\n style={[\n {\n height: 20,\n width: 20,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: isSelected ? '#007BFF' : '#C4C4C4',\n justifyContent: 'center',\n alignItems: 'center',\n marginRight: 10,\n },\n styles?.radioOuter,\n isSelected && styles?.radioOuterSelected,\n ]}\n >\n {isSelected && (\n <View\n style={[\n {\n height: 10,\n width: 10,\n borderRadius: 5,\n backgroundColor: '#007BFF',\n },\n styles?.radioInner,\n ]}\n />\n )}\n </View>\n <Text style={[{}, styles?.optionText]}>{option.label}</Text>\n </TouchableOpacity>\n )\n })}\n {error && (\n <Text style={[{ color: 'red', fontSize: 12, marginTop: 5 }, styles?.errorText]}>\n {error}\n </Text>\n )}\n </View>\n )\n}\n\nexport default RadioGroup\n","import RadioGroup from './RadioGroup'\n\nexport default RadioGroup\nexport * from './types'\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n dropdownContainer: {\n width: '100%',\n height: 50,\n marginBottom: 24,\n },\n dropdownButton: {\n height: 55,\n borderWidth: 1,\n borderRadius: 5,\n },\n dropdownLabel: {\n fontSize: 16,\n color: R.colors.primary,\n },\n title: {\n fontSize: 20,\n fontWeight: '700',\n marginBottom: 16,\n color: R.colors.primary,\n },\n header: {\n fontSize: 28,\n fontWeight: '800',\n marginBottom: 16,\n color: R.colors.primary,\n },\n text: {\n fontSize: 14,\n marginBottom: 16,\n color: R.colors.primary,\n },\n})\n","import React from 'react'\nimport { ActivityIndicator, Modal, Text, View } from 'react-native'\n\nimport R from '../../res'\nimport s from './styles'\nimport { ILoadingProps } from './types'\n\nconst Loading = ({ text = 'Loading...', styles, customComponent }: ILoadingProps) => {\n return (\n <Modal presentationStyle=\"overFullScreen\" transparent={true}>\n <View style={s.rootContainer}>\n <View style={[s.content, styles?.content]}>\n {customComponent ? (\n customComponent\n ) : (\n <>\n <ActivityIndicator\n size={styles?.animation?.size || 'large'}\n color={styles?.animation?.color || R.colors.black}\n />\n <Text style={[s.text, styles?.text]}>{text}</Text>\n </>\n )}\n </View>\n </View>\n </Modal>\n )\n}\n\nexport default Loading\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n rootContainer: {\n flex: 1,\n backgroundColor: R.colors.transparentBlack,\n justifyContent: 'center',\n alignItems: 'center',\n },\n text: {\n color: R.colors.black,\n marginTop: 16,\n fontSize: 18,\n },\n content: {\n backgroundColor: R.colors.white,\n padding: 24,\n borderRadius: 5,\n alignItems: 'center',\n justifyContent: 'center',\n elevation: 3,\n shadowColor: 'black',\n shadowOpacity: 0.5,\n shadowRadius: 5,\n shadowOffset: {\n height: 5,\n width: 0,\n },\n },\n})\n","import React, { FC } from 'react'\nimport { Alert, View } from 'react-native'\n\nimport { Button } from '..'\nimport s from './styles'\nimport { ILoggedInProps } from './types'\n\nconst LoggedIn: FC<ILoggedInProps> = ({\n styles,\n texts,\n onPressMyOrders,\n onPressLogout,\n}) => {\n const { rootContainer, myOrdersButton, logOutButton } = {\n ...styles,\n }\n const { logoutDialog, myOrderButtonText, logOutButtonText } = { ...texts }\n const handleMyOrdersPress = async () => {\n if (onPressMyOrders) {\n onPressMyOrders()\n }\n }\n\n const handleLogOutPress = () => {\n if (onPressLogout) {\n Alert.alert(\n logoutDialog?.title || 'Do you want to log out?',\n logoutDialog?.message ||\n 'You will lose your selection and you will need to enter your credentials again.',\n [\n {\n text: logoutDialog?.confirmButton || 'Yes',\n style: 'destructive',\n onPress: onPressLogout,\n },\n {\n text: logoutDialog?.cancelButton || 'No',\n },\n ]\n )\n }\n }\n\n return (\n <View style={[s.rootContainer, rootContainer]}>\n <Button\n text={myOrderButtonText || 'MY ORDERS'}\n onPress={handleMyOrdersPress}\n styles={myOrdersButton}\n />\n <Button\n text={logOutButtonText || 'LOG OUT'}\n onPress={handleLogOutPress}\n styles={logOutButton}\n />\n </View>\n )\n}\n\nexport default LoggedIn\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n rootContainer: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n marginVertical: 24,\n },\n})\n","import React, { FC, useRef, useState } from 'react'\nimport { Keyboard } from 'react-native'\n\nimport { LoginCore, LoginCoreHandle } from '../../core'\nimport { IUserProfilePublic } from '../../types'\nimport LoginView from './LoginView'\nimport { ILoginFields, ILoginProps, LoginContentType } from './types'\n\nconst Login: FC<ILoginProps> = ({\n onLoginSuccessful,\n onLoginError,\n isLoginDialogVisible,\n showLoginDialog,\n hideLoginDialog,\n userFirstName,\n onLogoutSuccess,\n onLogoutError,\n texts,\n styles,\n refs,\n brandImages,\n isShowPasswordButtonVisible,\n onRestorePasswordError,\n onRestorePasswordSuccess,\n}) => {\n //#region State\n const [isLoading, setIsLoading] = useState(false)\n const [loginApiError, setLoginApiError] = useState('')\n const [restorePasswordApiError, setRestorePasswordApiError] = useState('')\n const [restorePasswordSuccessMessage, setRestorePasswordSuccessMessage] = useState('')\n const [userProfileData, setUserProfileData] = useState<IUserProfilePublic>()\n const [loginContentType, setLoginContentType] = useState<LoginContentType>('login')\n const [isRestorePasswordLoading, setIsRestorePasswordLoading] = useState(false)\n //#endregion State\n\n const loginCoreRef = useRef<LoginCoreHandle>(null)\n\n //#region Handlers\n const handleOnPressForgotPassword = () => setLoginContentType('restorePassword')\n\n const handleOnPressLogin = async (fields: ILoginFields) => {\n if (loginApiError) {\n setLoginApiError('')\n }\n\n if (!loginCoreRef.current?.login) {\n return onLoginError?.({\n message: 'LoginCoreRef is not initialized',\n })\n }\n\n setIsLoading(true)\n const {\n userProfile,\n error: authorizationError,\n accessTokenData,\n } = await loginCoreRef.current.login(fields)\n\n if (authorizationError || !userProfile) {\n setIsLoading(false)\n setLoginApiError(authorizationError?.message || 'Auth error')\n return onLoginError?.(authorizationError!)\n }\n\n Keyboard.dismiss()\n setUserProfileData(userProfile)\n onLoginSuccessful({\n userProfile,\n accessTokenData,\n })\n setIsLoading(false)\n hideLoginDialog()\n }\n\n const handleOnPressLogout = async () => {\n if (!loginCoreRef.current?.logout) {\n return onLogoutError?.({ message: 'LoginCoreRef is not initialized' })\n }\n\n await loginCoreRef.current.logout()\n\n setUserProfileData(undefined)\n onLogoutSuccess?.()\n }\n\n const handleOnPressCancelRestorePasswordButton = () => setLoginContentType('login')\n\n const handleOnPressRestorePasswordButton = async (email: string) => {\n if (!loginCoreRef.current?.restorePassword) {\n return onRestorePasswordError?.({\n message: 'LoginCoreRef is not initialized',\n })\n }\n\n setIsRestorePasswordLoading(true)\n const { data: restorePasswordSuccessData, error: restorePassError } =\n await loginCoreRef.current.restorePassword(email)\n setIsRestorePasswordLoading(false)\n\n if (restorePassError || !restorePasswordSuccessData) {\n setRestorePasswordApiError(\n restorePassError?.message || 'Restore password unknown error'\n )\n setIsRestorePasswordLoading(false)\n onRestorePasswordError?.(restorePassError!)\n return\n }\n\n setLoginContentType('restorePasswordSuccess')\n\n setRestorePasswordSuccessMessage(restorePasswordSuccessData.message)\n onRestorePasswordSuccess?.()\n }\n\n const handleOnPressRestorePasswordSuccessButton = () => {\n handleHideDialog()\n }\n\n const handleHideDialog = () => {\n setLoginContentType('login')\n hideLoginDialog()\n }\n //#endregion\n\n //#region Render Main Content\n return (\n <LoginCore ref={loginCoreRef}>\n <LoginView\n showDialog={showLoginDialog}\n hideDialog={handleHideDialog}\n isDialogVisible={isLoginDialogVisible}\n onPressLogin={handleOnPressLogin}\n isLoading={isLoading}\n userProfile={userProfileData}\n onPressLogout={handleOnPressLogout}\n texts={texts}\n styles={styles}\n userFirstName={userFirstName}\n loginApiError={loginApiError}\n refs={refs}\n brandImages={brandImages}\n isShowPasswordButtonVisible={isShowPasswordButtonVisible}\n content={loginContentType}\n onPressForgotPassword={handleOnPressForgotPassword}\n restorePasswordProps={{\n apiError: restorePasswordApiError,\n onPressRestorePasswordButton: handleOnPressRestorePasswordButton,\n isLoading: isRestorePasswordLoading,\n onPressCancelButton: handleOnPressCancelRestorePasswordButton,\n }}\n resultDialogPropsProps={{\n message: restorePasswordSuccessMessage,\n onPressButton: handleOnPressRestorePasswordSuccessButton,\n }}\n />\n </LoginCore>\n )\n //#endregion Render Main Content\n}\n\nexport default Login\n","/**\n * @deprecated This component is deprecated and will be removed in a future release.\n * Please use the hooks from 'src/features/checkout-v2/hooks' instead.\n * See README.md in this directory for migration guide.\n */\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { forwardRef, useImperativeHandle } from 'react'\n\nimport {\n checkoutOrder,\n fetchCart,\n fetchCountries,\n fetchStates,\n fetchUserProfile,\n registerNewUser,\n} from '../../api/ApiClient'\nimport {\n ICartResponse,\n ICheckoutBody,\n ICountriesResponse,\n IFetchAccessTokenResponse,\n IRegisterNewUserResponse,\n IStatesResponse,\n IUserProfileResponse,\n} from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport {\n BillingCoreHandle,\n IBillingCoreProps,\n ICheckoutResponse,\n} from './BillingCoreTypes'\nimport BackgroundTimer from 'react-native-background-timer'\n\n/**\n * @deprecated Use the hooks from 'src/features/checkout-v2/hooks' instead\n */\nconst BillingCore = forwardRef<BillingCoreHandle, IBillingCoreProps>((props, ref) => {\n const [secondsLeft, setSecondsLeft] = useState(420)\n const [timerOn, setTimerOn] = useState(false)\n\n const handleStopTimer = useCallback(() => {\n BackgroundTimer.stop()\n BackgroundTimer.stopBackgroundTimer()\n }, [])\n\n const handleStartTimer = useCallback(() => {\n BackgroundTimer.runBackgroundTimer(() => {\n setSecondsLeft((secs) => {\n if (secs > 0) {\n return secs - 1\n } else {\n return 0\n }\n })\n }, 1000)\n }, [])\n\n const handleTimeIsUp = () => {\n BackgroundTimer.stopBackgroundTimer()\n props.onCartExpired?.()\n }\n\n useEffect(() => {\n if (secondsLeft === 0) {\n handleTimeIsUp()\n }\n props.onSecondsLeftChange?.(secondsLeft)\n }, [secondsLeft])\n\n useEffect(() => {\n if (timerOn) {\n handleStartTimer()\n } else {\n BackgroundTimer.stopBackgroundTimer()\n }\n return () => {\n BackgroundTimer.stopBackgroundTimer()\n }\n }, [handleStartTimer, timerOn])\n\n useImperativeHandle(ref, () => ({\n async checkoutOrder(body: ICheckoutBody): Promise<ICheckoutResponse> {\n const checkout = await checkoutOrder(body)\n if (!checkout.error) {\n BackgroundTimer.stopBackgroundTimer()\n }\n return checkout\n },\n\n async getCart(): Promise<ICartResponse> {\n const cart = await fetchCart()\n\n if (cart.cartData?.expiresAt) {\n setSecondsLeft(cart.cartData.expiresAt)\n setTimerOn(true)\n }\n\n return cart\n },\n\n async getCountries(): Promise<ICountriesResponse> {\n return await fetchCountries()\n },\n\n async getStates(countryId: string): Promise<IStatesResponse> {\n return await fetchStates(countryId)\n },\n\n async getUserProfile(): Promise<IUserProfileResponse> {\n return await fetchUserProfile()\n },\n\n async registerNewUser(data: FormData): Promise<IRegisterNewUserResponse> {\n return await registerNewUser(data)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n stopCartTimer() {\n return handleStopTimer()\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default BillingCore\n","import Axios, { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport axiosRetry from 'axios-retry'\nimport _filter from 'lodash/filter'\nimport _forEach from 'lodash/forEach'\nimport _get from 'lodash/get'\nimport _map from 'lodash/map'\nimport _mapKeys from 'lodash/mapKeys'\nimport _sortBy from 'lodash/sortBy'\n\nimport { IWaitingListFields } from '../components/waitingList/types'\nimport { IOnCheckoutSuccess } from '../containers/billingInfo/types'\nimport { Config } from '../helpers/Config'\nimport { getDomainByClientAndEnv } from '../helpers/Domains'\nimport {\n deleteAllData,\n getData,\n LocalStorageKeys,\n storeData,\n} from '../helpers/LocalStorage'\nimport { IAccountTicketsResponse, IError, IEvent, IUserProfile } from '../types'\nimport { IAddToCartResponse, ITicket, ITicketsResponseData } from '../types/ITicket'\nimport Constants from './Constants'\nimport { getApiError } from './ErrorHandler'\nimport {\n IAddToCartParams,\n IAddToWaitingListResponse,\n IAuthorizeResponse,\n ICartData,\n ICartResponse,\n ICheckoutBody,\n ICheckoutResponse,\n IClientRequest,\n ICloseSessionData,\n ICloseSessionResponse,\n ICountriesResponse,\n IEventResponse,\n IFetchAccessTokenResponse,\n IFetchTicketsParams,\n IFetchTicketsResponse,\n IFreeRegistrationData,\n IFreeRegistrationResponse,\n IMyOrderDetailsData,\n IMyOrderDetailsItem,\n IMyOrderDetailsResponse,\n IMyOrderDetailsTicket,\n IMyOrdersData,\n IMyOrdersRequestParams,\n IMyOrdersResponse,\n IOrderReview,\n IOrderReviewResponse,\n IPostReferralData,\n IPostReferralResponse,\n IPromoCodeResponse,\n IPurchaseConfirmationData,\n IPurchaseConfirmationResponse,\n IRegisterNewUserResponse,\n IRemoveTicketFromResaleData,\n IRemoveTicketFromResaleResponse,\n IResaleTicketData,\n IResaleTicketResponse,\n IResetPasswordRequestData,\n IResetPasswordResponse,\n IRestorePasswordData,\n IRestorePasswordResponse,\n IStatesResponse,\n IUpdateCheckoutResponse,\n IUserProfileResponse,\n} from './types'\n\n// Type for error response data from API\ninterface ErrorResponseData {\n message?: string | { email?: string; [key: string]: any }\n error_description?: string\n status?: number | string\n [key: string]: any\n}\n\n// Helper function to safely extract message from error response\nconst getErrorMessage = (\n data: ErrorResponseData | undefined,\n fallback: string\n): string => {\n if (!data?.message) return fallback\n return typeof data.message === 'string' ? data.message : fallback\n}\n\nconst HEADERS: { [key: string]: any } = {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json',\n}\n\nexport const Client: IClientRequest = Axios.create({\n baseURL: Constants.BASE_URL,\n headers: HEADERS,\n timeout: Constants.TIMEOUT,\n data: {},\n}) as IClientRequest\n\naxiosRetry(Client, { retries: 3 })\n\nClient.interceptors.request.use(async (config: InternalAxiosRequestConfig) => {\n const guestToken = await getData(LocalStorageKeys.AUTH_GUEST_TOKEN)\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n const storedTokenType = await getData(LocalStorageKeys.AUTH_TOKEN_TYPE)\n const tokenType = storedTokenType || 'Bearer'\n\n if (accessToken) {\n config.headers['Authorization'] = `${tokenType} ${accessToken}`\n }\n\n if (guestToken) {\n Client.setGuestToken(guestToken)\n config.headers['Authorization-Guest'] = guestToken\n }\n\n if (Config.CLIENT) {\n config.headers['origin'] = getDomainByClientAndEnv(Config.CLIENT, Config.ENV)\n }\n\n return config\n})\n\nClient.interceptors.response.use(\n (response: AxiosResponse) => {\n return response\n },\n async (error: AxiosError<ErrorResponseData>) => {\n if (error?.response?.status === 401) {\n error.code = error.code\n error.message = error.response.data?.error_description || error.message\n } else if (error.message) {\n error.message = error.message\n }\n\n return Promise.reject(error)\n }\n)\n\nClient.setGuestToken = (token: string) =>\n (Client.defaults.headers.common['Authorization-Guest'] = token)\n\nClient.removeGuestToken = () =>\n delete Client.defaults.headers.common['Authorization-Guest']\n\nClient.removeAccessToken = () => delete Client.defaults.headers.common.Authorization\n\nClient.setAccessToken = (token: string) =>\n (Client.defaults.headers.common.Authorization = token)\n\nClient.setBaseUrl = (baseUrl: string) => (Client.defaults.baseURL = baseUrl)\n\nClient.setTimeOut = (timeOut: number) => (Client.defaults.timeout = timeOut)\n\nClient.setDomain = (domain: string) => {\n Client.defaults.headers.common['origin'] = domain\n}\n\nClient.setContentType = (contentType: string) =>\n (Client.defaults.headers.common['Content-Type'] = contentType)\n\nexport const setCustomHeader = (response: any) => {\n const guestHeaderResponseValue = _get(response, 'headers.authorization-guest')\n\n const guestHeaderExistingValue = _get(response, 'config.headers[Authorization-Guest]')\n\n const guestHeader = guestHeaderResponseValue || guestHeaderExistingValue\n\n if (guestHeader) {\n storeData(LocalStorageKeys.AUTH_GUEST_TOKEN, guestHeader)\n Client.setGuestToken(guestHeader)\n }\n}\n\nexport const setAccessTokenHandler = async (accessToken: string) => {\n await storeData(LocalStorageKeys.ACCESS_TOKEN, accessToken)\n Client.setAccessToken(accessToken)\n}\n\n// API Authentication\nexport const authorize = async (data: FormData): Promise<IAuthorizeResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(\n `/v1/oauth/authorize-rn?client_id=${Config.CLIENT_ID}`,\n data\n )\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError?.response?.data, 'Authorization failed'),\n code: axiosError?.response?.status,\n }\n }\n\n return {\n error: responseError,\n code: response?.data?.data?.code,\n }\n}\n\nexport const fetchAccessToken = async (\n data: FormData\n): Promise<IFetchAccessTokenResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post('/v1/oauth/access_token', data)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status,\n }\n }\n\n const accessToken = _get(response, 'data.access_token')\n if (accessToken) {\n await storeData(LocalStorageKeys.ACCESS_TOKEN, accessToken)\n }\n const refreshToken = _get(response, 'data.refresh_token')\n if (refreshToken) {\n await storeData(LocalStorageKeys.REFRESH_TOKEN, refreshToken)\n }\n const tokenType = _get(response, 'data.token_type')\n if (tokenType) {\n await storeData(LocalStorageKeys.TOKEN_TYPE, tokenType)\n }\n const scope = _get(response, 'data.scope')\n if (scope) {\n await storeData(LocalStorageKeys.AUTH_SCOPE, scope)\n }\n\n return {\n accessTokenError: responseError,\n accessTokenData: {\n accessToken,\n refreshToken,\n tokenType,\n scope,\n },\n }\n}\n\nexport const fetchUserProfile = async (): Promise<IUserProfileResponse> => {\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n if (!accessToken) {\n return { userProfileError: { message: 'Access token not found' } }\n }\n\n let responseError: IError | undefined\n let userProfile: IUserProfile | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get('/customer/profile/', {\n headers: {\n ...HEADERS,\n Authorization: `Bearer ${accessToken}`,\n },\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError?.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n if (!responseError && response) {\n userProfile = response.data.data\n }\n\n return {\n userProfileError: responseError,\n userProfileData: userProfile,\n }\n}\n\n//#region Register new user\nexport const registerNewUser = async (\n data: FormData\n): Promise<IRegisterNewUserResponse> => {\n const resultData: IRegisterNewUserResponse = {\n registerNewUserResponseError: undefined,\n registerNewUserResponseData: undefined,\n }\n\n let res: AxiosResponse<any> | undefined\n\n try {\n res = await Client.post('/v1/oauth/register-rn', data, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n const messageObject = axiosError.response?.data.message\n let errorMessage = ''\n\n if (!messageObject) {\n resultData.registerNewUserResponseError = {\n message: 'Error registering user',\n }\n } else {\n if (\n typeof messageObject === 'object' &&\n 'email' in messageObject &&\n messageObject.email\n ) {\n resultData.registerNewUserResponseError = {\n isAlreadyRegistered: true,\n message:\n 'It appears this email is already attached to an account. Please log in here to complete your registration.',\n raw: axiosError.response,\n }\n } else {\n if (typeof messageObject === 'object') {\n _mapKeys(messageObject, (value) => {\n _forEach(value, (eachVal) => {\n errorMessage += `- ${eachVal} \\n`\n })\n })\n }\n resultData.registerNewUserResponseError = {\n message: errorMessage || 'Error registering user',\n }\n }\n }\n }\n\n if (res?.status === 200) {\n const userProfile = _get(res, 'data.data.attributes.user_profile')\n const accessToken = _get(res, 'data.data.attributes.access_token')\n const refreshToken = _get(res, 'data.data.attributes.refresh_token')\n const scope = _get(res, 'data.data.attributes.scope')\n const tokenType = _get(res, 'data.data.attributes.token_type')\n\n if (accessToken) {\n await storeData(LocalStorageKeys.ACCESS_TOKEN, accessToken)\n await setAccessTokenHandler(accessToken)\n }\n\n if (refreshToken) {\n await storeData(LocalStorageKeys.REFRESH_TOKEN, refreshToken)\n }\n\n if (tokenType) {\n await storeData(LocalStorageKeys.TOKEN_TYPE, tokenType)\n }\n\n if (scope) {\n await storeData(LocalStorageKeys.AUTH_SCOPE, scope)\n }\n\n resultData.registerNewUserResponseData = {\n accessTokenData: {\n accessToken: accessToken,\n refreshToken: refreshToken,\n tokenType: tokenType,\n scope: scope,\n },\n userProfile: {\n firstName: _get(userProfile, 'first_name'),\n lastName: _get(userProfile, 'last_name'),\n email: _get(userProfile, 'email'),\n },\n }\n }\n\n return resultData\n}\n//#endregion\n\n//#region Waiting List\nexport const addToWaitingList = async (\n values: IWaitingListFields\n): Promise<IAddToWaitingListResponse> => {\n if (!Config.EVENT_ID) {\n return {\n addToWaitingListError: { message: 'Event ID is not configured!' },\n }\n }\n\n const requestData = { data: { attributes: values } }\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(\n `/v1/event/${Config.EVENT_ID}/add_to_waiting_list`,\n requestData\n )\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n return {\n addToWaitingListError: responseError,\n addToWaitingListData: response?.data,\n }\n}\n//#endregion\n\n//#region MyOrders\nexport const fetchMyOrders = async ({\n page,\n limit = 20,\n filter = '',\n from = '',\n}: IMyOrdersRequestParams): Promise<IMyOrdersResponse> => {\n const data: IMyOrdersData = {\n events: [],\n orders: [],\n pagination: {\n page: 0,\n limit: 0,\n totalCount: 0,\n totalPages: 0,\n },\n }\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n const withFilterEvent = filter ? `&filter[event]=${filter}` : ''\n const withBrand = Config.BRAND ? `&filter[brand]=${Config.BRAND}` : ''\n const withSubBrands = Config.ARE_SUB_BRANDS_INCLUDED\n ? `&filter[subbrands]=${Config.ARE_SUB_BRANDS_INCLUDED}`\n : ''\n const withFrom = from ? `&filter[from]=${from}` : ''\n\n const endpoint = `/v1/account/orders/?page=${page}&limit=${limit}${withFilterEvent}${withBrand}${withSubBrands}${withFrom}`\n\n try {\n response = await Client.get(endpoint)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = getApiError(axiosError, 'Error fetching My Orders')\n }\n\n if (response?.data) {\n const dataAttributes = response.data.data.attributes\n\n data.events = dataAttributes.purchased_events\n data.orders = dataAttributes.orders\n data.pagination.limit = dataAttributes.limit\n data.pagination.page = dataAttributes.page\n data.pagination.totalCount = dataAttributes.total_count\n data.pagination.totalPages = dataAttributes.total_pages\n data.filter = dataAttributes.filter\n data.brandFilter = dataAttributes.brand_filter\n data.subBrands = dataAttributes.sub_brands\n }\n\n return {\n myOrdersError: responseError,\n myOrdersData: data,\n }\n}\n//#endregion\n\n//#region OrderDetails\nexport const fetchOrderDetails = async (\n orderId: string\n): Promise<IMyOrderDetailsResponse> => {\n let responseError: IError | undefined\n let responseData: IMyOrderDetailsData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`/v1/account/order/${orderId}`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(\n axiosError.response?.data,\n 'Error while fetching order details'\n ),\n code: axiosError.response?.status,\n }\n }\n\n if (!responseError && response) {\n const { attributes } = response.data.data\n let items: IMyOrderDetailsItem[] | undefined\n\n if (attributes.items?.ticket_types) {\n items = _map(attributes.items.ticket_types, (item) => {\n return {\n name: item.name,\n currency: item.currency,\n price: item.price,\n discount: item.discount,\n quantity: item.quantity,\n total: item.total,\n isActive: item.active,\n hash: item.hash,\n }\n })\n }\n\n const tickets: IMyOrderDetailsTicket[] = _map(attributes.tickets, (item) => {\n return {\n hash: item.hash,\n ticketType: item.ticket_type,\n holderName: item.holder_name,\n status: item.status,\n pdfLink: item.pdf_link,\n qrData: item.qr_data,\n isSellable: item.is_sellable,\n holderEmail: item.holder_email,\n holderPhone: item.holder_phone,\n description: item.description,\n descriptionPlain: item.description_plain,\n currency: item.currency,\n eventName: item.event_name,\n isOnSale: item.is_on_sale,\n resaleFeeAmount: item.resale_fee_amount,\n ticketTypeHash: item.ticket_type_hash,\n isTable: item.is_table,\n }\n })\n responseData = {\n header: {\n currency: attributes.currency,\n date: attributes.date,\n isReferralDisabled: attributes.disable_referral,\n eventEndDate: attributes.event_end_date,\n eventStartDate: attributes.event_start_date,\n eventId: attributes.event_id,\n eventName: attributes.event_name,\n eventSalesEndDate: attributes.event_sales_end_date,\n eventSalesStartDate: attributes.event_sales_start_date,\n eventUrl: attributes.event_url,\n isVenueHidden: attributes.hide_venue,\n id: attributes.id,\n image: attributes.image,\n shareLink: attributes.personal_share_link,\n salesReferred: attributes.sales_referred,\n total: attributes.total,\n hideVenueUntil: attributes.hide_venue_until,\n timeZone: attributes.timezone,\n venue: {\n city: attributes.venue_city,\n country: attributes.venue_country,\n googlePlaceId: attributes.venue_google_place_id || undefined,\n latitude: attributes.venue_latitude || undefined,\n longitude: attributes.venue_longitude || undefined,\n name: attributes.venue_name || undefined,\n postalCode: attributes.venue_postal_code || undefined,\n state: attributes.venue_state,\n street: attributes.venue_street || undefined,\n streetNumber: attributes.venue_street_number || undefined,\n },\n },\n items: items,\n tickets: tickets,\n }\n }\n\n return {\n orderDetailsError: responseError,\n orderDetailsData: responseData,\n }\n}\n\n//#endregion\n\n//#region Tickets\n// PromoCode higher priority than ReferredId\nexport const fetchTickets = async ({\n promoCode,\n referredId,\n}: IFetchTicketsParams): Promise<IFetchTicketsResponse> => {\n if (!Config.EVENT_ID) {\n return {\n error: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n const eventId = Config.EVENT_ID.toString()\n const headers = {\n 'Promotion-Event': eventId,\n 'Promotion-Code': promoCode,\n 'Referrer-Id': referredId,\n }\n\n let responseError\n let response: AxiosResponse<any> | undefined\n\n if (!referredId) {\n delete headers['Referrer-Id']\n }\n\n if (!promoCode) {\n //@ts-ignore\n delete headers['Promotion-Code']\n }\n\n if (!promoCode && !referredId) {\n //@ts-ignore\n delete headers['Promotion-Event']\n }\n\n // If there are promoCode and referredId, then we need to remove the Referrer-Id header\n if (promoCode && referredId && headers['Referrer-Id']) {\n delete headers['Referrer-Id']\n }\n\n try {\n response = await Client.get(`v1/event/${eventId}/tickets/`, {\n //@ts-ignore\n headers: headers,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n if (axiosError.response) {\n responseError = {\n code: axiosError.response.status!,\n message: axiosError.response.data.message,\n }\n } else {\n responseError = {\n message: axiosError.message,\n }\n }\n }\n\n if (responseError) {\n return {\n error: responseError,\n }\n }\n\n const attributes = _get(response, 'data.data.attributes.tickets')\n const ticketsAttributes = _filter(attributes, (item) => typeof item === 'object')\n const promoCodeResult: IPromoCodeResponse = {\n message: _get(response, 'data.data.attributes.PromoCodeValidationMessage'),\n isValid: _get(response, 'data.data.attributes.ValidPromoCode'),\n }\n\n const tickets = (Object.values(ticketsAttributes) || []) as ITicket[]\n const guestHeaderValue = _get(response, 'headers.authorization-guest')\n if (guestHeaderValue) {\n setCustomHeader(response)\n }\n\n return {\n tickets: _sortBy(tickets, 'sortOrder'),\n error: responseError,\n promoCodeResult: promoCodeResult,\n isInWaitingList: _get(response, 'data.data.attributes.showWaitingList'),\n isAccessCodeRequired: _get(response, 'data.data.attributes.is_access_code'),\n }\n}\n//#endregion Tickets\n\nexport const addToCart = async (data: IAddToCartParams): Promise<IAddToCartResponse> => {\n if (!Config.EVENT_ID) {\n return {\n error: { message: 'Event ID is not configured!' },\n }\n }\n\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/event/${Config.EVENT_ID}/add-to-cart/`, {\n data,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code: axiosError.response?.status!,\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n }\n }\n\n let responseData: ITicketsResponseData | undefined\n if (!responseError && response) {\n setCustomHeader(response)\n const { attributes } = response.data\n\n responseData = {\n isBillingRequired: !attributes?.skip_billing_page,\n isNameRequired: attributes?.names_required ?? false,\n isAgeRequired: attributes?.age_required ?? false,\n isPhoneRequired: attributes?.phone_required ?? false,\n minimumAge: attributes?.age_required ? (attributes?.minimum_age ?? 18) : undefined,\n isTicketFree: attributes?.free_ticket ?? false,\n isPhoneHidden: attributes?.hide_phone_field && false,\n }\n }\n\n return { data: responseData, error: responseError }\n}\n\nexport const fetchEvent = async (): Promise<IEventResponse> => {\n if (!Config.EVENT_ID) {\n return {\n eventError: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n let responseError: IError | undefined\n let event: IEvent | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/event/${Config.EVENT_ID}`, {\n headers: HEADERS,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code:\n typeof axiosError?.response?.data.status === 'number'\n ? axiosError.response.data.status\n : undefined,\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : undefined,\n }\n }\n\n if (response?.status === 200) {\n event = response.data.data.attributes\n }\n\n if (event?.country) {\n await storeData(LocalStorageKeys.EVENT_COUNTRY, event.country)\n }\n\n return {\n eventError: responseError,\n eventData: event,\n }\n}\n\nexport const postReferralVisit = async (\n referralId: string\n): Promise<IPostReferralResponse> => {\n if (!Config.EVENT_ID) {\n return {\n postReferralError: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n const eventId = Config.EVENT_ID.toString()\n const referralIdNumber = parseInt(referralId, 10)\n let responseError: IError | undefined\n let responseData: IPostReferralData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/event/${eventId}/referrer/`, {\n referrer: referralIdNumber,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n if (axiosError.response?.data.errors && axiosError.response?.data.errors.length > 0) {\n responseError = {\n code: axiosError.response?.data.errors[0].status,\n message: axiosError.response?.data.errors[0].details,\n }\n } else {\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n if (axiosError.response?.status === 422 && responseError.message === undefined) {\n responseError.message = 'Cannot process request'\n }\n }\n\n if (response?.data && response.data.status === 200) {\n responseData = {\n message: response.data.message,\n status: response.data.status,\n }\n }\n\n return {\n postReferralData: responseData,\n postReferralError: responseError,\n }\n}\n//#region Unlock Password Protected Event\nexport const unlockPasswordProtectedEvent = async (\n password: string\n): Promise<IEventResponse> => {\n if (!Config.EVENT_ID) {\n return {\n eventError: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n const eventId = Config.EVENT_ID.toString()\n let responseError: IError | undefined\n let responseData: any | undefined\n let response: AxiosResponse<any> | undefined\n\n const body = {\n attributes: {\n data: {\n password: password,\n },\n },\n }\n\n try {\n response = await Client.post(`v1/event/${eventId}/authenticate`, body)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error while unlocking Event'),\n code: axiosError?.response?.status,\n }\n }\n\n if (response?.data) {\n responseData = {\n message: response.data.message,\n status: response.data.status,\n }\n\n const guestHeaderValue = _get(response, 'headers.authorization-guest')\n if (guestHeaderValue) {\n setCustomHeader(response)\n }\n }\n\n return {\n eventData: responseData,\n eventError: responseError,\n }\n}\n//#endregion Unlock Password Protected Event\n\n//#region Billing Information\nexport const fetchCountries = async (): Promise<ICountriesResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get('/countries/list')\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n if (response?.status === 200) {\n setCustomHeader(response)\n }\n\n return {\n countriesData: response?.data.data,\n countriesError: responseError,\n }\n}\n\nexport const fetchStates = async (countryId: string): Promise<IStatesResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`/countries/${countryId}/states/`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code: axiosError.response?.status!,\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n }\n }\n\n if (response?.status === 200) {\n setCustomHeader(response)\n }\n\n return {\n statesError: responseError,\n statesData: response?.data?.data,\n }\n}\n\nexport const fetchCart = async (): Promise<ICartResponse> => {\n let responseError: IError | undefined\n let cartData = {} as ICartData\n let res: AxiosResponse<any> | undefined\n\n try {\n res = await Client.get('v1/cart/')\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code: axiosError.response?.status!,\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n }\n }\n\n const data = res?.data.data\n if (data?.attributes) {\n const attr = data?.attributes\n const quantityString = _get(attr, 'cart[0].quantity', '1')\n const tfOptIn = _get(attr, 'ttfOptIn', false)\n const isMarketingOptedIn = _get(attr, 'optedIn', false)\n const expiresAt = _get(attr, 'expiresAt', 420)\n const eventId = _get(attr, 'eventId', null)\n\n cartData = {\n quantity: parseInt(quantityString, 10),\n isMarketingOptedIn:\n typeof isMarketingOptedIn === 'number'\n ? isMarketingOptedIn > 0\n : isMarketingOptedIn,\n isTfOptInHidden: _get(attr, 'hide_ttf_opt_in', false),\n isTfOptIn: typeof tfOptIn === 'number' ? tfOptIn > 0 : tfOptIn,\n expiresAt: expiresAt,\n }\n\n return {\n success: true,\n cartError: responseError,\n cartData,\n eventId: eventId,\n }\n } else {\n responseError = {\n message: 'Error fetching cart',\n }\n }\n\n return {\n cartError: responseError,\n cartData: cartData,\n }\n}\n\nexport const checkoutOrder = async (data: ICheckoutBody): Promise<ICheckoutResponse> => {\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n\n if (!accessToken) {\n return {\n error: {\n message: 'Access token not found',\n },\n }\n }\n let responseError: IError | undefined\n let res: AxiosResponse<any> | undefined\n\n try {\n res = await Client.post(\n 'v1/on-checkout/',\n { data },\n {\n headers: {\n ...HEADERS,\n Authorization: `Bearer ${accessToken}`,\n },\n }\n )\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n code: axiosError.response?.status!,\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n }\n }\n\n if (!res || !res.data) {\n return { error: responseError }\n }\n\n const checkoutResponseData: IOnCheckoutSuccess = {\n id: res.data.data.attributes.id,\n hash: res.data.data.attributes.hash,\n total: res.data.data.attributes.total,\n status: res.data.data.attributes.status,\n }\n\n return {\n error: responseError,\n data: checkoutResponseData,\n }\n}\n//#endregion\n//#region Checkout\nexport const fetchEventConditions = async () => {\n if (!Config.EVENT_ID) {\n return {\n error: {\n message: 'Event ID is not configured!',\n },\n }\n }\n\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/event/${Config.EVENT_ID}/conditions`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : 'Error fetching event conditions',\n code: axiosError.response?.status,\n }\n }\n\n return {\n error: responseError,\n data: response?.data?.data?.attributes,\n }\n}\n\nexport const fetchOrderReview = async (hash: string): Promise<IOrderReviewResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/order/${hash}/review/`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status!,\n }\n }\n\n let resData: IOrderReview | undefined\n\n if (!responseError) {\n const attributes = _get(response, 'data.data.attributes')\n const { cart, order_details, payment_method, billing_info } = attributes\n\n if (!payment_method.stripe_client_secret && order_details.total !== '0.00') {\n responseError = {\n message: 'Stripe is not configured',\n }\n } else {\n const {\n tickets: [ticket],\n } = order_details\n\n resData = {\n expiresAt: attributes.expires_at,\n reviewData: {\n event: cart[0]?.product_name,\n price: ticket?.price,\n ticketType: ticket?.name,\n total: order_details?.total,\n numberOfTickets: ticket?.quantity,\n currency: order_details?.currency,\n },\n paymentData: {\n id: payment_method.id,\n name: payment_method.name,\n stripeClientSecret: payment_method.stripe_client_secret,\n stripeConnectedAccount:\n payment_method.stripe_connected_account?.length > 0\n ? payment_method.stripe_connected_account\n : undefined,\n stripePublishableKey: payment_method.stripe_publishable_key,\n },\n addressData: {\n city: billing_info.city,\n line1: billing_info.street_address,\n state: billing_info.state ? billing_info.state.toString() : '',\n postalCode: billing_info.zip,\n },\n billingData: {\n firstName: billing_info.first_name,\n lastName: billing_info.last_name,\n isActAsBillingInfo: billing_info.as_act_billing_info,\n city: billing_info.city,\n company: billing_info.company,\n country: billing_info.country,\n email: billing_info.email,\n isBusiness: billing_info.is_business,\n phone: billing_info.phone,\n state: billing_info.state,\n streetAddress: billing_info.street_address,\n zipCode: billing_info.zip,\n },\n cart: attributes.cart,\n cartTotalPrice: attributes.cart_total_price,\n couponCode: attributes.coupon_code,\n discount: attributes.discount,\n estimatedTax: attributes.estimated_tax,\n estimatedTotal: attributes.estimated_total,\n isSeatMapAllowed: attributes.flagSeatMapAllowed,\n isShippingRequired: attributes.shipping_required,\n shippingInfo: attributes.shipping_info,\n orderDetails: attributes.order_details,\n isOptedId: attributes.opted_id,\n isTtfOptedIn: attributes.hide_ttf_opt_in,\n eventDetails: attributes.event_details,\n countries: attributes.countries,\n }\n }\n }\n return {\n orderReviewError: responseError,\n orderReviewData: resData,\n }\n}\n\n// Update checkout with add-ons and pricing\nexport const updateCheckout = async (data: any): Promise<IUpdateCheckoutResponse> => {\n let responseError: IError | undefined\n let responseData: any | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post('v1/checkout', {\n data,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error updating checkout'),\n code: axiosError.response?.status,\n }\n }\n\n if (response?.data) {\n responseData = response.data\n }\n\n return {\n success: !responseError,\n error: responseError,\n data: responseData,\n }\n}\n\n// Get add-ons for event\nexport const getAddons = async (eventId: string): Promise<any> => {\n let responseError: IError | undefined\n let addonsData: any = {}\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/event/${eventId}/add-ons`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error fetching add-ons'),\n code: axiosError.response?.status,\n }\n }\n\n if (response?.data?.data?.attributes) {\n addonsData = response.data.data.attributes\n }\n\n return {\n data: addonsData,\n error: responseError,\n success: !responseError,\n }\n}\n\n// Get payment data and order review\nexport const getPaymentData = async (hash: string): Promise<any> => {\n let responseError: IError | undefined\n let responseData: any | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`v1/order/${hash}/review`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error fetching payment data'),\n code: axiosError.response?.status,\n }\n }\n\n if (response?.data) {\n responseData = response.data\n }\n\n return {\n success: !responseError,\n error: responseError,\n data: responseData,\n }\n}\n\nexport const postOnPaymentSuccess = async (orderHash: string) => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/order/${orderHash}/success`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(\n axiosError.response?.data,\n 'Error while notifying Payment Success'\n ),\n code: axiosError.response?.status,\n }\n }\n\n return {\n error: responseError,\n data: response?.data,\n }\n}\n\nexport const postOnFreeRegistration = async (\n orderHash: string\n): Promise<IFreeRegistrationResponse> => {\n let responseError: IError | undefined\n let responseData: IFreeRegistrationData | undefined\n let res: AxiosResponse<any> | undefined\n\n try {\n res = await Client.post(`v1/order/${orderHash}/complete_free_registration`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status,\n }\n }\n\n if (res?.data) {\n const orderDetails = res.data.data.attributes.order_details\n responseData = {\n id: orderDetails.id,\n customerId: orderDetails.customer_id,\n total: orderDetails.total,\n currency: orderDetails.currency,\n orderHash: orderDetails.order_hash,\n }\n }\n return {\n freeRegistrationError: responseError,\n freeRegistrationData: responseData,\n }\n}\n//#endregion\n\n//#region Purchase Confirmation\nexport const fetchPurchaseConfirmation = async (\n orderHash: string\n): Promise<IPurchaseConfirmationResponse> => {\n let responseError: IError | undefined\n let data: IPurchaseConfirmationData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.get(`/v1/order/${orderHash}/payment/complete`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error occurred'),\n code: axiosError.response?.status,\n }\n }\n\n if (response?.data?.data.attributes) {\n const resData = response.data.data.attributes\n data = {\n conversionPixels: resData.conversion_pixels,\n currency: resData.currency,\n customConfirmationPageText: resData.custom_confirmation_page_text,\n customerId: resData.customer_id,\n isReferralDisabled: resData.disable_referral,\n eventDate: resData.event_date,\n eventDescription: resData.event_description,\n eventType: resData.event_type,\n message: resData.message,\n orderTotal: resData.order_total,\n personalShareLink: resData.personal_share_link,\n productId: resData.product_id,\n productName: resData.product_name,\n productImage: resData.product_image,\n productPrice: resData.product_price,\n productUrl: resData.product_url,\n personalShareSales: resData.personal_share_sales,\n }\n }\n\n return {\n purchaseConfirmationError: responseError,\n purchaseConfirmationData: data,\n }\n}\n//#endregion\n\n//#region Resale Tickets\nexport const resaleTicket = async (\n data: FormData,\n orderHash: string\n): Promise<IResaleTicketResponse> => {\n let responseError: IError | undefined\n let responseData: IResaleTicketData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/ticket/${orderHash}/sell`, data)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(axiosError.response?.data, 'Error while re-sale ticket'),\n }\n }\n\n if (response?.data && response.data.status) {\n responseData = {\n message: response.data.message,\n }\n }\n\n return {\n resaleTicketData: responseData,\n resaleTicketError: responseError,\n }\n}\n\nexport const removeTicketFromResale = async (\n orderHash: string\n): Promise<IRemoveTicketFromResaleResponse> => {\n let responseError: IError | undefined\n let responseData: IRemoveTicketFromResaleData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.delete(`v1/ticket/${orderHash}/sell`)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : 'Error removing ticket from resale',\n }\n }\n\n if (response?.data.message && response.data.status === 200) {\n responseData = {\n message: response.data.message,\n }\n }\n\n return {\n removeTicketFromResaleData: responseData,\n removeTicketFromResaleError: responseError,\n }\n}\n//#endregion\n\n//#region Logout\nexport const closeSession = async (): Promise<ICloseSessionResponse> => {\n let responseData: ICloseSessionData | undefined\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.delete('/auth')\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : 'Error while closing session',\n }\n }\n\n if (response?.data && response.data.status && response.data.status === 200) {\n responseData = {\n message: response.data.message || 'Session closed successfully',\n }\n }\n\n await deleteAllData()\n\n Client.removeGuestToken()\n Client.removeAccessToken()\n\n return {\n closeSessionData: responseData,\n closeSessionError: responseError,\n }\n}\n//endregion Logout\n\n//#region Restore Password\nexport const requestRestorePassword = async (\n email: string\n): Promise<IRestorePasswordResponse> => {\n let responseError: IError | undefined\n let successData: IRestorePasswordData | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`v1/oauth/restore-password-rn`, {\n email: email,\n })\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message: getErrorMessage(\n axiosError.response?.data,\n 'Error while restoring password'\n ),\n code: axiosError.response?.status,\n }\n }\n\n if (!responseError && response?.status === 200) {\n successData = {\n message: response.data.message,\n status: response.data.status,\n }\n }\n\n return {\n data: successData,\n error: responseError,\n }\n}\n//#endregion\n\n//#region Request Password\nexport const requestResetPassword = async (\n data: IResetPasswordRequestData\n): Promise<IResetPasswordResponse> => {\n let responseError: IError | undefined\n let responseData: any | undefined\n let response: AxiosResponse<any> | undefined\n\n try {\n response = await Client.post(`/auth/reset-password`, data)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = {\n message:\n typeof axiosError.response?.data.message === 'string'\n ? axiosError.response.data.message\n : 'Reset password error',\n code:\n typeof axiosError.response?.data.status === 'number'\n ? axiosError.response.data.status\n : undefined,\n }\n }\n\n if (!responseError && response?.status === 200) {\n responseData = {\n message: response.data.message,\n status: response.status,\n }\n }\n\n return {\n error: responseError,\n data: responseData,\n }\n}\n//#endregion Request Password\n\n//#region Account Tickets\nexport const fetchAccountTickets = async ({\n page = 1,\n limit = 20,\n filter = '',\n from = '',\n}: IMyOrdersRequestParams): Promise<IAccountTicketsResponse> => {\n let responseError: IError | undefined\n let response: AxiosResponse<any> | undefined\n\n const withFilterEvent = filter ? `&filter[event]=${filter}` : ''\n const withBrand = Config.BRAND ? `&filter[brand]=${Config.BRAND}` : ''\n const withSubBrands = Config.ARE_SUB_BRANDS_INCLUDED\n ? `&filter[subbrands]=${Config.ARE_SUB_BRANDS_INCLUDED}`\n : ''\n const withFrom = from ? `&filter[from]=${from}` : ''\n\n const endpoint = `/v1/account/tickets/?page=${page}&limit=${limit}${withFilterEvent}${withBrand}${withSubBrands}${withFrom}`\n\n try {\n response = await Client.get(endpoint)\n } catch (error) {\n const axiosError = error as AxiosError<ErrorResponseData>\n responseError = getApiError(axiosError)\n }\n\n if (responseError) {\n return {\n error: responseError,\n }\n }\n\n if (response?.data) {\n return {\n data: response.data.data,\n }\n }\n\n return {\n error: {\n message: 'No data was received in Account Tickets.',\n },\n }\n}\n//#endregion Account Tickets\n","import _forEach from 'lodash/forEach'\n\nimport { Client } from '../api/ApiClient'\nimport Constants from '../api/Constants'\nimport { getDomainByClientAndEnv } from './Domains'\nimport { LocalStorageKeys, storeData } from './LocalStorage'\nimport { LogLevel } from '../utils/Logger'\n\nexport type EnvType = 'PROD' | 'DEV' | 'STAG'\n\nexport interface IConfigAuth {\n ACCESS_TOKEN: string\n REFRESH_TOKEN: string\n TOKEN_TYPE: string\n SCOPE: string\n}\n\nexport interface IConfig {\n EVENT_ID?: string | number\n CLIENT?: string\n ENV?: EnvType\n CLIENT_ID?: string\n CLIENT_SECRET?: string\n TIMEOUT?: number\n BRAND?: string\n ARE_SUB_BRANDS_INCLUDED?: boolean\n AUTH?: IConfigAuth\n logLevel?: LogLevel\n [key: string]: string | number | boolean | undefined | IConfigAuth\n}\n\nexport const Config: IConfig = {} as IConfig\n\nexport const setConfig = async (configs: IConfig): Promise<string | undefined> => {\n _forEach(configs, (value, key) => {\n Config[key] = value\n })\n\n if (Config.ENV) {\n if (Config.ENV === 'PROD') {\n Client.setBaseUrl(Constants.BASE_URL)\n } else if (Config.ENV === 'DEV') {\n Client.setBaseUrl(Constants.BASE_URL_DEV)\n } else if (Config.ENV === 'STAG') {\n Client.setBaseUrl(Constants.BASE_URL_STAG)\n }\n } else {\n Client.setBaseUrl(Constants.BASE_URL)\n }\n\n if (Config.TIMEOUT) {\n Client.setTimeOut(Config.TIMEOUT)\n }\n\n if (Config.CLIENT) {\n Client.setDomain(getDomainByClientAndEnv(Config.CLIENT, Config.ENV))\n }\n\n if (!Config.CLIENT_SECRET) {\n Config.CLIENT_SECRET = Constants.CLIENT_SECRET\n }\n if (!Config.Client_ID) {\n Config.CLIENT_ID = Constants.CLIENT_ID\n }\n\n if (!Config.ARE_SUB_BRANDS_INCLUDED) {\n Config.ARE_SUB_BRANDS_INCLUDED = false\n }\n\n Config.IS_BILLING_STREET_NAME_REQUIRED = true\n\n if (Config.AUTH) {\n await storeData(LocalStorageKeys.ACCESS_TOKEN, Config.AUTH.ACCESS_TOKEN)\n await storeData(LocalStorageKeys.AUTH_TOKEN_TYPE, Config.AUTH.TOKEN_TYPE || 'Bearer')\n await storeData(LocalStorageKeys.AUTH_SCOPE, Config.AUTH.SCOPE)\n await storeData(LocalStorageKeys.REFRESH_TOKEN, Config.AUTH.REFRESH_TOKEN)\n Client.setAccessToken(Config.AUTH.ACCESS_TOKEN)\n }\n\n return undefined\n}\n","export default {\n BASE_URL: 'https://www.ticketfairy.com/api',\n BASE_URL_DEV: 'https://sandbox.ticketfairy.com/api',\n BASE_URL_STAG: 'https://test.ticketfairy.com/api',\n CLIENT_ID: 'e9d8f8922797b4621e562255afe90dbf',\n CLIENT_SECRET: 'b89c191eff22fdcf84ac9bfd88d005355a151ec2c83b26b9',\n\n PRIVACY_POLICY_LINK: 'https://www.ticketfairy.com/privacy-policy/',\n TIMEOUT: 60000,\n}\n","import { EnvType } from './Config'\n\nexport const getDomainByClientAndEnv = (\n client: string = 'ttf',\n env: EnvType = 'PROD'\n): string => {\n //@ts-ignore\n const brand = domains[client] ?? 'ttf'\n let origin = ''\n\n if (typeof brand === 'string') {\n //@ts-ignore\n origin = domains[brand][env] ?? 'https://www.ticketfairy.com'\n } else {\n origin = brand[env]\n }\n\n return origin\n}\n\nconst domains = {\n mana: {\n DEV: 'https://manacommon.com',\n STAG: 'https://manacommon.com',\n PROD: 'https://manacommon.com',\n },\n ttf: {\n DEV: 'https://sandbox.ticketfairy.com',\n STAG: 'https://test.ticketfairy.com',\n PROD: 'https://www.ticketfairy.com',\n },\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage'\nimport { jwtDecode } from 'jwt-decode'\n\nexport const LocalStorageKeys = {\n AUTH_GUEST_TOKEN: 'AUTH_GUEST_TOKEN',\n USER_DATA: 'USER_DATA',\n ACCESS_TOKEN: 'ACCESS_TOKEN',\n CHECKOUT_DATA: 'CHECKOUT_DATA',\n REFRESH_TOKEN: 'REFRESH_TOKEN',\n TOKEN_TYPE: 'TOKEN_TYPE',\n SCOPE: 'SCOPE',\n RESET_PASS_TOKEN: 'RESET_PASS_TOKEN',\n AUTH_SCOPE: 'AUTH_SCOPE',\n AUTH_TOKEN_TYPE: 'AUTH_TOKEN_TYPE',\n EVENT_COUNTRY: 'EVENT_COUNTRY',\n}\n\nexport interface IStoredUserData {\n id: string\n firstName: string\n lastName: string\n email: string\n}\n\nexport const storeData = async (key: string, value: string) => {\n try {\n await AsyncStorage.setItem(key, value)\n } catch (ex) {\n return undefined\n }\n}\n\nexport const getData = async (key: string) => {\n try {\n const value = await AsyncStorage.getItem(key)\n if (value !== null) {\n return value\n }\n } catch (ex) {\n return undefined\n }\n}\n\nexport const deleteData = async (key: string) => {\n try {\n const value = await AsyncStorage.removeItem(key)\n if (value !== null) {\n return value\n }\n } catch (ex) {\n return undefined\n }\n}\n\nexport const deleteUserData = async () => {\n try {\n const value = await AsyncStorage.multiRemove([\n LocalStorageKeys.ACCESS_TOKEN,\n LocalStorageKeys.REFRESH_TOKEN,\n LocalStorageKeys.TOKEN_TYPE,\n LocalStorageKeys.AUTH_TOKEN_TYPE,\n LocalStorageKeys.SCOPE,\n LocalStorageKeys.USER_DATA,\n LocalStorageKeys.CHECKOUT_DATA,\n LocalStorageKeys.RESET_PASS_TOKEN,\n LocalStorageKeys.AUTH_SCOPE,\n ])\n\n if (value !== null) {\n return value\n }\n } catch (ex) {\n return undefined\n }\n}\n\nexport const deleteAllData = async () => {\n try {\n const value = await AsyncStorage.multiRemove([\n LocalStorageKeys.ACCESS_TOKEN,\n LocalStorageKeys.AUTH_GUEST_TOKEN,\n LocalStorageKeys.USER_DATA,\n LocalStorageKeys.CHECKOUT_DATA,\n LocalStorageKeys.REFRESH_TOKEN,\n LocalStorageKeys.RESET_PASS_TOKEN,\n LocalStorageKeys.AUTH_TOKEN_TYPE,\n LocalStorageKeys.AUTH_SCOPE,\n LocalStorageKeys.SCOPE,\n LocalStorageKeys.TOKEN_TYPE,\n LocalStorageKeys.EVENT_COUNTRY,\n ])\n\n if (value !== null) {\n return value\n }\n } catch (ex) {\n return undefined\n }\n}\n\nexport const checkStoredData = async () => {\n try {\n const values = await AsyncStorage.multiGet([\n LocalStorageKeys.ACCESS_TOKEN,\n LocalStorageKeys.AUTH_GUEST_TOKEN,\n LocalStorageKeys.USER_DATA,\n LocalStorageKeys.CHECKOUT_DATA,\n LocalStorageKeys.REFRESH_TOKEN,\n LocalStorageKeys.RESET_PASS_TOKEN,\n LocalStorageKeys.AUTH_TOKEN_TYPE,\n LocalStorageKeys.AUTH_SCOPE,\n LocalStorageKeys.SCOPE,\n LocalStorageKeys.TOKEN_TYPE,\n LocalStorageKeys.EVENT_COUNTRY,\n ])\n return values\n } catch (ex) {\n console.log('Local Storage GetData Error - checkStoredData')\n }\n}\n\nexport const isStoredTokenValid = async () => {\n const token = await getData(LocalStorageKeys.ACCESS_TOKEN)\n if (!token) {\n return false\n }\n\n try {\n const decodedToken = jwtDecode<{ exp?: number }>(token)\n\n // Check if exp is missing or invalid\n if (!decodedToken || typeof decodedToken.exp !== 'number') {\n await deleteData(LocalStorageKeys.ACCESS_TOKEN)\n await deleteData(LocalStorageKeys.USER_DATA)\n return false\n }\n\n // Check if token is expired\n if (decodedToken.exp < Date.now() / 1000) {\n await deleteData(LocalStorageKeys.ACCESS_TOKEN)\n await deleteData(LocalStorageKeys.USER_DATA)\n return false\n }\n\n return true\n } catch {\n // Token is malformed or cannot be decoded\n await deleteData(LocalStorageKeys.ACCESS_TOKEN)\n await deleteData(LocalStorageKeys.USER_DATA)\n return false\n }\n}\n","import { AxiosError } from 'axios'\n\nimport { IError } from '../types'\n\nconst ERROR = 'Something went wrong!'\n\ninterface ErrorResponseData {\n message?: string | { email?: string; [key: string]: any }\n [key: string]: any\n}\n\nexport const getApiError = (\n error: AxiosError<ErrorResponseData>,\n defaultMessage?: string\n): IError => {\n const errorJSON = error.toJSON()\n\n if (error.response) {\n const message = error.response?.data?.message\n return {\n message: typeof message === 'string' ? message : defaultMessage || ERROR,\n code: error.response?.status,\n }\n } else {\n if (error.code === 'ECONNABORTED') {\n return {\n // @ts-ignore\n message: errorJSON.message || 'Connection time out',\n }\n }\n }\n\n return {\n message: defaultMessage || ERROR,\n }\n}\n","import { Config } from '../../helpers/Config'\n\nexport const getFetchAccessTokenBody = (authorizationCode: string): FormData => {\n const bodyFormDataToken = new FormData()\n bodyFormDataToken.append('code', authorizationCode)\n bodyFormDataToken.append('scope', 'profile')\n bodyFormDataToken.append('grant_type', 'authorization_code')\n bodyFormDataToken.append('client_id', Config.CLIENT_ID)\n bodyFormDataToken.append('client_secret', Config.CLIENT_SECRET)\n\n return bodyFormDataToken\n}\n\nexport const getRefreshAccessTokenBody = (refreshToken: string): FormData => {\n const bodyFormDataToken = new FormData()\n bodyFormDataToken.append('grant_type', 'refresh_token')\n bodyFormDataToken.append('client_id', Config.CLIENT_ID)\n bodyFormDataToken.append('client_secret', Config.CLIENT_SECRET)\n bodyFormDataToken.append('refresh_token', refreshToken)\n\n return bodyFormDataToken\n}\n","import { fetchAccessToken } from '../api/ApiClient'\nimport { IFetchAccessTokenResponse } from '../api/types'\nimport { getRefreshAccessTokenBody } from '../core/LoginCore/LoginCoreHelper'\nimport { getData, LocalStorageKeys } from './LocalStorage'\n\nexport const refreshAccessToken = async (\n refreshToken?: string\n): Promise<IFetchAccessTokenResponse> => {\n let token = await getData(LocalStorageKeys.REFRESH_TOKEN)\n if (refreshToken) {\n token = refreshToken\n }\n if (!token) {\n return {\n accessTokenError: {\n message: 'There is not stored or passed Refresh Token',\n },\n }\n }\n\n const refreshTokenBody = getRefreshAccessTokenBody(token)\n const response = await fetchAccessToken(refreshTokenBody)\n\n return response\n}\n","/**\n * @deprecated This component is deprecated and will be removed in a future release.\n * Please use the hooks from 'tf-checkout-react-native' instead.\n * Example: import { useCheckoutFlow } from 'tf-checkout-react-native'\n * See README.md in this directory for migration guide.\n */\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { forwardRef, useImperativeHandle } from 'react'\nimport BackgroundTimer from 'react-native-background-timer'\n\nimport {\n fetchEventConditions,\n fetchOrderDetails,\n fetchOrderReview,\n postOnFreeRegistration,\n postOnPaymentSuccess,\n} from '../../api/ApiClient'\nimport {\n IFetchAccessTokenResponse,\n IFreeRegistrationResponse,\n IMyOrderDetailsResponse,\n IOrderReviewResponse,\n} from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { CheckoutCoreHandle, ICheckoutCoreProps } from './CheckoutCoreTypes'\n\n/**\n * @deprecated Use the hooks from 'tf-checkout-react-native' instead.\n * Example: import { useCheckoutFlow } from 'tf-checkout-react-native'\n */\nconst CheckoutCore = forwardRef<CheckoutCoreHandle, ICheckoutCoreProps>((props, ref) => {\n const [secondsLeft, setSecondsLeft] = useState(420)\n const [timerOn, setTimerOn] = useState(false)\n\n const handleStopTimer = useCallback(() => {\n BackgroundTimer.stop()\n BackgroundTimer.stopBackgroundTimer()\n }, [])\n\n const handleStartTimer = useCallback(() => {\n BackgroundTimer.runBackgroundTimer(() => {\n setSecondsLeft((secs) => {\n if (secs > 0) {\n return secs - 1\n } else {\n return 0\n }\n })\n }, 1000)\n }, [])\n\n const handleTimeIsUp = () => {\n BackgroundTimer.stopBackgroundTimer()\n props.onCartExpired?.()\n }\n\n useEffect(() => {\n if (secondsLeft === 0) {\n handleTimeIsUp()\n }\n props.onSecondsLeftChange?.(secondsLeft)\n }, [secondsLeft])\n\n useEffect(() => {\n if (timerOn) {\n handleStartTimer()\n } else {\n BackgroundTimer.stopBackgroundTimer()\n }\n return () => {\n BackgroundTimer.stopBackgroundTimer()\n }\n }, [handleStartTimer, timerOn])\n\n useImperativeHandle(ref, () => ({\n async getEventConditions(): Promise<any> {\n return await fetchEventConditions()\n },\n\n async getPurchaseOrderDetails(orderId: string): Promise<IMyOrderDetailsResponse> {\n return await fetchOrderDetails(orderId)\n },\n\n async getOrderReview(orderHash: string): Promise<IOrderReviewResponse> {\n const res = await fetchOrderReview(orderHash)\n if (res.orderReviewData) {\n setSecondsLeft(res.orderReviewData.expiresAt)\n setTimerOn(true)\n }\n return res\n },\n\n async freeRegistration(orderHash: string): Promise<IFreeRegistrationResponse> {\n return await postOnFreeRegistration(orderHash)\n },\n\n async paymentSuccess(orderHash: string): Promise<any> {\n return await postOnPaymentSuccess(orderHash)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n stopCartTimer() {\n return handleStopTimer()\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default CheckoutCore\n","import React, { forwardRef, useImperativeHandle } from 'react'\n\nimport {\n authorize,\n closeSession,\n fetchAccessToken,\n fetchUserProfile,\n requestResetPassword,\n requestRestorePassword,\n} from '../../api/ApiClient'\nimport { ICloseSessionResponse, IResetPasswordRequestData } from '../../api/types'\nimport { ILoginFields } from '../../components/login/types'\nimport { IStoredUserData, LocalStorageKeys, storeData } from '../../helpers/LocalStorage'\nimport { IUserProfilePublic } from '../../types'\nimport { ICoreProps } from '../CoreProps'\nimport { getFetchAccessTokenBody } from './LoginCoreHelper'\nimport { ILoginCoreResponse, LoginCoreHandle } from './LoginCoreTypes'\n\nconst LoginCore = forwardRef<LoginCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n // #region Login\n async login({ email, password }: ILoginFields): Promise<ILoginCoreResponse> {\n const bodyFormData = new FormData()\n bodyFormData.append('email', email)\n bodyFormData.append('password', password)\n\n const { code: authorizationCode, error: authorizationError } =\n await authorize(bodyFormData)\n\n if (authorizationError) {\n return {\n error: {\n ...authorizationError,\n extraData: { endpoint: 'authorize' },\n },\n }\n }\n\n if (!authorizationCode) {\n return {\n error: {\n message: 'There is no authorization code',\n extraData: { endpoint: 'authorize' },\n },\n }\n }\n\n const { accessTokenError, accessTokenData } = await fetchAccessToken(\n getFetchAccessTokenBody(authorizationCode)\n )\n\n if (accessTokenError) {\n return {\n error: {\n ...accessTokenError,\n extraData: {\n endpoint: 'accessToken',\n },\n },\n }\n }\n\n const { userProfileError, userProfileData } = await fetchUserProfile()\n\n if (userProfileError) {\n return {\n error: {\n ...userProfileError,\n extraData: {\n endpoint: 'userProfile',\n },\n },\n }\n }\n\n if (!userProfileData) {\n return {\n error: {\n message: 'There is no user profile',\n extraData: {\n endpoint: 'userProfile',\n },\n },\n }\n }\n\n const storedUserData: IStoredUserData = {\n id: userProfileData!.id,\n firstName: userProfileData!.firstName,\n lastName: userProfileData!.lastName,\n email: userProfileData!.email,\n }\n\n const userPublicData: IUserProfilePublic = {\n customerId: userProfileData.id,\n firstName: userProfileData.firstName,\n lastName: userProfileData.lastName,\n email: userProfileData.email,\n phone: userProfileData.phone,\n streetAddress: userProfileData.streetAddress,\n zipCode: userProfileData.zipCode,\n countryId: userProfileData.countryId,\n city: userProfileData.city,\n state: userProfileData.state,\n company: userProfileData.company,\n stateId: userProfileData.stateId,\n dateOfBirth: userProfileData.dateOfBirth,\n }\n\n await storeData(LocalStorageKeys.USER_DATA, JSON.stringify(storedUserData))\n\n return { userProfile: userPublicData, accessTokenData: accessTokenData }\n },\n // #endregion Login\n\n // #region Logout\n async logout(): Promise<ICloseSessionResponse> {\n return await closeSession()\n },\n // #endregion Logout\n\n // #region Restore Password\n async restorePassword(email: string) {\n const response = await requestRestorePassword(email)\n return response\n },\n // #endregion Restore Password\n\n // #region Reset Password\n async resetPassword(data: IResetPasswordRequestData) {\n const response = await requestResetPassword(data)\n return response\n },\n // #endregion Reset Password\n }))\n\n return <>{props.children}</>\n})\n\nexport default LoginCore\n","import React from 'react'\nimport { forwardRef, useImperativeHandle } from 'react'\n\nimport {\n fetchAccountTickets,\n fetchMyOrders,\n fetchOrderDetails,\n} from '../../api/ApiClient'\nimport {\n IFetchAccessTokenResponse,\n IMyOrderDetailsResponse,\n IMyOrdersRequestParams,\n IMyOrdersResponse,\n} from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { IAccountTicketsResponse } from '../../types'\nimport { ICoreProps } from '../CoreProps'\nimport { MyOrdersCoreHandle } from './MyOrdersCoreTypes'\n\nconst MyOrdersCore = forwardRef<MyOrdersCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async getMyOrders(params: IMyOrdersRequestParams): Promise<IMyOrdersResponse> {\n return await fetchMyOrders(params)\n },\n\n async getOrderDetails(orderId: string): Promise<IMyOrderDetailsResponse> {\n return await fetchOrderDetails(orderId)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n async getAccountTickets(\n params: IMyOrdersRequestParams\n ): Promise<IAccountTicketsResponse> {\n return await fetchAccountTickets(params)\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default MyOrdersCore\n","import React, { forwardRef, useImperativeHandle } from 'react'\n\nimport { removeTicketFromResale, resaleTicket } from '../../api/ApiClient'\nimport {\n IFetchAccessTokenResponse,\n IRemoveTicketFromResaleResponse,\n IResaleTicketResponse,\n} from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { ICoreProps } from '../CoreProps'\nimport { OrderDetailsCoreHandle } from './OrderDetailsCoreTypes'\n\nconst OrderDetailsCore = forwardRef<OrderDetailsCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async resaleTicket(\n data: FormData,\n orderHash: string\n ): Promise<IResaleTicketResponse> {\n return await resaleTicket(data, orderHash)\n },\n\n async removeTicketFromResale(\n orderHash: string\n ): Promise<IRemoveTicketFromResaleResponse> {\n return await removeTicketFromResale(orderHash)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default OrderDetailsCore\n","import React, { forwardRef, useCallback, useImperativeHandle } from 'react'\nimport BackgroundTimer from 'react-native-background-timer'\n\nimport { fetchPurchaseConfirmation } from '../../api/ApiClient'\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { ICoreProps } from '../CoreProps'\nimport { PurchaseConfirmationCoreHandle } from './PurchaseConfirmationCoreTypes'\n\nconst PurchaseConfirmationCore = forwardRef<PurchaseConfirmationCoreHandle, ICoreProps>(\n (props, ref) => {\n const handleStopTimer = useCallback(() => {\n BackgroundTimer.stop()\n BackgroundTimer.stopBackgroundTimer()\n }, [])\n\n useImperativeHandle(ref, () => ({\n async getPurchaseConfirmation(orderHash: string): Promise<any> {\n return await fetchPurchaseConfirmation(orderHash)\n },\n\n async refreshAccessToken(\n refreshToken?: string\n ): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n stopCartTimer() {\n return handleStopTimer()\n },\n }))\n\n return <>{props.children}</>\n }\n)\n\nexport default PurchaseConfirmationCore\n","import React, { forwardRef, useImperativeHandle } from 'react'\n\nimport { requestResetPassword } from '../../api/ApiClient'\nimport { IResetPasswordRequestData, IResetPasswordResponse } from '../../api/types'\nimport { ICoreProps } from '../CoreProps'\nimport { ResetPasswordCoreHandle } from './ResetPasswordCoreTypes'\n\nconst ResetPasswordCore = forwardRef<ResetPasswordCoreHandle, ICoreProps>(\n (props, ref) => {\n useImperativeHandle(ref, () => ({\n async postResetPassword(\n data: IResetPasswordRequestData\n ): Promise<IResetPasswordResponse> {\n return await requestResetPassword(data)\n },\n }))\n return <>{props.children}</>\n }\n)\n\nexport default ResetPasswordCore\n","import React from 'react'\nimport { forwardRef, useImperativeHandle } from 'react'\n\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { ICoreProps } from '../CoreProps'\nimport { SessionHandleType } from './SessionCoreTypes'\n\nconst SessionHandle = forwardRef<SessionHandleType, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n async reloadData() {\n return null\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default SessionHandle\n","import { jwtDecode } from 'jwt-decode'\nimport _find from 'lodash/find'\nimport _groupBy from 'lodash/groupBy'\nimport _map from 'lodash/map'\nimport _mapKeys from 'lodash/mapKeys'\nimport _sortBy from 'lodash/sortBy'\nimport React, { forwardRef, useImperativeHandle } from 'react'\n\nimport {\n addToCart,\n closeSession,\n fetchAccountTickets,\n fetchEvent,\n fetchTickets,\n postReferralVisit,\n unlockPasswordProtectedEvent,\n} from '../../api/ApiClient'\nimport {\n IAddToCartParams,\n ICloseSessionResponse,\n IEventResponse,\n IFetchAccessTokenResponse,\n IMyOrdersRequestParams,\n IPostReferralResponse,\n} from '../../api/types'\nimport { Config } from '../../helpers/Config'\nimport { deleteData, getData, LocalStorageKeys } from '../../helpers/LocalStorage'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { IAccountTicketsResponse, IAddToCartResponse, ITicket } from '../../types'\nimport { ICoreProps } from '../CoreProps'\nimport {\n IBookTicketsOptions,\n IGetTicketsOptions,\n IGetTicketsPayload,\n IGroupedTickets,\n TicketsCoreHandle,\n} from './TicketsCoreTypes'\n\nconst TicketsCore = forwardRef<TicketsCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async getTickets({\n promoCode,\n areTicketsSortedBySoldOut,\n areTicketsGrouped,\n referredId,\n }: IGetTicketsOptions): Promise<IGetTicketsPayload> {\n const groupTickets = (tickets: ITicket[]) => {\n // Create an array of tickets with the GroupName set\n const ticketsWithGroupName = _map(tickets, (ticket) => {\n return {\n ...ticket,\n groupName: ticket.groupName || '',\n }\n })\n const groupedTickets = _groupBy(ticketsWithGroupName, 'groupName')\n const ticketsSections: IGroupedTickets[] = []\n _mapKeys(groupedTickets, (val, key) => {\n ticketsSections.push({\n title: key,\n data: val,\n })\n })\n\n return ticketsSections\n }\n // PromoCode higher priority than ReferredId\n\n const ticketsResponse = await fetchTickets({\n promoCode: promoCode,\n referredId: referredId,\n })\n\n if (ticketsResponse.error || !ticketsResponse.tickets) {\n return ticketsResponse\n }\n\n const sortedTickets = areTicketsSortedBySoldOut\n ? _sortBy(_sortBy(ticketsResponse.tickets, 'sortOrder'), 'soldOut')\n : _sortBy(ticketsResponse.tickets, 'sortOrder')\n\n const areGroupsShown = !!_find(sortedTickets, (ticket) => ticket.groupName)\n\n if (!areTicketsSortedBySoldOut) {\n if (!areTicketsGrouped) {\n return {\n ...ticketsResponse,\n tickets: sortedTickets,\n areGroupsShown: false,\n }\n }\n if (areGroupsShown) {\n return {\n ...ticketsResponse,\n tickets: groupTickets(sortedTickets),\n areGroupsShown: areGroupsShown,\n }\n } else {\n return {\n ...ticketsResponse,\n tickets: sortedTickets,\n areGroupsShown: areGroupsShown,\n }\n }\n } else {\n // Sort tickets by sold out\n if (!areTicketsGrouped) {\n return {\n ...ticketsResponse,\n tickets: sortedTickets,\n areGroupsShown: false,\n }\n } else {\n if (areGroupsShown) {\n return {\n ...ticketsResponse,\n tickets: groupTickets(sortedTickets),\n areGroupsShown: areGroupsShown,\n }\n }\n return {\n ...ticketsResponse,\n tickets: sortedTickets,\n areGroupsShown: areGroupsShown,\n }\n }\n }\n },\n\n async getEvent(): Promise<IEventResponse> {\n return await fetchEvent()\n },\n\n async unlockPasswordProtectedEvent(password: string): Promise<IEventResponse> {\n return await unlockPasswordProtectedEvent(password)\n },\n\n async addToCart({\n quantity,\n optionName,\n ticketId,\n price,\n }: IBookTicketsOptions): Promise<IAddToCartResponse> {\n if (!Config.EVENT_ID) {\n return {\n error: {\n message: 'Event ID is not configured',\n },\n }\n }\n const parsedEventId =\n typeof Config.EVENT_ID === 'string'\n ? parseInt(Config.EVENT_ID, 10)\n : Config.EVENT_ID\n\n const data: IAddToCartParams = {\n attributes: {\n alternative_view_id: null,\n product_cart_quantity: quantity,\n product_options: {\n [optionName]: ticketId,\n },\n product_id: parsedEventId,\n ticket_types: {\n [ticketId]: {\n product_options: {\n [optionName]: ticketId,\n ticket_price: price,\n },\n quantity: quantity,\n },\n },\n },\n }\n return await addToCart(data)\n },\n\n async getIsUserLoggedIn(): Promise<boolean> {\n const token = await getData(LocalStorageKeys.ACCESS_TOKEN)\n\n if (!token) {\n return false\n }\n\n const decodedToken = jwtDecode<{ exp: number }>(token)\n if (decodedToken && decodedToken.exp < Date.now() / 1000) {\n await deleteData(LocalStorageKeys.ACCESS_TOKEN)\n await deleteData(LocalStorageKeys.USER_DATA)\n return false\n }\n\n return true\n },\n\n async logout(): Promise<ICloseSessionResponse> {\n return await closeSession()\n },\n\n async postReferralVisit(referralId: string): Promise<IPostReferralResponse> {\n return await postReferralVisit(referralId)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n\n async getAccountTickets(\n params: IMyOrdersRequestParams\n ): Promise<IAccountTicketsResponse> {\n return await fetchAccountTickets(params)\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default TicketsCore\n","import React, { forwardRef, useImperativeHandle } from 'react'\n\nimport { addToWaitingList } from '../../api/ApiClient'\nimport { IAddToWaitingListResponse, IFetchAccessTokenResponse } from '../../api/types'\nimport { IWaitingListFields } from '../../components/waitingList/types'\nimport { refreshAccessToken as refreshAccessTokenAsync } from '../../helpers/RefreshAccessToken'\nimport { ICoreProps } from '../CoreProps'\nimport {\n IAddToWaitingListCoreParams,\n WaitingListCoreHandle,\n} from './WaitingListCoreTypes'\n\nconst WaitingListCore = forwardRef<WaitingListCoreHandle, ICoreProps>((props, ref) => {\n useImperativeHandle(ref, () => ({\n async addToWaitingList(\n params: IAddToWaitingListCoreParams\n ): Promise<IAddToWaitingListResponse> {\n const fields: IWaitingListFields = {\n ticketTypeId: '',\n quantity: '',\n ...params,\n }\n\n return await addToWaitingList(fields)\n },\n\n async refreshAccessToken(refreshToken?: string): Promise<IFetchAccessTokenResponse> {\n return await refreshAccessTokenAsync(refreshToken)\n },\n }))\n\n return <>{props.children}</>\n})\n\nexport default WaitingListCore\n","import React, { FC, useMemo, useState } from 'react'\nimport { Alert, Image, Modal, Text, TouchableOpacity, View } from 'react-native'\n\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validateEmail, validateMinLength } from '../../helpers/Validators'\nimport R from '../../res'\nimport Button from '../button/Button'\nimport RestorePassword from '../restorePassword/RestorePassword'\nimport ResultDialog from '../restorePassword/ResultDialog'\nimport LoginForm from './components/LoginForm'\nimport s from './styles'\nimport { ILoginViewProps, ILoginViewState } from './types'\n\nconst initialState: ILoginViewState = {\n loginEmail: '',\n loginPassword: '',\n}\n\nconst LoginView: FC<ILoginViewProps> = ({\n showDialog,\n hideDialog,\n isDialogVisible,\n onPressLogin,\n isLoading,\n onPressLogout,\n styles,\n texts,\n userFirstName,\n loginApiError,\n brandImages,\n isShowPasswordButtonVisible,\n content,\n onPressForgotPassword,\n restorePasswordProps,\n resultDialogPropsProps,\n}) => {\n const [data, setData] = useState<ILoginViewState>(initialState)\n const { loginEmail, loginPassword } = data\n\n const loginEmailError = useDebounced(loginEmail, validateEmail)\n const loginPasswordError = useDebounced(loginPassword, (value: string) =>\n validateMinLength(value, 6, 'Password')\n )\n\n const handleOnPressLogin = () => {\n onPressLogin({\n email: loginEmail,\n password: loginPassword,\n })\n }\n\n const logoutTitle = texts?.logoutDialog?.title\n ? texts.logoutDialog.title\n : 'Are you sure that you want to logout?'\n\n const logoutMessage = texts?.logoutDialog?.message\n ? texts.logoutDialog.message\n : 'You will need to enter your login data again to place the order.'\n\n const logoutConfirm = texts?.logoutDialog?.confirm\n ? texts.logoutDialog.confirm\n : 'Yes, logout'\n\n const logoutCancel = texts?.logoutDialog?.cancel ? texts.logoutDialog.cancel : 'No'\n\n const line1 = texts?.line1 || 'Got a TICKETFAIRY account?'\n\n const line2 = texts?.line2 || 'Login & skip ahead:'\n\n const handleLogout = () => {\n setData(initialState)\n if (onPressLogout) {\n onPressLogout()\n }\n }\n\n const checkIsLoginDataValid = (): boolean => {\n if (loginEmailError) {\n return false\n }\n if (loginPasswordError) {\n return false\n }\n return true\n }\n\n const LoggedComponent = () => (\n <View style={styles?.loggedIn?.container}>\n <Text style={styles?.loggedIn?.placeholder}>\n {texts?.loggedIn?.loggedAs || 'Logged in as:'}{' '}\n <Text style={styles?.loggedIn?.value}>{userFirstName}</Text>\n </Text>\n <Text style={styles?.loggedIn?.message}>\n {texts?.loggedIn?.notYou || 'Not you?'}\n </Text>\n <Button\n text={texts?.logoutButton || 'LOGOUT'}\n onPress={handleOnPressLogout}\n styles={{ container: s.button, ...styles?.loggedIn?.button }}\n />\n </View>\n )\n\n const GuestComponent = () => (\n <>\n {texts?.message ? (\n <Text style={styles?.guest?.message}>{texts?.message}</Text>\n ) : (\n <View style={styles?.guest?.linesContainer}>\n <Text style={styles?.guest?.line1}>{line1}</Text>\n <Text style={styles?.guest?.line2}>{line2}</Text>\n </View>\n )}\n <Button\n styles={{ container: s.button, ...styles?.guest?.loginButton }}\n text={texts?.loginButton || 'LOGIN'}\n onPress={showDialog}\n />\n </>\n )\n\n const BrandImages = useMemo(\n () => (\n <View style={brandImages?.containerStyle}>\n <Image\n source={brandImages?.image1 || R.images.brand}\n style={[s.brand, brandImages?.image1Style]}\n />\n\n {brandImages?.image2 && (\n <Image source={brandImages.image2} style={brandImages?.image2Style} />\n )}\n </View>\n ),\n [\n brandImages?.containerStyle,\n brandImages?.image1,\n brandImages?.image1Style,\n brandImages?.image2,\n brandImages?.image2Style,\n ]\n )\n\n //#region Button Press\n const handleOnPressLogout = () => {\n Alert.alert(logoutTitle, logoutMessage, [\n {\n text: logoutConfirm,\n onPress: handleLogout,\n style: 'destructive',\n },\n {\n text: logoutCancel,\n },\n ])\n }\n //#endregion Button Press\n\n //#region Text Changed\n const handleOnLoginEmailChanged = (text: string) =>\n setData({ ...data, loginEmail: text })\n\n const handleOnLoginPasswordChanged = (text: string) =>\n setData({ ...data, loginPassword: text })\n //#endregion Text Changed\n\n const renderContent = (): React.ReactElement => {\n switch (content) {\n case 'login':\n return (\n <LoginForm\n email={loginEmail}\n emailError={loginEmailError}\n onEmailChanged={handleOnLoginEmailChanged}\n password={loginPassword}\n passwordError={loginPasswordError}\n onPasswordChanged={handleOnLoginPasswordChanged}\n onPressLoginButton={handleOnPressLogin}\n onPressForgotPassword={onPressForgotPassword}\n viewProps={{\n styles: styles,\n texts: texts,\n }}\n loginApiError={loginApiError}\n isLoginButtonDisabled={!checkIsLoginDataValid()}\n isLoading={isLoading}\n brandImages={BrandImages}\n isShowPasswordButtonVisible={isShowPasswordButtonVisible}\n />\n )\n\n case 'restorePassword':\n return (\n <RestorePassword\n onPressRestorePasswordButton={\n restorePasswordProps.onPressRestorePasswordButton\n }\n onPressCancelButton={restorePasswordProps.onPressCancelButton}\n styles={styles?.restorePassword}\n texts={texts?.restorePassword}\n isLoading={restorePasswordProps.isLoading}\n />\n )\n\n case 'restorePasswordSuccess':\n return (\n <ResultDialog\n onPressButton={() => {\n resultDialogPropsProps?.onPressButton()\n }}\n message={resultDialogPropsProps?.message}\n />\n )\n\n default:\n return (\n <LoginForm\n email={loginEmail}\n emailError={loginEmailError}\n onEmailChanged={handleOnLoginEmailChanged}\n password={loginPassword}\n passwordError={loginPasswordError}\n onPasswordChanged={handleOnLoginPasswordChanged}\n onPressLoginButton={handleOnPressLogin}\n onPressForgotPassword={onPressForgotPassword}\n viewProps={{\n styles: styles,\n texts: texts,\n }}\n loginApiError={loginApiError}\n isLoginButtonDisabled={!checkIsLoginDataValid()}\n isLoading={isLoading}\n brandImages={BrandImages}\n isShowPasswordButtonVisible={isShowPasswordButtonVisible}\n />\n )\n }\n }\n\n //#region Render main component\n return (\n <View style={s.rootContainer}>\n {userFirstName ? LoggedComponent() : GuestComponent()}\n\n {isDialogVisible && (\n <Modal transparent={true} presentationStyle=\"overFullScreen\">\n <View style={s.touchableContainer}>\n <TouchableOpacity style={s.dismissibleArea} onPress={hideDialog}>\n <TouchableOpacity>{renderContent()}</TouchableOpacity>\n </TouchableOpacity>\n </View>\n </Modal>\n )}\n </View>\n )\n //#endregion Render main component\n}\n\nexport default LoginView\n","import { useEffect, useState } from 'react'\nconst DELAY = 300\n\nexport const useDebounced = (value: string, validate: (value: string) => string) => {\n const [debouncedValue, setDebouncedValue] = useState(value)\n const [error, setError] = useState<string>()\n useEffect(\n () => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n if (debouncedValue) {\n setError(validate(value))\n }\n }, DELAY)\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler)\n }\n },\n [debouncedValue, validate, value] // Only re-call effect if value or delay changes\n )\n return error\n}\n","export const emailRegex =\n /^(([^<>()\\[\\]\\\\.,;:\\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\n//https://www.twilio.com/docs/glossary/what-e164\nexport const phoneRegex = /^\\+[1-9]\\d{1,14}$/\n\nconst emptyRegex = /^\\s+$/\n\nexport const validateEmpty = (value?: string | number, message?: string): string => {\n if (!value) {\n return message || 'Required'\n }\n\n if (typeof value === 'string') {\n return emptyRegex.test(value) ? message || 'Required' : ''\n }\n return ''\n}\n\nexport const validateMinLength = (\n value: string,\n minLength: number,\n fieldName: string = 'Field'\n) =>\n value.length < minLength ? `${fieldName} requires at least ${minLength} characters` : ''\n\nexport const validateEmail = (email: string, equalTo?: string) => {\n if (!email) {\n return 'Required'\n }\n\n let validation = ''\n\n if (equalTo) {\n validation = email === equalTo ? '' : 'Emails must match'\n }\n if (validation) {\n return validation\n }\n return !emailRegex.test(email) ? 'Please enter a valid email address' : ''\n}\n\nexport const validatePasswords = (password?: string, equalTo?: string) => {\n if (!password) {\n return 'Required'\n }\n\n let validation = ''\n if (equalTo) {\n validation = password === equalTo ? '' : 'Passwords must match'\n }\n if (validation) {\n return validation\n }\n validation = validateEmpty(password)\n if (validation) {\n return validation\n }\n\n return validateMinLength(password, 6, 'Password')\n}\n\nexport const validateAge = (dateOfBirth?: Date, minimumAge: number = 18): string => {\n if (!dateOfBirth) {\n return 'Required'\n }\n\n const today = new Date()\n const age = today.getFullYear() - dateOfBirth.getFullYear()\n return age < minimumAge ? `You must be at least ${minimumAge} years old` : ''\n}\n\ninterface IValidatePhoneNumber {\n phoneNumber?: string\n customError?: string\n countryCode?: string\n}\n\nexport const validatePhoneNumber = ({\n phoneNumber,\n customError,\n countryCode,\n}: IValidatePhoneNumber) => {\n if (!phoneNumber) {\n return customError || 'Please enter a phone number'\n }\n\n if (phoneNumber === countryCode)\n return customError || 'Please enter a valid phone number'\n\n return !phoneRegex.test(`${phoneNumber}`)\n ? customError || 'Please enter a valid phone number'\n : ''\n}\n\nexport const validateDropDownEmpty = (selectedOptionId?: string | number): string => {\n if (!selectedOptionId) return 'Required'\n\n if (typeof selectedOptionId === 'string') {\n return selectedOptionId === '-1' ? 'Required' : ''\n }\n\n if (typeof selectedOptionId === 'number') {\n return selectedOptionId === -1 ? 'Required' : ''\n }\n\n return ''\n}\n","import React, { FC, useState } from 'react'\nimport { Text, View } from 'react-native'\n\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validateEmail } from '../../helpers/Validators'\nimport Button from '../button/Button'\nimport Input from '../input/Input'\nimport { restorePasswordStyles as s } from './styles'\nimport { IRestorePasswordProps } from './types'\n\nconst RestorePassword: FC<IRestorePasswordProps> = ({\n styles,\n texts,\n isLoading,\n onPressRestorePasswordButton,\n onPressCancelButton,\n apiError,\n}) => {\n const [email, setEmail] = useState('')\n const emailError = useDebounced(email, validateEmail)\n\n const handleOnPressRestoreButton = () => {\n onPressRestorePasswordButton(email)\n }\n\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Text style={[s.title, styles?.title]}>\n {texts?.title || 'Enter your email to restore your password'}\n </Text>\n\n <Input\n label={texts?.inputLabel || 'Email'}\n error={emailError}\n keyboardType=\"email-address\"\n value={email}\n onChangeText={setEmail}\n autoCapitalize=\"none\"\n styles={styles?.input}\n />\n\n {!!apiError && <Text style={styles?.apiError}>{apiError}</Text>}\n\n <Button\n text={texts?.restorePasswordButton || 'RESTORE PASSWORD'}\n onPress={handleOnPressRestoreButton}\n isLoading={isLoading}\n isDisabled={isLoading || !!emailError || email.length === 0}\n styles={styles?.restorePasswordButton}\n />\n\n {!isLoading && (\n <Button\n text={texts?.cancelButton || 'CANCEL'}\n onPress={onPressCancelButton}\n styles={styles?.cancelRestorePasswordButton}\n />\n )}\n </View>\n )\n}\n\nexport default RestorePassword\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport const restorePasswordStyles = StyleSheet.create({\n rootContainer: {\n paddingVertical: 32,\n width: '80%',\n backgroundColor: R.colors.white,\n borderRadius: 2,\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n title: {\n color: R.colors.black,\n fontSize: 18,\n fontWeight: '800',\n },\n})\n\nexport const restorePasswordSuccessStyles = StyleSheet.create({\n rootContainer: {\n paddingVertical: 32,\n width: '80%',\n backgroundColor: R.colors.white,\n borderRadius: 2,\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n title: {\n color: R.colors.black,\n fontSize: 18,\n fontWeight: '800',\n },\n message: {\n color: R.colors.black,\n },\n})\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport Button from '../button/Button'\nimport { restorePasswordSuccessStyles as s } from './styles'\nimport { IResultDialogProps } from './types'\n\nconst ResultDialog: FC<IResultDialogProps> = ({\n styles,\n texts,\n message,\n onPressButton,\n}) => (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Text style={[s.title, styles?.title]}>{texts?.title || 'Email Sent!'}</Text>\n\n {!!texts?.message && (\n <Text style={[s.message, styles?.message]}>{texts.message}</Text>\n )}\n {!!message && <Text>{message}</Text>}\n\n <Button text={texts?.button || 'OK'} onPress={onPressButton!} />\n </View>\n)\n\nexport default ResultDialog\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport Button from '../../button/Button'\nimport Input from '../../input/Input'\nimport s from '../styles'\nimport { ILoginFormProps } from './types'\n\nconst LoginForm: FC<ILoginFormProps> = ({\n viewProps,\n email,\n emailError,\n onEmailChanged,\n password,\n passwordError,\n onPasswordChanged,\n loginApiError,\n isShowPasswordButtonVisible,\n onPressForgotPassword,\n isLoginButtonDisabled,\n isLoading,\n onPressLoginButton,\n brandImages,\n}) => {\n const { styles, texts } = viewProps || {}\n\n return (\n <View style={[s.dialog, styles?.dialog?.container]}>\n <Text style={[s.dialogTitle, styles?.dialog?.title]}>\n {texts?.dialog?.title || 'Login'}\n </Text>\n\n {brandImages}\n\n {!!texts?.dialog?.message && (\n <Text style={[s.message, styles?.dialog?.message]}>{texts.dialog.message}</Text>\n )}\n\n <Input\n label={texts?.dialog?.emailLabel || 'Email'}\n error={emailError}\n keyboardType=\"email-address\"\n value={email}\n onChangeText={onEmailChanged}\n autoCapitalize=\"none\"\n styles={styles?.dialog?.input}\n />\n <Input\n label={texts?.dialog?.passwordLabel || 'Password'}\n error={passwordError}\n keyboardType=\"default\"\n value={password}\n onChangeText={onPasswordChanged}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n isShowPasswordButtonVisible={isShowPasswordButtonVisible}\n styles={styles?.dialog?.input}\n />\n\n {!!loginApiError && (\n <Text style={[s.error, styles?.dialog?.apiError]}>{loginApiError}</Text>\n )}\n\n <Text\n onPress={onPressForgotPassword}\n style={[s.forgotPassword, styles?.dialog?.forgotPassword]}\n >\n {texts?.dialog?.forgotPassword || 'Forgot Password'}\n </Text>\n\n <Button\n styles={\n isLoginButtonDisabled\n ? {\n container: [s.loginButton],\n ...styles?.dialog?.loginButtonDisabled,\n }\n : {\n container: [s.loginButton],\n ...styles?.dialog?.loginButton,\n }\n }\n text={texts?.dialog?.loginButton || 'LOGIN'}\n onPress={onPressLoginButton}\n isLoading={isLoading}\n isDisabled={isLoginButtonDisabled}\n />\n </View>\n )\n}\n\nexport default LoginForm\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\nexport default StyleSheet.create({\n rootContainer: {\n paddingVertical: 16,\n },\n title: {\n fontWeight: '800',\n },\n button: {\n marginVertical: 16,\n },\n touchableContainer: {\n flex: 1,\n },\n dismissibleArea: {\n flex: 1,\n backgroundColor: R.colors.transparentBlack,\n justifyContent: 'center',\n alignItems: 'center',\n },\n dialog: {\n paddingVertical: 32,\n width: '80%',\n backgroundColor: R.colors.white,\n borderRadius: 2,\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n dialogTitle: {\n color: R.colors.black,\n fontSize: 18,\n fontWeight: '800',\n },\n emailInput: {\n marginBottom: 16,\n },\n loginButton: {\n height: 45,\n width: '100%',\n marginTop: 16,\n },\n brand: {\n width: 200,\n height: 50,\n resizeMode: 'contain',\n marginBottom: 16,\n tintColor: R.colors.white,\n },\n message: {\n color: R.colors.black,\n marginBottom: 24,\n marginTop: -8,\n },\n error: {\n color: R.colors.danger,\n fontWeight: '600',\n },\n forgotPassword: {\n color: R.colors.black,\n },\n})\n","import InputPhone from '@sesamsolutions/phone-input'\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react'\nimport { Platform, View } from 'react-native'\n\nimport Input from '../input/Input'\nimport s from './/styles'\nimport { IOnChangePhoneNumberPayload, IPhoneInputProps } from './types'\n\nconst PhoneInput: FC<IPhoneInputProps> = ({\n phoneNumber,\n onChangePhoneNumber,\n onBlur,\n styles,\n error,\n texts,\n country = 'US',\n}) => {\n const [localValue, setLocalValue] = useState('')\n const isUserInitiatedRef = useRef(false)\n\n useEffect(() => {\n if (!isUserInitiatedRef.current) {\n setLocalValue(phoneNumber)\n }\n isUserInitiatedRef.current = false\n }, [phoneNumber])\n\n const handleOnChangeInputPhone = useCallback(\n (payload: IOnChangePhoneNumberPayload) => {\n isUserInitiatedRef.current = true\n setLocalValue(payload.input)\n onChangePhoneNumber(payload)\n },\n [onChangePhoneNumber]\n )\n\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Input\n onChangeText={(text) => {\n isUserInitiatedRef.current = true\n setLocalValue(text)\n }}\n onBlur={onBlur}\n label={texts?.label || 'Phone number'}\n keyboardType=\"phone-pad\"\n value={localValue}\n styles={{\n container: s.phoneInputContainer,\n ...styles?.input,\n color: error ? styles?.input?.errorColor : styles?.input?.baseColor,\n }}\n labelOffset={{ x1: -32 }}\n renderLeftAccessory={() => (\n <View style={(s.countryContainer, styles?.country?.container)}>\n <InputPhone\n initialCountry={country}\n onChange={handleOnChangeInputPhone}\n style={s.countryButton}\n textStyle={s.textInput}\n value={localValue}\n dismissKeyboard={false}\n />\n </View>\n )}\n error={error}\n />\n </View>\n )\n}\n\nexport default PhoneInput\n","import { Platform, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n rootContainer: {\n flexDirection: 'row',\n width: '100%',\n },\n countryContainer: {\n marginBottom: 0,\n paddingBottom: 0,\n width: Platform.OS === 'ios' ? 32 : 16,\n },\n countryButton: {\n width: Platform.OS === 'ios' ? 32 : 32,\n overflow: 'hidden',\n marginBottom: -8,\n paddingBottom: 0,\n borderBottomWidth: 0,\n borderBottomColor: R.colors.transparent,\n zIndex: 4,\n },\n phoneInputContainer: {\n flex: 1,\n },\n textInput: {\n width: 0,\n borderBottomWidth: 0,\n },\n})\n","import React, { FC, useState } from 'react'\nimport { Image, Text, TextInput, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../res'\nimport Button from '../button/Button'\nimport s from './styles'\nimport { IPromoCodeProps } from './types'\n\nconst PromoCode: FC<IPromoCodeProps> = ({\n onPressApply,\n promoCodeValidationMessage,\n isPromoCodeValid,\n styles,\n texts,\n isAccessCodeEnabled,\n closeButtonIcon,\n}) => {\n const [isActive, setIsActive] = useState(false)\n const [promoCode, setPromoCode] = useState('')\n\n const activate = () => setIsActive(true)\n const deactivate = (): string => {\n const code = promoCode\n setIsActive(false)\n setPromoCode('')\n return code\n }\n\n const handleOnPressPromoCode = () => {\n activate()\n }\n\n const handleOnPressApply = () => {\n onPressApply(promoCode)\n }\n\n const isCodeValid = () => {\n if (typeof isPromoCodeValid === 'boolean') {\n return isPromoCodeValid\n } else if (typeof isPromoCodeValid === 'number') {\n return isPromoCodeValid > 0\n }\n }\n\n const isApplyButtonDisabled = promoCode.length === 0\n const submitButton = texts?.apply\n ? texts.apply\n : isAccessCodeEnabled\n ? 'ENTER'\n : 'APPLY'\n\n const resultMessageValidStyle = [s.validMessage, styles?.validMessage]\n const resultMessageErrorStyle = [s.errorMessage, styles?.errorMessage]\n const resultMessageStyle = isCodeValid()\n ? resultMessageValidStyle\n : resultMessageErrorStyle\n const resultMessage = isCodeValid()\n ? texts?.validMessage || 'Valid promo code'\n : texts?.errorMessage || promoCodeValidationMessage\n\n return (\n <View style={[{}, styles?.rootContainer]}>\n {isActive || isAccessCodeEnabled ? (\n <View style={styles?.contentWrapper}>\n <View style={[s.content, styles?.content]}>\n <TextInput\n placeholder={texts?.inputPlaceHolder || 'Enter promo code'}\n placeholderTextColor={styles?.inputPlaceholderColor || R.colors.disabled}\n value={promoCode}\n style={[s.input, styles?.input]}\n onChangeText={(text) => setPromoCode(text)}\n autoCapitalize=\"none\"\n underlineColorAndroid={R.colors.transparent}\n />\n\n <TouchableOpacity\n style={[s.cancelButton, styles?.cancelButton]}\n onPress={deactivate}\n >\n <Image\n source={closeButtonIcon || R.icons.error}\n style={[s.cancelIcon, styles?.cancelIcon]}\n />\n </TouchableOpacity>\n <Button\n text={texts?.apply || submitButton}\n styles={\n isApplyButtonDisabled ? styles?.applyDisabledButton : styles?.applyButton\n }\n onPress={handleOnPressApply}\n isDisabled={isApplyButtonDisabled}\n />\n </View>\n {!!resultMessage && <Text style={resultMessageStyle}>{resultMessage}</Text>}\n </View>\n ) : (\n <Button\n text={texts?.mainButton || 'Got a promo code? Click here'}\n onPress={handleOnPressPromoCode}\n styles={{\n text: [s.mainButtonText, styles?.mainButton?.text],\n container: [s.mainButtonContainer, styles?.mainButton?.container],\n button: styles?.mainButton?.button,\n }}\n />\n )}\n </View>\n )\n}\n\nexport default PromoCode\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n content: {\n flexDirection: 'row',\n width: '100%',\n alignItems: 'center',\n backgroundColor: R.colors.listBackground,\n },\n input: {\n paddingHorizontal: 8,\n minWidth: 100,\n flex: 0.8,\n borderColor: R.colors.black,\n color: R.colors.black,\n height: 45,\n fontSize: 16,\n },\n applyButton: {\n backgroundColor: R.colors.primary,\n paddingHorizontal: 8,\n flex: 0.4,\n },\n applyText: {\n fontWeight: '400',\n fontSize: 14,\n color: R.colors.white,\n },\n cancelButton: {\n padding: 4,\n flex: 0.2,\n marginLeft: 4,\n },\n cancelIcon: {\n width: 20,\n height: 20,\n tintColor: R.colors.white,\n },\n errorMessage: {\n color: R.colors.danger,\n },\n validMessage: {\n color: R.colors.validGreen,\n },\n mainButtonContainer: {},\n mainButtonText: {\n fontWeight: '400',\n fontSize: 14,\n textAlign: 'center',\n color: R.colors.white,\n },\n messageContainer: {\n padding: 8,\n backgroundColor: 'gainsboro',\n alignItems: 'center',\n },\n title: {\n marginVertical: 16,\n fontWeight: '600',\n },\n})\n","import React, { FC } from 'react'\nimport { Text, TouchableOpacity, View } from 'react-native'\n\nimport s from './styles'\nimport { IRadioButtonProps } from './types'\n\nconst RadioButton: FC<IRadioButtonProps> = ({\n styles,\n text = 'Radio button',\n value = true,\n onValueChange,\n}) => (\n <TouchableOpacity\n onPress={onValueChange}\n style={[s.rootContainer, styles?.rootContainer]}\n >\n <View style={[s.contentContainer, styles?.contentContainer]}>\n <View style={[s.radio, styles?.radio]}>\n {value && <View style={[s.indicator, styles?.indicator]} />}\n </View>\n <Text style={styles?.text}>{text}</Text>\n </View>\n </TouchableOpacity>\n)\n\nexport default RadioButton\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nconst RADIO_SIZE = 20\nconst RADIO_RADIUS = RADIO_SIZE / 2\nconst INDICATOR_SIZE = RADIO_SIZE * 0.6\nconst INDICATOR_RADIUS = INDICATOR_SIZE / 2\n\nexport default StyleSheet.create({\n rootContainer: {\n marginVertical: 4,\n },\n contentContainer: {\n flexDirection: 'row',\n },\n radio: {\n height: RADIO_SIZE,\n width: RADIO_SIZE,\n borderRadius: RADIO_RADIUS,\n borderWidth: 1,\n marginRight: 8,\n justifyContent: 'center',\n alignItems: 'center',\n },\n indicator: {\n width: INDICATOR_SIZE,\n height: INDICATOR_SIZE,\n borderRadius: INDICATOR_RADIUS,\n backgroundColor: R.colors.black,\n },\n})\n","import {\n CardForm,\n initStripe,\n InitStripeParams,\n PaymentIntent,\n useConfirmPayment,\n} from '@stripe/stripe-react-native'\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle } from 'react'\n\nimport styles from './styles'\nimport { IStripePaymentProps, StripePaymentHandle } from './types'\n\nconst StripePayment = forwardRef<StripePaymentHandle, IStripePaymentProps>(\n (props, ref) => {\n const { confirmPayment, loading } = useConfirmPayment()\n\n const handleOnChangeConfirmPaymentLoading = useCallback(\n (isLoading: boolean) => {\n props.onChangeConfirmPaymentLoading?.(isLoading)\n },\n [props]\n )\n\n useEffect(() => {\n handleOnChangeConfirmPaymentLoading(loading)\n }, [handleOnChangeConfirmPaymentLoading, loading])\n\n useImperativeHandle(ref, () => ({\n async initStripe(params: InitStripeParams): Promise<any> {\n return await initStripe(params)\n },\n\n async confirmPayment(\n stripeClientSecret: string,\n params: PaymentIntent.ConfirmParams\n ): Promise<any> {\n return await confirmPayment(stripeClientSecret, params)\n },\n }))\n\n return (\n <CardForm\n onFormComplete={props.onChangePaymentInfo}\n style={[styles.cardForm, props.style]}\n cardStyle={props.cardStyle}\n />\n )\n }\n)\n\nexport default StripePayment\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n cardForm: {\n height: 300,\n },\n})\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert } from 'react-native'\n\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport { WaitingListCore, WaitingListCoreHandle } from '../../core'\nimport { SessionCoreHandleType } from '../../core/Session/SessionCoreTypes'\nimport { IAddToWaitingListCoreParams } from '../../core/WaitingListCore/WaitingListCoreTypes'\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validateEmail, validateEmpty } from '../../helpers/Validators'\nimport { IWaitingListProps } from './types'\nimport WaitingListView from './WaitingListView'\n\nconst WaitingList = forwardRef<SessionCoreHandleType, IWaitingListProps>(\n (\n {\n styles,\n texts,\n onAddToWaitingListError,\n onAddToWaitingListSuccess,\n onLoadingChange,\n areAlertsEnabled,\n },\n ref\n ) => {\n //#region State\n const [isSuccess, setIsSuccess] = useState<boolean | undefined>(undefined)\n const [isLoading, setIsLoading] = useState<boolean>(false)\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [email, setEmail] = useState('')\n\n const firstNameError = useDebounced(firstName, validateEmpty)\n const lastNameError = useDebounced(lastName, validateEmpty)\n const emailError = useDebounced(email, validateEmail)\n //#endregion State\n\n const handleSetFirstName = (val: string) => setFirstName(val)\n const handleSetLastName = (val: string) => setLastName(val)\n const handleSetEmail = (val: string) => setEmail(val)\n\n //#region Ref\n const waitingListCoreRef = useRef<WaitingListCoreHandle>(null)\n //#endregion Ref\n\n const showAlert = (message: string) => {\n if (areAlertsEnabled) {\n Alert.alert('', message)\n }\n }\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n const { accessTokenError, accessTokenData } =\n await waitingListCoreRef.current!.refreshAccessToken(refreshToken)\n\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {},\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleOnPressButton = async () => {\n if (!waitingListCoreRef.current) {\n showAlert('WaitingListCore is not initialized')\n return onAddToWaitingListError?.({\n message: 'WaitingListCore is not initialized',\n })\n }\n\n const values: IAddToWaitingListCoreParams = {\n firstName: firstName,\n lastName: lastName,\n email: email,\n }\n\n setIsLoading(true)\n\n const { addToWaitingListData, addToWaitingListError } =\n await waitingListCoreRef.current.addToWaitingList(values)\n\n setIsLoading(false)\n if (addToWaitingListError) {\n setIsSuccess(false)\n showAlert(addToWaitingListError.message)\n onAddToWaitingListError?.(addToWaitingListError)\n return\n }\n\n if (addToWaitingListData) {\n onAddToWaitingListSuccess?.()\n setIsSuccess(true)\n }\n }\n\n const onLoadingChangeCallback = useCallback(\n (loading: boolean) => {\n onLoadingChange?.(loading)\n },\n [onLoadingChange]\n )\n //#endregion Handlers\n\n useEffect(() => {\n onLoadingChangeCallback(isLoading)\n }, [isLoading, onLoadingChangeCallback])\n\n //#region RENDER\n return (\n <WaitingListCore ref={waitingListCoreRef}>\n <WaitingListView\n data={{\n firstName: firstName,\n lastName: lastName,\n email: email,\n firstNameError: firstNameError,\n lastNameError: lastNameError,\n emailError: emailError,\n onChangeEmail: handleSetEmail,\n onChangeFirstName: handleSetFirstName,\n onChangeLastName: handleSetLastName,\n }}\n onPressButton={handleOnPressButton}\n isSuccess={isSuccess}\n styles={styles}\n texts={texts}\n isLoading={isLoading}\n />\n </WaitingListCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default WaitingList\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport { Button, Input } from '..'\nimport s from './styles'\nimport { IWaitingListViewProps } from './types'\n\nconst WaitingListView: FC<IWaitingListViewProps> = ({\n styles,\n texts,\n onPressButton,\n data,\n isSuccess,\n isLoading,\n}) => {\n const {\n firstName,\n lastName,\n email,\n emailError,\n lastNameError,\n firstNameError,\n onChangeEmail,\n onChangeFirstName,\n onChangeLastName,\n } = data\n\n const getIsDataValid = () =>\n firstName.length > 0 &&\n lastName.length > 0 &&\n email.length > 0 &&\n !emailError &&\n !lastNameError &&\n !firstNameError\n\n const isDataValid = getIsDataValid()\n\n const buttonStyle = isDataValid\n ? styles?.button\n : styles?.buttonDisabled\n ? styles?.buttonDisabled\n : styles?.button\n\n return (\n <View style={styles?.rootContainer}>\n {isSuccess ? (\n <View style={styles?.success?.container}>\n <Text style={styles?.success?.title}>\n {texts?.successTitle || `You've been added to the waiting list!`}\n </Text>\n <Text style={styles?.success?.message}>\n {texts?.successMessage || `You'll be notified if tickets become available.`}\n </Text>\n </View>\n ) : (\n <>\n <Text style={[s.title, styles?.title]}>{texts?.title || 'Waiting list'}</Text>\n <Input\n label={texts?.firstName || 'First name'}\n value={firstName}\n onChangeText={onChangeFirstName}\n error={firstNameError}\n styles={styles?.input}\n />\n <Input\n label={texts?.lastName || 'Last name'}\n value={lastName}\n onChangeText={onChangeLastName}\n error={lastNameError}\n styles={styles?.input}\n />\n <Input\n label={texts?.email || 'Email'}\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n value={email}\n onChangeText={onChangeEmail}\n error={emailError}\n styles={styles?.input}\n />\n <Button\n onPress={onPressButton}\n text={texts?.button || 'ADD TO WAITING LIST'}\n styles={buttonStyle}\n isDisabled={!isDataValid}\n isLoading={isLoading}\n />\n </>\n )}\n </View>\n )\n}\n\nexport default WaitingListView\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n title: {\n fontSize: 20,\n fontWeight: '800',\n marginBottom: 24,\n },\n})\n","import _every from 'lodash/every'\nimport _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport _map from 'lodash/map'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { ActivityIndicator, Alert, Image, Linking, Text, View } from 'react-native'\nimport DeviceCountry, { TYPE_ANY } from 'react-native-device-country'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\n\nimport Constants from '../../api/Constants'\nimport {\n ICheckoutBody,\n ICheckoutTicketHolder,\n IFetchAccessTokenResponse,\n IRegisterNewUserBody,\n} from '../../api/types'\nimport {\n Button,\n CartTimer,\n Checkbox,\n DatePicker,\n DropdownMaterial,\n Input,\n Loading,\n Login,\n PhoneInput,\n} from '../../components'\nimport { IDropdownItem } from '../../components/dropdown/types'\nimport { ILoginSuccessData } from '../../components/login/types'\nimport { IOnChangePhoneNumberPayload } from '../../components/phoneInput/types'\nimport { BillingCore, BillingCoreHandle, SessionHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport { Config } from '../../helpers/Config'\nimport { getCountryDialCode } from '../../helpers/CountryCodes'\nimport { useDebounced } from '../../helpers/Debounced'\nimport { getData, LocalStorageKeys } from '../../helpers/LocalStorage'\nimport { emptyPhone } from '../../helpers/StringsHelper'\nimport {\n validateAge,\n validateDropDownEmpty,\n validateEmail,\n validateEmpty,\n validatePasswords,\n validatePhoneNumber,\n} from '../../helpers/Validators'\nimport R from '../../res'\nimport { IError, IUserProfile, IUserProfilePublic } from '../../types'\nimport s from './styles'\nimport {\n IBillingFormFieldsData,\n IBillingProps,\n ITicketHolderField,\n SkippingStatusType,\n} from './types'\n\n/*\n Fields to hide when ticket is free\n - Billing Street Address\n - City\n - State/County\n - Post Code/Zip\n - Country\n*/\n\nconst Billing = forwardRef<SessionHandleType, IBillingProps>(\n (\n {\n styles,\n texts,\n cartProps: {\n isAgeRequired,\n isNameRequired,\n isPhoneRequired,\n minimumAge,\n isBillingRequired,\n isTicketFree,\n isPhoneHidden,\n },\n loginBrandImages,\n skipBillingConfig,\n areAlertsEnabled = true,\n areLoadingIndicatorsEnabled = true,\n onLoadingChange,\n onLoginError,\n onLoginSuccess,\n onRegisterError,\n onRegisterSuccess,\n onCheckoutSuccess,\n onCheckoutError,\n onFetchUserProfileSuccess,\n onFetchUserProfileError,\n onFetchCartError,\n onFetchCartSuccess,\n onFetchCountriesError,\n onFetchCountriesSuccess,\n onFetchStatesError,\n onFetchStatesSuccess,\n onSkippingStatusChange,\n onLogoutSuccess,\n onLogoutError,\n onCartExpired,\n shouldCartTimerNotMinimizeOnTap,\n config = {\n isCheckoutAlwaysButtonEnabled: false,\n shouldHideTicketHolderSectionOnSingleTicket: false,\n },\n },\n ref\n ) => {\n //#region State\n const [isLoading, setIsLoading] = useState<boolean>(false)\n const [isSubmittingData, setIsSubmittingData] = useState<boolean>(false)\n const [loggedUserFirstName, setLoggedUserFirstName] = useState<string>('')\n const [loginMessage, setLoginMessage] = useState('')\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [email, setEmail] = useState('')\n const [emailConfirmation, setEmailConfirmation] = useState('')\n const [password, setPassword] = useState('')\n const [passwordConfirmation, setPasswordConfirmation] = useState('')\n const [isSubToTicketFairy, setIsSubToTicketFairy] = useState(false)\n const [isSubToBrand, setIsSubToBrand] = useState(false)\n const [phone, setPhone] = useState('')\n const [street, setStreet] = useState('')\n const [city, setCity] = useState('')\n const [countryId, setCountryId] = useState('')\n const [stateId, setStateId] = useState('')\n const [postalCode, setPostalCode] = useState('')\n const [dateOfBirth, setDateOfBirth] = useState<Date | undefined>(undefined)\n const [selectedCountry, setSelectedCountry] = useState<IDropdownItem | undefined>(\n undefined\n )\n const [selectedState, setSelectedState] = useState<IDropdownItem | undefined>(\n undefined\n )\n\n const [ticketHoldersData, setTicketHoldersData] = useState<ITicketHolderField[]>([])\n\n const [numberOfTicketHolders, setNumberOfTicketHolders] = useState<\n number | undefined\n >(0)\n\n const [states, setStates] = useState<IDropdownItem[]>([])\n const [countries, setCountries] = useState<IDropdownItem[]>([])\n\n const [isLoginDialogVisible, setIsLoginDialogVisible] = useState(false)\n const [skippingStatus, setSkippingStatus] = useState<SkippingStatusType>(undefined)\n const [isTtfCheckboxHidden, setIsTtfCheckboxHidden] = useState(false)\n //#endregion State\n\n //#region Labels\n const holderLabels = useMemo(() => {\n if (\n numberOfTicketHolders === 1 &&\n config.shouldHideTicketHolderSectionOnSingleTicket\n ) {\n return null\n }\n\n const optional = isNameRequired ? '' : texts?.form?.optional || '(optional)'\n return {\n firstName: texts?.form?.holderFirstName\n ? `${texts.form.holderFirstName} ${optional}`\n : `First Name ${optional}`,\n lastName: texts?.form?.holderLastName\n ? `${texts.form.holderLastName} ${optional}`\n : `Last Name ${optional}`,\n email: texts?.form?.holderEmail\n ? `${texts.form.holderEmail} ${texts?.form?.optional || '(optional)'}`\n : `Email ${optional}`,\n phone: texts?.form?.holderPhone\n ? `${texts.form.holderPhone} ${texts?.form?.optional || '(optional)'}`\n : `Phone ${optional}`,\n }\n }, [isNameRequired, texts, numberOfTicketHolders])\n\n const brandCheckBoxText =\n texts?.form?.isSubToBrand ||\n 'I would like to be updated on news, events and offers.'\n\n const phoneLabel = useMemo(() => {\n const optionalPhone = isPhoneRequired ? '' : texts?.form?.optional || ' (optional)'\n return texts?.form?.phone\n ? `${texts?.form?.phone} ${optionalPhone}`\n : `Phone ${optionalPhone}`\n }, [isPhoneRequired, texts])\n\n const addressLabel = useMemo(() => {\n const optionalAddress = Config.IS_BILLING_STREET_NAME_REQUIRED\n ? ''\n : texts?.form?.optional || ' (optional)'\n\n return texts?.form?.street\n ? `${texts.form.street} ${optionalAddress}`\n : `Street ${optionalAddress}`\n }, [texts])\n //#endregion Labels\n\n // Cart expiration timer\n const [secondsLeft, setSecondsLeft] = React.useState(420)\n\n //#region Errors state\n const firstNameError = useDebounced(firstName, validateEmpty)\n const lastNameError = useDebounced(lastName, validateEmpty)\n const emailError = useDebounced(email, () => validateEmail(email, emailConfirmation))\n const confirmEmailError = useDebounced(emailConfirmation, () =>\n validateEmail(emailConfirmation, email)\n )\n const passwordError = useDebounced(password, () =>\n validatePasswords(password, passwordConfirmation)\n )\n const confirmPasswordError = useDebounced(passwordConfirmation, () =>\n validatePasswords(passwordConfirmation, password)\n )\n const [phoneError, setPhoneError] = useState('')\n const streetError = useDebounced(street, validateEmpty)\n const cityError = useDebounced(city, validateEmpty)\n const postalCodeError = useDebounced(postalCode, validateEmpty)\n const [ttfPrivacyPolicyError, setTtfPrivacyPolicyError] = useState('')\n\n const [firstNameErrorState, setFirstNameErrorState] = useState('')\n const [lastNameErrorState, setLastNameErrorState] = useState('')\n const [streetErrorState, setStreetErrorState] = useState('')\n const [dateOfBirthError, setDateOfBirthError] = useState('')\n const [emailErrorState, setEmailErrorState] = useState('')\n const [emailConfirmationErrorState, setEmailConfirmationErrorState] = useState('')\n const [cityErrorState, setCityErrorState] = useState('')\n const [postalCodeErrorState, setPostalCodeErrorState] = useState('')\n const [countryErrorState, setCountryErrorState] = useState('')\n const [stateErrorState, setStateErrorState] = useState('')\n const [passwordErrorState, setPasswordErrorState] = useState('')\n const [confirmPasswordErrorState, setConfirmPasswordErrorState] = useState('')\n\n const requiredText = texts?.required || 'Required'\n\n //#endregion Errors state\n //#endregion\n\n const getSkippingStatus = (numOfTickets: number): SkippingStatusType => {\n // DO NOT SKIP IF\n // * User is not logged in.\n // * Event Collect_names is turned on and tickets are more than one.\n // * Event validate_age is turned on.\n // * phone_required is turned on and customer does not have a phone number.\n\n if (isBillingRequired || skippingStatus === 'fail') {\n return 'false'\n }\n\n if ((isNameRequired && numOfTickets > 1) || isAgeRequired) {\n return 'false'\n } else {\n return 'skipping'\n }\n }\n\n //#region Refs\n const storedToken = useRef('')\n const storedProfileData = useRef({} as IUserProfilePublic)\n const phoneErrorCounter = useRef(0)\n const billingCoreRef = useRef<BillingCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n const phoneCountryCode = useRef('')\n const errorsRef = useRef({\n firstName: '',\n lastName: '',\n email: '',\n confirmEmail: '',\n password: '',\n confirmPassword: '',\n dateOfBirth: '',\n phone: '',\n street: '',\n city: '',\n country: '',\n zipCode: '',\n state: '',\n privacy: '',\n })\n\n //#endregion\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n if (!accessTokenError && accessTokenData?.accessToken) {\n await fetchData()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n await fetchData()\n },\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleSetPhoneError = useCallback(\n (error: string) => {\n if (isPhoneRequired && phone.length > 0) {\n setPhoneError(error)\n }\n },\n [isPhoneRequired, phone.length]\n )\n\n const handleOnChangePhoneNumber = (payload: IOnChangePhoneNumberPayload) => {\n setPhone(payload.input)\n\n if (payload.isValid) {\n errorsRef.current.phone = ''\n setPhoneError('')\n\n return\n }\n\n if (!payload.isValid && phoneErrorCounter.current > 0) {\n errorsRef.current.phone =\n texts?.form?.phoneInput?.customError || 'Invalid phone number'\n\n return handleSetPhoneError(\n texts?.form?.phoneInput?.customError || 'Invalid phone number'\n )\n }\n\n phoneErrorCounter.current = phoneErrorCounter.current + 1\n }\n\n const handleOnLoadingChange = useCallback(\n (loading: boolean) => {\n if (onLoadingChange) {\n onLoadingChange(loading)\n }\n },\n [onLoadingChange]\n )\n\n const handleOnSkippingStatusChange = useCallback(\n (status: SkippingStatusType) => {\n onSkippingStatusChange?.(status)\n },\n [onSkippingStatusChange]\n )\n\n const showAlert = (text: string) => {\n if (areAlertsEnabled) {\n Alert.alert('', text)\n }\n }\n\n const showLoginDialog = () => setIsLoginDialogVisible(true)\n const hideLoginDialog = () => setIsLoginDialogVisible(false)\n\n const handleIsSubToBrandToggle = () => {\n setIsSubToBrand(!isSubToBrand)\n }\n\n const handleIsSubToTicketFairyToggle = () => {\n const newValue = !isSubToTicketFairy\n\n if (newValue) {\n errorsRef.current.privacy = ''\n setTtfPrivacyPolicyError('')\n } else {\n errorsRef.current.privacy = requiredText\n setTtfPrivacyPolicyError(requiredText)\n }\n\n setIsSubToTicketFairy(newValue)\n }\n\n const handleOpenPrivacyLink = async () => {\n const canOpenLink = await Linking.canOpenURL(Constants.PRIVACY_POLICY_LINK)\n if (canOpenLink) {\n await Linking.openURL(Constants.PRIVACY_POLICY_LINK)\n }\n }\n\n const handleSetFormDataFromUserProfile = (\n userProfile: IUserProfilePublic,\n accessToken?: string\n ) => {\n storedProfileData.current = userProfile\n setFirstName(userProfile.firstName)\n setLastName(userProfile.lastName)\n setEmail(userProfile.email)\n setEmailConfirmation(userProfile.email)\n setPhone(userProfile.phone)\n setStreet(userProfile.streetAddress)\n setCity(userProfile.city)\n setPostalCode(userProfile.zipCode)\n setCountryId(userProfile.countryId)\n setStateId(userProfile.stateId)\n setLoggedUserFirstName(userProfile.firstName)\n\n let dob: Date | undefined\n\n if (userProfile.dateOfBirth) {\n const dobSplitted = userProfile.dateOfBirth.split('-')\n dob = new Date(\n parseInt(dobSplitted[0]!, 10),\n parseInt(dobSplitted[1]!, 10) - 1,\n parseInt(dobSplitted[2]!, 10)\n )\n handleOnSelectDate(dob)\n }\n\n const thData = [...ticketHoldersData]\n thData.forEach((th, index) => {\n th.firstName = index === 0 ? userProfile.firstName : ''\n th.lastName = index === 0 ? userProfile.lastName : ''\n th.email = index === 0 ? userProfile.email : ''\n th.phone = index === 0 ? userProfile.phone : ''\n })\n setTicketHoldersData(thData)\n\n if (accessToken) {\n storedToken.current = accessToken\n }\n\n showErrorMessages({\n firstName: userProfile.firstName,\n lastName: userProfile.lastName,\n email: userProfile.email,\n confirmEmail: userProfile.email,\n street: userProfile.streetAddress,\n city: userProfile.city,\n selectedCountry: userProfile.countryId\n ? {\n label: '',\n value: userProfile.countryId,\n }\n : undefined,\n selectedState: userProfile.stateId\n ? {\n label: '',\n value: userProfile.stateId,\n }\n : undefined,\n postalCode: userProfile.zipCode,\n dateOfBirth: dob,\n phoneNumber: userProfile.phone,\n isRegistering: !loggedUserFirstName && !storedToken.current,\n ticketHolderData: ticketHoldersData,\n })\n }\n\n const clearFormErrors = () => {\n setFirstNameErrorState('')\n setLastNameErrorState('')\n setEmailErrorState('')\n setEmailConfirmationErrorState('')\n setDateOfBirthError('')\n setPhoneError('')\n setStreetErrorState('')\n setCityErrorState('')\n setCountryErrorState('')\n setPostalCodeErrorState('')\n setStateErrorState('')\n setTtfPrivacyPolicyError('')\n errorsRef.current = {\n firstName: '',\n lastName: '',\n email: '',\n confirmEmail: '',\n password: '',\n confirmPassword: '',\n dateOfBirth: '',\n phone: '',\n street: '',\n city: '',\n country: '',\n zipCode: '',\n state: '',\n privacy: '',\n }\n }\n\n const handleOnLoginSuccess = async ({\n userProfile,\n accessTokenData,\n }: ILoginSuccessData) => {\n clearFormErrors()\n\n let countryCode = 'US'\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n const usrProfile = { ...userProfile }\n\n onLoginSuccess?.({\n userProfile,\n accessTokenData,\n })\n\n try {\n const deviceCountry = await DeviceCountry.getCountryCode(TYPE_ANY)\n countryCode = deviceCountry.code.toUpperCase()\n } catch (err) {\n countryCode = 'US'\n }\n\n if (!userProfile.phone) {\n usrProfile.phone = ''\n } else {\n if (!usrProfile.phone?.includes('+')) {\n usrProfile.phone = `${getCountryDialCode(countryCode)}${usrProfile.phone}`\n }\n }\n\n if (!isBillingRequired && skippingStatus === 'fail') {\n setSkippingStatus('skipping')\n\n const phoneValidError = validatePhoneNumber({\n phoneNumber: userProfile.phone,\n customError: texts?.form?.phoneInput?.customError,\n })\n\n if (phoneValidError && isPhoneRequired) {\n setIsLoading(false)\n handleSetPhoneError(\n texts?.invalidPhoneNumberError || 'Please enter a valid phone number'\n )\n }\n\n await performCheckout(\n getCheckoutBodyWhenSkipping({\n userProfile: usrProfile,\n ticketsQuantity: numberOfTicketHolders || 1,\n })\n )\n }\n handleSetFormDataFromUserProfile(usrProfile, accessToken)\n }\n\n const handleOnLoginError = (error: IError) => {\n onLoginError?.(error)\n }\n\n const handleOnLogoutSuccess = async () => {\n setFirstName('')\n setLastName('')\n setEmail('')\n setEmailConfirmation('')\n setPhone('')\n setStreet('')\n setCity('')\n setPostalCode('')\n setPassword('')\n setPasswordConfirmation('')\n setCountryId('')\n setStateId('')\n handleOnSelectDate(undefined)\n\n setSelectedCountry({\n value: '-1',\n label: texts?.form?.country || 'Country',\n code: '__',\n })\n setStates([\n {\n value: '-1',\n label: texts?.form?.state || 'State/County',\n },\n ])\n setIsSubToTicketFairy(false)\n setIsSubToBrand(false)\n storedToken.current = ''\n setLoggedUserFirstName('')\n\n const thData = [...ticketHoldersData]\n thData.forEach((th) => {\n th.firstName = ''\n th.lastName = ''\n th.email = ''\n th.phone = ''\n th.firstNameError = ''\n th.lastNameError = ''\n })\n setTicketHoldersData(thData)\n onLogoutSuccess?.()\n }\n\n //#region Handlers input changed\n const handleOnSelectDate = (newDate: Date | undefined) => {\n setDateOfBirth(newDate)\n\n if (dateOfBirthError.length > 0 && newDate) {\n setDateOfBirthError('')\n }\n\n if (minimumAge) {\n const ageError = validateAge(newDate, minimumAge)\n setDateOfBirthError(ageError)\n } else {\n if (!newDate) {\n setDateOfBirthError(requiredText)\n }\n }\n }\n\n const handleOnStreetChanged = (text: string) => {\n if (streetErrorState.length > 0 && text.length > 0) {\n setStreetErrorState('')\n }\n setStreet(text)\n }\n\n const handleOnCityChanged = (text: string) => {\n if (cityErrorState.length > 0 && text.length > 0) {\n setCityErrorState('')\n }\n setCity(text)\n }\n\n const handleOnFirstNameChanged = (text: string) => {\n if (firstNameErrorState.length > 0 && text.length > 0) {\n setFirstNameErrorState('')\n }\n setFirstName(text)\n }\n\n const handleOnLastNameChanged = (text: string) => {\n if (lastNameErrorState.length > 0 && text.length > 0) {\n setLastNameErrorState('')\n }\n setLastName(text)\n }\n\n const handleOnEmailChanged = (text: string) => {\n if (emailErrorState.length > 0 && text.length > 0) {\n setEmailErrorState('')\n }\n setEmail(text)\n }\n\n const handleOnEmailConfirmationChanged = (text: string) => {\n if (emailConfirmationErrorState.length > 0 && text.length > 0) {\n setEmailConfirmationErrorState('')\n }\n setEmailConfirmation(text)\n }\n\n const handleOnPostalCodeChanged = (text: string) => {\n if (postalCodeErrorState.length > 0 && text.length > 0) {\n setPostalCodeErrorState('')\n }\n setPostalCode(text)\n }\n\n const handleOnStateChanged = (itm: IDropdownItem) => {\n if (stateErrorState.length > 0 && itm.value !== '-1') {\n setStateErrorState('')\n } else if (itm.value === '-1') {\n setStateErrorState(requiredText)\n }\n setSelectedState(itm)\n }\n\n const handleOnCountryChanged = (itm: IDropdownItem) => {\n if (countryErrorState.length > 0 && itm.value !== '-1') {\n setCountryErrorState('')\n } else if (itm.value === '-1') {\n setCountryErrorState(requiredText)\n }\n setSelectedCountry(itm)\n }\n\n const handleOnPasswordChanged = (text: string) => {\n if (passwordErrorState.length > 0 && text.length > 0) {\n setPasswordErrorState('')\n }\n setPassword(text)\n }\n\n const handleOnConfirmPasswordChanged = (text: string) => {\n if (confirmPasswordErrorState.length > 0 && text.length > 0) {\n setConfirmPasswordErrorState('')\n }\n setPasswordConfirmation(text)\n }\n //#endregion Handlers input changed\n\n //#endregion\n\n //#region Form validation\n const checkIsStoredPhoneNumberFormat = (storedPhoneNumber?: string) => {\n if (!storedPhoneNumber) {\n handleSetPhoneError(\n texts?.invalidPhoneNumberError || 'Please enter a valid phone number'\n )\n return false\n }\n\n if (!storedPhoneNumber.includes('+')) {\n handleSetPhoneError(\n texts?.invalidPhoneNumberError || 'Please enter a valid phone number'\n )\n return false\n }\n return true\n }\n\n const showErrorMessages = (data: IBillingFormFieldsData) => {\n if (secondsLeft === 0) {\n return false\n }\n\n const validateFirstName = validateEmpty(data.firstName)\n const validateLastName = validateEmpty(data.lastName)\n\n const validateEmails = validateEmail(data.email, data.confirmEmail)\n const validateEmailsConfirmation = validateEmail(data.confirmEmail, data.email)\n\n if (isTicketFree) {\n setFirstNameErrorState(validateFirstName)\n setLastNameErrorState(validateLastName)\n errorsRef.current.firstName = validateFirstName\n errorsRef.current.lastName = validateLastName\n\n setEmailErrorState(validateEmails)\n setEmailConfirmationErrorState(validateEmailsConfirmation)\n errorsRef.current.email = validateEmails\n errorsRef.current.confirmEmail = validateEmailsConfirmation\n\n if (data.isRegistering) {\n const validatePassword = validatePasswords(data.password, data.confirmPassword)\n const validatePasswordConfirmation = validatePasswords(\n data.confirmPassword,\n data.password\n )\n\n setPasswordErrorState(validatePassword)\n setConfirmPasswordErrorState(validatePasswordConfirmation)\n\n errorsRef.current.password = validatePassword\n errorsRef.current.confirmPassword = validatePasswordConfirmation\n }\n\n if (isAgeRequired) {\n if (minimumAge) {\n const birthdayValidation = validateAge(data.dateOfBirth, minimumAge)\n setDateOfBirthError(birthdayValidation)\n errorsRef.current.dateOfBirth = birthdayValidation\n } else {\n setDateOfBirthError(data.dateOfBirth ? '' : requiredText)\n errorsRef.current.dateOfBirth = data.dateOfBirth ? '' : requiredText\n }\n }\n\n if (isPhoneRequired && !isPhoneHidden) {\n const validatePhone = validatePhoneNumber({\n phoneNumber: data.phoneNumber,\n customError: texts?.form?.phoneInput?.customError,\n countryCode: phoneCountryCode.current,\n })\n setPhoneError(validatePhone)\n errorsRef.current.phone = validatePhone\n }\n\n errorsRef.current.privacy = isSubToTicketFairy ? '' : requiredText\n\n if (isNameRequired) {\n const ticketHoldersDataCopy = [...data.ticketHolderData]\n _map(data.ticketHolderData, (th, index) => {\n if (isNameRequired) {\n ticketHoldersDataCopy[index].firstNameError = validateEmpty(th.firstName)\n ticketHoldersDataCopy[index].lastNameError = validateEmpty(th.lastName)\n }\n })\n\n setTicketHoldersData(ticketHoldersDataCopy)\n }\n\n return\n } // end of Ticket Free\n\n const validateStreet = validateEmpty(data.street)\n const validateCity = validateEmpty(data.city)\n const validatePostalCode = validateEmpty(data.postalCode)\n\n setStreetErrorState(validateStreet)\n setCityErrorState(validateCity)\n setPostalCodeErrorState(validatePostalCode)\n setFirstNameErrorState(validateFirstName)\n setLastNameErrorState(validateLastName)\n setEmailErrorState(validateEmails)\n setEmailConfirmationErrorState(validateEmailsConfirmation)\n\n errorsRef.current.street = validateStreet\n errorsRef.current.city = validateCity\n errorsRef.current.zipCode = validatePostalCode\n errorsRef.current.firstName = validateFirstName\n errorsRef.current.lastName = validateLastName\n errorsRef.current.email = validateEmails\n errorsRef.current.confirmEmail = validateEmailsConfirmation\n\n if (data.isRegistering) {\n const validatePassword = validatePasswords(data.password, data.confirmPassword)\n const validatePasswordConfirmation = validatePasswords(\n data.confirmPassword,\n data.password\n )\n\n setPasswordErrorState(validatePassword)\n setConfirmPasswordErrorState(validatePasswordConfirmation)\n\n errorsRef.current.password = validatePassword\n errorsRef.current.confirmPassword = validatePasswordConfirmation\n }\n\n const countryValidation = validateDropDownEmpty(data.selectedCountry?.value)\n\n setCountryErrorState(countryValidation)\n errorsRef.current.country = countryValidation\n\n if (isAgeRequired) {\n if (minimumAge) {\n const birthdayValidation = validateAge(data.dateOfBirth, minimumAge)\n setDateOfBirthError(birthdayValidation)\n errorsRef.current.dateOfBirth = birthdayValidation\n } else {\n setDateOfBirthError(data.dateOfBirth ? '' : requiredText)\n errorsRef.current.dateOfBirth = data.dateOfBirth ? '' : requiredText\n }\n }\n\n const validateState = validateDropDownEmpty(data.selectedState?.value)\n\n setStateErrorState(validateState)\n errorsRef.current.state = validateState\n\n if (isPhoneRequired && !isPhoneHidden) {\n const validatePhone = validatePhoneNumber({\n phoneNumber: data.phoneNumber,\n customError: texts?.form?.phoneInput?.customError,\n countryCode: phoneCountryCode.current,\n })\n\n setPhoneError(validatePhone)\n errorsRef.current.phone = validatePhone\n }\n\n //setTtfPrivacyPolicyError(isSubToTicketFairy ? '' : requiredText)\n errorsRef.current.privacy = isSubToTicketFairy ? '' : requiredText\n\n if (isNameRequired) {\n const ticketHoldersDataCopy = [...data.ticketHolderData]\n _map(data.ticketHolderData, (th, index) => {\n if (isNameRequired) {\n ticketHoldersDataCopy[index].firstNameError = validateEmpty(th.firstName)\n ticketHoldersDataCopy[index].lastNameError = validateEmpty(th.lastName)\n }\n })\n\n setTicketHoldersData(ticketHoldersDataCopy)\n }\n }\n\n const checkBasicDataValid = (): boolean => {\n if (secondsLeft === 0) {\n return false\n }\n\n if (isTicketFree) {\n if (\n errorsRef.current.firstName ||\n errorsRef.current.lastName ||\n errorsRef.current.email ||\n errorsRef.current.confirmEmail\n ) {\n return false\n }\n } else {\n if (\n errorsRef.current.firstName ||\n errorsRef.current.lastName ||\n errorsRef.current.email ||\n errorsRef.current.confirmEmail ||\n errorsRef.current.city ||\n errorsRef.current.zipCode ||\n errorsRef.current.state ||\n errorsRef.current.country ||\n errorsRef.current.street\n ) {\n return false\n }\n }\n\n if (isPhoneRequired && !isPhoneHidden && errorsRef.current.phone) {\n if (isLoading) {\n setIsLoading(false)\n }\n\n return false\n }\n\n return true\n }\n\n const fillAllRequiredFieldsAlert =\n texts?.form?.fillAllRequiredFieldsAlert ||\n 'You must fill all Ticket Holder required fields'\n\n const checkExtraDataValid = (): string => {\n if (!isTtfCheckboxHidden && !isSubToTicketFairy) {\n setTtfPrivacyPolicyError(\n texts?.form?.ttfPrivacyPolicyRequiredError || requiredText\n )\n return 'Please review the errors'\n }\n\n if (isAgeRequired) {\n if (!dateOfBirth) {\n setDateOfBirthError(requiredText)\n return 'Please enter your date of birth'\n }\n\n if (minimumAge) {\n const ageValidationMessage = validateAge(dateOfBirth, minimumAge)\n if (ageValidationMessage) {\n setDateOfBirthError(ageValidationMessage)\n return ageValidationMessage\n }\n }\n }\n\n if (!isNameRequired) {\n return ''\n }\n\n if (\n ticketHoldersData.length === 1 &&\n config.shouldHideTicketHolderSectionOnSingleTicket\n ) {\n return ''\n }\n\n return _every(\n _map(\n ticketHoldersData,\n (th) => validateEmpty(th.firstName) || validateEmpty(th.lastName)\n ),\n (itm) => itm === ''\n )\n ? ''\n : fillAllRequiredFieldsAlert\n }\n //#endregion\n\n //#region Submit form\n const handleOnRegisterFail = (rawError: any) => {\n onRegisterError?.(rawError)\n }\n\n const performCheckout = async (checkoutBodyWhenSkipping?: ICheckoutBody) => {\n if (!billingCoreRef.current) {\n return onCheckoutError?.({ message: 'BillingCore is not ready' })\n }\n\n const checkoutBody = checkoutBodyWhenSkipping || getCheckoutBody()\n\n setIsSubmittingData(true)\n const { error: checkoutError, data: checkoutData } =\n await billingCoreRef.current.checkoutOrder(checkoutBody)\n setIsLoading(false)\n setIsSubmittingData(false)\n\n if (checkoutError) {\n onCheckoutError?.(checkoutError)\n setSkippingStatus('false')\n return showAlert(checkoutError.message)\n }\n\n if (!checkoutData) {\n onCheckoutError?.({ message: 'Checkout returned not data' })\n setSkippingStatus('false')\n return showAlert('Checkout returned not data')\n }\n\n setSkippingStatus('success')\n billingCoreRef.current.stopCartTimer()\n onCheckoutSuccess(checkoutData)\n }\n\n const getRegisterFormData = (data: IRegisterNewUserBody): FormData => {\n const bodyFormData = new FormData()\n _forEach(data.attributes, (item: any, key: string) => {\n bodyFormData.append(key, item)\n })\n return bodyFormData\n }\n\n const performNewUserRegister = async () => {\n if (!billingCoreRef.current) {\n showAlert('BillingCore is not ready')\n return onRegisterError?.({ message: 'BillingCore is not initialized' })\n }\n\n setIsSubmittingData(true)\n\n const registerUserBody = getRegisterNewUserBody()\n const registerForm = getRegisterFormData(registerUserBody)\n\n const { registerNewUserResponseData, registerNewUserResponseError } =\n await billingCoreRef.current.registerNewUser(registerForm)\n\n if (registerNewUserResponseError) {\n setIsSubmittingData(false)\n if (registerNewUserResponseError.isAlreadyRegistered) {\n setLoginMessage(registerNewUserResponseError.message!)\n showLoginDialog()\n return handleOnRegisterFail(registerNewUserResponseError.raw)\n }\n handleOnRegisterFail(registerNewUserResponseError.raw)\n return showAlert(registerNewUserResponseError.message!)\n }\n\n if (!registerNewUserResponseData) {\n setIsSubmittingData(false)\n handleOnRegisterFail('Register user returned no data')\n return showAlert('Register user returned no data')\n }\n\n storedToken.current = registerNewUserResponseData.accessTokenData.accessToken\n\n onRegisterSuccess?.(registerNewUserResponseData)\n\n await performCheckout()\n }\n\n const getRegisterNewUserBody = (): IRegisterNewUserBody => {\n const phoneNumber = isPhoneRequired ? phone : emptyPhone(phone)\n\n const body: IRegisterNewUserBody = isTicketFree\n ? {\n attributes: {\n email: email,\n first_name: firstName,\n last_name: lastName,\n password: password,\n phone: phoneNumber,\n password_confirmation: passwordConfirmation,\n client_id: Config.CLIENT_ID!,\n client_secret: Config.CLIENT_SECRET!,\n check_cart_expiration: true,\n },\n }\n : {\n attributes: {\n city: city,\n country: parseInt(selectedCountry!.value as string, 10),\n email: email,\n first_name: firstName,\n last_name: lastName,\n password: password,\n phone: phoneNumber,\n state: parseInt(selectedState!.value as string, 10),\n street_address: street,\n zip: postalCode,\n password_confirmation: passwordConfirmation,\n client_id: Config.CLIENT_ID!,\n client_secret: Config.CLIENT_SECRET!,\n check_cart_expiration: true,\n },\n }\n\n if (body.attributes.phone === undefined) {\n delete body.attributes.phone\n }\n\n if (isAgeRequired && dateOfBirth) {\n body.attributes.dob_day = dateOfBirth.getDate()\n body.attributes.dob_month = dateOfBirth.getMonth() + 1\n body.attributes.dob_year = dateOfBirth.getFullYear()\n }\n\n return body\n }\n\n const getCheckoutBody = (): ICheckoutBody => {\n const parsedTicketHolders: ICheckoutTicketHolder[] = []\n\n if (config.shouldHideTicketHolderSectionOnSingleTicket && numberOfTicketHolders) {\n parsedTicketHolders.push({\n first_name: firstName,\n last_name: lastName,\n phone: phone,\n email: email,\n })\n } else {\n for (let i = 0; i <= numberOfTicketHolders! - 1; i++) {\n const individualHolder = {\n first_name: ticketHoldersData[i]?.firstName || '',\n last_name: ticketHoldersData[i]?.lastName || '',\n phone: ticketHoldersData[i]?.phone || '',\n email: ticketHoldersData[i]?.email || '',\n }\n parsedTicketHolders.push(individualHolder)\n }\n }\n\n const formattedPhone = isPhoneRequired ? phone : emptyPhone(phone)\n\n const checkoutBody: ICheckoutBody = isTicketFree\n ? {\n attributes: {\n confirm_email: emailConfirmation,\n email: email,\n first_name: firstName,\n last_name: lastName,\n password: password,\n phone: formattedPhone,\n ticket_holders: parsedTicketHolders,\n ttf_opt_in: isSubToTicketFairy,\n brand_opt_in: isSubToBrand,\n },\n }\n : {\n attributes: {\n city: city,\n confirm_email: emailConfirmation,\n country: parseInt(selectedCountry!.value as string, 10),\n email: email,\n first_name: firstName,\n last_name: lastName,\n password: password,\n phone: formattedPhone,\n state: parseInt(selectedState!.value as string, 10),\n street_address: street,\n zip: postalCode,\n ticket_holders: parsedTicketHolders,\n ttf_opt_in: isSubToTicketFairy,\n brand_opt_in: isSubToBrand,\n },\n }\n\n if (isAgeRequired && dateOfBirth) {\n checkoutBody.attributes.dob_day = dateOfBirth.getDate()\n checkoutBody.attributes.dob_month = dateOfBirth.getMonth() + 1\n checkoutBody.attributes.dob_year = dateOfBirth.getFullYear()\n }\n\n if (checkoutBody.attributes.phone === undefined) {\n delete checkoutBody.attributes.phone\n }\n\n return checkoutBody\n }\n\n const getCheckoutBodyWhenSkipping = ({\n userProfile,\n ticketsQuantity,\n }: {\n userProfile: IUserProfilePublic\n ticketsQuantity: number\n }): ICheckoutBody => {\n const parsedTicketHolders: ICheckoutTicketHolder[] = []\n const hFirstName = userProfile.firstName\n const hLastName = userProfile.lastName\n const hPhone = userProfile.phone\n const hEmail = userProfile.email\n\n for (let i = 0; i <= ticketsQuantity - 1; i++) {\n const individualHolder = i\n ? {\n first_name: '',\n last_name: '',\n phone: '',\n email: '',\n }\n : {\n first_name: hFirstName,\n last_name: hLastName,\n phone: hPhone,\n email: hEmail,\n }\n\n parsedTicketHolders.push(individualHolder)\n }\n\n const checkoutBody: ICheckoutBody = isTicketFree\n ? {\n attributes: {\n confirm_email: userProfile.email,\n email: userProfile.email,\n first_name: userProfile.firstName,\n last_name: userProfile.lastName,\n phone: userProfile.phone,\n ticket_holders: parsedTicketHolders,\n ttf_opt_in: isSubToTicketFairy,\n brand_opt_in: isSubToBrand,\n password: password,\n },\n }\n : {\n attributes: {\n city: userProfile.city,\n confirm_email: userProfile.email,\n country: parseInt(userProfile.countryId, 10),\n email: userProfile.email,\n first_name: userProfile.firstName,\n last_name: userProfile.lastName,\n phone: userProfile.phone,\n state: parseInt(userProfile.stateId, 10),\n street_address: userProfile.streetAddress,\n zip: userProfile.zipCode,\n ticket_holders: parsedTicketHolders,\n ttf_opt_in: isSubToTicketFairy,\n brand_opt_in: isSubToBrand,\n password: password,\n },\n }\n\n if (checkoutBody.attributes.phone === undefined) {\n delete checkoutBody.attributes.phone\n }\n\n return checkoutBody\n }\n\n const onSubmit = async () => {\n showErrorMessages({\n firstName: firstName,\n lastName: lastName,\n email: email,\n confirmEmail: emailConfirmation,\n password: password,\n confirmPassword: passwordConfirmation,\n street: street,\n city: city,\n selectedCountry: selectedCountry,\n selectedState: selectedState,\n postalCode: postalCode,\n dateOfBirth: dateOfBirth,\n phoneNumber: phone,\n isRegistering: !loggedUserFirstName && !storedToken.current,\n ticketHolderData: ticketHoldersData,\n })\n\n const isBasicDataValid = checkBasicDataValid()\n const isExtraDataValidErrors = checkExtraDataValid()\n\n if (isExtraDataValidErrors || !isBasicDataValid) {\n return\n }\n\n if (loggedUserFirstName && storedToken.current) {\n await performCheckout()\n } else {\n await performNewUserRegister()\n }\n }\n //#endregion\n\n const setCountryByEvent = async () => {\n const eventCountry = await getData(LocalStorageKeys.EVENT_COUNTRY)\n\n if (!eventCountry) {\n return\n }\n\n if (countries.length > 1 && eventCountry) {\n const selectedCountryItem = _find(countries, (item) => {\n const stringValue = item.code as string\n return stringValue.toUpperCase() === eventCountry?.toUpperCase()\n })\n setSelectedCountry(selectedCountryItem)\n }\n }\n\n //#region Fetch Initial Data\n const fetchData = async () => {\n if (!billingCoreRef.current) {\n onFetchCartError?.({ message: 'BillingCoreRef not initialized' })\n return showAlert('BillingCoreRef not initialized')\n }\n\n setIsLoading(true)\n\n let usrPrfl: IUserProfile | undefined\n const usrTkn = await getData(LocalStorageKeys.ACCESS_TOKEN)\n let skippingStatusInner: SkippingStatusType\n\n const { countriesData, countriesError } =\n await billingCoreRef.current.getCountries()\n\n if (countriesError) {\n setSkippingStatus('fail')\n setIsLoading(false)\n onFetchCountriesError?.(countriesError)\n return showAlert(countriesError.message || 'Error fetching countries')\n }\n\n onFetchCountriesSuccess?.(countriesData!)\n\n const parsedCountries: IDropdownItem[] = _map(countriesData, (item) => {\n return { label: item.name, value: item.id, code: item.code }\n })\n\n if (usrTkn) {\n storedToken.current = usrTkn\n const { userProfileError, userProfileData } =\n await billingCoreRef.current.getUserProfile()\n\n if (userProfileError || !userProfileData) {\n setSkippingStatus('fail')\n setIsLoading(false)\n onFetchUserProfileError?.(userProfileError!)\n\n return showAlert(userProfileError?.message || 'Error fetching user profile')\n }\n\n onFetchUserProfileSuccess?.({\n firstName: userProfileData.firstName,\n lastName: userProfileData.lastName,\n })\n\n usrPrfl = userProfileData\n } else {\n skippingStatusInner = 'fail'\n parsedCountries.unshift({\n value: '-1',\n label: texts?.form?.country || 'Country',\n code: '__',\n })\n setSelectedCountry({\n value: '-1',\n label: texts?.form?.country || 'Country',\n code: '__',\n })\n }\n\n const { cartData, cartError } = await billingCoreRef.current.getCart()\n\n if (cartError || !cartData) {\n setSkippingStatus('fail')\n setIsLoading(false)\n onFetchCartError?.(cartError || { message: 'Error fetching cart' })\n return showAlert(cartError?.message || 'Error fetching cart')\n }\n\n onFetchCartSuccess?.()\n\n if (skippingStatusInner === 'fail') {\n setSkippingStatus('fail')\n } else {\n setSkippingStatus(getSkippingStatus(cartData.quantity))\n }\n\n setNumberOfTicketHolders(cartData.quantity)\n setIsSubToBrand(cartData.isMarketingOptedIn)\n setIsSubToTicketFairy(cartData.isTfOptIn || false)\n setIsTtfCheckboxHidden(cartData.isTfOptInHidden || false)\n\n if (cartData.expiresAt) {\n setSecondsLeft(cartData.expiresAt)\n }\n\n const tHolders: ITicketHolderField[] = []\n for (let i = 0; i < cartData.quantity; i++) {\n tHolders.push({\n firstName: i === 0 && usrPrfl ? usrPrfl.firstName : '',\n lastName: i === 0 && usrPrfl ? usrPrfl.lastName : '',\n email: i === 0 && usrPrfl ? usrPrfl.email : '',\n phone: i === 0 && usrPrfl ? usrPrfl.phone : '',\n firstNameError: '',\n lastNameError: '',\n })\n }\n\n let phoneCountry = 'US'\n let phoneCountryDialCode = '+1'\n const eventCountry = await getData(LocalStorageKeys.EVENT_COUNTRY)\n\n if (eventCountry) {\n phoneCountry = eventCountry.toUpperCase()\n phoneCountryDialCode = getCountryDialCode(phoneCountry)\n } else {\n try {\n const deviceCountry = await DeviceCountry.getCountryCode(TYPE_ANY)\n phoneCountry = deviceCountry.code.toUpperCase()\n phoneCountryDialCode = getCountryDialCode(phoneCountry)\n } catch (err) {\n phoneCountry = 'US'\n }\n }\n\n if (usrPrfl) {\n if (!isPhoneHidden && isPhoneRequired) {\n if (!checkIsStoredPhoneNumberFormat(usrPrfl.phone)) {\n setPhoneError(\n texts?.invalidPhoneNumberError || 'Please enter a valid phone number'\n )\n skippingStatusInner = 'fail'\n setSkippingStatus('fail')\n setIsLoading(false)\n } else {\n // We can perform Checkout process since phone is valid\n if (!isBillingRequired && usrTkn && cartData) {\n const checkoutBody: ICheckoutBody = getCheckoutBodyWhenSkipping({\n userProfile: usrPrfl,\n ticketsQuantity: cartData.quantity,\n })\n return await performCheckout(checkoutBody)\n } else {\n if (skippingStatusInner === 'skipping') {\n setSkippingStatus('fail')\n }\n }\n }\n } else {\n // We can perform Checkout process since phone is valid\n if (!isBillingRequired && usrTkn && cartData) {\n const checkoutBody: ICheckoutBody = getCheckoutBodyWhenSkipping({\n userProfile: usrPrfl,\n ticketsQuantity: cartData.quantity,\n })\n return await performCheckout(checkoutBody)\n } else {\n if (skippingStatusInner === 'skipping') {\n setSkippingStatus('fail')\n }\n }\n }\n\n const userPhone = usrPrfl.phone === null ? phoneCountryDialCode : usrPrfl.phone\n\n if (userPhone.length <= 5) {\n phoneCountryCode.current = userPhone\n }\n\n handleSetFormDataFromUserProfile({\n ...usrPrfl,\n phone: userPhone,\n })\n } else {\n // There is no user profile data\n phoneCountryCode.current = phoneCountryDialCode\n setPhone(phoneCountryDialCode)\n }\n\n setCountries(parsedCountries)\n setTicketHoldersData(tHolders)\n setIsSubmittingData(false)\n setIsLoading(false)\n }\n //#endregion Fetch Initial Data\n\n //#region Effects\n useEffect(() => {\n handleOnLoadingChange(isLoading)\n }, [isLoading, handleOnLoadingChange])\n\n useEffect(() => {\n handleOnSkippingStatusChange(skippingStatus)\n }, [handleOnSkippingStatusChange, skippingStatus])\n\n useEffect(() => {\n if (countryId) {\n if (countries.length > 1) {\n const selectedCountryItem = _find(countries, (item) => item.value === countryId)\n setSelectedCountry(selectedCountryItem)\n }\n } else {\n setCountryByEvent()\n }\n }, [countries, countryId])\n\n useEffect(() => {\n const getStates = async () => {\n if (!selectedCountry) {\n return\n }\n\n if (!billingCoreRef.current) {\n onFetchCartError?.({ message: 'BillingCoreRef not initialized' })\n return showAlert('BillingCoreRef not initialized')\n }\n\n const { statesData, statesError } = await billingCoreRef.current.getStates(\n selectedCountry.value.toString()\n )\n\n if (statesError) {\n onFetchStatesError?.(statesError!)\n return showAlert(statesError?.message || 'Error fetching states')\n }\n\n const parsedStates: IDropdownItem[] = _map(statesData, (item, index) => {\n return { label: item, value: index }\n })\n\n onFetchStatesSuccess?.()\n setStates(parsedStates)\n }\n\n if (selectedCountry && selectedCountry.value !== '-1') {\n getStates()\n }\n }, [selectedCountry])\n\n useEffect(() => {\n if (states.length > 1 && stateId) {\n const selectedStateItem = _find(states, (item) => item.value === stateId)\n if (!selectedStateItem) {\n return setSelectedState({\n value: '-1',\n label: texts?.form?.state || 'State/County',\n })\n }\n setSelectedState(selectedStateItem)\n } else {\n setSelectedState({\n value: '-1',\n label: texts?.form?.state || 'State/County',\n })\n }\n }, [stateId, states])\n\n useEffect(() => {\n setCountries([\n {\n value: '-1',\n label: texts?.form?.country || 'Country',\n },\n ])\n setStates([\n {\n value: '-1',\n label: texts?.form?.state || 'State/County',\n },\n ])\n fetchData()\n }, [])\n //#endregion\n\n const isDataValid = checkBasicDataValid()\n\n const isButtonDisabled = config.isCheckoutAlwaysButtonEnabled ? false : !isDataValid\n\n //#region RENDER\n const renderTicketHolders = () => {\n if (!numberOfTicketHolders || !holderLabels || ticketHoldersData.length === 0) {\n return null\n }\n\n const tHolders = []\n for (let i = 0; i < numberOfTicketHolders; i++) {\n const thItemTitle = texts?.form?.ticketHolderItem || 'Ticket Holder'\n tHolders.push(\n <View key={`ticketHolder.${i}`}>\n <Text style={styles?.ticketHolderItemHeader}>\n {thItemTitle} {i + 1}\n </Text>\n <Input\n label={holderLabels.firstName}\n value={ticketHoldersData[i].firstName}\n onChangeText={(text) => {\n const copyTicketHolders = [...ticketHoldersData]\n copyTicketHolders[i].firstName = text\n copyTicketHolders[i].firstNameError = validateEmpty(text)\n\n setTicketHoldersData(copyTicketHolders)\n }}\n error={ticketHoldersData[i].firstNameError}\n styles={styles?.inputStyles}\n />\n <Input\n label={holderLabels.lastName}\n value={ticketHoldersData[i].lastName}\n onChangeText={(text) => {\n const copyTicketHolders = [...ticketHoldersData]\n copyTicketHolders[i].lastName = text\n copyTicketHolders[i].lastNameError = validateEmpty(text)\n\n setTicketHoldersData(copyTicketHolders)\n }}\n error={ticketHoldersData[i].lastNameError}\n styles={styles?.inputStyles}\n />\n <Input\n label={holderLabels.email}\n value={ticketHoldersData[i].email}\n onChangeText={(text) => {\n const copyTicketHolders = [...ticketHoldersData]\n copyTicketHolders[i].email = text\n setTicketHoldersData(copyTicketHolders)\n }}\n keyboardType=\"email-address\"\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n />\n <Input\n label={holderLabels.phone}\n value={ticketHoldersData[i].phone}\n onChangeText={(text) => {\n const copyTicketHolders = [...ticketHoldersData]\n copyTicketHolders[i].phone = text\n setTicketHoldersData(copyTicketHolders)\n }}\n keyboardType=\"phone-pad\"\n styles={styles?.inputStyles}\n />\n </View>\n )\n }\n\n return (\n <>\n <Text style={styles?.ticketHoldersTitle}>\n {texts?.form?.ticketHoldersTitle || 'Ticket Holders'}\n </Text>\n {tHolders}\n </>\n )\n }\n\n const renderCheckingOut = () => {\n const skippingStyles = skipBillingConfig?.styles\n return (\n <View style={[s.skippingRootContainer, skippingStyles?.rootContainer]}>\n <View style={[s.skippingDialogContainer, skippingStyles?.dialogContainer]}>\n <Image\n source={skipBillingConfig?.brandImage || R.images.brand}\n style={[s.skippingBrandImage, skippingStyles?.brandImage]}\n />\n <Text style={[s.skippingMessage, skippingStyles?.text]}>\n {texts?.skippingMessage || 'Checking out...'}\n </Text>\n {!!skipBillingConfig?.isActivityIndicatorVisible && (\n <ActivityIndicator\n color={skippingStyles?.activityIndicator?.color || R.colors.black}\n size={skippingStyles?.activityIndicator?.size || 'large'}\n />\n )}\n </View>\n </View>\n )\n }\n\n const renderContent = () => (\n <>\n <KeyboardAwareScrollView extraScrollHeight={32}>\n <View style={styles?.rootContainer}>\n <Login\n onLoginSuccessful={handleOnLoginSuccess}\n onLoginError={handleOnLoginError}\n onLogoutSuccess={handleOnLogoutSuccess}\n onLogoutError={onLogoutError}\n isLoginDialogVisible={isLoginDialogVisible}\n showLoginDialog={showLoginDialog}\n hideLoginDialog={hideLoginDialog}\n userFirstName={loggedUserFirstName}\n texts={{ ...texts?.loginTexts, message: loginMessage }}\n styles={styles?.loginStyles}\n brandImages={loginBrandImages}\n />\n <Text style={styles?.screenTitle}>\n {texts?.form?.getYourTicketsTitle || 'Get Your Tickets'}\n </Text>\n\n <Input\n label={texts?.form?.firstName || 'First name'}\n value={firstName}\n onChangeText={handleOnFirstNameChanged}\n error={firstNameError || firstNameErrorState}\n styles={styles?.inputStyles}\n />\n <Input\n label={texts?.form?.lastName || 'Last name'}\n value={lastName}\n onChangeText={handleOnLastNameChanged}\n error={lastNameError || lastNameErrorState}\n styles={styles?.inputStyles}\n />\n\n <Text style={styles?.texts}>\n {texts?.form?.emailsAdvice ||\n `IMPORTANT: Please double check that your email address is correct.\\nIt's where we send your confirmation and e-tickets to!`}\n </Text>\n\n <Input\n label={texts?.form?.email || 'Email'}\n value={email}\n onChangeText={handleOnEmailChanged}\n keyboardType=\"email-address\"\n error={emailError || emailErrorState}\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n />\n <Input\n label={texts?.form?.confirmEmail || 'Confirm email'}\n value={emailConfirmation}\n onChangeText={handleOnEmailConfirmationChanged}\n keyboardType=\"email-address\"\n error={confirmEmailError || emailConfirmationErrorState}\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n />\n {isAgeRequired && (\n <DatePicker\n text={texts?.form?.dateOfBirth || 'Date of Birth'}\n onSelectDate={handleOnSelectDate}\n selectedDate={dateOfBirth}\n styles={styles?.datePicker}\n error={dateOfBirthError}\n />\n )}\n {!loggedUserFirstName && (\n <>\n <Text style={styles?.passwordTitle}>\n {texts?.form?.choosePassword ||\n 'Choose a password for your new TICKETFAIRY account'}\n </Text>\n <Input\n label={texts?.form?.password || 'Password'}\n isSecure\n onChangeText={handleOnPasswordChanged}\n error={passwordError || passwordErrorState}\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n textContentType=\"oneTimeCode\"\n />\n <Input\n label={texts?.form?.confirmPassword || 'Confirm password'}\n isSecure\n onChangeText={handleOnConfirmPasswordChanged}\n error={confirmPasswordError || confirmPasswordErrorState}\n styles={styles?.inputStyles}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n textContentType=\"oneTimeCode\"\n />\n </>\n )}\n\n {!isPhoneHidden && (\n <PhoneInput\n phoneNumber={phone}\n onChangePhoneNumber={handleOnChangePhoneNumber}\n styles={styles?.phoneInputStyles}\n error={phoneError}\n texts={{\n label: phoneLabel,\n ...texts?.form?.phoneInput,\n }}\n />\n )}\n\n {!isTicketFree && (\n <>\n <Input\n label={addressLabel}\n value={street}\n onChangeText={handleOnStreetChanged}\n error={streetError || streetErrorState}\n styles={styles?.inputStyles}\n />\n <Input\n label={texts?.form?.city || 'City'}\n value={city}\n onChangeText={handleOnCityChanged}\n error={cityError || cityErrorState}\n styles={styles?.inputStyles}\n />\n <DropdownMaterial\n items={countries}\n onSelectItem={handleOnCountryChanged}\n selectedOption={selectedCountry}\n styles={styles?.dropdownMaterialStyles}\n materialInputProps={{\n label: texts?.form?.country || 'Country',\n error: countryErrorState,\n }}\n />\n <Input\n label={texts?.form?.zipCode || 'Postal Code / Zip Code'}\n value={postalCode}\n onChangeText={handleOnPostalCodeChanged}\n error={postalCodeError || postalCodeErrorState}\n styles={styles?.inputStyles}\n />\n <DropdownMaterial\n items={states}\n onSelectItem={handleOnStateChanged}\n selectedOption={selectedState}\n styles={styles?.dropdownMaterialStyles}\n materialInputProps={{\n label: texts?.form?.state || 'State',\n error: stateErrorState,\n }}\n />\n </>\n )}\n <Checkbox\n onPress={handleIsSubToBrandToggle}\n text={brandCheckBoxText}\n isActive={isSubToBrand}\n styles={styles?.checkboxStyles}\n />\n\n {!isTtfCheckboxHidden && (\n <Checkbox\n onPress={handleIsSubToTicketFairyToggle}\n isActive={isSubToTicketFairy}\n customTextComp={\n <Text\n style={[\n styles?.customCheckbox?.text,\n !!ttfPrivacyPolicyError && {\n color: styles?.customCheckbox?.errorColor,\n },\n ]}\n >\n {texts?.form?.isSubToTicketFairy ||\n `I agree that The Ticket Fairy may use the personal data that have provided for marketing purposes, such as recommending events that I might be interested in, in accordance with its `}\n <Text\n style={styles?.privacyPolicyLinkStyle}\n onPress={handleOpenPrivacyLink}\n >\n {texts?.form?.privacyPolicy || 'Privacy Policy'}\n </Text>\n .\n </Text>\n }\n styles={{ error: s.ttfPolicyError, ...styles?.checkboxStyles }}\n error={ttfPrivacyPolicyError}\n />\n )}\n\n {renderTicketHolders()}\n\n <Button\n onPress={onSubmit}\n text={texts?.checkoutButton || 'CHECKOUT'}\n isDisabled={isButtonDisabled}\n isLoading={isSubmittingData}\n styles={\n isButtonDisabled\n ? {\n button: s.submitButtonDisabled,\n ...styles?.checkoutButtonDisabled,\n }\n : {\n container: [s.submitButton, styles?.checkoutButton?.container],\n text: styles?.checkoutButton?.text,\n button: styles?.checkoutButton?.button,\n }\n }\n />\n </View>\n {areLoadingIndicatorsEnabled && isLoading && <Loading />}\n </KeyboardAwareScrollView>\n <CartTimer\n secondsLeft={secondsLeft}\n styles={styles?.cartTimer}\n texts={texts?.cartTimer}\n shouldNotMinimize={shouldCartTimerNotMinimizeOnTap}\n />\n </>\n )\n\n return (\n <BillingCore\n ref={billingCoreRef}\n onSecondsLeftChange={setSecondsLeft}\n onCartExpired={onCartExpired}\n >\n <SessionHandle ref={sessionHandleRef}>\n {skippingStatus === 'skipping' && areLoadingIndicatorsEnabled\n ? renderCheckingOut()\n : renderContent()}\n </SessionHandle>\n </BillingCore>\n )\n //#endregion\n }\n)\n\nexport default Billing\n","import _find from 'lodash/find'\n\nexport const getCountryDialCode = (country: string) =>\n _find(countryCodes, (item) => item.code.toUpperCase() === country.toUpperCase())\n ?.dial_code || '+1'\n\nexport const countryCodes = [\n {\n name: {\n en: 'Afghanistan',\n ru: 'Афганистан',\n pl: 'Afganistan',\n ua: 'Афганістан',\n cz: 'Afghánistán',\n by: '',\n pt: 'Afeganistão',\n },\n dial_code: '+93',\n code: 'AF',\n flag: '🇦🇫',\n },\n {\n name: {\n en: 'Albania',\n ru: 'Албания',\n pl: 'Albania',\n ua: 'Албанія',\n cz: 'Albánie',\n by: '',\n pt: 'Albânia',\n },\n dial_code: '+355',\n code: 'AL',\n flag: '🇦🇱',\n },\n {\n name: {\n en: 'Algeria',\n ru: 'Алжир',\n pl: 'Algieria',\n ua: 'Алжир',\n cz: 'Alžírsko',\n by: '',\n pt: 'Argélia',\n },\n dial_code: '+213',\n code: 'DZ',\n flag: '🇩🇿',\n },\n {\n name: {\n en: 'American Samoa',\n ru: 'Американское Самоа',\n pl: 'Samoa Amerykańskie',\n ua: 'Американське Самоа',\n cz: 'Americká Samoa',\n by: '',\n pt: 'Samoa',\n },\n dial_code: '+1684',\n code: 'AS',\n flag: '🇦🇸',\n },\n {\n name: {\n en: 'Andorra',\n ru: 'Андорра',\n pl: 'Andora',\n ua: 'Андорра',\n cz: 'Andorra',\n by: '',\n pt: 'Andorra',\n },\n dial_code: '+376',\n code: 'AD',\n flag: '🇦🇩',\n },\n {\n name: {\n en: 'Angola',\n ru: 'Ангола',\n pl: 'Angola',\n ua: 'Ангола',\n cz: 'Angola',\n by: '',\n pt: 'Angola',\n },\n dial_code: '+244',\n code: 'AO',\n flag: '🇦🇴',\n },\n {\n name: {\n en: 'Anguilla',\n ru: 'Ангилья',\n pl: 'Anguilla',\n ua: 'Ангілья',\n cz: 'Anguilla',\n by: '',\n pt: 'Anguila',\n },\n dial_code: '+1264',\n code: 'AI',\n flag: '🇦🇮',\n },\n {\n name: {\n en: 'Antarctica',\n ru: 'Антарктида',\n pl: 'Antarktyda',\n ua: 'Антарктида',\n cz: 'Antarktida',\n by: '',\n pt: 'Antarctica',\n },\n dial_code: '+672',\n code: 'AQ',\n flag: '🇦🇶',\n },\n {\n name: {\n en: 'Antigua and Barbuda',\n ru: 'Антигуа и Барбуда',\n pl: 'Antigua i Barbuda',\n ua: 'Антигуа та Барбуда',\n cz: 'Antigua a Barbuda',\n by: '',\n pt: 'Antiga e Barbuda',\n },\n dial_code: '+1268',\n code: 'AG',\n flag: '🇦🇬',\n },\n {\n name: {\n en: 'Argentina',\n ru: 'Аргентина',\n pl: 'Argentyna',\n ua: 'Аргентина',\n cz: 'Argentina',\n by: '',\n pt: 'Argentina',\n },\n dial_code: '+54',\n code: 'AR',\n flag: '🇦🇷',\n },\n {\n name: {\n en: 'Armenia',\n ru: 'Армения',\n pl: 'Armenia',\n ua: 'Вірменія',\n cz: 'Arménie',\n by: '',\n pt: 'Arménia',\n },\n dial_code: '+374',\n code: 'AM',\n flag: '🇦🇲',\n },\n {\n name: {\n en: 'Aruba',\n ru: 'Аруба',\n pl: 'Aruba',\n ua: 'Аруба',\n cz: 'Aruba',\n by: '',\n pt: 'Aruba',\n },\n dial_code: '+297',\n code: 'AW',\n flag: '🇦🇼',\n },\n {\n name: {\n en: 'Australia',\n ru: 'Австралия',\n pl: 'Australia',\n ua: 'Австралія',\n cz: 'Austrálie',\n by: '',\n pt: 'Austrália',\n },\n dial_code: '+61',\n code: 'AU',\n flag: '🇦🇺',\n },\n {\n name: {\n en: 'Austria',\n ru: 'Австрия',\n pl: 'Austria',\n ua: 'Австрія',\n cz: 'Rakousko',\n by: '',\n pt: 'Áustria',\n },\n dial_code: '+43',\n code: 'AT',\n flag: '🇦🇹',\n },\n {\n name: {\n en: 'Azerbaijan',\n ru: 'Азербайджан',\n pl: 'Azerbejdżan',\n ua: 'Азербайджан',\n cz: 'Ázerbajdžán',\n by: '',\n pt: 'Azerbaijão',\n },\n dial_code: '+994',\n code: 'AZ',\n flag: '🇦🇿',\n },\n {\n name: {\n en: 'Bahamas',\n ru: 'Багамские Острова',\n pl: 'Bahamy',\n ua: 'Багамські острови',\n cz: 'Bahamy',\n by: '',\n pt: 'Baamas',\n },\n dial_code: '+1242',\n code: 'BS',\n flag: '🇧🇸',\n },\n {\n name: {\n en: 'Bahrain',\n ru: 'Бахрейн',\n pl: 'Bahrajn',\n ua: 'Бахрейн',\n cz: 'Bahrajn',\n by: '',\n pt: 'Barém',\n },\n dial_code: '+973',\n code: 'BH',\n flag: '🇧🇭',\n },\n {\n name: {\n en: 'Bangladesh',\n ru: 'Бангладеш',\n pl: 'Bangladesz',\n ua: 'Бангладеш',\n cz: 'Bangladéš',\n by: '',\n pt: 'Bangladeche',\n },\n dial_code: '+880',\n code: 'BD',\n flag: '🇧🇩',\n },\n {\n name: {\n en: 'Barbados',\n ru: 'Барбадос',\n pl: 'Barbados',\n ua: 'Барбадос',\n cz: 'Barbados',\n by: '',\n pt: 'Barbados',\n },\n dial_code: '+1246',\n code: 'BB',\n flag: '🇧🇧',\n },\n {\n name: {\n en: 'Belarus',\n ru: 'Белоруссия',\n pl: 'Białoruś',\n ua: 'Білорусь',\n cz: 'Bělorusko',\n by: '',\n pt: 'Bielorrússia',\n },\n dial_code: '+375',\n code: 'BY',\n flag: '🇧🇾',\n },\n {\n name: {\n en: 'Belgium',\n ru: 'Бельгия',\n pl: 'Belgia',\n ua: 'Бельгія',\n cz: 'Belgie',\n by: '',\n pt: 'Bélgica',\n },\n dial_code: '+32',\n code: 'BE',\n flag: '🇧🇪',\n },\n {\n name: {\n en: 'Belize',\n ru: 'Белиз',\n pl: 'Belize',\n ua: 'Беліз',\n cz: 'Belize',\n by: '',\n pt: 'Belize',\n },\n dial_code: '+501',\n code: 'BZ',\n flag: '🇧🇿',\n },\n {\n name: {\n en: 'Benin',\n ru: 'Бенин',\n pl: 'Benin',\n ua: 'Бенін',\n cz: 'Benin',\n by: '',\n pt: 'Benim',\n },\n dial_code: '+229',\n code: 'BJ',\n flag: '🇧🇯',\n },\n {\n name: {\n en: 'Bermuda',\n ru: 'Бермуды',\n pl: 'Bermudy',\n ua: 'Бермуди',\n cz: 'Bermudy',\n by: '',\n pt: 'Bermudas',\n },\n dial_code: '+1441',\n code: 'BM',\n flag: '🇧🇲',\n },\n {\n name: {\n en: 'Bhutan',\n ru: 'Бутан',\n pl: 'Bhutan',\n ua: 'Бутан',\n cz: 'Bhútán',\n by: '',\n pt: 'Butão',\n },\n dial_code: '+975',\n code: 'BT',\n flag: '🇧🇹',\n },\n {\n name: {\n en: 'Bolivia',\n ru: 'Боливия',\n pl: 'Boliwia',\n ua: 'Болівія',\n cz: 'Bolívie',\n by: '',\n pt: 'Bolívia',\n },\n dial_code: '+591',\n code: 'BO',\n flag: '🇧🇴',\n },\n {\n name: {\n en: 'Bosnia and Herzegovina',\n ru: 'Босния и Герцеговина',\n pl: 'Bośnia i Hercegowina',\n ua: 'Боснія і Герцеговина',\n cz: 'Bosna a Hercegovina',\n by: '',\n pt: 'Bósnia e Herzegovina',\n },\n dial_code: '+387',\n code: 'BA',\n flag: '🇧🇦',\n },\n {\n name: {\n en: 'Botswana',\n ru: 'Ботсвана',\n pl: 'Botswana',\n ua: 'Ботсвана',\n cz: 'Botswana',\n by: '',\n pt: 'Botsuana',\n },\n dial_code: '+267',\n code: 'BW',\n flag: '🇧🇼',\n },\n {\n name: {\n en: 'Brazil',\n ru: 'Бразилия',\n pl: 'Brazylia',\n ua: 'Бразилія',\n cz: 'Brazílie',\n by: '',\n pt: 'Brasil',\n },\n dial_code: '+55',\n code: 'BR',\n flag: '🇧🇷',\n },\n {\n name: {\n en: 'British Indian Ocean Territory',\n ru: 'Британская территория Индийского океана',\n pl: 'Brytyjskie Terytorium Oceanu Indyjskiego',\n ua: 'Британська територія в Індійському океані',\n cz: 'Britské území v Indickém oceánu',\n by: '',\n pt: 'Território Britânico do Oceano Índico',\n },\n dial_code: '+246',\n code: 'IO',\n flag: '🇮🇴',\n },\n {\n name: {\n en: 'Brunei Darussalam',\n ru: 'Бруней-Даруссалам',\n pl: 'Brunei Darussalam',\n ua: 'Бруней-Даруссалам',\n cz: 'Brunej Darussalam',\n by: '',\n pt: 'Brunei',\n },\n dial_code: '+673',\n code: 'BN',\n flag: '🇧🇳',\n },\n {\n name: {\n en: 'Bulgaria',\n ru: 'Болгария',\n pl: 'Bułgaria',\n ua: 'Болгарія',\n cz: 'Bulharsko',\n by: '',\n pt: 'Bulgária',\n },\n dial_code: '+359',\n code: 'BG',\n flag: '🇧🇬',\n },\n {\n name: {\n en: 'Burkina Faso',\n ru: 'Буркина-Фасо',\n pl: 'Burkina Faso',\n ua: 'Буркіна-Фасо',\n cz: 'Burkina Faso',\n by: '',\n pt: 'Burquina Faso',\n },\n dial_code: '+226',\n code: 'BF',\n flag: '🇧🇫',\n },\n {\n name: {\n en: 'Burundi',\n ru: 'Бурунди',\n pl: 'Burundi',\n ua: 'Бурунді',\n cz: 'Burundi',\n by: '',\n pt: 'Burúndi',\n },\n dial_code: '+257',\n code: 'BI',\n flag: '🇧🇮',\n },\n {\n name: {\n en: 'Cambodia',\n ru: 'Камбоджа',\n pl: 'Kambodża',\n ua: 'Камбоджа',\n cz: 'Kambodža',\n by: '',\n pt: 'Camboja',\n },\n dial_code: '+855',\n code: 'KH',\n flag: '🇰🇭',\n },\n {\n name: {\n en: 'Cameroon',\n ru: 'Камерун',\n pl: 'Kamerun',\n ua: 'Камерун',\n cz: 'Kamerun',\n by: '',\n pt: 'Camarões',\n },\n dial_code: '+237',\n code: 'CM',\n flag: '🇨🇲',\n },\n {\n name: {\n en: 'Canada',\n ru: 'Канада',\n pl: 'Kanada',\n ua: 'Канада',\n cz: 'Kanada',\n by: '',\n pt: 'Canadá',\n },\n dial_code: '+1',\n code: 'CA',\n flag: '🇨🇦',\n },\n {\n name: {\n en: 'Cape Verde',\n ru: 'Кабо-Верде',\n pl: 'Wyspy Zielonego Przylądka',\n ua: 'Кабо-Верде',\n cz: 'Kapverdy',\n by: '',\n pt: 'Cabo Verde',\n },\n dial_code: '+238',\n code: 'CV',\n flag: '🇨🇻',\n },\n {\n name: {\n en: 'Cayman Islands',\n ru: 'Каймановы острова',\n pl: 'Kajmany',\n ua: 'Кайманові острови',\n cz: 'Kajmanské ostrovy',\n by: '',\n pt: 'Ilhas Caimão',\n },\n dial_code: '+345',\n code: 'KY',\n flag: '🇰🇾',\n },\n {\n name: {\n en: 'Central African Republic',\n ru: 'Центрально-Африканская Республика',\n pl: 'Republika Środkowoafrykańska',\n ua: 'Центральноафриканська Республіка',\n cz: 'Středoafrická republika',\n by: '',\n pt: 'República Centro-Africana',\n },\n dial_code: '+236',\n code: 'CF',\n flag: '🇨🇫',\n },\n {\n name: {\n en: 'Chad',\n ru: 'Чад',\n pl: 'Czad',\n ua: 'Чад',\n cz: 'Čad',\n by: '',\n pt: 'Chade',\n },\n dial_code: '+235',\n code: 'TD',\n flag: '🇹🇩',\n },\n {\n name: {\n en: 'Chile',\n ru: 'Чили',\n pl: 'Chile',\n ua: 'Чилі',\n cz: 'Chile',\n by: '',\n pt: 'Chile',\n },\n dial_code: '+56',\n code: 'CL',\n flag: '🇨🇱',\n },\n {\n name: {\n en: 'China',\n ru: 'Китай',\n pl: 'Chiny',\n ua: 'Китай',\n cz: 'Čína',\n by: '',\n pt: 'China',\n },\n dial_code: '+86',\n code: 'CN',\n flag: '🇨🇳',\n },\n {\n name: {\n en: 'Christmas Island',\n ru: 'Остров Рождества',\n pl: 'Wyspa Bożego Narodzenia',\n ua: 'Острів Різдва',\n cz: 'Vánoční ostrov',\n by: '',\n pt: 'Ilha do Natal',\n },\n dial_code: '+61',\n code: 'CX',\n flag: '🇨🇽',\n },\n {\n name: {\n en: 'Cocos (Keeling) Islands',\n ru: 'Кокосовые (Килинг) острова',\n pl: 'Wyspy Kokosowe (Keelinga)',\n ua: 'Кокосові (Кілінг) острови',\n cz: 'Kokosové (Keelingovy) ostrovy',\n by: '',\n pt: 'Ilhas dos Cocos',\n },\n dial_code: '+61',\n code: 'CC',\n flag: '🇨🇨',\n },\n {\n name: {\n en: 'Colombia',\n ru: 'Колумбия',\n pl: 'Kolumbia',\n ua: 'Колумбія',\n cz: 'Kolumbie',\n by: '',\n pt: 'Colômbia',\n },\n dial_code: '+57',\n code: 'CO',\n flag: '🇨🇴',\n },\n {\n name: {\n en: 'Comoros',\n ru: 'Коморские острова',\n pl: 'Komory',\n ua: 'Коморські острови',\n cz: 'Komory',\n by: '',\n pt: 'Comores',\n },\n dial_code: '+269',\n code: 'KM',\n flag: '🇰🇲',\n },\n {\n name: {\n en: 'Congo',\n ru: 'Конго',\n pl: 'Kongo',\n ua: 'Конго',\n cz: 'Kongo',\n by: '',\n pt: 'Congo-Brazzaville',\n },\n dial_code: '+242',\n code: 'CG',\n flag: '🇨🇬',\n },\n {\n name: {\n en: 'Congo, The Democratic Republic of the',\n ru: 'Конго, Демократическая Республика',\n pl: 'Kongo, Republika Demokratyczna',\n ua: 'Конго, Демократична Республіка',\n cz: 'Kongo, Demokratická Republika',\n by: '',\n pt: 'Congo-Kinshasa',\n },\n dial_code: '+243',\n code: 'CD',\n flag: '🇨🇩',\n },\n {\n name: {\n en: 'Cook Islands',\n ru: 'Острова Кука',\n pl: 'Wyspy Cooka',\n ua: 'Острови Кука',\n cz: 'Cookovy ostrovy',\n by: '',\n pt: 'Ilhas Cook',\n },\n dial_code: '+682',\n code: 'CK',\n flag: '🇨🇰',\n },\n {\n name: {\n en: 'Costa Rica',\n ru: 'Коста-Рика',\n pl: 'Kostaryka',\n ua: 'Коста-Ріка',\n cz: 'Kostarika',\n by: '',\n pt: 'Costa Rica',\n },\n dial_code: '+506',\n code: 'CR',\n flag: '🇨🇷',\n },\n {\n name: {\n en: \"Cote d'Ivoire\",\n ru: \"Кот-д'Ивуар\",\n pl: 'Wybrzeże Kości Słoniowej',\n ua: \"Кот-д'Івуар\",\n cz: 'Pobřeží slonoviny',\n by: '',\n pt: 'Costa do Marfim',\n },\n dial_code: '+225',\n code: 'CI',\n flag: '🇨🇮',\n },\n {\n name: {\n en: 'Croatia',\n ru: 'Хорватия',\n pl: 'Chorwacja',\n ua: 'Хорватія',\n cz: 'Chorvatsko',\n by: '',\n pt: 'Croácia',\n },\n dial_code: '+385',\n code: 'HR',\n flag: '🇭🇷',\n },\n {\n name: {\n en: 'Cuba',\n ru: 'Куба',\n pl: 'Kuba',\n ua: 'Куба',\n cz: 'Kuba',\n by: '',\n pt: 'Cuba',\n },\n dial_code: '+53',\n code: 'CU',\n flag: '🇨🇺',\n },\n {\n name: {\n en: 'Cyprus',\n ru: 'Кипр',\n pl: 'Cypr',\n ua: 'Кіпр',\n cz: 'Kypr',\n by: '',\n pt: 'Chipre',\n },\n dial_code: '+537',\n code: 'CY',\n flag: '🇨🇾',\n },\n {\n name: {\n en: 'Czech Republic',\n ru: 'Чехия',\n pl: 'Republika Czeska',\n ua: 'Чеська Республіка',\n cz: 'Česká republika',\n by: '',\n pt: 'República Checa',\n },\n dial_code: '+420',\n code: 'CZ',\n flag: '🇨🇿',\n },\n {\n name: {\n en: 'Denmark',\n ru: 'Дания',\n pl: 'Dania',\n ua: 'Данія',\n cz: 'Dánsko',\n by: '',\n pt: 'Dinamarca',\n },\n dial_code: '+45',\n code: 'DK',\n flag: '🇩🇰',\n },\n {\n name: {\n en: 'Djibouti',\n ru: 'Джибути',\n pl: 'Dżibuti',\n ua: 'Джибуті',\n cz: 'Džibuti',\n by: '',\n pt: 'Jibuti',\n },\n dial_code: '+253',\n code: 'DJ',\n flag: '🇩🇯',\n },\n {\n name: {\n en: 'Dominica',\n ru: 'Доминика',\n pl: 'Dominika',\n ua: 'Домініка',\n cz: 'Dominika',\n by: '',\n pt: 'Domínica',\n },\n dial_code: '+1767',\n code: 'DM',\n flag: '🇩🇲',\n },\n {\n name: {\n en: 'Dominican Republic',\n ru: 'Доминиканская Респблика',\n pl: 'Republika Dominikany',\n ua: 'Домініканська республіка',\n cz: 'Dominikánská republika',\n by: '',\n pt: 'República Dominicana',\n },\n dial_code: '+1849',\n code: 'DO',\n flag: '🇩🇴',\n },\n {\n name: {\n en: 'Ecuador',\n ru: 'Эквадор',\n pl: 'Ekwador',\n ua: 'Еквадор',\n cz: 'Ekvádor',\n by: '',\n pt: 'Equador',\n },\n dial_code: '+593',\n code: 'EC',\n flag: '🇪🇨',\n },\n {\n name: {\n en: 'Egypt',\n ru: 'Египет',\n pl: 'Egipt',\n ua: 'Єгипет',\n cz: 'Egypt',\n by: '',\n pt: 'Egipto',\n },\n dial_code: '+20',\n code: 'EG',\n flag: '🇪🇬',\n },\n {\n name: {\n en: 'El Salvador',\n ru: 'Сальвадор',\n pl: 'Salwador',\n ua: 'Сальвадор',\n cz: 'El Salvador',\n by: '',\n pt: 'Salvador',\n },\n dial_code: '+503',\n code: 'SV',\n flag: '🇸🇻',\n },\n {\n name: {\n en: 'Equatorial Guinea',\n ru: 'Экваториальная Гвинея',\n pl: 'Gwinea Równikowa',\n ua: 'Екваторіальна Гвінея',\n cz: 'Rovníková Guinea',\n by: '',\n pt: 'Guiné Equatorial',\n },\n dial_code: '+240',\n code: 'GQ',\n flag: '🇬🇶',\n },\n {\n name: {\n en: 'Eritrea',\n ru: 'Эритрея',\n pl: 'Erytrea',\n ua: 'Еритрея',\n cz: 'Eritrea',\n by: '',\n pt: 'Eritreia',\n },\n dial_code: '+291',\n code: 'ER',\n flag: '🇪🇷',\n },\n {\n name: {\n en: 'Estonia',\n ru: 'Эстония',\n pl: 'Estonia',\n ua: 'Естонія',\n cz: 'Estonsko',\n by: '',\n pt: 'Estónia',\n },\n dial_code: '+372',\n code: 'EE',\n flag: '🇪🇪',\n },\n {\n name: {\n en: 'Ethiopia',\n ru: 'Эфиопия',\n pl: 'Etiopia',\n ua: 'Ефіопія',\n cz: 'Etiopie',\n by: '',\n pt: 'Etiópia',\n },\n dial_code: '+251',\n code: 'ET',\n flag: '🇪🇹',\n },\n {\n name: {\n en: 'Falkland Islands (Malvinas)',\n ru: 'Фолклендские острова (Malvinas)',\n pl: 'Falklandy (Malwiny)',\n ua: 'Фолклендські острови (Мальвінські острови)',\n cz: 'Falklandské ostrovy (Malvíny)',\n by: '',\n pt: 'Ilhas Falkland',\n },\n dial_code: '+500',\n code: 'FK',\n flag: '🇫🇰',\n },\n {\n name: {\n en: 'Faroe Islands',\n ru: 'Фарерские острова',\n pl: 'Wyspy Owcze',\n ua: 'Фарерські острови',\n cz: 'Faerské ostrovy',\n by: '',\n pt: 'Faroé',\n },\n dial_code: '+298',\n code: 'FO',\n flag: '🇫🇴',\n },\n {\n name: {\n en: 'Fiji',\n ru: 'Фиджи',\n pl: 'Fidżi',\n ua: 'Фіджі',\n cz: 'Fidži',\n by: '',\n pt: 'Fiji',\n },\n dial_code: '+679',\n code: 'FJ',\n flag: '🇫🇯',\n },\n {\n name: {\n en: 'Finland',\n ru: 'Финляндия',\n pl: 'Finlandia',\n ua: 'Фінляндія',\n cz: 'Finsko',\n by: '',\n pt: 'Finlândia',\n },\n dial_code: '+358',\n code: 'FI',\n flag: '🇫🇮',\n },\n {\n name: {\n en: 'France',\n ru: 'Франция',\n pl: 'Francja',\n ua: 'Франція',\n cz: 'Francie',\n by: '',\n pt: 'França',\n },\n dial_code: '+33',\n code: 'FR',\n flag: '🇫🇷',\n },\n {\n name: {\n en: 'French Guiana',\n ru: 'Французская Гвиана',\n pl: 'Gujana Francuska',\n ua: 'Французька Гвіана',\n cz: 'Francouzská Guyana',\n by: '',\n pt: 'Guiana Francesa',\n },\n dial_code: '+594',\n code: 'GF',\n flag: '🇬🇫',\n },\n {\n name: {\n en: 'French Polynesia',\n ru: 'Французская Полинезия',\n pl: 'Polinezja Francuska',\n ua: 'Французька Полінезія',\n cz: 'Francouzská Polynésie',\n by: '',\n pt: 'Polinésia Francesa',\n },\n dial_code: '+689',\n code: 'PF',\n flag: '🇵🇫',\n },\n {\n name: {\n en: 'Gabon',\n ru: 'Габон',\n pl: 'Gabon',\n ua: 'Габон',\n cz: 'Gabon',\n by: '',\n pt: 'Gabão',\n },\n dial_code: '+241',\n code: 'GA',\n flag: '🇬🇦',\n },\n {\n name: {\n en: 'Gambia',\n ru: 'Гамбия',\n pl: 'Gambia',\n ua: 'Гамбія',\n cz: 'Gambie',\n by: '',\n pt: 'Gâmbia',\n },\n dial_code: '+220',\n code: 'GM',\n flag: '🇬🇲',\n },\n {\n name: {\n en: 'Georgia',\n ru: 'Грузия',\n pl: 'Gruzja',\n ua: 'Грузія',\n cz: 'Gruzie',\n by: '',\n pt: 'Geórgia',\n },\n dial_code: '+995',\n code: 'GE',\n flag: '🇬🇪',\n },\n {\n name: {\n en: 'Germany',\n ru: 'Германия',\n pl: 'Niemcy',\n ua: 'Німеччина',\n cz: 'Německo',\n by: '',\n pt: 'Alemanha',\n },\n dial_code: '+49',\n code: 'DE',\n flag: '🇩🇪',\n },\n {\n name: {\n en: 'Ghana',\n ru: 'Гана',\n pl: 'Ghana',\n ua: 'Гана',\n cz: 'Ghana',\n by: '',\n pt: 'Gana',\n },\n dial_code: '+233',\n code: 'GH',\n flag: '🇬🇭',\n },\n {\n name: {\n en: 'Gibraltar',\n ru: 'Гибралтар',\n pl: 'Gibraltar',\n ua: 'Гібралтар',\n cz: 'Gibraltar',\n by: '',\n pt: 'Gibraltar',\n },\n dial_code: '+350',\n code: 'GI',\n flag: '🇬🇮',\n },\n {\n name: {\n en: 'Greece',\n ru: 'Греция',\n pl: 'Grecja',\n ua: 'Греція',\n cz: 'Řecko',\n by: '',\n pt: 'Grécia',\n },\n dial_code: '+30',\n code: 'GR',\n flag: '🇬🇷',\n },\n {\n name: {\n en: 'Greenland',\n ru: 'Гренландия',\n pl: 'Grenlandia',\n ua: 'Гренландія',\n cz: 'Grenlandia',\n by: '',\n pt: 'Gronelândia',\n },\n dial_code: '+299',\n code: 'GL',\n flag: '🇬🇱',\n },\n {\n name: {\n en: 'Grenada',\n ru: 'Гренада',\n pl: 'Grenada',\n ua: 'Гренада',\n cz: 'Grenada',\n by: '',\n pt: 'Granada',\n },\n dial_code: '+1473',\n code: 'GD',\n flag: '🇬🇩',\n },\n {\n name: {\n en: 'Guadeloupe',\n ru: 'Гваделупа',\n pl: 'Gwadelupa',\n ua: 'Гваделупа',\n cz: 'Guadeloupe',\n by: '',\n pt: 'Guadalupe',\n },\n dial_code: '+590',\n code: 'GP',\n flag: '🇬🇵',\n },\n {\n name: {\n en: 'Guam',\n ru: 'Гуам',\n pl: 'Guam',\n ua: 'Гуам',\n cz: 'Guam',\n by: '',\n pt: 'Guame',\n },\n dial_code: '+1671',\n code: 'GU',\n flag: '🇬🇺',\n },\n {\n name: {\n en: 'Guatemala',\n ru: 'Гватемала',\n pl: 'Gwatemala',\n ua: 'Гватемала',\n cz: 'Guatemala',\n by: '',\n pt: 'Guatemala',\n },\n dial_code: '+502',\n code: 'GT',\n flag: '🇬🇹',\n },\n {\n name: {\n en: 'Guernsey',\n ru: 'Гернси',\n pl: 'Guernsey',\n ua: 'Гернсі',\n cz: 'Guernsey',\n by: '',\n pt: 'Guernsey',\n },\n dial_code: '+44',\n code: 'GG',\n flag: '🇬🇬',\n },\n {\n name: {\n en: 'Guinea',\n ru: 'Гвинея',\n pl: 'Gwinea',\n ua: 'Гвінея',\n cz: 'Guinea',\n by: '',\n pt: 'Guiné',\n },\n dial_code: '+224',\n code: 'GN',\n flag: '🇬🇳',\n },\n {\n name: {\n en: 'Guinea-Bissau',\n ru: 'Гвинея-Бисау',\n pl: 'Gwinea Bissau',\n ua: 'Гвінея-Бісау',\n cz: 'Guinea-Bissau',\n by: '',\n pt: 'Guiné-Bissau',\n },\n dial_code: '+245',\n code: 'GW',\n flag: '🇬🇼',\n },\n {\n name: {\n en: 'Guyana',\n ru: 'Гайана',\n pl: 'Gujana',\n ua: 'Гайана',\n cz: 'Guyana',\n by: '',\n pt: 'Guiana',\n },\n dial_code: '+595',\n code: 'GY',\n flag: '🇬🇾',\n },\n {\n name: {\n en: 'Haiti',\n ru: 'Гаити',\n pl: 'Haiti',\n ua: 'Гаїті',\n cz: 'Haiti',\n by: '',\n pt: 'Haiti',\n },\n dial_code: '+509',\n code: 'HT',\n flag: '🇭🇹',\n },\n {\n name: {\n en: 'Holy See (Vatican City State)',\n ru: 'Святой Престол (Vatican City State)',\n pl: 'Stolica Apostolska (Państwo Watykańskie)',\n ua: 'Святий Престол (Ватикан)',\n cz: 'Svatý stolec (Vatikánský městský stát)',\n by: '',\n pt: 'Vaticano',\n },\n dial_code: '+379',\n code: 'VA',\n flag: '🇻🇦',\n },\n {\n name: {\n en: 'Honduras',\n ru: 'Гондурас',\n pl: 'Honduras',\n ua: 'Гондурас',\n cz: 'Honduras',\n by: '',\n pt: 'Honduras',\n },\n dial_code: '+504',\n code: 'HN',\n flag: '🇭🇳',\n },\n {\n name: {\n en: 'Hong Kong',\n ru: 'Гонконг',\n pl: 'Hongkong',\n ua: 'Гонконг',\n cz: 'Hongkong',\n by: '',\n pt: 'Hong Kong',\n },\n dial_code: '+852',\n code: 'HK',\n flag: '🇭🇰',\n },\n {\n name: {\n en: 'Hungary',\n ru: 'Венгрия',\n pl: 'Węgry',\n ua: 'Угорщина',\n cz: 'Maďarsko',\n by: '',\n pt: 'Hungria',\n },\n dial_code: '+36',\n code: 'HU',\n flag: '🇭🇺',\n },\n {\n name: {\n en: 'Iceland',\n ru: 'Исландия',\n pl: 'Islandia',\n ua: 'Ісландія',\n cz: 'Island',\n by: '',\n pt: 'Islândia',\n },\n dial_code: '+354',\n code: 'IS',\n flag: '🇮🇸',\n },\n {\n name: {\n en: 'India',\n ru: 'Индия',\n pl: 'Indie',\n ua: 'Індія',\n cz: 'Indie',\n by: '',\n pt: 'Índia',\n },\n dial_code: '+91',\n code: 'IN',\n flag: '🇮🇳',\n },\n {\n name: {\n en: 'Indonesia',\n ru: 'Индонезия',\n pl: 'Indonezja',\n ua: 'Індонезія',\n cz: 'Indonésie',\n by: '',\n pt: 'Indonésia',\n },\n dial_code: '+62',\n code: 'ID',\n flag: '🇮🇩',\n },\n {\n name: {\n en: 'Iran, Islamic Republic of',\n ru: 'Иран, Исламская Республика',\n pl: 'Iran, Republika Islamska',\n ua: 'Іран, Ісламська Республіка',\n cz: 'Írán, Islámská Republika',\n by: '',\n pt: 'Irão',\n },\n dial_code: '+98',\n code: 'IR',\n flag: '🇮🇷',\n },\n {\n name: {\n en: 'Iraq',\n ru: 'Ирак',\n pl: 'Irak',\n ua: 'Ірак',\n cz: 'Irák',\n by: '',\n pt: 'Iraque',\n },\n dial_code: '+964',\n code: 'IQ',\n flag: '🇮🇶',\n },\n {\n name: {\n en: 'Ireland',\n ru: 'Ирландия',\n pl: 'Irlandia',\n ua: 'Ірландія',\n cz: 'Irsko',\n by: '',\n pt: 'Irlanda',\n },\n dial_code: '+353',\n code: 'IE',\n flag: '🇮🇪',\n },\n {\n name: {\n en: 'Isle of Man',\n ru: 'Остров Мэн',\n pl: 'Wyspa Man',\n ua: 'Острів Мен',\n cz: 'Isle of Man',\n by: '',\n pt: 'Ilha de Man',\n },\n dial_code: '+44',\n code: 'IM',\n flag: '🇮🇲',\n },\n {\n name: {\n en: 'Israel',\n ru: 'Израиль',\n pl: 'Izrael',\n ua: 'Ізраїль',\n cz: 'Izrael',\n by: '',\n pt: 'Israel',\n },\n dial_code: '+972',\n code: 'IL',\n flag: '🇮🇱',\n },\n {\n name: {\n en: 'Italy',\n ru: 'Италия',\n pl: 'Włochy',\n ua: 'Італія',\n cz: 'Itálie',\n by: '',\n pt: 'Itália',\n },\n dial_code: '+39',\n code: 'IT',\n flag: '🇮🇹',\n },\n {\n name: {\n en: 'Jamaica',\n ru: 'Ямайка',\n pl: 'Jamajka',\n ua: 'Ямайка',\n cz: 'Jamaica',\n by: '',\n pt: 'Jamaica',\n },\n dial_code: '+1876',\n code: 'JM',\n flag: '🇯🇲',\n },\n {\n name: {\n en: 'Japan',\n ru: 'Япония',\n pl: 'Japonia',\n ua: 'Японія',\n cz: 'Japonsko',\n by: '',\n pt: 'Japão',\n },\n dial_code: '+81',\n code: 'JP',\n flag: '🇯🇵',\n },\n {\n name: {\n en: 'Jersey',\n ru: 'Джерси',\n pl: 'Jersey',\n ua: 'Джерсі',\n cz: 'Trikot',\n by: '',\n pt: 'Jersey',\n },\n dial_code: '+44',\n code: 'JE',\n flag: '🇯🇪',\n },\n {\n name: {\n en: 'Jordan',\n ru: 'Иордания',\n pl: 'Jordania',\n ua: 'Йорданія',\n cz: 'Jordán',\n by: '',\n pt: 'Jordânia',\n },\n dial_code: '+962',\n code: 'JO',\n flag: '🇯🇴',\n },\n {\n name: {\n en: 'Kazakhstan',\n ru: 'Казахстан',\n pl: 'Kazachstan',\n ua: 'Казахстан',\n cz: 'Kazachstán',\n by: '',\n pt: 'Cazaquistão',\n },\n dial_code: '+77',\n code: 'KZ',\n flag: '🇰🇿',\n },\n {\n name: {\n en: 'Kenya',\n ru: 'Кения',\n pl: 'Kenia',\n ua: 'Кенія',\n cz: 'Keňa',\n by: '',\n pt: 'Quénia',\n },\n dial_code: '+254',\n code: 'KE',\n flag: '🇰🇪',\n },\n {\n name: {\n en: 'Kiribati',\n ru: 'Кирибати',\n pl: 'Kiribati',\n ua: 'Kiribati',\n cz: 'Kiribati',\n by: '',\n pt: 'Quiribáti',\n },\n dial_code: '+686',\n code: 'KI',\n flag: '🇰🇮',\n },\n {\n name: {\n en: \"Korea, Democratic People's Republic of\",\n ru: 'Корея, Народно-Демократическая Республика',\n pl: 'Korea, Republika Ludowo-Demokratyczna',\n ua: 'Корея, Народно-Демократична Республіка',\n cz: 'Korea, Demokratická lidová republika',\n by: '',\n pt: 'Coreia do Norte',\n },\n dial_code: '+850',\n code: 'KP',\n flag: '🇰🇵',\n },\n {\n name: {\n en: 'Korea, Republic of',\n ru: 'Республика Корея',\n pl: 'Republika Korei',\n ua: 'Корея, Республіка',\n cz: 'Korea, republika',\n by: '',\n pt: 'Coreia do Sul',\n },\n dial_code: '+82',\n code: 'KR',\n flag: '🇰🇷',\n },\n {\n name: {\n en: 'Kuwait',\n ru: 'Кувейт',\n pl: 'Kuwejt',\n ua: 'Кувейт',\n cz: 'Kuvajt',\n by: '',\n pt: 'Kuwait',\n },\n dial_code: '+965',\n code: 'KW',\n flag: '🇰🇼',\n },\n {\n name: {\n en: 'Kyrgyzstan',\n ru: 'Kyrgyzstan',\n pl: 'Kirgistan',\n ua: 'Киргизстан',\n cz: 'Kyrgyzstán',\n by: '',\n pt: 'Quirguizistão',\n },\n dial_code: '+996',\n code: 'KG',\n flag: '🇰🇬',\n },\n {\n name: {\n en: \"Lao People's Democratic Republic\",\n ru: 'Лаосская Народно-Демократическая Республика',\n pl: 'Laotańska Republika Ludowo-Demokratyczna',\n ua: 'Лаоська Народно-Демократична Республіка',\n cz: 'Laoská lidově demokratická republika',\n by: '',\n pt: 'Laos',\n },\n dial_code: '+856',\n code: 'LA',\n flag: '🇱🇦',\n },\n {\n name: {\n en: 'Latvia',\n ru: 'Латвия',\n pl: 'Łotwa',\n ua: 'Латвія',\n cz: 'Lotyšsko',\n by: '',\n pt: 'Letónia',\n },\n dial_code: '+371',\n code: 'LV',\n flag: '🇱🇻',\n },\n {\n name: {\n en: 'Lebanon',\n ru: 'Ливан',\n pl: 'Liban',\n ua: 'Ліван',\n cz: 'Libanon',\n by: '',\n pt: 'Líbano',\n },\n dial_code: '+961',\n code: 'LB',\n flag: '🇱🇧',\n },\n {\n name: {\n en: 'Lesotho',\n ru: 'Лесото',\n pl: 'Lesoto',\n ua: 'Лесото',\n cz: 'Lesotho',\n by: '',\n pt: 'Lesoto',\n },\n dial_code: '+266',\n code: 'LS',\n flag: '🇱🇸',\n },\n {\n name: {\n en: 'Liberia',\n ru: 'Либерия',\n pl: 'Liberia',\n ua: 'Ліберія',\n cz: 'Libérie',\n by: '',\n pt: 'Libéria',\n },\n dial_code: '+231',\n code: 'LR',\n flag: '🇱🇷',\n },\n {\n name: {\n en: 'Libyan Arab Jamahiriya',\n ru: 'Ливийская Арабская Джамахирия',\n pl: 'Libijska Arabska Dżamahirija',\n ua: 'Лівійська Арабська Джамахірія',\n cz: 'Libyjský Arab Jamahiriya',\n by: '',\n pt: 'Líbia',\n },\n dial_code: '+218',\n code: 'LY',\n flag: '🇱🇾',\n },\n {\n name: {\n en: 'Liechtenstein',\n ru: 'Лихтенштейн',\n pl: 'Liechtenstein',\n ua: 'Ліхтенштейн',\n cz: 'Lichtenštejnsko',\n by: '',\n pt: 'Listenstaine',\n },\n dial_code: '+423',\n code: 'LI',\n flag: '🇱🇮',\n },\n {\n name: {\n en: 'Lithuania',\n ru: 'Литва',\n pl: 'Litwa',\n ua: 'Литва',\n cz: 'Litva',\n by: '',\n pt: 'Lituânia',\n },\n dial_code: '+370',\n code: 'LT',\n flag: '🇱🇹',\n },\n {\n name: {\n en: 'Luxembourg',\n ru: 'Люксембург',\n pl: 'Luksemburg',\n ua: 'Люксембург',\n cz: 'Lucembursko',\n by: '',\n pt: 'Luxemburgo',\n },\n dial_code: '+352',\n code: 'LU',\n flag: '🇱🇺',\n },\n {\n name: {\n en: 'Macao',\n ru: 'Макао',\n pl: 'Makao',\n ua: 'Макао',\n cz: 'Macao',\n by: '',\n pt: 'Macau',\n },\n dial_code: '+853',\n code: 'MO',\n flag: '🇲🇴',\n },\n {\n name: {\n en: 'Macedonia, The Former Yugoslav Republic of',\n ru: 'Македония, Бывшая Югославская Республика',\n pl: 'Macedonia, Była Jugosłowiańska Republika',\n ua: 'Македонія, колишня югославська республіка',\n cz: 'Makedonie, Bývalá jugoslávská republika',\n by: '',\n pt: 'Macedónia',\n },\n dial_code: '+389',\n code: 'MK',\n flag: '🇲🇰',\n },\n {\n name: {\n en: 'Madagascar',\n ru: 'Мадагаскар',\n pl: 'Madagaskar',\n ua: 'Мадагаскар',\n cz: 'Madagaskar',\n by: '',\n pt: 'Madagáscar',\n },\n dial_code: '+261',\n code: 'MG',\n flag: '🇲🇬',\n },\n {\n name: {\n en: 'Malawi',\n ru: 'Малави',\n pl: 'Malawi',\n ua: 'Малаві',\n cz: 'Malawi',\n by: '',\n pt: 'Malávi',\n },\n dial_code: '+265',\n code: 'MW',\n flag: '🇲🇼',\n },\n {\n name: {\n en: 'Malaysia',\n ru: 'Малайзия',\n pl: 'Malezja',\n ua: 'Малайзія',\n cz: 'Malajsie',\n by: '',\n pt: 'Malásia',\n },\n dial_code: '+60',\n code: 'MY',\n flag: '🇲🇾',\n },\n {\n name: {\n en: 'Maldives',\n ru: 'Мальдивы',\n pl: 'Malediwy',\n ua: 'Мальдіви',\n cz: 'Maledivy',\n by: '',\n pt: 'Maldivas',\n },\n dial_code: '+960',\n code: 'MV',\n flag: '🇲🇻',\n },\n {\n name: {\n en: 'Mali',\n ru: 'Мали',\n pl: 'Mali',\n ua: 'Малі',\n cz: 'Mali',\n by: '',\n pt: 'Mali',\n },\n dial_code: '+223',\n code: 'ML',\n flag: '🇲🇱',\n },\n {\n name: {\n en: 'Malta',\n ru: 'Мальта',\n pl: 'Malta',\n ua: 'Мальта',\n cz: 'Malta',\n by: '',\n pt: 'Malta',\n },\n dial_code: '+356',\n code: 'MT',\n flag: '🇲🇹',\n },\n {\n name: {\n en: 'Marshall Islands',\n ru: 'Маршалловы острова',\n pl: 'Wyspy Marshalla',\n ua: 'Маршаллові острови',\n cz: 'Marshallovy ostrovy',\n by: '',\n pt: 'Ilhas Marshall',\n },\n dial_code: '+692',\n code: 'MH',\n flag: '🇲🇭',\n },\n {\n name: {\n en: 'Martinique',\n ru: 'Мартиника',\n pl: 'Martynika',\n ua: 'Мартініка',\n cz: 'Martinik',\n by: '',\n pt: 'Martinica',\n },\n dial_code: '+596',\n code: 'MQ',\n flag: '🇲🇶',\n },\n {\n name: {\n en: 'Mauritania',\n ru: 'Мавритания',\n pl: 'Mauretania',\n ua: 'Мавританія',\n cz: 'Mauretánie',\n by: '',\n pt: 'Mauritânia',\n },\n dial_code: '+222',\n code: 'MR',\n flag: '🇲🇷',\n },\n {\n name: {\n en: 'Mauritius',\n ru: 'Маврикий',\n pl: 'Mauritius',\n ua: 'Маврикій',\n cz: 'Mauricius',\n by: '',\n pt: 'Maurícia',\n },\n dial_code: '+230',\n code: 'MU',\n flag: '🇲🇺',\n },\n {\n name: {\n en: 'Mayotte',\n ru: 'Майотта',\n pl: 'Majotta',\n ua: 'Майотта',\n cz: 'Mayotte',\n by: '',\n pt: 'Mayotte',\n },\n dial_code: '+262',\n code: 'YT',\n flag: '🇾🇹',\n },\n {\n name: {\n en: 'Mexico',\n ru: 'Мексика',\n pl: 'Meksyk',\n ua: 'Мексика',\n cz: 'Mexiko',\n by: '',\n pt: 'México',\n },\n dial_code: '+52',\n code: 'MX',\n flag: '🇲🇽',\n },\n {\n name: {\n en: 'Micronesia, Federated States of',\n ru: 'Микронезия, Федеративные Штаты',\n pl: 'Mikronezja, Sfederowane Stany',\n ua: 'Мікронезія, Федеративні Штати',\n cz: 'Mikronésie, federativní státy',\n by: '',\n pt: 'Micronésia',\n },\n dial_code: '+691',\n code: 'FM',\n flag: '🇫🇲',\n },\n {\n name: {\n en: 'Moldova, Republic of',\n ru: 'Молдова, Республика',\n pl: 'Mołdawia, Republika',\n ua: 'Молдова, республіка',\n cz: 'Moldavsko, republika',\n by: '',\n pt: 'Moldávia',\n },\n dial_code: '+373',\n code: 'MD',\n flag: '🇲🇩',\n },\n {\n name: {\n en: 'Monaco',\n ru: 'Монако',\n pl: 'Monako',\n ua: 'Монако',\n cz: 'Monako',\n by: '',\n pt: 'Mónaco',\n },\n dial_code: '+377',\n code: 'MC',\n flag: '🇲🇨',\n },\n {\n name: {\n en: 'Mongolia',\n ru: 'Монголия',\n pl: 'Mongolia',\n ua: 'Монголія',\n cz: 'Mongolsko',\n by: '',\n pt: 'Mongólia',\n },\n dial_code: '+976',\n code: 'MN',\n flag: '🇲🇳',\n },\n {\n name: {\n en: 'Montenegro',\n ru: 'Черногория',\n pl: 'Czarnogóra',\n ua: 'Чорногорія',\n cz: 'Černá Hora',\n by: '',\n pt: 'Montenegro',\n },\n dial_code: '+382',\n code: 'ME',\n flag: '🇲🇪',\n },\n {\n name: {\n en: 'Montserrat',\n ru: 'Монтсеррат',\n pl: 'Montserrat',\n ua: 'Монтсеррат',\n cz: 'Montserrat',\n by: '',\n pt: 'Monserrate',\n },\n dial_code: '+1664',\n code: 'MS',\n flag: '🇲🇸',\n },\n {\n name: {\n en: 'Morocco',\n ru: 'Марокко',\n pl: 'Maroko',\n ua: 'Марокко',\n cz: 'Maroko',\n by: '',\n pt: 'Marrocos',\n },\n dial_code: '+212',\n code: 'MA',\n flag: '🇲🇦',\n },\n {\n name: {\n en: 'Mozambique',\n ru: 'Мозамбик',\n pl: 'Mozambik',\n ua: 'Мозамбік',\n cz: 'Mosambik',\n by: '',\n pt: 'Moçambique',\n },\n dial_code: '+258',\n code: 'MZ',\n flag: '🇲🇿',\n },\n {\n name: {\n en: 'Myanmar',\n ru: 'Мьянма',\n pl: 'Myanmar',\n ua: \"М'янма\",\n cz: 'Myanmar',\n by: '',\n pt: 'Birmânia',\n },\n dial_code: '+95',\n code: 'MM',\n flag: '🇲🇲',\n },\n {\n name: {\n en: 'Namibia',\n ru: 'Намибия',\n pl: 'Namibia',\n ua: 'Намібія',\n cz: 'Namibie',\n by: '',\n pt: 'Namíbia',\n },\n dial_code: '+264',\n code: 'NA',\n flag: '🇳🇦',\n },\n {\n name: {\n en: 'Nauru',\n ru: 'Науру',\n pl: 'Nauru',\n ua: 'Науру',\n cz: 'Nauru',\n by: '',\n pt: 'Nauru',\n },\n dial_code: '+674',\n code: 'NR',\n flag: '🇳🇷',\n },\n {\n name: {\n en: 'Nepal',\n ru: 'Непал',\n pl: 'Nepal',\n ua: 'Непал',\n cz: 'Nepál',\n by: '',\n pt: 'Nepal',\n },\n dial_code: '+977',\n code: 'NP',\n flag: '🇳🇵',\n },\n {\n name: {\n en: 'Netherlands',\n ru: 'Нидерланды',\n pl: 'Holandia',\n ua: 'Нідерланди',\n cz: 'Holandsko',\n by: '',\n pt: 'Países Baixos',\n },\n dial_code: '+31',\n code: 'NL',\n flag: '🇳🇱',\n },\n {\n name: {\n en: 'Netherlands Antilles',\n ru: 'Нидерландские Антильские острова',\n pl: 'Antyle Holenderskie',\n ua: 'Нідерландські Антильські острови',\n cz: 'Nizozemské Antily',\n by: '',\n pt: 'Antilhas Neerlandesas',\n },\n dial_code: '+599',\n code: 'AN',\n flag: '🇦🇳',\n },\n {\n name: {\n en: 'New Caledonia',\n ru: 'Новая Каледония',\n pl: 'Nowa Kaledonia',\n ua: 'Нова Каледонія',\n cz: 'Nová Kaledonie',\n by: '',\n pt: 'Nova Caledónia',\n },\n dial_code: '+687',\n code: 'NC',\n flag: '🇳🇨',\n },\n {\n name: {\n en: 'New Zealand',\n ru: 'Новая Зеландия',\n pl: 'Nowa Zelandia',\n ua: 'Нова Зеландія',\n cz: 'Nový Zéland',\n by: '',\n pt: 'Nova Zelândia',\n },\n dial_code: '+64',\n code: 'NZ',\n flag: '🇳🇿',\n },\n {\n name: {\n en: 'Nicaragua',\n ru: 'Никарагуа',\n pl: 'Nikaragua',\n ua: 'Нікарагуа',\n cz: 'Nikaragua',\n by: '',\n pt: 'Nicarágua',\n },\n dial_code: '+505',\n code: 'NI',\n flag: '🇳🇮',\n },\n {\n name: {\n en: 'Niger',\n ru: 'Нигер',\n pl: 'Niger',\n ua: 'Нігер',\n cz: 'Niger',\n by: '',\n pt: 'Níger',\n },\n dial_code: '+227',\n code: 'NE',\n flag: '🇳🇪',\n },\n {\n name: {\n en: 'Nigeria',\n ru: 'Нигерия',\n pl: 'Nigeria',\n ua: 'Нігерія',\n cz: 'Nigérie',\n by: '',\n pt: 'Nigéria',\n },\n dial_code: '+234',\n code: 'NG',\n flag: '🇳🇬',\n },\n {\n name: {\n en: 'Niue',\n ru: 'Ниуэ',\n pl: 'Niue',\n ua: 'Ніуе',\n cz: 'Niue',\n by: '',\n pt: 'Niue',\n },\n dial_code: '+683',\n code: 'NU',\n flag: '🇳🇺',\n },\n {\n name: {\n en: 'Norfolk Island',\n ru: 'Остров Норфолк',\n pl: 'Wyspa Norfolk',\n ua: 'Острів Норфолк',\n cz: 'Ostrov Norfolk',\n by: '',\n pt: 'Ilha Norfolk',\n },\n dial_code: '+672',\n code: 'NF',\n flag: '🇳🇫',\n },\n {\n name: {\n en: 'Northern Mariana Islands',\n ru: 'Северные Марианские острова',\n pl: 'Mariany Północne',\n ua: 'Північні Маріанські острови',\n cz: 'Severní Mariany',\n by: '',\n pt: 'Marianas do Norte',\n },\n dial_code: '+1670',\n code: 'MP',\n flag: '🇲🇵',\n },\n {\n name: {\n en: 'Norway',\n ru: 'Норвегия',\n pl: 'Norwegia',\n ua: 'Норвегія',\n cz: 'Norsko',\n by: '',\n pt: 'Noruega',\n },\n dial_code: '+47',\n code: 'NO',\n flag: '🇳🇴',\n },\n {\n name: {\n en: 'Oman',\n ru: 'Оман',\n pl: 'Oman',\n ua: 'Оман',\n cz: 'Omán',\n by: '',\n pt: 'Omã',\n },\n dial_code: '+968',\n code: 'OM',\n flag: '🇴🇲',\n },\n {\n name: {\n en: 'Pakistan',\n ru: 'Пакистан',\n pl: 'Pakistan',\n ua: 'Пакистан',\n cz: 'Pákistán',\n by: '',\n pt: 'Paquistão',\n },\n dial_code: '+92',\n code: 'PK',\n flag: '🇵🇰',\n },\n {\n name: {\n en: 'Palau',\n ru: 'Палау',\n pl: 'Palau',\n ua: 'Палау',\n cz: 'Palau',\n by: '',\n pt: 'Palau',\n },\n dial_code: '+680',\n code: 'PW',\n flag: '🇵🇼',\n },\n {\n name: {\n en: 'Palestinian Territory, Occupied',\n ru: 'Палестинская Территория, Оккупированная',\n pl: 'Teretorium Paleństynskie, Okupowane',\n ua: 'Палестинська територія, окупована',\n cz: 'Palestinské území, obsazené',\n by: '',\n pt: 'Território Palestino, Ocupado',\n },\n dial_code: '+970',\n code: 'PS',\n flag: '🇵🇸',\n },\n {\n name: {\n en: 'Panama',\n ru: 'Панама',\n pl: 'Panama',\n ua: 'Панама',\n cz: 'Panama',\n by: '',\n pt: 'Panamá',\n },\n dial_code: '+507',\n code: 'PA',\n flag: '🇵🇦',\n },\n {\n name: {\n en: 'Papua New Guinea',\n ru: 'Папуа - Новая Гвинея',\n pl: 'Papua Nowa Gwinea',\n ua: 'Папуа-Нова Гвінея',\n cz: 'Papua-Nová Guinea',\n by: '',\n pt: 'Papua-Nova Guiné',\n },\n dial_code: '+675',\n code: 'PG',\n flag: '🇵🇬',\n },\n {\n name: {\n en: 'Paraguay',\n ru: 'Парагвай',\n pl: 'Paragwaj',\n ua: 'Парагвай',\n cz: 'Paraguay',\n by: '',\n pt: 'Paraguai',\n },\n dial_code: '+595',\n code: 'PY',\n flag: '🇵🇾',\n },\n {\n name: {\n en: 'Peru',\n ru: 'Перу',\n pl: 'Peru',\n ua: 'Перу',\n cz: 'Peru',\n by: '',\n pt: 'Peru',\n },\n dial_code: '+51',\n code: 'PE',\n flag: '🇵🇪',\n },\n {\n name: {\n en: 'Philippines',\n ru: 'Филиппины',\n pl: 'Filipiny',\n ua: 'Філіппіни',\n cz: 'Filipíny',\n by: '',\n pt: 'Filipinas',\n },\n dial_code: '+63',\n code: 'PH',\n flag: '🇵🇭',\n },\n {\n name: {\n en: 'Pitcairn',\n ru: 'Питкэрн',\n pl: 'Pitcairn',\n ua: 'Піткерн',\n cz: 'Pitcairn',\n by: '',\n pt: 'Pitcairn',\n },\n dial_code: '+872',\n code: 'PN',\n flag: '🇵🇳',\n },\n {\n name: {\n en: 'Poland',\n ru: 'Польша',\n pl: 'Polska',\n ua: 'Польща',\n cz: 'Polsko',\n by: '',\n pt: 'Polónia',\n },\n dial_code: '+48',\n code: 'PL',\n flag: '🇵🇱',\n },\n {\n name: {\n en: 'Portugal',\n ru: 'Португалия',\n pl: 'Portugalia',\n ua: 'Португалія',\n cz: 'Portugalsko',\n by: '',\n pt: 'Portugal',\n },\n dial_code: '+351',\n code: 'PT',\n flag: '🇵🇹',\n },\n {\n name: {\n en: 'Puerto Rico',\n ru: 'Пуэрто-Рико',\n pl: 'Portoryko',\n ua: 'Пуерто Ріко',\n cz: 'Portoriko',\n by: '',\n pt: 'Porto Rico',\n },\n dial_code: '+1939',\n code: 'PR',\n flag: '🇵🇷',\n },\n {\n name: {\n en: 'Qatar',\n ru: 'Катар',\n pl: 'Katar',\n ua: 'Катар',\n cz: 'Katar',\n by: '',\n pt: 'Catar',\n },\n dial_code: '+974',\n code: 'QA',\n flag: '🇶🇦',\n },\n {\n name: {\n en: 'Romania',\n ru: 'Румыния',\n pl: 'Rumunia',\n ua: 'Румунія',\n cz: 'Rumunsko',\n by: '',\n pt: 'Roménia',\n },\n dial_code: '+40',\n code: 'RO',\n flag: '🇷🇴',\n },\n {\n name: {\n en: 'Russia',\n ru: 'Россия',\n pl: 'Rosja',\n ua: 'Росія',\n cz: 'Rusko',\n by: '',\n pt: 'Rússia',\n },\n dial_code: '+7',\n code: 'RU',\n flag: '🇷🇺',\n },\n {\n name: {\n en: 'Rwanda',\n ru: 'Руанда',\n pl: 'Rwanda',\n ua: 'Руанда',\n cz: 'Rwanda',\n by: '',\n pt: 'Ruanda',\n },\n dial_code: '+250',\n code: 'RW',\n flag: '🇷🇼',\n },\n {\n name: {\n en: 'Réunion',\n ru: 'Реюньон',\n pl: 'Réunion',\n ua: 'Реюньйон',\n cz: 'Réunion',\n by: '',\n pt: 'Reunião',\n },\n dial_code: '+262',\n code: 'RE',\n flag: '🇷🇪',\n },\n {\n name: {\n en: 'Saint Barthélemy',\n ru: 'Святой Варфоломей',\n pl: 'Saint Barthelemy',\n ua: 'Сен-Бартелемі',\n cz: 'Svatý Bartoloměj',\n by: '',\n pt: 'São Bartolomeu',\n },\n dial_code: '+590',\n code: 'BL',\n flag: '🇧🇱',\n },\n {\n name: {\n en: 'Saint Helena, Ascension and Tristan Da Cunha',\n ru: 'Святой Елены, Вознесения и Тристан-да-Кунья',\n pl: 'Święta Helena, Wniebowstąpienie i Tristan Da Cunha',\n ua: 'Свята Олена, Вознесіння і Трістан Да Кунья',\n cz: 'Svatá Helena, Nanebevstoupení a Tristan Da Cunha',\n by: '',\n pt: 'Santa Helena',\n },\n dial_code: '+290',\n code: 'SH',\n flag: '🇸🇭',\n },\n {\n name: {\n en: 'Saint Kitts and Nevis',\n ru: 'Сент-Китс и Невис',\n pl: 'Saint Kitts i Nevis',\n ua: 'Сент-Кітс і Невіс',\n cz: 'Svatý Kryštof a Nevis',\n by: '',\n pt: 'São Cristóvão e Neves',\n },\n dial_code: '+1869',\n code: 'KN',\n flag: '🇰🇳',\n },\n {\n name: {\n en: 'Saint Lucia',\n ru: 'Санкт-Люсия',\n pl: 'święta Lucia',\n ua: 'Сент-Люсія',\n cz: 'Svatá Lucie',\n by: '',\n pt: 'Santa Lúcia',\n },\n dial_code: '+1758',\n code: 'LC',\n flag: '🇱🇨',\n },\n {\n name: {\n en: 'Saint Martin',\n ru: 'Сен-Мартен',\n pl: 'święty Marcin',\n ua: 'Святий Мартін',\n cz: 'Svatý Martin',\n by: '',\n pt: 'São Martinho',\n },\n dial_code: '+590',\n code: 'MF',\n flag: '🇲🇫',\n },\n {\n name: {\n en: 'Saint Pierre and Miquelon',\n ru: 'Сен-Пьер и Микелон',\n pl: 'Saint-Pierre i Miquelon',\n ua: \"Сен-П'єр і Мікелон\",\n cz: 'Svatý Pierre a Miquelon',\n by: '',\n pt: 'São Pedro e Miquelon',\n },\n dial_code: '+508',\n code: 'PM',\n flag: '🇵🇲',\n },\n {\n name: {\n en: 'Saint Vincent and the Grenadines',\n ru: 'Святой Винсент и Гренадины',\n pl: 'Saint Vincent i Grenadyny',\n ua: 'Сент-Вінсент і Гренадини',\n cz: 'Svatý Vincenc a Grenadiny',\n by: '',\n pt: 'São Vicente e Granadinas',\n },\n dial_code: '+1784',\n code: 'VC',\n flag: '🇻🇨',\n },\n {\n name: {\n en: 'Samoa',\n ru: 'Самоа',\n pl: 'Samoa',\n ua: 'Самоа',\n cz: 'Samoa',\n by: '',\n pt: 'Samoa',\n },\n dial_code: '+685',\n code: 'WS',\n flag: '🇼🇸',\n },\n {\n name: {\n en: 'San Marino',\n ru: 'Сан-Марино',\n pl: 'San Marino',\n ua: 'Сан-Марино',\n cz: 'San Marino',\n by: '',\n pt: 'São Marinho',\n },\n dial_code: '+378',\n code: 'SM',\n flag: '🇸🇲',\n },\n {\n name: {\n en: 'Sao Tome and Principe',\n ru: 'Сан-Томе и Принсипи',\n pl: 'Wyspy Świętego Tomasza i Książęca',\n ua: 'Сан-Томе і Принсіпі',\n cz: 'Svatý Tomáš a Princův ostrov',\n by: '',\n pt: 'São Tomé e Príncipe',\n },\n dial_code: '+239',\n code: 'ST',\n flag: '🇸🇹',\n },\n {\n name: {\n en: 'Saudi Arabia',\n ru: 'Саудовская Аравия',\n pl: 'Arabia Saudyjska',\n ua: 'Саудівська Аравія',\n cz: 'Saudská arábie',\n by: '',\n pt: 'Arábia Saudita',\n },\n dial_code: '+966',\n code: 'SA',\n flag: '🇸🇦',\n },\n {\n name: {\n en: 'Senegal',\n ru: 'Сенегал',\n pl: 'Senegal',\n ua: 'Сенегал',\n cz: 'Senegal',\n by: '',\n pt: 'Senegal',\n },\n dial_code: '+221',\n code: 'SN',\n flag: '🇸🇳',\n },\n {\n name: {\n en: 'Serbia',\n ru: 'Сербия',\n pl: 'Serbia',\n ua: 'Сербія',\n cz: 'Srbsko',\n by: '',\n pt: 'Sérvia',\n },\n dial_code: '+381',\n code: 'RS',\n flag: '🇷🇸',\n },\n {\n name: {\n en: 'Seychelles',\n ru: 'Сейшельские острова',\n pl: 'Seszele',\n ua: 'Сейшельські острови',\n cz: 'Seychely',\n by: '',\n pt: 'Seicheles',\n },\n dial_code: '+248',\n code: 'SC',\n flag: '🇸🇨',\n },\n {\n name: {\n en: 'Sierra Leone',\n ru: 'Сьерра-Леоне',\n pl: 'Sierra Leone',\n ua: 'Сьєрра-Леоне',\n cz: 'Sierra Leone',\n by: '',\n pt: 'Serra Leoa',\n },\n dial_code: '+232',\n code: 'SL',\n flag: '🇸🇱',\n },\n {\n name: {\n en: 'Singapore',\n ru: 'Сингапур',\n pl: 'Singapur',\n ua: 'Сінгапур',\n cz: 'Singapur',\n by: '',\n pt: 'Singapura',\n },\n dial_code: '+65',\n code: 'SG',\n flag: '🇸🇬',\n },\n {\n name: {\n en: 'Slovakia',\n ru: 'Словакия',\n pl: 'Słowacja',\n ua: 'Словаччина',\n cz: 'Slovensko',\n by: '',\n pt: 'Eslováquia',\n },\n dial_code: '+421',\n code: 'SK',\n flag: '🇸🇰',\n },\n {\n name: {\n en: 'Slovenia',\n ru: 'Словения',\n pl: 'Słowenia',\n ua: 'Словенія',\n cz: 'Slovinsko',\n by: '',\n pt: 'Eslovénia',\n },\n dial_code: '+386',\n code: 'SI',\n flag: '🇸🇮',\n },\n {\n name: {\n en: 'Solomon Islands',\n ru: 'Соломоновы острова',\n pl: 'Wyspy Salomona',\n ua: 'Соломонові острови',\n cz: 'Solomonovy ostrovy',\n by: '',\n pt: 'Ilhas Salomão',\n },\n dial_code: '+677',\n code: 'SB',\n flag: '🇸🇧',\n },\n {\n name: {\n en: 'Somalia',\n ru: 'Сомали',\n pl: 'Somali',\n ua: 'Сомалі',\n cz: 'Somálsko',\n by: '',\n pt: 'Somália',\n },\n dial_code: '+252',\n code: 'SO',\n flag: '🇸🇴',\n },\n {\n name: {\n en: 'South Africa',\n ru: 'Южная Африка',\n pl: 'Afryka Południowa',\n ua: 'Південна Африка',\n cz: 'Jižní Afrika',\n by: '',\n pt: 'África do Sul',\n },\n dial_code: '+27',\n code: 'ZA',\n flag: '🇿🇦',\n },\n {\n name: {\n en: 'South Georgia and the South Sandwich Islands',\n ru: 'Южная Георгия и Южные Сандвичевы острова',\n pl: 'Georgia Południowa i Sandwich Południowy',\n ua: 'Південна Джорджія та Південні Сандвічеві острови',\n cz: 'Jižní Georgie a Jižní Sandwichovy ostrovy',\n by: '',\n pt: 'Geórgia do Sul e Sandwich do Sul',\n },\n dial_code: '+500',\n code: 'GS',\n flag: '🇬🇸',\n },\n {\n name: {\n en: 'Spain',\n ru: 'Испания',\n pl: 'Hiszpania',\n ua: 'Іспанія',\n cz: 'Španělsko',\n by: '',\n pt: 'Espanha',\n },\n dial_code: '+34',\n code: 'ES',\n flag: '🇪🇸',\n },\n {\n name: {\n en: 'Sri Lanka',\n ru: 'Шри-Ланка',\n pl: 'Sri Lanka',\n ua: 'Шрі Ланка',\n cz: 'Srí Lanka',\n by: '',\n pt: 'Sri Lanca',\n },\n dial_code: '+94',\n code: 'LK',\n flag: '🇱🇰',\n },\n {\n name: {\n en: 'Sudan',\n ru: 'Судан',\n pl: 'Sudan',\n ua: 'Судан',\n cz: 'Súdán',\n by: '',\n pt: 'Sudão',\n },\n dial_code: '+249',\n code: 'SD',\n flag: '🇸🇩',\n },\n {\n name: {\n en: 'Suriname',\n ru: 'Суринам',\n pl: 'Surinam',\n ua: 'Суринам',\n cz: 'Surinam',\n by: '',\n pt: 'Suriname',\n },\n dial_code: '+597',\n code: 'SR',\n flag: '🇸🇷',\n },\n {\n name: {\n en: 'Svalbard and Jan Mayen',\n ru: 'Шпицберген и Ян Майен',\n pl: 'Svalbard i Jan Mayen',\n ua: 'Шпіцберген та Ян Маєн',\n cz: 'Špicberky a Jan Mayen',\n by: '',\n pt: 'Svalbard e Jan Mayen',\n },\n dial_code: '+47',\n code: 'SJ',\n flag: '🇸🇯',\n },\n {\n name: {\n en: 'Swaziland',\n ru: 'Свазиленд',\n pl: 'Suazi',\n ua: 'Свазіленд',\n cz: 'Svazijsko',\n by: '',\n pt: 'Suazilândia',\n },\n dial_code: '+268',\n code: 'SZ',\n flag: '🇸🇿',\n },\n {\n name: {\n en: 'Sweden',\n ru: 'Швеция',\n pl: 'Szwecja',\n ua: 'Швеція',\n cz: 'Švédsko',\n by: '',\n pt: 'Suécia',\n },\n dial_code: '+46',\n code: 'SE',\n flag: '🇸🇪',\n },\n {\n name: {\n en: 'Switzerland',\n ru: 'Швейцария',\n pl: 'Szwajcaria',\n ua: 'Швейцарія',\n cz: 'Švýcarsko',\n by: '',\n pt: 'Suíça',\n },\n dial_code: '+41',\n code: 'CH',\n flag: '🇨🇭',\n },\n {\n name: {\n en: 'Syrian Arab Republic',\n ru: 'Сирийская Арабская Республика',\n pl: 'Republika Syryjsko-Arabska',\n ua: 'Сирійська Арабська Республіка',\n cz: 'Syrská Arabská republika',\n by: '',\n pt: 'Síria',\n },\n dial_code: '+963',\n code: 'SY',\n flag: '🇸🇾',\n },\n {\n name: {\n en: 'Taiwan, Province of China',\n ru: 'Тайвань, провинция Китая',\n pl: 'Tajwan, prowincja Chin',\n ua: 'Тайвань, провінція Китаю',\n cz: 'Tchaj-wan, provincie Číny',\n by: '',\n pt: 'Taiwan',\n },\n dial_code: '+886',\n code: 'TW',\n flag: '🇹🇼',\n },\n {\n name: {\n en: 'Tajikistan',\n ru: 'Таджикистан',\n pl: 'Tadżykistan',\n ua: 'Таджикистан',\n cz: 'Tádžikistán',\n by: '',\n pt: 'Tajiquistão',\n },\n dial_code: '+992',\n code: 'TJ',\n flag: '🇹🇯',\n },\n {\n name: {\n en: 'Tanzania, United Republic of',\n ru: 'Танзания, Объединенная Республика',\n pl: 'Tanzania, Zjednoczona Republika',\n ua: \"Танзанія, Об'єднана республіка\",\n cz: 'Tanzanie, Velká republika',\n by: '',\n pt: 'Tanzânia',\n },\n dial_code: '+255',\n code: 'TZ',\n flag: '🇹🇿',\n },\n {\n name: {\n en: 'Thailand',\n ru: 'Таиланд',\n pl: 'Tajlandia',\n ua: 'Таїланд',\n cz: 'Thajsko',\n by: '',\n pt: 'Tailândia',\n },\n dial_code: '+66',\n code: 'TH',\n flag: '🇹🇭',\n },\n {\n name: {\n en: 'Timor-Leste',\n ru: 'Восточный Тимор',\n pl: 'Timor Wschodni',\n ua: 'Восточний Тимор',\n cz: 'Východní Timor',\n by: '',\n pt: 'Timor Leste',\n },\n dial_code: '+670',\n code: 'TL',\n flag: '🇹🇱',\n },\n {\n name: {\n en: 'Togo',\n ru: 'Того',\n pl: 'Togo',\n ua: 'Того',\n cz: 'Togo',\n by: '',\n pt: 'Togo',\n },\n dial_code: '+228',\n code: 'TG',\n flag: '🇹🇬',\n },\n {\n name: {\n en: 'Tokelau',\n ru: 'Токелау',\n pl: 'Tokelau',\n ua: 'Токелау',\n cz: 'Tokelau',\n by: '',\n pt: 'Tokelau',\n },\n dial_code: '+690',\n code: 'TK',\n flag: '🇹🇰',\n },\n {\n name: {\n en: 'Tonga',\n ru: 'Тонга',\n pl: 'Tonga',\n ua: 'Тонга',\n cz: 'Tonga',\n by: '',\n pt: 'Tonga',\n },\n dial_code: '+676',\n code: 'TO',\n flag: '🇹🇴',\n },\n {\n name: {\n en: 'Trinidad and Tobago',\n ru: 'Тринидад и Тобаго',\n pl: 'Trynidad i Tobago',\n ua: 'Тринідад і Тобаго',\n cz: 'Trinidad a Tobago',\n by: '',\n pt: 'Trindade e Tobago',\n },\n dial_code: '+1868',\n code: 'TT',\n flag: '🇹🇹',\n },\n {\n name: {\n en: 'Tunisia',\n ru: 'Тунис',\n pl: 'Tunezja',\n ua: 'Туніс',\n cz: 'Tunisko',\n by: '',\n pt: 'Tunísia',\n },\n dial_code: '+216',\n code: 'TN',\n flag: '🇹🇳',\n },\n {\n name: {\n en: 'Turkey',\n ru: 'Турция',\n pl: 'Turcja',\n ua: 'Туреччина',\n cz: 'Turecko',\n by: '',\n pt: 'Turquia',\n },\n dial_code: '+90',\n code: 'TR',\n flag: '🇹🇷',\n },\n {\n name: {\n en: 'Turkmenistan',\n ru: 'Туркменистан',\n pl: 'Turkmenia',\n ua: 'Туркменістан',\n cz: 'Turkmenistán',\n by: '',\n pt: 'Turquemenistão',\n },\n dial_code: '+993',\n code: 'TM',\n flag: '🇹🇲',\n },\n {\n name: {\n en: 'Turks and Caicos Islands',\n ru: 'Острова Теркс и Кайкос',\n pl: 'Wyspy Turks i Caicos',\n ua: 'Острови Теркс і Кайкос',\n cz: 'ostrovy Turks a Cacois',\n by: '',\n pt: 'Ilhas Turcas e Caicos',\n },\n dial_code: '+1649',\n code: 'TC',\n flag: '🇹🇨',\n },\n {\n name: {\n en: 'Tuvalu',\n ru: 'Тувалу',\n pl: 'Tuvalu',\n ua: 'Тувалу',\n cz: 'Tuvalu',\n by: '',\n pt: 'Tuvalu',\n },\n dial_code: '+688',\n code: 'TV',\n flag: '🇹🇻',\n },\n {\n name: {\n en: 'Uganda',\n ru: 'Уганда',\n pl: 'Uganda',\n ua: 'Уганда',\n cz: 'Uganda',\n by: '',\n pt: 'Uganda',\n },\n dial_code: '+256',\n code: 'UG',\n flag: '🇺🇬',\n },\n {\n name: {\n en: 'Ukraine',\n ru: 'Украина',\n pl: 'Ukraina',\n ua: 'Україна',\n cz: 'Ukrajina',\n by: '',\n pt: 'Ucrânia',\n },\n dial_code: '+380',\n code: 'UA',\n flag: '🇺🇦',\n },\n {\n name: {\n en: 'United Arab Emirates',\n ru: 'Объединенные Арабские Эмираты',\n pl: 'Zjednoczone Emiraty Arabskie',\n ua: \"Об'єднані Арабські Емірати\",\n cz: 'Spojené arabské emiráty',\n by: '',\n pt: 'Emiratos Árabes Unidos',\n },\n dial_code: '+971',\n code: 'AE',\n flag: '🇦🇪',\n },\n {\n name: {\n en: 'United Kingdom',\n ru: 'Объединенное Королевство',\n pl: 'Zjednoczone Królestwo',\n ua: \"Об'єднане Королівство\",\n cz: 'Spojené království',\n by: '',\n pt: 'Reino Unido',\n },\n dial_code: '+44',\n code: 'GB',\n flag: '🇬🇧',\n },\n {\n name: {\n en: 'United States',\n ru: 'Соединенные Штаты',\n pl: 'Stany Zjednoczone',\n ua: 'Сполучені Штати',\n cz: 'Spojené státy',\n by: '',\n pt: 'Estados Unidos',\n },\n dial_code: '+1',\n code: 'US',\n flag: '🇺🇸',\n },\n {\n name: {\n en: 'Uruguay',\n ru: 'Уругвай',\n pl: 'Urugwaj',\n ua: 'Уругвай',\n cz: 'Uruguay',\n by: '',\n pt: 'Uruguai',\n },\n dial_code: '+598',\n code: 'UY',\n flag: '🇺🇾',\n },\n {\n name: {\n en: 'Uzbekistan',\n ru: 'Узбекистан',\n pl: 'Uzbekistan',\n ua: 'Узбекистан',\n cz: 'Uzbekistán',\n by: '',\n pt: 'Usbequistão',\n },\n dial_code: '+998',\n code: 'UZ',\n flag: '🇺🇿',\n },\n {\n name: {\n en: 'Vanuatu',\n ru: 'Вануату',\n pl: 'Vanuatu',\n ua: 'Вануату',\n cz: 'Vanuatu',\n by: '',\n pt: 'Vanuatu',\n },\n dial_code: '+678',\n code: 'VU',\n flag: '🇻🇺',\n },\n {\n name: {\n en: 'Venezuela, Bolivarian Republic of',\n ru: 'Венесуэла, Боливарианская Республика',\n pl: 'Wenezuela, Republika Boliwariańska',\n ua: 'Венесуела, Боліваріанська Республіка',\n cz: 'Venezuela, Bolívarovská republika',\n by: '',\n pt: 'Venezuela',\n },\n dial_code: '+58',\n code: 'VE',\n flag: '🇻🇪',\n },\n {\n name: {\n en: 'Viet Nam',\n ru: 'Вьетнам',\n pl: 'Wietnam',\n ua: \"В'єтнам\",\n cz: 'Vietnam',\n by: '',\n pt: 'Vietname',\n },\n dial_code: '+84',\n code: 'VN',\n flag: '🇻🇳',\n },\n {\n name: {\n en: 'Virgin Islands, British',\n ru: 'Виргинские острова, Британские',\n pl: 'Wyspy Dziewicze, Brytyjskie',\n ua: 'Віргінські острови, Британські',\n cz: 'Panenské ostrovy, Britové',\n by: '',\n pt: 'Ilhas Virgens Britânicas',\n },\n dial_code: '+1284',\n code: 'VG',\n flag: '🇻🇬',\n },\n {\n name: {\n en: 'Virgin Islands, U.S.',\n ru: 'Американские Виргинские острова',\n pl: 'Wyspy Dziewicze Stanów Zjednoczonych',\n ua: 'Віргінські острови, США',\n cz: 'Panenské ostrovy, USA',\n by: '',\n pt: 'Ilhas Virgens Americanas',\n },\n dial_code: '+1340',\n code: 'VI',\n flag: '🇻🇮',\n },\n {\n name: {\n en: 'Wallis and Futuna',\n ru: 'Уоллис и Футуна',\n pl: 'Wallis i Futuna',\n ua: 'Уолліс і Футуна',\n cz: 'Wallis a Futuna',\n by: '',\n pt: 'Wallis e Futuna',\n },\n dial_code: '+681',\n code: 'WF',\n flag: '🇼🇫',\n },\n {\n name: {\n en: 'Yemen',\n ru: 'Йемен',\n pl: 'Jemen',\n ua: 'Ємен',\n cz: 'Jemen',\n by: '',\n pt: 'Iémen',\n },\n dial_code: '+967',\n code: 'YE',\n flag: '🇾🇪',\n },\n {\n name: {\n en: 'Zambia',\n ru: 'Замбия',\n pl: 'Zambia',\n ua: 'Замбія',\n cz: 'Zambie',\n by: '',\n pt: 'Zâmbia',\n },\n dial_code: '+260',\n code: 'ZM',\n flag: '🇿🇲',\n },\n {\n name: {\n en: 'Zimbabwe',\n ru: 'Зимбабве',\n pl: 'Zimbabwe',\n ua: 'Зімбабве',\n cz: 'Zimbabwe',\n by: '',\n pt: 'Zimbabué',\n },\n dial_code: '+263',\n code: 'ZW',\n flag: '🇿🇼',\n },\n {\n name: {\n en: 'Åland Islands',\n ru: 'Аландские острова',\n pl: 'Wyspy Alandzkie',\n ua: 'Аландські острови',\n cz: 'Alandy',\n by: '',\n pt: 'Ilhas Aland',\n },\n dial_code: '+358',\n code: 'AX',\n flag: '🇦🇽',\n },\n]\n","import axios, { AxiosInstance } from 'axios'\n\nimport { getCookieByName } from '../../utils/cookies'\n\nconst headers: { [key: string]: string } = {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json',\n}\n\nconst isWindowDefined = typeof window !== 'undefined'\nconst authGuestToken = isWindowDefined ? localStorage.getItem('auth_guest_token') : ''\nif (isWindowDefined && authGuestToken) {\n headers['Authorization-Guest'] = authGuestToken\n}\n\nexport const setAxiosHeader = (key: string, value: string | number) => {\n headers[key] = `${value}`\n}\n\ninterface IPublicRequest extends AxiosInstance {\n setBaseUrl: (baseUrl: string) => void\n setGuestToken: (guestToken: string) => void\n}\n\nexport const publicRequest: IPublicRequest = axios.create({\n baseURL: 'https://www.ticketfairy.com/api',\n headers,\n withCredentials: true,\n}) as IPublicRequest\n\npublicRequest.interceptors.request.use((config) => {\n if (getCookieByName('X-TF-ECOMMERCE')) {\n config.headers['X-TF-ECOMMERCE'] = getCookieByName('X-TF-ECOMMERCE')\n }\n\n return config\n})\n\npublicRequest.setBaseUrl = (baseUrl: string) =>\n (publicRequest.defaults.baseURL = baseUrl + '/api')\n\npublicRequest.setGuestToken = (guestToken: string) =>\n (publicRequest.defaults.headers.common['Authorization-Guest'] = guestToken)\n\nexport const setBaseUrl = (baseUrl: string) => {\n publicRequest.setBaseUrl(baseUrl)\n}\n","export function getDomain(\n url: string,\n subdomain?: string,\n publicSuffix?: string\n): string {\n let updatedUrl: any = url.replace(/(https?:\\/\\/)?(www.)?/i, '')\n\n if (!subdomain) {\n if (publicSuffix) {\n const updatedPublicSuffix = publicSuffix.startsWith('.')\n ? publicSuffix\n : '.' + publicSuffix\n updatedUrl = url.replace(updatedPublicSuffix, '').split('.')\n updatedUrl = updatedUrl.length > 0 ? updatedUrl[updatedUrl.length - 1] : ''\n updatedUrl += updatedPublicSuffix\n } else {\n updatedUrl = updatedUrl.split('.')\n updatedUrl = updatedUrl.slice(updatedUrl.length - 2).join('.')\n }\n }\n\n if (updatedUrl.indexOf('/') !== -1) {\n return updatedUrl.split('/')[0]\n }\n\n return updatedUrl\n}\n","import { getDomain } from './getDomain'\n\nlet generalDomain: string\n\nexport function setCustomCookie(name: string, value: string, days = 5) {\n let expires = ''\n if (days) {\n const date = new Date()\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000)\n expires = '; expires=' + date.toUTCString()\n }\n if (typeof window === 'undefined') {\n return\n }\n\n const { hostname } = window.location\n\n if (generalDomain && generalDomain.endsWith(getDomain(hostname))) {\n document.cookie =\n name + '=' + (value || '') + expires + `; path=/;domain=${generalDomain}`\n return\n }\n\n let previousDomain = undefined\n let domain = undefined\n do {\n previousDomain = domain\n domain = getDomain(hostname, undefined, previousDomain)\n document.cookie = name + '=' + (value || '') + expires + `; path=/;domain=${domain}`\n } while (getCookieByName(name) === '' && hostname !== domain)\n generalDomain = domain\n}\n\nexport function getCookieByName(cname: string) {\n if (typeof window === 'undefined') return ''\n const name = cname + '='\n const ca = document.cookie.split(';')\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) === ' ') {\n c = c.substring(1)\n }\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length)\n }\n }\n return ''\n}\n\nexport function deleteCookieByName(name: string) {\n if (getCookieByName(name) === '') {\n return\n }\n\n if (typeof window === 'undefined') {\n return\n }\n\n const { hostname } = window.location\n\n if (generalDomain && generalDomain.endsWith(getDomain(hostname))) {\n document.cookie =\n name + `=; Path=/;domain=${generalDomain}; Expires=Thu, 01 Jan 1970 00:00:01 GMT;`\n return\n }\n\n let previousDomain = undefined\n let domain = undefined\n do {\n previousDomain = domain\n domain = getDomain(hostname, undefined, previousDomain)\n document.cookie =\n name + `=; Path=/;domain=${domain}; Expires=Thu, 01 Jan 1970 00:00:01 GMT;`\n } while (getCookieByName(name) !== '' && hostname !== domain)\n generalDomain = domain\n}\n","export const X_TF_ECOMMERCE = 'X-TF-ECOMMERCE'\nexport const FEES_STYLES = { TRADITIONAL: 'TRADITIONAL', DISPLAY_BOTH: 'DISPLAY_BOTH' }\nexport const DEFAULT_FEES_STYLE = FEES_STYLES.TRADITIONAL\n","import { publicRequest } from '../api/client/publicRequest'\nimport { DEFAULT_FEES_STYLE } from '../constants'\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 FEES_STYLE?: string\n [key: string]: string | number | undefined\n}\n\nexport const CONFIGS: IConfigs = { FEES_STYLE: DEFAULT_FEES_STYLE } as IConfigs\n\nexport const setConfigs = (\n configs: Partial<IConfigs> &\n Pick<\n IConfigs,\n | 'BASE_URL'\n | 'CLIENT_ID'\n | 'CLIENT_SECRET'\n | 'STRIPE_PUBLISHABLE_KEY'\n | 'X_SOURCE_ORIGIN'\n >\n) => {\n Object.keys(configs).forEach((key) => {\n const value = configs[key as keyof IConfigs]\n if (value !== undefined) {\n CONFIGS[key] = value\n }\n })\n\n publicRequest.setBaseUrl(CONFIGS.BASE_URL)\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { CONFIGS } from '../../config'\nimport type { IAuthorizeRequestData, IProfileResponse } from '../../types/api/auth.d'\nimport type { IAxiosResponseData } from '../../types/api/axiosResponse.d'\nimport { publicRequest } from './publicRequest'\n\nexport const authorize = async (\n data: IAuthorizeRequestData\n): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `/auth?clientId=${CONFIGS.CLIENT_ID || 'e9d8f8922797b4621e562255afe90dbf'}`,\n data\n )\n return response.data\n}\n\nexport const register = async (data: FormData): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.post('v1/oauth/register-rn', data)\n return response.data\n}\n\nexport const getProfileData = async (): Promise<IProfileResponse> => {\n const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =\n await publicRequest.get('/customer/profile/')\n return response.data\n}\n\nexport const logout = async (): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.delete('/auth')\n return response.data\n}\n\n/**\n * Checks whether a given email address already exists via the `/ajax/contact-email` endpoint.\n *\n * The underlying API is expected to return a JSON object containing:\n * - `exists`: `1` if the email exists, `0` otherwise\n * - `error`: `1` if an error occurred, `0` otherwise\n * - `message`: an optional error message when `error === 1`\n *\n * This function normalizes that response to an object with:\n * - `exists`: a boolean indicating whether the email exists\n * - `error`: an optional string containing an error message, if any\n *\n * On network or unexpected errors, it returns `{ exists: false, error: 'Failed to check email' }`.\n *\n * @param {string} email - The email address to check for existence.\n * @returns {Promise<{ exists: boolean; error?: string }>} A promise that resolves to the normalized\n * result of the email existence check.\n */\nexport const checkEmailExists = async (\n email: string\n): Promise<{ exists: boolean; error?: string }> => {\n try {\n const formData = new FormData()\n formData.append('email', email)\n formData.append('is_checkout_flow', 'true')\n\n const baseUrl = publicRequest.defaults.baseURL?.replace('/api', '') || ''\n const url = `${baseUrl}/ajax/contact-email`\n\n const response: AxiosResponse<any, AxiosRequestConfig> = await publicRequest.post(\n url,\n formData,\n {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n }\n )\n\n return {\n exists: response.data.exists === 1,\n error: response.data.error === 1 ? response.data.message : undefined,\n }\n } catch (error) {\n console.error('Error checking email:', error)\n return {\n exists: false,\n error: 'Failed to check email',\n }\n }\n}\n","export const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined'\n","import { AxiosError } from 'axios'\n\nimport { logout } from '../api/client/auth'\nimport type { IProfileData } from '../types/api/auth.d'\nimport { deleteCookieByName } from './cookies'\nimport { isBrowser } from './isBrowser'\n\nexport const setLoggedUserData = (data: IProfileData) => ({\n id: data.id,\n first_name: data.firstName,\n last_name: data.lastName,\n email: data.email,\n confirmEmail: data.email,\n city: data?.city || '',\n country: data?.countryId || '',\n phone: data?.phone || '',\n street_address: data?.streetAddress || '',\n state: data?.stateId || '',\n zip: data?.zipCode || '',\n})\n\ninterface LogoutUserParams {\n onLogoutSuccess?: () => void\n onLogoutError?: (error: AxiosError) => void\n setIsLogged?: (isLogged: boolean) => void\n}\n\nexport const logoutUser = async ({\n onLogoutSuccess,\n onLogoutError,\n setIsLogged,\n}: LogoutUserParams) => {\n try {\n await logout()\n onLogoutSuccess && onLogoutSuccess()\n if (isBrowser) {\n window.localStorage.removeItem('user_data')\n setIsLogged && 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 && onLogoutError(e as AxiosError)\n }\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 { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport _get from 'lodash/get'\n\nimport { CONFIGS } from '../../config/setConfigs'\nimport { isBrowser } from '../../utils/isBrowser'\nimport { getCookieByName, setCustomCookie } from '../../utils/cookies'\nimport { publicRequest } from './publicRequest'\n\npublicRequest.interceptors.request.use((config: InternalAxiosRequestConfig) => {\n const guestToken = isBrowser ? window.localStorage.getItem('auth_guest_token') : null\n if (guestToken) {\n config.headers['Authorization-Guest'] = guestToken\n }\n\n const xtfCookie = getCookieByName('X-TF-ECOMMERCE')\n if (xtfCookie) {\n config.headers['X-TF-ECOMMERCE'] = xtfCookie\n }\n\n const additionalCookiesHeaderValue = isBrowser ? (document.cookie ?? '') : ''\n if (additionalCookiesHeaderValue !== '') {\n config.headers['Additional-Cookies'] = additionalCookiesHeaderValue\n }\n\n if (CONFIGS.X_SOURCE_ORIGIN) {\n config.headers['X-Source-Origin'] = CONFIGS.X_SOURCE_ORIGIN\n }\n\n if (CONFIGS.BASE_URL) {\n config.baseURL = CONFIGS.BASE_URL + '/api'\n }\n\n return config\n})\n\npublicRequest.interceptors.response.use(\n (response: AxiosResponse) => {\n const authGuestToken: string | null = _get(\n response,\n 'headers.authorization-guest',\n ''\n )\n\n if (isBrowser && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n const xtfCookie = _get(response, 'headers.x-tf-ecommerce')\n const url = _get(response, 'config.url')\n const method = _get(response, 'config.method')\n\n if (xtfCookie && !(url === '/auth' && method === 'delete')) {\n setCustomCookie('X-TF-ECOMMERCE', xtfCookie)\n }\n\n return response\n },\n (error: AxiosError) => {\n if (error?.response?.status === 401) {\n if (isBrowser) {\n window.localStorage.removeItem('user_data')\n const errorType = _get(error, 'response.data.error')\n if (errorType === 'invalid_token') {\n window.location.href = '/'\n }\n }\n }\n\n const authGuestToken = _get(error, 'response.headers.authorization-guest')\n if (isBrowser && authGuestToken) {\n window.localStorage.setItem('auth_guest_token', authGuestToken)\n publicRequest.setGuestToken(authGuestToken)\n }\n\n return Promise.reject(error)\n }\n)\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport type {\n ICartRequestData,\n ICartResponse,\n IGetCartResponse,\n} from '../../types/api/cart.d'\nimport { isBrowser } from '../../utils/isBrowser'\nimport { publicRequest } from './publicRequest'\n\nexport const addToCart = async (\n id: string | number,\n data: ICartRequestData\n): Promise<ICartResponse> => {\n const response: AxiosResponse<ICartResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `v1/event/${id}/add-to-cart/`,\n { data },\n {\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n },\n }\n )\n return response.data\n}\n\nexport const getCart = async (): Promise<IGetCartResponse> => {\n const response: AxiosResponse<IGetCartResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/cart`)\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport type { ICheckoutResponse } from '../../types/api/checkout.d'\nimport { publicRequest } from './publicRequest'\n\nexport const postOnCheckout = async (\n data: any,\n freeTicket = false\n): Promise<ICheckoutResponse> => {\n if (freeTicket) {\n delete data.attributes.city\n delete data.attributes.country\n delete data.attributes.state\n delete data.attributes.street_address\n }\n\n const response: AxiosResponse<ICheckoutResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/on-checkout`, { data })\n\n return response.data\n}\n\nexport const updateCheckout = async (data: any): Promise<ICheckoutResponse> => {\n const response: AxiosResponse<ICheckoutResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/checkout`, { data })\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _forEach from 'lodash/forEach'\n\nimport type { IAxiosResponseData } from '../../types/api/axiosResponse.d'\nimport type {\n ICountriesResponse,\n IEventResponse,\n IRSVPRequestData,\n IRSVPResponse,\n IStatesResponse,\n ITicketData,\n ITicketsAdaptedResponse,\n ITicketsResponse,\n ITimeslotsAdaptedResponse,\n IWaitingListRequestData,\n IWaitingListResponse,\n} from '../../types/api/common.d'\nimport { getQueryVariable } from '../../utils/getQueryVariable'\nimport { isBrowser } from '../../utils/isBrowser'\nimport { publicRequest } from './publicRequest'\n\nexport const getEvent = async (\n id: string | number,\n pk?: string\n): Promise<IEventResponse> => {\n let referralValue = ''\n let invitationHash\n if (isBrowser) {\n const params = new URL(`${window.location}`)\n const referralId = params.searchParams.get('ttf_r') || ''\n const referral_key = window.localStorage.getItem('referral_key')\n const [, referralIdlocal] = (referral_key || '').split('.')\n referralValue = referralId || (referralIdlocal ?? '')\n invitationHash = params.searchParams.get('invitation-hash') || null\n }\n\n const response: AxiosResponse<IEventResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${id}`, {\n params: { pk, invitationHash },\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n 'Referrer-Id': isBrowser ? referralValue : '',\n },\n })\n return response.data\n}\n\nexport const getTickets = async (\n eventId: string | number,\n promoCode: string,\n pk?: string\n): Promise<ITicketsAdaptedResponse> => {\n const invitationHash = getQueryVariable('invitation-hash')\n const referralId = getQueryVariable('ttf_r')\n\n if (referralId) {\n window.localStorage.setItem('promoter_id', referralId)\n }\n\n const promoterId = window.localStorage.getItem('promoter_id')\n const params = { pk } as Record<string, string | number | undefined>\n\n if (invitationHash) {\n params['invitation-hash'] = invitationHash\n }\n\n const headers = publicRequest.defaults.headers.common\n\n if (promoterId) {\n headers['Promotion-Event'] = String(eventId)\n headers['Referrer-Id'] = isBrowser ? promoterId : ''\n }\n\n if (promoCode) {\n headers['Promotion-Event'] = String(eventId)\n headers['Promotion-Code'] = promoCode\n window.localStorage.removeItem('promoter_id')\n }\n\n const response: AxiosResponse<ITicketsResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/tickets/`, {\n params,\n headers,\n })\n\n const { tickets } = response.data.data.attributes\n const ticketsArr: ITicketData[] = []\n _forEach(tickets, (item) => {\n ticketsArr.push(item)\n })\n const adaptedResponse: AxiosResponse<ITicketsAdaptedResponse, AxiosRequestConfig> = {\n ...response,\n data: {\n ...response.data,\n data: {\n ...response.data.data,\n attributes: {\n ...response.data.data.attributes,\n tickets: ticketsArr,\n },\n },\n },\n }\n\n return adaptedResponse.data\n}\n\nexport const getTimeSlotsByDate = async (\n eventId: string | number,\n date: string,\n promoCode?: string,\n pk?: string\n): Promise<ITimeslotsAdaptedResponse> => {\n const invitationHash = getQueryVariable('invitation-hash')\n const referralId = getQueryVariable('ttf_r')\n\n if (referralId) {\n window.localStorage.setItem('promoter_id', referralId)\n }\n\n const promoterId = window.localStorage.getItem('promoter_id')\n const params = { pk } as Record<string, string | number | undefined>\n\n if (invitationHash) {\n params['invitation-hash'] = invitationHash\n }\n\n const headers = publicRequest.defaults.headers.common\n\n if (promoterId) {\n headers['Promotion-Event'] = String(eventId)\n headers['Referrer-Id'] = isBrowser ? promoterId : ''\n }\n\n if (promoCode) {\n headers['Promotion-Event'] = String(eventId)\n headers['Promotion-Code'] = promoCode\n window.localStorage.removeItem('promoter_id')\n }\n\n const response: AxiosResponse<ITimeslotsAdaptedResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/timeslots`, {\n params: {\n date,\n remove_past_slots: true,\n ...params,\n },\n headers,\n })\n return response.data\n}\n\nexport const getCountries = async (): Promise<ICountriesResponse> => {\n const response: AxiosResponse<ICountriesResponse, AxiosRequestConfig> =\n await publicRequest.get('/countries/list')\n return response.data\n}\n\nexport const getStates = async (countryId: string | number): Promise<IStatesResponse> => {\n const response: AxiosResponse<IStatesResponse, AxiosRequestConfig> =\n await publicRequest.get(`/countries/${countryId}/states/`)\n return response.data\n}\n\nexport const sendRSVPInfo = async (\n eventId: number,\n data: { data: IRSVPRequestData }\n): Promise<IRSVPResponse> => {\n const response: AxiosResponse<IRSVPResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${eventId}/send-rsvp-info`, data)\n\n return response.data\n}\n\nexport const addToWaitingList = async (\n id: number,\n data: IWaitingListRequestData\n): Promise<IWaitingListResponse> => {\n const response: AxiosResponse<IWaitingListResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${id}/add_to_waiting_list`, {\n data,\n })\n\n return response.data\n}\n\nexport const postReferralVisits = async (\n eventId: string,\n referralId: string\n): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.post(`v1/event/${eventId}/referrer/`, {\n referrer: `${referralId}`,\n })\n\n return response.data\n}\n\nexport const validatePhoneNumber = async (phone: string): Promise<IAxiosResponseData> => {\n const response: AxiosResponse<IAxiosResponseData, AxiosRequestConfig> =\n await publicRequest.get(`/v1/account/validate_phone?phone=${phone}`)\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { CONFIGS } from '../../config'\nimport type { IOrderResponse, IOrdersResponse } from '../../types/api/orders.d'\nimport { publicRequest } from './publicRequest'\n\nexport const getOrders = async (\n page: number,\n limit: number,\n eventSlug: string\n): Promise<IOrdersResponse> => {\n const slug = eventSlug || CONFIGS.EVENT_SLUG || ''\n\n const response: AxiosResponse<IOrdersResponse, AxiosRequestConfig> =\n await publicRequest.get(\n `v1/account/orders/?page=${page}&limit=${limit}&filter[event]=${slug}&${\n CONFIGS.BRAND_SLUG\n ? `filter[brand]=${CONFIGS.BRAND_SLUG}&filter[subbrands]=true`\n : ''\n }`\n )\n\n return response.data\n}\n\nexport const getOrderDetails = async (orderId: string): Promise<IOrderResponse> => {\n const response: AxiosResponse<IOrderResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/account/order/${orderId}`)\n\n return response.data\n}\n","import { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport _map from 'lodash/map'\nimport { nanoid } from 'nanoid/non-secure'\n\nimport type {\n ICheckoutCompleteDataResponse,\n IConditionsAdaptedData,\n IConditionsAdaptedDataResponse,\n IConditionsDataResponse,\n IFreeRegistrationDataResponse,\n IPaymentDataResponse,\n IPaymentSuccessDataResponse,\n} from '../../types/api/payment.d'\nimport { isBrowser } from '../../utils/isBrowser'\nimport { publicRequest } from './publicRequest'\n\nexport const getPaymentData = async (hash: string): Promise<IPaymentDataResponse> => {\n const response: AxiosResponse<IPaymentDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/order/${hash}/review`, {\n headers: { 'Referer-Url': isBrowser ? document.referrer : '' },\n })\n\n return response.data\n}\n\nexport const handlePaymentSuccess = async (\n orderHash: string\n): Promise<IPaymentSuccessDataResponse> => {\n const response: AxiosResponse<IPaymentSuccessDataResponse, AxiosRequestConfig> =\n await publicRequest.post(`v1/order/${orderHash}/success`, undefined, {\n headers: {\n ...publicRequest.defaults.headers.common,\n 'Referer-Url': isBrowser ? document.referrer : '',\n },\n })\n return response.data\n}\n\nexport const handleFreeSuccess = async (\n orderHash: string\n): Promise<IFreeRegistrationDataResponse> => {\n const response: AxiosResponse<IFreeRegistrationDataResponse, AxiosRequestConfig> =\n await publicRequest.post(\n `v1/order/${orderHash}/complete_free_registration`,\n undefined,\n { headers: { 'Referer-Url': isBrowser ? document.referrer : '' } }\n )\n return response.data\n}\n\nexport const getConfirmationData = async (\n orderHash: string\n): Promise<ICheckoutCompleteDataResponse> => {\n const response: AxiosResponse<ICheckoutCompleteDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/order/${orderHash}/payment/complete`)\n return response.data\n}\n\nexport const getConditions = async (\n eventId: string\n): Promise<IConditionsAdaptedDataResponse> => {\n const response: AxiosResponse<IConditionsDataResponse, AxiosRequestConfig> =\n await publicRequest.get(`v1/event/${eventId}/conditions`)\n\n const adaptedData: IConditionsAdaptedData[] = _map(\n response.data.data.attributes,\n (item) => ({\n id: nanoid(),\n text: item,\n checked: false,\n })\n )\n\n const returnData: AxiosResponse<IConditionsAdaptedDataResponse, AxiosRequestConfig> = {\n ...response,\n data: {\n ...response.data,\n data: {\n ...response.data.data,\n attributes: adaptedData,\n },\n },\n }\n\n return returnData.data\n}\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\nexport { nanoid, customAlphabet }\n","// Import and re-export from shared\nexport { priceWithCurrency } from 'tf-checkout-shared'\n\nexport const emptyPhone = (phone: string): string | undefined =>\n phone.length < 4 ? undefined : phone\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n container: {\n marginHorizontal: 24,\n marginBottom: 50,\n },\n input: {\n marginBottom: 16,\n },\n submitButton: {\n marginVertical: 32,\n },\n submitButtonDisabled: {\n marginVertical: 32,\n backgroundColor: R.colors.disabled,\n },\n customCheckboxText: {\n paddingRight: 32,\n },\n privacyPolicyLink: {\n textDecorationLine: 'underline',\n color: 'blue',\n },\n\n skippingRootContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n flex: 1,\n },\n skippingDialogContainer: {\n backgroundColor: R.colors.white,\n alignItems: 'center',\n justifyContent: 'center',\n padding: 24,\n borderRadius: 5,\n elevation: 4,\n shadowColor: R.colors.black,\n shadowOffset: {\n width: 2,\n height: 4,\n },\n shadowOpacity: 0.5,\n shadowRadius: 3,\n },\n skippingBrandImage: {\n height: 90,\n width: 250,\n resizeMode: 'contain',\n tintColor: R.colors.black,\n },\n skippingMessage: {\n fontSize: 20,\n color: R.colors.black,\n fontWeight: '700',\n marginBottom: 24,\n },\n ttfPolicyError: {\n color: R.colors.danger,\n marginTop: 8,\n },\n})\n","import {\n BillingDetails,\n CardForm,\n CardFormView,\n initStripe,\n useConfirmPayment,\n} from '@stripe/stripe-react-native'\nimport _every from 'lodash/every'\nimport _forEach from 'lodash/forEach'\nimport _map from 'lodash/map'\nimport _mapKeys from 'lodash/mapKeys'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert, Text, View } from 'react-native'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\n\nimport { IFetchAccessTokenResponse, IOrderReview } from '../../api/types'\nimport { CartTimer, Loading } from '../../components'\nimport Button from '../../components/button/Button'\nimport { IFormFieldProps } from '../../components/formField/types'\nimport { CheckoutCore, CheckoutCoreHandle, SessionHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport { Config } from '../../helpers/Config'\nimport { priceWithCurrency } from '../../helpers/StringsHelper'\nimport { orderReviewItems } from './CheckoutData'\nimport Conditions from './components/Conditions'\nimport OrderReview from './components/OrderReview'\nimport s from './styles'\nimport { ICheckoutProps, IOrderDetails, IOrderItem } from './types'\n\n/** @deprecated Use CheckoutV2 instead */\nconst Checkout = forwardRef<SessionHandleType, ICheckoutProps>(\n (\n {\n checkoutData,\n onFetchOrderReviewError,\n onFetchOrderReviewSuccess,\n onFetchEventConditionsError,\n onFetchEventConditionsSuccess,\n onCheckoutCompletedError,\n onCheckoutCompletedSuccess,\n onPaymentError,\n onPaymentSuccess,\n onStripeInitializeError,\n texts,\n styles,\n onPressExit,\n areAlertsEnabled = true,\n areLoadingIndicatorsEnabled = true,\n onLoadingChange,\n onFetchOrderDetailsError,\n onFetchOrderDetailsSuccess,\n onCartExpired,\n shouldCartTimerNotMinimizeOnTap,\n },\n ref\n ) => {\n //#region State\n const { confirmPayment, loading: isLoadingPayment } = useConfirmPayment()\n const [isLoading, setIsLoading] = useState(true)\n const [orderReview, setOrderReview] = useState<IOrderReview>()\n const [conditionsTexts, setConditionsTexts] = useState<string[]>([])\n const [conditionsValues, setConditionsValues] = useState<boolean[]>([])\n const [orderInfo, setOrderInfo] = useState<IOrderItem[]>(orderReviewItems)\n const [paymentInfo, setPaymentInfo] = useState<CardFormView.Details>()\n const [isStripeConfigMissing, setIsStripeConfigMissing] = useState(false)\n const [isPaymentRequired, setIsPaymentRequired] = useState<boolean | undefined>(\n undefined\n )\n const [secondsLeft, setSecondsLeft] = useState<number | undefined>(undefined)\n //#endregion State\n\n //#region Ref\n const checkoutCoreRef = useRef<CheckoutCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n //#endregion Ref\n\n const showLoading = () => setIsLoading(true)\n const hideLoading = () => setIsLoading(false)\n\n const showAlert = (message: string) => {\n if (areAlertsEnabled) {\n Alert.alert('', message)\n }\n }\n\n const isCheckoutCoreRefReady = (): boolean => {\n if (!checkoutCoreRef.current) {\n onFetchOrderReviewError?.({\n message: 'CheckoutCore is not initialized',\n })\n showAlert('CheckoutCore is not initialized')\n return false\n }\n\n return true\n }\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n if (!accessTokenError && accessTokenData?.accessToken) {\n await fetchInitialData()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n await fetchInitialData()\n },\n }))\n //#endregion Imperative Handler\n\n //#region Fetch Data\n const fetchEventConditionsAsync = async () => {\n if (!isCheckoutCoreRefReady || !Config.EVENT_ID) {\n return\n }\n\n const { error: conditionsError, data: conditionsData } =\n await checkoutCoreRef.current!.getEventConditions()\n\n if (conditionsError) {\n hideLoading()\n onFetchEventConditionsError?.(conditionsError)\n\n return showAlert(conditionsError.message || 'Error while fetching conditions')\n }\n\n setConditionsValues(_map(conditionsData, () => false))\n setConditionsTexts(conditionsData)\n hideLoading()\n onFetchEventConditionsSuccess?.(conditionsData)\n }\n\n const fetchOrderReviewAsync = async () => {\n const { orderReviewData, orderReviewError } =\n await checkoutCoreRef.current!.getOrderReview(checkoutData.hash)\n hideLoading()\n\n if (orderReviewError) {\n hideLoading()\n setIsStripeConfigMissing(true)\n onFetchOrderReviewError?.(orderReviewError)\n\n return showAlert(orderReviewError?.message || 'Error while getting Order Review')\n }\n\n if (!orderReviewData) {\n onFetchOrderReviewError?.({\n message: 'No order review data found. Please try again later',\n })\n\n return showAlert('No order review data found. Please try again later')\n }\n\n hideLoading()\n onFetchOrderReviewSuccess?.(orderReviewData)\n setSecondsLeft(orderReviewData.expiresAt)\n\n const tOrderInfo = [...orderInfo]\n const currency = orderReviewData.reviewData.currency\n _forEach(tOrderInfo, (item) => {\n _mapKeys(orderReviewData.reviewData, (value, key) => {\n if (item.id === key) {\n //@ts-ignore\n item.title = texts?.orderReviewItems?.[key] ?? item.title\n if (key === 'price' || key === 'total') {\n item.value = priceWithCurrency(value, currency)\n } else {\n item.value = value\n }\n }\n })\n })\n\n setOrderInfo(tOrderInfo)\n setOrderReview(orderReviewData)\n\n if (orderReviewData?.reviewData.total !== '0.00') {\n if (!orderReviewData.paymentData?.stripePublishableKey) {\n onStripeInitializeError?.('Stripe is not configured for this event')\n\n showAlert('Stripe is not configured for this event.Please contact support.')\n return\n }\n\n setIsPaymentRequired(true)\n\n try {\n await initStripe({\n publishableKey: orderReviewData.paymentData.stripePublishableKey,\n stripeAccountId: orderReviewData.paymentData.stripeConnectedAccount,\n })\n } catch (stripeError) {\n onStripeInitializeError?.('Error initializing Stripe')\n }\n } else {\n setIsPaymentRequired(false)\n }\n }\n\n const fetchInitialData = async () => {\n showLoading()\n await fetchEventConditionsAsync()\n await fetchOrderReviewAsync()\n hideLoading()\n }\n //#endregion Fetch Data\n\n //#region Handlers\n const handleOnPressExit = () => {\n onPressExit()\n }\n\n const handleOnChangePaymentInfo = (details: CardFormView.Details) => {\n setPaymentInfo(details)\n }\n\n const handleOnCheckCondition = (index: number) => {\n const tConditionsValues = [...conditionsValues]\n tConditionsValues[index] = !conditionsValues[index]\n setConditionsValues(tConditionsValues)\n }\n\n const handleFetchOrderDetails = async () => {\n showLoading()\n const { orderDetailsData, orderDetailsError } =\n await checkoutCoreRef.current!.getPurchaseOrderDetails(checkoutData.id)\n hideLoading()\n\n if (orderDetailsError) {\n onFetchOrderDetailsError?.(orderDetailsError)\n return showAlert(\n orderDetailsError.message || 'Error while fetching order details'\n )\n }\n\n if (!orderDetailsData) {\n onFetchOrderDetailsError?.({\n code: 404,\n message: 'No order data found',\n })\n return showAlert('No order data found')\n }\n\n if (!orderDetailsData.items) {\n onFetchOrderDetailsError?.({\n message: 'No items found in order',\n })\n return showAlert('No items found in order')\n }\n\n if (!Config.EVENT_ID) {\n return onFetchOrderDetailsError?.({\n message: 'EventId not configured.',\n })\n }\n\n const eventIdNumber =\n typeof Config.EVENT_ID === 'number'\n ? Config.EVENT_ID\n : parseInt(Config.EVENT_ID, 10)\n\n const orderDetails: IOrderDetails = {\n eventId: eventIdNumber,\n ticketName: orderDetailsData.items[0].name,\n ticketCost: orderDetailsData.items[0].price,\n numberOfTickets: parseInt(orderDetailsData.items[0].quantity, 10),\n eventUserTickets: _map(orderDetailsData.tickets, (ticket) => ({\n hash: ticket.hash,\n ticketType: ticket.ticketType,\n holderEmail: ticket.holderEmail,\n holderPhone: ticket.holderPhone,\n holderName: ticket.holderName,\n qrData: ticket.qrData,\n pdfLink: ticket.pdfLink,\n description: ticket.description,\n descriptionPlain: ticket.descriptionPlain,\n })),\n }\n\n onFetchOrderDetailsSuccess?.(orderDetails)\n }\n\n const handleOnPressFreeRegistration = async () => {\n showLoading()\n const { freeRegistrationError } = await checkoutCoreRef.current!.freeRegistration(\n checkoutData.hash\n )\n\n if (freeRegistrationError) {\n hideLoading()\n onPaymentError?.(freeRegistrationError)\n\n return showAlert(freeRegistrationError.message || 'Error while registering')\n }\n\n hideLoading()\n await handleFetchOrderDetails()\n\n checkoutCoreRef.current?.stopCartTimer()\n onPaymentSuccess?.()\n }\n\n const handleOnPressPay = async () => {\n if (!orderReview) {\n onPaymentError?.({\n message: `Order data is missing ${JSON.stringify(orderReview)}`,\n })\n\n return showAlert('No order data found')\n }\n\n const { addressData } = orderReview\n\n showLoading()\n\n const billingDetails: BillingDetails = {\n name: `${orderReview.billingData.firstName} ${orderReview.billingData.lastName}`,\n address: {\n line1: addressData.line1,\n city: addressData.city,\n state: addressData.state,\n postalCode: addressData.postalCode,\n },\n }\n\n const { error: confirmPaymentError, paymentIntent } = await confirmPayment(\n orderReview.paymentData!.stripeClientSecret!,\n {\n paymentMethodType: 'Card',\n paymentMethodData: { billingDetails },\n }\n )\n\n if (confirmPaymentError || paymentIntent?.status !== 'Succeeded') {\n hideLoading()\n onCheckoutCompletedError?.({\n message: confirmPaymentError?.message || 'Error confirming payment',\n extraData: confirmPaymentError?.code,\n })\n\n return showAlert(confirmPaymentError?.message || 'Error confirming payment')\n }\n\n onCheckoutCompletedSuccess?.(checkoutData)\n\n const { error: onPaymentSuccessError } =\n await checkoutCoreRef.current!.paymentSuccess(checkoutData.hash)\n\n if (onPaymentSuccessError) {\n hideLoading()\n onPaymentError?.(onPaymentSuccessError)\n\n return showAlert(\n onPaymentSuccessError.message || 'Error while performing payment'\n )\n }\n\n hideLoading()\n await handleFetchOrderDetails()\n\n checkoutCoreRef.current?.stopCartTimer()\n onPaymentSuccess?.()\n }\n //#endregion\n\n const getConditions = (): IFormFieldProps[] =>\n _map(conditionsTexts, (conditionTxt, index) => {\n return {\n id: `condition${index}`,\n fieldType: 'checkbox',\n checkboxProps: {\n isActive: conditionsValues[index],\n text: conditionTxt,\n onPress: () => handleOnCheckCondition(index),\n },\n }\n })\n\n const onLoadingChangeCallback = useCallback(\n (loading: boolean) => {\n if (onLoadingChange) {\n onLoadingChange(loading)\n }\n },\n [onLoadingChange]\n )\n\n //#region useEffects\n useEffect(() => {\n onLoadingChangeCallback(isLoading)\n }, [isLoading, onLoadingChangeCallback])\n\n useEffect(() => {\n fetchInitialData()\n }, [])\n //#endregion\n\n const getIsDataValid = () => {\n if (secondsLeft === 0) {\n return false\n }\n const paymentValid = paymentInfo?.complete\n return paymentValid && _every(conditionsValues, (item) => item === true)\n }\n\n const isDataValid = getIsDataValid()\n\n const payButtonStyle = isDataValid\n ? styles?.payment?.button\n : styles?.payment?.buttonDisabled\n\n //#region RENDER\n return isStripeConfigMissing ? (\n <View style={[s.missingStripeContainer, styles?.missingStripeConfig?.container]}>\n <Text style={[s.missingStripeMessage, styles?.missingStripeConfig?.message]}>\n {texts?.missingStripeConfigMessage ||\n 'Payment handler is missing, please contact support'}\n </Text>\n\n <Button\n styles={styles?.missingStripeConfig?.exitButton}\n text={texts?.exitButton || 'Exit'}\n onPress={handleOnPressExit}\n />\n </View>\n ) : (\n <CheckoutCore\n ref={checkoutCoreRef}\n onSecondsLeftChange={setSecondsLeft}\n onCartExpired={onCartExpired}\n >\n <SessionHandle ref={sessionHandleRef}>\n <KeyboardAwareScrollView extraScrollHeight={32}>\n <View style={styles?.rootStyle}>\n <View>\n <Text style={[s.title, styles?.title]}>\n {texts?.title || 'GET YOUR TICKETS'}\n </Text>\n <Text style={[styles?.subTitle]}>\n {texts?.subTitle || 'Order review'}\n </Text>\n </View>\n <OrderReview orderItems={orderInfo} styles={styles?.orderReview} />\n {isPaymentRequired && !isStripeConfigMissing && (\n <View style={styles?.payment?.container}>\n <Text style={styles?.payment?.title}>\n {texts?.providePaymentInfo ||\n 'Please provide your payment information'}\n </Text>\n <CardForm\n onFormComplete={handleOnChangePaymentInfo}\n style={[s.card, styles?.payment?.cardContainer]}\n cardStyle={styles?.payment?.cardStyle}\n />\n </View>\n )}\n <Conditions {...getConditions()} />\n {isPaymentRequired && !isStripeConfigMissing && (\n <Button\n text={texts?.payButton || 'PAY'}\n onPress={handleOnPressPay}\n isLoading={isLoading || isLoadingPayment}\n isDisabled={!isDataValid}\n styles={{\n container: s.payButton,\n ...payButtonStyle,\n }}\n />\n )}\n {isPaymentRequired !== undefined && !isPaymentRequired && (\n <Button\n text={texts?.freeRegistrationButton || 'COMPLETE REGISTRATION'}\n onPress={handleOnPressFreeRegistration}\n isLoading={isLoading || isLoadingPayment}\n styles={styles?.freeRegistrationButton}\n isDisabled={secondsLeft === 0}\n />\n )}\n </View>\n {isLoading && areLoadingIndicatorsEnabled && <Loading />}\n </KeyboardAwareScrollView>\n {secondsLeft !== undefined && (\n <CartTimer\n secondsLeft={secondsLeft!}\n styles={styles?.cartTimer}\n texts={texts?.cartTimer}\n shouldNotMinimize={shouldCartTimerNotMinimizeOnTap}\n />\n )}\n </SessionHandle>\n </CheckoutCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default Checkout\n","import { IOrderItem } from './types'\n\nexport const orderReviewItems: IOrderItem[] = [\n {\n id: 'event',\n title: 'EVENT',\n value: '',\n },\n {\n id: 'ticketType',\n title: 'TICKET TYPE',\n value: 'First RELEASE',\n },\n {\n id: 'numberOfTickets',\n title: 'NUMBER OF TICKETS',\n value: '',\n },\n {\n id: 'price',\n title: 'PRICE PER TICKET',\n value: '',\n },\n {\n id: 'total',\n title: 'TOTAL',\n value: '',\n },\n]\n","import _map from 'lodash/map'\nimport React from 'react'\nimport { View } from 'react-native'\n\nimport { Checkbox } from '../../../components'\nimport { IFormFieldProps } from '../../../components/formField/types'\nimport { ConditionsStyles as s } from './styles'\n\nconst ConditionItem = ({ id, checkboxProps }: IFormFieldProps) => (\n <Checkbox\n key={id}\n text={checkboxProps!.text}\n isActive={checkboxProps!.isActive}\n onPress={() => checkboxProps!.onPress(id!)}\n />\n)\n\nconst Conditions = (props: IFormFieldProps[]) => {\n return <View style={s.rootContainer}>{_map(props, ConditionItem)}</View>\n}\n\nexport default Conditions\n","import { StyleSheet } from 'react-native'\n\nexport const OrderReviewStyles = StyleSheet.create({\n rootContainer: {\n marginHorizontal: 0,\n marginVertical: 24,\n paddingVertical: 12,\n flex: 1,\n flexWrap: 'wrap',\n },\n orderItemContainer: {\n paddingVertical: 4,\n width: '100%',\n },\n orderItemTitle: {\n fontWeight: '800',\n fontSize: 16,\n },\n orderItemValue: {\n lineHeight: 20,\n },\n})\n\nexport const ConditionsStyles = StyleSheet.create({\n rootContainer: {\n marginVertical: 16,\n },\n})\n","import _map from 'lodash/map'\nimport React from 'react'\nimport { Text, View } from 'react-native'\n\nimport { IOrderItem, IOrderReviewProps } from '../types'\nimport { OrderReviewStyles as s } from './styles'\n\nconst OrderItem = ({ title, value, styles }: IOrderItem) => (\n <View style={[s.orderItemContainer, styles?.container]} key={`orderReview.${title}`}>\n <Text style={[s.orderItemTitle, styles?.title]}>{title}</Text>\n <Text style={[s.orderItemValue, styles?.value]} allowFontScaling={true}>\n {value}\n </Text>\n </View>\n)\n\nconst OrderReview = ({ orderItems, styles }: IOrderReviewProps) => (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n {_map(orderItems, (item) => (\n <OrderItem\n key={`orderReview.${item.id}`}\n id={item.id}\n title={item.title}\n value={item.value}\n styles={styles?.item}\n />\n ))}\n </View>\n)\n\nexport default OrderReview\n","import { Platform, StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n title: {\n fontSize: 20,\n fontWeight: '700',\n marginBottom: 16,\n color: R.colors.primary,\n },\n subTitle: {\n fontSize: 14,\n fontWeight: '700',\n marginBottom: 16,\n color: R.colors.primary,\n },\n payButton: {\n width: '100%',\n marginVertical: 24,\n alignSelf: 'center',\n },\n card: {\n marginTop: 24,\n minHeight: Platform.OS === 'ios' ? 180 : 270,\n maxHeight: Platform.OS === 'ios' ? 300 : 350,\n width: '80%',\n borderRadius: 10,\n padding: 8,\n alignSelf: 'center',\n },\n missingStripeContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 16,\n },\n missingStripeMessage: {\n fontSize: 16,\n color: R.colors.white,\n textAlign: 'center',\n marginBottom: 24,\n },\n})\n","import _find from 'lodash/find'\nimport _forEach from 'lodash/forEach'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert, PermissionsAndroid, Platform } from 'react-native'\nimport {\n DocumentDirectoryPath,\n DownloadDirectoryPath,\n downloadFile,\n DownloadFileOptions,\n} from 'react-native-fs'\n\nimport {\n IFetchAccessTokenResponse,\n IMyOrderDetailsData,\n IMyOrderDetailsTicket,\n} from '../../api/types'\nimport { BottomSheetHandle } from '../../components/bottomSheetModal/BottomSheetModal'\nimport { OrderDetailsCore, SessionHandle, SessionHandleType } from '../../core'\nimport { OrderDetailsCoreHandle } from '../../core/OrderDetailsCore/OrderDetailsCoreTypes'\nimport { getData, LocalStorageKeys } from '../../helpers/LocalStorage'\nimport { TicketActionType } from './components/TicketActions/TicketActionsTypes'\nimport { IOnPressTicketDownload } from './components/TicketListItem/TicketListItem'\nimport MyOrderDetailsView from './MyOrderDetailsView'\nimport { DownloadStatus, IMyOrderDetailsProps } from './types'\n\nconst MyOrderDetails = forwardRef<SessionHandleType, IMyOrderDetailsProps>(\n (\n {\n data,\n styles,\n texts,\n config,\n onDownloadStatusChange,\n downloadStatusIcons,\n onAndroidWritePermission,\n onLinkCopied,\n onPressResaleTicket,\n\n onRemoveTicketFromResaleSuccess,\n onRemoveTicketFromResaleError,\n moreButtonIcon,\n ticketActionsIcons,\n },\n ref\n ) => {\n //#region State\n const [isWriteStorageEnabled, setIsWriteStorageEnabled] = useState<\n boolean | undefined\n >(undefined)\n const [isLinkCopied, setIsLinkCopied] = useState(false)\n const [downloadStatus, setDownloadStatus] = useState<DownloadStatus | undefined>(\n undefined\n )\n const [orderInfo, setOrderInfo] = useState<IMyOrderDetailsData>(data)\n const [isLoading, setIsLoading] = useState(false)\n\n const [selectedTicket, setSelectedTicket] = useState<\n IMyOrderDetailsTicket | undefined\n >(undefined)\n //#endregion State\n\n //#region refs\n const sessionHandleRef = useRef<SessionHandleType>(null)\n const myOrderDetailsCoreRef = useRef<OrderDetailsCoreHandle>(null)\n const bottomSheetModalRef = useRef<BottomSheetHandle>(null)\n //#endregion\n\n const handleOnDownloadStatusChange = useCallback(\n (status?: DownloadStatus) => {\n onDownloadStatusChange?.(status)\n },\n [onDownloadStatusChange]\n )\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {},\n async removeTicketFromResale() {},\n async resaleTicket() {},\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleOnPressTicketDownload = async ({\n hash,\n pdfLink,\n }: IOnPressTicketDownload) => {\n const accessToken = await getData(LocalStorageKeys.ACCESS_TOKEN)\n if (!accessToken) {\n return setDownloadStatus(undefined)\n }\n if (!pdfLink) {\n return setDownloadStatus('failed')\n }\n\n //Define path to store file along with the extension\n const path =\n Platform.OS === 'ios'\n ? `${DocumentDirectoryPath}/${hash}.pdf`\n : `${DownloadDirectoryPath}/${hash}.pdf`\n\n const headers = {\n Accept: 'application/pdf',\n 'Content-Type': 'application/pdf',\n Authorization: `Bearer ${accessToken}`,\n }\n //Define options\n const options: DownloadFileOptions = {\n fromUrl: pdfLink,\n toFile: path,\n headers: headers,\n }\n setDownloadStatus('downloading')\n const response = await downloadFile(options).promise\n\n if (response.statusCode === 200) {\n setDownloadStatus('downloaded')\n } else {\n setDownloadStatus('failed')\n }\n\n setTimeout(() => {\n setDownloadStatus(undefined)\n }, 5000)\n }\n\n const handleRemoveTicketFromResale = async (ticket: IMyOrderDetailsTicket) => {\n if (!myOrderDetailsCoreRef.current) {\n return Alert.alert('MyOrderDetailsCoreRef is not initialized')\n }\n\n setIsLoading(true)\n const { removeTicketFromResaleData, removeTicketFromResaleError } =\n await myOrderDetailsCoreRef.current.removeTicketFromResale(ticket.hash)\n setIsLoading(false)\n\n if (removeTicketFromResaleError || !removeTicketFromResaleData) {\n onRemoveTicketFromResaleError?.(removeTicketFromResaleError!)\n return Alert.alert('', removeTicketFromResaleError?.message)\n }\n\n const updatedOrderInfo = { ...orderInfo }\n _forEach(updatedOrderInfo.tickets, (item) => {\n if (item.hash === ticket.hash) {\n item.isSellable = true\n item.isOnSale = false\n }\n })\n\n Alert.alert('', removeTicketFromResaleData.message)\n\n setOrderInfo(updatedOrderInfo)\n onRemoveTicketFromResaleSuccess?.(removeTicketFromResaleData.message)\n }\n\n const askToRemoveTicketFromResale = (ticket: IMyOrderDetailsTicket) => {\n Alert.alert(\n 'Withdraw ticket confirmation',\n 'Are you sure you want to withdraw your ticket from resale?',\n [\n {\n text: 'No',\n },\n {\n text: 'Yes, withdraw',\n onPress: () => handleRemoveTicketFromResale(ticket),\n },\n ]\n )\n }\n\n const handleOnPressResaleTicket = (ticket: IMyOrderDetailsTicket) => {\n const activeTicketType = _find(\n data.items,\n (ticketType) => ticketType.hash === ticket.ticketTypeHash\n )\n\n return onPressResaleTicket(ticket, activeTicketType!.isActive)\n }\n\n const handleCloseBottomSheet = () => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.close()\n }\n setSelectedTicket(undefined)\n }\n\n const handleOnActionSelected = async (action: TicketActionType) => {\n if (!selectedTicket) {\n return\n }\n\n switch (action) {\n case 'download-pdf':\n handleOnPressTicketDownload({\n hash: selectedTicket.hash,\n pdfLink: selectedTicket.pdfLink,\n })\n handleCloseBottomSheet()\n break\n\n case 'refund':\n break\n\n case 'sell':\n handleOnPressResaleTicket(selectedTicket)\n handleCloseBottomSheet()\n break\n\n case 'remove-from-sale':\n await handleRemoveTicketFromResale(selectedTicket)\n handleCloseBottomSheet()\n break\n\n default:\n console.log('Nothing is selected')\n }\n }\n\n const handleOnPressCopyLink = () => {\n setIsLinkCopied(true)\n onLinkCopied?.(true)\n setTimeout(() => {\n setIsLinkCopied(false)\n onLinkCopied?.(false)\n }, 3000)\n }\n //#endregion Handlers\n\n //#region Effects\n useEffect(() => {\n handleOnDownloadStatusChange(downloadStatus)\n }, [downloadStatus, handleOnDownloadStatusChange])\n\n useEffect(() => {\n if (Platform.OS === 'ios') {\n return\n }\n\n PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE\n ).then((result) => {\n setIsWriteStorageEnabled(result)\n })\n }, [])\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n onAndroidWritePermission?.(isWriteStorageEnabled)\n }\n\n if (isWriteStorageEnabled === false && Platform.OS === 'android') {\n PermissionsAndroid.request(\n PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE\n ).then((result) => {\n setIsWriteStorageEnabled(result === 'granted')\n })\n }\n }, [isWriteStorageEnabled])\n //#endregion Effects\n\n //#region RENDER\n return (\n <OrderDetailsCore ref={myOrderDetailsCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <MyOrderDetailsView\n data={data}\n styles={styles}\n texts={texts}\n isLinkCopied={isLinkCopied}\n onPressCopyLink={handleOnPressCopyLink}\n onPressTicketDownload={handleOnPressTicketDownload}\n downloadStatus={downloadStatus}\n config={config}\n downloadStatusIcons={downloadStatusIcons}\n onPressResaleTicket={handleOnPressResaleTicket}\n onPressRemoveTicketFromResale={askToRemoveTicketFromResale}\n isLoading={isLoading}\n moreButtonIcon={moreButtonIcon}\n onTicketSelection={setSelectedTicket}\n selectedTicket={selectedTicket}\n onActionSelected={handleOnActionSelected}\n ticketActionsIcons={ticketActionsIcons}\n bottomSheetModalRef={bottomSheetModalRef}\n />\n </SessionHandle>\n </OrderDetailsCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default MyOrderDetails\n","import Clipboard from '@react-native-clipboard/clipboard'\nimport _map from 'lodash/map'\nimport React, { FC } from 'react'\nimport { Image, SectionList, Text, TouchableOpacity, View } from 'react-native'\n\nimport { IMyOrderDetailsItem, IMyOrderDetailsTicket } from '../../api/types'\nimport { BottomSheetModal, Loading } from '../../components'\nimport R from '../../res'\nimport Notification from './components/Notification'\nimport TicketActions from './components/TicketActions/TicketActions'\nimport { TicketActionType } from './components/TicketActions/TicketActionsTypes'\nimport TicketListItem from './components/TicketListItem/TicketListItem'\nimport s from './styles'\nimport { IMyOrderDetailsViewProps, IOrderDetailsSectionData } from './types'\n\nconst MyOrderDetailsView: FC<IMyOrderDetailsViewProps> = ({\n data: { header, items, tickets },\n styles,\n texts,\n isLinkCopied,\n onPressCopyLink,\n downloadStatus,\n config = {\n areActivityIndicatorsEnabled: true,\n areAlertsEnabled: true,\n },\n isLoading,\n\n onTicketSelection,\n selectedTicket,\n onActionSelected,\n ticketActionsIcons,\n bottomSheetModalRef,\n moreButtonIcon,\n}) => {\n //#region Handlers\n const onCopyLinkHandler = () => {\n if (isLinkCopied) {\n return\n }\n Clipboard.setString(header.shareLink)\n onPressCopyLink()\n }\n\n const handleOnTicketSelection = (ticket: IMyOrderDetailsTicket) => {\n onTicketSelection(ticket)\n }\n\n const handleHideActionsModal = () => {\n onTicketSelection(undefined)\n }\n\n const handleOnActionSelected = (actionType: TicketActionType) => {\n onActionSelected(actionType)\n }\n //#endregion\n\n const copyIconTint = styles?.header?.shareLink?.copyIconTint || R.colors.black\n const copyIconTintActive =\n styles?.header?.shareLink?.copyIconTintActive || R.colors.validGreen\n const title = texts?.title || 'ORDER DETAILS'\n const subTitle = texts?.subTitle || 'ORDER SUMMARY'\n const referralLink =\n texts?.referralLink || 'Your personal share link for this event is:'\n const itemsTotal = texts?.listItem?.total || 'Total'\n const itemsTicketType = texts?.listItem?.ticketType || 'Ticket Type: '\n const itemsPrice = texts?.listItem?.price || 'Price: '\n const itemsQuantity = texts?.listItem?.quantity || 'Quantity: '\n\n const ticketsTitle = texts?.ticketsTitle || 'Your Tickets: '\n const ticketsId = texts?.ticketItem?.ticketId || 'Ticket ID: '\n const ticketsType = texts?.ticketItem?.ticketType || 'Ticket Type: '\n const ticketsHolderName = texts?.ticketItem?.holderName || 'Ticket Holder Name: '\n const ticketsStatus = texts?.ticketItem?.status || 'Status: '\n const copyText = texts?.copyText?.copy || 'Copy'\n const copiedText = texts?.copyText?.copied || 'Copied'\n\n const soFarText = texts?.referral?.soFar || `So far, you've referred`\n const ticketsText = texts?.referral?.tickets || `tickets.`\n const sellTicket = texts?.sellTicket || 'Sell Ticket'\n const removeTicketFromResale = texts?.removeTicketFromResale || 'Remove from resale'\n const download = texts?.ticketItem?.download || `Download`\n\n const renderShareLink = () => (\n <View style={[s.shareLinkContainer, styles?.header?.shareLink?.container]}>\n <Text\n numberOfLines={1}\n ellipsizeMode=\"head\"\n style={styles?.header?.shareLink?.link}\n >\n {header.shareLink}\n </Text>\n <TouchableOpacity\n style={[s.copyContainer, styles?.header?.shareLink?.copyContainer]}\n onPress={onCopyLinkHandler}\n >\n <Text style={[s.copyText, styles?.header?.shareLink?.copyText]}>\n {isLinkCopied ? copiedText : copyText}\n </Text>\n <Image\n source={isLinkCopied ? R.icons.check : R.icons.copy}\n style={[\n s.copyIcon,\n styles?.header?.shareLink?.copyIcon,\n {\n tintColor: isLinkCopied ? copyIconTintActive : copyIconTint,\n },\n ]}\n />\n </TouchableOpacity>\n </View>\n )\n\n const renderHeader = () => (\n <View style={styles?.header?.container}>\n <Text style={styles?.header?.title}>{title}</Text>\n <Text style={styles?.header?.subTitle}>{subTitle}</Text>\n <Text style={styles?.header?.shareLink?.message}>{referralLink} </Text>\n {header?.shareLink && renderShareLink()}\n <Text style={styles?.header?.shareLink?.referrals}>\n {soFarText}{' '}\n <Text style={styles?.header?.shareLink?.referralValue}>\n {header.salesReferred}\n </Text>{' '}\n {ticketsText}\n </Text>\n </View>\n )\n\n const parsedItems: IOrderDetailsSectionData[] | undefined = items\n ? _map(items, (item) => {\n return {\n id: `${item.name}.${item.price}`,\n item: item,\n }\n })\n : undefined\n\n const parsedTickets = _map(tickets, (item) => {\n return {\n id: `${item.hash}`,\n item: item,\n }\n })\n\n const itemsData = [\n {\n title: items ? texts?.listItem?.title || 'Items' : '',\n data: parsedItems || [],\n renderItem: ({ item }: any) => renderItemComp(item),\n id: 0,\n },\n {\n title: ticketsTitle,\n data: parsedTickets,\n renderItem: ({ item }: any) => _renderTicket(item),\n id: 1,\n },\n ]\n\n const renderItemComp = ({ item }: { item: IMyOrderDetailsItem }) =>\n item ? (\n <View style={[s.listItemContainer, styles?.listItem?.container]}>\n <View style={styles?.listItem?.innerLeftContainer}>\n <Text style={styles?.listItem?.rowPlaceholder}>\n {itemsTicketType} <Text style={styles?.listItem?.rowValue}>{item.name}</Text>\n </Text>\n <View style={s.rowContainer}>\n <Text style={styles?.listItem?.rowPlaceholder}>{itemsPrice}</Text>\n <Text style={styles?.listItem?.rowValue}>\n {item.currency}\n {item.price}\n </Text>\n </View>\n <View style={s.rowContainer}>\n <Text style={styles?.listItem?.rowPlaceholder}>{itemsQuantity}</Text>\n <Text style={styles?.listItem?.rowValue}>{item.quantity}</Text>\n </View>\n </View>\n <View\n style={[s.listItemInnerRightContainer, styles?.listItem?.innerRightContainer]}\n >\n <Text style={styles?.listItem?.rowPlaceholder}>{itemsTotal}</Text>\n <Text style={styles?.listItem?.rowValue}>\n {item.currency}\n {item.total}\n </Text>\n </View>\n </View>\n ) : null\n\n const _renderTicket = ({ item }: { item: IMyOrderDetailsTicket }) => (\n <TicketListItem\n data={item}\n styles={styles?.ticketItem}\n texts={{\n ticketType: ticketsType,\n holderName: ticketsHolderName,\n ticketId: ticketsId,\n status: ticketsStatus,\n download: download,\n sellTicket: sellTicket,\n removeTicketFromResale: removeTicketFromResale,\n }}\n onPressActionsButton={handleOnTicketSelection}\n moreButtonIcon={moreButtonIcon || R.icons.more}\n />\n )\n\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <SectionList\n ListHeaderComponent={renderHeader}\n //@ts-ignore\n sections={[...itemsData]}\n renderSectionHeader={({ section }) => {\n if (section.id === 0) {\n if (!items) {\n return null\n }\n }\n return <Text style={styles?.sectionHeader}>{section.title}</Text>\n }}\n renderSectionFooter={({ section }) => {\n if (section.id === 0 && parsedItems) {\n return (\n <View style={[s.sectionFooterContainer, styles?.section0Footer?.container]}>\n <Text style={styles?.section0Footer?.label}>{itemsTotal}</Text>\n <Text style={styles?.section0Footer?.value}>\n {parsedItems ? parsedItems[0].item.currency : ''} {header.total}\n </Text>\n </View>\n )\n }\n return null\n }}\n />\n {config?.areAlertsEnabled &&\n (downloadStatus === 'downloaded' || downloadStatus === 'failed') && (\n <Notification\n isSuccess={downloadStatus === 'downloaded'}\n textSuccess={texts?.downloadNotification?.successMessage}\n textError={texts?.downloadNotification?.errorMessage}\n />\n )}\n {isLoading && <Loading />}\n\n {selectedTicket && (\n <BottomSheetModal\n onClose={handleHideActionsModal}\n styles={styles?.bottomSheetModal}\n texts={texts?.bottomSheetModal}\n ref={bottomSheetModalRef}\n content={\n <TicketActions\n onSelectAction={handleOnActionSelected}\n ticket={selectedTicket}\n styles={styles?.ticketActions}\n texts={texts?.ticketActions}\n icons={ticketActionsIcons}\n />\n }\n />\n )}\n </View>\n )\n}\n\nexport default MyOrderDetailsView\n","import React, { FC } from 'react'\nimport { Image, ImageSourcePropType, Text, View } from 'react-native'\n\nimport R from '../../../res'\nimport { NotificationStyles as s } from './styles'\n\nexport interface INotificationIcons {\n success?: ImageSourcePropType\n error?: ImageSourcePropType\n}\n\nexport interface INotificationProps {\n isSuccess: boolean\n textSuccess?: string\n textError?: string\n\n icons?: INotificationIcons\n}\n\nconst Notification: FC<INotificationProps> = ({\n isSuccess,\n textSuccess = 'File downloaded successfully',\n textError = 'There was an error downloading the file',\n icons,\n}) => {\n const textToShow = isSuccess ? textSuccess : textError\n const successIcon = icons?.success || R.icons.check\n const errorIcon = icons?.error || R.icons.error\n return (\n <View style={s.rootContainer}>\n <Text style={s.text}>{textToShow}</Text>\n <Image\n source={isSuccess ? successIcon : errorIcon}\n style={isSuccess ? s.iconSuccess : s.iconError}\n />\n </View>\n )\n}\n\nexport default Notification\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../../res'\n\nexport const NotificationStyles = StyleSheet.create({\n rootContainer: {\n padding: 24,\n backgroundColor: R.colors.white,\n position: 'absolute',\n bottom: 48,\n left: 24,\n right: 24,\n borderRadius: 2,\n elevation: 5,\n shadowColor: R.colors.black,\n shadowOffset: {\n width: 1,\n height: 5,\n },\n shadowRadius: 2,\n shadowOpacity: 0.2,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n text: {\n fontSize: 16,\n color: R.colors.black,\n },\n iconSuccess: {\n tintColor: R.colors.validGreen,\n height: 16,\n width: 16,\n resizeMode: 'contain',\n },\n iconError: {\n tintColor: R.colors.danger,\n height: 16,\n width: 16,\n resizeMode: 'contain',\n },\n})\n","import React, { FC } from 'react'\nimport {\n Image,\n ImageSourcePropType,\n ScrollView,\n Text,\n TouchableOpacity,\n View,\n} from 'react-native'\n\nimport { ITicketActionsProps } from './TicketActionsTypes'\n\nconst TicketActions: FC<ITicketActionsProps> = ({\n onSelectAction,\n ticket,\n icons,\n texts,\n styles,\n}) => {\n const handleOnPressDownload = () => onSelectAction('download-pdf')\n const handleOnPressSell = () => onSelectAction('sell')\n const handleOnPressRemoveFromSale = () => onSelectAction('remove-from-sale')\n\n const renderButton = (\n onPress: () => void,\n text: string,\n icon?: ImageSourcePropType\n ) => (\n <TouchableOpacity onPress={onPress} style={styles?.buttonContainer}>\n <View style={styles?.buttonContent}>\n {!!icon && <Image source={icon} style={styles?.icon} />}\n <Text style={styles?.text}>{text}</Text>\n </View>\n </TouchableOpacity>\n )\n\n const downloadPdf =\n ticket.pdfLink &&\n renderButton(\n handleOnPressDownload,\n texts?.downloadPdf || 'Download PDF',\n icons?.downloadPdf\n )\n\n const sellTicket =\n ticket.isSellable &&\n !ticket.isOnSale &&\n renderButton(handleOnPressSell, texts?.sell || 'Sell Ticket', icons?.sell)\n\n const removeFromResale =\n !ticket.isSellable &&\n ticket.isOnSale &&\n renderButton(\n handleOnPressRemoveFromSale,\n texts?.removeFromSale || 'Remove from resale',\n icons?.removeFromSale\n )\n\n return (\n <ScrollView style={[styles?.rootScrollViewContainer]}>\n {downloadPdf}\n {sellTicket}\n {removeFromResale}\n </ScrollView>\n )\n}\n\nexport default TicketActions\n","import React from 'react'\nimport { Image, Text, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../../../res'\nimport s from './TicketListItemStyles'\nimport { ITicketListItemProps } from './TicketListItemTypes'\n\nexport interface IOnPressTicketDownload {\n pdfLink?: string\n hash: string\n}\n\nconst TicketListItem = ({\n styles,\n texts,\n data,\n moreButtonIcon,\n onPressActionsButton,\n}: ITicketListItemProps) => {\n const handleOnPressActionsButton = () => {\n onPressActionsButton(data)\n }\n\n return (\n <View>\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <View style={styles?.leftContent}>\n <View style={s.rowContainer}>\n <Text style={styles?.rowPlaceholder}>{texts.ticketId}</Text>\n <Text style={styles?.rowValue}>{data.hash}</Text>\n </View>\n <View style={s.rowContainer}>\n <Text style={styles?.rowPlaceholder}>{texts.ticketType}</Text>\n <Text style={styles?.rowValue}>{data.ticketType}</Text>\n </View>\n <View style={s.rowContainer}>\n <Text style={styles?.rowPlaceholder}>{texts.holderName}</Text>\n <Text style={styles?.rowValue}>{data.holderName}</Text>\n </View>\n </View>\n\n <View style={[s.rightContent, styles?.rightContent]}>\n <Text style={styles?.rowPlaceholder}>\n {texts.status}\n <Text style={styles?.rowValue}>{data.status}</Text>\n </Text>\n\n <TouchableOpacity\n style={[s.moreButton, styles?.moreButton]}\n onPress={handleOnPressActionsButton}\n >\n <Image\n source={moreButtonIcon || R.icons.more}\n style={[s.moreButtonIcon, styles?.moreButtonIcon]}\n />\n </TouchableOpacity>\n </View>\n </View>\n </View>\n )\n}\n\nexport default TicketListItem\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n rootContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n borderWidth: 2,\n marginVertical: 8,\n },\n rightContent: {\n justifyContent: 'space-between',\n alignItems: 'flex-end',\n },\n rowContainer: {\n flexDirection: 'row',\n },\n downloadButtonText: {\n fontSize: 12,\n },\n downloadButton: {\n height: 30,\n marginVertical: 8,\n },\n moreButton: {\n marginRight: 4,\n marginBottom: 4,\n },\n moreButtonIcon: {\n height: 25,\n width: 30,\n resizeMode: 'contain',\n },\n})\n","import { StyleSheet } from 'react-native'\n\nexport default StyleSheet.create({\n rootContainer: {\n flex: 1,\n },\n shareLinkContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n copyContainer: {\n alignItems: 'center',\n borderWidth: 1,\n padding: 4,\n justifyContent: 'center',\n flexDirection: 'row',\n },\n copyText: {\n fontSize: 11,\n },\n copyIcon: {\n height: 16,\n width: 16,\n marginLeft: 4,\n resizeMode: 'contain',\n },\n sectionFooterContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n\n listItemContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n borderWidth: 2,\n marginVertical: 8,\n },\n rowContainer: {\n flexDirection: 'row',\n },\n listItemInnerRightContainer: {\n justifyContent: 'center',\n alignItems: 'flex-end',\n },\n\n ticketItemContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n borderWidth: 2,\n marginVertical: 8,\n },\n ticketItemInnerRightContainer: {\n justifyContent: 'center',\n alignItems: 'flex-end',\n },\n})\n","import _map from 'lodash/map'\nimport _sortBy from 'lodash/sortBy'\nimport _uniqBy from 'lodash/uniqBy'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert } from 'react-native'\n\nimport {\n IFetchAccessTokenResponse,\n IMyOrdersData,\n IMyOrdersOrder,\n IMyOrdersRequestParams,\n MyOrderRequestFromType,\n} from '../../api/types'\nimport { IDropdownItem } from '../../components/dropdown/types'\nimport { MyOrdersCore, MyOrdersCoreHandle, SessionHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport { IError } from '../../types'\nimport MyOrdersView from './MyOrdersView'\nimport { IMyOrdersProps } from './types'\nimport { logger } from '../../utils/Logger'\n\nconst MyOrders = forwardRef<SessionHandleType, IMyOrdersProps>(\n (\n {\n onSelectOrder,\n onFetchOrderDetailsError,\n onFetchMyOrdersError,\n onFetchMyOrdersSuccess,\n onFetchOrderDetailsSuccess,\n onLoadingChange,\n styles,\n texts,\n config,\n },\n ref\n ) => {\n //#region State\n const [isLoading, setIsLoading] = useState(true)\n const [isRefreshing, setIsRefreshing] = useState(false)\n const [isGettingEventDetails, setIsGettingEventDetails] = useState(false)\n const [myEvents, setMyEvents] = useState<IDropdownItem[]>([])\n const [selectedEvent, setSelectedEvent] = useState<IDropdownItem>({\n label: texts?.selectEventPlaceholder || 'Select event',\n value: '',\n })\n\n const [selectedTimeFilter, setSelectedTimeFilter] = useState<IDropdownItem>({\n label: texts?.selectTimeFilterPlaceholder || 'Select time filter',\n value: '',\n })\n const [myOrders, setMyOrders] = useState<IMyOrdersOrder[]>([])\n //#endregion\n\n const timeFilters: IDropdownItem[] = [\n {\n label: texts?.timeFilters?.upcoming || 'Upcoming events',\n value: 'upcoming_events',\n },\n {\n label: texts?.timeFilters?.ongoingAndUpcoming || 'Ongoing and upcoming events',\n value: 'ongoing_and_upcoming_events',\n },\n {\n label: texts?.timeFilters?.ongoing || 'Ongoing events',\n value: 'ongoing_events',\n },\n {\n label: texts?.timeFilters?.past || 'Past events',\n value: 'past_events',\n },\n ]\n\n //#region Refs\n const currentPage = useRef(1)\n const myOrdersCoreRef = useRef<MyOrdersCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n //#endregion\n\n const showAlert = (text: string) => {\n if (config?.areAlertsEnabled) {\n Alert.alert('', text)\n }\n }\n\n const isMyOrdersCoreRefReady = (): boolean => {\n if (!myOrdersCoreRef.current) {\n onFetchMyOrdersError?.({\n message: 'MyOrdersCore is not initialized',\n })\n showAlert('MyOrdersCore is not initialized')\n return false\n }\n\n return true\n }\n\n //#region Fetch data\n const getOrdersAsync = async (): Promise<undefined | IMyOrdersData> => {\n if (!isMyOrdersCoreRefReady()) {\n return\n }\n\n setIsLoading(true)\n const validSelectedEvent = selectedEvent.value === '' ? null : selectedEvent\n\n const myOrdersRequestParams: IMyOrdersRequestParams = {\n limit: 20,\n page: currentPage.current,\n filter:\n validSelectedEvent?.value.toString() === 'none'\n ? ''\n : validSelectedEvent?.value.toString(),\n from:\n selectedTimeFilter.value === 'none'\n ? ''\n : (selectedTimeFilter.value as MyOrderRequestFromType),\n }\n\n const { myOrdersData, myOrdersError } =\n await myOrdersCoreRef.current!.getMyOrders(myOrdersRequestParams)\n\n setIsLoading(false)\n\n if (myOrdersError) {\n onFetchMyOrdersError?.(myOrdersError)\n showAlert(myOrdersError.message)\n return undefined\n }\n\n if (!myOrdersData) {\n const altError: IError = {\n message: 'My orders returned no data',\n }\n onFetchMyOrdersError?.(altError)\n showAlert(altError.message)\n return undefined\n }\n\n onFetchMyOrdersSuccess?.(myOrdersData)\n\n const events = _sortBy(\n _map(myOrdersData.events, (item) => {\n return {\n label: item.event_name,\n value: item.url_name,\n }\n }),\n 'value'\n )\n\n setMyEvents(events)\n\n return myOrdersData\n }\n\n const getOrders = async () => {\n const fetchedOrders = await getOrdersAsync()\n setMyOrders(fetchedOrders?.orders ?? [])\n }\n\n const getMoreOrders = async () => {\n const fetchedOrders = await getOrdersAsync()\n const uniqOrders = _uniqBy(\n [...myOrders, ...(fetchedOrders?.orders ?? [])],\n (item) => item.id\n )\n setMyOrders(uniqOrders)\n }\n //#endregion Fetch data\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n logger.debug('MyOrders', 'refreshAccessToken', { refreshToken })\n if (!sessionHandleRef.current) {\n logger.debug('MyOrders', 'refreshAccessToken', {\n message: 'Session Handle ref is not initialized',\n })\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n logger.debug('MyOrders', 'refreshAccessToken', {\n accessTokenError,\n accessTokenData,\n })\n if (!accessTokenError && accessTokenData?.accessToken) {\n logger.debug('MyOrders', 'refreshAccessToken', {\n message: 'Access token refreshed successfully',\n })\n await getOrders()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n logger.debug('MyOrders', 'reloadData')\n await getOrders()\n },\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleOnRefresh = async () => {\n setIsRefreshing(true)\n await getOrders()\n setIsRefreshing(false)\n }\n\n const handleOnLoadingChange = useCallback(\n (loading: boolean) => {\n onLoadingChange?.(loading)\n },\n [onLoadingChange]\n )\n\n const handleOnChangeTimeFilter = (item: IDropdownItem) => {\n setMyOrders([])\n setSelectedEvent({\n label: texts?.selectEventPlaceholder || 'Select event',\n value: '',\n })\n\n if (item.value !== selectedTimeFilter.value) {\n currentPage.current = 1\n setSelectedTimeFilter(item)\n }\n }\n\n const handleOnChangeEvent = (event: IDropdownItem) => {\n setMyOrders([])\n\n if (event.value !== selectedEvent.value || event.value === '') {\n currentPage.current = 1\n setSelectedEvent(event)\n }\n }\n\n const handleOnFetchMoreOrders = () => {\n if (myOrders.length < 8) {\n return\n }\n if (!isLoading) {\n currentPage.current = currentPage.current + 1\n getMoreOrders()\n }\n }\n\n const handleOnSelectOrder = async (order: IMyOrdersOrder) => {\n if (!isMyOrdersCoreRefReady()) {\n return\n }\n\n setIsGettingEventDetails(true)\n\n const { orderDetailsData, orderDetailsError } =\n await myOrdersCoreRef.current!.getOrderDetails(order.id)\n\n setIsGettingEventDetails(false)\n\n if ((!orderDetailsData || orderDetailsError) && onFetchOrderDetailsError) {\n showAlert(orderDetailsError?.message ?? 'Error fetching order details')\n return onFetchOrderDetailsError(\n orderDetailsError || {\n message: 'Order details returned no data',\n }\n )\n }\n\n if (orderDetailsData) {\n onFetchOrderDetailsSuccess?.(orderDetailsData)\n onSelectOrder(orderDetailsData)\n }\n }\n //#endregion\n\n //#region useEffect\n useEffect(() => {\n handleOnLoadingChange(isLoading || isGettingEventDetails)\n }, [handleOnLoadingChange, isLoading, isGettingEventDetails])\n\n useEffect(() => {\n const _fetchMyOrders = async () => {\n await getOrders()\n }\n _fetchMyOrders()\n }, [])\n\n useEffect(() => {\n if (selectedEvent.value !== '' || selectedTimeFilter.value !== '') {\n getOrders()\n }\n }, [selectedEvent, selectedTimeFilter])\n //#endregion useEffect\n\n //#region Return\n return (\n <MyOrdersCore ref={myOrdersCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <MyOrdersView\n myEvents={myEvents}\n selectedEvent={selectedEvent}\n onChangeEvent={handleOnChangeEvent}\n myOrders={myOrders}\n onSelectOrder={handleOnSelectOrder}\n onRefresh={handleOnRefresh}\n isLoading={isLoading}\n isGettingEventDetails={isGettingEventDetails}\n styles={styles}\n config={config}\n onFetchMoreOrders={handleOnFetchMoreOrders}\n texts={texts}\n timeFilters={timeFilters}\n selectedTimeFilter={selectedTimeFilter}\n onChangeTimeFilter={handleOnChangeTimeFilter}\n isRefreshing={isRefreshing}\n />\n </SessionHandle>\n </MyOrdersCore>\n )\n //#endregion Return\n }\n)\n\nexport default MyOrders\n","import React, { FC, useCallback, useMemo, useRef } from 'react'\nimport {\n ActivityIndicator,\n FlatList,\n Image,\n RefreshControl,\n SafeAreaView,\n StyleProp,\n Text,\n TextStyle,\n TouchableOpacity,\n View,\n} from 'react-native'\n\nimport { IMyOrdersOrder } from '../../api/types'\nimport { Dropdown, Loading } from '../../components'\nimport { IDropdownStyles } from '../../components/dropdown/types'\nimport R from '../../res'\nimport OrderListItem from './components/OrderListItem'\nimport { MyOrdersViewStyles as s } from './styles'\nimport { IMyOrdersViewProps } from './types'\n\nconst MyOrdersView: FC<IMyOrdersViewProps> = ({\n myEvents,\n onChangeEvent,\n selectedEvent,\n myOrders,\n onSelectOrder,\n styles,\n isLoading,\n onRefresh,\n isGettingEventDetails,\n config,\n onFetchMoreOrders,\n texts,\n onChangeTimeFilter,\n timeFilters,\n selectedTimeFilter,\n isRefreshing,\n}) => {\n const onEndReachedCalledDuringMomentum = useRef(false)\n //#region Handlers\n const handleOnSelectOrder = (order: IMyOrdersOrder) => {\n if (onSelectOrder) {\n onSelectOrder(order)\n }\n }\n\n const handleOnReachEnd = () => {\n if (!onEndReachedCalledDuringMomentum.current) {\n onFetchMoreOrders()\n onEndReachedCalledDuringMomentum.current = true\n }\n }\n\n const handleOnMomentumScrollBegin = () => {\n onEndReachedCalledDuringMomentum.current = false\n }\n //#endregion Handlers\n\n //#region Renders\n const renderOrderListItem = useCallback(\n ({ item }: { item: any }) => (\n <OrderListItem\n order={item}\n onSelectOrder={handleOnSelectOrder}\n styles={styles?.orderListItem}\n />\n ),\n\n [handleOnSelectOrder]\n )\n\n const renderRefreshControl = (\n <RefreshControl\n enabled={false}\n tintColor={styles?.refreshControlColor || R.colors.primary}\n refreshing={!!isLoading}\n onRefresh={onRefresh}\n />\n )\n\n const dropdownStyles = useMemo<IDropdownStyles>(\n () => ({\n container: s.eventsDropdownContainer,\n button: s.eventsDropdownButton,\n label: {\n maxWidth: '100%',\n ...styles?.eventsDropdown?.label,\n },\n icon: {},\n dialog: {},\n flatListContainer: {},\n }),\n []\n )\n\n const onClearSelectedEvent = () =>\n onChangeEvent({\n label: texts?.selectEventPlaceholder || 'Select event',\n value: 'none',\n })\n\n const onClearSelectedTimeFilter = () =>\n onChangeTimeFilter({\n label: texts?.selectTimeFilterPlaceholder || 'Select time filter',\n value: 'none',\n })\n\n const eventsDropdown = (\n <View style={[s.eventsContainer, styles?.eventsContainer]}>\n <View style={[s.eventsSelectionContainer, styles?.eventsSelectionContainer]}>\n <Dropdown\n items={myEvents}\n onSelectItem={onChangeEvent}\n selectedOption={selectedEvent}\n styles={dropdownStyles}\n />\n <TouchableOpacity onPress={onClearSelectedEvent}>\n <Image\n source={R.icons.error}\n style={[s.clearEventSelectionIcon, styles?.clearEventSelectionIcon]}\n />\n </TouchableOpacity>\n </View>\n </View>\n )\n\n const timeFilterDropdown = (\n <View style={[s.eventsContainer, styles?.timeFilters?.container]}>\n <View style={[s.eventsSelectionContainer, styles?.timeFilters?.selectionContainer]}>\n <Dropdown\n items={timeFilters}\n onSelectItem={onChangeTimeFilter}\n selectedOption={selectedTimeFilter}\n styles={dropdownStyles}\n />\n <TouchableOpacity onPress={onClearSelectedTimeFilter}>\n <Image\n source={R.icons.error}\n style={[s.clearEventSelectionIcon, styles?.timeFilters?.clearSelectionIcon]}\n />\n </TouchableOpacity>\n </View>\n </View>\n )\n //#endregion Renders\n\n //#region Return\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <SafeAreaView style={[s.safeArea, styles?.safeArea]}>\n <Text style={[s.eventsTitle, styles?.eventsTitle]}>\n {texts?.title || 'Events'}\n </Text>\n {!config?.isTimeFilterDropdownHidden && timeFilterDropdown}\n {!config?.isEventsDropdownHidden && eventsDropdown}\n <View style={[s.listContainer, styles?.listContainer]}>\n <FlatList\n data={myOrders}\n renderItem={renderOrderListItem}\n refreshControl={renderRefreshControl}\n onEndReached={handleOnReachEnd}\n onMomentumScrollBegin={handleOnMomentumScrollBegin}\n onEndReachedThreshold={0.2}\n extraData={myOrders}\n />\n {isLoading && myOrders.length > 8 && !isRefreshing && (\n <ActivityIndicator\n size={'large'}\n color={styles?.refreshControlColor || R.colors.primary}\n />\n )}\n </View>\n {config?.areActivityIndicatorsEnabled && isGettingEventDetails && <Loading />}\n </SafeAreaView>\n </View>\n )\n //#endregion Return\n}\n\nexport default MyOrdersView\n","import React, { FC } from 'react'\nimport { Image, Text, TouchableOpacity, View } from 'react-native'\n\nimport R from '../../../res'\nimport { OrderListItemStyles as s } from './styles'\nimport { IOrderListItemProps } from './types'\n\nconst OrderListItem: FC<IOrderListItemProps> = ({ order, onSelectOrder, styles }) => {\n return (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <TouchableOpacity\n onPress={() => {\n onSelectOrder(order)\n }}\n >\n <View style={[s.contentContainer, styles?.contentContainer]}>\n {/* Left side of the item */}\n <View style={[s.infoRootContainer, styles?.infoRootContainer]}>\n {/* Image content */}\n <View style={[s.imageContainer, styles?.imageContainer]}>\n <Image source={{ uri: order.image }} style={[s.image, styles?.image]} />\n </View>\n {/* Info content */}\n <View style={[s.infoContainer, styles?.infoContainer]}>\n <View style={[s.infoTopContainer, styles?.infoTopContainer]}>\n <Text style={styles?.orderId}>{order.id}</Text>\n <Text style={styles?.orderDate}>{order.date}</Text>\n </View>\n <View style={[s.infoBottomContainer, styles?.infoBottomContainer]}>\n <Text style={[s.eventName, styles?.eventName]} numberOfLines={2}>\n {order.eventName}\n </Text>\n <View style={[s.priceContainer, styles?.priceContainer]}>\n <Text style={styles?.currency}>{order.currency} </Text>\n <Text style={styles?.price}>{order.amount}</Text>\n </View>\n </View>\n </View>\n </View>\n {/* Right side of the item */}\n <View style={[s.iconNextContainer, styles?.iconNextContainer]}>\n <Image style={[s.iconNext, styles?.iconNext]} source={R.icons.next} />\n </View>\n </View>\n </TouchableOpacity>\n </View>\n )\n}\n\nexport default OrderListItem\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../../res'\n\nexport const OrderListItemStyles = StyleSheet.create({\n rootContainer: {\n backgroundColor: R.colors.listBackground,\n marginVertical: 8,\n },\n contentContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n imageContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n marginRight: 16,\n },\n image: { height: 60, width: 60, resizeMode: 'contain' },\n infoRootContainer: {\n flexDirection: 'row',\n flex: 1,\n },\n infoContainer: {\n flex: 1,\n },\n infoTopContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginVertical: 8,\n },\n infoBottomContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginVertical: 8,\n alignItems: 'flex-end',\n },\n iconNext: {\n height: 24,\n width: 24,\n resizeMode: 'contain',\n },\n iconNextContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n padding: 16,\n paddingRight: 0,\n },\n priceContainer: {\n flexDirection: 'row',\n },\n eventName: {\n width: '65%',\n },\n})\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport const MyOrdersViewStyles = StyleSheet.create({\n eventsContainer: {\n marginVertical: 16,\n },\n eventsTitle: {\n marginBottom: 8,\n },\n eventsDropdownContainer: {\n flex: 1,\n marginRight: 16,\n },\n eventsDropdownButton: {\n marginBottom: 0,\n },\n safeArea: {\n flex: 1,\n },\n listContainer: {\n //flex: 1,\n },\n backButtonContainer: {\n marginBottom: 24,\n },\n rootContainer: {\n flex: 1,\n },\n eventsSelectionContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'space-between',\n },\n clearEventSelectionIcon: {\n tintColor: R.colors.white,\n width: 20,\n height: 20,\n },\n})\n","import { Config } from '../helpers/Config'\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error'\n\ninterface LoggerOptions {\n level?: LogLevel\n showTimestamp?: boolean\n}\n\nexport class Logger {\n private readonly level: LogLevel\n private readonly showTimestamp: boolean\n public readonly debug: (...data: any[]) => void\n public readonly info: (...data: any[]) => void\n public readonly warn: (...data: any[]) => void\n public readonly error: (...data: any[]) => void\n\n constructor(options: LoggerOptions = {}) {\n this.level = options.level || 'info'\n this.showTimestamp = options.showTimestamp ?? true\n this.debug = this.shouldLog('debug')\n ? console.debug.bind('', ...this.loggerArgs('debug'))\n : () => null\n this.warn = this.shouldLog('warn')\n ? console.warn.bind('', ...this.loggerArgs('warn'))\n : () => null\n this.info = this.shouldLog('info')\n ? console.info.bind('', ...this.loggerArgs('info'))\n : () => null\n this.error = this.shouldLog('error')\n ? console.error.bind('', ...this.loggerArgs('error'))\n : () => null\n }\n\n private getTimestamp(): string {\n const date = new Date()\n const options: Intl.DateTimeFormatOptions = {\n year: '2-digit',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n }\n\n return new Intl.DateTimeFormat('en-US', options).format(date)\n }\n\n private formatMessage(level: LogLevel, ...args: any[]): [string, ...any[]] {\n const timestamp = this.showTimestamp ? `[${this.getTimestamp()}]` : ''\n\n return [`${timestamp}`, ...args]\n }\n\n private shouldLog(level: LogLevel): boolean {\n const levels: LogLevel[] = ['debug', 'info', 'warn', 'error']\n\n if (levels.indexOf(this.level) < 0) {\n return false\n }\n\n return levels.indexOf(level) >= levels.indexOf(this.level)\n }\n\n private loggerArgs(level: LogLevel, ...args: any[]) {\n const [message, ...rest] = this.formatMessage(level, ...args)\n\n return [message, ...rest]\n }\n}\n\nexport const logger = new Logger({\n level: Config.logLevel || 'info',\n})\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert } from 'react-native'\n\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport {\n PurchaseConfirmationCore,\n PurchaseConfirmationCoreHandle,\n SessionHandle,\n} from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport PurchaseConfirmationView from './PurchaseConfirmationView'\nimport { IPurchaseConfirmationProps } from './types'\n\nconst PurchaseConfirmation = forwardRef<SessionHandleType, IPurchaseConfirmationProps>(\n (\n {\n orderHash,\n onComplete,\n styles,\n texts,\n onFetchPurchaseConfirmationError,\n onFetchPurchaseConfirmationSuccess,\n onLoadingChange,\n areActivityIndicatorsEnabled,\n areAlertsEnabled,\n },\n ref\n ) => {\n //#region State\n const [isLoading, setIsLoading] = useState(false)\n //#endregion State\n\n const showAlert = (text: string) => {\n areAlertsEnabled && Alert.alert(text)\n }\n\n const isPurchaseConfirmationCoreRefReady = (): boolean => {\n if (!purchaseConfirmationCoreRef.current) {\n onFetchPurchaseConfirmationError?.({\n message: 'PurchaseConfirmationCore is not initialized',\n })\n showAlert('PurchaseConfirmationCore is not initialized')\n return false\n }\n\n return true\n }\n\n //#region Fetch data\n const getInitialData = async () => {\n if (!isPurchaseConfirmationCoreRefReady()) {\n return\n }\n\n purchaseConfirmationCoreRef.current?.stopCartTimer()\n setIsLoading(true)\n const { purchaseConfirmationError } =\n await purchaseConfirmationCoreRef.current!.getPurchaseConfirmation(orderHash)\n setIsLoading(false)\n\n if (purchaseConfirmationError) {\n onFetchPurchaseConfirmationError?.(purchaseConfirmationError)\n return showAlert(purchaseConfirmationError.message)\n }\n\n onFetchPurchaseConfirmationSuccess?.()\n }\n //#endregion Fetch data\n\n //#region Ref\n const purchaseConfirmationCoreRef = useRef<PurchaseConfirmationCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n //#endregion Ref\n\n const handleOnLoadingChange = useCallback(\n (loading: boolean) => {\n onLoadingChange?.(loading)\n },\n [onLoadingChange]\n )\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n if (!accessTokenError && accessTokenData?.accessToken) {\n await getInitialData()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n await getInitialData()\n },\n }))\n //#endregion Imperative Handler\n\n //#region useEffect\n useEffect(() => {\n handleOnLoadingChange(isLoading)\n }, [handleOnLoadingChange, isLoading])\n\n useEffect(() => {\n getInitialData()\n }, [])\n //#endregion useEffect\n\n //#region RENDER\n return (\n <PurchaseConfirmationCore ref={purchaseConfirmationCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <PurchaseConfirmationView\n orderHash={orderHash}\n onComplete={onComplete}\n styles={styles}\n texts={texts}\n areActivityIndicatorsEnabled={areActivityIndicatorsEnabled}\n />\n </SessionHandle>\n </PurchaseConfirmationCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default PurchaseConfirmation\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport { Button, Loading } from '../../components'\nimport s from './styles'\nimport { IPurchaseConfirmationViewProps } from './types'\n\nconst PurchaseConfirmationView: FC<IPurchaseConfirmationViewProps> = ({\n texts,\n styles,\n onComplete,\n areActivityIndicatorsEnabled,\n isLoading,\n}) => (\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <Text style={[s.title, styles?.title]}>\n {texts?.title || 'Your Tickets are Confirmed!'}\n </Text>\n\n <View style={[s.messagesContainer, styles?.message?.container]}>\n <Text style={styles?.message?.line1}>\n {texts?.message?.line1 || 'YOUR TICKETS HAVE BEEN EMAILED TO YOU \\n'}\n </Text>\n <Text style={styles?.message?.line2}>\n {texts?.message?.line2 || 'PLEASE BRING THEM WITH YOU TO THE EVENT'}\n </Text>\n </View>\n {/* \n <View style={[s.promoContainer, styles?.promo?.container]}>\n <Text style={[s.promoTitle, styles?.promo?.title]}>\n Your ticket can become{' '}\n <Text style={[s.promoTitleKeyword, styles?.promo?.titleKeyword]}>\n cheaper\n </Text>{' '}\n or even{' '}\n <Text style={[s.promoTitleKeyword, styles?.promo?.titleKeyword]}>\n FREE!\n </Text>\n </Text>\n\n <Text style={[s.promoMessage, styles?.promo?.message]}>\n <Text style={[s.promoMessageKeyword, styles?.promo?.messageKeyword]}>\n Invite friends\n </Text>{' '}\n and we'll refund up to{' '}\n <Text style={[s.promoDiscount, styles?.promo?.discount]}>\n {texts?.promo?.discount || '100%'}\n </Text>{' '}\n of your ticket money, if they buy tickets as well!\n </Text>\n </View>\n\n <View style={[s.inviteContainer, styles?.invite?.container]}>\n <Text style={[s.inviteTitle, styles?.invite?.title]}>\n {texts?.invite?.title || 'How do you invite your friends?'}\n </Text>\n <Text style={[s.inviteMessage, styles?.invite?.message]}>\n {texts?.invite?.message || 'Send them this link:'}\n </Text>\n\n <View style={[s.inviteLinkContainer, styles?.invite?.linkContainer]}>\n <Text style={[s.inviteLink, styles?.invite?.link]}>\n {referralLink || 'http://www.theticketfairy.com'}\n </Text>\n <TouchableOpacity style={[s.copyButton, styles?.invite?.copyButton]}>\n <Image\n source={R.icons.copy}\n style={[s.copyIcon, styles?.invite?.copyIcon]}\n />\n </TouchableOpacity>\n </View>\n </View> */}\n <Button\n text={texts?.exitButton || 'Exit'}\n styles={styles?.exitButton}\n onPress={onComplete}\n />\n {areActivityIndicatorsEnabled && isLoading && <Loading />}\n </View>\n)\n\nexport default PurchaseConfirmationView\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n rootContainer: {\n backgroundColor: R.colors.white,\n padding: 24,\n flex: 1,\n },\n messagesContainer: {\n marginVertical: 24,\n padding: 12,\n backgroundColor: 'gainsboro',\n },\n title: {\n fontWeight: '700',\n color: R.colors.black,\n fontSize: 22,\n },\n\n promoContainer: {\n marginVertical: 24,\n },\n promoTitleKeyword: {\n fontWeight: '800',\n color: R.colors.danger,\n },\n promoTitle: {\n fontSize: 25,\n },\n promoMessage: {\n fontSize: 18,\n marginTop: 8,\n },\n promoMessageKeyword: {\n fontWeight: '600',\n },\n promoDiscount: {\n fontWeight: '700',\n color: R.colors.danger,\n },\n\n inviteContainer: {\n marginVertical: 24,\n },\n inviteTitle: {\n fontSize: 18,\n fontWeight: '500',\n marginBottom: 16,\n },\n inviteMessage: {\n fontSize: 18,\n },\n\n inviteLinkContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: 16,\n },\n inviteLink: {\n padding: 8,\n backgroundColor: R.colors.black,\n color: R.colors.white,\n },\n copyButton: {\n backgroundColor: R.colors.black,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 16,\n padding: 4,\n },\n copyIcon: {\n width: 28,\n height: 28,\n resizeMode: 'contain',\n tintColor: R.colors.white,\n },\n})\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from 'react'\nimport { Alert } from 'react-native'\n\nimport { IFetchAccessTokenResponse } from '../../api/types'\nimport { OrderDetailsCore, OrderDetailsCoreHandle, SessionHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validateEmail, validateEmpty } from '../../helpers/Validators'\nimport ResaleTicketsView from './ResaleTicketsView'\nimport { IResaleTicketsProps, IResaleToWhomData, ResaleToWhomFieldIdEnum } from './types'\n\nconst sellToWhomInitialData: IResaleToWhomData = {\n toWhom: undefined,\n someoneData: {\n firstName: '',\n lastName: '',\n email: '',\n emailConfirm: '',\n },\n isTermsAgreed: false,\n}\n\nconst ResaleTickets = forwardRef<SessionHandleType, IResaleTicketsProps>(\n (\n {\n styles,\n ticket,\n onResaleTicketsSuccess,\n onResaleTicketsError,\n config = {\n areActivityIndicatorsEnabled: true,\n areAlertsEnabled: true,\n },\n isTicketTypeActive,\n },\n ref\n ) => {\n //#region refs\n const orderDetailsCoreRef = useRef<OrderDetailsCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n //#endregion\n\n //#region state\n const [isLoading, setIsLoading] = useState(false)\n const [sellToWhomData, setSellToWhomData] =\n useState<IResaleToWhomData>(sellToWhomInitialData)\n\n const {\n someoneData: { firstName, lastName, email, emailConfirm },\n isTermsAgreed,\n toWhom,\n } = sellToWhomData\n\n const firstNameError = useDebounced(firstName, validateEmpty)\n const lastNameError = useDebounced(lastName, validateEmpty)\n const emailError = useDebounced(email, () => validateEmail(email, emailConfirm))\n const emailConfirmError = useDebounced(emailConfirm, () =>\n validateEmail(emailConfirm, email)\n )\n //#endregion\n\n const showAlert = (message: string) => {\n if (config?.areAlertsEnabled) {\n Alert.alert('', message)\n }\n }\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {},\n }))\n //#endregion Imperative Handler\n\n //#region handlers\n const handleOnPressSellTickets = async () => {\n if (!orderDetailsCoreRef.current) {\n showAlert('ResaleTicketsCoreRef is not initialized')\n }\n\n setIsLoading(true)\n const formData = new FormData()\n formData.append('to', toWhom)\n formData.append('first_name', firstName)\n formData.append('last_name', lastName)\n formData.append('email', email)\n formData.append('confirm_email', emailConfirm)\n formData.append('confirm', String(isTermsAgreed))\n\n const { resaleTicketData, resaleTicketError } =\n await orderDetailsCoreRef.current!.resaleTicket(formData, ticket.hash)\n\n setIsLoading(false)\n\n if (resaleTicketError || !resaleTicketData) {\n onResaleTicketsError?.(resaleTicketError!)\n return showAlert(resaleTicketError!.message)\n }\n\n showAlert(resaleTicketData.message)\n\n return onResaleTicketsSuccess(resaleTicketData, {\n ...ticket,\n isOnSale: true,\n isSellable: false,\n })\n }\n\n const handleSellToWhomDataChange = (\n id: ResaleToWhomFieldIdEnum,\n value?: string | number\n ) => {\n switch (id) {\n case ResaleToWhomFieldIdEnum.terms:\n setSellToWhomData({\n ...sellToWhomData,\n isTermsAgreed: !isTermsAgreed,\n })\n break\n case ResaleToWhomFieldIdEnum.radioIndex:\n setSellToWhomData({\n ...sellToWhomData,\n toWhom: value === 0 ? 'friend' : 'anyone',\n })\n break\n case ResaleToWhomFieldIdEnum.firstName:\n setSellToWhomData({\n ...sellToWhomData,\n someoneData: {\n ...sellToWhomData.someoneData,\n firstName: value as string,\n },\n })\n break\n case ResaleToWhomFieldIdEnum.lastName:\n setSellToWhomData({\n ...sellToWhomData,\n someoneData: {\n ...sellToWhomData.someoneData,\n lastName: value as string,\n },\n })\n break\n case ResaleToWhomFieldIdEnum.email:\n setSellToWhomData({\n ...sellToWhomData,\n someoneData: {\n ...sellToWhomData.someoneData,\n email: value as string,\n },\n })\n break\n case ResaleToWhomFieldIdEnum.emailConfirm:\n setSellToWhomData({\n ...sellToWhomData,\n someoneData: {\n ...sellToWhomData.someoneData,\n emailConfirm: value as string,\n },\n })\n break\n }\n }\n //#endregion\n\n //#region data validation\n const isDataValid = () => {\n if (toWhom === 'anyone' && isTermsAgreed) {\n return true\n }\n if (\n toWhom === 'friend' &&\n firstName &&\n lastName &&\n email &&\n emailConfirm &&\n !emailConfirmError &&\n !emailError &&\n !firstNameError &&\n !lastNameError &&\n isTermsAgreed\n ) {\n return true\n }\n\n return false\n }\n //#endregion\n\n //#region render\n return (\n <OrderDetailsCore ref={orderDetailsCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <ResaleTicketsView\n styles={styles}\n isLoading={isLoading}\n resaleToWhomData={sellToWhomData}\n someoneDataErrors={{\n firstNameError: firstNameError,\n lastNameError: lastNameError,\n emailError: emailError,\n emailConfirmError: emailConfirmError,\n }}\n isDataValid={isDataValid()}\n onResaleToWhomDataChanged={handleSellToWhomDataChange}\n onPressResaleTickets={handleOnPressSellTickets}\n ticket={ticket}\n isTicketsTypeActive={isTicketTypeActive}\n />\n </SessionHandle>\n </OrderDetailsCore>\n )\n //#endregion\n }\n)\n\nexport default ResaleTickets\n","import React, { FC, useEffect, useMemo, useRef } from 'react'\nimport { Text, View } from 'react-native'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport { TextField } from '../../packages/rn-material-ui-textfield'\n\nimport { Button, Checkbox, Input, RadioButton } from '../../components'\nimport {\n IResaleTicketsViewProps,\n IResaleTicketsViewTexts,\n ResaleToWhomFieldIdEnum,\n} from './types'\n\nconst ResaleTicketsView: FC<IResaleTicketsViewProps> = ({\n styles,\n isDataValid,\n resaleToWhomData,\n onResaleToWhomDataChanged,\n someoneDataErrors,\n onPressResaleTickets,\n ticket,\n isLoading,\n texts,\n isTicketsTypeActive,\n}) => {\n //#region Texts\n const txt: IResaleTicketsViewTexts = {\n title: texts?.title || 'Resale tickets',\n orderDetails: {\n title: texts?.orderDetails?.title || 'Order details',\n eventName: texts?.orderDetails?.eventName || 'Event',\n orderedBy: texts?.orderDetails?.orderedBy || 'Ordered By',\n orderId: texts?.orderDetails?.orderId || 'Order ID',\n },\n sellToWhom: {\n title: texts?.sellToWhom?.title || 'Sell to whom?',\n anyone:\n texts?.sellToWhom?.anyone ||\n 'I will sell my ticket to anyone who wants to buy it',\n friend: texts?.sellToWhom?.friend || 'I will sell my ticket to someone I know',\n },\n terms: {\n title: texts?.terms?.title || 'Terms of resale',\n paragraph1:\n texts?.terms?.paragraph1 ||\n '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. \\n',\n paragraph2_1:\n texts?.terms?.paragraph2_1 ||\n 'I also understand that, if no one chooses to buy it, it remains my property, is valid for entry to',\n paragraph2_2: texts?.terms?.paragraph2_2 || 'and I will not receive any refund.',\n paragraph3_1:\n texts?.terms?.paragraph3_1 ||\n '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',\n paragraph3_2:\n texts?.terms?.paragraph3_2 ||\n ', and that any existing refunds due to me for referring sales for this event are no longer valid.',\n },\n agree: texts?.agree || 'I agree',\n friendForm: {\n firstName: texts?.friendForm?.firstName || 'First Name',\n lastName: texts?.friendForm?.lastName || 'Last Name',\n email: texts?.friendForm?.email || 'Email Address',\n emailConfirm: texts?.friendForm?.emailConfirm || 'Confirm Email Address',\n },\n resaleTicketsButton: texts?.resaleTicketsButton || 'Resale Ticket',\n }\n //#endregion\n\n //#region Refs\n const firstNameRef = useRef<TextField>(null)\n const lastNameRef = useRef(null)\n const emailRef = useRef(null)\n const confirmEmailRef = useRef(null)\n //#endregion\n\n //#region Styles\n const ticketBuyerFormStyles = styles?.ticketBuyerForm\n const ticketOrderDetailsStyles = styles?.ticketOrderDetails\n const termsStyles = styles?.terms\n const buttonStyles = !isDataValid\n ? styles?.resaleTicketsButtonDisabled\n : styles?.resaleTicketsButton\n //#endregion\n\n const {\n someoneData: { firstName, lastName, email, emailConfirm },\n toWhom,\n isTermsAgreed,\n } = resaleToWhomData\n\n const { firstNameError, lastNameError, emailError, emailConfirmError } =\n someoneDataErrors\n\n const Terms = useMemo(\n () => (\n <View style={termsStyles?.rootContainer}>\n <Text style={termsStyles?.title}>{txt.terms?.title}</Text>\n <Text style={termsStyles?.item}>{txt.terms?.paragraph1}</Text>\n\n <Text style={termsStyles?.item}>\n {txt.terms?.paragraph2_1}{' '}\n <Text style={termsStyles?.itemBold}>{ticket.eventName}</Text>{' '}\n {txt.terms?.paragraph2_2}\n {'\\n'}\n </Text>\n <Text style={termsStyles?.item}>\n {txt.terms?.paragraph3_1}{' '}\n <Text style={termsStyles?.itemBold}>\n {ticket.currency} {ticket.resaleFeeAmount}\n </Text>\n {txt.terms?.paragraph3_2}\n </Text>\n\n <Checkbox\n onPress={() => onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.terms)}\n isActive={isTermsAgreed}\n styles={styles?.termsCheckbox}\n text={txt.agree}\n />\n </View>\n ),\n [\n isTermsAgreed,\n onResaleToWhomDataChanged,\n styles?.termsCheckbox,\n termsStyles?.item,\n termsStyles?.itemBold,\n termsStyles?.rootContainer,\n termsStyles?.title,\n ticket.currency,\n ticket.eventName,\n ticket.resaleFeeAmount,\n txt.agree,\n txt.terms?.paragraph1,\n txt.terms?.paragraph2_1,\n txt.terms?.paragraph2_2,\n txt.terms?.paragraph3_1,\n txt.terms?.paragraph3_2,\n txt.terms?.title,\n ]\n )\n\n const OrderDetails = useMemo(\n () => (\n <View style={ticketOrderDetailsStyles?.rootContainer}>\n <Text style={ticketOrderDetailsStyles?.title}>{txt.orderDetails?.title}</Text>\n <Text style={ticketOrderDetailsStyles?.label}>{txt.orderDetails?.eventName}</Text>\n <Text style={ticketOrderDetailsStyles?.value}>{ticket.eventName}</Text>\n <Text style={ticketOrderDetailsStyles?.label}>{txt.orderDetails?.orderedBy}</Text>\n <Text style={ticketOrderDetailsStyles?.value}>{ticket.holderName}</Text>\n <Text style={ticketOrderDetailsStyles?.label}>{txt.orderDetails?.orderId}</Text>\n <Text style={ticketOrderDetailsStyles?.value}>{ticket.hash}</Text>\n </View>\n ),\n [\n ticket.eventName,\n ticket.hash,\n ticket.holderName,\n ticketOrderDetailsStyles?.label,\n ticketOrderDetailsStyles?.rootContainer,\n ticketOrderDetailsStyles?.title,\n ticketOrderDetailsStyles?.value,\n txt.orderDetails?.eventName,\n txt.orderDetails?.orderId,\n txt.orderDetails?.orderedBy,\n txt.orderDetails?.title,\n ]\n )\n\n const TicketBuyerForm = useMemo(\n () => (\n <View style={ticketBuyerFormStyles?.rootContainer}>\n <Text style={ticketBuyerFormStyles?.title}>{txt.sellToWhom?.title}</Text>\n {isTicketsTypeActive && (\n <RadioButton\n styles={ticketBuyerFormStyles?.radioButtons}\n index={0}\n text={txt.sellToWhom!.friend!}\n value={toWhom === 'friend'}\n onValueChange={() =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.radioIndex, 0)\n }\n />\n )}\n {toWhom === 'friend' && (\n <View style={ticketBuyerFormStyles?.formContainer}>\n <Input\n reference={firstNameRef}\n label={txt.friendForm!.firstName!}\n value={firstName}\n onChangeText={(text) =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.firstName, text)\n }\n styles={ticketBuyerFormStyles?.inputs}\n error={firstNameError}\n blurOnSubmit={false}\n //@ts-ignore\n onSubmitEditing={lastNameRef.current?.focus}\n returnKeyType=\"next\"\n />\n <Input\n reference={lastNameRef}\n label={txt.friendForm!.lastName!}\n value={lastName}\n onChangeText={(text) =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.lastName, text)\n }\n styles={ticketBuyerFormStyles?.inputs}\n error={lastNameError}\n blurOnSubmit={false}\n onSubmitEditing={() => {\n if (emailRef.current) {\n //@ts-ignore\n emailRef.current.focus()\n }\n }}\n returnKeyType=\"next\"\n />\n <Input\n reference={emailRef}\n label={txt.friendForm!.email!}\n autoCapitalize=\"none\"\n keyboardType=\"email-address\"\n value={email}\n onChangeText={(text) =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.email, text)\n }\n styles={ticketBuyerFormStyles?.inputs}\n error={emailError}\n blurOnSubmit={false}\n onSubmitEditing={() => {\n if (confirmEmailRef.current) {\n //@ts-ignore\n confirmEmailRef.current.focus()\n }\n }}\n returnKeyType=\"next\"\n />\n <Input\n reference={confirmEmailRef}\n label={txt.friendForm!.emailConfirm!}\n autoCapitalize=\"none\"\n keyboardType=\"email-address\"\n value={emailConfirm}\n onChangeText={(text) =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.emailConfirm, text)\n }\n styles={ticketBuyerFormStyles?.inputs}\n error={emailConfirmError}\n blurOnSubmit={true}\n returnKeyType=\"go\"\n />\n </View>\n )}\n {isTicketsTypeActive && (\n <RadioButton\n styles={ticketBuyerFormStyles?.radioButtons}\n index={1}\n text={txt.sellToWhom!.anyone!}\n value={toWhom === 'anyone'}\n onValueChange={() =>\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.radioIndex, 1)\n }\n />\n )}\n </View>\n ),\n [\n email,\n emailConfirm,\n emailConfirmError,\n emailError,\n firstName,\n firstNameError,\n isTicketsTypeActive,\n lastName,\n lastNameError,\n onResaleToWhomDataChanged,\n ticketBuyerFormStyles?.formContainer,\n ticketBuyerFormStyles?.inputs,\n ticketBuyerFormStyles?.radioButtons,\n ticketBuyerFormStyles?.rootContainer,\n ticketBuyerFormStyles?.title,\n toWhom,\n txt.friendForm,\n txt.sellToWhom,\n ]\n )\n\n useEffect(() => {\n if (!isTicketsTypeActive) {\n onResaleToWhomDataChanged(ResaleToWhomFieldIdEnum.radioIndex, 0)\n }\n }, [])\n\n return (\n <KeyboardAwareScrollView extraScrollHeight={32}>\n <View style={styles?.rootContainer}>\n <Text style={styles?.title}>{txt.title}</Text>\n {OrderDetails}\n {TicketBuyerForm}\n {Terms}\n <Button\n styles={buttonStyles}\n text={txt.resaleTicketsButton!}\n onPress={onPressResaleTickets}\n isDisabled={!isDataValid}\n isLoading={isLoading}\n />\n </View>\n </KeyboardAwareScrollView>\n )\n}\n\nexport default ResaleTicketsView\n","import React, { FC, useRef, useState } from 'react'\n\nimport { ResetPasswordCore, ResetPasswordCoreHandle } from '../../core'\nimport { useDebounced } from '../../helpers/Debounced'\nimport { validatePasswords } from '../../helpers/Validators'\nimport ResetPasswordView from './ResetPasswordView'\nimport { IResetPasswordProps } from './types'\n\nconst ResetPassword: FC<IResetPasswordProps> = ({\n token,\n styles,\n texts,\n onResetPasswordError,\n onResetPasswordSuccess,\n onPressCancelButton,\n onPressResetButton,\n}) => {\n //#region State\n const [newPassword, setNewPassword] = useState('')\n const [confirmNewPassword, setConfirmNewPassword] = useState('')\n const [apiError, setApiError] = useState('')\n const [apiSuccess, setApiSuccess] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n //#endregion State\n\n const resetPasswordCoreRef = useRef<ResetPasswordCoreHandle>(null)\n\n const newPasswordError = useDebounced(newPassword, () =>\n validatePasswords(newPassword, confirmNewPassword)\n )\n\n const confirmNewPasswordError = useDebounced(confirmNewPassword, () =>\n validatePasswords(newPassword, confirmNewPassword)\n )\n\n const isDataValid = (): boolean => {\n if (!newPassword) {\n return false\n }\n\n if (!confirmNewPassword) {\n return false\n }\n\n if (newPassword !== confirmNewPassword) {\n return false\n }\n\n return true\n }\n\n //#region Handlers\n const handleOnPressResetPasswordButton = async () => {\n if (!resetPasswordCoreRef.current) {\n return\n }\n\n onPressResetButton?.()\n\n if (!isDataValid()) {\n return\n }\n\n setIsLoading(true)\n const response = await resetPasswordCoreRef.current.postResetPassword({\n token: token,\n password: newPassword,\n password_confirmation: confirmNewPassword,\n })\n setIsLoading(false)\n\n if (response.error) {\n setApiError(response.error.message)\n return onResetPasswordError?.(response.error)\n }\n\n setApiSuccess(response.data!.message)\n return onResetPasswordSuccess?.(response.data!)\n }\n\n const handleOnPressCancelButton = () => {\n onPressCancelButton?.()\n }\n //#endregion Handlers\n\n //#region Return\n return (\n <ResetPasswordCore ref={resetPasswordCoreRef}>\n <ResetPasswordView\n onChangePassword={setNewPassword}\n onChangePasswordConfirm={setConfirmNewPassword}\n password={newPassword}\n passwordConfirm={confirmNewPassword}\n onPressResetButton={handleOnPressResetPasswordButton}\n onPressCancelButton={handleOnPressCancelButton}\n passwordError={newPasswordError}\n passwordConfirmError={confirmNewPasswordError}\n styles={styles}\n texts={texts}\n isDataValid={isDataValid()}\n apiError={apiError}\n isLoading={isLoading}\n apiSuccess={apiSuccess}\n />\n </ResetPasswordCore>\n )\n //#endregion Return\n}\n\nexport default ResetPassword\n","import React, { FC } from 'react'\nimport { Keyboard, Pressable, Text, View } from 'react-native'\n\nimport { Button, Input } from '../../components'\nimport s from './styles'\nimport { IResetPasswordViewProps } from './types'\n\nconst ResetPasswordView: FC<IResetPasswordViewProps> = ({\n styles,\n texts,\n isLoading,\n onPressCancelButton,\n onPressResetButton,\n apiError,\n password,\n passwordConfirm,\n onChangePassword,\n onChangePasswordConfirm,\n passwordConfirmError,\n passwordError,\n isDataValid,\n apiSuccess,\n}) => (\n <Pressable style={s.pressable} onPress={Keyboard.dismiss}>\n <View style={[s.rootContainer, styles?.rootContainer]}>\n <View style={[s.contentContainer, styles?.contentContainer]}>\n <Text style={[s.dialogTitle, styles?.title]}>\n {texts?.title || 'Enter your new password'}\n </Text>\n\n <Input\n onChangeText={onChangePassword}\n styles={styles?.input}\n label={texts?.newPasswordLabel || 'New password'}\n error={passwordError}\n value={password}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n isShowPasswordButtonVisible={true}\n />\n\n <Input\n onChangeText={onChangePasswordConfirm}\n styles={styles?.input}\n label={texts?.confirmNewPasswordLabel || 'Confirm new password'}\n error={passwordConfirmError}\n value={passwordConfirm}\n autoCapitalize=\"none\"\n secureTextEntry={true}\n isShowPasswordButtonVisible={true}\n />\n\n {!!apiError && <Text style={[s.apiError, styles?.apiError]}>{apiError}</Text>}\n\n {apiSuccess ? (\n <Text style={styles?.apiSuccess}>{apiSuccess}</Text>\n ) : (\n <Button\n text={texts?.resetButton || 'RESET PASSWORD'}\n onPress={onPressResetButton}\n isLoading={isLoading}\n isDisabled={!isDataValid || isLoading}\n styles={{\n container: [s.resetButtonContainer, styles?.resetButton?.container],\n ...styles?.resetButton,\n }}\n />\n )}\n\n <Button\n text={texts?.cancelButton || 'CANCEL'}\n onPress={onPressCancelButton}\n isDisabled={isLoading}\n styles={styles?.cancelButton}\n />\n </View>\n </View>\n </Pressable>\n)\n\nexport default ResetPasswordView\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n pressable: {\n flex: 1,\n },\n rootContainer: {\n flex: 1,\n alignItems: 'center',\n paddingTop: 32,\n },\n contentContainer: {\n paddingVertical: 32,\n width: '80%',\n backgroundColor: R.colors.white,\n borderRadius: 5,\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n dialogTitle: {\n color: R.colors.black,\n fontSize: 18,\n fontWeight: '800',\n marginBottom: 16,\n },\n resetButtonContainer: {\n marginBottom: 16,\n },\n apiError: {\n color: R.colors.danger,\n marginBottom: 16,\n },\n})\n","import _get from 'lodash/get'\nimport _isEmpty from 'lodash/isEmpty'\nimport _some from 'lodash/some'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Alert } from 'react-native'\n\nimport {\n IEventResponse,\n IFetchAccessTokenResponse,\n IPromoCodeResponse,\n} from '../../api/types'\nimport { SessionHandle, TicketsCore, TicketsCoreHandle } from '../../core'\nimport { SessionHandleType } from '../../core/Session/SessionCoreTypes'\nimport {\n IBookTicketsOptions,\n IGetTicketsPayload,\n IGroupedTickets,\n} from '../../core/TicketsCore/TicketsCoreTypes'\nimport {\n IAddToCartResponse,\n IEvent,\n IOnFetchTicketsSuccess,\n ISelectedTicket,\n ITicket,\n} from '../../types'\nimport TicketsView from './TicketsView'\nimport { IPasswordProtectedEventData, ITicketsProps } from './types'\nimport { Logger } from '../../utils/Logger'\n\nconst Tickets = forwardRef<SessionHandleType, ITicketsProps>(\n (\n {\n onAddToCartSuccess,\n onAddToCartError,\n onFetchTicketsError,\n styles,\n texts,\n isAccessCodeEnabled = false,\n isPromoEnabled = true,\n onPressMyOrders,\n onPressLogout,\n onFetchTicketsSuccess,\n onFetchEventError,\n onLoadingChange,\n onFetchEventSuccess,\n onAddToWaitingListError,\n onAddToWaitingListSuccess,\n promoCodeCloseIcon,\n isCheckingCurrentSession,\n config = {\n areTicketsGrouped: true,\n areActivityIndicatorsEnabled: true,\n areAlertsEnabled: true,\n areTicketsSortedBySoldOut: true,\n },\n referrerId,\n debugMode,\n },\n ref\n ) => {\n const logger = new Logger({ level: debugMode ? 'debug' : 'error' })\n const [isUserLogged, setIsUserLogged] = useState(false)\n const [isGettingTickets, setIsGettingTickets] = useState(false)\n const [isGettingEvent, setIsGettingEvent] = useState(false)\n const [event, setEvent] = useState<IEvent>()\n const [isBooking, setIsBooking] = useState(false)\n const [areTicketGroupsShown, setAreTicketGroupsShown] = useState(false)\n const [tickets, setTickets] = useState<ITicket[]>([])\n const [groupedTickets, setGroupedTickets] = useState<IGroupedTickets[]>([])\n const [isWaitingListVisible, setIsWaitingListVisible] = useState(false)\n const [isAccessCode, setIsAccessCode] = useState(false)\n const [selectedTicket, setSelectedTicket] = useState<ISelectedTicket>()\n const [promoCodeResponse, setPromoCodeResponse] = useState<\n IPromoCodeResponse | undefined\n >(undefined)\n const [isFirstCall, setIsFirstCall] = useState(true)\n const [passwordProtectedEventData, setPasswordProtectedEventData] = useState<\n IPasswordProtectedEventData | undefined\n >()\n\n //#region Refs\n const eventErrorCodeRef = useRef(0)\n const ticketsCoreRef = useRef<TicketsCoreHandle>(null)\n const sessionHandleRef = useRef<SessionHandleType>(null)\n const isApiErrorRef = useRef<boolean>(false)\n //#endregion Refs\n\n const showAlert = (message: string) => {\n if (config.areAlertsEnabled) {\n Alert.alert('', message)\n }\n }\n\n const isTicketOnSale = (ticketsForCheck: ITicket[]) =>\n _some(\n ticketsForCheck,\n (item: ITicket) => item.salesStarted && !item.salesEnded && !item.soldOut\n )\n\n const areTicketsOnSale = (): boolean => {\n if (event?.salesEnded) {\n return false\n }\n\n if (\n config.areTicketsGrouped &&\n areTicketGroupsShown &&\n groupedTickets.length === 0\n ) {\n return false\n }\n\n if (!config.areTicketsGrouped && tickets.length === 0) {\n return false\n }\n\n if (config.areTicketsGrouped) {\n return _some(groupedTickets, (gTicket) => isTicketOnSale(gTicket.data))\n } else {\n return isTicketOnSale(tickets)\n }\n }\n\n //#region Core Api calls\n const retrieveStoredAccessToken = async () => {\n if (!ticketsCoreRef.current) {\n return { eventError: { message: 'Ticket core is not initialized' } }\n }\n\n setIsUserLogged(await ticketsCoreRef.current.getIsUserLoggedIn())\n }\n\n const getTicketsCore = async (promoCode?: string): Promise<IGetTicketsPayload> => {\n if (!ticketsCoreRef.current) {\n return { error: { message: 'Ticket core is not initialized' } }\n }\n\n return await ticketsCoreRef.current.getTickets({\n referredId: referrerId,\n promoCode,\n areTicketsSortedBySoldOut: config.areTicketsSortedBySoldOut,\n areTicketsGrouped: config.areTicketsGrouped,\n })\n }\n\n const unlockPasswordProtectedEventCore = async (\n password: string\n ): Promise<IEventResponse> => {\n if (!ticketsCoreRef.current) {\n return { eventError: { message: 'Ticket core is not initialized' } }\n }\n\n return await ticketsCoreRef.current.unlockPasswordProtectedEvent(password)\n }\n\n const getEventCore = async (): Promise<IEventResponse> => {\n if (!ticketsCoreRef.current) {\n return { eventError: { message: 'Ticket core is not initialized' } }\n }\n\n return await ticketsCoreRef.current.getEvent()\n }\n\n const addToCartCore = async (\n data: IBookTicketsOptions\n ): Promise<IAddToCartResponse> => {\n if (!ticketsCoreRef.current) {\n return { error: { message: 'Ticket core is not initialized' } }\n }\n\n return await ticketsCoreRef.current.addToCart(data)\n }\n //#endregion Core Api calls\n\n //#region Fetch Initial Data\n const fetchInitialData = async () => {\n try {\n logger.info('Fetching initial data')\n await retrieveStoredAccessToken()\n logger.info('retrieveStoredAccessToken')\n await getEventData()\n logger.info('getEventData success')\n } catch (error) {\n logger.error('Error while fetching initial data', error)\n }\n }\n //#endregion Fetch Initial Data\n\n //#region Api Calls\n const getTickets = async (promoCode: string = '') => {\n setIsGettingTickets(true)\n isApiErrorRef.current = false\n const {\n error,\n tickets: responseTickets,\n promoCodeResult,\n isInWaitingList,\n isAccessCodeRequired,\n areGroupsShown,\n } = await getTicketsCore(promoCode)\n logger.info('getTicketsCore response', {\n error,\n tickets: responseTickets,\n promoCodeResult,\n isInWaitingList,\n isAccessCodeRequired,\n areGroupsShown,\n })\n setIsGettingTickets(false)\n\n if (error) {\n onFetchTicketsError?.(error)\n isApiErrorRef.current = true\n return showAlert('Error while getting tickets, please try again')\n }\n\n setIsWaitingListVisible(!!isInWaitingList)\n setIsAccessCode(!!isAccessCodeRequired)\n setAreTicketGroupsShown(areGroupsShown || false)\n\n if (responseTickets && !_isEmpty(responseTickets)) {\n if (config.areTicketsGrouped) {\n if (areGroupsShown) {\n setGroupedTickets(responseTickets as IGroupedTickets[])\n } else {\n setTickets(responseTickets as ITicket[])\n }\n } else {\n setTickets(responseTickets as ITicket[])\n }\n\n if (isFirstCall && promoCodeResult?.isValid) {\n setPromoCodeResponse(promoCodeResult)\n } else if (!isFirstCall) {\n setPromoCodeResponse(promoCodeResult)\n }\n\n const onFetchTicketsData: IOnFetchTicketsSuccess = {\n promoCodeResponse: {\n success: true,\n message: promoCodeResponse?.message,\n },\n tickets: responseTickets,\n isInWaitingList,\n isAccessCodeRequired,\n areTicketsGroupsShown: areGroupsShown,\n }\n\n onFetchTicketsSuccess?.(onFetchTicketsData)\n\n if (\n !isFirstCall &&\n (!promoCodeResult?.isValid || promoCodeResult.isValid === 0)\n ) {\n onFetchTicketsSuccess?.({\n ...onFetchTicketsData,\n promoCodeResponse: {\n success: false,\n message: promoCodeResult?.message,\n },\n })\n }\n }\n\n setIsFirstCall(false)\n }\n\n const getEventData = async () => {\n logger.info('Fetching event data: API call')\n if (isApiErrorRef.current === true) {\n logger.info('Fetching event data: API call: Skip, error already occurred')\n return\n }\n\n setIsGettingEvent(true)\n const { eventError, eventData } = await getEventCore()\n logger.info('Fetching event data: API call: response', {\n eventError,\n eventData,\n })\n setIsGettingEvent(false)\n\n if (eventError) {\n logger.info('Fetching event data: API call: Error', eventError)\n eventErrorCodeRef.current = eventError.code || 400\n if (eventError.code === 401) {\n logger.info('Fetching event data: API call: Error: 401')\n setPasswordProtectedEventData({\n isPasswordProtected: true,\n message: eventError.message,\n })\n } else {\n logger.info('Fetching event data: API call: Error: ' + eventError.message)\n showAlert(eventError.message)\n }\n return onFetchEventError?.(\n eventError || { message: 'There was an error while fetching event' }\n )\n }\n\n eventErrorCodeRef.current = 0\n\n if (!eventData) {\n logger.info('Fetching event data: API call: Error: No event data')\n return onFetchEventError?.({\n message: 'There was an error while fetching event',\n })\n }\n\n try {\n logger.info('Fetching tickets: getTickets()')\n await getTickets()\n } catch (error) {\n logger.info('Fetching tickets: getTickets() Error: ' + error)\n showAlert(error)\n }\n\n onFetchEventSuccess?.(eventData)\n setEvent(eventData)\n }\n\n const performBookTickets = async () => {\n if (!selectedTicket || !selectedTicket.selectedOption) {\n onAddToCartError?.({ message: 'Please select a ticket' })\n return showAlert('Please select a ticket')\n }\n\n const ticketQuantity =\n typeof selectedTicket.selectedOption.value === 'string'\n ? parseInt(selectedTicket.selectedOption.value, 10)\n : selectedTicket.selectedOption.value\n\n const ticketsOptions: IBookTicketsOptions = {\n quantity: ticketQuantity,\n optionName: _get(selectedTicket, 'optionName'),\n ticketId: _get(selectedTicket, 'id'),\n price: selectedTicket.price,\n }\n\n setIsBooking(true)\n const { data: result, error: addToCartError } = await addToCartCore(ticketsOptions)\n setIsBooking(false)\n\n if (result) {\n return onAddToCartSuccess?.(result)\n }\n\n if (addToCartError) {\n showAlert(addToCartError.message || 'Error while adding tickets to cart')\n return onAddToCartError?.(addToCartError)\n }\n }\n //#endregion Api Calls\n\n const onLoadingChangeCallback = useCallback(\n (loading: boolean) => {\n if (onLoadingChange) {\n onLoadingChange(loading)\n }\n },\n [onLoadingChange]\n )\n\n //#region UseEffects\n useEffect(() => {\n if (isGettingEvent || isGettingTickets || isBooking) {\n onLoadingChangeCallback(true)\n } else {\n onLoadingChangeCallback(false)\n }\n }, [isGettingTickets, isGettingEvent, isBooking, onLoadingChangeCallback])\n\n useEffect(() => {\n if (!isCheckingCurrentSession && isFirstCall) {\n fetchInitialData()\n }\n }, [isCheckingCurrentSession])\n //#endregion UseEffects\n\n //#region Imperative Handler\n useImperativeHandle(ref, () => ({\n async refreshAccessToken(refreshToken: string): Promise<IFetchAccessTokenResponse> {\n if (!sessionHandleRef.current) {\n return {\n accessTokenError: {\n message: 'Session Handle ref is not initialized',\n },\n }\n }\n\n const { accessTokenError, accessTokenData } =\n await sessionHandleRef.current!.refreshAccessToken(refreshToken)\n if (!accessTokenError && accessTokenData?.accessToken) {\n await fetchInitialData()\n }\n return {\n accessTokenData,\n accessTokenError,\n }\n },\n\n async reloadData() {\n await fetchInitialData()\n },\n }))\n //#endregion Imperative Handler\n\n //#region Handlers\n const handleOnPressGetTickets = () => {\n if (eventErrorCodeRef.current !== 0) {\n showAlert('Event not found')\n return onAddToCartError?.({\n code: eventErrorCodeRef.current,\n message: 'Event not found',\n })\n }\n performBookTickets()\n }\n\n const handleOnPressApplyPromoCode = async (code: string) => {\n await getTickets(code)\n }\n\n const handleOnSelectTicketOption = (ticket: ISelectedTicket) => {\n setSelectedTicket(ticket)\n }\n\n const handleOnLogout = async () => {\n if (!ticketsCoreRef.current) {\n return { error: { message: 'Ticket core is not initialized' } }\n }\n\n await ticketsCoreRef.current.logout()\n setIsUserLogged(false)\n\n await getEventData()\n onPressLogout?.()\n }\n\n const handleOnLoadingChange = (loading: boolean) => {\n onLoadingChangeCallback(loading)\n }\n\n const handleOnSubmitEventPassword = async (password: string) => {\n setPasswordProtectedEventData({\n ...passwordProtectedEventData,\n isLoading: true,\n })\n\n const { eventData, eventError } = await unlockPasswordProtectedEventCore(password)\n\n if (eventError) {\n return setPasswordProtectedEventData({\n ...passwordProtectedEventData,\n isLoading: false,\n apiError: eventError.message,\n })\n }\n\n setPasswordProtectedEventData({\n ...passwordProtectedEventData,\n isLoading: false,\n apiError: '',\n isPasswordProtected: false,\n message: '',\n })\n eventErrorCodeRef.current = 0\n\n onFetchEventSuccess?.(eventData!)\n setEvent(eventData)\n getTickets()\n }\n //#endregion\n\n //#region RENDER\n return (\n <TicketsCore ref={ticketsCoreRef}>\n <SessionHandle ref={sessionHandleRef}>\n <TicketsView\n isGettingTickets={isGettingTickets}\n tickets={tickets}\n groupedTickets={groupedTickets}\n onPressGetTickets={handleOnPressGetTickets}\n onPressApplyPromoCode={handleOnPressApplyPromoCode}\n promoCodeValidationMessage={promoCodeResponse?.message}\n isPromoCodeValid={promoCodeResponse?.isValid}\n onSelectTicketOption={handleOnSelectTicketOption}\n selectedTicket={selectedTicket}\n isBookingTickets={isBooking}\n styles={styles}\n isGettingEvent={isGettingEvent}\n texts={texts}\n event={event}\n isWaitingListVisible={isWaitingListVisible}\n isGetTicketsButtonVisible={areTicketsOnSale()}\n isAccessCodeEnabled={isAccessCodeEnabled || isAccessCode}\n isPromoEnabled={isPromoEnabled}\n isUserLogged={isUserLogged}\n onPressMyOrders={onPressMyOrders}\n onPressLogout={handleOnLogout}\n areLoadingIndicatorsEnabled={config.areActivityIndicatorsEnabled}\n onAddToWaitingListError={onAddToWaitingListError}\n onAddToWaitingListSuccess={onAddToWaitingListSuccess}\n onLoadingChange={handleOnLoadingChange}\n promoCodeCloseIcon={promoCodeCloseIcon}\n areTicketsGroupsShown={areTicketGroupsShown}\n passwordProtectedEventData={passwordProtectedEventData}\n onPressSubmitEventPassword={handleOnSubmitEventPassword}\n isCheckingCurrentSession={isCheckingCurrentSession}\n />\n </SessionHandle>\n </TicketsCore>\n )\n //#endregion RENDER\n }\n)\n\nexport default Tickets\n","import React from 'react'\nimport { FlatList, SectionList, Text, View } from 'react-native'\n\nimport {\n EnterPassword,\n Loading,\n LoggedIn,\n PromoCode,\n WaitingList,\n} from '../../components'\nimport Button from '../../components/button/Button'\nimport Separator from '../../components/separator/Separator'\nimport TicketGroupListHeader from './components/TicketGroupListHeader'\nimport CartListItem from './components/TicketListItem'\nimport s from './styles'\nimport { ITicketsViewProps } from './types'\n\nconst TicketsView = ({\n isGettingTickets,\n tickets,\n groupedTickets,\n styles,\n onPressGetTickets,\n onPressApplyPromoCode,\n promoCodeValidationMessage,\n isPromoCodeValid,\n onSelectTicketOption,\n selectedTicket,\n isBookingTickets,\n texts,\n isGettingEvent,\n event,\n isWaitingListVisible,\n isGetTicketsButtonVisible,\n isAccessCodeEnabled,\n isUserLogged,\n onPressMyOrders,\n onPressLogout,\n areLoadingIndicatorsEnabled,\n onAddToWaitingListError,\n onAddToWaitingListSuccess,\n onLoadingChange,\n areAlertsEnabled,\n promoCodeCloseIcon,\n areTicketsGroupsShown,\n passwordProtectedEventData,\n onPressSubmitEventPassword,\n}: ITicketsViewProps) => {\n const isButtonDisabled = !selectedTicket || selectedTicket.selectedOption?.value === 0\n const buttonText = texts?.getTicketsButton\n ? texts.getTicketsButton\n : isButtonDisabled\n ? 'Get tickets'\n : `Get ${selectedTicket?.selectedOption?.value} tickets`\n const title = texts?.title ? texts.title : 'GET TICKETS'\n\n return passwordProtectedEventData?.isPasswordProtected ? (\n <EnterPassword\n onSubmit={onPressSubmitEventPassword}\n styles={styles?.enterPassword}\n texts={texts?.enterPassword}\n isLoading={passwordProtectedEventData?.isLoading}\n apiError={passwordProtectedEventData?.apiError}\n />\n ) : (\n <View style={[s.container, styles?.rootContainer]}>\n <View style={[s.container, styles?.container]}>\n <View style={s.header}>\n <Text style={[s.headerText, styles?.title]}>{title}</Text>\n </View>\n <PromoCode\n onPressApply={onPressApplyPromoCode}\n promoCodeValidationMessage={promoCodeValidationMessage}\n isPromoCodeValid={isPromoCodeValid}\n isAccessCodeEnabled={isAccessCodeEnabled}\n styles={styles?.promoCode}\n texts={texts?.promoCode}\n closeButtonIcon={promoCodeCloseIcon}\n />\n {areTicketsGroupsShown ? (\n <SectionList\n sections={groupedTickets}\n style={styles?.ticketList?.listContainer}\n renderItem={({ item, index }) => (\n <CartListItem\n onSelectTicketItem={onSelectTicketOption}\n ticket={item}\n ticketNumber={index}\n selectedTicket={selectedTicket}\n styles={styles?.ticketList?.item}\n texts={texts?.listItem}\n {...item}\n />\n )}\n renderSectionHeader={(data) => (\n <TicketGroupListHeader\n text={data.section.title}\n styles={{\n container: styles?.ticketList?.sectionHeader?.container,\n text: styles?.ticketList?.sectionHeader?.title,\n }}\n />\n )}\n />\n ) : (\n <FlatList\n data={tickets}\n style={styles?.ticketList?.listContainer}\n keyExtractor={(item) => `ticket.${item.id}`}\n renderItem={({ item, index }) => (\n <CartListItem\n onSelectTicketItem={onSelectTicketOption}\n ticket={item}\n ticketNumber={index}\n selectedTicket={selectedTicket}\n styles={styles?.ticketList?.item}\n texts={texts?.listItem}\n {...item}\n />\n )}\n ItemSeparatorComponent={() => <Separator />}\n />\n )}\n {isWaitingListVisible && event?.salesStarted && (\n <WaitingList\n styles={styles?.waitingList}\n texts={texts?.waitingList}\n onAddToWaitingListSuccess={onAddToWaitingListSuccess}\n onAddToWaitingListError={onAddToWaitingListError}\n onLoadingChange={onLoadingChange}\n areAlertsEnabled={areAlertsEnabled}\n />\n )}\n {isGetTicketsButtonVisible && (\n <Button\n text={buttonText}\n onPress={onPressGetTickets}\n isUpperCase={true}\n isLoading={isBookingTickets}\n isDisabled={isButtonDisabled}\n styles={\n isButtonDisabled\n ? styles?.getTicketsButtonDisabled\n : styles?.getTicketsButtonActive\n }\n />\n )}\n {isUserLogged && (\n <LoggedIn\n onPressMyOrders={onPressMyOrders}\n styles={styles?.loggedIn}\n texts={texts?.loggedInTexts}\n onPressLogout={onPressLogout}\n />\n )}\n {(isGettingTickets || isGettingEvent) && areLoadingIndicatorsEnabled && (\n <Loading />\n )}\n </View>\n </View>\n )\n}\n\nexport default TicketsView\n","import React, { FC } from 'react'\nimport { Text, View } from 'react-native'\n\nimport { ITicketGroupListHeaderProps } from './types'\n\nconst TicketGroupListHeader: FC<ITicketGroupListHeaderProps> = ({ styles, text }) => (\n <View style={styles?.container}>\n {!!text && <Text style={styles?.text}>{text}</Text>}\n </View>\n)\n\nexport default TicketGroupListHeader\n","import _maxBy from 'lodash/maxBy'\nimport React from 'react'\nimport { Text, View } from 'react-native'\n\nimport { Dropdown } from '../../../components'\nimport { IDropdownItem } from '../../../components/dropdown/types'\nimport { priceWithCurrency } from '../../../helpers/StringsHelper'\nimport { CartListItemStyles as s } from './styles'\nimport { ITicketListItemProps } from './types'\n\nconst TicketListItem = ({\n ticket,\n ticketNumber,\n onSelectTicketItem,\n selectedTicket,\n styles,\n texts,\n}: ITicketListItemProps) => {\n const soldOutText = texts?.soldOut || 'SOLD OUT'\n const salesNotStartedText = texts?.salesNotStarted || 'Sales not started'\n const salesEnded = texts?.salesEnded || 'Sales ended'\n const feesIncludedText = texts?.inclFees || '(incl. Fees)'\n const feesExcludedText = texts?.exclFees || '(excl. Fees)'\n const freeText = texts?.free || 'Free'\n const ticketText = texts?.ticket || 'Ticket'\n const isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut\n const isSalesClosed = !ticket.salesStarted || ticket.salesEnded\n const customSoldOutMessage = texts?.soldOut || 'SOLD OUT'\n const soldOutMessage = ticket.soldOutMessage\n ? `${ticket.soldOutMessage}`.toUpperCase()\n : customSoldOutMessage\n\n const ticketsClosedMessage = !ticket.salesStarted ? salesNotStartedText : salesEnded\n\n const getSelectOptions = (\n maxCount: number = 10,\n minCount: number = 1,\n multiplier: number = 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.toString(), value: i })\n }\n return options\n }\n\n const dropdownOptions = getSelectOptions(\n ticket.maxQuantity,\n ticket.minQuantity,\n ticket.multiplier\n )\n\n const handleOnSelectItem = (item: IDropdownItem) => {\n onSelectTicketItem({ ...ticket, selectedOption: item })\n }\n\n const selectedOption: IDropdownItem =\n selectedTicket && ticket.id === selectedTicket.id && selectedTicket.selectedOption\n ? selectedTicket.selectedOption\n : { label: '0', value: 0 }\n\n const feesIncluded = ticket.feeIncluded ? feesIncludedText : feesExcludedText\n const showOldPrice = ticket.price !== ticket.oldPrice\n const isTicketFree = +ticket.price === 0\n const ticketPrice = isSoldOut\n ? soldOutText\n : isTicketFree\n ? freeText\n : priceWithCurrency(ticket.price.toFixed(2).toString(), ticket.priceSymbol)\n\n const maximumOption = _maxBy(dropdownOptions, (o) => o.value)?.value\n\n let rightContent = <></>\n\n if (ticket.soldOut || ticket.sold_out || !ticket.displayTicket) {\n rightContent = <Text>{soldOutMessage}</Text>\n }\n if (ticket.displayTicket) {\n rightContent = isSalesClosed ? (\n <Text>{ticketsClosedMessage}</Text>\n ) : maximumOption && maximumOption > 0 ? (\n <Dropdown\n items={dropdownOptions}\n selectedOption={selectedOption}\n onSelectItem={handleOnSelectItem}\n styles={styles?.dropdown}\n />\n ) : (\n <></>\n )\n }\n\n return (\n <View style={[s.container, styles?.container]}>\n <View style={s.leftContainer}>\n <Text style={[s.ticketNumber, styles?.ticketName]} numberOfLines={2}>\n {ticket.displayName.toUpperCase() || `${ticketText} ${ticketNumber}`}\n </Text>\n {isSoldOut ? (\n <View style={[s.soldOutContainer, styles?.soldOutContainer]}>\n <Text style={[s.soldOut, styles?.soldOutText]}>{soldOutMessage}</Text>\n </View>\n ) : (\n <>\n <View style={styles?.pricesContainer}>\n {showOldPrice && (\n <Text style={[s.oldPrice, styles?.oldPrice]}>\n {priceWithCurrency(ticket.oldPrice?.toString(), ticket.priceSymbol)}\n </Text>\n )}\n <Text style={[s.price, styles?.price]}>{ticketPrice}</Text>\n </View>\n <Text style={[s.tax, styles?.fees]}>{feesIncluded.toUpperCase()}</Text>\n </>\n )}\n </View>\n {!isSalesClosed && !isSoldOut && (\n <View style={s.rightContainer}>{rightContent}</View>\n )}\n </View>\n )\n}\n\nexport default TicketListItem\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../../res'\n\nexport const CartListItemStyles = StyleSheet.create({\n container: {\n width: '100%',\n paddingVertical: 16,\n flexDirection: 'row',\n },\n ticketNumber: {\n fontWeight: '600',\n fontSize: 16,\n marginBottom: 4,\n color: R.colors.primary,\n },\n price: {\n fontWeight: '800',\n fontSize: 18,\n color: R.colors.primary,\n },\n soldOut: {\n fontWeight: '800',\n fontSize: 20,\n color: R.colors.primary,\n },\n leftContainer: {\n flex: 7,\n },\n rightContainer: {\n flex: 3,\n alignItems: 'flex-end',\n justifyContent: 'center',\n },\n tax: {\n marginTop: 4,\n fontWeight: '600',\n color: R.colors.primary,\n },\n soldOutContainer: {\n borderRadius: 2,\n borderWidth: 2,\n justifyContent: 'center',\n alignItems: 'center',\n paddingVertical: 8,\n marginTop: 8,\n borderColor: R.colors.primary,\n },\n oldPrice: {\n fontSize: 16,\n color: R.colors.danger,\n textDecorationLine: 'line-through',\n },\n})\n","import { StyleSheet } from 'react-native'\n\nimport R from '../../res'\n\nexport default StyleSheet.create({\n container: {\n flex: 1,\n },\n header: {\n paddingVertical: 16,\n },\n headerText: {\n fontSize: 22,\n color: R.colors.primary,\n fontWeight: '800',\n },\n headerTextBold: {\n fontSize: 18,\n fontWeight: '800',\n color: R.colors.primary,\n },\n})\n","/*\n * COMPOSITE HOOK FOR CHECKOUT FLOW\n *\n * This hook is used to initialize the checkout flow\n * and provide all the necessary data and functions\n * to the checkout component.\n *\n */\n\nimport {\n BillingDetails,\n initStripe,\n useConfirmPayment,\n createPaymentMethod,\n} from '@stripe/stripe-react-native'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport BackgroundTimer from 'react-native-background-timer'\n\nimport { logger } from '../../../utils/Logger'\nimport { logError } from '../../../utils/handlers'\nimport { useRegisterUser } from '../../auth/api-hooks'\nimport { CustomerProfileResponse, IRegisterUserResponse } from '../../auth/types'\nimport { storeAuthTokens } from '../../auth/utils'\nimport { useEventCustomFields } from '../../event/api-hooks'\nimport { AddOnAttribute, OrderAttribute, TicketAttribute } from '../../event/types'\nimport { useCountries, useStates } from '../../geo/api-hooks'\nimport { CheckoutFormProps, CheckoutFormValues } from '../form/types'\nimport { IOrderItem, OrderResult, UpdateCheckoutResponse } from '../types'\nimport { createCheckoutBody, createRegistrationData, priceWithCurrency } from '../utils'\nimport {\n useAddons,\n useCart,\n useCheckout,\n useEventConditions,\n useEventInfo,\n usePaymentData,\n usePaymentSuccess,\n useTickets,\n useUpdateCheckout,\n} from './api-hooks'\n\nexport interface UseCheckoutFlowProps {\n onCartExpired?: () => void\n isSinglePageCheckout?: boolean\n isAgeRequired?: boolean\n isPhoneRequired?: boolean\n isPhoneHidden?: boolean\n minimumAge?: number\n customerProfile?: CustomerProfileResponse\n onCheckoutSuccess?: (data: ICheckoutSuccessData) => void\n onCheckoutError?: (error: any) => void\n onPaymentSuccess?: (data: OrderResult) => void\n onPaymentError?: (error: any) => void\n // Return true if the form should be submitted\n onRegistrationSuccess?: (data: IRegisterUserResponse) => void\n onRegistrationError?: (error: any) => void\n}\n\nexport interface UseCheckoutFlowReturn extends Omit<CheckoutFormProps, 'scrollRef'> {\n secondsLeft: number | undefined\n eventId: string | undefined\n isInitialLoading: boolean\n isSubmitting: boolean\n isLoggedIn: boolean\n setSecondsLeft: React.Dispatch<React.SetStateAction<number | undefined>>\n setSelectedCountry: React.Dispatch<React.SetStateAction<string>>\n checkoutData: UpdateCheckoutResponse | null\n handlePayment: (input: ICheckoutSuccessData) => Promise<void>\n}\n\nexport interface ICheckoutSuccessData {\n hash: string\n total: string | number\n values: CheckoutFormValues\n}\n\nexport const useCheckoutFlow = ({\n onCartExpired,\n onCheckoutSuccess,\n onCheckoutError,\n onPaymentSuccess,\n onPaymentError,\n isAgeRequired,\n isPhoneRequired,\n isPhoneHidden,\n minimumAge,\n isSinglePageCheckout,\n customerProfile,\n onRegistrationSuccess,\n onRegistrationError,\n}: UseCheckoutFlowProps): UseCheckoutFlowReturn => {\n const cartQuery = useCart()\n const eventId = cartQuery.data?.data?.attributes?.eventId\n\n const [orderItems, setOrderItems] = useState<IOrderItem[]>([])\n const [secondsLeft, setSecondsLeft] = useState<number | undefined>(undefined)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [checkoutData, setCheckoutData] = useState<UpdateCheckoutResponse | null>(null)\n\n const [selectedCountry, setSelectedCountry] = useState<string>('1')\n const [addons, setAddons] = useState<Record<string, number>>({})\n\n const ticketsQuery = useTickets(eventId)\n const eventInfoQuery = useEventInfo(eventId)\n\n const countriesQuery = useCountries()\n\n const checkoutMutation = useCheckout()\n const paymentDataMutation = usePaymentData()\n const updateCheckoutMutation = useUpdateCheckout()\n const paymentSuccessMutation = usePaymentSuccess()\n const customFieldsQuery = useEventCustomFields(eventId)\n\n const addonsQuery = useAddons(eventId)\n const statesQuery = useStates(selectedCountry)\n const conditionsQuery = useEventConditions(eventId)\n\n const handleRegistrationError = useCallback(\n (registerError: any): boolean => {\n // Check for already registered user (422 status)\n if (registerError?.response?.status === 422) {\n const errorData = registerError.response?.data\n\n // Check all possible email error structures\n const emailErrors =\n errorData?.errors?.email ||\n errorData?.data?.message?.email ||\n (errorData?.message?.email ? errorData.message.email : null)\n\n logger.debug('[useCheckoutFlow] Email validation error:', { emailErrors })\n if (emailErrors) {\n // Show login dialog for already registered user\n const emailAlreadyRegisteredText =\n 'It appears this email is already attached to an account. Please log in here to complete your registration.'\n\n let errorMessage: string\n if (Array.isArray(emailErrors)) {\n errorMessage = emailErrors[0]\n } else if (typeof emailErrors === 'string') {\n errorMessage = emailErrors\n } else {\n errorMessage = emailAlreadyRegisteredText\n }\n\n if (errorMessage === 'The email is already used') {\n errorMessage = emailAlreadyRegisteredText\n }\n\n // Show login dialog\n onRegistrationError?.(errorMessage)\n return true // Registration handled, don't continue with checkout\n } else {\n // Other validation errors\n const errorMessages = Object.entries(errorData?.errors || {})\n .map(\n ([field, messages]) =>\n `${field}: ${Array.isArray(messages) ? messages.join(', ') : messages}`\n )\n .join('\\n')\n throw new Error(`Validation errors: ${errorMessages}`)\n }\n }\n\n // Generic error\n throw new Error(registerError?.message || 'Registration failed')\n },\n [onRegistrationError]\n )\n\n const registerUserMutation = useRegisterUser()\n\n const registerUser = useCallback(\n async (values: CheckoutFormValues): Promise<boolean> => {\n try {\n // User is already registered or logged in, skip registration\n if (customerProfile) {\n logger.debug('[useCheckoutFlow] User already logged in, skipping registration')\n return true\n }\n logger.debug('[useCheckoutFlow] Starting user registration', {\n email: values.email,\n })\n // Create and submit registration data\n const registerUserData = createRegistrationData(values, isAgeRequired)\n const result = await registerUserMutation.mutateAsync(registerUserData)\n\n // Store tokens and extract user data\n await storeAuthTokens(result.data.attributes)\n\n logger.debug('[useCheckoutFlow] User registration successful', {\n email: values.email,\n })\n // Registration successful\n onRegistrationSuccess?.(result.data)\n return true\n } catch (registerError: any) {\n logger.error('[useCheckoutFlow] User registration failed', {\n error: registerError?.message,\n email: values.email,\n })\n return !handleRegistrationError(registerError)\n }\n },\n [\n customerProfile,\n isAgeRequired,\n registerUserMutation,\n handleRegistrationError,\n onRegistrationSuccess,\n ]\n )\n\n // Extract and sort order custom fields\n const orderCustomFields = useMemo(() => {\n if (!customFieldsQuery.data?.data?.attributes) {\n return []\n }\n\n // Filter for order attributes only\n const orderAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr): attr is OrderAttribute => 'order' in attr\n )\n\n // Extract fields from order attributes and sort by order property\n const fields = orderAttributes\n .map((attr) => attr.order.group.fields)\n .flat()\n .sort((a, b) => {\n // Convert order strings to numbers for comparison\n const orderA = parseInt(a.order, 10) || 0\n const orderB = parseInt(b.order, 10) || 0\n return orderA - orderB\n })\n\n return fields\n }, [customFieldsQuery.data])\n\n // Extract and sort ticket custom fields\n const ticketCustomFields = useMemo(() => {\n if (!customFieldsQuery.data?.data?.attributes) {\n return []\n }\n\n // Filter for ticket attributes only\n const ticketAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr) => 'ticket' in attr\n ) as TicketAttribute[]\n\n // Extract fields from ticket attributes and sort by order property\n const fields = ticketAttributes\n .map((attr) => attr.ticket.group.fields)\n .flat()\n .sort((a, b) => {\n // Convert order strings to numbers for comparison\n const orderA = parseInt(a.order, 10) || 0\n const orderB = parseInt(b.order, 10) || 0\n return orderA - orderB\n })\n\n return fields\n }, [customFieldsQuery.data])\n\n const addonCustomFields = useMemo(() => {\n if (!customFieldsQuery.data?.data?.attributes) {\n return []\n }\n\n // Filter for addon attributes only\n const addonAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr) => 'add-on' in attr\n ) as AddOnAttribute[]\n\n // Extract fields from addon attributes and sort by order property\n const fields = addonAttributes\n .map((attr) => attr['add-on'].group.fields)\n .flat()\n .sort((a, b) => {\n // Convert order strings to numbers for comparison\n const orderA = parseInt(a.order, 10) || 0\n const orderB = parseInt(b.order, 10) || 0\n return orderA - orderB\n })\n\n return fields\n }, [customFieldsQuery.data])\n\n const { confirmPayment } = useConfirmPayment()\n\n const isInitialLoading = useMemo(() => {\n if (cartQuery.isPending) return true\n if (eventInfoQuery.isPending) return true\n if (ticketsQuery.isPending) return true\n if (countriesQuery.isPending) return true\n if (customFieldsQuery.isPending) return true\n\n return false\n }, [\n cartQuery.isPending,\n eventInfoQuery.isPending,\n ticketsQuery.isPending,\n countriesQuery.isPending,\n customFieldsQuery.isPending,\n ])\n\n const defaultCustomFieldValues = useMemo(() => {\n const orderDefaults: Record<string, string | string[]> = {}\n const ticketDefaults: Record<string, string | string[]> = {}\n const addonDefaults: Record<string, string | string[]> = {}\n\n // Get the custom fields from the query response\n if (customFieldsQuery.data?.data?.attributes) {\n // Filter to only include OrderAttribute types and cast accordingly\n const orderAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr): attr is OrderAttribute => 'order' in attr\n )\n\n const ticketAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr): attr is TicketAttribute => 'ticket' in attr\n )\n\n const addonAttributes = customFieldsQuery.data.data.attributes.filter(\n (attr): attr is AddOnAttribute => 'add-on' in attr\n )\n // Extract fields from order attributes - now TypeScript knows these are OrderAttribute\n const orderFields = orderAttributes.map((attr) => attr.order.group.fields).flat()\n // Set default values for fields that have them\n orderFields.forEach((field) => {\n if (field.defaultValue !== undefined && field.defaultValue !== null) {\n orderDefaults[field.name] = field.defaultValue\n }\n })\n\n // Extract fields from ticket attributes - now TypeScript knows these are TicketAttribute\n const ticketFields = ticketAttributes.map((attr) => attr.ticket.group.fields).flat()\n\n ticketFields.forEach((field) => {\n if (field.defaultValue !== undefined && field.defaultValue !== null) {\n ticketDefaults[field.name] = field.defaultValue\n }\n })\n\n // Extract fields from addon attributes - now TypeScript knows these are AddOnAttribute\n const addonFields = addonAttributes\n .map((attr) => attr['add-on'].group.fields)\n .flat()\n\n addonFields.forEach((field) => {\n if (field.defaultValue !== undefined && field.defaultValue !== null) {\n addonDefaults[field.name] = field.defaultValue\n }\n })\n }\n\n return { orderDefaults, ticketDefaults, addonDefaults }\n }, [customFieldsQuery.data])\n\n // Prefill form with user profile data when available\n const initialValues = useMemo(() => {\n // Get ticket quantity from cart\n const ticketQuantity = cartQuery.data?.data?.attributes?.cart?.[0]?.quantity || 1\n // Create empty ticket holders array based on ticket quantity\n const ticketHolders = Array.from({ length: ticketQuantity }, () => ({\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n customFields: { ...defaultCustomFieldValues.ticketDefaults }, // Apply default values for ticket custom fields\n }))\n\n const availableAddons = addonsQuery.data?.data?.attributes?.add_ons || []\n\n // build addon defaults\n const addonDefaults: CheckoutFormValues['addons'] = {}\n\n availableAddons.forEach((addon) => {\n const addonId = addon.id?.toString()\n\n addonDefaults[addonId] = {\n quantity: 0,\n customFields: {},\n }\n\n // every add-on uses the same addonCustomFields list\n addonCustomFields.forEach((field) => {\n if (field.defaultValue != null) {\n addonDefaults[addonId].customFields[field.name] = Array.isArray(\n field.defaultValue\n )\n ? field.defaultValue.join(',')\n : field.defaultValue\n }\n })\n })\n\n const base: CheckoutFormValues = {\n firstName: '',\n lastName: '',\n email: '',\n emailConfirmation: '',\n phone: '',\n dateOfBirth: undefined,\n street: '',\n city: '',\n postalCode: '',\n password: '',\n passwordConfirmation: '',\n isSubToTicketFairy: false,\n isSubToBrand: false,\n isCardFormComplete: false,\n country: '-1',\n state: '-1',\n addons: addonDefaults,\n acceptedConditions: {},\n customFields: { ...defaultCustomFieldValues.orderDefaults },\n ticketHolders,\n }\n\n if (customerProfile) {\n const profile = customerProfile\n\n // Fill main user info\n base.firstName = profile.firstName || ''\n base.lastName = profile.lastName || ''\n base.email = profile.email || ''\n base.emailConfirmation = profile.email || ''\n base.phone = profile.phone || ''\n base.street = profile.streetAddress || ''\n base.city = profile.city || ''\n base.postalCode = profile.zipCode || ''\n base.country = profile.countryId || '-1'\n base.state = profile.stateId || '-1'\n base.dateOfBirth = profile.dateOfBirth || undefined\n\n // Fill first ticket holder info from the user's profile data\n if (base.ticketHolders.length > 0) {\n base.ticketHolders[0] = {\n ...base.ticketHolders[0],\n firstName: profile.firstName || '',\n lastName: profile.lastName || '',\n email: profile.email || '',\n phone: profile.phone || '',\n }\n }\n }\n\n return base\n }, [cartQuery.data?.data?.attributes?.cart, customerProfile, defaultCustomFieldValues])\n\n const countries = useMemo(() => {\n return countriesQuery.data?.data || []\n }, [countriesQuery.data?.data])\n\n const states = useMemo(() => {\n return statesQuery?.data?.data || []\n }, [statesQuery?.data?.data])\n\n const availableAddons = useMemo(() => {\n return addonsQuery.data?.data?.attributes?.add_ons || []\n }, [addonsQuery.data?.data?.attributes?.add_ons])\n\n const conditions = useMemo(() => {\n return conditionsQuery.data?.data?.attributes?.conditions || []\n }, [conditionsQuery.data?.data?.attributes?.conditions])\n\n const eventCurrency = useMemo(() => {\n return eventInfoQuery.data?.data.attributes.currency.currency\n }, [eventInfoQuery.data?.data.attributes.currency.currency])\n\n const isLoggedIn = useMemo(() => {\n return !!customerProfile\n }, [customerProfile])\n\n // Handle payment processing\n const handlePayment = useCallback(\n async (input: ICheckoutSuccessData) => {\n try {\n setIsSubmitting(true)\n logger.debug('[useCheckoutFlow] Starting payment process', {\n hash: input.hash,\n total: input.total,\n })\n\n // Get payment data\n const paymentResponse = await paymentDataMutation.mutateAsync(String(input.hash))\n const { order_details, payment_method } = paymentResponse.data.attributes\n // Check if this is a free ticket\n const isFreeTicket =\n Number(input.total) === 0 || Number(order_details.pay_now) === 0\n\n if (isFreeTicket) {\n logger.debug('[useCheckoutFlow] Processing free ticket order', {\n hash: input.hash,\n })\n // For free tickets, just confirm the order\n await paymentSuccessMutation.mutateAsync(String(input.hash))\n\n const result: OrderResult = {\n orderHash: String(input.hash),\n total: Number(input.total),\n currency: order_details.currency,\n email: input.values.email,\n }\n\n logger.debug('[useCheckoutFlow] Free ticket order confirmed', {\n hash: input.hash,\n email: input.values.email,\n })\n onPaymentSuccess?.(result)\n } else {\n logger.debug('[useCheckoutFlow] Processing paid ticket with Stripe', {\n hash: input.hash,\n amount: order_details.pay_now,\n })\n\n // Lookup country ISO-2 code from the countries list\n const selectedCountry = countries.find((c) => c.id === input.values.country)\n const countryCode = selectedCountry?.code || undefined\n\n // Lookup state code from the states list\n const selectedState = states.find((s) => s.value === input.values.state)\n const stateCode = selectedState?.code || undefined\n\n const billingDetails: BillingDetails = {\n email: input.values.email,\n name: `${input.values.firstName} ${input.values.lastName}`,\n phone: input.values.phone || undefined,\n address: {\n city: input.values.city || undefined,\n country: countryCode,\n line1: input.values.street || undefined,\n postalCode: input.values.postalCode || undefined,\n state: stateCode,\n },\n }\n\n logger.debug('[useCheckoutFlow] Confirming payment with Stripe')\n const { error: confirmError, paymentIntent } = await confirmPayment(\n payment_method.stripe_client_secret!,\n { paymentMethodType: 'Card', paymentMethodData: { billingDetails } }\n )\n\n if (confirmError || paymentIntent?.status !== 'Succeeded') {\n const errorMessage = confirmError?.message || 'Payment failed'\n logger.error('[useCheckoutFlow] Stripe payment failed', {\n error: errorMessage,\n errorCode: confirmError?.code,\n paymentIntentStatus: paymentIntent?.status,\n })\n\n // Provide user-friendly error messages\n if (\n errorMessage.includes('incomplete') ||\n errorMessage.includes('not complete')\n ) {\n throw new Error('Please complete all card details before submitting')\n }\n throw new Error(errorMessage)\n }\n\n logger.debug('[useCheckoutFlow] Stripe payment succeeded', {\n paymentIntentId: paymentIntent.id,\n })\n // Notify backend of successful payment\n await paymentSuccessMutation.mutateAsync(String(input.hash))\n\n // Notify about successful payment\n const result: OrderResult = {\n orderHash: String(input.hash),\n total: Number(input.total),\n currency: order_details.currency,\n email: input.values.email,\n paymentIntentId: paymentIntent.id,\n }\n\n logger.debug('[useCheckoutFlow] Payment process completed successfully', {\n hash: input.hash,\n email: input.values.email,\n })\n onPaymentSuccess?.(result)\n }\n } catch (error) {\n logger.error('[useCheckoutFlow] Payment process failed', {\n error: error instanceof Error ? error.message : String(error),\n })\n logError(error, 'Checkout: handlePayment')\n onPaymentError?.(error)\n throw error\n } finally {\n setIsSubmitting(false)\n }\n },\n [\n paymentDataMutation,\n paymentSuccessMutation,\n onPaymentSuccess,\n onPaymentError,\n confirmPayment,\n ]\n )\n\n const handleCheckout = useCallback(\n async (values: CheckoutFormValues) => {\n try {\n logger.debug('[useCheckoutFlow] Starting checkout process', {\n email: values.email,\n ticketHoldersCount: values.ticketHolders.length,\n })\n const checkoutBody = createCheckoutBody(values, isAgeRequired)\n const checkoutResponse = await checkoutMutation.mutateAsync(checkoutBody)\n\n const hash = checkoutResponse.data.attributes.hash\n const total = checkoutResponse.data.attributes.total\n logger.debug('[useCheckoutFlow] Checkout created successfully', {\n hash,\n total,\n email: values.email,\n })\n onCheckoutSuccess?.({ hash, total, values })\n\n return { hash, total }\n } catch (error) {\n logger.error('[useCheckoutFlow] Checkout process failed', {\n error: error instanceof Error ? error.message : String(error),\n email: values.email,\n })\n logError(error, 'Checkout: handleCheckout')\n onCheckoutError?.(error)\n throw error\n }\n },\n [checkoutMutation, isAgeRequired, onCheckoutSuccess, onCheckoutError]\n )\n\n const onSubmit = useCallback(\n async (values: CheckoutFormValues) => {\n try {\n setIsSubmitting(true)\n if (!(await registerUser(values))) return\n\n const { hash, total } = await handleCheckout(values)\n\n if (isSinglePageCheckout) {\n await handlePayment({\n hash,\n total,\n values,\n })\n }\n } catch (error) {\n logError(error, 'Checkout: onSubmit')\n } finally {\n setIsSubmitting(false)\n }\n },\n [registerUser, handleCheckout, isSinglePageCheckout, handlePayment]\n )\n\n const updateOrderItemsFromCheckoutData = useCallback(\n (\n cartPriceBreakdown: UpdateCheckoutResponse['attributes']['cart_price_breakdown']\n ) => {\n if (!cartPriceBreakdown) return\n\n // Update order items with the latest pricing information\n const updatedOrderItems: IOrderItem[] = []\n const currency = cartPriceBreakdown.currency?.currency || 'USD'\n\n // Add ticket items\n if (cartPriceBreakdown.tickets_price_breakdown) {\n cartPriceBreakdown.tickets_price_breakdown.forEach((ticket: any) => {\n updatedOrderItems.push({\n id: ticket.ticket_type_id,\n title: ticket.ticket_type_name,\n subtitle: `${ticket.quantity} x ${priceWithCurrency(\n ticket.price_per_ticket,\n currency\n )}`,\n value: priceWithCurrency(ticket.total_price.toString(), currency),\n })\n })\n }\n\n // Add add-ons\n if (\n cartPriceBreakdown.total_add_ons > 0 &&\n cartPriceBreakdown.add_ons_price_breakdown &&\n Array.isArray(cartPriceBreakdown.add_ons_price_breakdown)\n ) {\n cartPriceBreakdown.add_ons_price_breakdown.forEach((addon: any) => {\n updatedOrderItems.push({\n id: `addon_${addon.add_on_name}`,\n title: `${addon.add_on_name} (Add-on)`,\n subtitle: `${addon.quantity} x ${priceWithCurrency(\n addon.price_per_add_on,\n currency\n )}`,\n value: priceWithCurrency(addon.total_price.toString(), currency),\n })\n })\n }\n\n // Add tax if available\n if (cartPriceBreakdown.goods_tax > 0) {\n updatedOrderItems.push({\n id: 'tax',\n title: cartPriceBreakdown.goods_tax_name || 'Tax',\n value: priceWithCurrency(cartPriceBreakdown.goods_tax.toString(), currency),\n })\n }\n\n // Add total\n updatedOrderItems.push({\n id: 'total',\n title: 'Total',\n value: priceWithCurrency(cartPriceBreakdown.total.toString(), currency),\n })\n\n // Update the order items state\n setOrderItems(updatedOrderItems)\n },\n [setOrderItems]\n )\n\n // Function to update checkout with add-ons\n const updateCheckoutWithAddOns = useCallback(\n async (newAddons: { [key: string]: number } = {}) => {\n if (!eventId) {\n console.warn('Cannot update addons - no event ID')\n return\n }\n\n const mergedAddons = { ...addons, ...newAddons }\n console.log('Updating checkout with addons', {\n eventId,\n newAddons,\n mergedAddons,\n })\n\n // Remove zero quantities\n Object.entries(mergedAddons).forEach(([key, value]) => {\n if (!Number(value)) {\n delete mergedAddons[key]\n }\n })\n\n try {\n console.log('Updating checkout with addons', {\n event_id: eventId,\n add_ons: mergedAddons,\n is_from_resale: false,\n })\n // Call the API\n const response = await updateCheckoutMutation.mutateAsync({\n attributes: {\n event_id: eventId,\n add_ons: mergedAddons,\n is_from_resale: false,\n },\n })\n\n console.log('Update checkout response', JSON.stringify(response))\n\n if (response.data?.attributes) {\n const cartPriceBreakdown = response.data.attributes.cart_price_breakdown\n\n setAddons(mergedAddons)\n updateOrderItemsFromCheckoutData(cartPriceBreakdown)\n }\n } catch (error) {\n console.error('Failed to update addons', { error, eventId })\n }\n },\n [eventId, addons, updateCheckoutMutation, setAddons, updateOrderItemsFromCheckoutData]\n )\n\n // Function to handle addon changes from the form\n const onAddonChange = useCallback(\n (addonId: string, quantity: number) => {\n const updatedAddons = { [addonId]: quantity }\n updateCheckoutWithAddOns(updatedAddons)\n },\n [updateCheckoutWithAddOns]\n )\n\n const onCountryChange = useCallback(\n (countryId: string) => {\n setSelectedCountry(countryId)\n },\n [setSelectedCountry]\n )\n\n useEffect(() => {\n if (cartQuery.data?.data?.attributes?.expiresAt) {\n const expiresAt = cartQuery.data.data.attributes.expiresAt\n setSecondsLeft(expiresAt)\n\n BackgroundTimer.runBackgroundTimer(() => {\n setSecondsLeft((prev: number | undefined) => {\n if (!prev || prev <= 1) {\n BackgroundTimer.stopBackgroundTimer()\n onCartExpired?.()\n return 0\n }\n return prev - 1\n })\n }, 1000)\n\n return () => BackgroundTimer.stopBackgroundTimer()\n }\n }, [cartQuery.data, setSecondsLeft, onCartExpired])\n\n useEffect(() => {\n if (cartQuery.data?.data?.attributes) {\n const cartData = cartQuery.data.data.attributes\n const currency = (cartData.cart?.[0] as any)?.currency || 'USD'\n const eventName = eventInfoQuery.data?.data.attributes.name ?? 'Event'\n\n const items: IOrderItem[] = [\n {\n id: 'event',\n title: 'Event',\n value: eventName,\n },\n {\n id: 'tickets',\n title: 'Number of Tickets',\n value: (cartData.cart?.[0] as any)?.quantity?.toString() || '1',\n },\n ]\n\n if ((cartData.cart?.[0] as any)?.price) {\n items.push({\n id: 'price',\n title: 'Ticket Price',\n value: priceWithCurrency((cartData.cart[0] as any).price, currency),\n })\n }\n\n const total = (cartData.cart?.[0] as any)?.price || 0\n items.push({\n id: 'total',\n title: 'Total',\n value: priceWithCurrency(total, currency),\n })\n\n setOrderItems(items)\n }\n }, [cartQuery.data, eventInfoQuery.data])\n\n useEffect(() => {\n if (!eventId) return\n\n ;(async () => {\n const response = await updateCheckoutMutation.mutateAsync({\n attributes: {\n event_id: eventId,\n add_ons: addons,\n is_from_resale: false,\n },\n })\n const cartPriceBreakdown = response.data?.attributes?.cart_price_breakdown\n const additionalPaymentInformation =\n response.data?.attributes?.additional_payment_information\n\n const stripeConfig = {\n publishableKey: additionalPaymentInformation?.basic_config.apiKey,\n accountId: additionalPaymentInformation?.basic_config.accountId,\n }\n\n // await initStripe(stripeConfig);\n // setTimeout(() => {\n // setStripeInitialized(true);\n // }, 100);\n\n if (cartPriceBreakdown) {\n updateOrderItemsFromCheckoutData(cartPriceBreakdown)\n }\n\n setCheckoutData(response.data)\n })()\n }, [eventInfoQuery.data])\n\n useEffect(() => {\n if (customerProfile) {\n const profile = customerProfile\n if (profile.countryId) {\n setSelectedCountry(profile.countryId.toString())\n }\n }\n }, [setSelectedCountry, customerProfile])\n\n return {\n // Handlers\n onAddonChange,\n onCountryChange,\n onSubmit,\n\n setSecondsLeft,\n setSelectedCountry,\n\n handlePayment,\n\n // States\n states,\n eventId,\n countries,\n orderItems,\n conditions,\n secondsLeft,\n availableAddons,\n initialValues,\n eventCurrency,\n isSubmitting,\n isInitialLoading,\n isLoggedIn,\n isPhoneRequired,\n isAgeRequired,\n isPhoneHidden,\n minimumAge,\n isSinglePageCheckout,\n\n orderCustomFields,\n ticketCustomFields,\n addonCustomFields,\n checkoutData,\n }\n}\n","import axios from 'axios'\n\nexport function readableError(error: unknown) {\n if (axios.isAxiosError(error)) {\n return error.response?.data?.message || error.message\n } else if (error instanceof Error) {\n return error.message\n } else {\n return String(error)\n }\n}\n\n/**\n * Logs the most useful information from any error (Axios or otherwise).\n */\nexport function logError(\n error: unknown,\n context?: string,\n options?: { logStack?: boolean; logConfig?: boolean }\n) {\n const prefix = context ? `[${context}]` : '[Error]'\n\n if (axios.isAxiosError(error)) {\n console.error(`${prefix}: ${error.message}`)\n\n if (error.response) {\n console.error(`${prefix} Response:`, {\n status: error.response.status,\n statusText: error.response.statusText,\n data: error.response.data,\n })\n } else if (error.request) {\n console.error(`${prefix} No response received:`, error.request)\n }\n\n if (options?.logConfig) {\n console.error(`${prefix} Config:`, error.config)\n }\n } else if (error instanceof Error) {\n // Regular JS Error\n console.error(`${prefix}: ${error.message}`)\n if (options?.logStack) {\n console.error(`${prefix} Stack:`, error.stack)\n }\n } else {\n // Unknown type\n console.error(`${prefix} Unknown error:`, error)\n }\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport { AxiosError } from 'axios'\nimport { useCallback, useEffect, useState } from 'react'\n\nimport { ApiResponse } from '../../api/api.types'\nimport { Client } from '../../api/ApiClient'\nimport { QueryOpts } from '../../common/query.types'\nimport { isStoredTokenValid } from '../../helpers/LocalStorage'\nimport { CustomerProfileResponse, IRegisterUserResponse } from './types'\n\n/*\n * Hook to register new user\n */\nexport const useRegisterUser = () => {\n return useMutation<ApiResponse<IRegisterUserResponse>, AxiosError, FormData>({\n mutationFn: (userData) =>\n Client.post<ApiResponse<IRegisterUserResponse>>(\n 'v1/oauth/register-rn',\n userData\n ).then((response) => response.data),\n })\n}\n\n/**\n * Hook to fetch user profile\n */\nexport const useUserProfile = (\n options?: QueryOpts<ApiResponse<CustomerProfileResponse>, AxiosError>\n) => {\n const queryClient = useQueryClient()\n const [enabled, setEnabled] = useState(false)\n\n useEffect(() => {\n isStoredTokenValid().then((isValid) => setEnabled(isValid))\n }, [])\n\n const invalidate = useCallback(async () => {\n const isValid = await isStoredTokenValid()\n setEnabled(isValid)\n queryClient.invalidateQueries({ queryKey: ['userProfile'] })\n\n if (!isValid) {\n queryClient.cancelQueries({ queryKey: ['userProfile'] })\n queryClient.removeQueries({ queryKey: ['userProfile'] })\n queryClient.setQueryData(['userProfile'], undefined)\n }\n }, [queryClient])\n\n const query = useQuery<ApiResponse<CustomerProfileResponse>, AxiosError>({\n queryKey: ['userProfile'],\n queryFn: () =>\n Client.get<ApiResponse<CustomerProfileResponse>>(`customer/profile/`).then(\n (response) => response.data\n ),\n retry: false,\n enabled,\n ...options,\n })\n\n return { ...query, invalidate }\n}\n","import { setAccessTokenHandler } from '../../api/ApiClient'\nimport { LocalStorageKeys, storeData } from '../../helpers/LocalStorage'\nimport { IAuthAttributes } from './types'\n\n// Helper to store authentication tokens\nexport const storeAuthTokens = async (attributes: IAuthAttributes): Promise<void> => {\n const accessToken = attributes.access_token\n const refreshToken = attributes.refresh_token\n const tokenType = attributes.token_type\n const scope = attributes.scope\n\n if (!accessToken) return\n\n await setAccessTokenHandler(accessToken)\n\n if (refreshToken) {\n await storeData(LocalStorageKeys.REFRESH_TOKEN, refreshToken)\n }\n\n if (tokenType) {\n await storeData(LocalStorageKeys.TOKEN_TYPE, tokenType)\n }\n\n if (scope) {\n await storeData(LocalStorageKeys.AUTH_SCOPE, scope)\n }\n}\n","import { useQuery } from '@tanstack/react-query'\nimport { AxiosError } from 'axios'\n\nimport { ApiResponse } from '../../api/api.types'\nimport { Client } from '../../api/ApiClient'\nimport { QueryOpts } from '../../common/query.types'\nimport { IEventCustomFields } from './types'\n\n/**\n * Hook to fetch user profile\n */\nexport const useEventCustomFields = (\n eventId?: string,\n options?: QueryOpts<ApiResponse<IEventCustomFields>, AxiosError>\n) => {\n const query = useQuery<ApiResponse<IEventCustomFields>, AxiosError>({\n queryKey: ['eventCustomFields', eventId],\n queryFn: () =>\n Client.get<ApiResponse<IEventCustomFields>>(\n `v1/event/${eventId}/custom_fields/`\n ).then((response) => response.data),\n retry: false,\n enabled: !!eventId,\n ...options,\n })\n\n return { ...query }\n}\n","import { useQuery } from '@tanstack/react-query'\nimport { AxiosError } from 'axios'\n\nimport { ApiResponse } from '../../api/api.types'\nimport { Client } from '../../api/ApiClient'\nimport { CountriesResponse, StatesResponse } from './types'\n\n/**\n * Hook to fetch countries list\n */\nexport const useCountries = () => {\n return useQuery<ApiResponse<CountriesResponse>, AxiosError>({\n queryKey: ['countries'],\n queryFn: () =>\n Client.get<ApiResponse<CountriesResponse>>(`countries/list`).then(\n (response) => response.data\n ),\n staleTime: 1000 * 60 * 60 * 24, // 24 hours - countries rarely change\n })\n}\n\n/**\n * Hook to fetch states for a country\n */\nexport const useStates = (countryId?: string) => {\n return useQuery<ApiResponse<StatesResponse>, AxiosError>({\n queryKey: ['states', countryId],\n queryFn: () =>\n Client.get<ApiResponse<Record<string, string>>>(\n `countries/${countryId}/states/`\n ).then((response) => {\n return {\n ...response.data,\n data: Object.entries(response.data.data || {}).map(([id, name]) => ({\n label: String(name),\n value: id,\n code: id, // Use the key as the state code (ISO-2/state code)\n })),\n }\n }),\n enabled: !!countryId && countryId !== '-1',\n })\n}\n","/**\n * Utility functions for checkout flow\n */\n\nimport { Config } from '../../helpers/Config'\nimport { CustomField } from '../event/types'\nimport { FieldType } from '../form/types'\nimport { CheckoutFormValues } from './form/types'\nimport { ICheckoutBody } from './types'\n\n// Import and re-export from shared\nexport { priceWithCurrency } from 'tf-checkout-shared'\n\nexport const createRegistrationData = (\n values: CheckoutFormValues,\n isAgeRequired?: boolean\n): FormData => {\n const registerUserData = new FormData()\n\n // Basic user info\n registerUserData.append('email', values.email)\n registerUserData.append('first_name', values.firstName)\n registerUserData.append('last_name', values.lastName)\n registerUserData.append('password', values.password)\n registerUserData.append('password_confirmation', values.passwordConfirmation)\n\n // Required credentials\n registerUserData.append('client_id', Config.CLIENT_ID)\n registerUserData.append('client_secret', Config.CLIENT_SECRET)\n registerUserData.append('check_cart_expiration', 'true')\n\n // Optional fields\n if (values.phone) registerUserData.append('phone', values.phone)\n if (values.city) registerUserData.append('city', values.city)\n if (values.street) registerUserData.append('street_address', values.street)\n if (values.postalCode) registerUserData.append('zip', values.postalCode)\n\n // Address fields\n if (values.country && values.country !== '-1') {\n registerUserData.append('country', values.country)\n }\n if (values.state && values.state !== '-1') {\n registerUserData.append('state', values.state)\n }\n\n // Age verification\n if (isAgeRequired && values.dateOfBirth) {\n addDateOfBirthToFormData(registerUserData, values.dateOfBirth)\n }\n\n return registerUserData\n}\n\n// Helper to add date of birth fields to form data\nconst addDateOfBirthToFormData = (formData: FormData, dateOfBirth: string): void => {\n const dob = new Date(dateOfBirth)\n formData.append('dob_day', dob.getDate().toString())\n formData.append('dob_month', (dob.getMonth() + 1).toString())\n formData.append('dob_year', dob.getFullYear().toString())\n}\n\n// Helper to create checkout request body\nexport const createCheckoutBody = (\n values: CheckoutFormValues,\n isAgeRequired?: boolean\n): ICheckoutBody => {\n // Use the ticket holders from the form values - no fallbacks\n const ticketHolders = values.ticketHolders.map((holder) => ({\n email: holder.email,\n first_name: holder.firstName,\n last_name: holder.lastName,\n phone: holder.phone,\n }))\n\n const body: ICheckoutBody = {\n attributes: {\n city: values.city,\n confirm_email: values.emailConfirmation,\n country:\n values.country && values.country !== '-1'\n ? parseInt(values.country, 10)\n : undefined,\n email: values.email,\n first_name: values.firstName,\n last_name: values.lastName,\n password: values.password || '',\n phone: values.phone || '',\n state:\n values.state && values.state !== '-1' ? parseInt(values.state, 10) : undefined,\n street_address: values.street,\n zip: values.postalCode,\n ticket_holders: ticketHolders,\n ttf_opt_in: values.isSubToTicketFairy,\n brand_opt_in: values.isSubToBrand,\n },\n }\n\n if (values.addons && Object.keys(values.addons).length > 0) {\n body.attributes.add_ons = {}\n body.attributes.add_on_data_capture = {}\n\n Object.entries(values.addons).forEach(([addonId, addonData]) => {\n if (addonData.quantity > 0) {\n body.attributes.add_ons[addonId] = addonData.quantity\n\n if (addonData.customFields && Object.keys(addonData.customFields).length > 0) {\n body.attributes.add_on_data_capture[addonId] = {}\n\n Object.entries(addonData.customFields).forEach(([key, value]) => {\n if (value !== undefined && value !== '') {\n body.attributes.add_on_data_capture[addonId][key] = value\n }\n })\n }\n }\n })\n }\n\n // Add date of birth if required\n if (isAgeRequired && values.dateOfBirth) {\n const dob = new Date(values.dateOfBirth)\n body.attributes.dob_day = dob.getDate()\n body.attributes.dob_month = dob.getMonth() + 1\n body.attributes.dob_year = dob.getFullYear()\n }\n\n // Add custom fields if present\n if (values.customFields && Object.keys(values.customFields).length > 0) {\n body.attributes.data_capture = {}\n // Format custom fields for API\n Object.entries(values.customFields).forEach(([key, value]) => {\n if (value !== undefined && value !== '') {\n body.attributes.data_capture![key] = value\n }\n })\n }\n\n return body\n}\n\nexport const getFieldType = (type: CustomField['type']): FieldType => {\n switch (type) {\n case 'text':\n return FieldType.INPUT\n case 'textarea':\n return FieldType.TEXTAREA\n case 'phone':\n return FieldType.PHONE\n case 'radio':\n return FieldType.RADIO\n case 'select':\n return FieldType.SELECT\n case 'select_multi':\n return FieldType.SELECT_MULTI\n }\n}\n","import {\n useMutation,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { AxiosError } from 'axios'\nimport { useCallback } from 'react'\n\nimport { ApiResponse } from '../../../api/api.types'\nimport { Client } from '../../../api/ApiClient'\nimport { logger } from '../../../utils/Logger'\nimport { ICheckoutBody } from '../../../api/types'\nimport {\n AddonsResponse,\n AddToCartResponse,\n CartResponse,\n CheckoutResponse,\n EventResponse,\n IAddToCartParams,\n PaymentDataResponse,\n PaymentSuccessResponse,\n TicketsResponse,\n UpdateCheckoutParams,\n UpdateCheckoutResponse,\n} from '../types'\n\n/**\n * Hook to fetch event information\n */\nexport const useEventInfo = (\n eventId?: string | number,\n options?: UseQueryOptions<ApiResponse<EventResponse>, AxiosError>\n) => {\n return useQuery<ApiResponse<EventResponse>, AxiosError>({\n queryKey: ['eventInfo', eventId],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching event info', { eventId })\n return Client.get<ApiResponse<EventResponse>>(`v1/event/${eventId}`)\n .then((response) => {\n logger.debug('[api-hooks] Event info fetched successfully', {\n eventId,\n eventName: response.data.data?.attributes?.name,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch event info', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n enabled: !!eventId,\n ...options,\n })\n}\n\n/**\n * Hook to fetch available tickets\n */\nexport const useTickets = (\n eventId?: string | number,\n options?: UseQueryOptions<ApiResponse<TicketsResponse>, AxiosError>\n) => {\n return useQuery<ApiResponse<TicketsResponse>, AxiosError>({\n queryKey: ['tickets', eventId],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching tickets', { eventId })\n return Client.get<ApiResponse<TicketsResponse>>(`v1/event/${eventId}/tickets/`)\n .then((response) => {\n const ticketCount = Object.keys(\n response.data.data?.data?.attributes?.tickets || {}\n ).length\n logger.debug('[api-hooks] Tickets fetched successfully', {\n eventId,\n ticketCount,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch tickets', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n enabled: !!eventId,\n ...options,\n })\n}\n\n/**\n * Hook to add items to cart\n */\nexport const useAddToCart = () => {\n return useMutation<\n ApiResponse<AddToCartResponse>,\n AxiosError,\n { eventId: string | number; ticketData: IAddToCartParams }\n >({\n mutationFn: ({ eventId, ticketData }) => {\n logger.debug('[api-hooks] Adding items to cart', {\n eventId,\n quantity: ticketData.attributes.product_cart_quantity,\n })\n return Client.post<ApiResponse<AddToCartResponse>>(\n `v1/event/${eventId}/add-to-cart/`,\n ticketData\n )\n .then((response) => {\n logger.debug('[api-hooks] Items added to cart successfully', { eventId })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to add items to cart', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to process checkout\n */\nexport const useCheckout = () => {\n return useMutation<ApiResponse<CheckoutResponse>, AxiosError, ICheckoutBody>({\n mutationFn: (checkoutData) => {\n logger.debug('[api-hooks] Processing checkout', {\n email: checkoutData.attributes.email,\n })\n return Client.post<ApiResponse<CheckoutResponse>>(`v1/on-checkout/`, {\n data: checkoutData,\n })\n .then((response) => {\n logger.debug('[api-hooks] Checkout processed successfully', {\n hash: response.data.data?.attributes?.hash,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Checkout failed', { error: error?.message })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to update checkout with add-ons\n */\nexport const useUpdateCheckout = () => {\n return useMutation<\n ApiResponse<UpdateCheckoutResponse>,\n AxiosError,\n UpdateCheckoutParams\n >({\n mutationFn: (params) => {\n logger.debug('[api-hooks] Updating checkout with add-ons', {\n eventId: params.attributes.event_id,\n })\n return Client.post<ApiResponse<UpdateCheckoutResponse>>(`v1/checkout`, {\n data: params,\n })\n .then((response) => {\n logger.debug('[api-hooks] Checkout updated successfully')\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to update checkout', { error: error?.message })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to get payment data\n */\nexport const usePaymentData = () => {\n return useMutation<ApiResponse<PaymentDataResponse>, AxiosError, string>({\n mutationFn: (orderHash) => {\n logger.debug('[api-hooks] Fetching payment data', { orderHash })\n return Client.get<ApiResponse<PaymentDataResponse>>(`/v1/order/${orderHash}/review`)\n .then((response) => {\n logger.debug('[api-hooks] Payment data fetched successfully', { orderHash })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch payment data', {\n orderHash,\n error: error?.message,\n })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to notify backend after payment success\n */\nexport const usePaymentSuccess = () => {\n return useMutation<ApiResponse<PaymentSuccessResponse>, AxiosError, string>({\n mutationFn: (orderHash) => {\n logger.debug('[api-hooks] Confirming payment success', { orderHash })\n return Client.post<ApiResponse<PaymentSuccessResponse>>(\n `/v1/order/${orderHash}/success/`\n )\n .then((response) => {\n logger.debug('[api-hooks] Payment success confirmed', { orderHash })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to confirm payment success', {\n orderHash,\n error: error?.message,\n })\n throw error\n })\n },\n })\n}\n\n/**\n * Hook to fetch cart data\n */\nexport const useCart = (\n options?: UseQueryOptions<ApiResponse<CartResponse>, AxiosError>\n) => {\n const queryClient = useQueryClient()\n const query = useQuery<ApiResponse<CartResponse>, AxiosError>({\n queryKey: ['cart'],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching cart data')\n return Client.get<ApiResponse<CartResponse>>('v1/cart/')\n .then((response) => {\n const cartItems = response.data.data?.attributes?.cart?.length || 0\n logger.debug('[api-hooks] Cart data fetched successfully', { cartItems })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch cart', { error: error?.message })\n throw error\n })\n },\n ...options,\n })\n\n const invalidate = useCallback(\n () => queryClient.invalidateQueries({ queryKey: ['cart'] }),\n [queryClient]\n )\n\n return { ...query, invalidate }\n}\n\n/**\n * Hook to get add-ons for an event\n */\nexport const useAddons = (eventId?: string | number) => {\n return useQuery<ApiResponse<AddonsResponse>, AxiosError>({\n queryKey: ['addons', eventId],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching add-ons', { eventId })\n return Client.get<ApiResponse<AddonsResponse>>(`v1/event/${eventId}/add-ons`)\n .then((response) => {\n const addonCount = response.data.data?.attributes?.add_ons?.length || 0\n logger.debug('[api-hooks] Add-ons fetched successfully', {\n eventId,\n addonCount,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch add-ons', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n enabled: !!eventId,\n })\n}\n\n/**\n * Hook to get event conditions\n */\nexport interface EventConditionsResponse {\n attributes: {\n conditions: Array<{\n id: string\n name: string\n content: string\n is_required: boolean\n }>\n }\n}\n\nexport const useEventConditions = (eventId?: string | number) => {\n return useQuery<ApiResponse<EventConditionsResponse>, AxiosError>({\n queryKey: ['eventConditions', eventId],\n queryFn: () => {\n logger.debug('[api-hooks] Fetching event conditions', { eventId })\n return Client.get<ApiResponse<EventConditionsResponse>>(\n `v1/event/${eventId}/conditions`\n )\n .then((response) => {\n const conditionCount = response.data.data?.attributes?.conditions?.length || 0\n logger.debug('[api-hooks] Event conditions fetched successfully', {\n eventId,\n conditionCount,\n })\n return response.data\n })\n .catch((error) => {\n logger.error('[api-hooks] Failed to fetch event conditions', {\n eventId,\n error: error?.message,\n })\n throw error\n })\n },\n enabled: !!eventId,\n })\n}\n","import { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport React, { JSX, useCallback, useMemo, useRef, useState } from 'react'\nimport {\n ScrollView,\n ScrollViewScrollToOptions,\n StyleProp,\n StyleSheet,\n TextStyle,\n ViewStyle,\n} from 'react-native'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\n\nimport { CartTimer, FormField, Login } from '../../components'\nimport { ICartTimerStyles } from '../../components/cartTimer/types'\nimport {\n ILoginBrandImages,\n ILoginSuccessData,\n ILoginViewStyles,\n} from '../../components/login/types'\nimport { IError } from '../../types'\nimport { logger } from '../../utils/Logger'\nimport { useUserProfile } from '../auth/api-hooks'\nimport { IRegisterUserResponse } from '../auth/types'\nimport { CheckoutForm, PaymentForm } from './form'\nimport { CheckoutFormStyles } from './form/styles'\nimport { ICheckoutSuccessData, useCheckoutFlow } from './hooks/use-checkout'\nimport { CheckoutTexts, OrderResult } from './types'\nimport { StripeProvider } from '@stripe/stripe-react-native'\n\nexport interface CheckoutV2Props {\n isSinglePageCheckout?: boolean\n onCartExpired?: () => void\n onCheckoutSuccess?: (data: ICheckoutSuccessData) => void\n onCheckoutError?: (error: any) => void\n onPaymentSuccess?: (data: OrderResult) => void\n onPaymentError?: (error: any) => void\n onLoginSuccess?: (data: ILoginSuccessData) => void\n onLoginError?: (error: any) => void\n onLogoutSuccess?: () => void\n onRegistrationSuccess?: (data: IRegisterUserResponse) => void\n onRegistrationError?: (error: any) => void\n isAgeRequired?: boolean\n minimumAge?: number\n isPhoneRequired?: boolean\n isPhoneHidden?: boolean\n loginBrandImages?: ILoginBrandImages\n styles?: CheckoutStyles\n texts?: CheckoutTexts\n}\n\nexport interface CheckoutStyles {\n container?: StyleProp<ViewStyle>\n contentContainer?: StyleProp<ViewStyle>\n title?: StyleProp<TextStyle>\n login?: ILoginViewStyles\n cartTimer?: ICartTimerStyles\n form?: CheckoutFormStyles\n paymentForm?: CheckoutFormStyles\n}\n\nconst defaultStyles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#ffffff',\n padding: 20,\n },\n contentContainer: {\n paddingBottom: 24,\n },\n title: {\n fontSize: 24,\n fontWeight: 'bold',\n marginBottom: 20,\n },\n})\n\nexport const CheckoutController = ({\n isSinglePageCheckout = true,\n onCartExpired: _onCartExpired,\n onCheckoutSuccess: _onCheckoutSuccess,\n onCheckoutError: _onCheckoutError,\n onPaymentSuccess: _onPaymentSuccess,\n onPaymentError: _onPaymentError,\n onLoginSuccess: _onLoginSuccess,\n onLoginError: _onLoginError,\n onLogoutSuccess: _onLogoutSuccess,\n onRegistrationSuccess: _onRegistrationSuccess,\n onRegistrationError: _onRegistrationError,\n isAgeRequired = false,\n minimumAge = 18,\n isPhoneRequired = false,\n isPhoneHidden = false,\n loginBrandImages,\n styles: stylesProp,\n texts: textsProp,\n}: CheckoutV2Props) => {\n const scrollRef = useRef<{\n scrollTo: (options: ScrollViewScrollToOptions) => void\n }>(null)\n const [checkoutSuccessData, setCheckoutSuccessData] = useState<ICheckoutSuccessData>()\n const [loginMessage, setLoginMessage] = useState('')\n const [isLoginDialogVisible, setIsLoginDialogVisible] = useState(false)\n const formTexts = textsProp?.form\n const loginTexts = useMemo(() => {\n const baseLogin = textsProp?.login\n const baseDialog = baseLogin?.dialog ?? {}\n const dialogMessage = loginMessage || baseDialog.message\n\n if (!baseLogin && !dialogMessage) {\n return undefined\n }\n\n return {\n ...baseLogin,\n dialog: {\n ...baseDialog,\n message: dialogMessage,\n },\n }\n }, [loginMessage, textsProp])\n\n const cartTimerTexts = textsProp?.cartTimer\n\n const { data: userProfile, invalidate } = useUserProfile()\n\n const onCheckoutSuccess = useCallback(\n (data: ICheckoutSuccessData) => {\n setCheckoutSuccessData(data)\n _onCheckoutSuccess?.(data)\n },\n [_onCheckoutSuccess]\n )\n\n const onRegistrationSuccess = useCallback(\n (data: IRegisterUserResponse) => {\n _onRegistrationSuccess?.(data)\n invalidate()\n },\n [_onRegistrationSuccess, invalidate]\n )\n\n const onRegistrationError = useCallback(\n (error: any) => {\n logger.error('[CheckoutController] Registration failed:', { error })\n _onRegistrationError?.(error)\n // Show login dialog\n setLoginMessage(error)\n setIsLoginDialogVisible(true)\n },\n [_onRegistrationError]\n )\n\n const checkoutFlow = useCheckoutFlow({\n onCheckoutSuccess,\n onCartExpired: _onCartExpired,\n onCheckoutError: _onCheckoutError,\n onPaymentError: _onPaymentError,\n onPaymentSuccess: _onPaymentSuccess,\n onRegistrationSuccess,\n onRegistrationError,\n isPhoneRequired,\n isAgeRequired,\n isPhoneHidden,\n minimumAge,\n isSinglePageCheckout,\n customerProfile: userProfile?.data,\n })\n\n const { secondsLeft } = checkoutFlow\n\n const handleLoginError = (error: IError) => {\n logger.error('[CheckoutController] Login error:', { error })\n _onLoginError?.(error)\n }\n\n const handleLogout = () => {\n logger.debug('[CheckoutController] User logged out')\n invalidate()\n _onLogoutSuccess?.()\n }\n\n const handleLoginSuccess = useCallback(\n (data: ILoginSuccessData) => {\n logger.debug('[CheckoutController] Login successful', {\n email: data?.userProfile?.email,\n })\n invalidate()\n _onLoginSuccess?.(data)\n setIsLoginDialogVisible(false)\n },\n [_onLoginSuccess, invalidate]\n )\n\n const containerStyle = StyleSheet.flatten([\n defaultStyles.container,\n stylesProp?.container,\n ]) as StyleProp<ViewStyle>\n\n const contentContainerStyle = StyleSheet.flatten([\n defaultStyles.contentContainer,\n stylesProp?.contentContainer,\n ]) as StyleProp<ViewStyle>\n\n const titleStyle = StyleSheet.flatten([\n defaultStyles.title,\n stylesProp?.title,\n ]) as StyleProp<TextStyle>\n\n return (\n <>\n <KeyboardAwareScrollView\n innerRef={(ref) => (scrollRef.current = ref)}\n style={containerStyle}\n contentContainerStyle={contentContainerStyle}\n keyboardShouldPersistTaps=\"handled\"\n enableAutomaticScroll={false}\n extraScrollHeight={0}\n >\n {/* Login Component */}\n <Login\n onLoginSuccessful={handleLoginSuccess}\n onLoginError={handleLoginError}\n onLogoutSuccess={handleLogout}\n isLoginDialogVisible={isLoginDialogVisible}\n showLoginDialog={() => setIsLoginDialogVisible(true)}\n hideLoginDialog={() => {\n setIsLoginDialogVisible(false)\n setLoginMessage('')\n }}\n userFirstName={userProfile?.data?.firstName}\n brandImages={loginBrandImages}\n texts={loginTexts}\n styles={stylesProp?.login}\n />\n <FormField\n fieldType=\"title\"\n title={formTexts?.form?.sectionTitle || 'Personal Information'}\n titleStyle={titleStyle}\n />\n\n {/* Use our new CheckoutForm component */}\n {checkoutFlow.checkoutData?.attributes?.additional_payment_information\n ?.basic_config?.apiKey ? (\n <StripeProvider\n publishableKey={\n checkoutFlow.checkoutData.attributes.additional_payment_information\n .basic_config.apiKey\n }\n >\n {isSinglePageCheckout || !checkoutSuccessData ? (\n <CheckoutForm\n scrollRef={scrollRef}\n styles={stylesProp?.form}\n texts={formTexts}\n {...checkoutFlow}\n />\n ) : (\n <PaymentForm\n scrollRef={scrollRef}\n styles={stylesProp?.paymentForm ?? stylesProp?.form}\n texts={formTexts}\n onSubmit={async () =>\n await checkoutFlow.handlePayment(checkoutSuccessData)\n }\n orderItems={checkoutFlow.orderItems}\n />\n )}\n </StripeProvider>\n ) : null}\n </KeyboardAwareScrollView>\n\n {/* Cart Timer */}\n {typeof secondsLeft === 'number' && secondsLeft > 0 && (\n <CartTimer\n secondsLeft={secondsLeft}\n shouldNotMinimize={false}\n styles={stylesProp?.cartTimer}\n texts={cartTimerTexts}\n />\n )}\n </>\n )\n}\n\nconst queryClient = new QueryClient()\n\nexport const CheckoutProvider = ({ children }: { children: React.ReactNode }) => {\n return <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n}\n","import { CardForm, CardFormView } from '@stripe/stripe-react-native'\nimport { FormikProvider, useFormik } from 'formik'\nimport React, { ComponentRef, useCallback, useMemo, useRef, useState } from 'react'\nimport {\n ActivityIndicator,\n findNodeHandle,\n Text,\n TouchableOpacity,\n View,\n ViewProps,\n} from 'react-native'\n\nimport { Loading } from '../../../components'\nimport { logger } from '../../../utils/Logger'\nimport { readableError } from '../../../utils/handlers'\nimport { FormikField } from '../../form'\nimport { FieldType } from '../../form/types'\nimport AddonsContainer from '../components/AddonsContainer'\nimport Conditions from '../components/Conditions'\nimport OrderReview, { IOrderItem } from '../components/OrderReview'\nimport { createCheckoutFormConfig, formFieldsOrder } from './config'\nimport { CheckoutFormComputedStyles, mergeCheckoutFormStyles } from './styles'\nimport { mergeCheckoutFormTexts } from './texts'\nimport {\n CheckoutFormOrderSummaryTexts,\n CheckoutFormPaymentTexts,\n CheckoutFormProps,\n CheckoutFormTexts,\n PaymentFormProps,\n} from './types'\nimport { getFieldType } from '../utils'\n\nconst MemoizedAddonsContainer = React.memo(AddonsContainer)\nconst MemoizedConditions = React.memo(Conditions)\nconst MemoizedOrderReview = React.memo(OrderReview)\n\nexport const CheckoutForm: React.FC<CheckoutFormProps> = ({\n initialValues,\n isSubmitting,\n isLoggedIn,\n isAgeRequired = false,\n minimumAge,\n isTicketFree = false,\n isPhoneRequired = false,\n isPhoneHidden = false,\n countries,\n states,\n onCountryChange,\n orderItems,\n availableAddons = [],\n onAddonChange,\n onSubmit: onSubmitCallback,\n scrollRef,\n isInitialLoading,\n eventCurrency,\n conditions,\n isSinglePageCheckout = true,\n orderCustomFields = [],\n ticketCustomFields = [],\n addonCustomFields = [],\n styles: stylesProp,\n texts: textsProp,\n}) => {\n // Handle card form state for payment\n const [isCardFormComplete, setIsCardFormComplete] = useState(false)\n const [cardFormError, setCardFormError] = useState<string>()\n\n const styles = useMemo<CheckoutFormComputedStyles>(\n () => mergeCheckoutFormStyles(stylesProp),\n [stylesProp]\n )\n\n const texts = useMemo<Required<CheckoutFormTexts>>(\n () => mergeCheckoutFormTexts(textsProp),\n [textsProp]\n )\n\n const fieldComponentStyles = styles.fields\n\n const addonsStyles = useMemo(\n () => ({\n container: styles.addonSection,\n title: styles.sectionTitle,\n addonItem: styles.addonItem,\n addonInfo: styles.addonInfo,\n addonName: styles.addonName,\n addonRow: styles.addonRow,\n addonPrice: styles.addonPrice,\n addonPriceWithFees: styles.addonPriceWithFees,\n addonDescription: styles.addonDescription,\n addonSelectContainer: styles.addonSelectContainer,\n fieldComponentStyles,\n }),\n [fieldComponentStyles, styles]\n )\n\n // Initial values already include default custom field values from the hook\n const modifiedInitialValues = {\n ...initialValues,\n isCardFormComplete: isTicketFree ? true : initialValues.isCardFormComplete,\n }\n const requiredConditions = useMemo(\n () => conditions?.filter((c) => c.is_required) || [],\n [conditions]\n )\n\n const formik = useFormik({\n initialValues: modifiedInitialValues,\n onSubmit: onSubmitCallback,\n validationSchema: createCheckoutFormConfig({\n minimumAge,\n isAgeRequired,\n requirePassword: !isLoggedIn,\n isTicketFree,\n isSinglePageCheckout,\n requiredConditions,\n isPhoneRequired,\n orderCustomFields,\n ticketCustomFields,\n }),\n validateOnChange: true,\n enableReinitialize: true,\n })\n const fieldTopRef = useRef<Record<string, number>>({})\n\n // Helper: scroll to a field by key using onLayout-captured positions\n const scrollToField = (key: string, attempt: number = 0) => {\n if (key === 'isCardFormComplete' || !scrollRef.current) return\n\n let y = fieldTopRef.current[key]\n\n // Fallback for nested ticket holder fields\n if (\n !(typeof y === 'number' && Number.isFinite(y)) &&\n key.startsWith('ticketHolders[')\n ) {\n const holderMatch = key.match(/^ticketHolders\\[(\\d+)\\]/)\n const index = holderMatch ? holderMatch[1] : undefined\n if (index != null) {\n const holderKey = `ticketHolders[${index}]`\n y = fieldTopRef.current[holderKey]\n if (!(typeof y === 'number' && Number.isFinite(y))) {\n y = fieldTopRef.current.ticketHolders\n }\n }\n }\n\n if (typeof y === 'number' && Number.isFinite(y)) {\n try {\n scrollRef.current.scrollTo({ y: Math.max(0, y - 16), animated: true })\n logger.debug('[CheckoutForm] Scrolled to field', { key, position: y })\n } catch (e) {\n logger.debug('[CheckoutForm] scrollTo failed', {\n key,\n error: e instanceof Error ? e.message : String(e),\n })\n }\n } else if (attempt < 3) {\n setTimeout(() => scrollToField(key, attempt + 1), 50)\n } else {\n logger.warn('[CheckoutForm] Could not scroll to field - position not found', {\n key,\n })\n }\n }\n\n const onPressSubmit = async () => {\n logger.debug('[CheckoutForm] Form submission initiated')\n const allFields = Object.keys(initialValues)\n\n // Create touched fields with special handling for nested ticket holders\n const touchedFields = allFields.reduce(\n (acc, field) => {\n // Handle ticketHolders specially as a nested structure\n if (field === 'ticketHolders') {\n // Create a properly structured touched fields object for ticket holders\n acc[field] = formik.values.ticketHolders.map(() => ({\n firstName: true,\n lastName: true,\n email: true,\n phone: true,\n }))\n } else {\n // Mark all other fields as touched\n acc[field] = true\n }\n return acc\n },\n {} as Record<string, boolean | Record<string, boolean>[]>\n )\n\n const result = await formik.setTouched(touchedFields, true)\n const formErrors = typeof result === 'object' ? result : {}\n const paymentValid = isCardFormComplete || isTicketFree || !isSinglePageCheckout\n logger.debug('[CheckoutForm] submitting', {\n paymentValid,\n isCardFormComplete,\n isTicketFree,\n isSinglePageCheckout,\n })\n\n if (!paymentValid) {\n setCardFormError(texts.payment.errorRequired)\n }\n\n if (Object.keys(formErrors).length === 0 && paymentValid) {\n logger.debug('[CheckoutForm] Form validation passed, submitting', {\n email: formik.values.email,\n })\n formik.handleSubmit()\n return\n }\n logger.warn('[CheckoutForm] Form validation failed', {\n errors: Object.keys(formErrors),\n paymentValid,\n })\n\n const firstErroredKey = formFieldsOrder.find(\n (k) => (formErrors as any)[k as keyof typeof formErrors] != null\n )\n\n if (firstErroredKey === 'ticketHolders') {\n const thErrors = (formErrors as any).ticketHolders as Array<any>\n if (Array.isArray(thErrors)) {\n const erroredIndex = thErrors.findIndex((e) => e && Object.keys(e).length > 0)\n if (erroredIndex >= 0) {\n scrollToField(`ticketHolders[${erroredIndex}]`)\n logger.debug('[CheckoutForm] Scrolling to errored ticket holder', {\n index: erroredIndex,\n })\n return\n }\n }\n scrollToField('ticketHolders')\n } else if (firstErroredKey) {\n scrollToField(firstErroredKey)\n } else if (!paymentValid) {\n scrollToField('isCardFormComplete')\n }\n }\n\n const handleAddonChange = useCallback(\n (addonId: string, quantity: number) => {\n formik.setFieldValue(`addons.${addonId}.quantity`, quantity)\n if (quantity > 0) {\n // reapply defaults if coming from 0\n addonCustomFields.forEach((field) => {\n if (field.defaultValue != null) {\n formik.setFieldValue(\n `addons.${addonId}.customFields.${field.name}`,\n Array.isArray(field.defaultValue)\n ? field.defaultValue.join(',')\n : field.defaultValue\n )\n }\n })\n }\n onAddonChange?.(addonId, quantity)\n },\n [formik, onAddonChange]\n )\n return (\n <FormikProvider value={formik}>\n {isInitialLoading && <Loading />}\n <View style={styles.form} collapsable={false}>\n <View onLayout={(e) => (fieldTopRef.current.firstName = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'firstName',\n type: FieldType.INPUT,\n label: texts.form.firstName,\n placeholder: texts.form.firstNamePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.lastName = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'lastName',\n type: FieldType.INPUT,\n label: texts.form.lastName,\n placeholder: texts.form.lastNamePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.email = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'email',\n type: FieldType.INPUT,\n label: texts.form.email,\n placeholder: texts.form.emailPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View\n onLayout={(e) =>\n (fieldTopRef.current.emailConfirmation = e.nativeEvent.layout.y)\n }\n >\n <FormikField\n field={{\n name: 'emailConfirmation',\n type: FieldType.INPUT,\n label: texts.form.emailConfirmation,\n placeholder: texts.form.emailConfirmationPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.password = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'password',\n type: FieldType.INPUT,\n label: texts.form.password,\n placeholder: texts.form.passwordPlaceholder,\n hide: isLoggedIn,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View\n onLayout={(e) =>\n (fieldTopRef.current.passwordConfirmation = e.nativeEvent.layout.y)\n }\n >\n <FormikField\n field={{\n name: 'passwordConfirmation',\n type: FieldType.INPUT,\n label: texts.form.passwordConfirmation,\n placeholder: texts.form.passwordConfirmationPlaceholder,\n hide: isLoggedIn,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.phone = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'phone',\n type: FieldType.PHONE,\n label: texts.form.phone,\n placeholder: texts.form.phonePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.phone = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'dateOfBirth',\n type: FieldType.DATE_PICKER,\n label: texts.form.dateOfBirth,\n placeholder: texts.form.dateOfBirthPlaceholder,\n hide: !isAgeRequired,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View\n onLayout={(e) => (fieldTopRef.current.dateOfBirth = e.nativeEvent.layout.y)}\n >\n <FormikField\n field={{\n name: 'street',\n type: FieldType.INPUT,\n label: texts.form.street,\n placeholder: texts.form.streetPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.street = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'city',\n type: FieldType.INPUT,\n label: texts.form.city,\n placeholder: texts.form.cityPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.country = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'country',\n type: FieldType.SELECT,\n label: texts.form.country,\n options: countries.map((c) => ({\n value: String(c.id),\n label: c.name,\n })),\n onChange: (val) => {\n onCountryChange(val)\n },\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.country = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'state',\n type: FieldType.SELECT,\n label: texts.form.state,\n options: states,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View onLayout={(e) => (fieldTopRef.current.postalCode = e.nativeEvent.layout.y)}>\n <FormikField\n field={{\n name: 'postalCode',\n type: FieldType.INPUT,\n label: texts.form.postalCode,\n placeholder: texts.form.postalCodePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n {orderCustomFields.map((field) => (\n <View\n key={field.name}\n onLayout={(e) => (fieldTopRef.current[field.name] = e.nativeEvent.layout.y)}\n >\n <FormikField\n field={{\n name: `customFields.${field.name}`,\n type: getFieldType(field.type),\n label: texts.form.customFields?.[field.name]?.label ?? field.label,\n placeholder:\n texts.form.customFields?.[field.name]?.placeholder ??\n (field.description || `Enter ${field.label}`),\n options: field.options?.map((option) => ({\n value: option.value,\n label: option.name,\n })),\n }}\n styles={fieldComponentStyles}\n />\n </View>\n ))}\n <View>\n <FormikField\n field={{\n name: 'isSubToTicketFairy',\n type: FieldType.CHECKBOX,\n label: texts.marketingOptIns.ticketFairyOptIn,\n }}\n styles={fieldComponentStyles}\n />\n <FormikField\n field={{\n name: 'isSubToBrand',\n type: FieldType.CHECKBOX,\n label: texts.marketingOptIns.organizerOptIn,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n <View\n collapsable={false}\n onLayout={(e) => {\n fieldTopRef.current.ticketHolders = e.nativeEvent.layout.y\n }}\n >\n <Text style={styles.sectionTitle}>{texts.ticketHolders.title}</Text>\n\n {formik.values.ticketHolders.map((_, index) => {\n const ticketLabel = (\n texts.ticketHolders.itemTitle || 'Ticket {index}'\n ).replace('{index}', String(index + 1))\n\n return (\n <View\n key={index}\n collapsable={false}\n onLayout={(e) => {\n const sectionY = fieldTopRef.current.ticketHolders ?? 0\n const holderY = sectionY + e.nativeEvent.layout.y\n fieldTopRef.current[`ticketHolders[${index}]`] = holderY\n }}\n >\n <Text style={styles.ticketHolderTitle}>{ticketLabel}</Text>\n\n <View\n collapsable={false}\n onLayout={(e) => {\n const baseY =\n fieldTopRef.current[`ticketHolders[${index}]`] ??\n fieldTopRef.current.ticketHolders ??\n 0\n fieldTopRef.current[`ticketHolders[${index}].firstName`] =\n baseY + e.nativeEvent.layout.y\n }}\n >\n <FormikField\n field={{\n name: `ticketHolders[${index}].firstName`,\n type: FieldType.INPUT,\n label: texts.ticketHolders.firstName,\n placeholder: texts.ticketHolders.firstNamePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n\n <View\n collapsable={false}\n onLayout={(e) => {\n const baseY =\n fieldTopRef.current[`ticketHolders[${index}]`] ??\n fieldTopRef.current.ticketHolders ??\n 0\n fieldTopRef.current[`ticketHolders[${index}].lastName`] =\n baseY + e.nativeEvent.layout.y\n }}\n >\n <FormikField\n field={{\n name: `ticketHolders[${index}].lastName`,\n type: FieldType.INPUT,\n label: texts.ticketHolders.lastName,\n placeholder: texts.ticketHolders.lastNamePlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n\n <View\n collapsable={false}\n onLayout={(e) => {\n const baseY =\n fieldTopRef.current[`ticketHolders[${index}]`] ??\n fieldTopRef.current.ticketHolders ??\n 0\n fieldTopRef.current[`ticketHolders[${index}].email`] =\n baseY + e.nativeEvent.layout.y\n }}\n >\n <FormikField\n field={{\n name: `ticketHolders[${index}].email`,\n type: FieldType.INPUT,\n label: texts.ticketHolders.email,\n placeholder: texts.ticketHolders.emailPlaceholder,\n }}\n styles={fieldComponentStyles}\n />\n </View>\n\n <View\n collapsable={false}\n onLayout={(e) => {\n const baseY =\n fieldTopRef.current[`ticketHolders[${index}]`] ??\n fieldTopRef.current.ticketHolders ??\n 0\n fieldTopRef.current[`ticketHolders[${index}].phone`] =\n baseY + e.nativeEvent.layout.y\n }}\n >\n <FormikField\n field={{\n name: `ticketHolders[${index}].phone`,\n type: FieldType.PHONE,\n label: texts.ticketHolders.phone,\n placeholder: texts.ticketHolders.phonePlaceholder,\n hide: isPhoneHidden,\n }}\n styles={fieldComponentStyles}\n />\n\n {/* Ticket custom fields */}\n {ticketCustomFields.map((field) => (\n <FormikField\n key={`${index}-${field.name}`}\n field={{\n name: `ticketHolders[${index}].customFields.${field.name}`,\n type: getFieldType(field.type),\n label:\n texts.ticketHolders.customFields?.[field.name]?.label ??\n field.label,\n required: field.required,\n placeholder:\n texts.ticketHolders.customFields?.[field.name]?.placeholder ??\n (field.description || `Enter ${field.label}`),\n options: field.options?.map((option) => ({\n value: option.value,\n label: option.name,\n })),\n }}\n styles={fieldComponentStyles}\n />\n ))}\n </View>\n </View>\n )\n })}\n </View>\n <View style={styles.sectionContainer}>\n <MemoizedAddonsContainer\n addonCustomFields={addonCustomFields}\n addons={formik.values.addons}\n availableAddons={availableAddons || []}\n onAddonChange={handleAddonChange}\n currency={eventCurrency}\n styles={addonsStyles}\n texts={{\n title: texts.addons.title,\n quantityLabel: texts.addons.quantityLabel,\n priceWithFeesSuffix: texts.addons.priceWithFeesSuffix,\n }}\n />\n </View>\n {/* Event Conditions */}\n {conditions && conditions.length > 0 && (\n <View style={styles.sectionContainer}>\n <MemoizedConditions\n conditions={conditions}\n acceptedConditions={formik.values.acceptedConditions}\n onAcceptCondition={(conditionId, isAccepted) => {\n formik.setFieldValue('acceptedConditions', {\n ...formik.values.acceptedConditions,\n [conditionId]: isAccepted,\n })\n }}\n texts={{\n title: texts.conditions.title,\n viewButton: texts.conditions.viewButton,\n hideButton: texts.conditions.hideButton,\n acceptCheckbox: texts.conditions.acceptLabel,\n }}\n />\n </View>\n )}\n\n {/* Payment - only show in single-page mode and if ticket is not free */}\n {!isTicketFree && isSinglePageCheckout && (\n <View\n style={styles.sectionContainer}\n onLayout={(e) =>\n (fieldTopRef.current.isCardFormComplete = e.nativeEvent.layout.y)\n }\n >\n <Payment\n orderItems={orderItems}\n onFormComplete={(details) => {\n logger.debug('[CheckoutForm] Payment form complete', { ...details })\n if (details.complete) {\n setCardFormError(undefined)\n }\n setIsCardFormComplete(details.complete)\n }}\n error={cardFormError}\n styles={styles}\n texts={{\n orderSummary: texts.orderSummary,\n payment: texts.payment,\n }}\n />\n </View>\n )}\n\n {/* Submit Button */}\n <TouchableOpacity\n style={[styles.button, isSubmitting ? styles.buttonDisabled : {}]}\n onPress={onPressSubmit}\n disabled={isSubmitting}\n >\n {isSubmitting ? (\n <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n ) : (\n <Text style={styles.buttonText}>\n {isSinglePageCheckout\n ? texts.buttons.singlePageSubmit\n : texts.buttons.goToPayment}\n </Text>\n )}\n </TouchableOpacity>\n </View>\n </FormikProvider>\n )\n}\n\ninterface PaymentProps {\n onFormComplete: (details: CardFormView.Details) => void\n error?: string\n orderItems: IOrderItem[]\n paymentViewProps?: ViewProps\n styles: CheckoutFormComputedStyles\n texts: {\n orderSummary: CheckoutFormOrderSummaryTexts\n payment: CheckoutFormPaymentTexts\n }\n}\n\nexport const Payment = ({\n onFormComplete,\n error,\n orderItems,\n paymentViewProps,\n styles,\n texts,\n}: PaymentProps) => {\n return (\n <View>\n <View style={styles.sectionContainer}>\n <Text style={styles.sectionTitle}>{texts.orderSummary.sectionTitle}</Text>\n <MemoizedOrderReview\n orderItems={orderItems}\n styles={{\n rootContainer: styles.orderReviewContainer,\n item: styles.orderReviewItem,\n }}\n />\n </View>\n\n <View style={styles.sectionContainer} {...paymentViewProps}>\n <Text style={styles.sectionTitle}>{texts.payment.sectionTitle}</Text>\n <View style={styles.paymentContainer}>\n <CardForm\n onFormComplete={(details) => {\n logger.warn('[PaymentForm] CardForm onFormComplete triggered', {\n complete: details.complete,\n details: JSON.stringify(details),\n })\n\n onFormComplete(details)\n }}\n style={styles.cardContainer}\n cardStyle={styles.cardStyle}\n autofocus={false}\n />\n\n {error ? <Text style={styles.errorText}>{error}</Text> : null}\n </View>\n </View>\n </View>\n )\n}\n\nexport const PaymentForm = ({\n orderItems,\n onSubmit,\n styles: stylesProp,\n texts: textsProp,\n}: PaymentFormProps) => {\n const [error, setError] = useState<string>()\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [isCardFormComplete, setIsCardFormComplete] = useState(false)\n\n const styles = useMemo<CheckoutFormComputedStyles>(\n () => mergeCheckoutFormStyles(stylesProp),\n [stylesProp]\n )\n\n const texts = useMemo<Required<CheckoutFormTexts>>(\n () => mergeCheckoutFormTexts(textsProp),\n [textsProp]\n )\n\n const onFormComplete = (details: CardFormView.Details) => {\n logger.warn('[PaymentForm] CardForm onFormComplete triggered', {\n complete: details.complete,\n details: JSON.stringify(details),\n })\n setIsCardFormComplete(details.complete)\n\n if (details.complete) {\n setError(undefined)\n logger.debug('[PaymentForm] Card form marked as complete')\n } else {\n logger.debug('[PaymentForm] Card form incomplete')\n }\n }\n\n const onPressSubmit = async () => {\n try {\n setIsSubmitting(true)\n\n // Don't validate isCardFormComplete here - onFormComplete doesn't trigger on Android v40+\n // Let Stripe's confirmPayment handle validation instead\n logger.debug('[PaymentForm] Submitting payment', { isCardFormComplete })\n\n await onSubmit()\n } catch (e) {\n const errorMsg = readableError(e)\n logger.error('[PaymentForm] Payment submission failed', { error: errorMsg })\n setError(errorMsg)\n } finally {\n setIsSubmitting(false)\n }\n }\n\n return (\n <View>\n <Payment\n orderItems={orderItems}\n onFormComplete={onFormComplete}\n error={error}\n paymentViewProps={{}}\n styles={styles}\n texts={{\n orderSummary: texts.orderSummary,\n payment: texts.payment,\n }}\n />\n {/* Submit Button */}\n <TouchableOpacity\n style={[styles.button, isSubmitting ? styles.buttonDisabled : {}]}\n onPress={onPressSubmit}\n disabled={isSubmitting}\n >\n {isSubmitting ? (\n <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n ) : (\n <Text style={styles.buttonText}>{texts.buttons.paymentSubmit}</Text>\n )}\n </TouchableOpacity>\n </View>\n )\n}\n","import { useField } from 'formik'\nimport React from 'react'\nimport { Text } from 'react-native'\n\nimport {\n Checkbox,\n DatePicker,\n DropdownMaterial,\n Input,\n PhoneInput,\n RadioGroup,\n} from '../../components'\nimport { ICheckboxStyles } from '../../components/checkbox/types'\nimport { IDatePickerStyles } from '../../components/datePicker/types'\nimport { IDropdownMaterialStyles } from '../../components/dropdownMaterial/types'\nimport { IInputStyles } from '../../components/input/types'\nimport { IPhoneInputStyles } from '../../components/phoneInput/types'\nimport { IRadioGroupStyles } from '../../components/radioGroup/types'\nimport { FieldConfig } from './types'\n\nexport interface FormikFieldComponentStyles {\n input?: IInputStyles\n select?: IDropdownMaterialStyles\n selectMulti?: IDropdownMaterialStyles\n phone?: IPhoneInputStyles\n checkbox?: ICheckboxStyles\n radio?: IRadioGroupStyles\n datePicker?: IDatePickerStyles\n}\n\ninterface FormikFieldProps<TValues extends Record<string, unknown>> {\n field: FieldConfig<TValues>\n styles?: FormikFieldComponentStyles\n}\n\nexport const FormikField = React.memo(\n <TValues extends Record<string, unknown>>({\n field,\n styles: componentStyles,\n }: FormikFieldProps<TValues>) => {\n const [formikField, meta, helpers] = useField(field.name)\n\n const value = formikField.value\n const error = meta.touched ? meta.error : undefined\n\n if (field.hide) return null\n\n const handleChange = (val: string | number | boolean | string[]) => {\n field.onChange?.(val)\n helpers.setValue(val)\n }\n\n switch (field.type) {\n case 'input':\n return (\n <Input\n id={field.name}\n value={value}\n label={field.label ?? 'Label'}\n placeholder={field.placeholder}\n error={error}\n onTextChanged={(_, val) => handleChange(val)}\n styles={componentStyles?.input}\n />\n )\n\n case 'textarea':\n return (\n <Input\n id={field.name}\n value={value}\n label={field.label ?? 'Label'}\n placeholder={field.placeholder}\n error={error}\n multiline\n numberOfLines={4}\n onTextChanged={(_, val) => handleChange(val)}\n styles={componentStyles?.input}\n />\n )\n\n case 'select': {\n const options = field.options ?? []\n return (\n <DropdownMaterial\n items={options}\n selectedOption={\n options.find((o) => o.value === value) ?? {\n value: '',\n label: field.placeholder ?? `Select ${field.label}`,\n }\n }\n onSelectItem={(item) => handleChange(item.value)}\n materialInputProps={{\n label: field.label ?? 'Select',\n error,\n }}\n styles={componentStyles?.select}\n />\n )\n }\n\n case 'select_multi': {\n const options = field.options ?? []\n const selectedValues = (Array.isArray(value) ? value : []) as string[]\n const selectedOptions = options.filter((o) => selectedValues.includes(o.value))\n const displayOption = {\n value: '',\n label:\n selectedOptions.length > 0\n ? selectedOptions.map((o) => o.label).join(', ')\n : `Select ${field.label ?? 'items'}`,\n }\n return (\n <DropdownMaterial\n items={options}\n selectedOption={displayOption}\n onSelectItem={(item) => {\n let newValues = [...selectedValues]\n if (newValues.includes(String(item.value))) {\n newValues = newValues.filter((v) => v !== item.value)\n } else {\n newValues.push(String(item.value))\n }\n handleChange(newValues)\n }}\n materialInputProps={{\n label: field.label ?? 'Select Multiple',\n error,\n }}\n styles={componentStyles?.selectMulti ?? componentStyles?.select}\n />\n )\n }\n\n case 'phone':\n return (\n <PhoneInput\n phoneNumber={value}\n onChangePhoneNumber={(payload) => handleChange(payload.input)}\n error={error}\n texts={{ label: field.label }}\n styles={componentStyles?.phone}\n />\n )\n\n case 'checkbox':\n return (\n <Checkbox\n isActive={!!value}\n text={field.label || ''}\n onPress={() => handleChange(!value)}\n styles={componentStyles?.checkbox}\n />\n )\n\n case 'radio':\n return (\n <RadioGroup\n options={field.options ?? []}\n selectedValue={value}\n onValueChange={(val) => handleChange(val)}\n label={field.label}\n error={error}\n styles={componentStyles?.radio}\n />\n )\n\n case 'datePicker':\n return (\n <DatePicker\n selectedDate={value ? new Date(value) : undefined}\n onSelectDate={(date) => handleChange(date.toISOString())}\n error={error}\n text={field.label || 'Select date'}\n placeholder={field.placeholder}\n styles={componentStyles?.datePicker}\n />\n )\n\n default:\n return <Text>{field.type} is not supported</Text>\n }\n }\n)\n","import React, { useCallback } from 'react'\nimport { StyleProp, Text, TextStyle, View, ViewStyle } from 'react-native'\n\nimport { IDropdownMaterialStyles } from '../../../components/dropdownMaterial/types'\nimport { AddonItem } from '../types'\nimport { getFieldType, priceWithCurrency } from '../utils'\nimport { CheckoutFormProps, CheckoutFormValues } from '../form/types'\nimport { FormikField, FormikFieldComponentStyles } from '../../form'\nimport { DropdownMaterial } from '../../../components'\n\nexport interface AddonsContainerStyles {\n container?: StyleProp<ViewStyle>\n title?: StyleProp<TextStyle>\n addonRow?: StyleProp<ViewStyle>\n addonList?: StyleProp<ViewStyle>\n addonItem?: StyleProp<ViewStyle>\n addonInfo?: StyleProp<ViewStyle>\n addonName?: StyleProp<TextStyle>\n addonPrice?: StyleProp<TextStyle>\n addonPriceWithFees?: StyleProp<TextStyle>\n\n addonDescription?: StyleProp<TextStyle>\n addonSelectContainer?: StyleProp<ViewStyle>\n dropdownMaterial?: IDropdownMaterialStyles\n fieldComponentStyles?: FormikFieldComponentStyles\n}\n\ninterface AddonsContainerProps {\n addons: CheckoutFormValues['addons']\n availableAddons: AddonItem[]\n onAddonChange: (addonId: string, quantity: number) => void\n currency?: string\n styles?: AddonsContainerStyles\n texts?: {\n title?: string\n quantityLabel?: string\n priceWithFeesSuffix?: string\n }\n addonCustomFields?: CheckoutFormProps['addonCustomFields']\n}\n\nconst AddonsContainer: React.FC<AddonsContainerProps> = ({\n addons = {},\n availableAddons = [],\n onAddonChange,\n currency,\n styles: customStyles,\n texts,\n addonCustomFields,\n}) => {\n // Generate quantity options for the dropdown\n const generateAddonQuantityOptions = useCallback((addon: AddonItem['attributes']) => {\n const options = []\n // Check different possible locations for max quantity\n const maxQty = addon.maxQuantity || '1'\n const maxQtyNum = parseInt(maxQty, 10)\n\n for (let i = 0; i <= maxQtyNum; i++) {\n options.push({\n value: i.toString(),\n label: i.toString(),\n })\n }\n\n return options\n }, [])\n\n // Don't render if no addons available\n if (!availableAddons || availableAddons.length === 0) {\n return null\n }\n\n return (\n <View style={[customStyles?.container]}>\n <Text style={[customStyles?.title]}>{texts?.title || 'Available Add-ons'}</Text>\n\n <View style={[customStyles?.addonList]}>\n {availableAddons.map((addon) => {\n // Extract addon data from the API structure\n const addonData = addon.attributes\n const addonId = addon.id || addonData.id\n\n // Get price (could be in different locations based on API structure)\n const priceWithFees = addonData.price || 0\n const addonCurrency = addonData.currency || currency\n const isAddonFree = Number(priceWithFees) === 0\n\n const basePriceFormatted = isAddonFree\n ? 'FREE'\n : priceWithCurrency((priceWithFees / 100).toString(), addonCurrency)\n\n return (\n <View key={addonId} style={[customStyles?.addonItem]}>\n <View style={[customStyles?.addonRow]}>\n <View style={[customStyles?.addonInfo]}>\n <Text style={[customStyles?.addonName]}>\n {addonData.name || 'Add-on'}\n </Text>\n <Text style={[customStyles?.addonPrice]}>\n {basePriceFormatted}\n {!isAddonFree && (\n <Text style={[customStyles?.addonPriceWithFees]}>\n {texts?.priceWithFeesSuffix || ' (with fees)'}\n </Text>\n )}\n </Text>\n {addonData.description && (\n <Text style={[customStyles?.addonDescription]}>\n {addonData.description}\n </Text>\n )}\n </View>\n <View style={[customStyles?.addonSelectContainer]}>\n <DropdownMaterial\n items={generateAddonQuantityOptions(addonData)}\n onSelectItem={(item) => {\n onAddonChange(\n addonId.toString(),\n parseInt(item.value.toString(), 10)\n )\n }}\n selectedOption={{\n value: (addons[addonId]?.quantity || 0).toString(),\n label: (addons[addonId]?.quantity || 0).toString(),\n }}\n materialInputProps={{\n label: texts?.quantityLabel || 'Qty',\n }}\n styles={customStyles?.fieldComponentStyles?.select}\n />\n </View>\n </View>\n {(addons[addonId]?.quantity ?? 0) > 0 &&\n addonCustomFields.map((field) => (\n <FormikField\n key={`${addonId}-${field.name}`}\n field={{\n name: `addons.${addonId}.customFields.${field.name}`,\n type: getFieldType(field.type),\n label: field.label,\n required: field.required,\n placeholder: field.description || `Enter ${field.label}`,\n options: field.options?.map((o) => ({\n value: o.value,\n label: o.name,\n })),\n }}\n styles={customStyles?.fieldComponentStyles}\n />\n ))}\n </View>\n )\n })}\n </View>\n </View>\n )\n}\n\nexport default AddonsContainer\n","import React, { useState } from 'react'\nimport { ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native'\n\nimport { Checkbox } from '../../../components'\nimport { logger } from '../../../utils/Logger'\n\nexport interface Condition {\n id: string\n name: string\n content: string\n is_required: boolean\n}\n\ninterface ConditionsProps {\n conditions: Condition[]\n acceptedConditions: Record<string, boolean>\n onAcceptCondition: (conditionId: string, isAccepted: boolean) => void\n styles?: {\n container?: object\n title?: object\n conditionButton?: object\n conditionButtonText?: object\n checkbox?: object\n conditionContent?: object\n expandedContent?: object\n }\n texts?: {\n title?: string\n viewButton?: string\n hideButton?: string\n acceptCheckbox?: string\n }\n}\n\nconst Conditions: React.FC<ConditionsProps> = ({\n conditions,\n acceptedConditions,\n onAcceptCondition,\n styles: customStyles,\n texts,\n}) => {\n // Track which conditions are expanded\n const [expandedConditions, setExpandedConditions] = useState<Record<string, boolean>>(\n {}\n )\n\n if (!conditions || conditions.length === 0) {\n return null\n }\n\n const toggleCondition = (conditionId: string) => {\n setExpandedConditions((prev) => ({\n ...prev,\n [conditionId]: !prev[conditionId],\n }))\n logger.debug('[Conditions] Condition toggled', {\n conditionId,\n expanded: !expandedConditions[conditionId],\n })\n }\n\n return (\n <View style={[styles.container, customStyles?.container]}>\n <Text style={[styles.title, customStyles?.title]}>\n {texts?.title || 'Event Conditions'}\n </Text>\n\n {conditions.map((condition) => (\n <View key={condition.id} style={styles.conditionRow}>\n <TouchableOpacity\n style={[styles.conditionButton, customStyles?.conditionButton]}\n onPress={() => toggleCondition(condition.id)}\n >\n <Text style={[styles.conditionButtonText, customStyles?.conditionButtonText]}>\n {condition.name} {condition.is_required ? '*' : ''} (\n {expandedConditions[condition.id]\n ? texts?.hideButton || 'Hide'\n : texts?.viewButton || 'View'}\n )\n </Text>\n </TouchableOpacity>\n\n {expandedConditions[condition.id] && (\n <ScrollView\n style={[styles.expandedContent, customStyles?.expandedContent]}\n nestedScrollEnabled={true}\n >\n <Text style={[styles.conditionContent, customStyles?.conditionContent]}>\n {condition.content}\n </Text>\n </ScrollView>\n )}\n\n {condition.is_required && (\n <Checkbox\n isActive={!!acceptedConditions[condition.id]}\n onPress={() =>\n onAcceptCondition(condition.id, !acceptedConditions[condition.id])\n }\n styles={customStyles?.checkbox}\n text={texts?.acceptCheckbox || 'I have read and accept these conditions'}\n />\n )}\n </View>\n ))}\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 20,\n },\n title: {\n fontSize: 18,\n fontWeight: 'bold',\n marginBottom: 10,\n },\n conditionRow: {\n marginBottom: 15,\n },\n conditionButton: {\n padding: 8,\n backgroundColor: '#f5f5f5',\n borderRadius: 4,\n marginBottom: 5,\n },\n conditionButtonText: {\n color: '#007bff',\n },\n expandedContent: {\n backgroundColor: '#f9f9f9',\n padding: 15,\n borderRadius: 4,\n marginBottom: 10,\n maxHeight: 150,\n },\n conditionContent: {\n fontSize: 14,\n lineHeight: 20,\n },\n})\n\nexport default Conditions\n","import _map from 'lodash/map'\nimport React from 'react'\nimport { StyleProp, StyleSheet, Text, TextStyle, View, ViewStyle } from 'react-native'\nimport { logger } from '../../../utils/Logger'\n\nexport interface IOrderItem {\n id: string\n title: string\n subtitle?: string\n value: string\n styles?: OrderReviewItemStyles\n}\n\nexport interface OrderReviewItemStyles {\n container?: StyleProp<ViewStyle>\n title?: StyleProp<TextStyle>\n subtitle?: StyleProp<TextStyle>\n value?: StyleProp<TextStyle>\n}\n\nexport interface OrderReviewStyles {\n item?: OrderReviewItemStyles\n rootContainer?: StyleProp<ViewStyle>\n}\n\nexport interface IOrderReviewProps {\n orderItems: IOrderItem[]\n styles?: OrderReviewStyles\n}\n\nconst styles = StyleSheet.create({\n rootContainer: {\n flex: 1,\n flexWrap: 'wrap',\n },\n orderItemContainer: {\n paddingVertical: 4,\n width: '100%',\n },\n orderItemTitle: {\n fontWeight: '800',\n fontSize: 16,\n },\n orderItemValue: {\n lineHeight: 20,\n },\n orderItemSubtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 4,\n },\n})\n\nconst OrderItem = ({ title, subtitle, value, styles: itemStyles }: IOrderItem) => (\n <View\n style={[styles.orderItemContainer, itemStyles?.container]}\n key={`orderReview.${title}`}\n >\n <Text style={[styles.orderItemTitle, itemStyles?.title]}>{title}</Text>\n {subtitle && (\n <Text\n style={[styles.orderItemSubtitle, itemStyles?.subtitle]}\n allowFontScaling={true}\n >\n {subtitle}\n </Text>\n )}\n <Text style={[styles.orderItemValue, itemStyles?.value]} allowFontScaling={true}>\n {value}\n </Text>\n </View>\n)\n\nconst OrderReview = ({ orderItems, styles: customStyles }: IOrderReviewProps) => {\n return (\n <View style={[styles.rootContainer, customStyles?.rootContainer]}>\n {_map(orderItems, (item) => (\n <OrderItem\n key={`orderReview.${item.id}`}\n id={item.id}\n title={item.title}\n subtitle={item.subtitle}\n value={item.value}\n styles={{\n container: customStyles?.item?.container ?? item.styles?.container,\n title: customStyles?.item?.title ?? item.styles?.title,\n subtitle: customStyles?.item?.subtitle ?? item.styles?.subtitle,\n value: customStyles?.item?.value ?? item.styles?.value,\n }}\n />\n ))}\n </View>\n )\n}\n\nexport default OrderReview\n","import * as Yup from 'yup'\n\nimport { CustomField } from '../../event/types'\n\nexport const createCheckoutFormConfig = ({\n minimumAge,\n isAgeRequired,\n requirePassword,\n isTicketFree = false,\n requiredConditions = [],\n isPhoneRequired = false,\n orderCustomFields = [],\n ticketCustomFields = [],\n}: {\n minimumAge?: number\n isAgeRequired: boolean\n requirePassword: boolean\n isTicketFree?: boolean\n isSinglePageCheckout?: boolean\n requiredConditions?: Array<{ id: string }>\n isPhoneRequired?: boolean\n orderCustomFields?: CustomField[]\n ticketCustomFields?: CustomField[]\n}) =>\n Yup.object().shape({\n firstName: Yup.string().required('First name is required'),\n lastName: Yup.string().required('Last name is required'),\n email: Yup.string().email('Invalid email format').required('Email is required'),\n emailConfirmation: Yup.string()\n .oneOf([Yup.ref('email')], 'Emails must match')\n .required('Email confirmation is required'),\n dateOfBirth: isAgeRequired\n ? Yup.date()\n .required('Date of birth is required')\n .test(\n 'is-old-enough',\n `You must be at least ${minimumAge} years old`,\n (value) => {\n if (!value) return false\n\n const today = new Date()\n const birthDate = new Date(value)\n\n let age = today.getFullYear() - birthDate.getFullYear()\n const monthDiff = today.getMonth() - birthDate.getMonth()\n\n // Adjust age if birthday hasn't occurred this year yet\n if (\n monthDiff < 0 ||\n (monthDiff === 0 && today.getDate() < birthDate.getDate())\n ) {\n age--\n }\n\n return age >= (minimumAge || 0)\n }\n )\n : Yup.date().optional(),\n street: isTicketFree\n ? Yup.string()\n : Yup.string().required('Street address is required'),\n city: isTicketFree ? Yup.string() : Yup.string().required('City is required'),\n postalCode: isTicketFree\n ? Yup.string()\n : Yup.string().required('Postal code is required'),\n password: requirePassword\n ? Yup.string().required('Password is required')\n : Yup.string(),\n passwordConfirmation: requirePassword\n ? Yup.string()\n .oneOf([Yup.ref('password')], 'Passwords must match')\n .required('Password confirmation is required')\n : Yup.string().oneOf([Yup.ref('password')], 'Passwords must match'),\n phone: isPhoneRequired\n ? Yup.string().required('Phone number is required')\n : Yup.string().optional(),\n isSubToTicketFairy: Yup.boolean(),\n isSubToBrand: Yup.boolean(),\n country: isTicketFree\n ? Yup.string()\n : Yup.string().test(\n 'is-not-default',\n 'Country is required',\n (value) => value !== '-1' && !!value\n ),\n state: Yup.string(),\n acceptedConditions: Yup.object().test(\n 'required-conditions-accepted',\n 'You must accept all required conditions to proceed',\n (value) => {\n // If no required conditions, skip validation\n if (!requiredConditions || requiredConditions.length === 0) {\n return true\n }\n\n // Check that all required conditions are accepted\n return requiredConditions.every(\n (condition) => value && value[condition.id as keyof typeof value] === true\n )\n }\n ),\n\n // Ticket holders validation\n ticketHolders: Yup.array().of(\n Yup.object().shape({\n firstName: Yup.string().required('First name is required'),\n lastName: Yup.string().required('Last name is required'),\n email: Yup.string().email('Invalid email format'), // Email not required\n phone: Yup.string().optional(),\n customFields: Yup.object().test(\n 'validate-ticket-custom-fields',\n 'Please fill out all required ticket fields',\n (value: Record<string, string | string[]> | undefined) => {\n // If no ticket custom fields, validation passes\n if (!ticketCustomFields || ticketCustomFields.length === 0) {\n return true\n }\n\n // Find required fields\n const requiredFields = ticketCustomFields.filter((field) => field.required)\n\n // If no required fields, validation passes\n if (requiredFields.length === 0) {\n return true\n }\n\n // Check that all required fields have values\n return requiredFields.every((field) => {\n const fieldValue = value?.[field.name]\n\n // For arrays (multi-select), check that there's at least one item\n if (Array.isArray(fieldValue)) {\n return fieldValue.length > 0\n }\n\n // For strings, check that it's not empty\n return fieldValue !== undefined && fieldValue !== ''\n })\n }\n ),\n })\n ),\n\n // Custom fields validation\n customFields: Yup.object().test(\n 'validate-custom-fields',\n 'Please fill out all required custom fields',\n (value: Record<string, string | string[]> | undefined) => {\n // If no custom fields, validation passes\n if (!orderCustomFields || orderCustomFields.length === 0) {\n return true\n }\n\n // Find required fields\n const requiredFields = orderCustomFields.filter((field) => field.required)\n\n // If no required fields, validation passes\n if (requiredFields.length === 0) {\n return true\n }\n\n // Check that all required fields have values\n return requiredFields.every((field) => {\n const fieldValue = value?.[field.name]\n\n // For arrays (multi-select), check that there's at least one item\n if (Array.isArray(fieldValue)) {\n return fieldValue.length > 0\n }\n\n // For strings, check that it's not empty\n return fieldValue !== undefined && fieldValue !== ''\n })\n }\n ),\n })\n\nexport const formFieldsOrder = [\n 'firstName',\n 'lastName',\n 'email',\n 'emailConfirmation',\n 'password',\n 'passwordConfirmation',\n 'phone',\n 'dateOfBirth',\n 'street',\n 'city',\n 'country',\n 'postalCode',\n 'state',\n 'ticketHolders',\n 'isCardFormComplete',\n]\n","import { CardFormView } from '@stripe/stripe-react-native'\nimport { StyleProp, StyleSheet, TextStyle, ViewStyle } from 'react-native'\n\nimport type { FormikFieldComponentStyles } from '../../form'\n\nconst baseStyles = StyleSheet.create({\n form: {\n width: '100%',\n marginBottom: 50,\n },\n sectionTitle: {\n fontSize: 20,\n fontWeight: 'bold',\n marginTop: 20,\n marginBottom: 16,\n },\n sectionContainer: {\n marginVertical: 8,\n width: '100%',\n },\n paymentContainer: {\n padding: 10,\n backgroundColor: '#f9f9f9',\n borderRadius: 8,\n marginVertical: 10,\n minHeight: 180,\n },\n cardContainer: {\n height: 200,\n width: '100%',\n },\n orderReviewContainer: {\n marginVertical: 16,\n },\n // Add-ons styles\n addonSection: {\n marginVertical: 16,\n width: '100%',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n borderRadius: 8,\n padding: 16,\n },\n addonRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginVertical: 12,\n paddingBottom: 12,\n borderBottomWidth: 1,\n borderBottomColor: '#f0f0f0',\n },\n addonItem: {\n flexDirection: 'column',\n gap: 16,\n },\n addonInfo: {\n flex: 1,\n marginRight: 16,\n },\n addonName: {\n fontSize: 16,\n fontWeight: 'bold',\n marginBottom: 4,\n },\n addonPrice: {\n fontSize: 15,\n color: '#333',\n marginBottom: 4,\n },\n addonPriceWithFees: {\n fontSize: 12,\n color: '#666',\n },\n addonDescription: {\n fontSize: 14,\n color: '#666',\n marginTop: 4,\n },\n addonSelectContainer: {\n width: 80,\n },\n addonMainTitle: {\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 8,\n },\n addonSubtitle: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n marginBottom: 16,\n },\n button: {\n backgroundColor: '#007bff',\n padding: 15,\n borderRadius: 5,\n alignItems: 'center',\n marginTop: 20,\n elevation: 3, // Android shadow\n shadowColor: '#000', // iOS shadow\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.2,\n shadowRadius: 3,\n },\n buttonDisabled: {\n opacity: 0.6,\n },\n buttonText: {\n color: '#ffffff',\n fontSize: 16,\n fontWeight: 'bold',\n },\n errorContainer: {\n marginTop: 8,\n padding: 10,\n backgroundColor: '#ffebee',\n borderRadius: 5,\n },\n errorText: {\n color: '#d32f2f',\n marginBottom: 10,\n },\n ticketHolderTitle: {\n fontSize: 16,\n fontWeight: '600',\n marginBottom: 16,\n },\n})\n\nexport interface CheckoutFormStyles {\n form?: StyleProp<ViewStyle>\n sectionTitle?: StyleProp<TextStyle>\n sectionContainer?: StyleProp<ViewStyle>\n paymentContainer?: StyleProp<ViewStyle>\n cardContainer?: StyleProp<ViewStyle>\n orderReviewContainer?: StyleProp<ViewStyle>\n orderReviewItem?: {\n container?: StyleProp<ViewStyle>\n title?: StyleProp<TextStyle>\n subtitle?: StyleProp<TextStyle>\n value?: StyleProp<TextStyle>\n }\n addonRow?: StyleProp<ViewStyle>\n addonSection?: StyleProp<ViewStyle>\n addonItem?: StyleProp<ViewStyle>\n addonInfo?: StyleProp<ViewStyle>\n addonName?: StyleProp<TextStyle>\n addonPrice?: StyleProp<TextStyle>\n addonPriceWithFees?: StyleProp<TextStyle>\n addonDescription?: StyleProp<TextStyle>\n addonSelectContainer?: StyleProp<ViewStyle>\n addonMainTitle?: StyleProp<TextStyle>\n addonSubtitle?: StyleProp<TextStyle>\n button?: StyleProp<ViewStyle>\n buttonDisabled?: StyleProp<ViewStyle>\n buttonText?: StyleProp<TextStyle>\n errorContainer?: StyleProp<ViewStyle>\n errorText?: StyleProp<TextStyle>\n paymentContainerInner?: StyleProp<ViewStyle>\n cardStyle?: Partial<CardFormView.Styles>\n ticketHolderTitle?: StyleProp<TextStyle>\n fields?: FormikFieldComponentStyles\n}\n\nexport type CheckoutFormComputedStyles = ReturnType<typeof mergeCheckoutFormStyles>\n\nexport const cardStyle: CardFormView.Styles = {\n backgroundColor: '#FFFFFF',\n textColor: '#000000',\n placeholderColor: '#999999',\n borderWidth: 1,\n borderColor: '#E0E0E0',\n borderRadius: 8,\n}\n\nexport const mergeCheckoutFormStyles = (overrides?: CheckoutFormStyles) => ({\n form: StyleSheet.flatten([baseStyles.form, overrides?.form]),\n sectionTitle: StyleSheet.flatten([baseStyles.sectionTitle, overrides?.sectionTitle]),\n sectionContainer: StyleSheet.flatten([\n baseStyles.sectionContainer,\n overrides?.sectionContainer,\n ]),\n paymentContainer: StyleSheet.flatten([\n baseStyles.paymentContainer,\n overrides?.paymentContainer,\n ]),\n cardContainer: StyleSheet.flatten([baseStyles.cardContainer, overrides?.cardContainer]),\n orderReviewContainer: StyleSheet.flatten([\n baseStyles.orderReviewContainer,\n overrides?.orderReviewContainer,\n ]),\n orderReviewItem: overrides?.orderReviewItem,\n addonSection: StyleSheet.flatten([baseStyles.addonSection, overrides?.addonSection]),\n addonRow: StyleSheet.flatten([baseStyles.addonRow, overrides?.addonRow]),\n addonItem: StyleSheet.flatten([baseStyles.addonItem, overrides?.addonItem]),\n addonInfo: StyleSheet.flatten([baseStyles.addonInfo, overrides?.addonInfo]),\n addonName: StyleSheet.flatten([baseStyles.addonName, overrides?.addonName]),\n addonPrice: StyleSheet.flatten([baseStyles.addonPrice, overrides?.addonPrice]),\n addonPriceWithFees: StyleSheet.flatten([\n baseStyles.addonPriceWithFees,\n overrides?.addonPriceWithFees,\n ]),\n addonDescription: StyleSheet.flatten([\n baseStyles.addonDescription,\n overrides?.addonDescription,\n ]),\n addonSelectContainer: StyleSheet.flatten([\n baseStyles.addonSelectContainer,\n overrides?.addonSelectContainer,\n ]),\n addonMainTitle: StyleSheet.flatten([\n baseStyles.addonMainTitle,\n overrides?.addonMainTitle,\n ]),\n addonSubtitle: StyleSheet.flatten([baseStyles.addonSubtitle, overrides?.addonSubtitle]),\n button: StyleSheet.flatten([baseStyles.button, overrides?.button]),\n buttonDisabled: StyleSheet.flatten([\n baseStyles.buttonDisabled,\n overrides?.buttonDisabled,\n ]),\n buttonText: StyleSheet.flatten([baseStyles.buttonText, overrides?.buttonText]),\n errorContainer: StyleSheet.flatten([\n baseStyles.errorContainer,\n overrides?.errorContainer,\n ]),\n errorText: StyleSheet.flatten([baseStyles.errorText, overrides?.errorText]),\n paymentContainerInner: StyleSheet.flatten([overrides?.paymentContainerInner]),\n cardStyle: {\n ...cardStyle,\n ...(overrides?.cardStyle || {}),\n },\n ticketHolderTitle: StyleSheet.flatten([\n baseStyles.ticketHolderTitle,\n overrides?.ticketHolderTitle,\n ]),\n fields: overrides?.fields,\n})\n\nexport default baseStyles\n","import { CheckoutFormTexts } from './types'\n\nexport const defaultCheckoutFormTexts: Required<CheckoutFormTexts> = {\n form: {\n sectionTitle: 'Personal Information',\n firstName: 'First Name',\n firstNamePlaceholder: 'Enter your first name',\n lastName: 'Last Name',\n lastNamePlaceholder: 'Enter your last name',\n email: 'Email',\n emailPlaceholder: 'Enter your email',\n emailConfirmation: 'Confirm Email',\n emailConfirmationPlaceholder: 'Confirm your email',\n password: 'Password',\n passwordPlaceholder: 'Enter a password',\n passwordConfirmation: 'Confirm Password',\n passwordConfirmationPlaceholder: 'Confirm your password',\n phone: 'Phone Number',\n phonePlaceholder: 'Enter your phone number',\n dateOfBirth: 'Date of Birth',\n dateOfBirthPlaceholder: 'Date of Birth',\n street: 'Street Address',\n streetPlaceholder: 'Enter your street address',\n city: 'City',\n cityPlaceholder: 'Enter your city',\n country: 'Country',\n countryPlaceholder: 'Select your country',\n state: 'State',\n statePlaceholder: 'Select your state',\n postalCode: 'Postal Code',\n postalCodePlaceholder: 'Enter your postal code',\n customFields: {},\n },\n ticketHolders: {\n title: 'Ticket Holders',\n itemTitle: 'Ticket {index}',\n firstName: 'First Name *',\n firstNamePlaceholder: 'Enter first name',\n lastName: 'Last Name *',\n lastNamePlaceholder: 'Enter last name',\n email: 'Email',\n emailPlaceholder: 'Enter email address',\n phone: 'Phone Number',\n phonePlaceholder: 'Enter phone number',\n customFields: {},\n },\n marketingOptIns: {\n ticketFairyOptIn: 'Subscribe to The Ticket Fairy newsletters',\n organizerOptIn: 'Subscribe to event organizer newsletters',\n },\n addons: {\n title: 'Available Add-ons',\n quantityLabel: 'Qty',\n priceWithFeesSuffix: ' (with fees)',\n },\n orderSummary: {\n sectionTitle: 'Order Summary',\n },\n payment: {\n sectionTitle: 'Payment Details',\n errorRequired: 'Please fill your payment information',\n },\n buttons: {\n singlePageSubmit: 'Complete Checkout',\n goToPayment: 'Proceed to Payment',\n paymentSubmit: 'Complete Payment',\n },\n conditions: {\n title: 'Event Conditions',\n acceptLabel: 'I have read and accept these conditions',\n viewButton: 'View',\n hideButton: 'Hide',\n },\n}\n\nconst mergeCustomFieldMap = (\n base: Record<string, { label?: string; placeholder?: string }>,\n override?: Record<string, { label?: string; placeholder?: string }>\n): Record<string, { label?: string; placeholder?: string }> => ({\n ...base,\n ...(override ?? {}),\n})\n\nexport const mergeCheckoutFormTexts = (\n overrides?: CheckoutFormTexts\n): Required<CheckoutFormTexts> => {\n if (!overrides) {\n return defaultCheckoutFormTexts\n }\n\n return {\n form: {\n ...defaultCheckoutFormTexts.form,\n ...overrides.form,\n customFields: mergeCustomFieldMap(\n defaultCheckoutFormTexts.form.customFields || {},\n overrides.form?.customFields\n ),\n },\n ticketHolders: {\n ...defaultCheckoutFormTexts.ticketHolders,\n ...overrides.ticketHolders,\n customFields: mergeCustomFieldMap(\n defaultCheckoutFormTexts.ticketHolders.customFields || {},\n overrides.ticketHolders?.customFields\n ),\n },\n marketingOptIns: {\n ...defaultCheckoutFormTexts.marketingOptIns,\n ...overrides.marketingOptIns,\n },\n addons: {\n ...defaultCheckoutFormTexts.addons,\n ...overrides.addons,\n },\n orderSummary: {\n ...defaultCheckoutFormTexts.orderSummary,\n ...overrides.orderSummary,\n },\n payment: {\n ...defaultCheckoutFormTexts.payment,\n ...overrides.payment,\n },\n buttons: {\n ...defaultCheckoutFormTexts.buttons,\n ...overrides.buttons,\n },\n conditions: {\n ...defaultCheckoutFormTexts.conditions,\n ...overrides.conditions,\n },\n }\n}\n"],"mappings":"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","names":["addToCart","addToWaitingList","authorize","validatePhoneNumber","import_react_native","styles","ref","RNModal","import_react","import_react_native","import_react_native","import_jsx_runtime","React","styles","ref","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react","import_react_native","import_react","import_react_native","import_react_native","styles_default","import_prop_types","import_react","import_react_native","import_deprecated_react_native_prop_types","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","PropTypes","styles_default","import_prop_types","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","containerStyle","styles_default","PropTypes","import_prop_types","import_react","import_react_native","import_deprecated_react_native_prop_types","import_react_native","styles_default","import_jsx_runtime","containerStyle","styles_default","PropTypes","import_prop_types","import_react","import_react_native","import_deprecated_react_native_prop_types","import_react_native","styles_default","import_jsx_runtime","styles_default","PropTypes","import_prop_types","import_react","import_react_native","import_react_native","styles_default","import_deprecated_react_native_prop_types","import_jsx_runtime","styles_default","PropTypes","import_react_native","styles_default","import_jsx_runtime","React","containerStyle","styles_default","PropTypes","import_react_native","styles_default","styles_default","import_react","import_react_native","import_prop_types","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","Line","styles_default","PropTypes","import_jsx_runtime","Line","import_jsx_runtime","styles","React","styles_default","import_react_native","FONT_SIZE","styles_default","import_jsx_runtime","styles","date","styles_default","DateTimePickerModal","import_react","import_react_native","import_react_native","import_jsx_runtime","import_react_native","import_react_native","sWidth","import_jsx_runtime","styles","import_jsx_runtime","styles","import_react","import_react_native","import_react_native","sWidth","sHeight","DIALOG","DropdownListItemStyles","import_jsx_runtime","styles","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","styles_default","import_jsx_runtime","styles_default","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react","import_react_native","import_react","import_forEach","AsyncStorage","_forEach","Axios","axiosRetry","_get","_mapKeys","_forEach","_map","headers","_filter","_sortBy","import_jsx_runtime","ref","BackgroundTimer","import_react","import_react_native_background_timer","import_jsx_runtime","ref","BackgroundTimer","import_react","import_jsx_runtime","ref","import_react","import_jsx_runtime","ref","import_react","import_jsx_runtime","ref","import_react","import_react_native_background_timer","import_jsx_runtime","ref","BackgroundTimer","import_react","import_jsx_runtime","ref","import_react","import_jsx_runtime","ref","import_jwt_decode","import_map","import_mapKeys","import_sortBy","import_react","import_jsx_runtime","ref","_map","_groupBy","_mapKeys","_sortBy","_find","import_react","import_jsx_runtime","ref","import_react","import_react_native","import_react","import_react","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","import_jsx_runtime","styles","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_jsx_runtime","styles","_a","_b","_c","_d","styles_default","import_jsx_runtime","styles","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","_a","InputPhone","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_react","import_react_native","styles_default","import_jsx_runtime","ref","styles_default","import_react","import_react_native","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_jsx_runtime","styles","ref","import_find","import_forEach","import_map","import_react","import_react_native","import_find","_find","import_axios","import_get","import_forEach","import_map","date","axios","authorize","authGuestToken","_get","addToCart","headers","_forEach","addToWaitingList","validatePhoneNumber","_map","import_react_native","styles_default","import_jsx_runtime","styles","ref","_a","_b","React","DeviceCountry","_map","_every","_forEach","_find","getStates","styles_default","import_stripe_react_native","import_every","import_forEach","import_map","import_mapKeys","import_react","import_react_native","import_react_native_keyboard_aware_scroll_view","import_map","import_react_native","import_react_native","import_jsx_runtime","_map","import_map","import_react_native","import_jsx_runtime","styles","_map","import_react_native","styles_default","import_jsx_runtime","styles","ref","_map","_a","_forEach","_mapKeys","_b","priceWithCurrency","getConditions","_every","styles_default","import_find","import_forEach","import_react","import_react_native","import_map","import_react_native","import_react_native","import_react_native","import_jsx_runtime","import_react_native","import_jsx_runtime","styles","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","styles_default","import_jsx_runtime","styles","Clipboard","removeTicketFromResale","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","styles_default","_map","_k","import_jsx_runtime","styles","ref","headers","_forEach","_find","import_map","import_sortBy","import_react","import_react_native","import_react","import_react_native","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","import_jsx_runtime","styles","_a","date","import_jsx_runtime","styles","ref","_sortBy","_map","getOrders","_a","_uniqBy","import_react","import_react_native","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_jsx_runtime","styles","ref","import_react","import_react_native","import_react","import_react_native","import_react_native_keyboard_aware_scroll_view","import_jsx_runtime","styles","_a","_b","_c","_d","_e","_f","import_jsx_runtime","styles","ref","import_react","import_react_native","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","import_jsx_runtime","styles","import_get","import_react","import_react_native","import_react_native","import_react_native","import_jsx_runtime","styles","import_react_native","import_react_native","import_jsx_runtime","TicketListItem","styles","priceWithCurrency","_maxBy","TicketListItem_default","import_react_native","styles_default","import_jsx_runtime","styles","styles_default","_a","TicketListItem_default","_b","_c","_d","import_jsx_runtime","styles","ref","logger","_some","getTickets","_isEmpty","_get","import_stripe_react_native","import_react","import_react_native_background_timer","import_axios","axios","import_react","queryClient","import_react_query","import_react_query","import_react_query","import_react","queryClient","_a","_b","_c","_d","_e","_f","_g","_h","availableAddons","selectedCountry","priceWithCurrency","BackgroundTimer","_i","_j","_k","_l","_m","import_react_query","import_react","import_react_native","import_react_native_keyboard_aware_scroll_view","import_stripe_react_native","import_formik","import_react","import_react_native","import_react","import_react_native","import_jsx_runtime","React","_a","date","import_react","import_react_native","import_jsx_runtime","priceWithCurrency","_a","import_react","import_react_native","import_jsx_runtime","Conditions","Conditions_default","import_map","import_react_native","import_jsx_runtime","styles","OrderItem","OrderReview","_map","OrderReview_default","import_react_native","import_jsx_runtime","React","Conditions_default","OrderReview_default","styles","import_stripe_react_native","import_jsx_runtime","_a","containerStyle","ref","import_react_native"]}