\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tHenter Betalingskort\r\n\t\t\t\t\t\t\t
}\r\n\t\t\t\t\t\t\t{ !isDepositMethodsLoading && data?.depositState?.DepositCards.map((paymentMethod, i) => {\r\n\t\t\t\t\t\t\t\treturn
;\r\n\t\t\t\t\t\t\t}) }\r\n\t\t\t\t\t\t\t{ !isDepositMethodsLoading && depositCardExists('CREDITCARD') &&
}\r\n\t\t\t\t\t\t\t{ !isDepositMethodsLoading && depositCardExists('MOBILEPAY') &&
\r\n\t\t\t\t\t\t\t\tMobilePay\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t dispatch(update({ SelectedDepositMethod: 'MOBILEPAY' }))}\r\n\t\t\t\t\t\t\t\t\t\tref={register({ required: true })}\r\n\t\t\t\t\t\t\t\t\t\tname=\"SelectedDepositMethod\"\r\n\t\t\t\t\t\t\t\t\t\tid=\"radio-id4\"\r\n\t\t\t\t\t\t\t\t\t\taria-label=\"input\"\r\n\t\t\t\t\t\t\t\t\t\ttitle=\"input\"\r\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"input\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"a-input a-radio-button__input\"\r\n\t\t\t\t\t\t\t\t\t\trequired=\"\"\r\n\t\t\t\t\t\t\t\t\t\ttype=\"radio\" />\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t{errors?.SelectedDepositMethod?.type === 'required' &&
Vælg betalingsmetode}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nDepositMethods.propTypes = {\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t\tgoBack: PropTypes.func\r\n\t}),\r\n\tgoBack: PropTypes.func\r\n};\r\n\r\nexport default withRouter(DepositMethods);\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport routes from 'app/depositFlow/routes';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport { ErrorCategory, userVerified, hasUploaded } from 'app/shared/constants';\r\nimport { update } from 'app/shared/store/slices/depositStateSlice';\r\nimport { formatCurrency } from 'app/depositFlow/Helpers';\r\nimport { createDeposit, createRedirectFormData } from 'app/shared/store/api/deposit';\r\nimport { unwrapErrorStatusText } from 'foundation/apiRequest/apiRequest';\r\nimport Dictionary from '../../context/Dictionary';\r\n\r\nimport {\r\n\tHeading, Icon, Input, Label, Link, MaskedCard, Paragraph, PhrasePrimary, PhraseValidation\r\n} from 'atoms';\r\nimport { BackBtn, Button } from 'molecules';\r\nimport CardValidator from \"card-validator\";\r\n\r\nconst DepositApprove = (props) => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst data = useSelector(state => state);\r\n\tconst depositApprove = context?.depositapprove;\r\n\tconst dispatch = useDispatch();\r\n\tconst { errors, handleSubmit, register, getValues } = useForm();\r\n\tconst [calculatedBonus, setCalculatedBonus] = useState(0);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n const maskedData = data?.depositState?.SelectedDepositMethod?.indexOf('******') > -1 ? data.depositState.SelectedDepositMethod : data?.depositState?.DepositCard?.maskedCardNumber;\r\n const validateCardCVV = cardCVV => CardValidator.cvv(cardCVV).isValid;\r\n\r\n\tconst onSubmit = (formData) => {\r\n formData = ensureEncCVVData(formData);\r\n\r\n\t\tdispatch(update(formData));\r\n\t\tif (data?.depositState?.SelectedDepositMethod?.indexOf('******') > -1 || data?.depositState?.SelectedDepositMethod?.indexOf('MOBILEPAY') > -1 || data?.depositState?.DepositCard) {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tdispatch(createDeposit())\r\n\t\t\t\t.then(unwrapResult)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\t// Any error code 4xx and 5xx\r\n\t\t\t\t\tif (res.status >= 400) {\r\n\t\t\t\t\t\tthrow res;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!res.data || res?.data?.Errors?.length > 0) {\r\n\t\t\t\t\t\tthrow res;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdispatch(update({RedirectParameters: res.data.redirectOutput}));\r\n\t\t\t\t\tif (res.data.txState === 'WAITING_INPUT') {\r\n\t\t\t\t\t\t//if mobilepay, the redirect to deposit3dssecure\r\n\t\t\t\t\t\tif(data?.depositState?.SelectedDepositMethod?.indexOf('MOBILEPAY') > -1) {\r\n\t\t\t\t\t\t\tprops.history.push(routes.deposit3dsecure.url);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tdispatch(createRedirectFormData())\r\n\t\t\t\t\t\t\t\t.then((formResult) => {\r\n\t\t\t\t\t\t\t\t\tif(formResult?.payload?.message?.indexOf('Error') > -1) {\r\n\t\t\t\t\t\t\t\t\t\tprops.history.push(routes.generalError.url);\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tdispatch(update({RedirectFrameData: formResult.payload.data}));\r\n\t\t\t\t\t\t\t\t\tprops.history.push(routes.deposit3dsecure.url);\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\t\t\tconst {statusText} = unwrapErrorStatusText(error);\r\n\t\t\t\t\t\t\t\t\twindow?.TC?.gaEvent('redirectError', ErrorCategory, `stored_card_redirect_create_redirect_form_data_failed_with_${statusText}`);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (res.data.txState === 'SUCCESSFUL') {\r\n window.parent.location.hash = `#/indbetaling/bekraeftelse/${res.data.txId}`;\r\n }\r\n\t\t\t\t})\r\n .catch((error) => {\r\n\t\t\t\t\tdispatch(update({DepositCard: null}));\r\n\t\t\t\t\tdispatch(update({DepositCards: null}));\r\n\t\t\t\t\tdispatch(update({DepositSettings: null}));\r\n\t\t\t\t\tdispatch(update({DepositMethods: null}));\r\n\t\t\t\t\tdispatch(update({SelectedDepositMethod: null}));\r\n\t\t\t\t\tconst {statusText} = unwrapErrorStatusText(error);\r\n\t\t\t\t\tconst errorData = error?.response?.data?.ResponseData?.Data;\r\n\t\t\t\t\twindow?.TC?.gaEvent('endpointError', ErrorCategory, `stored_card_endpoint_create_deposit_failed_with_${statusText}`);\r\n\t\t\t\t\tif (errorData && errorData.response.status === 403 && errorData?.UserVerified === 'false') {\r\n\t\t\t\t\t\tsessionStorage.setItem(userVerified, 'false');\r\n\t\t\t\t\t\tsessionStorage.setItem(hasUploaded, errorData?.HasUploaded.toLowerCase() ?? 'false');\r\n\t\t\t\t\t\tprops.history.push(routes.documentation.url)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tprops.history.push(routes.generalError.url);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tconst backClick = () => {\r\n\t\tprops.history.goBack();\r\n\t};\r\n\r\n\tconst calculateBonusFromDepositAmount = () => {\r\n\t\t/* either the customer selects a new bonus, or the current one is used\r\n\t\t* if data.DepositAmount.DepositSettings.BonusCode is not set, then the user wants\r\n\t\t* to keep the current bonus, and has no new bonus applied\r\n\t\t* */\r\n\t\tconst bonusCode = data?.depositState?.DepositSettings?.BonusCode ? data?.depositState?.DepositSettings?.BonusCode : null;\r\n\r\n\t\tif (!bonusCode) {\r\n\t\t\tsetCalculatedBonus(0);\r\n\t\t\tdispatch(update({ NewBonusMax: 0 }));\r\n\t\t} else {\r\n\t\t\tconst selectedBonus = data?.depositState?.NewBonus.filter((obj) => {\r\n\t\t\t\treturn obj.TriggerBonusCode === bonusCode;\r\n\t\t\t})[0];\r\n\t\t\t// max/min bonus\r\n\t\t\tif (selectedBonus?.BonusMaxAmount >= data?.depositState?.DepositSettings?.Amount) {\r\n\t\t\t\tsetCalculatedBonus(data?.depositState?.DepositSettings?.Amount);\r\n\t\t\t\tdispatch(update({ NewBonusMax: data?.depositState?.DepositSettings?.Amount }));\r\n\t\t\t} else if (selectedBonus?.BonusMaxAmount) {\r\n\t\t\t\tsetCalculatedBonus(selectedBonus.BonusMaxAmount);\r\n\t\t\t\tdispatch(update({ NewBonusMax: selectedBonus.BonusMaxAmount }));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n const ensureEncCVVData = (formData) => {\r\n const value = getValues('SavedCardCVV');\r\n if (value) {\r\n formData.encSavedCVVNumber = window.encryptData(value);\r\n }\r\n return formData;\r\n }\r\n\r\n const HiddenEncCVVNumber = () => {\r\n const value = getValues('SavedCardCVV');\r\n const encValue = window.encryptData(value);\r\n return
value?.length === 3 ? encValue : '' })} />;\r\n };\r\n\r\n\tuseEffect(() => {\r\n\t\t// calculate amount that will be inserted after calculated bonus\r\n\t\tif (data?.depositState?.DepositSettings?.BonusCode === 'CURRENT') {\r\n\t\t\tconst newSettings = {};\r\n\t\t\tObject.keys(data?.depositState?.DepositSettings).forEach((setting) => {\r\n\t\t\t\tif (setting !== 'BonusCode') {\r\n\t\t\t\t\tnewSettings[setting] = data?.depositState?.DepositSettings[setting];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tdispatch(update({ DepositSettings: newSettings }));\r\n\t\t}\r\n\t\tcalculateBonusFromDepositAmount();\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nDepositApprove.propTypes = {\r\n\tsetView: PropTypes.func,\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t\tgoBack: PropTypes.func\r\n\t}),\r\n\tgoBack: PropTypes.func\r\n};\r\n\r\nexport default withRouter(DepositApprove);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n\tHeading, Paragraph, PhrasePrimary, Icon, Link\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\n\r\nconst ErrorMessage = ({\r\n\tdictionary, clickHandle, ButtonText, linkTarget\r\n}) => (\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{dictionary && {dictionary.Title}}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{dictionary?.ManchetText}\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n);\r\n\r\nErrorMessage.propTypes = {\r\n\tdictionary: PropTypes.shape({\r\n\t\tTitle: PropTypes.string.isRequired,\r\n\t\tManchetText: PropTypes.string.isRequired,\r\n\t\tHelpText: PropTypes.string,\r\n\t\tHelpTextLink: PropTypes.string,\r\n\t\tHelpTextLinkText: PropTypes.string,\r\n\t\tHelpTextLinkTarget: PropTypes.string,\r\n\t\tlinkTarget: PropTypes.string\r\n\t}),\r\n\tButtonText: PropTypes.string,\r\n\tclickHandle: PropTypes.func,\r\n\tlinkTarget: PropTypes.string\r\n};\r\n\r\nexport default ErrorMessage;\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/depositFlow/routes';\r\nimport Dictionary from 'app/depositFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/depositFlow/containers';\r\nimport { useSelector } from 'react-redux';\r\nimport { formatCurrency } from 'app/depositFlow/Helpers';\r\n\r\nconst DepositBonusAlert = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.voidactivebonusalert;\r\n const data = useSelector(state => state);\r\n\r\n if (data?.depositState?.CurrentBonus?.BonusAmount) {\r\n dictionary.ManchetText = dictionary.ManchetText.replace('xxx', formatCurrency(data.depositState.CurrentBonus.BonusAmount, true));\r\n }\r\n\r\n const clickHandle = () => {\r\n props.history.push(routes.depositMethods.url);\r\n };\r\n\r\n return (\r\n
);\r\n};\r\n\r\nDepositBonusAlert.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(DepositBonusAlert);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/depositFlow/routes';\r\nimport Dictionary from 'app/depositFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/depositFlow/containers';\r\n\r\nconst DepositAmountFail = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.cprandconsentfailed;\r\n\r\n const clickHandle = () => {\r\n props.history.push(routes.signup.url);\r\n sessionStorage.removeItem('loginError');\r\n };\r\n\r\n return (\r\n
);\r\n};\r\n\r\nDepositAmountFail.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(DepositAmountFail);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/depositFlow/routes';\r\nimport Dictionary from 'app/depositFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/depositFlow/containers';\r\n\r\nconst NotVerifiedFail = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.cprandconsentfailed;\r\n\r\n const clickHandle = () => {\r\n props.history.push(routes.signup.url);\r\n sessionStorage.removeItem('loginError');\r\n };\r\n\r\n return (\r\n
);\r\n};\r\n\r\nNotVerifiedFail.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(NotVerifiedFail);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Dictionary from 'app/depositFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/depositFlow/containers';\r\n\r\nconst GeneralError = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.generalerror;\r\n\r\n const clickHandle = (link) => {\r\n if (link.includes('#')) {\r\n window.location.hash = link;\r\n return;\r\n }\r\n\r\n window.location = window.location.pathname;\r\n };\r\n\r\n return (\r\n
clickHandle(dictionary?.CtaLink)}\r\n ButtonText={dictionary?.CtaText}\r\n />);\r\n};\r\n\r\nGeneralError.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n })\r\n};\r\n\r\n\r\nexport default withRouter(GeneralError);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/depositFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/depositFlow/containers';\r\n\r\nconst SessionFail = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.sessionexpired;\r\n\r\n const clickHandle = () => {\r\n props.history.push(routes.login.url);\r\n };\r\n\r\n return (\r\n );\r\n};\r\n\r\nSessionFail.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(SessionFail);\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n Switch, Route, withRouter, useLocation\r\n} from 'react-router-dom';\r\nimport { SwitchTransition, CSSTransition } from 'react-transition-group';\r\nimport { LastLocationProvider } from 'react-router-last-location';\r\nimport routes from 'app/depositFlow/routes';\r\nimport { Provider } from 'react-redux';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport { fetchAuth } from 'foundation/Helpers/fetchAuth';\r\nimport PropTypes from 'prop-types';\r\nimport AuthContext from 'app/depositFlow/context/Auth';\r\nimport { ErrorCategory, userVerified } from 'app/shared/constants';\r\nimport { PrivateRoute } from 'app/depositFlow/Helpers';\r\n\r\nimport {\r\n GeneralError,\r\n DepositBonusAlert,\r\n DepositConfirmed,\r\n DepositFailed,\r\n DepositAmount,\r\n DepositWarning,\r\n DepositMethods,\r\n DepositCardDetails,\r\n DepositApprove,\r\n NotVerifiedFail,\r\n SessionFail,\r\n Deposit3DSecure\r\n} from 'app/depositFlow/Views';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport { store, persistor } from 'app/shared/store';\r\nimport { ProgressBar } from 'molecules';\r\nimport { Modal } from 'organisms';\r\n\r\nconst DepositApp = (props) => {\r\n const [isModalOpen, setModalVisibility] = useState(null);\r\n const [auth, setAuth] = useState(true);\r\n const [limits, setLimits] = useState([]);\r\n const [maxDepositCount, setMaxDepositCount] = useState(7);\r\n const [minimumDeposit, setMinimumDeposit] = useState(50);\r\n const { pathname } = props.location;\r\n\r\n const currentRoute = Object.values(routes).filter((route) => {\r\n if (route.url.indexOf(':') > -1) {\r\n const tempRoute = route.url.substring(0, route.url.indexOf(':'));\r\n const isPartOfRoute = pathname.indexOf(tempRoute);\r\n if (isPartOfRoute === 0) {\r\n return true;\r\n }\r\n }\r\n return route.url === pathname;\r\n })[0];\r\n\r\n const {\r\n progress, label, isVisible, skipAuth\r\n } = currentRoute || {};\r\n const location = useLocation();\r\n let closeTitle = 'Luk';\r\n if (pathname === routes.depositAmount.url\r\n || pathname === routes.depositMethods.url\r\n || pathname === routes.depositCardDetails.url\r\n || pathname === routes.depositApprove.url\r\n || pathname === routes.deposit3dsecure.url\r\n || pathname === routes.depositAmountLimitReached\r\n ) {\r\n closeTitle = 'Afbryd';\r\n }\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n try {\r\n const pathArray = pathname.split('/');\r\n let name = pathArray[pathArray.length - 1];\r\n\r\n if (!name.length) {\r\n name = 'forside';\r\n }\r\n if (currentRoute) {\r\n if (!userIsVerified()) {\r\n return props.history.push(routes.documentation.url);\r\n }\r\n if (!skipAuth) {\r\n fetchAuth()\r\n .then((authResponse) => {\r\n if (isMounted) {\r\n setAuth(authResponse?.data?.Data?.IsAuthValid.toLowerCase() === 'true');\r\n }\r\n })\r\n .catch((authError) => {\r\n if (isMounted) {\r\n setAuth(false);\r\n }\r\n window?.TC?.gaEvent('sessionError', ErrorCategory, `session_failed_with_${authError.statusText}`);\r\n });\r\n }\r\n window?.TC?.pushVirtualPage(name, `/virtualPath/indbetaling${pathname}`, '');\r\n if (isMounted) {\r\n setModalVisibility(true);\r\n }\r\n } else {\r\n props.history.push(routes.generalError.url);\r\n }\r\n } catch (pathError) {\r\n console.error('Could not get route', pathname, pathError);\r\n }\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [location]);\r\n\r\n const toggleModal = (isModalVisible) => {\r\n setModalVisibility(isModalVisible);\r\n\r\n if (isModalVisible) {\r\n return;\r\n }\r\n\r\n props.history.push(''); // Link to current page with #/\r\n };\r\n\r\n const userIsVerified = () => {\r\n return !(sessionStorage && sessionStorage.getItem(userVerified) && sessionStorage.getItem(userVerified).replace(/[^\\w!?]/g, '') === 'false');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDepositApp.propTypes = {\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n }),\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string\r\n }),\r\n modelId: PropTypes.string,\r\n appBaseRoute: PropTypes.string\r\n};\r\n\r\nexport default withRouter(DepositApp);\r\n","import { withRouter, useParams, Switch } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport routes from 'app/depositFlow/routes';\r\nimport { PrivateRoute } from 'app/depositFlow/Helpers';\r\nimport { Provider, useDispatch, useSelector } from 'react-redux';\r\nimport { update } from 'app/shared/store/slices/depositStateSlice';\r\nimport { store } from 'app/shared/store';\r\nimport { isMobile } from 'foundation/utilities/isMobile';\r\n\r\nconst DepositRedirect = () => {\r\n const dispatch = useDispatch();\r\n const { status, txId } = useParams();\r\n const data = useSelector(state => state);\r\n\r\n if(isMobile.any() && data?.depositState?.SelectedDepositMethod?.indexOf('MOBILEPAY') > -1) {\r\n if (status === 'failure') {\r\n window.location.hash = `#/indbetaling/ikke-gennemfoert/${txId}`;\r\n } else {\r\n window.location.hash = `#/indbetaling/bekraeftelse/${txId}`;\r\n }\r\n } else {\r\n setTimeout(() => {\r\n dispatch(update({ DepositCard: null }));\r\n dispatch(update({ DepositCards: null }));\r\n dispatch(update({ DepositMethods: null }));\r\n dispatch(update({ SelectedDepositMethod: null }));\r\n dispatch(update({ RedirectParameters: null }));\r\n if (status === 'failure') {\r\n window.parent.location.hash = `#/indbetaling/ikke-gennemfoert/${txId}`;\r\n } else {\r\n window.parent.location.hash = `#/indbetaling/bekraeftelse/${txId}`;\r\n }\r\n }, 3000);\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\t\t\t\t\t\t\tAfventer\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst DepositRedirectRoute = () => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\n\r\nDepositRedirect.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n })\r\n};\r\n\r\nexport default withRouter(DepositRedirectRoute);\r\n","import React from 'react';\r\n\r\nexport default React.createContext({});\r\n","const appBaseRoute = window?.TC?.appRoutes?.popup || '/info';\r\n\r\nconst routes = {\r\n marketing: {\r\n url: `${appBaseRoute}/marketing-permission`,\r\n label: '',\r\n progress: null,\r\n isVisible: false,\r\n tracking: {\r\n action: 'denied',\r\n category: 'permission',\r\n label: 'marketing_permission_undecided'\r\n }\r\n },\r\n marketingSuccess: {\r\n url: `${appBaseRoute}/marketing-permission/bekraeftelse`,\r\n label: '',\r\n progress: null,\r\n isVisible: false\r\n },\r\n terms: {\r\n url: `${appBaseRoute}/vilkaar-og-politikker/opdatering`,\r\n label: '',\r\n progress: null,\r\n isVisible: false\r\n },\r\n limits: {\r\n url: `${appBaseRoute}/indbetalingsgrænse`,\r\n label: '',\r\n progress: null,\r\n isVisible: false\r\n },\r\n generalError: {\r\n url: `${appBaseRoute}/noget-galt`,\r\n label: 'Fejl',\r\n progress: null,\r\n isVisible: false\r\n },\r\n};\r\n\r\nexport default routes;\r\n","// Tracking\r\nexport const ErrorCategory = 'errorMessage';","import React from 'react';\r\n\r\nexport default React.createContext({});\r\n","const appBaseRoute = window?.TC?.appRoutes?.register || '/bruger';\r\n\r\nconst routes = {\r\n noload: {\r\n url: `${appBaseRoute}/`,\r\n label: 'Aasdd',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true\r\n },\r\n detectLogin: {\r\n url: `${appBaseRoute}/log-ind`,\r\n label: 'Login',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n login: {\r\n url: `${appBaseRoute}/log-ind/brugernavn`,\r\n label: 'Login',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n personalNumberConfirm: {\r\n url: `${appBaseRoute}/log-ind/cpr`,\r\n label: 'Indtast CPR-nummer',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n loginFail: {\r\n url: `${appBaseRoute}/log-ind/opret-konto`,\r\n label: 'LoginFail',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n loginError: {\r\n url: `${appBaseRoute}/log-ind/brugernavn/fejl`,\r\n label: 'LoginError',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n loginExcluded: {\r\n url: `${appBaseRoute}/log-ind/selvudelukket`,\r\n label: 'LoginExcluded',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n forgotPassword: {\r\n url: `${appBaseRoute}/log-ind/glemt-adgangskode`,\r\n label: 'Glemt kodeord',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n postLogin: {\r\n url: `${appBaseRoute}/log-ind/postlogin`,\r\n label: 'Login',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n changePassword: {\r\n url: `${appBaseRoute}/skift-adgangskode`,\r\n label: 'Skift kodeord',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n passwordChanged: {\r\n url: `${appBaseRoute}/skift-adgangskode/bekraeftelse`,\r\n label: 'Kodeord er ændret',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n passwordFailed: {\r\n url: `${appBaseRoute}/skift-adgangskode/fejl`,\r\n label: 'Skift kodeord',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n passwordSent: {\r\n url: `${appBaseRoute}/log-ind/glemt-adgangskode/email-sendt`,\r\n label: 'Kodeord er sendt',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n cpr: {\r\n url: `${appBaseRoute}/log-ind/cpr`,\r\n label: 'Cpr',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n firstTimeSecureLogin: {\r\n url: `${appBaseRoute}/log-ind/foerste-gang`,\r\n label: 'MitID',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n nemidFail: {\r\n url: `${appBaseRoute}/log-ind/nemid/fejl`,\r\n label: 'MitID',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n signup: {\r\n url: `${appBaseRoute}/opret-konto/nemid`,\r\n label: 'Opret spilkonto',\r\n progress: '15',\r\n isVisible: true,\r\n skipAuth: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n personalNumber: {\r\n url: `${appBaseRoute}/opret-konto/cpr-og-samtykke`,\r\n label: 'Opret spilkonto',\r\n progress: '30',\r\n isVisible: true,\r\n pidRequired: true,\r\n gaEvent: { action: 'signup_step2_cpr_samtykke', category: 'signup',label: 'dli_tiv' },\r\n closeTitle: 'Afbryd'\r\n },\r\n personalNumberFail: {\r\n url: `${appBaseRoute}/opret-konto/cpr-og-samtykke/fejl`,\r\n label: 'Opret spilkonto',\r\n progress: null,\r\n isVisible: false,\r\n pidRequired: true,\r\n closeTitle: 'Luk'\r\n },\r\n personalInformation: {\r\n url: `${appBaseRoute}/opret-konto/personlig-info`,\r\n label: 'Opret spilkonto',\r\n progress: '45',\r\n isVisible: true,\r\n pidRequired: true,\r\n gaEvent: { action: 'signup_step3_personlig_info', category: 'signup',label: 'dli_tiv' },\r\n closeTitle: 'Afbryd'\r\n },\r\n profile: {\r\n url: `${appBaseRoute}/opret-konto/spilprofil`,\r\n label: 'Opret spilkonto',\r\n progress: '60',\r\n isVisible: true,\r\n pidRequired: true,\r\n gaEvent: { action: 'signup_step4_spil_profil', category: 'signup',label: 'dli_tiv' },\r\n closeTitle: 'Afbryd'\r\n },\r\n securityQuestion: {\r\n url: `${appBaseRoute}/opret-konto/sikkerhedsspoergsmaal`,\r\n label: 'Opret spilkonto',\r\n progress: '75',\r\n isVisible: true,\r\n pidRequired: true,\r\n gaEvent: { action: 'signup_step5_sikkerhedsspoergsmaal', category: 'signup',label: 'dli_tiv' },\r\n closeTitle: 'Afbryd'\r\n },\r\n depositLimit: {\r\n url: `${appBaseRoute}/opret-konto/indbetalingsgraense`,\r\n label: 'Opret spilkonto',\r\n progress: '85',\r\n isVisible: true,\r\n pidRequired: true,\r\n gaEvent: { action: 'signup_step6_indbetalingsgraense', category: 'signup',label: 'dli_tiv' },\r\n closeTitle: 'Afbryd'\r\n },\r\n marketing: {\r\n url: `${appBaseRoute}/opret-konto/marketing-permission`,\r\n label: 'Opret spilkonto',\r\n progress: '95',\r\n isVisible: true,\r\n pidRequired: true,\r\n gaEvent: { action: 'signup_step7_marketing_permission', category: 'signup',label: 'dli_tiv' },\r\n closeTitle: 'Afbryd'\r\n },\r\n registerSuccess: {\r\n url: `${appBaseRoute}/opret-konto/bekraeftelse`,\r\n isVisible: false,\r\n pidRequired: true,\r\n gaEvent: { action: 'signup_step8_konto_oprettet', category: 'signup',label: 'dli_tiv' },\r\n closeTitle: 'Luk'\r\n },\r\n registerAlertDocumentaionNeeded: {\r\n url: `${appBaseRoute}/opret-konto/dokumentation`,\r\n label: 'Opret spilkonto',\r\n progress: null,\r\n isVisible: false,\r\n pidRequired: true,\r\n closeTitle: 'Luk'\r\n },\r\n documentation: {\r\n url: `${appBaseRoute}/opret-konto/dokumentation/vedhaeft-fil`,\r\n label: 'Indsend dokumentation',\r\n progress: '50',\r\n isVisible: true,\r\n authRequired: true,\r\n gaEvent: { action: 'signup_step8b_mangler_dokumentation', category: 'signup', label: 'dli_tiv' },\r\n closeTitle: 'Afbryd'\r\n },\r\n documentationSuccess: {\r\n url: `${appBaseRoute}/opret-konto/dokumentation/bekraeftelse`,\r\n label: 'Modtaget success',\r\n progress: null,\r\n isVisible: false,\r\n authRequired: true,\r\n closeTitle: 'Luk'\r\n },\r\n sessionFail: {\r\n url: `${appBaseRoute}/opret-konto/session-udloebet`,\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n generalError: {\r\n url: `${appBaseRoute}/opret-konto/fejl`,\r\n label: 'Fejl',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n confirmExclude: {\r\n url: `${appBaseRoute}/selvudelukkelse/godkend`,\r\n label: 'Bekræft',\r\n isVisible: true,\r\n pidRequired: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n confirmAction: {\r\n url: `${appBaseRoute}/bekraeft-id`,\r\n label: 'Bekræft',\r\n progress: '80',\r\n isVisible: true,\r\n pidRequired: true,\r\n closeTitle: 'Afbryd'\r\n },\r\n confirmActionError: {\r\n url: `${appBaseRoute}/bekraeft-id/fejl`,\r\n label: 'Fejl',\r\n progress: null,\r\n isVisible: false,\r\n skipAuth: true,\r\n closeTitle: 'Luk'\r\n },\r\n documentationPendingVerify: {\r\n url: `${appBaseRoute}/opret-konto/dokumentation/afventer-verificering`,\r\n label: 'Fejl',\r\n progress: null,\r\n isVisible: false,\r\n authRequired: true,\r\n closeTitle: 'Luk'\r\n },\r\n documentationPending: {\r\n url: `${appBaseRoute}/opret-konto/dokumentation/afventer-dokumentation`,\r\n label: 'Fejl',\r\n progress: null,\r\n isVisible: false,\r\n authRequired: true,\r\n closeTitle: 'Luk'\r\n },\r\n deposit: {\r\n url: 'indbetaling/beloeb'\r\n },\r\n withdraw: {\r\n url: 'udbetaling/beloeb'\r\n },\r\n logout: {\r\n url: `${appBaseRoute}/log-ud`\r\n },\r\n deleteReceipt: {\r\n url: `${appBaseRoute}/slet-konto/bekraeftelse`,\r\n }\r\n};\r\n\r\nexport default routes;\r\n","// Tracking\r\nexport const ErrorCategory = 'errorMessage';\r\n","export const onError = (errors, e) => {\r\n const concatErrors = Object.keys(errors).map((key) => {\r\n const error = errors[key];\r\n return `${key.toLowerCase()}_${error.type}`;\r\n }).join(',');\r\n\r\n if (typeof window.TC?.gaEvent === 'function') {\r\n window.TC?.gaEvent(e.target.name, 'error', concatErrors);\r\n }\r\n};\r\n\r\nexport const pushGaEvent = (category, action, label, value = '') => {\r\n const dataLayerAvailable = Array.isArray(window.dataLayer);\r\n\r\n if (!dataLayerAvailable) {\r\n console.warn('Tracking DataLayer not available');\r\n return;\r\n }\r\n\r\n var tracking = {\r\n event: 'gaEvent',\r\n eventSyntax: {\r\n action: action,\r\n category: category,\r\n value: value,\r\n label: label\r\n }\r\n };\r\n\r\n window.dataLayer.push(tracking);\r\n};\r\n\r\n// format string from e.g. 'Populære spil' to 'populaere_spil'\r\nexport var formatString = (str) => {\r\n str = str.replace(/\\s+/g, '_').toLowerCase();\r\n str = str.replace(/æ/g, 'ae');\r\n str = str.replace(/ø/g, 'oe');\r\n str = str.replace(/å/g, 'aa');\r\n return str;\r\n};\r\n\r\nexport const pushGaEventOnPageRedirect = (category, action, label) => {\r\n localStorage.setItem('localStorageGaEventTracking', JSON.stringify({\r\n category: category,\r\n action: action,\r\n label: label,\r\n }));\r\n};\r\n\r\nexport const getGaEventAfterPageRedirect = () => {\r\n var ls = localStorage.getItem('localStorageGaEventTracking');\r\n if (ls) {\r\n ls = JSON.parse(ls);\r\n if (ls.category !== null\r\n && ls.action !== null\r\n && ls.label !== null) {\r\n pushGaEvent(ls.category, ls.action, ls.label);\r\n }\r\n localStorage.removeItem('localStorageGaEventTracking');\r\n }\r\n};\r\n\r\nexport const pushGaEventVirtualPage = (name, virtualPath) => {\r\n const dataLayerAvailable = Array.isArray(window.dataLayer);\r\n\r\n if (!dataLayerAvailable) {\r\n console.warn('Tracking DataLayer not available');\r\n return;\r\n }\r\n\r\n var tracking = {\r\n event: 'virtualPage',\r\n page: {\r\n name: name,\r\n virtualPath: virtualPath\r\n }\r\n };\r\n\r\n window.dataLayer.push(tracking);\r\n};\r\n\r\nexport const pushGaEventVirtualPageOnPageRedirect = (name, virtualPath) => {\r\n let vp = '/virtualpath/' + virtualPath;\r\n localStorage.setItem('localStorageGaEventVirtualPageTracking', JSON.stringify({\r\n name: name,\r\n virtualPath: vp\r\n }));\r\n};\r\n\r\nexport const getGaEventVirtualPageAfterPageRedirect = () => {\r\n var ls = localStorage.getItem('localStorageGaEventVirtualPageTracking');\r\n if (ls) {\r\n ls = JSON.parse(ls);\r\n if (ls.name !== null\r\n && ls.virtualPath !== null) {\r\n pushGaEventVirtualPage(ls.name, ls.virtualPath);\r\n }\r\n localStorage.removeItem('localStorageGaEventVirtualPageTracking');\r\n }\r\n};\r\n\r\nexport const pushHeroTrackingEvent = (eventType, bannerName) => {\r\n const dataLayerAvailable = Array.isArray(window.dataLayer);\r\n\r\n if (!dataLayerAvailable) {\r\n console.warn('Tracking DataLayer not available');\r\n return;\r\n }\r\n\r\n var tracking = {\r\n event: eventType,\r\n ecommerce: {\r\n [eventType]: {\r\n promotions: [{\r\n name: 'tivo',\r\n position: 'hero_banner',\r\n creative: bannerName\r\n }]\r\n }\r\n }\r\n };\r\n\r\n window.dataLayer.push(tracking);\r\n};\r\n\r\nexport const initTracking = () => {\r\n const dataLayerAvailable = Array.isArray(window.dataLayer);\r\n\r\n const pushVirtualPage = function(name, path, type) {\r\n if (!dataLayerAvailable) {\r\n console.warn('Tracking DataLayer not available');\r\n // No reason to do any furhter if dataLayer is not available or method is called without an object\r\n return;\r\n }\r\n\r\n const pushEvent = {\r\n event: 'virtualPage',\r\n page: {\r\n name: name.trim(),\r\n virtualPath: '/virtualPath' + path ? path.toLowerCase() : '',\r\n type: type ? type.toLowerCase() : ''\r\n }\r\n };\r\n\r\n window.dataLayer.push(pushEvent);\r\n };\r\n\r\n const userEvent = function(userObj) {\r\n if (!dataLayerAvailable || (typeof userObj === 'undefined' && !userObj)) {\r\n // No reason to do any furhter if dataLayer is not available or method is called without an object\r\n return;\r\n }\r\n\r\n var pushEvent = {\r\n event: 'umPushed',\r\n user: userObj\r\n };\r\n\r\n window.dataLayer.push(pushEvent);\r\n };\r\n\r\n const gaEvent = function(action, category,label) {\r\n if (!dataLayerAvailable) {\r\n console.warn('Tracking DataLayer not available');\r\n // No reason to do any furhter if dataLayer is not available or method is called without an object\r\n return;\r\n }\r\n\r\n var trackData = {\r\n 'event': 'gaEvent',\r\n 'eventSyntax': {\r\n 'action': action,\r\n 'category': category,\r\n 'label': label\r\n }\r\n };\r\n\r\n window.dataLayer.push(trackData);\r\n };\r\n\r\n // Global bindings here\r\n\r\n // Make available on window (namespaced to not conflict with other scripts)\r\n window.TC = window.TC || {};\r\n window.TC.userEvent = userEvent;\r\n window.TC.pushVirtualPage = pushVirtualPage;\r\n window.TC.gaEvent = gaEvent;\r\n};","export const isMobile = {\r\n Android: () => navigator.userAgent.match(/Android/i),\r\n BlackBerry: () => navigator.userAgent.match(/BlackBerry/i),\r\n iOS: () => navigator.userAgent.match(/iPhone|iPad|iPod/i),\r\n iPad: () => navigator.userAgent.match(/Macintosh|iPad/i),\r\n Opera: () => navigator.userAgent.match(/Opera Mini/i),\r\n Windows: () => navigator.userAgent.match(/IEMobile/i),\r\n any: () => (\r\n isMobile.Android()\r\n\t\t|| isMobile.BlackBerry()\r\n\t\t|| isMobile.iOS()\r\n\t\t|| isMobile.Opera()\r\n\t\t|| isMobile.Windows()\r\n )\r\n};\r\n\r\nexport const isMobileOrTablet = () => {\r\n var check = false;\r\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); // eslint-disable-line\r\n return check;\r\n};\r\n\r\n\r\nexport const browserIsSafari = () => {\r\n const userAgent = navigator.userAgent;\r\n return /safari/i.test(userAgent) && !/chrome/i.test(userAgent); // Safari's user agent contains 'Safari' but Chrome's contains both 'Safari' and 'Chrome'.\r\n};\r\n\r\nexport const getOSHandler = () => {\r\n if (isMobile.Android()) return 'android';\r\n\r\n // Checks for macOS devices with touch capability, which indicates an iPad.\r\n if (isMobile.iPad() && navigator.maxTouchPoints && navigator.maxTouchPoints > 1) return 'ipad';\r\n\r\n if (isMobile.iOS()) return 'ios';\r\n\r\n return false; // If none of the above, the OS is unknown.\r\n};\r\n"],"names":["userVerified","userLastVisitedPage","isMobilePayDeposit","mobilePayAmount","createDeposit","createAsyncThunk","async","ignore_","thunkAPI","depositState","DepositSettings","DepositCard","SelectedDepositMethod","encSavedCVVNumber","getState","formData","ApiRequest","method","data","error","createRedirectFormData","RedirectParameters","config","headers","FormData","Object","keys","parameters","forEach","key","append","url","err","Error","getTransactionStatus","params","TransactionId","getDepositMethods","getResponsibleGaming","getActiveBonus","getBonuses","voidBonus","CurrentBonus","bonusId","BonusId","DepositConfirmed","props","context","useContext","Dictionary","dispatch","useDispatch","dictionary","depositconfirmed","status","txId","useParams","useSelector","state","manchetText","setManchetText","useState","bonusText","setBonusText","amount","setAmount","Amount","localStorage","getItem","useEffect","populate","ManchetText","value","formatCurrency","pushGaEvent","creditcardType","DepositCards","creditcard","MaskedAccount","CreditCardType","GuidanceDictionary","NewBonusMax","BonusCode","then","unwrapResult","res","update","catch","statusText","unwrapErrorStatusText","DepositMethods","SavedCardCVV","RedirectFrameData","React","className","Icon","iconId","Heading","Title","Paragraph","Button","onClick","clickHandle","isMobile","any","lastLocation","removeItem","indexOf","window","location","href","CtaLink","CtaText","PhrasePrimary","HelpText","Link","HelpTextLink","HelpTextLinkText","propTypes","setView","PropTypes","history","push","isRequired","withRouter","DepositFail","depositfailed","errorMessage","setErrorMessage","isMounted","TxState","empty","PspStatusCode","ErrorMessagesDictionary","toLowerCase","routes","depositAmount","DepositAmount","closeToLimit","setCloseLimit","orderCount","setOrderCount","current","warning","max","checkedBonus","setCheckedBonus","isBonusLoaded","setBonusLoaded","isLoaded","setIsLoaded","isActiveBonusLoaded","setActiveBonusLoaded","isNewBonusLoaded","setNewBonusLoaded","depositamount","depositLimit","depositwarning","currentUser","clearErrors","errors","handleSubmit","register","setValue","trigger","useForm","mode","useLastLocation","limits","bonusChanged","e","currentTarget","resLimits","depositLimits","minDeposit","numberOfDepositsPerDay","numberOfDepositsFirstWarning","globalLimits","setMinimumDeposit","depositCount","setMaxDepositCount","mostRestrictive","limit","Number","MAX_SAFE_INTEGER","entries","entry","index","period","periods","day","week","month","remainingLimit","available","availablePercantage","parseFloat","currentLimit","toFixed","limitsExceeded","minimumDeposit","name","map","assign","hasLimits","some","setLimits","redirect","TC","gaEvent","ErrorCategory","NewBonus","SelectedAmount","toLocaleString","minimumFractionDigits","isAuthenticated","showFlowAfterLogin","showDeposit","showWithdraw","registerRoutes","detectLogin","length","exceeded","find","depositAmountLimitReached","depositAmountLimitBelowMinimum","depositCountReached","textData","usageValue","usageText","maxValue","maxText","text","ValidationDictionary","UsageBar","content","theme","renderWarning","markup","lastWarning","BackBtn","backClick","goBack","onSubmit","number","replaceAll","newFormdata","formKey","formValue","Array","isArray","KeepBonus","depositBonusAlert","depositMethods","ref","type","id","title","SelectedLimit","PhraseValidation","Label","Input","useRef","validate","parsedNumber","exceededLimit","sort","a","b","message","includes","replace","RegExp","validateLimitsNotExceeded","min","undefined","required","placeholder","onKeyDown","event","keyCode","which","preventDefault","onChange","shouldValidate","target","test","customAttributes","inputMode","defaultValue","RadioArticle","cssClass","radioId","checked","radioValue","toptext","header","subheader","subheaderData","WageringReq","bottomCssClass","BonusBar","Wagered","bonus","TriggerBonusCode","BonusTitle","BonusSubtitle","BonusMaxAmount","BonusText","BonusValidFrom","BonusValidUntil","BonusMinAmount","BonusTurnoverTimes","BonusValidDays","isInactive","Loader","isCenter","Deposit3DSecure","iframeSrc","setItem","pathname","encodeURIComponent","src","DepositWarning","depositCountData","maxDepositCount","renderManchete","belowMinimumData","HelpTextLinkTarget","DepositCardDetails","carddetails","inputs","setError","getValues","reValidateMode","defaultValues","isLoading","setIsLoading","changeFocusToNextFieldAfter","findIndex","nextName","nextSibling","document","querySelector","focus","validateCardExpiry","cardMonth","cardYear","bCardMonth","CardValidator","isValid","bCardYear","year","HiddenEncCardNumber","encryptData","_extends","setValueAs","HiddenEncCVVNumber","HiddenMaskedCardNumber","formatMaskedCard","CardCVV","CardNumber","setTimeout","depositApprove","minLength","maxLength","cardNumber","luhnValidateUnionPay","validateCardNumber","onKeyUp","validateTypedChars","cardnumberInputPattern","substring","isNaN","CardMonth","onFocus","cardmonthInputPattern","CardYear","cardyearInputPattern","cardCVV","cardcvvInputPattern","AlternativeText","PhraseSecondary","AlternativeTextLinkTarget","AlternativeTextLink","AlternativeTextLinkText","depositmethods","isDepositMethodsLoading","setDepositMethodsLoading","depositCardExists","provider","item","ProviderType","depositCardDetails","paymentMethod","i","typeId","htmlFor","DepositApprove","depositapprove","calculatedBonus","setCalculatedBonus","maskedData","maskedCardNumber","encValue","newSettings","setting","calculateBonusFromDepositAmount","bonusCode","selectedBonus","filter","obj","ensureEncCVVData","Errors","redirectOutput","txState","deposit3dsecure","formResult","payload","generalError","parent","hash","errorData","response","ResponseData","Data","UserVerified","sessionStorage","HasUploaded","documentation","MaskedCard","isMaskedAlready","ErrorMessage","_ref","ButtonText","linkTarget","DepositBonusAlert","voidactivebonusalert","BonusAmount","DepositAmountFail","cprandconsentfailed","signup","NotVerifiedFail","GeneralError","generalerror","link","SessionFail","sessionexpired","login","DepositApp","isModalOpen","setModalVisibility","auth","setAuth","currentRoute","values","route","tempRoute","progress","label","isVisible","skipAuth","useLocation","closeTitle","pathArray","split","userIsVerified","fetchAuth","authResponse","IsAuthValid","authError","pushVirtualPage","pathError","console","Provider","store","LastLocationProvider","PersistGate","loading","persistor","Modal","toggleModal","isModalVisible","ProgressBar","heading","visible","SwitchTransition","CSSTransition","classNames","timeout","AuthContext","Switch","PrivateRoute","exact","path","component","Route","notVerifiedFail","depositConfirmed","deposit","depositFail","DepositFailed","sessionFail","referer","modelId","appBaseRoute","DepositRedirect","DepositRedirectRoute","appRoutes","popup","marketing","tracking","action","category","marketingSuccess","terms","noload","personalNumberConfirm","loginFail","loginError","loginExcluded","forgotPassword","postLogin","changePassword","passwordChanged","passwordFailed","passwordSent","cpr","firstTimeSecureLogin","nemidFail","personalNumber","pidRequired","personalNumberFail","personalInformation","profile","securityQuestion","registerSuccess","registerAlertDocumentaionNeeded","authRequired","documentationSuccess","confirmExclude","confirmAction","confirmActionError","documentationPendingVerify","documentationPending","withdraw","logout","deleteReceipt","onError","concatErrors","join","arguments","dataLayer","eventSyntax","warn","formatString","str","pushGaEventOnPageRedirect","JSON","stringify","getGaEventAfterPageRedirect","ls","parse","pushGaEventVirtualPageOnPageRedirect","virtualPath","vp","getGaEventVirtualPageAfterPageRedirect","pushGaEventVirtualPage","page","pushHeroTrackingEvent","eventType","bannerName","ecommerce","promotions","position","creative","initTracking","dataLayerAvailable","userEvent","userObj","pushEvent","user","trim","trackData","Android","navigator","userAgent","match","BlackBerry","iOS","iPad","Opera","Windows","isMobileOrTablet","check","vendor","opera","substr","browserIsSafari","getOSHandler","maxTouchPoints"],"sourceRoot":""}