{"version":3,"file":"js/paymentform.js","mappings":"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","sources":["webpack://pcloud-site/webpack/runtime/chunk loaded","webpack://pcloud-site/./src/lib/move.js","webpack://pcloud-site/./src/lib/componentMount.js","webpack://pcloud-site/./src/lib/utils.js","webpack://pcloud-site/./src/components/Tabs.js","webpack://pcloud-site/./src/components/PaymentLoader.js","webpack://pcloud-site/./src/lib/subscriptions.js","webpack://pcloud-site/./src/lib/diffs.js","webpack://pcloud-site/./src/lib/payments.js","webpack://pcloud-site/./src/components/PaymentComponents/SharedStyledComponents.js","webpack://pcloud-site/./src/components/PaymentComponents/CreditCardFormTemplate.js","webpack://pcloud-site/./src/components/PaymentComponents/PrefilledCreditCardForm.js","webpack://pcloud-site/./src/components/PaymentComponents/CreditCardBox.js","webpack://pcloud-site/./src/lib/hooks/SafeChargeInputsValidations.js","webpack://pcloud-site/./src/components/SpinContainer.js","webpack://pcloud-site/./src/svg/loading-icon.svg","webpack://pcloud-site/./src/components/PaymentComponents/PaypalTemplate.js","webpack://pcloud-site/./src/components/PaymentComponents/PaypalBox.js","webpack://pcloud-site/./src/components/PaymentComponents/PaymentModal.js","webpack://pcloud-site/./src/exports/paymentform.js","webpack://pcloud-site/./node_modules/clsx/dist/clsx.m.js","webpack://pcloud-site/./node_modules/dom-helpers/esm/addClass.js","webpack://pcloud-site/./node_modules/dom-helpers/esm/hasClass.js","webpack://pcloud-site/./node_modules/dom-helpers/esm/removeClass.js","webpack://pcloud-site/./node_modules/lodash/_Symbol.js","webpack://pcloud-site/./node_modules/lodash/_arrayMap.js","webpack://pcloud-site/./node_modules/lodash/_arrayPush.js","webpack://pcloud-site/./node_modules/lodash/_baseFlatten.js","webpack://pcloud-site/./node_modules/lodash/_baseGetTag.js","webpack://pcloud-site/./node_modules/lodash/_baseIsArguments.js","webpack://pcloud-site/./node_modules/lodash/_baseIsRegExp.js","webpack://pcloud-site/./node_modules/lodash/_baseToString.js","webpack://pcloud-site/./node_modules/lodash/_baseUnary.js","webpack://pcloud-site/./node_modules/lodash/_freeGlobal.js","webpack://pcloud-site/./node_modules/lodash/_getRawTag.js","webpack://pcloud-site/./node_modules/lodash/_isFlattenable.js","webpack://pcloud-site/./node_modules/lodash/_nodeUtil.js","webpack://pcloud-site/./node_modules/lodash/_objectToString.js","webpack://pcloud-site/./node_modules/lodash/_root.js","webpack://pcloud-site/./node_modules/lodash/escapeRegExp.js","webpack://pcloud-site/./node_modules/lodash/flatten.js","webpack://pcloud-site/./node_modules/lodash/isArguments.js","webpack://pcloud-site/./node_modules/lodash/isArray.js","webpack://pcloud-site/./node_modules/lodash/isObjectLike.js","webpack://pcloud-site/./node_modules/lodash/isRegExp.js","webpack://pcloud-site/./node_modules/lodash/isString.js","webpack://pcloud-site/./node_modules/lodash/isSymbol.js","webpack://pcloud-site/./node_modules/lodash/toString.js","webpack://pcloud-site/./node_modules/shallowequal/index.js","webpack://pcloud-site/external window \"jQuery\"","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/array/from.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/date/now.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/assign.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/create.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/keys.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/parse-float.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/parse-int.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/promise.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol/to-primitive.js","webpack://pcloud-site/./node_modules/classnames/index.js","webpack://pcloud-site/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://pcloud-site/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://pcloud-site/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://pcloud-site/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://pcloud-site/./node_modules/tslib/tslib.es6.mjs","webpack://pcloud-site/webpack/bootstrap","webpack://pcloud-site/webpack/runtime/amd options","webpack://pcloud-site/webpack/runtime/compat get default export","webpack://pcloud-site/webpack/runtime/define property getters","webpack://pcloud-site/webpack/runtime/global","webpack://pcloud-site/webpack/runtime/hasOwnProperty shorthand","webpack://pcloud-site/webpack/runtime/make namespace object","webpack://pcloud-site/webpack/runtime/node module decorator","webpack://pcloud-site/webpack/runtime/jsonp chunk loading","webpack://pcloud-site/webpack/runtime/nonce","webpack://pcloud-site/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","const _move = (obj, _attachList) => {\n for (var n in obj) {\n if (obj.hasOwnProperty(n)) {\n for (var k = 0; k < _attachList.length; ++k) {\n if (_attachList[k].list.indexOf(n) != -1) {\n _attachList[k].attach[n] = obj[n];\n }\n }\n }\n }\n}\n\nexport default _move;","// @flow\n\nimport * as React from \"react\";\nimport { createRoot } from 'react-dom/client';\n\nconst usedReactRoots = {};\n\nconst getExistingOrNewRoot = (element: HTMLElement) => {\n // Existing ID or create new unique ID.\n const reactRootId = element.dataset.reactRootId || Math.random().toString(16).slice(2);\n let root = usedReactRoots[reactRootId] || null;\n\n if (root === null) {\n // Save the generated new ID to the element to be reused if we change the props and call this again.\n element.dataset.reactRootId = reactRootId;\n root = createRoot(element);\n }\n\n // Cache the root.\n usedReactRoots[reactRootId] = root;\n\n return {reactRootId , root};\n}\n\nconst componentMount = (render: (props: {}) => React.Node) => (element: HTMLElement, props: {}) => {\n if (!element) {\n return null;\n }\n\n const {reactRootId, root} = getExistingOrNewRoot(element);\n root.render(render(props));\n\n return () => {\n root.unmount();\n delete usedReactRoots[reactRootId];\n };\n};\n\nexport function componentRender(element: HTMLElement, render: React.Element) {\n const {reactRootId, root} = getExistingOrNewRoot(element);\n root.render(render);\n\n return () => {\n root.unmount();\n delete usedReactRoots[reactRootId];\n };\n}\n\nexport default componentMount;\n","//@flow\n\nimport {\n DiscountType,\n Userinfo,\n PlanIDType,\n Subscription\n} from \"../lib/types/dataTypes.components\";\n\n// import {\n// ADD_STORAGE_1COUNT_PLAN_ID, \n// ADD_STORAGE_4COUNT_PLAN_ID,\n// MB_PER_STORAGE_COUNT\n// } from \"./plansInfo\";\n\nimport {\n rcookie,\n setcookie,\n hrefSearch\n} from \"@pcloud/web-utilities/dist/lib/utils\";\nimport { __ } from \"@pcloud/web-utilities/dist/lib/langManager\";\nimport { renderQuota } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\n\nimport {\n PREMIUM_PLAN_ID,\n PREMIUM_PLUS_PLAN_ID,\n CUSTOM4TB_PLAN_ID,\n FAMILY2TB_PLAN_ID,\n FAMILY_CUSTOM_PLAN_ID,\n FAMILY_CUSTOM_2COUNT_PLAN_ID,\n FAMILY_CUSTOM_5COUNT_PLAN_ID,\n FAMILY_ADD_1COUNT_PLAN_ID,\n FAMILY_ADD_2COUNT_PLAN_ID,\n FAMILY_ADD_5COUNT_PLAN_ID,\n CUSTOM_PLAN_ID,\n ADD_STORAGE_1COUNT_PLAN_ID,\n ADD_STORAGE_4COUNT_PLAN_ID,\n ADD_STORAGE_8COUNT_PLAN_ID,\n ADD_STORAGE_12COUNT_PLAN_ID,\n ADD_STORAGE_20COUNT_PLAN_ID,\n CUSTOM_20COUNT_PLAN_ID,\n CRYPTO_PLAN_ID,\n EFH_PLAN_ID,\n ADDITIONAL_TRAFFIC_ID,\n MAX_CUSTOM_STORAGE_COUNT,\n MAX_FAMILY_STORAGE_COUNT,\n PASS_PREMIUM_PLAN_ID,\n PASS_FAMILY_PLAN_ID,\n} from \"@pcloud/web-utilities/dist/plans/constants.plans\";\n\nexport {\n rcookie,\n setcookie,\n hrefSearch,\n __,\n renderQuota\n};\n\nexport const removeHrefSearch = (params: Array, forceRefresh?: boolean) => {\n if (params && typeof params == 'string') {\n params = [params];\n }\n\n if (params && params.length && location.search.length) {\n var currentQueriesArr = location.search.substring(1).split('&');\n var currentQueriesMap = {};\n var finalQueriesArr = [];\n var finalURL;\n\n // Create object map with all current search queries\n for (var i in currentQueriesArr) {\n currentQueriesMap[currentQueriesArr[i].split('=').shift()] = currentQueriesArr[i].split('=').pop();\n }\n\n // Delete requested queries\n for (var i in params) {\n if (params[i].split('=').shift() in currentQueriesMap) {\n delete currentQueriesMap[params[i].split('=').shift()];\n }\n }\n\n if (Object.keys(currentQueriesMap).length) {\n for (var i in currentQueriesMap) {\n finalQueriesArr.push(i + '=' + currentQueriesMap[i]);\n }\n\n finalURL = location.origin + location.pathname + '?' + finalQueriesArr.join('&');\n } else {\n finalURL = location.origin + location.pathname;\n }\n\n if (forceRefresh) {\n location = finalURL;\n } else {\n window.history.pushState({}, null, finalURL);\n }\n }\n};\n\nexport const addHrefSearch = (params: Array | string, forceRefresh: boolean, newLocationUrl?: string) => {\n if (!params) {\n return;\n }\n\n let finalURL;\n\n if (typeof params == 'string') {\n params = [params];\n }\n\n if (location.search.length) {\n let oldQueriesArr = location.search.substring(1).split('&');\n let oldQueriesMap = {};\n let givenQueriesMap = {};\n let finalQueriesMap = {};\n let finalQueriesArr = [];\n\n // Create object map with all current search queries\n for (let i in oldQueriesArr) {\n oldQueriesMap[oldQueriesArr[i].split('=').shift()] = oldQueriesArr[i].split('=').pop();\n }\n\n for (let i in params) {\n givenQueriesMap[params[i].split('=').shift()] = params[i].split('=').pop();\n\n // Delete queries which will be duplicated in the end and remove them\n if (params[i].split('=').shift() in oldQueriesMap) {\n delete oldQueriesMap[params[i].split('=').shift()];\n }\n }\n\n finalQueriesMap = Object.assign(oldQueriesMap, givenQueriesMap);\n\n for (let i in finalQueriesMap) {\n finalQueriesArr.push(i + '=' + finalQueriesMap[i]);\n }\n\n finalURL = (newLocationUrl ? newLocationUrl : (location.origin + location.pathname)) + '?' + finalQueriesArr.join('&');\n\n } else {\n // Directly append newly provided params\n finalURL = (newLocationUrl ? newLocationUrl : location.href) + '?' + params.join('&');\n }\n\n if (forceRefresh) {\n location = finalURL;\n } else {\n if (!window.history.state || window.history.state.page != finalURL) {\n window.history.pushState({ \"page\": finalURL }, null, finalURL);\n }\n }\n};\n\nexport const saveToSessionstorage = (label: string, value: any) => {\n if (\n typeof Storage === \"undefined\" ||\n typeof sessionStorage === \"undefined\" ||\n sessionStorage === null\n ) {\n setcookie(label, value, 0);\n } else {\n sessionStorage.setItem(label, value);\n }\n};\n\nexport const signToCurrency = {\n \"$\": \"USD\",\n \"€\": \"EUR\",\n \"₤\": \"GBP\",\n \"BGN\": \"BGN\"\n};\n\nexport const currencyMap = {\n 'USD': '$',\n 'EUR': '€',\n 'GBP': '₤',\n // Used for Vivacom plans only\n 'BGN': 'BGN'\n};\n\nconst _repl = (str: string, repl: {} = {}) => {\n str = _properSpaces(str);\n\n if (!obLength(repl)) {\n return str;\n }\n\n for (var n in repl) {\n str = str.replace(new RegExp(\"%\" + n + \"%\", \"g\"), repl[n]);\n }\n\n return str;\n};\n\nconst _properSpaces = str => {\n return str.split(String.fromCharCode(160)).join(\" \");\n};\n\nexport const obLength = (obj: {}) => {\n var size = 0,\n key;\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n size++;\n }\n }\n return size;\n};\n\ntype getDisabledPlanReasonParams = {\n user: Userinfo,\n forPlan: PlanIDType,\n forPeriod: \"trial\" | \"month\" | \"year\" | \"lifetime\",\n downgradeAllowed?: boolean,\n add500GBAllowed?: boolean,\n trafficCount?: number,\n maxCustomStorageCount?: number\n};\n\nexport const getDisabledPlanReason = ({\n user = {},\n forPlan,\n forPeriod,\n downgradeAllowed,\n add500GBAllowed,\n trafficCount,\n canAddStorage,\n maxCustomStorageCount = MAX_CUSTOM_STORAGE_COUNT,\n maxFamilyStorageCount = MAX_FAMILY_STORAGE_COUNT\n}: getDisabledPlanReasonParams) => {\n if (!user || !forPlan || !forPeriod) {\n return \"\";\n }\n\n const {\n business,\n lastsubscription,\n cryptolifetime,\n plan,\n premium,\n premiumlifetime,\n premiumexpires,\n cryptosubscription,\n efh,\n planparams,\n additionaltraffic,\n additionaltrafficlifetime,\n family,\n passmanagerdata,\n usepassmanagertrial: isfreetrialused\n } = user;\n\n const hasUserInfo = Object.keys(user).length > 0\n let islifetime;\n let isfreetrialactive;\n let passplan;\n let passpremiumexpire;\n let passFamily;\n\n if (passmanagerdata) {\n islifetime = passmanagerdata.islifetime\n isfreetrialactive = passmanagerdata.isfreetrialactive;\n passplan = passmanagerdata.plan;\n passpremiumexpire = passmanagerdata.premiumexpires;\n passFamily = passmanagerdata.family;\n }\n\n if (hasUserInfo) {\n // const {\n // islifetime,\n // istrial: isfreetrialactive,\n // plan: passplan,\n // planexpires: passpremiumexpire\n // } = passmanagerdata\n\n if (business) {\n return (\"business\");\n } else {\n let hasStorageSubscription = premium && !premiumlifetime;\n let hasCryptoSubscription = cryptosubscription;\n let hasSubscriptionPeriod = false;\n let isCanceled = lastsubscription && lastsubscription.status === \"canceled\";\n let incStorage = 0;\n if (!isCanceled && lastsubscription) {\n hasSubscriptionPeriod = lastsubscription.period;\n }\n\n const isCustomPlanId = forPlan === ADD_STORAGE_1COUNT_PLAN_ID || forPlan === ADD_STORAGE_4COUNT_PLAN_ID || forPlan === ADD_STORAGE_8COUNT_PLAN_ID || forPlan === ADD_STORAGE_12COUNT_PLAN_ID || forPlan === ADD_STORAGE_20COUNT_PLAN_ID || forPlan === CUSTOM_20COUNT_PLAN_ID;\n const isFamilyPlanId = forPlan === FAMILY_ADD_1COUNT_PLAN_ID || forPlan === FAMILY_ADD_2COUNT_PLAN_ID || forPlan === FAMILY_ADD_5COUNT_PLAN_ID || forPlan === FAMILY_CUSTOM_2COUNT_PLAN_ID || forPlan === FAMILY_CUSTOM_5COUNT_PLAN_ID;\n\n if (isCustomPlanId || isFamilyPlanId) {\n const parts = forPlan.split(\"_\");\n incStorage = Number(parts[1]);\n forPlan = Number(parts[0]);\n }\n\n if ((!lastsubscription || (hasSubscriptionPeriod && lastsubscription.products.indexOf(forPlan) === -1) && !downgradeAllowed) && forPeriod != \"lifetime\") {\n if (hasStorageSubscription && plan) {\n if (plan == forPlan && hasStorageSubscription == forPeriod) {\n return (\"current_plan\");\n } else if (plan > forPlan) {\n return (\"lower_plan\");\n }\n } else if (efh && forPlan === EFH_PLAN_ID) {\n return (\"current_plan\");\n } else if (additionaltraffic && forPlan == ADDITIONAL_TRAFFIC_ID) {\n if (!additionaltrafficlifetime && planparams.additionaltraffic == trafficCount) {\n return (\"current_plan\");\n } else if (planparams.additionaltraffic > trafficCount) {\n return (\"traffic_downgrade_restriction\");\n }\n }\n } else if (!lastsubscription && forPeriod === \"lifetime\" && hasStorageSubscription && plan && plan > forPlan) {\n return (\"lower_plan\");\n } else if (plan && hasStorageSubscription && hasSubscriptionPeriod && lastsubscription.products.indexOf(plan) === -1 && forPeriod != \"lifetime\" && !downgradeAllowed) {\n if (forPlan == plan) {\n return (\"current_plan\");\n } else if (plan > forPlan) {\n return (\"lower_plan\");\n }\n }\n\n // Buying Crypto\n if (forPlan == CRYPTO_PLAN_ID) {\n if (cryptolifetime) {\n return (\"crypto_lifetime\");\n } else if (hasSubscriptionPeriod && !hasCryptoSubscription) {\n if (hasCryptoSubscription == \"month\" && forPeriod == \"month\") {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\" && forPeriod == \"month\") {\n return (\"lower_period\");\n }\n } else if (\n hasCryptoSubscription &&\n hasSubscriptionPeriod &&\n isCanceled == false\n ) {\n if (hasSubscriptionPeriod == \"month\" && forPeriod == \"month\") {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\") {\n return (\"lower_period\");\n } else if (forPeriod == \"year\") {\n return (\"current_plan\");\n }\n }\n }\n } else if (forPlan == EFH_PLAN_ID) {\n if (efh) {\n if (hasSubscriptionPeriod == forPeriod) {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\") {\n return (\"lower_period\");\n }\n }\n }\n // Buying Traffic\n } else if (forPlan == ADDITIONAL_TRAFFIC_ID) {\n if (plan === CUSTOM4TB_PLAN_ID) {\n return (\"custom_subscription\");\n } else if (forPeriod === \"lifetime\" && !premiumlifetime) {\n return \"traffic_lifetime_restriction\";\n } else if (plan == FAMILY2TB_PLAN_ID || plan == FAMILY_CUSTOM_PLAN_ID) {\n return \"custom_subscription\";\n } else if (forPeriod !== \"lifetime\" && additionaltrafficlifetime) {\n return \"traffic_lifetime_restriction_subs\";\n } else if (forPeriod === \"month\" && hasSubscriptionPeriod == \"year\" && (!downgradeAllowed || lastsubscription.billingprovider === 11)) {\n return (\"traffic_downgrade_restriction\");\n } else if (additionaltraffic && !additionaltrafficlifetime && (forPeriod === \"month\" || forPeriod === \"year\") && planparams.additionaltraffic == trafficCount && forPeriod === hasSubscriptionPeriod) {\n return (\"current_plan\");\n } else if (additionaltrafficlifetime && forPeriod === \"lifetime\" && planparams.additionaltraffic == trafficCount) {\n return (\"current_plan\");\n } else if (additionaltraffic && planparams.additionaltraffic > trafficCount && ((forPeriod === hasSubscriptionPeriod && !downgradeAllowed) || (forPeriod === \"lifetime\" && additionaltrafficlifetime))) {\n return (\"traffic_lifetime_restriction_subs\");\n }\n // Buying Pass\n } else if (forPlan == PASS_PREMIUM_PLAN_ID) {\n if ((isfreetrialactive && forPeriod === \"trial\") || (islifetime && forPeriod === \"lifetime\" && passplan === 1)) {\n return (\"current_plan\");\n } else if (passmanagerdata && forPeriod === \"free\") {\n return (\"current_active_plan\");\n } else if (isfreetrialused && forPeriod === 'trial') {\n return \"plan_upgrade_restrictions\";\n } else if ((islifetime && forPeriod != \"lifetime\") || passplan === 2) {\n return (\"custom_subscription\");\n // } else if (!emailverified) {\n // return (\"verify_email\")\n } else if (lastsubscription && !isCanceled) {\n if (lastsubscription.planid) {\n let activePlanId = lastsubscription.planid;\n let activePlanPeriod = lastsubscription.period;\n if (activePlanId === forPlan) {\n if (activePlanPeriod === forPeriod) {\n return \"current_plan\";\n } else if (activePlanPeriod === 'month' && (forPeriod === 'trial' || forPeriod === 'free')) {\n return \"plan_upgrade_restrictions\";\n } else if (activePlanPeriod === 'year' && (forPeriod === 'trial' || forPeriod === 'free' || forPeriod === 'month')) {\n return \"plan_upgrade_restrictions\";\n }\n }\n\n } else if (lastsubscription.products) {\n let products = lastsubscription.products;\n let activePlanPeriod = lastsubscription.period;\n if (products.indexOf(PASS_PREMIUM_PLAN_ID) !== -1) {\n if (activePlanPeriod === forPeriod) {\n return \"current_plan\";\n } else if (activePlanPeriod === 'month' && (forPeriod === 'trial' || forPeriod === 'free')) {\n return \"plan_upgrade_restrictions\";\n } else if (activePlanPeriod === 'year' && (forPeriod === 'trial' || forPeriod === 'free' || forPeriod === 'month')) {\n return \"plan_upgrade_restrictions\";\n }\n }\n }\n } else if ((!lastsubscription || (lastsubscription && isCanceled)) && passplan == 1 && !isfreetrialactive) {\n if (islifetime || (!islifetime && forPeriod != \"lifetime\")) {\n return \"plan_upgrade_restrictions\";\n }\n }\n\n // Active Pass Lifetime plan = disable any other Pass Plans.\n if (!isfreetrialactive && (passplan === 1 || passplan === 2) && islifetime) {\n return \"plan_upgrade_restrictions\";\n }\n } else if (forPlan == PASS_FAMILY_PLAN_ID) {\n if (passplan === 2 && passFamily && !passFamily.owner) {\n return \"custom_subscription\";\n };\n\n if ((isfreetrialactive && forPeriod === \"trial\") || (islifetime && forPeriod === \"lifetime\" && passplan === 2)) {\n return \"current_plan\";\n }\n\n if (lastsubscription && !isCanceled) {\n let activePlanPeriod = lastsubscription.period;\n\n if (activePlanPeriod === 'year' && forPeriod === 'month') {\n return \"plan_upgrade_restrictions\";\n }\n\n if (lastsubscription.planid) {\n let activePlanId = lastsubscription.planid;\n\n if (activePlanId === forPlan && activePlanPeriod === forPeriod) {\n return \"current_plan\";\n }\n } else if (lastsubscription.products) {\n let products = lastsubscription.products;\n\n if (products.indexOf(forPlan) !== -1 && activePlanPeriod === forPeriod) {\n return \"current_plan\";\n }\n }\n }\n\n // Active Pass Lifetime plan = disable any other Pass Plans.\n if (!isfreetrialactive && (passplan === 1 || passplan === 2) && islifetime) {\n return \"plan_upgrade_restrictions\";\n }\n\n // Buying Storage\n } else {\n if (plan == PREMIUM_PLAN_ID || plan == PREMIUM_PLUS_PLAN_ID || plan == CUSTOM4TB_PLAN_ID) {\n if (premiumlifetime) {\n if (plan == CUSTOM4TB_PLAN_ID && typeof planparams != 'undefined' && planparams.storage > 1 && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n if ((incStorage == maxCustomStorageCount && (plan == PREMIUM_PLAN_ID || plan == CUSTOM4TB_PLAN_ID)) || (incStorage > maxCustomStorageCount && plan == PREMIUM_PLAN_ID)) {\n return (\"plan_upgrade_restrictions\");\n } else if (incStorage == 1 && !add500GBAllowed) {\n return ((plan == PREMIUM_PLUS_PLAN_ID || plan == CUSTOM4TB_PLAN_ID) ? \"plan_upgrade_restrictions\" : \"custom_plan_upgrade_restrictions\");\n }\n } else if (forPlan <= plan || forPlan == FAMILY2TB_PLAN_ID || forPlan == FAMILY_CUSTOM_PLAN_ID || (forPlan == CUSTOM_PLAN_ID && !canAddStorage)) {\n return (\"storage_lifetime\");\n }\n } else if (hasSubscriptionPeriod && isCanceled == false) {\n if (forPeriod == \"lifetime\") {\n if (forPlan < plan) {\n return (\"lower_plan\");\n }\n } else if (hasSubscriptionPeriod == \"month\") {\n if (forPeriod == \"month\") {\n if (forPlan < plan && !downgradeAllowed) {\n return (\"lower_plan\");\n } else if (forPlan == plan) {\n return (\"current_plan\");\n }\n } else if (\n (forPeriod == \"year\" && forPlan < plan) ||\n (forPlan < plan && premiumexpires)\n ) {\n return (\"lower_plan\");\n }\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\" && !downgradeAllowed) {\n return (\"lower_period\");\n } else {\n if (forPlan < plan && !downgradeAllowed) {\n return (\"lower_plan\");\n } else if (forPlan == plan) {\n if (!downgradeAllowed || hasSubscriptionPeriod == forPeriod) {\n return (\"current_plan\");\n }\n }\n }\n }\n } else if (isCanceled == false) {\n if (forPlan < plan) {\n return (\"lower_plan\");\n } else if (forPlan <= plan && premiumexpires) {\n let now = new Date();\n let expires = new Date(premiumexpires);\n //Get 1 day in milliseconds\n let oneDay = 1000 * 60 * 60 * 24;\n let daysLeft = Number(expires) - Number(now) / oneDay;\n\n let monthlyTabisActive = forPeriod === \"month\";\n let annualTabisActive = forPeriod === \"year\";\n\n if (daysLeft > 10 && (annualTabisActive || monthlyTabisActive)) {\n return (\"lower_period\");\n }\n }\n }\n } else if (plan == CUSTOM_PLAN_ID) {\n if (typeof planparams != 'undefined' && planparams.storage >= maxCustomStorageCount && forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (typeof planparams != 'undefined' && ((planparams.storage + incStorage) > maxCustomStorageCount) && forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n return (\"plan_upgrade_restrictions\");\n } else if (forPlan == CUSTOM_PLAN_ID && incStorage == 1 && !add500GBAllowed) {\n if (typeof planparams != 'undefined' && planparams.storage <= 3) {\n return (\"custom_plan_upgrade_restrictions\");\n } else {\n return (\"plan_upgrade_restrictions\");\n }\n } else if (forPlan < plan || (!canAddStorage && forPlan == CUSTOM_PLAN_ID)) {\n return (\"storage_lifetime\");\n } else if (forPeriod === \"year\" || forPeriod === \"month\") {\n return (\"storage_lifetime\");\n }\n } else if ((plan == FAMILY2TB_PLAN_ID || plan == FAMILY_CUSTOM_PLAN_ID) && forPlan !== FAMILY_CUSTOM_PLAN_ID) {\n return (\"family\");\n } else if (forPlan == FAMILY_CUSTOM_PLAN_ID || forPlan == FAMILY2TB_PLAN_ID) {\n if ((plan == FAMILY_CUSTOM_PLAN_ID || plan == FAMILY2TB_PLAN_ID) && family && !family.owner) {\n return \"family\";\n } else if (plan == FAMILY_CUSTOM_PLAN_ID && typeof planparams != 'undefined') {\n if (planparams.storage >= maxFamilyStorageCount && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (((planparams.storage + incStorage) > maxFamilyStorageCount) && canAddStorage) {\n return (\"plan_upgrade_restrictions\");\n }\n }\n } else {\n if (forPlan == CUSTOM_PLAN_ID && incStorage > maxCustomStorageCount) {\n return (\"plan_upgrade_restrictions\");\n }\n }\n }\n }\n }\n};\n\nexport const preventEnteringNumbers = (event) => {\n const key = event.which || event.keyCode || event.charCode;\n const pressedCharacter = String.fromCharCode(key);\n\n if (!(/[a-zA-Z '-]/).test(pressedCharacter)) {\n event.preventDefault();\n }\n}\n\ntype creditCardValidation = {\n name: string,\n range: string,\n valid_length: Array\n}\n\nexport const findCardType = (cardNumber: string): creditCardValidation => {\n const creditCardValidations = [\n {\n name: \"amex\",\n range: \"34, 37\",\n valid_length: [\"15\"]\n },\n {\n name: \"diners\",\n range: \"301, 302, 303, 304, 305, 36\",\n valid_length: [\"16\"]\n },\n {\n name: \"jcb\",\n range: \"352, 353, 354, 355, 356, 357, 358\",\n valid_length: [\"16\"]\n },\n {\n name: \"visa\",\n range: \"4\",\n valid_length: [\"19\", \"18\", \"17\", \"16\", \"15\", \"14\", \"13\"]\n },\n {\n name: \"mastercard\",\n range: \"50, 51, 52, 53, 54, 55, 222\",\n valid_length: [\"16\"]\n },\n {\n name: \"discover\",\n range: \"6011, 622, 644, 645, 646, 647, 648, 649\",\n valid_length: [\"16\"]\n }\n ];\n\n return creditCardValidations.find((cardTemplate: creditCardValidation): (creditCardValidation | false) => {\n let isThereAMatch = cardTemplate.range.split(\", \").some((range: string) => {\n const rangeLength = range.length;\n return range === cardNumber.slice(0, rangeLength);\n });\n return isThereAMatch;\n });\n}\n\nexport const getExpiryDatePeriod = (expiryDate: string, period: string): string => {\n const periods = {\n month: Number(expiryDate.split(\"/\")[0]),\n year: Number(expiryDate.split(\"/\")[1])\n }\n\n if (periods.year > 2000 && periods.year < 2100) {\n periods.year -= 2000;\n }\n\n return periods[period];\n}\n\nexport const validateExpiryDate = (expiryDate: string): boolean => {\n const month = getExpiryDatePeriod(expiryDate, \"month\");\n const year = getExpiryDatePeriod(expiryDate, \"year\");\n const currentYear = new Date().getFullYear() - 2000;\n const currentMonth = new Date().getMonth() + 1;\n\n const validateExpression =\n month <= 12 &&\n ((month > 0 && year > currentYear) || (month >= currentMonth && year == currentYear)) &&\n year <= 40;\n\n return validateExpression;\n};\n\n\nexport const getDeviceID = () => {\n if (!window.localStorage.getItem(\"deviceid\") && !rcookie(\"deviceid\")) {\n return rcookie(\"deviceid\");\n } else if (rcookie(\"deviceid\")) {\n if (window.localStorage.getItem(\"deviceid\")) {\n window.localStorage.removeItem(\"deviceid\");\n }\n return rcookie(\"deviceid\");\n } else if (window.localStorage.getItem(\"deviceid\")) {\n setcookie(\"deviceid\", window.localStorage.getItem(\"deviceid\"), 365);\n window.localStorage.removeItem(\"deviceid\");\n return rcookie(\"deviceid\");\n }\n};\n\nexport const getCurrency = ({ auth, callback = () => { } }: { auth: string, callback: () => void }) => {\n const params = {};\n let getCurrencyTries = 0;\n\n if (getCurrencyTries >= 5) {\n onSuccess(\"$\");\n return;\n }\n\n if (auth) {\n params[\"auth\"] = $.cookie(\"pcauth\");\n }\n\n if (rcookie(\"forcecurrency\")) {\n params[\"currency\"] = $.cookie(\"forcecurrency\");\n }\n\n if (rcookie(\"forcecountry\")) {\n params[\"country\"] = $.cookie(\"forcecountry\");\n }\n\n const onSuccess = (currency) => {\n if (typeof Storage !== \"undefined\" && currencyMap[currency]) {\n sessionStorage.setItem(\"pclCurrency\", currencyMap[currency]);\n }\n\n callback(currency);\n };\n\n const getCurrencyApiCall = () => {\n getCurrencyTries++;\n const onError = () => {\n setTimeout(() => {\n getCurrencyApiCall();\n }, 300);\n };\n\n pCloudGlobals.apiMethod && pCloudGlobals.apiMethod(\n \"getcurrency\",\n params,\n (data) => {\n if (data.currency) {\n onSuccess(data.currency);\n } else {\n onError();\n }\n },\n {\n errorCallback: onError\n }\n );\n };\n\n getCurrencyApiCall();\n};\n\nexport const areArraysEqual = (array1: Array, array2: Array): boolean => {\n if (!array1 || !array2) {\n return false;\n }\n\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (let index1 = 0; index1 < array1.length; index1++) {\n const e1 = array1[index1];\n const e2 = array2[index1];\n\n if (Array.isArray(e1) && Array.isArray(e2)) {\n compareArrays(e1, e2);\n } else if (e1 !== e2) {\n return false;\n }\n }\n\n return true;\n}\n\nexport const formatMS = (milliseconds: number, type: \"day\" | \"hour\" | \"minute\" | \"second\"): number => {\n const typeMap = {\n \"day\": { \"divider\": 86400000, \"modulo\": milliseconds + 1 },\n \"hour\": { \"divider\": 3600000, \"modulo\": 24 },\n \"minute\": { \"divider\": 60000, \"modulo\": 60 },\n \"second\": { \"divider\": 1000, \"modulo\": 60 }\n };\n\n if (!(type in typeMap)) {\n console.error(\"Invalid duration type: \" + type);\n\n return 0;\n }\n\n return parseInt((milliseconds / typeMap[type].divider) % typeMap[type].modulo);\n};\n\nexport const msToTime = (duration: number, showHours = true): string => {\n let seconds = parseInt((duration / 1000) % 60);\n let minutes = parseInt((duration / 60000) % 60);\n let hours = parseInt((duration / 3600000) % 24);\n\n hours = hours < 10 ? '0' + hours : hours;\n minutes = minutes < 10 ? '0' + minutes : minutes;\n seconds = seconds < 10 ? '0' + seconds : seconds;\n\n return (showHours ? hours + ':' : '') + minutes + ':' + seconds;\n};\n\nexport const cleanFloat = (number: number): number => {\n let value = Number(number);\n let decimal = value % 1 == 0 ? 0 : 2;\n let result = Number(value.toFixed(decimal));\n\n if (result % 1 == 0) {\n decimal = 0;\n }\n\n return Number(value.toFixed(decimal));\n};\n\nexport const browserVersion = (userAgent, regex) => {\n return userAgent.match(regex) ? userAgent.match(regex)[2] : null;\n}\n\nexport const detectBrowser = (version) => {\n const userAgent = navigator.userAgent;\n let browser = \"unkown\";\n // Detect browser name\n browser = (/ucbrowser/i).test(userAgent) ? 'UCBrowser' : browser;\n browser = (/edg/i).test(userAgent) ? 'Edge' : browser;\n browser = (/googlebot/i).test(userAgent) ? 'GoogleBot' : browser;\n browser = (/chromium/i).test(userAgent) ? 'Chromium' : browser;\n browser = (/firefox|fxios/i).test(userAgent) && !(/seamonkey/i).test(userAgent) ? 'Firefox' : browser;\n browser = (/; msie|trident/i).test(userAgent) && !(/ucbrowser/i).test(userAgent) ? 'IE' : browser;\n browser = (/chrome|crios/i).test(userAgent) && !(/opr|opera|chromium|edg|ucbrowser|googlebot/i).test(userAgent) ? 'Chrome' : browser;;\n browser = (/safari/i).test(userAgent) && !(/chromium|edg|ucbrowser|chrome|crios|opr|opera|fxios|firefox/i).test(userAgent) ? 'Safari' : browser;\n browser = (/opr|opera/i).test(userAgent) ? 'Opera' : browser;\n browser = navigator.brave ? \"Brave\" : browser;\n\n if (version) {\n switch (browser) {\n case 'UCBrowser': return `${browser}/${browserVersion(userAgent, /(ucbrowser)\\/([\\d\\.]+)/i)}`;\n case 'Edge': return `${browser}/${browserVersion(userAgent, /(edge|edga|edgios|edg)\\/([\\d\\.]+)/i)}`;\n case 'GoogleBot': return `${browser}/${browserVersion(userAgent, /(googlebot)\\/([\\d\\.]+)/i)}`;\n case 'Chromium': return `${browser}/${browserVersion(userAgent, /(chromium)\\/([\\d\\.]+)/i)}`;\n case 'Firefox': return `${browser}/${browserVersion(userAgent, /(firefox|fxios)\\/([\\d\\.]+)/i)}`;\n case 'Chrome': return `${browser}/${browserVersion(userAgent, /(chrome|crios)\\/([\\d\\.]+)/i)}`;\n case 'Safari': return `${browser}/${browserVersion(userAgent, /(safari)\\/([\\d\\.]+)/i)}`;\n case 'Opera': return `${browser}/${browserVersion(userAgent, /(opera|opr)\\/([\\d\\.]+)/i)}`;\n case 'IE': const version = browserVersion(userAgent, /(trident)\\/([\\d\\.]+)/i);\n // IE version is mapped using trident version \n // IE/8.0 = Trident/4.0, IE/9.0 = Trident/5.0\n return version ? `${browser}/${parseFloat(version) + 4.0}` : `${browser}/7.0`;\n default: return `unknown/0.0.0.0`;\n }\n }\n\n return browser;\n}\n\nexport const isValidEmailAddress = (email: string): boolean => {\n const pattern = new RegExp(/^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\t\".+\\\"))@((\\[[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 return pattern.test(email);\n};\n\nexport const apiCall = (method, params, onSuccess, onError, opts) => {\n const dfd = jQuery.Deferred();\n opts = {\n errorCallback: (data) => {\n dfd.reject(data);\n if (typeof onError === 'function') {\n onError(data);\n }\n },\n ...opts\n }\n\n pCloudGlobals.apiMethod(\n method,\n params,\n (data) => {\n if (typeof onSuccess === 'function') {\n onSuccess(data);\n }\n dfd.resolve(data);\n },\n opts\n );\n\n return dfd.promise();\n};\n\nexport const apiCallPost = (method, params, onSuccess, onError, opts) => {\n const dfd = jQuery.Deferred();\n opts = {\n type: \"POST\",\n errorCallback: (data) => {\n dfd.reject(data);\n if (typeof onError === 'function') {\n onError(data);\n }\n },\n ...opts\n }\n\n pCloudGlobals.apiMethod(\n method,\n params,\n (data) => {\n dfd.resolve(data);\n if (typeof onSuccess === 'function') {\n onSuccess(data);\n }\n },\n opts\n );\n\n return dfd.promise();\n};\n\nexport const detectIsMobile = () => {\n return /Mobile|mini|Fennec|Android|iP(od|hone)/.test(navigator.appVersion);\n};\n\nexport const onMouseOut = (event, callback) => {\n const e = event ? event : window.event;\n // If this is an autocomplete element.\n if (e.target && e.target.tagName && e.target.tagName.toLowerCase() == \"input\") {\n return;\n }\n\n // Get the current viewport width.\n const vpWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n // If the current mouse X position is within 50px of the right edge of the viewport, return.\n if (e.clientX >= (vpWidth - 50)) {\n return;\n }\n\n // If the current mouse Y position is not within 50px of the top edge of the viewport, return.\n if (e.clientY >= 50) {\n return;\n }\n\n // Fixes mozila problem where event is getting triggered on rigth click. -83 seems to be a constant value for clientY in that case.\n if (e.clientY === -83) {\n return;\n }\n\n // Reliable, works on mouse exiting window and user switching active program\n const from = e.relatedTarget || e.toElement;\n\n // User is exiting window\n if (!from && callback) {\n callback();\n }\n}\n\nexport const isInternetExplorer = () => {\n return !!document.documentMode;\n}\n\nexport const scrollToTop = () => {\n window.scrollTo(0);\n};\n\nexport const bytesToSize = (bytes) => {\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n if (bytes == 0) return null;\n const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n if (i == 0) return bytes + ' ' + sizes[i];\n return (bytes / Math.pow(1024, i)).toFixed(0) + ' ' + sizes[i];\n};\n\nexport const setTitleByCodeUrl = (codeUrl, setTitle, setRegisterTitle, setLoginTitle) => {\n if (codeUrl) {\n if (codeUrl == 'DROPBOX2PCLOUD') {\n setTitle('Special for Dropbox users - press submit and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'HUBIC2PCLOUD') {\n setTitle('Special for hubiC users - press submit and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'APPO') {\n setTitle('Special for\"APPO\" members - register now and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'BIRTHDAY4U') {\n setTitle(__(\"PromoPage_birthday_text\"));\n } else if (codeUrl == 'PCLOUDMUSIC') {\n setTitle(__(\"pCloud_Music_coupon_submit\").replace(\"%url_promo%\", codeUrl));\n setRegisterTitle(__(\"pCloud_Music_coupon_register\").replace(\"%url_promo%\", codeUrl));\n setLoginTitle(__(\"pCloud_Music_coupon_login\").replace(\"%url_promo%\", codeUrl));\n } else if (codeUrl == 'BDAY3MONTHS') {\n setTitle(__(\"pm_coupon_submit\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n setRegisterTitle(__(\"pm_coupon_register\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n setLoginTitle(__(\"pm_coupon_login\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n } else if (codeUrl == 'PM6MONTHS' || codeUrl == \"INT6MONTHS\"|| codeUrl == \"LFS6MONTHS\") {\n setTitle(__(\"pm_coupon_submit\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n setRegisterTitle(__(\"pm_coupon_register\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n setLoginTitle(__(\"pm_coupon_login\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n } else {\n setTitle(__(\"promo_submit_with_url\").replace(\"%url_promo%\", codeUrl));\n setRegisterTitle(__(\"Register for Free and enter your promo code. It will become effective immediately!\"));\n setLoginTitle(__(\"Enter your promo code upon Login and it will become effective immediately.\"));\n }\n }\n else {\n setTitle(__('Have a promo code? Enter it below.'));\n setRegisterTitle(__(\"Register for Free and enter your promo code. It will become effective immediately!\"));\n setLoginTitle(__(\"Enter your promo code upon Login and it will become effective immediately.\"));\n }\n};\n\nexport const getMonthsFromCode = (code) => {\n if (!code) {\n return \"\"\n };\n\n const indexPosition = code.indexOf(\"MONTHS\");\n let monthsCountIndex;\n\n if (indexPosition === -1) {\n return \"\";\n }\n\n if (indexPosition > 0) {\n monthsCountIndex = indexPosition - 1;\n } else {\n monthsCountIndex = indexPosition + 7;\n }\n\n if (!isNaN(code[monthsCountIndex])) {\n return code[monthsCountIndex]\n }\n\n return \"\";\n};\n\nexport const getLanguage = () => {\n return currentLang || $.cookie('set_lang') || $.cookie('lang') || 'en'\n}\n\nexport const countriesInEuropeList = {\n \"AT\": \"Austria\",\n \"BE\": \"Belgium\",\n \"BG\": \"Bulgaria\",\n \"HR\": \"Croatia\",\n \"CY\": \"Cyprus\",\n \"CZ\": \"Czech Republic\",\n \"DK\": \"Denmark\",\n \"EE\": \"Estonia\",\n \"FI\": \"Finland\",\n \"FR\": \"France\",\n \"DE\": \"Germany\",\n \"GR\": \"Greece\",\n \"HU\": \"Hungary\",\n \"IE\": \"Ireland\",\n \"IT\": \"Italy\",\n \"LV\": \"Latvia\",\n \"LT\": \"Lithuania\",\n \"LU\": \"Luxembourg\",\n \"MT\": \"Malta\",\n \"NL\": \"Netherlands\",\n \"PL\": \"Poland\",\n \"PT\": \"Portugal\",\n \"RO\": \"Romania\",\n \"SK\": \"Slovakia\",\n \"SI\": \"Slovenia\",\n \"ES\": \"Spain\",\n \"SE\": \"Sweden\",\n \"CH\": \"Switzerland\",\n \"GB\": \"United Kingdom\",\n \"AL\": \"Albania\",\n \"AD\": \"Andorra\",\n \"AM\": \"Armenia\",\n \"BY\": \"Belarus\",\n \"BA\": \"Bosnia and Herzegovina\",\n \"FO\": \"Faroe Islands\",\n \"GE\": \"Georgia\",\n \"GI\": \"Gibraltar\",\n \"IS\": \"Iceland\",\n \"IM\": \"Isle of Man\",\n \"XK\": \"Kosovo\",\n \"LI\": \"Liechtenstein\",\n \"MK\": \"Macedonia\",\n \"MD\": \"Moldova\",\n \"MC\": \"Monaco\",\n \"ME\": \"Montenegro\",\n \"NO\": \"Norway\",\n \"RU\": \"Russian Federation\",\n \"SM\": \"San Marino\",\n \"RS\": \"Serbia\",\n \"CH\": \"Switzerland\",\n \"TR\": \"Turkey\",\n \"UA\": \"Ukraine\",\n \"GB\": \"United Kingdom\",\n \"VA\": \"Vatican City State\"\n};\n\nexport const isCountryInEurope = (countryCodeToNameMap, country) => {\n return countryCodeToNameMap[country];\n};\n\nexport const encodeQueryData = (data) => {\n const ret = [];\n\n for (let d in data) {\n ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));\n }\n\n return ret.join('&');\n};\n\nexport const calculateDiscountPercent = (price, oldPrice) => Math.floor((1 - (price/oldPrice)) * 100);\n\nexport const convertDateToDDMMMYY = (date: string, shortMonthName = true, dayMonthSeparator = \" \", monthYearSeparator = \" \") => {\n const monthNames = [\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"may\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\"\n ];\n const dateObj = new Date(date);\n const day = dateObj.getDate();\n const month = monthNames[dateObj.getMonth()];\n const monthKey = \"month_\" + (!shortMonthName ? \"full_\" : \"\") + month;\n const year = dateObj.getFullYear();\n\n return day + dayMonthSeparator + __(monthKey) + monthYearSeparator + year;\n};\n\nexport const daysDiff = (dateTo: string, dateFrom: string = null) => {\n const dateFromObj = dateFrom !== null && dateFrom !== \"\" ? new Date(dateFrom) : new Date();\n const dateToObj = new Date(dateTo);\n\n // Change hours and minutes to be from the start of the day.\n dateFromObj.setHours(0,0,0,0);\n dateToObj.setHours(0,0,0,0);\n return (dateToObj.getTime() - dateFromObj.getTime() + ((dateFromObj.getTimezoneOffset() - dateToObj.getTimezoneOffset()) * 60 * 1000)) / (1000 * 3600 * 24);\n};","//@flow\n\nimport React, { useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport { Tooltip as ReactTooltip } from \"react-tooltip\";\n\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\nimport { ColorType } from \"../lib/types/dataTypes.components\";\n\ntype TabType = {\n tabId: string | number,\n tabTitle?: string,\n clickAction: (tabId: string | number) => void,\n disabled?: boolean,\n TabIcon?: any,\n tabIconActive?: any,\n tooltip?: string,\n testId?: string,\n tabAttributeId?: string\n};\n\ntype TabsProps = {\n color: ColorType,\n tabs: Array,\n activeTab: string | number,\n theme?: \"light\" | \"dark\",\n uppercase?: boolean,\n iconFill?: string,\n iconActiveFill?: string,\n};\n\nconst Tabs = ({ color, tabs, activeTab, theme, uppercase = true, iconFill = \"#2a2a2a\", iconActiveFill = \"#2a2a2a\" }: TabsProps) => {\n const tabsMap = {};\n const tabWidth = 100 / tabs.length;\n\n const renderTabs = () => {\n const tabsComponents = tabs.map(\n (tab, index) => {\n const { tabId, tabTitle, clickAction, disabled, TabIcon, tabIconActive, tooltip, testId = \"\", tabAttributeId = \"\" } = tab;\n tabsMap[tabId] = {index: index, tab: tab};\n const isActiveTab = tabId === activeTab;\n const renderTabIcon = () => {\n if (!TabIcon) {\n return null;\n }\n\n return (\n \n \n \n );\n };\n\n return (\n (!disabled ? clickAction(tabId) : null)}\n key={tabId}\n id={tabAttributeId}\n disabled={disabled}\n theme={theme}\n color={color}\n className={isActiveTab ? \"active tab-holder\" : \"tab-holder\"}\n uppercase={uppercase}\n tabTitle={tabTitle}\n data-testid={testId}\n activeFill={iconActiveFill}\n >\n {renderTabIcon()}\n {tabTitle ? tabTitle : null}\n \n );\n }\n );\n\n return tabsComponents;\n };\n\n return (\n \n {renderTabs()}\n \n \n \n );\n};\n\nexport default Tabs;\n\nconst TabsWrapper = styled.div`\n border-bottom: 1px solid #eee;\n border-color: ${({ theme }) => {\n if (theme === \"dark\") {\n return \"rgba(255,255,255,0.13)\";\n } else {\n return \"#eee\";\n }\n }};\n margin: 0 auto;\n margin-bottom: 20px;\n position: relative;\n\n .tabs-tooltip {\n padding: 10px 20px;\n max-width: 250px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n font-weight: 400;\n text-align: center;\n }\n`;\n\nconst Tab = styled.div`\n width: ${props => props.width || 50}%;\n display: inline-block;\n padding: ${props => (props.tabTitle ? \"0px 0px 12px 0px\" : \"0px\")};\n text-align: center;\n font-size: 13px;\n font-family: \"Roboto\", sans-serif;\n color: ${({ theme }) => {\n if (theme === \"dark\") {\n return \"#999999\";\n } else {\n return \"#222222\";\n }\n }};\n ${({ uppercase }) => (uppercase ? \"text-transform: uppercase\" : \"font-size: 15px\")};\n cursor: ${props => (props.disabled ? \"default\" : \"pointer\")};\n transition: all 0.25s ease-in-out;\n position: relative;\n\n &.active {\n font-weight: bold;\n cursor: default;\n color: ${({ theme, color }) => {\n if (theme === \"dark\" && color && COLORS[color]) {\n return COLORS[color].mainColor;\n } else {\n return \"#222222\";\n }\n }};\n }\n\n .tab-icon {\n transition: all 0.25s ease-in-out;\n\n &.active {\n fill: ${props => (props.activeFill)};\n }\n }\n\n ${props =>\n props.disabled\n ? `\n &::after {\n content: \"\";\n position: absolute;\n top: 0px;\n left: 0px;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n `\n : ``};\n\n @media (max-width: 768px) {\n padding: 0px 0px 20px 0px;\n }\n`;\n\nconst ActiveLine = styled.div`\n width: ${props => props.width || 50}%;\n position: absolute;\n bottom: -1px;\n height: 2px;\n background: ${props => (props.color ? COLORS[props.color].mainColor : \"#17bed0\")};\n transition: left 0.25s ease-in-out;\n left: ${props => props.tab * props.width}%;\n`;\n\nconst TabIconWrapper = styled.div`\n text-align: center;\n margin-bottom: 8px;\n`;\n","import styled, { keyframes } from \"styled-components\";\nimport { hiDPI } from \"polished\";\n\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\n\nconst spin = keyframes`\n 0% {\n transform:rotate(0deg);\n }\n 100% {\n transform:rotate(360deg);\n }\n`;\n\nconst fadein = keyframes`\n 0% {\n opacity: 0;\n display: block;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nconst fadeout = keyframes`\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n`;\n\nconst modalLoadingImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/modal_loading@2x.png' : 'images/modal_loading.png');\nexport const PaymentLoader = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n z-index: 3;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 1);\n\n &.fadein {\n animation-name: ${fadein};\n animation-duration: 10ms;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n }\n\n &.fadeout {\n animation-name: ${fadeout};\n animation-duration: 300ms;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n }\n\n &::after {\n content: \"\";\n animation-name: ${spin};\n animation-duration: 600ms;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n position: absolute;\n left: 50%;\n top: 50%;\n width: 64px;\n height: 64px;\n margin: -8px 0 0 -24px;\n z-index: 100;\n background-repeat: no-repeat;\n background-position: 0 0;\n background-color: transparent;\n background-image: url(${modalLoadingImg});\n background-size: cover;\n }\n`;\n\nconst Pulsate = keyframes`\n 0% {transform: scale(0.1, 0.1); opacity: 0;}\n 50% {opacity: 1;}\n 100% {\n -webkit-backface-visibility: hidden;\n -webkit-transform: translateZ(0) scale(1.2, 1.2);\n transform: translateZ(0);\n transform: scale(1.0, 1.0);\n opacity: 0;\n }\n`;\n\nexport const Loader = styled.div`\n position: absolute;\n width: 50px;\n height: 50px;\n top: 50%;\n left: 50%;\n margin: -25px 0 0 -25px;\n border: ${(props) =>\n COLORS[props.color]\n ? \"4px solid \" + COLORS[props.color].mainColor\n : \"4px solid \" + COLORS[\"cyan\"].mainColor};\n\n border-radius: 30px;\n animation: ${Pulsate} 1s ease-out;\n animation-iteration-count: infinite;\n opacity: 0;\n`;\n\nexport const SmallLoader = styled(Loader)`\n position: relative;\n width: 14px;\n height: 14px;\n top: 0;\n left: 0;\n margin: 0 auto;\n`;","export function onDocumentReady(func: Function) {\n if (document.readyState == \"complete\") {\n func();\n } else {\n $(window).on(\"load\", func);\n }\n}\n\nlet onSentSubscribeRequestResolve = null;\nconst onSentSubscribeRequest = new Promise((resolve, reject) => onSentSubscribeRequestResolve = resolve); \n\nconst subscriptions = {\n xhr: null,\n chkint: null,\n resetTo: null,\n resetTimeoutMilisec: 10000,\n subscribers: [],\n onSentSubscribeRequestResolve: onSentSubscribeRequestResolve,\n onSentSubscribeRequest: onSentSubscribeRequest,\n\n add: function (subscriber, instance) {\n console.log(\"Adding new subscriber: \", subscriber, instance);\n this.remove(subscriber);\n this.checkInstanceInterface(instance);\n\n var subs = { name: subscriber, state: 'preparing', instance: instance };\n this.subscribers.push(subs);\n return this;\n },\n\n checkInstanceInterface: function (instance) {\n var requiredMethods = ['getParams', 'handleEvents'];\n requiredMethods.forEach(function (method) {\n if (typeof instance[method] !== 'function') {\n throw Error(\"Instance must provide method: \", method);\n }\n });\n },\n\n remove: function (subscriber) {\n console.log(\"removing subscriber\", subscriber);\n\n var subs = this.subscribers;\n this.subscribers = subs.filter(function (sub) { return sub.name !== subscriber; });\n\n if (this.subscribers.length === 0) {\n console.log(\"zero subscribers\");\n this.abort();\n }\n },\n\n setState: function (subscriber, state) {\n var subs = this._getSubscriber(subscriber);\n\n if (subs === undefined) {\n console.log(subscriber);\n //console.trace();\n }\n\n subs.state = state;\n\n this.listen();\n //setTimeout(this.listen.bind(this), 0);\n\n return this;\n },\n\n _getSubscriber: function (subscriber) {\n return this.subscribers.filter(function (sub) { return sub.name == subscriber; })[0];\n },\n\n _getReady: function () {\n return this.subscribers.filter(function (sub) { return sub.state == 'ready'; });\n },\n\n reset: function() {\n this.abort();\n this.subscribers = [];\n },\n\n stop: function () {\n this.abort();\n },\n\n resume: function () {\n this.listen();\n },\n\n listen: function () {\n var self = this;\n var params = {};\n var subscribefor = [];\n var subsrdy = this._getReady();\n\n if (this.isRunning()) {\n this.abort();\n }\n if (subsrdy.length == 0) {\n return;\n }\n\n // waiting all subscribers to get ready\n if (subsrdy.length != this.subscribers.length) {\n return;\n }\n\n subsrdy.forEach(function (sub) {\n subscribefor.push(sub.name);\n params = $.extend(params, sub.instance.getParams());\n });\n\n params.subscribefor = subscribefor.join(',');\n params._t = $.now;\n\n console.log(subsrdy);\n console.log(\"running\", params);\n\n onDocumentReady(() => {\n this.xhr = pCloudGlobals.apiMethod('subscribe', params, function (ret) {\n if (self.chkint) {\n clearInterval(self.chkint);\n }\n\n console.log(\"receiving update: \", ret);\n\n self.setState(ret.from, 'processing');\n var sub = self._getSubscriber(ret.from);\n if (sub) {\n sub.instance.handleEvents(ret);\n }\n\n if (self.restartTo) {\n clearTimeout(self.restartTo);\n self.restartTo = null;\n }\n if (!sub) {\n self.restartTo = setTimeout(self.listen.bind(self), 100);\n }\n }, {\n timeout: 0,\n errorCallback: function(ret) {\n console.log(\"Subscription API Error\", ret);\n\n self.abort();\n },\n onXhrError: function(xhr, status, error) {\n console.log('subscribe rejected: ', arguments, xhr.status);\n\n if (self.resetTo)\n clearTimeout(self.resetTo);\n\n self.resetTo = setTimeout(self.listen.bind(self), self.resetTimeoutMilisec);\n self.resetTimeoutMilisec += Math.round(10 / 100 * self.resetTimeoutMilisec);\n }\n });\n this.onSentSubscribeRequestResolve();\n this.setCheck();\n });\n },\n setCheck: function () {\n var self = this;\n\n if (this.chkint) {\n clearInterval(this.chkint);\n this.chkint = null;\n }\n\n this.chkint = setInterval(function () {\n var xhr = self.xhr;\n if (xhr && xhr.readyState > 0 && xhr.readyState < 4) {\n } else if (xhr) {\n console.log('subscriptions: ', xhr.readyState)\n self.listen();\n }\n }, 3000);\n },\n isRunning: function () {\n return (this.xhr && this.xhr.readyState > 0 && this.xhr.readyState < 4);\n },\n abort: function () {\n if (this.xhr && typeof this.xhr.abort == 'function') {\n console.log('Aborting xhr...');\n try {\n this.xhr.abort();\n } catch(e) {};\n this.xhr = null;\n console.log('Done aborting');\n }\n\n if (this.restartTo) { // this restarts the listen after successfull listen\n clearTimeout(this.restartTo);\n this.restartTo = null;\n }\n if (this.resetTo) { // this resets the listen after killed/aborted listen\n clearTimeout(this.resetTo);\n this.resetTo = null;\n }\n if (this.chkint) { // this checks diff from time to time using interval (mainly for waking apps)\n clearInterval(this.chkint);\n this.chkint = null;\n }\n }\n}\n\nexport default subscriptions;\n","import subscriptions from \"./subscriptions\";\n\nlet authToken = false;\nlet listeners = [];\nlet isRunning = false;\nlet lastDiffId = -1;\nlet xhr;\nlet diffIsReadyResolve = null;\nlet diffIsReadyReject = null;\nconst setDiffIsReady = () => new Promise((resolve, reject) => {\n diffIsReadyResolve = resolve;\n diffIsReadyReject = reject;\n });\n\nlet diffIsReady = {promise: setDiffIsReady()};\nconst onDiffIsReady = () => diffIsReady.promise;\n\nconst diffInstance = {\n getParams: function() {\n return {\n diffid: lastDiffId,\n iconformat: \"id\",\n difflimit: 500,\n auth: authToken\n };\n },\n handleEvents: function(ret) {\n lastDiffId = ret.diffid;\n\n processDiffEvents(ret.entries);\n setTimeout(\n subscriptions.setState.bind(subscriptions, \"diff\", \"ready\"),\n ret.entries.length\n );\n }\n};\n\nfunction processDiffEvents(entries) {\n listeners.forEach(listener => listener(entries));\n}\n\nfunction listen(token, callback) {\n\n if (authToken !== token) {\n authToken = token;\n }\n\n if (typeof callback === \"function\") {\n listeners.push(callback);\n }\n\n start();\n\n return (skipStop) => {\n if (typeof callback !== \"function\") {\n return;\n }\n\n listeners.splice(listeners.indexOf(callback));\n\n console.log(\"removed diff listener\", `#${listeners.length}`);\n\n if (!listeners.length && !skipStop) {\n stop();\n }\n };\n}\n\nfunction start() {\n if (isRunning) {\n return;\n }\n\n isRunning = true;\n subscriptions.add(\"diff\", diffInstance);\n\n const onErrorDiffRequest = () => {\n isRunning = false;\n diffIsReadyReject();\n }\n\n xhr = pCloudGlobals.apiMethod(\"diff\", { last: 0, auth: authToken }, function(ret) {\n lastDiffId = ret.diffid;\n\n subscriptions.setState(\"diff\", \"ready\");\n \n subscriptions.onSentSubscribeRequest.then(() => {\n diffIsReadyResolve();\n });\n\n xhr = false;\n }, \n { \n errorCallback: onErrorDiffRequest,\n onXhrError: onErrorDiffRequest\n });\n}\n\nfunction stop() {\n if (xhr) {\n xhr.abort();\n }\n\n lastDiffId = -1;\n subscriptions.remove(\"diff\");\n isRunning = false;\n diffIsReady.promise = setDiffIsReady();\n}\n\nexport default { listen, stop, onDiffIsReady };","import React from \"react\";\nimport { sha256 } from \"js-sha256\";\n\nimport { __ } from \"./utils\";\nimport {\n STRIPE_PK,\n SAFECHARGE_MERCHANT_SITE_ID,\n SAFECHARGE_MERCHANT_ID,\n} from \"@pcloud/web-utilities/dist/config\";\nimport { signToCurrency } from \"@pcloud/web-utilities/dist/payments/constants.payments\";\nimport { rcookie, removeCyclic } from \"@pcloud/web-utilities/dist/lib/utils\";\nimport apiConfig from \"@pcloud/web-utilities/dist/api/config.api\";\nimport { EU_LOCATIONID, US_LOCATIONID } from \"@pcloud/web-utilities/dist/config/constants\";\n\nimport diffs from \"../lib/diffs\";\n\nimport VisaSVG from \"../svg/card-logo/visa.svg\";\nimport VisaV2SVG from \"../svg/card-logo/visa-v2.svg\";\nimport MasterCardSVG from \"../svg/card-logo/mastercard.svg\";\nimport MasterCardV2SVG from \"../svg/card-logo/mastercard-v2.svg\";\n// import MaestroSVG from \"../svg/card-logo/maestro.svg\";\nimport AmexCardSVG from \"../svg/card-logo/amex.svg\";\nimport AmexCardV2SVG from \"../svg/card-logo/amex-v2.svg\";\nimport DinersCardSVG from \"../svg/card-logo/diners.svg\";\nimport DinersCardV2SVG from \"../svg/card-logo/diners-v2.svg\";\nimport JCBSVG from \"../svg/card-logo/jcb.svg\";\nimport DiscoverSVG from \"../svg/card-logo/discover.svg\";\nimport DiscoverV2SVG from \"../svg/card-logo/discover-v2.svg\";\nimport PaypalSVG from \"../svg/paypal-logo.svg\";\nimport PaypalV2SVG from \"../svg/card-logo/paypal-logo-v2.svg\";\nimport DefaultCardSVG from \"../svg/card-logo/card-default.svg\";\nimport GooglePlaySVG from \"../svg/google-play.svg\";\nimport ItunesSVG from \"../svg/itunes.svg\";\nimport VivacomSVG from \"../svg/vivacom-logo.svg\";\nimport { loadSafecharge } from \"@pcloud/web-utilities/dist/payments/insertSafechargeForm\";\n\nconst paymentApiUrls = {};\npaymentApiUrls[EU_LOCATIONID] = \"eqapayments.pcloud.com\";\npaymentApiUrls[US_LOCATIONID] = \"qabraintree.pcloud.com\";\n\nexport const getPaymentsApiUrl = () => {\n return paymentApiUrls[apiConfig.locationid];\n};\n\nlet passedOpts;\nlet errorCallback;\n\nexport function SubscriptionUpdate({\n provider,\n period,\n discountcode,\n billingAddress,\n userAuth,\n products = [],\n traffic,\n storage,\n toggleLoader,\n showPaymentError,\n providerSourceId,\n newCC,\n authorizeCard,\n isBusinessTrial = false,\n downgrade = false,\n onBraintreeCreatePayment = () => {}\n}) {\n const apiMethods = {\n stripe: \"paystripe\",\n safecharge: \"paysafecharge\",\n paypal: isBusinessTrial ? \"subscription/createbusiness\" : \"purchase/create\",\n adyen: \"payadyen\"\n };\n\n this.method = apiMethods[provider];\n this.checkout = null;\n this.safeChargeCCToken = \"\";\n this.amountToPay = 1;\n this.userTokenId = \"\";\n this.orderid = null;\n this.metapixeleventid = null;\n\n this.paymentInfo = {\n auth: userAuth,\n products: products.join(\",\"),\n period,\n discountcode\n };\n\n if (traffic !== 0) {\n this.paymentInfo.traffic = traffic;\n }\n\n if (storage !== 0) {\n this.paymentInfo.storage = storage;\n }\n\n if (downgrade) {\n this.paymentInfo.isdowngrade = 1;\n }\n\n if (rcookie(\"_fbp\")) {\n this.paymentInfo.fbp = rcookie(\"_fbp\");\n }\n\n if (rcookie(\"_fbc\")) {\n this.paymentInfo.fbc = rcookie(\"_fbc\");\n }\n\n this.errors = {\n \"1120\": __(\"discount_error_1120\"),\n \"1126\": \"Invalid usage.\",\n \"1131\": \"Please provide ‘period’.\",\n \"2247\": __(\"discount_error_2247\"),\n \"2248\": __(\"discount_error_2248\"),\n \"2249\": __(\"discount_error_2249\"),\n \"2250\": __(\"discount_error_2250\"),\n \"2252\": __(\"discount_error_2252\"),\n \"2253\": __(\"discount_error_2253\"),\n \"2256\": \"You can’t use your own referral code.\",\n \"2257\": \"You already bought this lifetime product.\",\n \"2289\": \"This custom plan can’t be bought.\",\n \"1101\": \"Invalid request.\",\n \"1056\": __(\"payment_error_1056\"),\n \"2209\": __(\"payment_error_2209\"),\n \"2215\": __(\"payment_error_2215\"),\n \"2273\": __(\"payment_method_limit_reached\"),\n \"93107\": __(\"payment_error_93107\"),\n \"93109\": __(\"payment_error_93109\"),\n \"82901\": __(\"payment_error_82901\"),\n \"92910\": __(\"payment_error_92910\"),\n \"92911\": __(\"payment_error_92911\"),\n \"93108\": __(\"payment_error_93108\"),\n \"81901\": __(\"payment_error_81901\"),\n \"81905\": __(\"payment_error_81905\"),\n \"91609\": __(\"payment_error_91609\"),\n api_connection_error: __(\"stripe_api_connection_error\"),\n api_error: __(\"stripe_api_error\"),\n authentication_error: __(\"stripe_authentication_error\"),\n invalid_request_error: __(\"stripe_invalid_request_error\"),\n rate_limit_error: __(\"stripe_rate_limit_error\"),\n invalid_number: __(\"stripe_invalid_number\"),\n invalid_expiry_month: __(\"stripe_invalid_expiry_month\"),\n invalid_expiry_year: __(\"stripe_invalid_expiry_year\"),\n invalid_cvc: __(\"stripe_invalid_cvc\"),\n incorrect_number: __(\"stripe_incorrect_number\"),\n expired_card: __(\"stripe_expired_card\"),\n incorrect_cvc: __(\"stripe_incorrect_cvc\"),\n incorrect_zip: __(\"stripe_incorrect_zip\"),\n card_declined: __(\"stripe_card_declined\"),\n processing_error: __(\"stripe_processing_error,\"),\n missing: __(\"stripe_missing\"),\n // triggered by window.sfc.createPayment in errorDescription field\n incorrect_card_number: __(\"stripe_incorrect_number\"),\n xhr_error: __(\"payment_error_1056\")\n };\n\n this.handlePaymenterror = (data) => {\n const translated = this.errors[data.reasoncode] || this.errors[data.reason] || this.errors[data.result] || this.errors[data.error] || this.errors[data.code] || this.errors[data.errorDescription];\n let message;\n if (translated) {\n message = translated;\n } else {\n if (data.reason && data.reason.indexOf(\"TRANSID\") != -1) {\n message = __(\"payment_error_unhandled\");\n } else {\n message = data.reason || data.error || data.errorDescription || data.result || data.message;\n }\n\n if (message instanceof Object) {\n message = message.message || message.code\n }\n }\n \n toggleLoader(\"hide\");\n showPaymentError(message);\n };\n\n this.onPaymentSuccess = (res, opt) => {\n if (opt.callback && typeof opt.callback == \"function\") {\n opt.callback({...res, metapixeleventid: this.metapixeleventid}, () => {}, (data) => {\n this.handlePaymenterror(data);\n });\n } else {\n toggleLoader(\"hide\", \"success\");\n }\n };\n\n this.createCardData = (\n numberProp,\n expMonthProp,\n expYearProp,\n nameProp,\n cvcProp\n ) => {\n if (newCC) {\n const forCardData = {};\n forCardData[numberProp] = newCC.cardNumber;\n forCardData[expMonthProp] = newCC.expirationMonth;\n forCardData[expYearProp] = newCC.expirationYear;\n forCardData[nameProp] = newCC.cardHolderName;\n forCardData[cvcProp] = newCC.CVV;\n return forCardData;\n }\n };\n\n this.paymentApiCall = opt => {\n toggleLoader(\"show\");\n apiCall(\n this.method,\n this.paymentInfo,\n data => {\n if (data?.eventid) {\n this.metapixeleventid = data.eventid;\n }\n\n if (\n data.redirecturl || (data.action && data.action.type === \"redirect\")\n ) {\n window.showSafeChargeError = message => {\n this.onPaymentError(message);\n };\n } else {\n this.onPaymentSuccess(data, opt);\n }\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n };\n\n this.createStripePayment = ({ newpaymentmethod, paymentmethodid, paymentintentsecret }, opt) => {\n const stripe = Stripe('pk_test_rqxCBCYuPZVO5zmwMeD0yEvk');\n let params = {};\n const self = this;\n \n // if (newpaymentmethod) {\n // params = {\n // payment_method_data: {\n // card: { token: this.paymentInfo[\"token\"] },\n // billing_details: { name: newCC && newCC.cardHolderName }\n // },\n // save_payment_method: true,\n // setup_future_usage: \"off_session\"\n // }\t\n // } \n \n if (paymentmethodid) {\n params = {\n payment_method: paymentmethodid,\n setup_future_usage: \"off_session\"\n };\n } else {\n params = { \n payment_method: {card: { token: this.paymentInfo[\"token\"] }},\n setup_future_usage: \"off_session\"\n };\n }\n\n stripe.confirmCardPayment(paymentintentsecret, params)\n .then(function(result) {\n if (result?.paymentIntent && result?.paymentIntent?.id) {\n self.metapixeleventid = sha256(result.paymentIntent.id.toString());\n }\n\n if (result.error) {\n self.handlePaymenterror(result);\n } else {\n self.onPaymentSuccess(result, opt);\n }\n });\n }\n\n this.confirmStripeCard = ({ newpaymentmethod, paymentmethodid, clientsecret }, opt) => {\n const stripe = Stripe('pk_test_rqxCBCYuPZVO5zmwMeD0yEvk');\n const params = {\n payment_method: {\n card: { token: this.paymentInfo[\"token\"] }\n }\n }\t\n const self = this;\n \n if (paymentmethodid && !newCC) {\n params.payment_method = paymentmethodid;\n }\n\n stripe.confirmCardSetup(clientsecret, params)\n .then(function(result) {\n if (result?.setupIntent && result?.setupIntent?.id) {\n self.metapixeleventid = sha256(result.setupIntent.id.toString());\n }\n\n if (result?.error) {\n self.handlePaymenterror(result);\n } else if (opt.shoudUpdateDefaultSource) {\n self.updateStripeDefaultSource(result.setupIntent.payment_method, {\n refresh: false,\n callback: opt.callback\n });\n } else if (opt.paymentCallback) {\n opt.paymentCallback();\n } else {\n self.onPaymentSuccess(result, opt);\n }\n });\n }\n\n this.updateStripeSubscription = async(opt, skipModal) => {\n toggleLoader(\"show\");\n const self = this;\n\n // Wait for API to be ready to listen for user info change == successfully paid new plan.\n diffs.listen(userAuth);\n await diffs.onDiffIsReady().catch(err => console.error('Failed to create /subscribe request before payment.'));\n\n if (opt.changeCard) {\n self.paymentInfo.changecard = true;\n }\n\n if (opt.showPaymentConfirmationModal && !skipModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.updateStripeSubscription(opt, true);\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n\n return;\n }\n\n if (newCC) {\n this.setStripePaymentSource({\n paymentCallback: () => {\n delete self.paymentInfo.token;\n this.paymentApiCall({\n callback: (res) => {\n if (res.paymentintentsecret) {\n this.createStripePayment(res, opt);\n } else {\n opt.callback(res);\n }\n }\n });\n }\n });\n } else {\n this.paymentApiCall({\n callback: (res) => {\n if (res.paymentintentsecret) {\n this.createStripePayment(res, opt);\n } else {\n opt.callback(res);\n }\n }\n });\n }\n };\n\n this.updateStripeDefaultSource = (methodid, opt) => {\n toggleLoader(\"show\");\n\n apiCall(\n \"billing/stripe/setdefaultpaymentmethod\",\n { auth: userAuth, methodid: methodid },\n res => {\n this.onPaymentSuccess(res, opt);\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n };\n \n this.openSafechargeOrder = ({ successCallback }) => {\n if (pCloudGlobals && pCloudGlobals.apiMethod) {\n const openorderParams = authorizeCard ? {\n authorizecard: 1,\n auth: userAuth\n } : this.paymentInfo;\n\n pCloudGlobals.apiMethod('safecharge/openorder', openorderParams, data => {\n if (data.sessiontoken) {\n this.safeChargeCCToken = data.sessiontoken;\n this.userTokenId = data.usertokenid;\n this.amountToPay = data.amounttopay / 100;\n\n if (data.orderid) {\n this.orderid = data.orderid;\n }\n\n if (successCallback && typeof successCallback === \"function\") {\n successCallback(data);\n }\n }\n }, {\n errorCallback: (res) => {\n this.handlePaymenterror(res);\n },\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n })\n }\n }\n\n this.applySafechargeOrder = (opt) => {\n if (pCloudGlobals && pCloudGlobals.apiMethod) {\n pCloudGlobals.apiMethod('safecharge/applyorder', {\n auth: userAuth,\n orderid: this.orderid\n }, res => {\n // this.onPaymentSuccess(res, opt);\n opt.callback(res, () => {}, (data) => {\n this.handlePaymenterror(data);\n }, true);\n }, {\n errorCallback: (res) => {\n this.handlePaymenterror(res);\n toggleLoader(\"hide\");\n },\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n })\n }\n }\n\n this.callSafechargePayment = (opt) => {\n if (!this.safeChargeCCToken) {\n return;\n }\n const currency = sessionStorage.pclCurrency || '$';\n let billingAddressFormatted; \n \n if (billingAddress) {\n billingAddressFormatted = { ...billingAddress };\n billingAddressFormatted.country = billingAddressFormatted.country ? billingAddressFormatted.country.toUpperCase() : \"LU\";\n }\n\n const params = {\n sessionToken: this.safeChargeCCToken, //received from openOrder API \n userTokenId: this.userTokenId,\n merchantId: SAFECHARGE_MERCHANT_ID.replace('SC_TEST_MERCHANT_ID_', ''),\n merchantSiteId : SAFECHARGE_MERCHANT_SITE_ID.replace('SC_TEST_MERCHANT_ID_', ''),\n clientUniqueId: Date.now(),\n currency: signToCurrency[currency],\n amount: this.amountToPay,\n billingAddress: billingAddressFormatted,\n }\n if (newCC && SFCardNumber) {\n removeCyclic(SFCardNumber);\n params.paymentOption = SFCardNumber;\n params.cardHolderName = newCC.cardHolderName\n } else if (providerSourceId) {\n params.paymentOption = { userPaymentOptionId: providerSourceId };\n }\n \n // Safecharge don't call the new callback, but the fist one provided\n // this we updated the opts used in the original callback\n passedOpts = opt;\n errorCallback = this.handlePaymenterror;\n\n window.sfc.createPayment(params, res => {\n if (res?.transactionId) {\n this.metapixeleventid = sha256(res.transactionId.toString());\n };\n\n if (res.result === \"SUCCESS\" || res.result === \"APPROVED\") {\n this.onPaymentSuccess(res, passedOpts);\n } else {\n errorCallback(res);\n }\n });\n }\n\n this.initSafechargePayment = async(opt) => {\n const self = this;\n passedOpts = opt;\n\n const afterOpenOrder = (res) => {\n if (res.amounttopay === 0 && res.orderid && !newCC && typeof SFCardNumber === \"undefined\") {\n this.applySafechargeOrder(passedOpts);\n } else {\n if (window.sfc) {\n this.callSafechargePayment(passedOpts);\n } else {\n // Await for safecharge.js to be ready. Loaded inside insertSafechargeForm.js.\n loadSafecharge().then(() => {\n this.callSafechargePayment(passedOpts)\n });\n }\n }\n }\n\n toggleLoader(\"show\");\n\n // Wait for API to be ready to listen for user info change == successfully paid new plan.\n diffs.listen(userAuth);\n await diffs.onDiffIsReady().catch(err => console.error('Failed to create /subscribe request before payment.'));\n \n if (opt.showPaymentConfirmationModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.openSafechargeOrder({\n successCallback: (res) => afterOpenOrder(res),\n });\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n } else {\n self.openSafechargeOrder({\n successCallback: (res) => afterOpenOrder(res)\n });\n }\n };\n\n this.createBraintreePayment = async (opt, skipModal) => {\n const self = this;\n onBraintreeCreatePayment();\n \n if (opt.showPaymentConfirmationModal && !skipModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.createBraintreePayment(opt, true);\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n\n return;\n }\n\n toggleLoader(\"show\");\n\n // Wait for API to be ready to listen for user info change == successfully paid new plan.\n diffs.listen(userAuth);\n await diffs.onDiffIsReady().catch(err => console.error('Failed to create /subscribe request before payment.'));\n\n apiCall(\n this.method,\n this.paymentInfo,\n res => {\n if (self.checkout) {\n self.checkout.teardown(() => {\n self.checkout = null;\n })\n }\n\n if (res?.transactionid) {\n this.metapixeleventid = `${res.transactionid}-${apiConfig.locationid}`\n }\n this.onPaymentSuccess(res, opt);\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n apiServer: getPaymentsApiUrl(),\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n };\n\n this.initBrainTree = (token, opt) => {\n const self = this;\n\n braintree.client.create({\n authorization: token\n }, function (clientErr, clientInstance) {\n \n // Stop if there was a problem creating the client.\n // This could happen if there is a network error or if the authorization\n // is invalid.\n if (clientErr) {\n console.error('Error creating client:', clientErr);\n return;\n }\n \n // Create a PayPal Checkout component.\n braintree.paypalCheckout.create({\n client: clientInstance\n }, function (paypalCheckoutErr, paypalCheckoutInstance) {\n paypalCheckoutInstance.loadPayPalSDK({\n vault: true\n }, function () {\n paypal.Buttons({\n fundingSource: paypal.FUNDING.PAYPAL,\n style: {\n color: opt.color || 'blue',\n label: opt.label || ''\n },\n createBillingAgreement: function () {\n return paypalCheckoutInstance.createPayment({\n flow: 'vault', // Required\n });\n },\n \n onApprove: function (data, actions) {\n toggleLoader(\"show\");\n return paypalCheckoutInstance.tokenizePayment(data, function (err, payload) {\n if (payload.nonce) {\n self.paymentInfo[\"nonce\"] = payload.nonce;\n if (isBusinessTrial) {\n opt.callback({ nonce: payload.nonce })\n } else {\n self.createBraintreePayment(opt);\n }\n } else {\n showPaymentError(\n __(\n \"something_went_wrong_refresh_and_try_again\",\n \"Something went wrong. Refresh and try again.\"\n )\n );\n }\n // Submit `payload.nonce` to your server\n });\n },\n \n onCancel: function (data) {\n toggleLoader(\"hide\");\n },\n \n onError: function (err) {\n console.error('PayPal error', err);\n toggleLoader(\"hide\");\n }\n }).render('#paypal-button').then(function () {\n // The PayPal button will be rendered in an html element with the ID\n // `paypal-button`. This function will be called when the PayPal button\n // is set up and ready to be used\n if (opt.onReady) {\n opt.onReady();\n }\n });\n \n });\n });\n });\n };\n\n this.getTokenBraintree = (opt) => {\n // toggleLoader(\"show\");\n apiCall(\n \"./token/get\",\n {auth: userAuth},\n res => {\n this.initBrainTree(res.token, opt);\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n apiServer: getPaymentsApiUrl(),\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n };\n\n this.setupIntent = (token, { callback }) => {\n apiCall(\n \"billing/stripe/setupintent\",\n { auth: userAuth },\n res => {\n if (callback && typeof callback === \"function\") {\n if (res.setupIntent && res.setupIntent.payment_method) {\n this.paymentInfo.paymentmethodid = res.setupresult.setupIntent.payment_method;\n }\n callback(res);\n }\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n }\n\n this.setStripePaymentSource = (opt) => {\n toggleLoader(\"show\");\n const self = this;\n opt.shoudUpdateDefaultSource = typeof opt.shoudUpdateDefaultSource !== \"undefined\" ? opt.shoudUpdateDefaultSource : false;\n\n if (newCC) {\n Stripe.setPublishableKey(STRIPE_PK);\n const cardData = this.createCardData(\"number\", \"exp_month\", \"exp_year\", \"name\", \"cvc\");\n\n Stripe.card.createToken(cardData, (status, tokenInfo) => {\n if (status == 200) {\n self.paymentInfo[\"token\"] = tokenInfo.id;\n self.setupIntent(tokenInfo, {\n callback: (res) => {\n if (res.clientsecret) {\n self.confirmStripeCard(res, opt);\n } else {\n opt.callback(res);\n }\n }\n });\n } else {\n toggleLoader(\"hide\");\n self.handlePaymenterror(tokenInfo.error);\n }\n });\n }\n }\n\n this.createAlipayPayment = (opt, skipModal) => {\n toggleLoader(\"show\");\n this.paymentInfo.instrument = \"alipay\";\n const self = this;\n\n if (opt.showPaymentConfirmationModal && !skipModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.createAlipayPayment(opt, true);\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n\n return;\n }\n\n apiCall(\n \"paystripe\",\n self.paymentInfo,\n data => {\n const {paymentintentsecret} = data;\n const stripe = Stripe('pk_test_rqxCBCYuPZVO5zmwMeD0yEvk');\n stripe.confirmAlipayPayment(paymentintentsecret, {\n // Return URL where the customer should be redirected to after payment\n return_url: window.location.href,\n }).then((result) => {\n if (result.error) {\n self.handlePaymenterror(result);\n }\n });\n },\n ret => {\n self.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n }\n\n this.createWechatPayment = (opt, skipModal) => {\n toggleLoader(\"show\");\n this.paymentInfo.instrument = \"wechat\";\n const self = this;\n\n if (opt.showPaymentConfirmationModal && !skipModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.createWechatPayment(opt, true);\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n\n return;\n }\n\n apiCall(\n \"paystripe\",\n this.paymentInfo,\n data => {\n const {paymentintentsecret} = data;\n const stripe = Stripe('pk_test_rqxCBCYuPZVO5zmwMeD0yEvk');\n\n stripe.confirmWechatPayPayment(\n paymentintentsecret,\n {\n payment_method_options: {\n wechat_pay: {\n client: 'web',\n }\n }\n }, {\n handleActions: false\n }).then(({error, paymentIntent}) => {\n if (error) {\n this.handlePaymenterror(result);\n } else if (paymentIntent && paymentIntent.status === 'requires_action') {\n if (paymentIntent && paymentIntent.next_action) {\n opt.onNextAction(paymentIntent.next_action.wechat_pay_display_qr_code.image_url_png);\n }\n } \n })\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n }\n}\n\nexport const providers = {\n\t1: {name: 'iTunes', short_name: 'itunes', type: 'mobile'},\n\t2: {name: 'PayPal', short_name: 'paypal', type: 'paypal'}, // Old Paypal\n\t3: {name: 'Bitcoin', short_name: 'bitcoin', type: 'bitcoin'},\n\t4: {name: 'Authorize', short_name: 'authorize', type: 'authorize'},\n\t5: {name: 'Vivacom', short_name: 'vivacom', type: 'vivacom'},\n\t6: {name: 'Bank', short_name: 'bank', type: 'bank'},\n\t7: {name: 'PaymentWall', short_name: 'paymentwall', type: 'paymentwall'},\n\t8: {name: 'SEP', short_name: 'sep', type: 'sep'},\n\t9: {name: 'Stripe', short_name: 'stripe', type: 'ccard'},\n\t11: {name: 'PayPal', short_name: 'paypal', type: 'paypal'}, // BrainTree\n\t12: {name: 'Google Play', short_name: 'googleplay', type: 'mobile'},\n\t13: {name: 'SafeCharge', short_name: 'safecharge', type: 'ccard'},\n 15: {name: 'Vivacom', short_name: 'vivacom', type: 'vivacom'},\n 16: {name: 'Adyen', short_name: 'adyen', type: 'ccard'}\n};\n\nexport const internalProviders = [\n {id: 11, short_name: 'paypal'},\n {id: 9, short_name: 'stripe'},\n {id: 13, short_name: 'safecharge'},\n];\n\nexport const isInternalPaymentProvider = providerId => internalProviders.find((internalProvider) => internalProvider.id === providerId);\n\nexport const getPurchaseData = () => {\n\tif (typeof(Storage) === 'undefined' || typeof(localStorage) === 'undefined' || localStorage === null) {\n\t\treturn [];\n }\n \n const purchases = localStorage.getItem(\"purchases\");\n \n\tif (purchases) {\n\t\treturn JSON.parse(purchases);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexport const storePurchaseDataLocally = (purchaseData) => {\n\tif (typeof(Storage) === 'undefined' || typeof(localStorage) === 'undefined' || localStorage === null) {\n\t\treturn;\n }\n \n\tconst purchases = getPurchaseData();\n\n\tpurchases.push(purchaseData);\n\n\tlocalStorage.setItem(\"purchases\", JSON.stringify(purchases));\n}\n\nexport const getCreditCardInfo = (paymentSource) => {\n if (!paymentSource) {\n return null;\n }\n \n const paymentProvider = paymentSource.safecharge ? \"safecharge\" : (paymentSource.stripe ? \"stripe\" : null);\n \n if (paymentProvider === null) {\n return null;\n }\n\n const creditCardInfo = paymentSource[paymentProvider].sources && paymentSource[paymentProvider].sources.length > 0 && \n // Find default source\n paymentSource[paymentProvider].sources.find(pSource => pSource.isdefault) && \n // If no default is set -> use the last in the array.\n paymentSource[paymentProvider].sources[paymentSource[paymentProvider].sources.length - 1];\n\n return creditCardInfo;\n};\n\nexport const brandIcons = {\n visa: ,\n visa_v2: ,\n master_card: ,\n mastercard: ,\n mastercard_v2: ,\n // maestro: ,\n american_express: ,\n americanexpress: ,\n americanexpress_v2: ,\n dinersclub: ,\n diners_club: ,\n dinersclub_v2: ,\n discover: ,\n discover_v2: ,\n jcb: ,\n paypal: ,\n paypal_v2: ,\n default: ,\n googleplay: ,\n itunes: ,\n vivacom: \n};\n\nexport const renderBillingProviderOrPaymentSourceIcon = (paymentProvider, paymentSource = null) => {\n let brandIcon = brandIcons[\"default\"];\n if (paymentSource && (paymentProvider.short_name === \"safecharge\" || paymentProvider.short_name === \"stripe\")) {\n // Safecharge, paypal or stripe.\n const creditCardInfo = getCreditCardInfo(paymentSource);\n brandIcon = brandIcons[creditCardInfo && creditCardInfo.brand ? creditCardInfo.brand.toLowerCase() : \"default\"] || brandIcon;\n } else if (paymentProvider.short_name === \"paypal\") {\n brandIcon = brandIcons[\"paypal\"];\n } else {\n // For example vivacom, googleplay or itunes...\n brandIcon = brandIcons[paymentProvider.short_name] || brandIcon;\n }\n\n return brandIcon;\n};","import React from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport { hiDPI } from \"polished\";\n\nconst errorImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/attention@2x.png' : 'images/attention.png');\nexport const Error = styled.div`\n width: 100%;\n box-shadow: inset 3px 0 0 0 rgba(255, 115, 115, 0.1), inset -3px 0px 0 0 rgba(255, 115, 115, 0.1),\n inset 0px 3px 0 0 rgba(255, 115, 115, 0.1), inset 0px -3px 0 0 rgba(255, 115, 115, 0.1);\n border: solid 1px #ff7373;\n background-color: #fff4f4;\n background-image: url(${errorImg});\n background-repeat: no-repeat;\n background-size: 24px 22px;\n background-position: 20px center;\n font-family: \"Roboto\", sans-serif;\n font-size: 16px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.19;\n letter-spacing: normal;\n text-align: center;\n color: #ff2626;\n margin-bottom: 18px;\n box-sizing: border-box;\n padding: 20px 20px 20px 64px;\n`;\n\nconst slideRight = keyframes`\n 0% {\n opacity: 0;\n right: 2px;\n }\n\n 100% {\n opacity: 1;\n right: 9px;\n }\n`;\n\nconst CardIcon = styled.div`\n z-index: 2;\n width: 28px;\n height: 22px;\n background-position: center;\n background-repeat: no-repeat;\n background-size: contain;\n display: inline-block;\n position: absolute;\n top: 34px;\n right: 9px;\n animation-name: ${slideRight};\n animation-duration: 500ms;\n animation-timing-function: ease-in-out;\n animation-direction: alternate;\n animation-fill-mode: forwards;\n`;\n\nconst visaCardImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/checkout/input_cards/visa@2x.png' : 'images/plans/checkout/input_cards/visa.png');\nconst VisaCardIcon = styled(CardIcon)`\n background-image: url(${visaCardImg});\n`;\n\nconst masterCardImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/checkout/input_cards/mastercard@2x.png' : 'images/plans/checkout/input_cards/mastercard.png');\nconst MasterCardIcon = styled(CardIcon)`\n background-image: url(${masterCardImg});\n`;\n\nconst amexCardImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/checkout/input_cards/amex@2x.png' : 'images/plans/checkout/input_cards/amex.png');\nconst AmexCardIcon = styled(CardIcon)`\n background-image: url(${amexCardImg});\n`;\n\nconst dinersCardImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/checkout/input_cards/diners@2x.png' : 'images/plans/checkout/input_cards/diners.png');\nconst DinersCardIcon = styled(CardIcon)`\n background-image: url(${dinersCardImg});\n`;\n\nconst discoverCardImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/checkout/input_cards/discover@2x.png' : 'images/plans/checkout/input_cards/discover.png');\nconst DiscoverCardIcon = styled(CardIcon)`\n background-image: url(${discoverCardImg});\n`;\n\nconst jcbCardImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/checkout/input_cards/jcb@2x.png' : 'images/plans/checkout/input_cards/jcb.png');\nconst JCBCardIcon = styled(CardIcon)`\n background-image: url(${jcbCardImg});\n`;\n\nconst defaultCardImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/checkout/input_cards/no_card@2x.png' : 'images/plans/checkout/input_cards/no_card.png');\nconst DefaultCardIcon = styled(CardIcon)`\n background-image: url(${defaultCardImg});\n`;\n\nexport const cardIcons = {\n visa: ,\n master: ,\n mastercard: ,\n amex: ,\n americanexpress: ,\n diners: ,\n dinersclub: ,\n discover: ,\n jcb: ,\n default: \n};\n","//@flow\n\nimport React, { useState, useEffect } from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport { hiDPI } from \"polished\";\nimport { Tooltip as ReactTooltip } from \"react-tooltip\";\n\nimport { ColorType } from \"../../lib/types/dataTypes.components\";\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\n\nimport { __ } from \"../../lib/utils\";\nimport { ButtonWithIcon } from \"@pcloud/web-utilities/dist/resources/components/ButtonDefault\";\nimport { Error, cardIcons } from \"./SharedStyledComponents\";\nconst reactStringReplace = require('react-string-replace');\n\nexport type CreditCardFormTemplateProps = {\n cardNumber: string,\n cardType: string,\n expDate: string,\n CVC: string,\n holderName: string,\n validCardNumber: boolean,\n validExpDate: boolean,\n validCVC: boolean,\n validHolderName: boolean,\n errorMessage: string,\n paymentLoading: boolean,\n changeCard: boolean,\n handleCardNumberChange: (event: SyntheticInputEvent) => void,\n handleCardNumberKeyPress: (event: SyntheticInputEvent) => void,\n handleCardNumberPaste: (event: SyntheticInputEvent) => void,\n handleExpDateChange: (event: SyntheticInputEvent) => void,\n handleExpDateKeyUp: (event: SyntheticInputEvent) => void,\n handleCVCChange: (event: SyntheticInputEvent) => void,\n handleCVCKeyPress: (event: SyntheticInputEvent) => void,\n handleHolderNameChange: (event: SyntheticInputEvent) => void,\n handleHolderNameKeyPress: (event: SyntheticInputEvent) => void,\n handleSubmit: (event: SyntheticInputEvent) => void,\n handleCardChange: () => void,\n color?: ColorType,\n shouldRenderInputs?: boolean,\n shouldRenderHolderName?: boolean,\n buttonText?: string,\n showDisclaimer: boolean,\n theme?: string\n};\n\nconst CreditCardFormTemplate = ({\n cardNumber,\n validCardNumber,\n cardType,\n handleCardNumberChange,\n handleCardNumberKeyPress,\n handleCardNumberPaste,\n expDate,\n validExpDate,\n handleExpDateKeyUp,\n handleExpDateChange,\n CVC,\n validCVC,\n handleCVCChange,\n handleCVCKeyPress,\n holderName,\n validHolderName,\n handleHolderNameChange,\n handleHolderNameKeyPress,\n errorMessage,\n paymentLoading,\n handleSubmit,\n changeCard,\n handleCardChange,\n color,\n shouldRenderInputs = true,\n shouldRenderHolderName = true,\n buttonText,\n showDisclaimer=false,\n theme\n}: CreditCardFormTemplateProps) => {\n return (\n \n {errorMessage ? {errorMessage} : null}\n \n {__(\"card_number\", \"Card number\")}\n {changeCard ? (\n \n {__(\"undo_cart_change\", \"Undo change\")}\n \n ) : null}\n \n {shouldRenderInputs ? (\n \n \n {cardType ? cardIcons[cardType] : cardIcons[\"default\"]}\n \n ) : null}\n \n \n \n {__(\"expiration_date_short\", \"Exp. date\")}\n \n {shouldRenderInputs ? (\n \n ) : null}\n \n \n \n {__(\"CVC\", \"CVC\")}\n \n \n i\n \n \n \n \n {shouldRenderInputs ? (\n \n ) : null}\n \n \n \n {__(\"card_holder\", \"Cardholder name\")}\n \n \n \n \n \n \n \n {showDisclaimer ? (\n \n {reactStringReplace(__(\"store-card-disclaimer\"), /(%review%)/g, (match, i) => (\n {\n modalManager.open('PrivacyPolicy');\n }}>\n {__(\"store-card-review-link\")}\n \n ))}\n \n ) : null}\n \n {/* */}\n {__(\"secure_ssl_payment_short\")}\n \n \n );\n};\n\nexport default CreditCardFormTemplate;\n\nconst CardFormWrapper = styled.form``;\n\nconst InputWrapper = styled.div`\n margin-top: 12px;\n`;\n\nconst InputLabel = styled.label`\n display: inline-block;\n margin-bottom: 5px;\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 13px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.23;\n letter-spacing: normal;\n text-align: left;\n color: #999999;\n`;\n\nconst shake = keyframes`\n 10%, 90% {\n transform: translate3d(-1px, 0, 0);\n }\n \n 20%, 80% {\n transform: translate3d(2px, 0, 0);\n }\n\n 30%, 50%, 70% {\n transform: translate3d(-4px, 0, 0);\n }\n\n 40%, 60% {\n transform: translate3d(4px, 0, 0);\n }\n`;\n\nconst InputField = styled.div`\n width: 100%;\n height: 40px;\n padding: 11px 15px;\n box-sizing: border-box;\n border: 1px solid #cccccc;\n background-color: #ffffff;\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 15px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: normal;\n color: #444444;\n outline: none;\n\n &[data-invalid=true] {\n border: 1px solid #ff7373;\n animation-name: ${shake};\n animation-duration: 700ms;\n animation-delay: 500ms;\n animation-timing-function: ease-in-out;\n animation-direction: alternate;\n animation-fill-mode: forwards;\n }\n\n /* iframe {\n height: auto !important;\n } */\n\n input {\n width: 100%;\n border: none;\n outline: none;\n background: transparent;\n\n &::placeholder {\n color: #cccccc;\n opacity: 1;\n }\n }\n`;\n\nconst CardNumberWrapper = styled(InputWrapper)`\n position: relative;\n`;\n\nconst ExpDateWrapper = styled(InputWrapper)`\n display: inline-block;\n width: 48%;\n\n input {\n text-align: center;\n }\n`;\n\nconst CVCWrapper = styled(InputWrapper)`\n display: inline-block;\n width: 48%;\n float: right;\n position: relative;\n\n .tooltip {\n padding: 15px 20px;\n max-width: 200px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n font-weight: 400;\n /* font-family: \"Roboto\", sans-serif; */\n text-align: center;\n }\n\n input {\n text-align: center;\n }\n`;\n\nconst InfoIcon = styled.div`\n margin-left: auto;\n width: 16px;\n height: 16px;\n border-radius: 8px;\n background-color: ${({theme}) => (theme && theme === \"dark\") ? \"#444\" : \"#ccc\"};\n color: ${({theme}) => (theme && theme === \"dark\") ? \"#bcbcbc\" : \"#fff\"};\n font-size: 11px;\n font-weight: bold;\n line-height: 16px;\n text-align: center;\n cursor: pointer;\n transition: background 0.2s ease-in-out;\n position: absolute;\n right: 0px;\n top: 0px;\n\n &:hover {\n background-color: ${({theme}) => (theme && theme === \"dark\") ? \"#888\" : \"#aaa\"};\n }\n`;\n\nconst CardHolderWrapper = styled(InputWrapper)`\n clear: both;\n\n input {\n text-transform: uppercase;\n }\n`;\n\nconst ChangeCard = styled.div`\n float: right;\n font-size: 12px;\n color: ${props => COLORS[props.color] ? COLORS[props.color].mainColor : COLORS[\"cyan\"].mainColor };\n padding: 1px 0 0 0;\n /* font-family: \"Roboto\", sans-serif; */\n font-weight: bold;\n cursor: pointer;\n`;\n\nconst ButtonWrapper = styled.div`\n margin-top: 25px;\n`;\n\nconst SecureText = styled.div`\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 13px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n letter-spacing: normal;\n text-align: center;\n color: #999999;\n margin-top: 6px;\n`;\n\nconst DisclaimerText = styled(SecureText)`\n font-size: 10px;\n margin-top: 16px;\n`;\n\nconst secureIconImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/easter2020/secure@2x.png' : 'images/easter2020/secure.png');\nconst SecureIcon = styled.div`\n display: inline-block;\n width: 21px;\n height: 21px;\n background-repeat: no-repeat;\n background-size: 21px 21px;\n background-position: center;\n background-image: url(${secureIconImg});\n position: relative;\n top: 5px;\n margin-right: 10px;\n`;\n\nconst Link = styled.a`\n cursor: pointer;\n text-decoration: none;\n font-weight: bold;\n`;","//@flow\n\nimport React, { useState, useEffect } from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport { hiDPI } from \"polished\";\nimport { Tooltip as ReactTooltip } from \"react-tooltip\";\n\nimport { ColorType } from \"../../lib/types/dataTypes.components\";\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\nimport { __ } from \"../../lib/utils\";\nimport { ButtonWithIcon } from \"@pcloud/web-utilities/dist/resources/components/ButtonDefault\";\nimport { Error, cardIcons } from \"./SharedStyledComponents\";\nconst reactStringReplace = require('react-string-replace');\n\nexport type PrefilledCreditCardFormProps = {\n paymentLoading: boolean,\n userPaymentSource: Object,\n errorMessage: string,\n handleCardChange: () => void,\n handleSubmit: (event: SyntheticInputEvent) => void,\n color?: ColorType,\n buttonText?: string,\n showDisclaimer?: boolean,\n theme?: string\n};\n\nconst PrefilledCreditCardForm = ({\n paymentLoading,\n userPaymentSource,\n errorMessage,\n handleCardChange,\n handleSubmit,\n color,\n buttonText,\n showDisclaimer,\n theme\n}: PrefilledCreditCardFormProps) => {\n const { last4, brand, expmonth, expyear, name } = userPaymentSource;\n let brandLowerCase = brand ? brand.toLowerCase() : null;\n\n return (\n \n {errorMessage ? {errorMessage} : null}\n \n {__(\"card_number\", \"Card number\")}\n \n {__(\"change_card\", \"Change card?\")}\n \n \n {brandLowerCase ? cardIcons[brandLowerCase] : cardIcons[\"default\"]}\n \n \n {__(\"expiration_date_short\", \"Exp. date\")}\n \n \n \n {__(\"CVC\", \"CVC\")}\n \n \n i\n \n \n \n \n \n \n {__(\"card_holder\", \"Cardholder name\")}\n \n \n \n \n \n {showDisclaimer ? (\n \n {reactStringReplace(__(\"store-card-disclaimer\"), /(%review%)/g, (match, i) => (\n {\n modalManager.open('PrivacyPolicy');\n }}>\n {__(\"store-card-review-link\")}\n \n ))}\n \n ) : null}\n \n {/* */}\n {__(\"secure_ssl_payment_short\")}\n \n \n );\n};\n\nexport default PrefilledCreditCardForm;\n\nconst CardFormWrapper = styled.form``;\n\nconst InputWrapper = styled.div`\n margin-top: 12px;\n`;\n\nconst InputLabel = styled.label`\n display: inline-block;\n margin-bottom: 5px;\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 13px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.23;\n letter-spacing: normal;\n text-align: left;\n color: #999999;\n`;\n\nconst InputField = styled.input`\n width: 100%;\n height: 40px;\n padding: 15px;\n box-sizing: border-box;\n border: 1px solid #c7c7c7;\n background-color: #f1f1f1;\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 15px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: normal;\n color: #999999;\n`;\n\nconst CardNumberWrapper = styled(InputWrapper)`\n position: relative;\n`;\n\nconst ExpDateWrapper = styled(InputWrapper)`\n display: inline-block;\n width: 48%;\n\n input {\n text-align: center;\n }\n`;\n\nconst CVCWrapper = styled(InputWrapper)`\n display: inline-block;\n width: 48%;\n float: right;\n position: relative;\n\n .tooltip {\n padding: 15px 20px;\n max-width: 200px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n font-weight: 400;\n /* font-family: \"Roboto\", sans-serif; */\n text-align: center;\n }\n\n input {\n text-align: center;\n }\n`;\n\nconst InfoIcon = styled.div`\n margin-left: auto;\n width: 16px;\n height: 16px;\n border-radius: 8px;\n background-color: ${({theme}) => (theme && theme === \"dark\") ? \"#444\" : \"#ccc\"};\n color: ${({theme}) => (theme && theme === \"dark\") ? \"#bcbcbc\" : \"#fff\"};\n font-size: 11px;\n font-weight: bold;\n line-height: 16px;\n text-align: center;\n cursor: pointer;\n transition: background 0.2s ease-in-out;\n position: absolute;\n right: 0px;\n top: 0px;\n\n &:hover {\n background-color: ${({theme}) => (theme && theme === \"dark\") ? \"#888\" : \"#aaa\"};\n }\n`;\n\nconst CardHolderWrapper = styled(InputWrapper)`\n clear: both;\n\n input {\n text-transform: uppercase;\n }\n`;\n\nconst ButtonWrapper = styled.div`\n margin-top: 25px;\n`;\n\nconst ChangeCard = styled.div`\n float: right;\n font-size: 12px;\n color: ${props => COLORS[props.color] ? COLORS[props.color].mainColor : COLORS[\"cyan\"].mainColor };\n padding: 1px 0 0 0;\n /* font-family: \"Roboto\", sans-serif; */\n font-weight: bold;\n cursor: pointer;\n`;\n\nconst SecureText = styled.div`\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 13px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n letter-spacing: normal;\n text-align: center;\n color: #999999;\n margin-top: 6px;\n`;\n\nconst secureImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/easter2020/secure@2x.png' : 'images/easter2020/secure.png');\nconst SecureIcon = styled.div`\n display: inline-block;\n width: 21px;\n height: 21px;\n background-repeat: no-repeat;\n background-size: 21px 21px;\n background-position: center;\n background-image: url(${secureImg});\n position: relative;\n top: 5px;\n margin-right: 10px;\n`;\n\nconst DisclaimerText = styled(SecureText)`\n font-size: 10px;\n margin-top: 16px;\n`;\n\nconst Link = styled.a`\n cursor: pointer;\n text-decoration: none;\n font-weight: bold;\n`;\n","//@flow\n\nimport React, { useState, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\"\n\nimport { __, findCardType, rcookie } from \"../../lib/utils\";\n\nimport { SubscriptionUpdate } from \"../../lib/payments\";\nimport CreditCardFormTemplate from \"./CreditCardFormTemplate\";\nimport PrefilledCreditCardForm from \"./PrefilledCreditCardForm\";\n// import PaymentConfirmationModal from \"../Modals/PaymentConfirmationModal\";\nimport { PlanIDType, ColorType, Userinfo } from \"../../lib/types/dataTypes.components\";\nimport { insertSafechargeForm, loadSafecharge } from \"@pcloud/web-utilities/dist/payments/insertSafechargeForm\";\nimport { useSafeChargeInputsValidations } from \"../../lib/hooks/SafeChargeInputsValidations\";\nimport {\n preventSymbolsOnCCHolderName,\n formatExpDatetoMMYY,\n preventEnteringChars,\n getExpiryDatePeriod,\n validateExpiryDate\n} from \"@pcloud/web-utilities/dist/payments/utils.payments\";\n\nimport type { CreditCardFormTemplateProps } from \"./CreditCardFormTemplate\";\n\nimport { getUserTtrafficCount } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\nimport { ADDITIONAL_TRAFFIC_ID, CUSTOM4TB_PLAN_ID } from \"@pcloud/web-utilities/dist/plans/constants.plans\";\nimport { SAFECHARGE_PAYMENT_PROVIDER, STRIPE_PAYMENT_PROVIDER } from \"@pcloud/web-utilities/dist/payments/constants.payments\";\n\ntype CreditCardBoxType = {\n auth: string,\n user: Userinfo,\n userId: string,\n planId: PlanIDType | Array,\n period: \"month\" | \"year\" | \"lifetime\",\n provider: \"safecharge\" | \"stripe\",\n billingAddress: {\n email: string,\n country: string\n },\n RenderForm: (props: CreditCardFormTemplateProps) => React$Element,\n afterPaymentActions: () => void,\n RenderPrefilledForm?: ({\n paymentLoading: boolean,\n userPaymentSource: Object,\n handleCardChange: () => void,\n handleSubmit: (event: SyntheticInputEvent) => void\n }) => React$Element,\n userPaymentSource?: Object,\n discount?: string,\n color?: ColorType,\n isBusinessTrial?: boolean,\n buttonText?: string,\n onPaymentProcessing?: () => void,\n afterPaymentProcessing?: () => void,\n showDisclaimer?: boolean,\n getCurrentStorageCount: () => number,\n payButtonRef: any,\n payButtonClicked: boolean,\n disabledButton?: boolean,\n setDisabledButton: (disabled: boolean) => void,\n setDisabledPlanOptions: (disabled: boolean) => void,\n checkCurrentSubscription: () => void,\n theme?: string,\n traffic: string | number,\n isIE?: boolean,\n onPaymentErrorMessageChange: (newErrorMessage: string) => void,\n downgrade?: boolean,\n};\n\nlet isLoading = false;\n\nconst CreditCardBox = ({\n auth,\n user = null,// Business accounts doesn't pass this param. \n userId,\n planId = [],\n period,\n discount,\n provider,\n billingAddress,\n RenderForm = CreditCardFormTemplate,\n afterPaymentActions,\n RenderPrefilledForm = PrefilledCreditCardForm,\n userPaymentSource,\n color = \"cyan\",\n isBusinessTrial = false,\n buttonText = __(\"checkout_right_btn\"),\n onPaymentProcessing = () => {},\n afterPaymentProcessing = () => {},\n showDisclaimer,\n payButtonRef,\n payButtonClicked,\n disabledButton = false,\n setDisabledButton = () => {},\n setDisabledPlanOptions = () => {},\n checkCurrentSubscription = () => {},\n theme,\n traffic,\n isIE,\n subscribeForUserInfoChange = () => {},\n abbortUserInfoChangeSubscribe = () => {},\n stopUserDiff = () => {},\n onPaymentErrorMessageChange = (newErrorMessage) => null,\n downgrade = false\n}: CreditCardBoxType) => {\n const [cardNumber, setCardNumber] = useState(\"\");\n const [cardNumberLength, setCardNumberLength] = useState(16);\n const [cardType, setCardType] = useState(\"default\");\n const [expDate, setExpDate] = useState(\"\");\n const [CVC, setCVC] = useState(\"\");\n const [holderName, setHolderName] = useState(\"\");\n\n const [validCardNumber, setValidCardNumber] = useState(true);\n const [validExpDate, setValidExpDate] = useState(true);\n const [validCVC, setValidCVC] = useState(true);\n const [validHolderName, setValidHolderName] = useState(true);\n const [errorMessage, setErrorMessage] = useState(\"\");\n\n const [paymentLoading, setPaymentLoading] = useState(false);\n const [changeCard, setChangeCard] = useState(false);\n const [safechargeFormInserted, setSafechargeFormInserted] = useState(false);\n const [showConfirmationModal, setShowConfirmationModal] = useState(false);\n const [disableErrorAnimation, setDisableErrorAnimation] = useState(true);\n\n const getHolderNameFormatted = (holderName) => holderName.replace(/\\s+/g, \"\");\n\n const validateHolderName = (holderName) => {\n const holderNameFormated = getHolderNameFormatted(holderName);\n return !(!holderNameFormated || holderNameFormated.length < 3);\n };\n\n const { holderNameRef, onSafechargeFieldsCreated, validateSafeChargeInputs } = useSafeChargeInputsValidations({\n provider,\n changeCard,\n validateHolderName,\n setDisableErrorAnimation,\n setValidCardNumber, setValidExpDate, setValidCVC, setValidHolderName,\n holderName, getHolderNameFormatted\n });\n\n useEffect(() => {\n onPaymentErrorMessageChange(errorMessage);\n }, [errorMessage]);\n\n useEffect(() => {\n if (payButtonClicked) {\n handleSubmit();\n }\n }, [payButtonClicked]); //[payButtonClicked]\n\n useEffect(() => {\n setDisabledButton(paymentLoading);\n setDisabledPlanOptions(paymentLoading);\n }, [paymentLoading]); //[paymentLoading]\n\n useEffect(() => {\n if (isIE && !disabledButton) {\n setDisabledButton(true);\n }\n }, [isIE, disabledButton]);\n\n useEffect(() => {\n if (provider === SAFECHARGE_PAYMENT_PROVIDER && !isIE) {\n if (!safechargeFormInserted && (!userPaymentSource || (userPaymentSource && changeCard))) {\n const SFFieldsParams = {};\n const language = rcookie(\"lang\") || rcookie(\"set_lang\");\n \n if (language) {\n SFFieldsParams.language = language;\n }\n \n if (typeof ScFieldStyles !== \"undefined\") {\n SFFieldsParams.ScFieldStyles = ScFieldStyles;\n }\n \n SFFieldsParams.callback = onSafechargeFieldsCreated;\n \n insertSafechargeForm(SFFieldsParams);\n setSafechargeFormInserted(true);\n setDisableErrorAnimation(true);\n } else if (userPaymentSource && !changeCard) {\n // Preload the safecharge scripts to be ready before user clicks on \"Change card\"\n loadSafecharge();\n }\n }\n }, [changeCard, provider]); //changeCard, provider\n\n const handleCardNumberChange = (event: SyntheticInputEvent) => {\n let value = event.target.value;\n let newCardType;\n\n if (value.length <= 4 && value.length > 0) {\n newCardType = findCardType(value);\n } else if (value.length == 0) {\n setCardType(\"default\");\n setCardNumberLength(16);\n }\n\n if (newCardType && cardType != newCardType.name) {\n setCardType(newCardType.name);\n setCardNumberLength(newCardType.valid_length[0]);\n }\n\n if (value.length - cardNumber.length <= 1) {\n setCardNumber(value);\n }\n };\n\n const handleExpDateChange = (event: SyntheticInputEvent) => {\n let value = event.target.value;\n if (value.length > expDate.length) {\n setExpDate(formatExpDatetoMMYY(value));\n } else {\n setExpDate(value);\n }\n };\n\n const handleCVCChange = (event: SyntheticInputEvent) => {\n let value = event.target.value;\n setCVC(value);\n };\n\n const handleCVCKeyPress = (event: SyntheticInputEvent) => {\n preventEnteringChars(event);\n };\n\n const handleHolderNameChange = (event: SyntheticInputEvent) => {\n let value = event.target.value.toUpperCase();\n setHolderName(value);\n };\n\n const handleCardNumberKeyPress = (event: SyntheticInputEvent) => {\n preventEnteringChars(event);\n formatCardNumberOnKeyPress(event);\n };\n\n const handleExpDateKeyUp = (event: SyntheticInputEvent) => {\n formatExpDate(event);\n };\n\n const handleHolderNameKeyPress = (event: SyntheticInputEvent) => {\n preventSymbolsOnCCHolderName(event);\n };\n\n const checkIfInputValueIsSelected = (input: HTMLInputElement) => {\n if (typeof input.selectionStart !== \"number\" || typeof input.selectionEnd !== \"number\") {\n return false;\n }\n\n return input.selectionStart !== input.selectionEnd;\n }\n\n const formatCardNumberOnKeyPress = (event: SyntheticInputEvent) => {\n let value = event.target.value;\n let formatedValue = value.replace(/\\s+/g, \"\");\n const valueIsSelected = checkIfInputValueIsSelected(event.target);\n\n if (valueIsSelected) {\n // Value will be replaced with another number.\n // Check if selected value is single space\n if ((event.target.selectionEnd - event.target.selectionStart === 1) && \n event.target.value.substr(event.target.selectionStart, 1) === \" \") {\n const key = event.which || event.keyCode || event.charCode;\n const pressedCharacter = String.fromCharCode(key);\n // Disable typing number in the selected space when we've reached the max numbers length.\n if (pressedCharacter !== \" \" && formatedValue.length > cardNumberLength - 1) {\n event.preventDefault();\n }\n }\n\n return;\n }\n\n if (formatedValue.length > cardNumberLength - 1) {\n event.preventDefault();\n return;\n }\n\n if (cardType === \"amex\" && formatedValue) {\n if (formatedValue.length === 4 || formatedValue.length === 10) {\n value += \" \";\n setCardNumber(value);\n }\n } else if (formatedValue && formatedValue.length % 4 === 0) {\n value += \" \";\n setCardNumber(value);\n }\n };\n\n const formatCardNumberOnPaste = (event: SyntheticInputEvent) => {\n let paste = (event.clipboardData || window.clipboardData).getData(\"text\");\n let formattedNumberSubs = [];\n paste = paste.replace(/\\D/g, \"\");\n\n if (paste) {\n let newCardType = findCardType(paste);\n let validCardLength;\n\n if (newCardType) {\n setCardType(newCardType.name);\n validCardLength = newCardType.valid_length[0];\n paste = paste.slice(0, validCardLength);\n\n if (newCardType.name === \"amex\") {\n formattedNumberSubs.push(paste.slice(0, 4));\n formattedNumberSubs.push(paste.slice(4, 10));\n formattedNumberSubs.push(paste.slice(10));\n } else {\n formattedNumberSubs = paste.match(/.{1,4}/g);\n }\n } else {\n setCardType(\"default\");\n setCardNumberLength(16);\n formattedNumberSubs = paste.match(/.{1,4}/g);\n }\n\n let formattedNumber = formattedNumberSubs.join(\" \");\n\n setCardNumber(formattedNumber);\n }\n };\n\n const formatExpDate = (event: SyntheticInputEvent) => {\n const code = event.keyCode;\n const allowedKeys = [8];\n\n if (allowedKeys.indexOf(code) !== -1) {\n event.preventDefault();\n return;\n }\n\n let value = expDate;\n\n setExpDate(formatExpDatetoMMYY(value));\n };\n\n const validateCreditCardInputs = (callbackOnValidInputs = () => null) => {\n let validExpDateTemp = false;\n let validCardNumberTemp = false;\n let validHolderNameTemp = false;\n let validCVCTemp = false;\n let validInputs = false;\n let filledInputs = false;\n\n const cvcFormated = CVC && CVC.replace(/\\s+/g, \"\");\n\n if (provider === STRIPE_PAYMENT_PROVIDER) {\n validExpDateTemp = validateExpiryDate(expDate);\n validCardNumberTemp = !(!cardNumber || cardNumber.length < 12);\n validHolderNameTemp = validateHolderName(holderName);\n validCVCTemp = !(!cvcFormated || cvcFormated.length < 3);\n filledInputs = cardNumber && expDate && getHolderNameFormatted(holderName) && cvcFormated;\n } else if (provider === SAFECHARGE_PAYMENT_PROVIDER) {\n const validationsRes = validateSafeChargeInputs();\n validCardNumberTemp = validationsRes.validCardNumber;\n validHolderNameTemp = validationsRes.validHolderName;\n validCVCTemp = validationsRes.validCVC;\n validExpDateTemp = validationsRes.validExpDate;\n filledInputs = validationsRes.filledInputs;\n }\n\n setValidExpDate(validExpDateTemp);\n setValidCardNumber(validCardNumberTemp);\n setValidHolderName(validHolderNameTemp);\n setValidCVC(validCVCTemp);\n\n validInputs = validExpDateTemp && validCardNumberTemp && validHolderNameTemp && validCVCTemp;\n\n if (validInputs && filledInputs) {\n if (callbackOnValidInputs && typeof callbackOnValidInputs == \"function\") {\n callbackOnValidInputs();\n }\n\n return true;\n }\n\n setPaymentErrorMessageOnInvalidInputs({filledInputs, validExpDateTemp, validCardNumberTemp, validHolderNameTemp, validCVCTemp});\n return false;\n };\n\n const setPaymentErrorMessageOnInvalidInputs = ({filledInputs, validExpDateTemp, validCardNumberTemp, validHolderNameTemp, validCVCTemp}) => {\n\n // We don't use setErrorMessage() here, because the older UI doesn't need to show any error message here.\n // After we changed the checkout page we need to show this error by using onPaymentErrorMessageChange\n if (!filledInputs) {\n onPaymentErrorMessageChange(__(\"missing_credit_card_details_error\", \"Please provide all card details.\"));\n return;\n }\n\n const invalidFields = [\n {name: \"expDate\" , value: validExpDateTemp}, \n {name: \"cardNumber\", value: validCardNumberTemp}, \n {name: \"holderName\", value: validHolderNameTemp}, \n {name: \"cvc\", value: validCVCTemp}\n ].filter(({value}) => !value);\n \n if (invalidFields.length > 1) {\n onPaymentErrorMessageChange(__(\"invalid_credit_card_details_error\", \"Invalid card details.\"));\n return;\n }\n\n switch(invalidFields[0].name) {\n case \"expDate\":\n onPaymentErrorMessageChange(__(\"invalid_exp_date_error\", \"Invalid card expiration date.\"));\n break;\n case \"cardNumber\":\n onPaymentErrorMessageChange(__(\"invalid_card_number_error\", \"Invalid card number.\"));\n break;\n case \"holderName\":\n onPaymentErrorMessageChange(__(\"invalid_holder_name_error\", \"Invalid card holder name.\"));\n break;\n case \"cvc\":\n onPaymentErrorMessageChange(__(\"invalid_cvc_error\", \"Invalid card security code.\"));\n break;\n }\n };\n\n const handleCardChange = () => {\n setErrorMessage(\"\");\n setChangeCard(!changeCard);\n\n if (provider === \"safecharge\" && changeCard) {\n setSafechargeFormInserted(false);\n }\n };\n\n const togglePaymentLoader = (action: \"show\" | \"hide\") => {\n isLoading = action === \"show\";\n setPaymentLoading(action === \"show\");\n isLoading ? onPaymentProcessing() : afterPaymentProcessing();\n };\n\n const showBadInput = (inputName: \"card_number\" | \"exp_date\" | \"cvc\") => {\n if (inputName === \"card_number\") {\n setValidCardNumber(false);\n }\n\n if (inputName == \"exp_date\") {\n setValidExpDate(false);\n }\n if (inputName == \"cvc\") {\n setValidHolderName(false);\n }\n };\n\n const showPaymentError = message => {\n setErrorMessage(message);\n togglePaymentLoader(\"hide\");\n abbortUserInfoChangeSubscribe();\n stopUserDiff();\n };\n\n const handlePaymentSuccess = (res, successCallback, errorCallback, skipApiUpdate) => {\n isLoading = false;\n afterPaymentActions(res, successCallback, errorCallback, skipApiUpdate);\n };\n\n const handleSubmit = (event: SyntheticInputEvent) => {\n if (event) {\n event.preventDefault();\n }\n\n setErrorMessage(\"\");\n\n if (paymentLoading) {\n return;\n }\n\n setErrorMessage(\"\");\n \n const params = {\n provider: provider,\n period: period,\n userAuth: auth,\n userId: userId,\n products: planId,\n billingAddress: billingAddress,\n traffic: planId.indexOf(ADDITIONAL_TRAFFIC_ID) !== -1 ? (parseInt(traffic) || (user && getUserTtrafficCount(user, true)) || 0) : 0,\n downgrade: downgrade,\n toggleLoader: togglePaymentLoader,\n showPaymentError,\n showBadInput\n };\n\n if (user?.lastsubscription?.status === \"active\" && user.lastsubscription?.products.indexOf(CUSTOM4TB_PLAN_ID) !== -1 && period !== \"lifetime\") {\n if (user?.planparams?.traffic) {\n params.traffic += user.planparams.traffic\n }\n\n if (user?.planparams?.storage) {\n params.storage = user.planparams.storage\n }\n }\n\n if (discount) {\n params.discountcode = discount;\n }\n\n if (userPaymentSource && !changeCard) {\n if (isLoading) {\n return;\n }\n isLoading = true;\n // business register with saved card\n if (isBusinessTrial) {\n togglePaymentLoader(\"show\");\n handlePaymentSuccess();\n return;\n }\n\n if (userPaymentSource && userPaymentSource.providersourceid) {\n params.providerSourceId = userPaymentSource.providersourceid;\n }\n\n let payments = new SubscriptionUpdate(params);\n\n togglePaymentLoader(\"show\");\n if (provider === \"safecharge\") {\n payments.initSafechargePayment({\n refresh: false,\n callback: handlePaymentSuccess,\n showPaymentConfirmationModal: checkCurrentSubscription(),\n handlePaymentConfirmationCancle: handleModalClose\n });\n } else if (provider === STRIPE_PAYMENT_PROVIDER) {\n payments.updateStripeSubscription({\n refresh: false,\n callback: handlePaymentSuccess,\n showPaymentConfirmationModal: checkCurrentSubscription(),\n handlePaymentConfirmationCancle: handleModalClose\n });\n }\n\n subscribeForUserInfoChange();\n } else {\n setDisableErrorAnimation(false);\n validateCreditCardInputs(() => {\n if (isLoading) {\n return;\n }\n isLoading = true;\n\n togglePaymentLoader(\"show\");\n let newCC = null;\n\n if (provider === \"safecharge\") {\n newCC = {\n cardHolderName: holderName\n };\n } else {\n newCC = {\n cardNumber: cardNumber.replace(/\\s+/g, \"\"),\n cardHolderName: holderName.replace(/\\s+/g, \"\"),\n expirationMonth: getExpiryDatePeriod(expDate, \"month\"),\n expirationYear: getExpiryDatePeriod(expDate, \"year\"),\n CVV: CVC\n };\n }\n\n if (isBusinessTrial) {\n params.authorizeCard = true;\n }\n\n params.newCC = newCC;\n\n let payments = new SubscriptionUpdate(params);\n\n if (isBusinessTrial && provider === STRIPE_PAYMENT_PROVIDER) {\n payments.setStripePaymentSource({\n callback: () => handlePaymentSuccess({ changeCard: changeCard })\n });\n } else if (provider === SAFECHARGE_PAYMENT_PROVIDER) {\n payments.initSafechargePayment({\n refresh: false,\n callback: handlePaymentSuccess,\n showPaymentConfirmationModal: checkCurrentSubscription(),\n handlePaymentConfirmationCancle: handleModalClose\n });\n } else if (provider === STRIPE_PAYMENT_PROVIDER) {\n payments.updateStripeSubscription({\n refresh: false,\n callback: handlePaymentSuccess,\n showPaymentConfirmationModal: checkCurrentSubscription(),\n handlePaymentConfirmationCancle: handleModalClose,\n changeCard: changeCard\n });\n }\n\n subscribeForUserInfoChange();\n });\n }\n };\n\n const handleModalClose = () => {\n setPaymentLoading(false);\n setErrorMessage(\"\"); \n };\n\n const renderForm = () => {\n if (userPaymentSource && RenderPrefilledForm && !changeCard) {\n return (\n \n )\n }\n\n return (\n \n );\n };\n\n window.handleSafeChargeSuccess = transactionID => {\n on3DsecureSuccess();\n handlePaymentSuccess(transactionID);\n };\n\n return (\n \n {renderForm()}\n {/* {showConfirmationModal ? (\n {\n handleSubmit(event, true);\n }}\n />\n ) : null} */}\n \n );\n};\n\nexport default CreditCardBox;\n\nconst Message = styled.div`\n min-height: 298px;\n height: 297px;\n display: flex;\n align-items: center;\n text-align: center;\n justify-content: center;\n`;\n","import { useEffect, useRef } from \"react\";\n\nimport { SAFECHARGE_CARD_FIELDS } from \"@pcloud/web-utilities/dist/payments/constants.payments\";\n\n\nexport const useSafeChargeInputsValidations = (({\n provider,\n changeCard = true,\n validateHolderName,\n setDisableErrorAnimation,\n setValidCardNumber, setValidExpDate, setValidCVC, setValidHolderName,\n holderName,\n getHolderNameFormatted\n}) => {\n const holderNameRef = useRef(null);\n\n const scFieldsState = useRef(null);\n\n useEffect(() => {\n return clearSafeChargeFields;\n }, []);\n\n useEffect(() => {\n if (provider !== \"safecharge\" || !changeCard) {\n clearSafeChargeFields();\n return;\n }\n\n if (holderNameRef && holderNameRef.current) {\n holderNameRef.current.addEventListener(\"change\", onChangeHolderName);\n holderNameRef.current.addEventListener(\"focus\", onFocusHolderName);\n holderNameRef.current.addEventListener(\"blur\", onBlurHolderName);\n }\n }, [provider, changeCard]);\n\n const clearSafeChargeFields = () => {\n \n if (holderNameRef && holderNameRef.current) {\n holderNameRef.current.removeEventListener(\"change\", onChangeHolderName);\n holderNameRef.current.removeEventListener(\"focus\", onFocusHolderName);\n holderNameRef.current.removeEventListener(\"blur\", onBlurHolderName);\n }\n\n SAFECHARGE_CARD_FIELDS.forEach((scFieldName) => {\n if (window[scFieldName]) {\n try {\n window[scFieldName].destroy();\n } catch (err) { }\n window[scFieldName] = null;\n }\n });\n };\n\n const onChangeHolderName = (еvt) => {\n if (validateHolderName(еvt.target.value)) {\n setValidScFields(\"holderName\", true);\n }\n };\n\n const onFocusHolderName = () => {\n setValidScFields(\"holderName\", true);\n };\n\n const onBlurHolderName = (еvt) => {\n if (еvt.target.value !== \"\") {\n const valid = validateHolderName(еvt.target.value);\n if (!valid) {\n setDisableErrorAnimation(true); \n }\n setValidScFields(\"holderName\", valid);\n }\n }\n\n const onSafechargeFieldsCreated = () => {\n SAFECHARGE_CARD_FIELDS.forEach((scFieldName) => setScFieldsValidationListeners(scFieldName));\n };\n\n const setScFieldsValidationListeners = (scFieldName: string) => {\n window[scFieldName].on(\"change\", (evt) => {\n if (!scFieldsState.current) {\n scFieldsState.current = {};\n }\n \n scFieldsState.current[scFieldName] = evt;\n if (evt.complete) {\n setValidScFields(scFieldName, true);\n }\n });\n\n window[scFieldName].on(\"focus\", (evt) => {\n setValidScFields(scFieldName, true);\n });\n\n window[scFieldName].on(\"blur\", (evt) => {\n if (scFieldsState.current && scFieldsState.current[scFieldName] && !scFieldsState.current[scFieldName].empty) {\n if (!evt.complete) {\n setDisableErrorAnimation(true);\n }\n setValidScFields(scFieldName, evt.complete);\n }\n });\n };\n\n const setValidScFields = (scFieldName, valid) => {\n switch(scFieldName) {\n case \"SFCardNumber\": \n setValidCardNumber(valid);\n break;\n case \"cardExpiry\": \n setValidExpDate(valid);\n break;\n case \"cardCvc\": \n setValidCVC(valid);\n break;\n case \"holderName\": \n setValidHolderName(valid);\n break;\n }\n }\n\n const validateSafeChargeInputs = () => {\n const validationRes = {};\n validationRes.validCardNumber = scFieldsState.current && scFieldsState.current.SFCardNumber && scFieldsState.current.SFCardNumber.complete;\n validationRes.validExpDate = scFieldsState.current && scFieldsState.current.cardExpiry && scFieldsState.current.cardExpiry.complete;\n validationRes.validCVC = scFieldsState.current && scFieldsState.current.cardCvc && scFieldsState.current.cardCvc.complete;\n validationRes.validHolderName = validateHolderName(holderName);\n validationRes.filledInputs = scFieldsState.current && scFieldsState.current.SFCardNumber && !scFieldsState.current.SFCardNumber.empty && \n scFieldsState.current.cardExpiry && !scFieldsState.current.cardExpiry.empty && \n scFieldsState.current.cardCvc && !scFieldsState.current.cardCvc.empty && \n getHolderNameFormatted(holderName);\n\n return validationRes;\n };\n\n return {\n holderNameRef,\n onSafechargeFieldsCreated,\n validateSafeChargeInputs\n };\n\n});","import styled, { css, keyframes } from \"styled-components\";\n\nconst spin = keyframes`\n 0% {\n transform:rotate(0deg);\n }\n 100% {\n transform:rotate(360deg);\n }\n`;\n\nconst fadein = keyframes`\n 0% {\n opacity: 0;\n display: block;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nconst fadeout = keyframes`\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n`;\n\nconst SpinContainer = styled.div`\n position: absolute;\n width: ${({width}) => width || 64}px;\n height: ${({height}) => height || 64}px;\n z-index: 3;\n /* background-color: inherit; */\n animation-name: ${spin};\n animation-duration: 600ms;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n z-index: 100;\n\n ${({position}) => {\n if (position === \"right\") {\n return css`\n right: 0;\n top: 50%;\n margin: -${({height}) => (height / 2) || 32}px 0 0 -${({width}) => (width) || 64}px;\n `;\n } else {\n return css`\n left: 50%;\n top: 50%;\n margin: -${({height}) => (height / 2) || 32}px 0 0 -${({width}) => (width / 2) || 32}px;\n `;\n }\n }}\n`;\n\nexport default SpinContainer;","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLoadingIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 64.001,\n height: 63.999\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#e4e4e4\",\n d: \"M32.001 64a31.8 31.8 0 01-12.456-2.515 31.893 31.893 0 01-10.171-6.858 31.89 31.89 0 01-6.858-10.171A31.8 31.8 0 01.001 32a31.806 31.806 0 012.515-12.456A31.9 31.9 0 019.374 9.372a31.893 31.893 0 0110.171-6.858A31.8 31.8 0 0132.001 0a31.8 31.8 0 0112.456 2.515 31.883 31.883 0 0110.171 6.858 31.892 31.892 0 016.859 10.172A31.806 31.806 0 0164.001 32a31.8 31.8 0 01-2.515 12.455 31.892 31.892 0 01-6.859 10.171 31.883 31.883 0 01-10.171 6.858A31.8 31.8 0 0132.001 64zm0-59a26.833 26.833 0 00-10.509 2.122 26.921 26.921 0 00-8.583 5.786 26.907 26.907 0 00-5.786 8.582A26.826 26.826 0 005.001 32a26.826 26.826 0 002.122 10.51 26.908 26.908 0 005.786 8.582 26.922 26.922 0 008.583 5.786A26.833 26.833 0 0032.001 59a26.83 26.83 0 0010.51-2.122 26.914 26.914 0 008.583-5.786 26.922 26.922 0 005.786-8.582A26.837 26.837 0 0059.001 32a26.837 26.837 0 00-2.122-10.51 26.922 26.922 0 00-5.786-8.582 26.914 26.914 0 00-8.583-5.786A26.83 26.83 0 0032.001 5z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"loading-icon_svg__color-path\",\n fill: \"#bc3232\",\n d: \"M.051 32H0v-.499c0-.055 0-.109.005-.163a31.75 31.75 0 012.509-11.793A31.932 31.932 0 019.372 9.373a31.873 31.873 0 0110.171-6.858A31.751 31.751 0 0131.307.007c.064 0 .129-.007.194-.007h.498v.05a2.5 2.5 0 012 2.451 2.5 2.5 0 01-2 2.449V5h-.009a26.84 26.84 0 00-10.5 2.12 26.946 26.946 0 00-8.582 5.786 26.942 26.942 0 00-5.786 8.584A26.808 26.808 0 005 32h-.048a2.5 2.5 0 01-2.451 2 2.5 2.5 0 01-2.45-2z\"\n })));\n}\nexport default SvgLoadingIcon;","//@flow\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport { hiDPI } from \"polished\";\nimport { CSSTransition } from \"react-transition-group\";\n\nimport { __ } from \"../../lib/utils\";\nimport SpinContainer from \"../SpinContainer\";\nimport { ColorType } from \"../../lib/types/dataTypes.components\";\nimport { ButtonWithIcon } from \"@pcloud/web-utilities/dist/resources/components/ButtonDefault\";\nimport { Error } from \"./SharedStyledComponents\";\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\n\nimport LoadingIcon from \"../../svg/loading-icon.svg\";\n\ntype PaypalBoxType = {\n paypalLoading: boolean,\n color: ColorType,\n errorMessage: string,\n paypalEmail: string,\n handleLogout: () => void,\n handleSubmit: () => void,\n showDisclaimer: boolean,\n theme?: string\n};\n\nconst PaypalTemplate = ({\n paypalLoading,\n color,\n errorMessage,\n paypalEmail,\n handleLogout,\n handleSubmit,\n showDisclaimer,\n theme\n}: PaypalBoxType) => {\n return (\n \n \n {}}\n onExited={() => {}}\n appear\n >\n \n \n \n \n \n \n \n \n {errorMessage ? (\n {errorMessage}\n ) : null}\n \n {paypalEmail ? (\n \n {paypalEmail}\n {__(\"header_logout\")}\n \n ) : null}\n \n \n {paypalEmail ? (\n \n ) : (\n
\n )}\n \n {showDisclaimer ? (\n pCloud International AG | 74 Zugerstrasse Str, 6340 Baar, Switzerland\n ) : null}\n \n {/* */}\n {__(\"secure_ssl_payment_short\")}\n \n \n );\n};\n\nexport default PaypalTemplate;\n\nconst Wrapper = styled.div`\n position: relative;\n min-height: 255px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n`;\n\nconst paypalImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/paypal@2x.png' : 'images/paypal.png');\nconst PaypalIcon = styled.div`\n width: 160px;\n height: 160px;\n background-position: center;\n background-repeat: no-repeat;\n background-size: contain;\n display: inline-block;\n background-image: url(${paypalImg});\n`;\n\nconst ButtonWrapper = styled.div`\n margin-top: -7px;\n position: relative;\n z-index: 0;\n\n #paypal-button {\n line-height: 1;\n z-index: 0;\n position: relative;\n overflow: hidden;\n border-radius: 7px;\n height: 45px;\n }\n`;\n\nconst SecureText = styled.div`\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 13px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n letter-spacing: normal;\n text-align: center;\n color: #999999;\n margin: 6px 0;\n`;\n\nconst secureIconImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/easter2020/secure@2x.png' : 'images/easter2020/secure.png');\nconst SecureIcon = styled.div`\n display: inline-block;\n width: 21px;\n height: 21px;\n background-repeat: no-repeat;\n background-size: 21px 21px;\n background-position: center;\n background-image: url(${secureIconImg});\n position: relative;\n top: 5px;\n margin-right: 10px;\n`;\n\nconst ExistingEmail = styled.div`\n position: absolute;\n bottom: 15px;\n left: 0px;\n display: inline-block;\n color: #888;\n font-size: 12px;\n min-height: 12px;\n line-height: 12px;\n /* font-family: \"Roboto\", sans-serif; */\n font-weight: bold;\n width: 100%;\n text-align: center;\n`;\n\nconst Logout = styled.span`\n margin-left: 8px;\n color: ${({ color }) => (color && COLORS[color] ? COLORS[color].mainColor : \"#17bed0\")};\n font-weight: bold;\n cursor: pointer;\n`;\n\nconst PaypalError = styled(Error)`\n position: absolute;\n top: 0px;\n left: 0px;\n`;\n\nconst DisclaimerText = styled(SecureText)`\n font-size: 10px;\n margin-top: 16px;\n`;\n\nconst Link = styled.a`\n cursor: pointer;\n text-decoration: none;\n font-weight: bold;\n`;\n\nconst AnimationContainer = styled.div`\n background-image: inherit;\n background-color: inherit;\n\n .fading-enter,\n .fade-appear {\n opacity: 1;\n }\n .fading-exit {\n opacity: 0;\n }\n .fading-enter-active,\n .fade-appear-active {\n opacity: 1;\n }\n .fading-exit-active {\n opacity: 0;\n }\n .fading-enter-active,\n .fade-appear-active,\n .fading-exit-active {\n transition: all 400ms ease-in-out;\n }\n`;\n\nconst LoaderWrapper = styled.div`\n position: absolute;\n /* min-height: 400px; */\n // height: calc(100% - 130px);\n min-height: 400px;\n width: 100%;\n left: 0px;\n background-image: inherit;\n background-color: inherit;\n z-index: 1;\n\n .loading-icon_svg__color-path {\n fill: ${({ color }) => (color && COLORS[color] ? (COLORS[color].loadingIconColor ? COLORS[color].loadingIconColor : COLORS[color].mainColor) : \"#17bed0\")};\n }\n`;\n","//@flow\n\nimport React, { useState, useEffect, useRef } from \"react\";\n\nimport { SubscriptionUpdate } from \"../../lib/payments\";\nimport { PlanIDType, ColorType, Userinfo } from \"../../lib/types/dataTypes.components\";\n\nimport PaypalTemplate from \"./PaypalTemplate\";\n// import PaymentConfirmationModal from \"../Modals/PaymentConfirmationModal\";\nimport usePrevious from \"@pcloud/web-utilities/dist/hooks/usePrevious\";\n\nimport { getUserTtrafficCount } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\nimport { ADDITIONAL_TRAFFIC_ID, CUSTOM4TB_PLAN_ID } from \"@pcloud/web-utilities/dist/plans/constants.plans\";\n\ntype PaypalBoxType = {\n auth: string,\n user: Userinfo,\n planId: PlanIDType | Array,\n period: \"month\" | \"year\" | \"lifetime\",\n userPaymentSource: {\n email: string\n },\n afterPaymentActions: () => void,\n discount?: string,\n color?: ColorType,\n onPaymentProcessing?: () => void,\n afterPaymentProcessing?: () => void,\n showDisclaimer: boolean,\n isBusinessTrial: boolean,\n paypalButtonLabel: string,\n getCurrentStorageCount: () => number,\n RenderTemplate: any,\n payButtonClicked?: boolean,\n isMobile?: boolean,\n hidePaypalButton?: boolean,\n setDisabledPlanOptions: () => void,\n setDisabledButton: () => void,\n removePaypalPaymentSource: () => void,\n theme?: string,\n traffic: string | number,\n onPaymentErrorMessageChange: (newErrorMessage: string) => void,\n downgrade?: boolean\n};\n\nconst PaypalBox = ({\n auth,\n user = null, // Business accounts doesn't pass this param. \n planId = [],\n period,\n discount,\n userPaymentSource,\n afterPaymentActions,\n color = \"cyan\",\n onPaymentProcessing = () => {},\n afterPaymentProcessing = () => {},\n showDisclaimer,\n isBusinessTrial = false,\n paypalButtonLabel = \"\",\n RenderTemplate = PaypalTemplate,\n setExternalButtonLoading = () => {},\n payButtonClicked,\n checkCurrentSubscription = () => {},\n isMobile = false,\n hidePaypalButton = false,\n setDisabledPlanOptions = () => {},\n setDisabledButton = () => {},\n removePaypalPaymentSource = () => {},\n theme,\n traffic,\n subscribeForUserInfoChange = () => {},\n abbortUserInfoChangeSubscribe = () => {},\n stopUserDiff = () => {},\n onPaymentErrorMessageChange = (newErrorMessage) => null,\n downgrade = false\n}: PaypalBoxType) => {\n const [errorMessage, setErrorMessage] = useState(\"\");\n const [paypalLoading, setPaypalLoading] = useState(true);\n const [paymentLoading, setPaymentLoading] = useState(false);\n const [paypalEmail, setPaypalEmail] = useState();\n const [showConfirmationModal, setShowConfirmationModal] = useState(false);\n\n const payments = useRef({value: null});\n const prevIsMobile = usePrevious(isMobile);\n\n const [fireAfterPaymentActions, setFireAfterPaymentActions] = useState(null);\n\n useEffect(() => {\n const params = {\n provider: \"paypal\",\n period: period,\n userAuth: auth,\n products: planId,\n billingAddress: {},\n traffic: planId.indexOf(ADDITIONAL_TRAFFIC_ID) !== -1 ? (parseInt(traffic) || (user && getUserTtrafficCount(user, true)) || 0) : 0,\n downgrade: downgrade,\n isBusinessTrial: isBusinessTrial,\n toggleLoader: togglePaymentLoader,\n showPaymentError,\n showBadInput: () => {},\n onBraintreeCreatePayment: subscribeForUserInfoChange\n };\n\n if (user?.lastsubscription?.status === \"active\" && user.lastsubscription?.products.indexOf(CUSTOM4TB_PLAN_ID) !== -1 && period !== \"lifetime\") {\n if (user?.planparams?.traffic) {\n params.traffic += user.planparams.traffic\n }\n\n if (user?.planparams?.storage) {\n params.storage = user.planparams.storage\n }\n }\n\n if (discount) {\n params.discountcode = discount;\n }\n\n payments.current.value = new SubscriptionUpdate(params);\n }, []);\n\n useEffect(() => {\n if (!payments.current.value) {\n return;\n }\n\n if (discount) {\n payments.current.value.paymentInfo.discountcode = discount;\n } else {\n delete payments.current.value.paymentInfo.discountcode;\n }\n }, [discount, payments.current.value]);\n\n useEffect(() => {\n setDisabledButton(paymentLoading || paypalLoading);\n setDisabledPlanOptions(paymentLoading || paypalLoading);\n }, [paymentLoading, paypalLoading]); //[paymentLoading, paypalLoading]\n\n // We use this hook to fire afterPaymentActions in the context of last rendered component values. \n // Otherwise planId refers to the initially loaded value.\n useEffect(() => {\n if (fireAfterPaymentActions === null) {\n // Initially called.\n return;\n }\n\n const {res, successCallback, errorCallback, skipApiUpdate} = fireAfterPaymentActions;\n afterPaymentActions(res, successCallback, errorCallback, skipApiUpdate);\n }, [fireAfterPaymentActions]);\n\n useEffect(() => {\n if (!payments.current.value || paypalEmail || hidePaypalButton || isMobile === prevIsMobile) {\n return;\n }\n\n renderPaypalButton();\n }, [isMobile, paypalEmail, hidePaypalButton, payments.current.value]);\n\n useEffect(() => {\n if (!payments.current.value) {\n return;\n }\n\n payments.current.value.paymentInfo.products = planId.join(\",\");\n payments.current.value.paymentInfo.traffic = planId.indexOf(ADDITIONAL_TRAFFIC_ID) !== -1 ? (traffic || (user && getUserTtrafficCount(user, true)) || 0) : 0;\n\n }, [planId, payments.current.value]);\n\n useEffect(() => {\n onPaymentErrorMessageChange(errorMessage);\n }, [errorMessage]);\n\n useEffect(() => {\n if (payButtonClicked) {\n handleSubmit();\n }\n }, [payButtonClicked]); // [payButtonClicked]\n\n useEffect(() => {\n if (userPaymentSource && userPaymentSource.email) {\n setPaypalEmail(userPaymentSource.email);\n setPaypalLoading(false);\n }\n }, [userPaymentSource]); //[userPaymentSource]\n\n const renderPaypalButton = () => {\n setPaypalLoading(true);\n setExternalButtonLoading(true);\n\n payments.current.value.getTokenBraintree({\n refresh: false,\n label: paypalButtonLabel,\n showPaymentConfirmationModal: checkCurrentSubscription(),\n callback: (res, successCallback, errorCallback, skipApiUpdate) => setFireAfterPaymentActions({res, successCallback, errorCallback, skipApiUpdate}),\n onReady: () => {\n setPaypalLoading(false);\n setExternalButtonLoading(false);\n }\n });\n }\n\n const handlePaypalLogout = () => {\n setPaypalEmail(\"\");\n setErrorMessage(\"\");\n removePaypalPaymentSource();\n renderPaypalButton();\n };\n\n const handleSubmit = () => {\n if (paypalLoading) {\n return;\n }\n\n setErrorMessage(\"\");\n\n if (paypalEmail) {\n togglePaymentLoader(\"show\");\n\n if (isBusinessTrial) {\n afterPaymentActions();\n } else {\n subscribeForUserInfoChange();\n payments.current.value.createBraintreePayment({\n refresh: false,\n callback: afterPaymentActions,\n showPaymentConfirmationModal: checkCurrentSubscription()\n });\n }\n } else {\n subscribeForUserInfoChange();\n if (payments.current.value.checkout) {\n togglePaymentLoader(\"show\");\n payments.current.value.checkout.paypal.initAuthFlow();\n }\n }\n };\n\n const handleModalClose = () => {\n setShowConfirmationModal(false);\n };\n\n const togglePaymentLoader = (action: \"show\" | \"hide\") => {\n let isLoading = action === \"show\";\n setPaymentLoading(action === \"show\");\n setPaypalLoading(action === \"show\");\n isLoading ? onPaymentProcessing() : afterPaymentProcessing();\n };\n\n const showPaymentError = message => {\n setPaypalLoading(false);\n setErrorMessage(message);\n abbortUserInfoChangeSubscribe();\n stopUserDiff();\n };\n\n return (\n \n \n \n );\n};\n\nexport default PaypalBox;\n","//@flow\n\nimport React, { useState, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport reactStringReplace from \"react-string-replace\";\nimport Componentify from \"react-componentify\";\n\nimport { __, hrefSearch, rcookie, isInternetExplorer } from \"../../lib/utils\";\nimport {\n ColorType,\n Userinfo,\n} from \"../../lib/types/dataTypes.components\";\n\nimport Modal, { OvalModalWrap, OvalModalClose } from \"@pcloud/web-utilities/dist/resources/components/Modal\";\nimport Tabs from \"../Tabs\";\nimport { PaymentLoader } from \"../PaymentLoader\";\nimport CreditCardBox from \"../PaymentComponents/CreditCardBox\";\nimport PaypalBox from \"../PaymentComponents/PaypalBox\";\nimport CreditCardFormTemplate from \"../PaymentComponents/CreditCardFormTemplate\";\nimport PrefilledCreditCardForm from \"../PaymentComponents/PrefilledCreditCardForm\";\nimport { linkConverter } from \"@pcloud/web-utilities/dist/lib/componentifyConverters\";\nimport { currencyMap } from \"@pcloud/web-utilities/dist/payments/constants.payments\";\n\ntype PaymentModalProps = {\n planId: string,\n billingPeriod: \"month\" | \"year\" | \"lifetime\",\n color: ColorType,\n price: number,\n currency: \"$\" | \"€\" | \"₤\",\n country: string,\n userInfo: Userinfo,\n showSuccessMessage: () => void,\n analytics: {\n category: string,\n label: string,\n },\n discount?: string,\n setsfPaymentSourceID: () => void,\n cjData: any,\n isBusinessTrial: boolean,\n setSource: (provider: \"stripe\" | \"safecharge\" | \"paypal\") => void\n};\n\nconst PaymentModal = ({\n planId = [],\n provider = \"safecharge\",\n billingPeriod = \"month\",\n color = \"cyan\",\n price,\n currency = \"$\",\n country = \"US\",\n discount,\n userInfo,\n showSuccessMessage = () => { },\n analytics,\n setsfPaymentSourceID = () => { },\n cjData,\n isBusinessTrial = false,\n isOpenModal = false,\n setSource\n}: PaymentModalProps) => {\n const [isOpen, setIsOpen] = useState(isOpenModal);\n const [view, setView] = useState(\"card\");\n const [tabs, setTabs] = useState([]);\n const [cardProvider, setCardProvider] = useState(provider);\n const [paymentProvider, setPaymentProvider] = useState(provider);\n const [cart, setCart] = useState(null);\n const [loading, setLoading] = useState(true);\n const [userPaymentSource, setUserPaymentSource] = useState(null);\n const { auth } = userInfo;\n const loaderElement = useRef(null);\n const DEFAULT_TABS = useRef([\n {\n tabId: \"card\",\n tabTitle: __(\"Credit Card\", \"Credit Card\"),\n clickAction: setView\n },\n {\n tabId: \"paypal\",\n tabTitle: \"Paypal\",\n clickAction: setView\n }\n ])\n const isIE = isInternetExplorer();\n\n useEffect(() => {\n if (hrefSearch(\"ErrCode\") === \"0\") {\n afterPaymentActions(hrefSearch(\"transactionid\"));\n return;\n }\n\n setTabs(DEFAULT_TABS.current);\n loadPaymentData();\n loadSubscribedProducts();\n }, []);\n\n useEffect(() => {\n setSource(view == \"card\" ? cardProvider : view);\n setPaymentProvider(view == \"card\" ? cardProvider : view);\n }, [view, cardProvider])\n\n const closeModal = () => {\n setIsOpen(false);\n }\n\n const getPaymentSource = (callback) => {\n const dfd = jQuery.Deferred();\n if (pCloudGlobals.apiMethod) {\n pCloudGlobals.apiMethod(\n \"listpaymentsources\",\n { auth },\n (res: any) => {\n callback(res);\n dfd.resolve(res);\n },\n {\n errorCallback: dfd.reject,\n }\n );\n }\n };\n\n const getPaymentProvider = (callback) => {\n const dfd = jQuery.Deferred();\n\n const params = { auth };\n\n if (rcookie(\"forcecard\")) {\n params.card = rcookie(\"forcecard\");\n }\n\n if (rcookie(\"forcecountry\")) {\n params.country = rcookie(\"forcecountry\");\n }\n\n if (isIE) {\n params.browser = \"IE\";\n }\n\n if (pCloudGlobals.apiMethod) {\n pCloudGlobals.apiMethod(\n \"listpaymentmethods\",\n params,\n (res: any) => {\n callback(res);\n dfd.resolve(res);\n },\n {}\n );\n\n return dfd;\n }\n };\n\n const loadPaymentData = () => {\n const returnedValues = {};\n const successCallbackSource = data => returnedValues.paymentSource = data;\n const successCallbackProvider = data => returnedValues.paymentProvider = data;\n\n const paymentSourcePromise = getPaymentSource(successCallbackSource);\n const paymentProviderPromise = getPaymentProvider(successCallbackProvider);\n\n $.when.apply($, [paymentSourcePromise, paymentProviderPromise]).done(() => {\n const paymentSourceData = returnedValues.paymentSource;\n const paymentProviderData = returnedValues.paymentProvider;\n let newView = \"card\";\n let newProvider = \"safecharge\";\n let newCardProvider = \"safecharge\";\n\n if (paymentProviderData && paymentProviderData.paymentmethods) {\n const paymentMethod = paymentProviderData.paymentmethods[0];\n newView = paymentMethod.type;\n newProvider = paymentMethod.method;\n newCardProvider = paymentMethod.method;\n }\n\n if (\n paymentSourceData &&\n (paymentSourceData.stripe ||\n paymentSourceData.safecharge ||\n paymentSourceData.paypal)\n ) {\n if (paymentSourceData.stripe) {\n newView = \"card\";\n setUserPaymentSource(paymentSourceData);\n newProvider = \"stripe\";\n newCardProvider = \"stripe\";\n } else if (paymentSourceData.safecharge && (!isIE || (isIE && billingPeriod !== \"lifetime\"))) {\n newView = \"card\";\n setUserPaymentSource(paymentSourceData);\n newProvider = \"safecharge\";\n newCardProvider = \"safecharge\";\n } else if (paymentSourceData.paypal) {\n newView = \"paypal\";\n setUserPaymentSource(paymentSourceData);\n newProvider = \"paypal\";\n }\n\n if (billingPeriod !== \"lifetime\") {\n let newTabs = DEFAULT_TABS.current.map((tab) =>\n tab.tabId !== newView ? { ...tab, disabled: true } : tab\n );\n setTabs(newTabs);\n DEFAULT_TABS.current = newTabs;\n }\n }\n\n if (loaderElement.current) {\n loaderElement.current.classList.toggle(\"fadein\");\n loaderElement.current.classList.toggle(\"fadeout\");\n }\n\n setPaymentProvider(newProvider);\n setCardProvider(newCardProvider);\n\n setTimeout(() => {\n setLoading(false);\n }, 300);\n\n setView(newView);\n });\n };\n\n const loadSubscribedProducts = () => {\n const { lastsubscription } = userInfo;\n\n if (lastsubscription && lastsubscription.status != \"active\") {\n setCart(planId);\n return;\n }\n\n let choosenProducts = planId;\n choosenProducts = choosenProducts.map((productId) => Number(productId));\n const otherProducts =\n lastsubscription &&\n lastsubscription.products.filter((subscribedProduct) => {\n const choosenPremiumProducts = choosenProducts.filter(\n (i) => [1, 3, 14, 15].indexOf(i) != -1\n );\n const userChoosedPremiumProduct = !!choosenPremiumProducts.length;\n const userHasPremiumSubscription =\n [1, 3, 14, 15].indexOf(subscribedProduct) != -1;\n\n const skipPremium = !(\n userChoosedPremiumProduct && userHasPremiumSubscription\n );\n\n return choosenProducts.indexOf(planId) == -1 && skipPremium;\n });\n\n setCart((otherProducts && billingPeriod !== \"lifetime\") ? choosenProducts.concat(otherProducts) : choosenProducts);\n };\n\n const subscribeForPaymentSource = ({ callback, transactionID }) => {\n let paymentSourceId = 0;\n let creditCardPaymentSource = 0;\n\n if (userPaymentSource && userPaymentSource.stripe) {\n const stripeSources = userPaymentSource.stripe.sources\n creditCardPaymentSource = stripeSources[stripeSources.length - 1];\n } else if (userPaymentSource && userPaymentSource.safecharge) {\n const sfSources = userPaymentSource.safecharge.sources\n creditCardPaymentSource = sfSources[sfSources.length - 1];\n }\n\n if (creditCardPaymentSource) {\n paymentSourceId = creditCardPaymentSource.paymentsourceid;\n }\n\n if (pCloudGlobals && pCloudGlobals.apiMethod) {\n pCloudGlobals.apiMethod('subscribe', {\n subscribefor: \"paymentsource\",\n auth: auth,\n paymentsourceid: paymentSourceId\n }, ({ paymentsouce }) => {\n let providerSourceID;\n if (paymentsouce && paymentsouce.sources) {\n const paymentSoucesLength = paymentsouce.sources.length;\n providerSourceID = paymentsouce.sources[paymentSoucesLength - 1].providersourceid;\n }\n if (providerSourceID) {\n setsfPaymentSourceID(providerSourceID);\n }\n callback(transactionID);\n }, {\n errorCallback: () => {\n callback(transactionID);\n }\n })\n } else {\n callback(transactionID);\n }\n }\n\n const afterPaymentActions = (res) => {\n if (sessionStorage.pCloud) {\n sessionStorage.removeItem(\"pCloud\");\n }\n\n showSuccessMessage(res);\n };\n\n const onPaymentSuccess = (res) => {\n res = res || {};\n const transactionID = res.transactionId || res.transactionid || res.id || \"\";\n\n if (cardProvider === \"safecharge\" && paymentProvider === \"safecharge\") {\n subscribeForPaymentSource({\n callback: (data) => {\n setIsOpen(false);\n afterPaymentActions(data)\n },\n transactionID: transactionID\n })\n } else {\n setIsOpen(false);\n afterPaymentActions(res)\n }\n }\n\n const onPaymentProcessing = () => {\n const newTabs = tabs.map(tab => { return { disabled: true, ...tab } })\n setTabs(newTabs);\n }\n\n const afterPaymentProcessing = () => {\n setTabs(DEFAULT_TABS.current);\n }\n\n const renderView = () => {\n if (loading) {\n return (\n \n \n \n );\n } else if (view === \"card\") {\n let creditCardPaymentSource = null;\n\n if (userPaymentSource && userPaymentSource.stripe) {\n const stripeSources = userPaymentSource.stripe.sources\n creditCardPaymentSource = stripeSources[stripeSources.length - 1];\n } else if (userPaymentSource && userPaymentSource.safecharge) {\n const sfSources = userPaymentSource.safecharge.sources\n creditCardPaymentSource = sfSources[sfSources.length - 1];\n }\n\n return (\n \n );\n } else if (view === \"paypal\") {\n return (\n \n );\n }\n };\n\n return (\n \n \n \n \n \n \n {renderView()}\n \n \n \n
\n {billingPeriod !== \"lifetime\" ? (\n \n \n \n ) : null}\n
\n {view === \"card\" ? (\n
\n {reactStringReplace(\n __(\"stored_credentials_message\"),\n /(%here%)/g,\n (match, i) => (\n {\n modalManager.open('PrivacyPolicy');\n }}\n >\n {__(\"stored_credentials_here_parameter\")}\n \n )\n )}\n
\n ) : null}\n\n {view === \"card\" && paymentProvider === \"safecharge\" ? (\n \n
\n {__(\"checkout_safecharge_terms_1\")}\n {__(\"checkout_safecharge_terms_2\")}\n
\n \n {__(\"terms and conditions\")}\n {\" \"}\n |{\" \"}\n \n {__(\"Privacy Policy\")}\n \n
\n ) : null}\n
\n {__(\"website_operated_address\")}\n
\n
\n
\n \n
\n \n );\n};\n\nexport default PaymentModal;\n\nconst Wrapper = styled.div`\n width: 520px;\n text-align: left;\n font-family: \"Roboto\", sans-serif;\n border-radius: 15px;\n box-shadow: 0px 10px 20px 0 rgba(0, 0, 0, 0.3);\n background-color: #ffffff;\n padding: 40px;\n box-sizing: border-box;\n\n @media (max-width: 768px) {\n width: 100%;\n padding: 20px;\n background-color: #ffffff;\n }\n`;\n\nconst AlignContainer = styled.div`\n border-radius: 8.6px;\n box-shadow: 2.1px 2.1px 5px 0 rgba(0, 0, 0, 0.01);\n background-color: #ffffff;\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-wrap: nowrap;\n justify-content: center;\n box-sizing: border-box;\n\n @media (max-width: 768px) {\n padding: 0px;\n min-height: 0px;\n border-radius: 0px;\n }\n`;\n\nconst LoaderWrapper = styled.div`\n position: relative;\n min-height: 354px;\n`;\n\nconst FormWrapper = styled.div`\n max-width: 440px;\n min-height: 380px;\n width: 100%;\n margin: 0 auto;\n background: #ffffff;\n\n .responsive-wrap {\n width: 100%;\n }\n`;\n\nconst DisclaimerWrapper = styled.div`\n font-family: \"Roboto\", sans-serif;\n font-size: 10px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.23;\n letter-spacing: normal;\n text-align: center;\n color: #999999;\n\n .address {\n font-weight: bold;\n margin-top: 20px;\n }\n\n .stored_credentials {\n margin-bottom: 20px;\n\n .inline-button {\n font-weight: bold;\n cursor: pointer;\n }\n }\n\n .pay_now_terms {\n margin-bottom: 20px;\n }\n`;\n","import React from \"react\";\n\nimport _move from \"../lib/move\";\nimport componentMount from \"../lib/componentMount\"\nimport PaymentModal from \"../components/PaymentComponents/PaymentModal\";\n\n\nconst _attachList = [\n {\n attach: self,\n list: [\n //components\n \"PaymentModal\"\n ]\n }\n]\n\nconst prepComponents = {\n PaymentModal: componentMount(props => ),\n};\n\n_move(prepComponents, _attachList);","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","module.exports = window[\"jQuery\"];","module.exports = require(\"core-js/library/fn/array/from\");","module.exports = require(\"core-js/library/fn/array/is-array\");","module.exports = require(\"core-js/library/fn/date/now\");","module.exports = require(\"core-js/library/fn/json/stringify\");","module.exports = require(\"core-js/library/fn/object/assign\");","module.exports = require(\"core-js/library/fn/object/create\");","module.exports = require(\"core-js/library/fn/object/define-properties\");","module.exports = require(\"core-js/library/fn/object/define-property\");","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptors\");","module.exports = require(\"core-js/library/fn/object/get-own-property-symbols\");","module.exports = require(\"core-js/library/fn/object/get-prototype-of\");","module.exports = require(\"core-js/library/fn/object/keys\");","module.exports = require(\"core-js/library/fn/object/set-prototype-of\");","module.exports = require(\"core-js/library/fn/parse-float\");","module.exports = require(\"core-js/library/fn/parse-int\");","module.exports = require(\"core-js/library/fn/promise\");","module.exports = require(\"core-js/library/fn/symbol\");","module.exports = require(\"core-js/library/fn/symbol/iterator\");","module.exports = require(\"core-js/library/fn/symbol/to-primitive\");","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle