{"version":3,"file":"904-bundle.e3dc618e5126a15c7568.js","mappings":"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","sources":["webpack:///../src/common/images/icon-buyflow-camera.svg","webpack:///../src/common/images/icon-buyflow-endpoint.svg","webpack:///../src/common/images/icon-buyflow-mobile.svg","webpack:///../src/common/images/icon-info-grey.svg","webpack:///../src/common/components/DescriptionWithCard/description-card.module.css","webpack:///../src/common/components/DescriptionWithCard/index.tsx","webpack:///../src/common/components/FeatureFlags/index.tsx","webpack:///../src/common/components/Redirect/index.tsx","webpack:///../src/common/hooks/useFavicon.ts","webpack:///../src/common/hooks/useLanguageInPathName.ts","webpack:///../src/common/images/goto-resolve-short.svg","webpack:///../src/products/gtresolve/Routes.tsx","webpack:///../src/products/gtresolve/App.tsx","webpack:///../src/products/gtresolve/connectedComponents/Tracking/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/Tracking/index.tsx","webpack:///../src/common/images/img-logo-gotoresolve.svg","webpack:///../src/products/gtresolve/connectedComponents/FormatCurrency/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/FormatCurrency/FormatCurrency.tsx","webpack:///../src/products/gtresolve/connectedComponents/FormatCurrency/FormatDecimalCurrency.tsx","webpack:///../src/products/gtresolve/connectedComponents/Customize/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/OrderSummary/connector.ts","webpack:///../src/products/gtresolve/components/PasswordValidation/password-validation.module.css","webpack:///../src/products/gtresolve/components/PasswordValidation/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/OrderSummary/order-summary.module.css","webpack:///../src/products/gtresolve/components/OrderSummaryAddons/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/PaymentFormInfo/payment-info.module.css","webpack:///../src/products/gtresolve/connectedComponents/OrderSummary/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/Customize/customize.module.css","webpack:///../src/products/gtresolve/connectedComponents/Customize/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/CheckoutForm/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/CheckoutForm/checkout-form.module.css","webpack:///../src/products/gtresolve/connectedComponents/CheckoutForm/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/CheckoutFormContainer/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/CheckoutFormContainer/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/AccountFormInfo/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/AccountFormInfo/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/BillingFormInfo/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/BillingFormInfo/billing-info.module.css","webpack:///../src/products/gtresolve/connectedComponents/BillingFormInfo/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/CheckoutFormSubmission/resolve-checkout-form-submit.css","webpack:///../src/products/gtresolve/connectedComponents/CheckoutFormSubmission/index.tsx","webpack:///../src/products/gtresolve/connectedComponents/CheckoutFormSubmission/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/PaymentFormInfo/connector.ts","webpack:///../src/products/gtresolve/connectedComponents/PaymentFormInfo/index.tsx","webpack:///../src/products/gtresolve/hooks/useGTResolveTracking.ts","webpack:///../src/products/gtresolve/hooks/useBillingPageTracking.ts","webpack:///../src/products/gtresolve/hooks/useCheckoutFormPageTracking.ts","webpack:///../src/products/gtresolve/hooks/useCustomizePageTracking.ts","webpack:///../src/products/gtresolve/hooks/useCustomizeCart.ts","webpack:///../src/products/gtresolve/hooks/validation/useTaxNumberValidation.ts","webpack:///../src/products/gtresolve/connectedComponents/AccountFormInfo/account-info.module.css","webpack:///../src/products/gtresolve/views/Billing/billing.module.css"],"sourcesContent":["var _path, _path2, _path3, _path4, _path5;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconBuyflowCamera = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeOpacity: 0.01,\n strokeWidth: 0.5,\n d: \"M.25.25h23.5v23.5H.25z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinejoin: \"round\",\n d: \"M2.904 6.858v-.952c0-.477.381-.953.953-.953h.857c.571 0 1.047.476 1.047.953v.952\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinejoin: \"round\",\n d: \"m19.095 6.857-.952-1.905C17.762 4.476 17.286 4 16.714 4h-4.762c-.571 0-1.047.476-1.428.952L9.095 6.857h-6.19C1.476 6.857 1 7.524 1 8.477v9.904c0 .952.476 1.81 2 1.81h18c1.524 0 2-.762 2-1.81V8.476c0-.952-.476-1.619-2-1.619z\",\n clipRule: \"evenodd\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinejoin: \"round\",\n d: \"M14.334 18.285a5.238 5.238 0 1 0 0-10.476 5.238 5.238 0 0 0 0 10.476Z\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinejoin: \"round\",\n d: \"M14.334 15.906a2.857 2.857 0 1 0 0-5.714 2.857 2.857 0 0 0 0 5.714ZM4.333 11.619a1.429 1.429 0 1 0 0-2.857 1.429 1.429 0 0 0 0 2.857Z\"\n})));\nexport { SvgIconBuyflowCamera as ReactComponent };\nexport default __webpack_public_path__ + \"img/icon-buyflow-camera.e56c539ee49f0c965d69c4a6c7b89462.svg\";","var _path, _path2, _path3, _path4, _path5;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconBuyflowEndpoint = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 25,\n height: 25,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.041,\n d: \"M12.508.766h-.016C10.1 3.284 2.9 5.326 2.9 5.326c0 8.03.48 15.09 9.6 18.64 9.12-3.55 9.6-10.61 9.6-18.64 0 0-7.2-2.042-9.592-4.56Z\",\n clipRule: \"evenodd\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.041,\n d: \"M10.1 10.366v-1.44c0-1.193 1.075-2.16 2.4-2.16s2.4.967 2.4 2.16v1.44\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.041,\n d: \"M8.5 15.549c0 .45.366.816.817.816h6.366a.817.817 0 0 0 .817-.816v-4.367a.817.817 0 0 0-.817-.817H9.317a.817.817 0 0 0-.817.817z\",\n clipRule: \"evenodd\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0062FF\",\n d: \"M13.3 12.765a.8.8 0 1 1-1.6 0 .8.8 0 0 1 1.6 0\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.041,\n d: \"M12.5 14.765v-1.2\"\n})));\nexport { SvgIconBuyflowEndpoint as ReactComponent };\nexport default __webpack_public_path__ + \"img/icon-buyflow-endpoint.bee4f355b2b5924f2b83e888a83a35bf.svg\";","var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconBuyflowMobile = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeOpacity: 0.01,\n strokeWidth: 0.5,\n d: \"M.25.25h23.5v23.5H.25z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 2.913C6 1.861 6.86 1 7.913 1h8.609c1.052 0 1.913.86 1.913 1.913v18.174c0 1.052-.861 1.913-1.913 1.913H7.913A1.92 1.92 0 0 1 6 21.087z\",\n clipRule: \"evenodd\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 4.824h12.435M6 19.176h12.435M14.607 21.086H9.824\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#0062FF\",\n strokeLinejoin: \"round\",\n d: \"M12.217 2.434c.287 0 .478.19.478.478 0 .287-.191.478-.479.478-.286 0-.478-.191-.478-.478s.192-.478.479-.478Z\",\n clipRule: \"evenodd\"\n})));\nexport { SvgIconBuyflowMobile as ReactComponent };\nexport default __webpack_public_path__ + \"img/icon-buyflow-mobile.b2be8b44b3d3d392cc5e2ed01c865fb8.svg\";","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconInfoGrey = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CCC\",\n d: \"M11 7H9V5h2zm0 8H9V9h2zm-.99 5C15.53 20 20 15.52 20 10S15.53 0 10.01 0C4.48 0 0 4.48 0 10s4.48 10 10.01 10M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8\"\n})));\nexport { SvgIconInfoGrey as ReactComponent };\nexport default __webpack_public_path__ + \"img/icon-info-grey.006a67add0f2e1df3d7433597f4d66b0.svg\";","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"description-card-module__container\",\"disabled\":\"description-card-module__disabled\",\"header\":\"description-card-module__header\",\"header-text\":\"description-card-module__header-text\",\"header-img\":\"description-card-module__header-img\",\"content\":\"description-card-module__content\",\"card\":\"description-card-module__card\",\"card--selected\":\"description-card-module__card--selected\",\"card--no-desc\":\"description-card-module__card--no-desc\",\"card-description\":\"description-card-module__card-description\",\"card-header\":\"description-card-module__card-header\",\"card-checkbox\":\"description-card-module__card-checkbox\",\"card-checkbox--no-desc\":\"description-card-module__card-checkbox--no-desc\",\"card-checkbox-label\":\"description-card-module__card-checkbox-label\",\"checkbox__label--checked\":\"description-card-module__checkbox__label--checked\"};","import React, { FunctionComponent, ReactElement } from 'react'\r\nimport classNames from 'classnames'\r\nimport { Checkbox } from '@common/components'\r\n\r\nimport styles from './description-card.module.css'\r\n\r\nexport interface CardProps {\r\n icon?: string\r\n mainDescription?: string\r\n title?: string\r\n showCheckbox?: boolean\r\n cardTitle?: ReactElement | string\r\n cardDescription?: string\r\n onSelect?: (val: boolean) => void\r\n selected?: boolean\r\n id: string\r\n disabled: boolean\r\n}\r\n\r\nexport const DescriptionWithCard: FunctionComponent = ({\r\n icon,\r\n mainDescription,\r\n title,\r\n cardDescription,\r\n showCheckbox,\r\n cardTitle,\r\n onSelect,\r\n selected,\r\n id,\r\n disabled,\r\n}) => {\r\n const containerClassList = classNames({\r\n [styles.container]: true,\r\n [styles.disabled]: disabled,\r\n })\r\n\r\n const cardClassList = classNames({\r\n [styles.card]: true,\r\n [styles['card--selected']]: selected,\r\n [styles['card--no-desc']]: !cardDescription,\r\n })\r\n\r\n const checkboxClassList = classNames({\r\n [styles['card-checkbox']]: true,\r\n [styles['card-checkbox--no-desc']]: !cardDescription,\r\n })\r\n\r\n const onChangeFn = (event: React.ChangeEvent) => {\r\n if (onSelect) onSelect(event.target.checked)\r\n }\r\n\r\n return (\r\n
\r\n {title && (\r\n
\r\n {icon && \"addon-icon\"}\r\n\r\n

{title}

\r\n
\r\n )}\r\n\r\n {mainDescription &&
{mainDescription}
}\r\n\r\n
\r\n {showCheckbox && (\r\n \r\n )}\r\n
\r\n
{cardTitle}
\r\n {cardDescription &&
{cardDescription}
}\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import { SC_SITE } from '@common/constants'\r\nimport commonServices from '@common/services'\r\nimport React, { useContext, useEffect, useState } from 'react'\r\n\r\ninterface ContextValue {\r\n featureFlagsLoaded: boolean\r\n featureFlags: string[]\r\n}\r\n\r\nconst defaultValue: ContextValue = {\r\n featureFlagsLoaded: false,\r\n featureFlags: [],\r\n}\r\n\r\nconst Context = React.createContext(defaultValue)\r\n\r\ninterface Params {\r\n children: React.ReactNode\r\n siteType: SC_SITE\r\n}\r\nexport const FeatureFlagProvider = ({ children, siteType }: Params) => {\r\n const [featureFlagsLoaded, setFeatureFlagsLoaded] = useState(defaultValue.featureFlagsLoaded)\r\n const [featureFlags, setFeatureFlags] = useState(defaultValue.featureFlags)\r\n\r\n useEffect(() => {\r\n const loadFeatureFlags = async () => {\r\n const response = await commonServices.getFeatureFlags(siteType)\r\n if (response.status === 200 && response.data) {\r\n setFeatureFlags(response.data.flags)\r\n }\r\n setFeatureFlagsLoaded(true)\r\n }\r\n loadFeatureFlags()\r\n }, [siteType])\r\n\r\n const value: ContextValue = {\r\n featureFlags,\r\n featureFlagsLoaded,\r\n }\r\n\r\n return {children}\r\n}\r\n\r\nexport const useFeatureFlags = () => useContext(Context)\r\n","import { FunctionComponent, useEffect } from 'react'\r\n\r\ninterface RedirectProps {\r\n url: string\r\n}\r\n\r\nexport const Redirect: FunctionComponent = ({ url }) => {\r\n useEffect(() => {\r\n window.location.replace(url)\r\n }, [url])\r\n return null\r\n}\r\n","import { useEffect } from 'react'\r\n\r\nexport const useFavicon = (favicon: string) => {\r\n const headLink = window.document.head.querySelector('link[rel=\"icon\"]')\r\n\r\n useEffect(() => {\r\n if (favicon) {\r\n headLink?.setAttribute('href', favicon)\r\n }\r\n }, [headLink, favicon])\r\n}\r\n","import { useEffect, useState } from 'react'\r\nimport { STORAGE_CONST, LANGUAGE_CODES } from '@common/constants'\r\nimport { saveSessionState, getSessionState } from '@common/utils'\r\n\r\nexport const useLanguageInPathName = () => {\r\n const storedLanguage = getSessionState(STORAGE_CONST.SAVED_LANGUAGE)\r\n const urlSplitForLang = window.location.pathname.split('/')[1]\r\n const hasLang = Object.values(LANGUAGE_CODES).includes(urlSplitForLang)\r\n const urlLang = hasLang && urlSplitForLang !== 'en' ? `/${urlSplitForLang}` : ''\r\n const [didRedirect, setDidRedirect] = useState(false)\r\n\r\n useEffect(() => {\r\n // If we get language tag from the url, then respect that language and set it to the storage language to update the content\r\n if (urlLang && !storedLanguage) {\r\n saveSessionState(STORAGE_CONST.SAVED_LANGUAGE, urlSplitForLang)\r\n }\r\n\r\n // If we get language tag from the url and there's a stored language, then respect the stored language and replace the language tag in url\r\n if (urlLang && storedLanguage && storedLanguage !== urlSplitForLang) {\r\n setDidRedirect(true)\r\n window.location.pathname = window.location.pathname.replace(\r\n urlLang,\r\n `${storedLanguage !== 'en' ? `/${storedLanguage}` : ''}`\r\n )\r\n }\r\n\r\n // If no language tag from the url and there's a stored language, then respect the stored language and replace the language tag in url\r\n if (!urlLang && storedLanguage && storedLanguage !== 'en') {\r\n setDidRedirect(true)\r\n window.location.pathname = window.location.pathname.replace('', `/${storedLanguage}`)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [storedLanguage, urlLang])\r\n\r\n return { urlLang, didRedirect }\r\n}\r\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgGotoResolveShort = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#9254FF\",\n fillRule: \"evenodd\",\n d: \"M19 17.5 1.75 19.25 1 14.152 18.29 12.5z\",\n clipRule: \"evenodd\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000\",\n d: \"M17 10.122V14h-2.359v-2.606S13.522 14 9.405 14c-2.759 0-4.298-1.395-4.977-2.277a7.1 7.1 0 0 1-1.18-2.38 6.94 6.94 0 0 1-.06-3.447 6.88 6.88 0 0 1 2.399-3.898A6.9 6.9 0 0 1 7.506.91a6.55 6.55 0 0 1 3.438-.307c1.242.209 2.4.778 3.338 1.641l.32.287-1.68 1.724-.18-.164a4.343 4.343 0 0 0-5.121-.543 4.5 4.5 0 0 0-1.833 2.037 4.66 4.66 0 0 0-.341 2.752c.116.667.382 1.296.778 1.838.396.541.91.98 1.5 1.281.72.41 1.9.43 2.719.308 2.718-.431 3.238-3.098 3.238-3.098H9.884V6.245H17z\"\n})));\nexport { SvgGotoResolveShort as ReactComponent };\nexport default __webpack_public_path__ + \"img/goto-resolve-short.1e31abaf8cf8dad88cae3c597d4520f5.svg\";","import React, { FunctionComponent, lazy, Suspense } from 'react'\r\nimport { Navigate, Route, Routes } from 'react-router-dom'\r\nimport { VIEW_PATH, GTRESOLVE_VIEW_PATH, GTRESOLVE_VIEW_PATHS } from '@common/constants'\r\nimport { LoadingSpinner } from '@common/components'\r\nimport { Redirect } from '@common/components/Redirect'\r\nimport { useLanguageInPathName } from '@common/hooks/useLanguageInPathName'\r\n\r\n// Import the page views\r\nconst Billing = lazy(() => import('./views/Billing'))\r\nconst ErrorView = lazy(() => import('@common/components/ErrorView'))\r\n\r\nconst MarketingSiteUrl = process.env.GOTO_MARKETING_SITE_URL\r\n\r\nexport const GtreRoutes: FunctionComponent = () => {\r\n const { search, hash } = window.location\r\n const { urlLang } = useLanguageInPathName()\r\n\r\n return (\r\n }>\r\n \r\n {/* error page */}\r\n \r\n Something went wrong! Please try again. If you're still experiencing problems please call us\r\n at 1 866 890 8931.\r\n \r\n }\r\n />\r\n\r\n {/* billing main page with customize */}\r\n } />\r\n } />\r\n\r\n {/* billing main page with checkout */}\r\n } />\r\n\r\n {/* free tier temporary external redirects */}\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n\r\n {/* trial temporary redirects */}\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n\r\n {/* fallback */}\r\n \r\n }\r\n />\r\n \r\n \r\n )\r\n}\r\n","import React, { FunctionComponent } from 'react'\r\n\r\nimport { GlobalScripts } from '@common/components'\r\nimport { ANALYTICS_CONTAINER_ID, LMI_MA_SCRIPT, SC_SITE } from '@common/constants'\r\nimport favicon from '@common/images/goto-resolve-short.svg'\r\n\r\nimport { FeatureFlagProvider } from '@common/components/FeatureFlags'\r\nimport { useFavicon } from '@common/hooks/useFavicon'\r\nimport { GtreRoutes } from './Routes'\r\nimport { ConnectedResolveTrackingProvider } from './connectedComponents'\r\n\r\nconst App: FunctionComponent = () => {\r\n // user will be redirected in this case\r\n // const unauthUser = window.location.search.includes('?error=unauthenticated_user')\r\n\r\n useFavicon(favicon)\r\n\r\n return (\r\n <>\r\n {\r\n /* !unauthUser && */ \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default App\r\n","import { TrackingState } from '@common/state/tracking/state'\r\nimport { resolveTrackingActions } from '@gtresolve/state/tracking/actions'\r\n\r\nexport const mapResolveTrackingState = () => {\r\n return {}\r\n}\r\n\r\nexport const mapResolveTrackingActions = {\r\n track: (trackingInfo: TrackingState, component: string) => resolveTrackingActions.track(trackingInfo, component),\r\n}\r\n\r\nexport type ResolveTrackingActionsType = typeof mapResolveTrackingActions\r\n\r\nexport interface ResolveTrackingContextType {\r\n track: typeof mapResolveTrackingActions.track\r\n}\r\n","import React, { createContext, FunctionComponent } from 'react'\r\nimport { connectRedux, GoToComponentProps } from '@common/utils'\r\nimport {\r\n mapResolveTrackingActions,\r\n mapResolveTrackingState,\r\n ResolveTrackingContextType,\r\n ResolveTrackingActionsType,\r\n} from '@gtresolve/connectedComponents/Tracking/connector'\r\n\r\ntype ResolveTrackingProps = GoToComponentProps, ResolveTrackingActionsType>\r\n\r\nexport const ResolveTrackingContext = createContext(null)\r\nexport const ResolveTrackingProvider: FunctionComponent = ({ children, actions }) => {\r\n const trackingContextValue: ResolveTrackingContextType = {\r\n track: actions.track,\r\n }\r\n return {children}\r\n}\r\n\r\nexport const ConnectedResolveTrackingProvider = connectRedux(\r\n ResolveTrackingProvider,\r\n mapResolveTrackingState,\r\n mapResolveTrackingActions\r\n)\r\n","var _path, _path2, _path3, _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgImgLogoGotoresolve = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 73,\n height: 21,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFE900\",\n d: \"M40.514 12.192.99 16.402 1.467 21l39.523-4.21z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000\",\n d: \"M20.145 3.568c-.902 0-1.783.271-2.533.78a4.6 4.6 0 0 0-1.68 2.073 4.7 4.7 0 0 0-.26 2.67 4.64 4.64 0 0 0 1.249 2.367 4.54 4.54 0 0 0 2.334 1.265 4.5 4.5 0 0 0 2.635-.263 4.57 4.57 0 0 0 2.047-1.702c.5-.76.768-1.654.768-2.568 0-.607-.117-1.208-.346-1.77a4.6 4.6 0 0 0-.988-1.5 4.6 4.6 0 0 0-1.48-1.001 4.5 4.5 0 0 0-1.746-.35m0 7.191a2.5 2.5 0 0 1-1.408-.432 2.56 2.56 0 0 1-.933-1.153 2.6 2.6 0 0 1 .549-2.799 2.502 2.502 0 0 1 2.762-.557c.462.194.858.524 1.137.946a2.59 2.59 0 0 1-.316 3.243 2.52 2.52 0 0 1-1.791.752M34.823 3.568c-.902 0-1.784.271-2.534.78a4.6 4.6 0 0 0-1.68 2.073 4.7 4.7 0 0 0-.259 2.67c.176.897.61 1.72 1.248 2.367a4.54 4.54 0 0 0 2.335 1.265 4.5 4.5 0 0 0 2.635-.263 4.58 4.58 0 0 0 2.046-1.702c.501-.76.769-1.654.769-2.568 0-.607-.117-1.208-.346-1.77a4.6 4.6 0 0 0-.988-1.5 4.6 4.6 0 0 0-1.48-1.001 4.5 4.5 0 0 0-1.746-.35m0 7.191a2.5 2.5 0 0 1-1.408-.433 2.56 2.56 0 0 1-.933-1.152 2.6 2.6 0 0 1 .549-2.8c.354-.358.806-.603 1.297-.702a2.5 2.5 0 0 1 1.464.146c.463.195.86.524 1.138.946a2.59 2.59 0 0 1-.316 3.243 2.52 2.52 0 0 1-1.791.752\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000\",\n d: \"M32.045 3.3V1.247h-9.122v2.055h3.547v9.266h2.027V3.3zM7.82 5.87v2.054h2.8c-.646 1.722-1.88 2.835-3.308 2.835a3.76 3.76 0 0 1-1.79-.458 3.8 3.8 0 0 1-1.364-1.259 3.899 3.899 0 0 1-.346-3.612c.24-.585.618-1.1 1.101-1.501a3.751 3.751 0 0 1 3.512-.706 3.8 3.8 0 0 1 1.583.962l1.44-1.46a5.8 5.8 0 0 0-2.983-1.619 5.76 5.76 0 0 0-3.368.335A5.85 5.85 0 0 0 2.48 3.615a5.96 5.96 0 0 0-.984 3.282 5.9 5.9 0 0 0 .439 2.258 5.9 5.9 0 0 0 1.264 1.913c.539.55 1.18.988 1.886 1.288s1.463.455 2.229.458c1.985 0 3.77-1.296 4.824-3.353v3.106h2.027V5.87z\"\n})), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#img-logo-gotoresolve_svg__a)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFE900\",\n d: \"m41.178 12.192-40.177 4.21L1.486 21l40.177-4.21z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000\",\n d: \"M20.474 3.57c-.917 0-1.814.271-2.576.78a4.61 4.61 0 0 0-.702 7.114 4.64 4.64 0 0 0 5.054 1 4.63 4.63 0 0 0 2.08-1.704 4.614 4.614 0 0 0-.577-5.838 4.63 4.63 0 0 0-3.279-1.352m0 7.191a2.58 2.58 0 0 1-2.382-1.587 2.56 2.56 0 0 1 .56-2.801 2.58 2.58 0 0 1 4.4 1.818c0 .681-.272 1.334-.756 1.816a2.58 2.58 0 0 1-1.822.752zM35.394 3.57c-.917 0-1.814.271-2.576.78a4.61 4.61 0 0 0-.703 7.113 4.64 4.64 0 0 0 5.053 1.001 4.63 4.63 0 0 0 2.08-1.702 4.61 4.61 0 0 0 .432-4.34 4.61 4.61 0 0 0-2.51-2.502 4.6 4.6 0 0 0-1.776-.35m0 7.191a2.58 2.58 0 0 1-2.382-1.587 2.56 2.56 0 0 1 .559-2.801 2.58 2.58 0 0 1 4.4 1.818c0 .681-.272 1.334-.755 1.816a2.58 2.58 0 0 1-1.822.752z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000\",\n d: \"M32.57 3.3V1.247h-9.272v2.055h3.606v9.266h2.06V3.3zM7.947 5.87v2.054h2.848c-.658 1.721-1.912 2.834-3.364 2.834a3.87 3.87 0 0 1-3.21-1.717 3.845 3.845 0 0 1 .768-5.116 3.87 3.87 0 0 1 5.183.26l1.463-1.46A5.93 5.93 0 0 0 5.18 1.443a5.9 5.9 0 0 0-2.66 2.173c-.651.97-1 2.112-1 3.28a5.84 5.84 0 0 0 1.729 4.171 5.92 5.92 0 0 0 4.182 1.747c2.019 0 3.835-1.296 4.905-3.353v3.106h2.06V5.869z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#9254FF\",\n d: \"M43.66 2.187v1.591h1.306c.495 0 .826-.337.826-.79 0-.454-.33-.801-.827-.801zm3.503 4.723h-1.404l-1.38-2.087h-.72v2.088h-1.182v-5.77h2.489c1.24 0 2.042.79 2.042 1.845 0 .833-.488 1.484-1.298 1.73zM48.465 4.33h2.155a1.1 1.1 0 0 0-1.083-.8c-.505 0-.918.322-1.075.8zm3.271.85h-3.29a1.17 1.17 0 0 0 1.166.857c.462 0 .851-.223 1.057-.594l.918.412c-.372.669-1.083 1.139-2.01 1.139-1.297 0-2.281-.957-2.281-2.21s.971-2.21 2.24-2.21c1.431 0 2.432 1.187 2.2 2.606M53.372 5.534c.05.388.322.577.76.577.463 0 .753-.198.753-.445 0-.8-2.505-.05-2.505-1.748 0-.766.752-1.344 1.753-1.344 1.017 0 1.695.487 1.819 1.229l-1.108.229c-.058-.388-.315-.577-.711-.577-.356 0-.63.165-.63.412 0 .808 2.506.058 2.506 1.78 0 .766-.835 1.343-1.876 1.343-1.058 0-1.754-.486-1.877-1.228zM58.773 5.98c.644 0 1.124-.512 1.124-1.196 0-.685-.48-1.187-1.124-1.187s-1.124.512-1.124 1.187c0 .674.487 1.195 1.124 1.195m0-3.406c1.297 0 2.282.957 2.282 2.21s-.984 2.21-2.282 2.21-2.283-.957-2.283-2.21.984-2.21 2.283-2.21M62.899 1.03h-1.117V6.91H62.9zM66.932 2.656h1.125L66.37 6.91h-1.258l-1.686-4.254h1.207l1.15 3.133zM69.27 4.33h2.16a1.1 1.1 0 0 0-1.085-.8c-.505 0-.918.322-1.075.8m3.275.85h-3.291a1.17 1.17 0 0 0 1.165.857c.463 0 .852-.223 1.058-.594l.917.412c-.372.669-1.082 1.139-2.009 1.139-1.298 0-2.282-.957-2.282-2.21s.968-2.21 2.242-2.21c1.43 0 2.43 1.187 2.199 2.606\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"img-logo-gotoresolve_svg__a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M1 1h71.579v20H1z\"\n})))));\nexport { SvgImgLogoGotoresolve as ReactComponent };\nexport default __webpack_public_path__ + \"img/img-logo-gotoresolve.25a7d68f18a372f1322bf3be3242a754.svg\";","import { AppState } from 'app-store'\r\nimport { getLocationState } from '@common/state/selectors'\r\nimport { ResolveFormatCurrencyState } from './state'\r\n\r\nexport const mapResolveFormatCurrencyState = (state: AppState): ResolveFormatCurrencyState => {\r\n const { locationInfo } = getLocationState(state)\r\n const { locale: Locale, currency: CurrencyCode } = locationInfo\r\n return {\r\n Locale,\r\n CurrencyCode,\r\n }\r\n}\r\n\r\nexport const mapResolveFormatCurrencyActions = {}\r\n\r\nexport type ResolveFormatCurrencyActionsType = typeof mapResolveFormatCurrencyActions\r\n","import React, { FunctionComponent } from 'react'\r\nimport { GoToComponentProps, connectRedux } from '@common/utils'\r\nimport { ResolveFormatCurrencyState } from '@gtresolve/connectedComponents/FormatCurrency/state'\r\nimport {\r\n ResolveFormatCurrencyActionsType,\r\n mapResolveFormatCurrencyState,\r\n mapResolveFormatCurrencyActions,\r\n} from '@gtresolve/connectedComponents/FormatCurrency/connector'\r\nimport { FormatCurrency } from '@common/components'\r\n\r\ntype ResolveFormatCurrencyProps = GoToComponentProps<\r\n ResolveFormatCurrencyState,\r\n ResolveFormatCurrencyActionsType,\r\n {\r\n value: number\r\n }\r\n>\r\n\r\nexport const FormatCurrencyGTResolve: FunctionComponent = ({ state, props }) => {\r\n return \r\n}\r\n\r\nexport const ConnectedResolveFormatCurrency = connectRedux(\r\n FormatCurrencyGTResolve,\r\n mapResolveFormatCurrencyState,\r\n mapResolveFormatCurrencyActions\r\n)\r\n","import React, { FunctionComponent } from 'react'\r\nimport { GoToComponentProps, connectRedux } from '@common/utils'\r\nimport { ResolveFormatCurrencyState } from '@gtresolve/connectedComponents/FormatCurrency/state'\r\nimport {\r\n ResolveFormatCurrencyActionsType,\r\n mapResolveFormatCurrencyState,\r\n mapResolveFormatCurrencyActions,\r\n} from '@gtresolve/connectedComponents/FormatCurrency/connector'\r\nimport { FormatDecimalCurrency } from '@common/components'\r\n\r\ntype ResolveFormatDecimalCurrencyProps = GoToComponentProps<\r\n ResolveFormatCurrencyState,\r\n ResolveFormatCurrencyActionsType,\r\n {\r\n price: number\r\n }\r\n>\r\n\r\nconst FormatDecimalCurrencyGTResolve: FunctionComponent = ({ state, props }) => {\r\n return \r\n}\r\n\r\nexport const ConnectedFormatDecimalCurrency = connectRedux(\r\n FormatDecimalCurrencyGTResolve,\r\n mapResolveFormatCurrencyState,\r\n mapResolveFormatCurrencyActions\r\n)\r\n","import { AppState } from 'app-store'\r\nimport { get } from 'lodash-es'\r\nimport { resolveCheckoutActions } from '@gtresolve/state/checkout/actions'\r\nimport { ResolveSelectedAddon, ResolveAddon } from '@gtresolve/state/add-on'\r\nimport { getFatalError, getAccountState, getLocationState } from '@common/state/selectors'\r\nimport { getCurrentPlan } from '@gtresolve/utils/get-current-plan'\r\nimport {\r\n getUserState,\r\n getLabelContent,\r\n getCheckoutState,\r\n getPlanData,\r\n getBuyFormState,\r\n getCouponState,\r\n} from '@gtresolve/state/selectors'\r\nimport { TimePeriod } from '@common/constants'\r\n\r\nimport { getExtraAddons, getCurrentAgent, getCurrentEndpoint, getActiveCouponServerData } from '@gtresolve/utils'\r\nimport { getUpgradingStatus } from '@gtresolve/utils/upgrade-user'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { ResolveCustomizeState } from './state'\r\n\r\nexport const mapResolveCustomizeState = (state: AppState): ResolveCustomizeState => {\r\n const {\r\n selectedPlan,\r\n changePlan,\r\n upgradeClose,\r\n quantityLabelLong,\r\n quantityLabelPlural,\r\n quantityLabel,\r\n continue: contentContinue,\r\n quantityPopupInfo,\r\n additionalUserLicences,\r\n howManyMore,\r\n existingUserLicencePlural,\r\n existingUserLicense,\r\n additional,\r\n changePlanMethodModalHeader,\r\n changePlanModalSubheader,\r\n modalCloseButtonText,\r\n edit,\r\n changeNumberModalHeader,\r\n changeNumberModalContent,\r\n changePlanUrl,\r\n couponDisclaimer,\r\n monthly,\r\n annual,\r\n user,\r\n year,\r\n month,\r\n billedMonthlyPrice,\r\n billedAnnualPrice,\r\n selectAddons,\r\n selectAddonsDescription,\r\n per,\r\n organizer,\r\n taxTooltip,\r\n agentsVolumediscountTooltip,\r\n endpointsVolumediscountTooltip,\r\n mobileVolumediscountTooltip,\r\n cameraShareVolumediscountTooltip,\r\n endpointProtectionVolumediscountTooltip,\r\n proratedadjustmentTooltip,\r\n } = getLabelContent(state)\r\n\r\n const {\r\n organizers,\r\n selectedPlanSku,\r\n selectedAddons,\r\n billingFrequency,\r\n selectedTierIndex,\r\n endpoints,\r\n extraAddons: extraAddonsSelected,\r\n agents,\r\n calculatedTotal,\r\n totalLoading,\r\n } = getCheckoutState(state)\r\n\r\n const { accountSubscriptions } = getAccountState(state)\r\n\r\n const { initialData, statesOptional } = getBuyFormState(state)\r\n const planData = getPlanData(state)\r\n const selectedPlanDetails = getCurrentPlan(selectedPlanSku, planData)\r\n const isUserUpgrading = getUpgradingStatus(accountSubscriptions)\r\n const currSelectedPlan = getCurrentPlan(selectedPlanSku, planData)\r\n const coupon = getCouponState(state)\r\n const { isCouponValidAndApplied, urlCouponCode } = coupon\r\n const couponServerData = getActiveCouponServerData(coupon, currSelectedPlan)\r\n const {\r\n userType,\r\n existingAccountInformation,\r\n loggedIn: { isUserLoggedIn },\r\n } = getUserState(state)\r\n const { fatalErrorBlocker } = getFatalError(state)\r\n const currentAgent = getCurrentAgent(currSelectedPlan.addons)\r\n const currentEndpoint = getCurrentEndpoint(currSelectedPlan.addons)\r\n const { locationInfo } = getLocationState(state)\r\n const { locale: Locale, currency: CurrencyCode } = locationInfo\r\n const baseTierMonthlyPrice: number = get(\r\n selectedPlanDetails,\r\n ['pricingInfo', CurrencyCode, 'monthly', `tier${selectedTierIndex + 1}`, 'price'],\r\n 0\r\n )\r\n const baseTierAnnualPrice: number = get(\r\n selectedPlanDetails,\r\n ['pricingInfo', CurrencyCode, 'annual', `tier${selectedTierIndex + 1}`, 'price'],\r\n 0\r\n )\r\n\r\n // TODO: property to be added for monthly annual contract\r\n const baseTierMonthlyAnnualContractPrice: number = get(\r\n selectedPlanDetails,\r\n ['pricingInfo', CurrencyCode, '', `tier${selectedTierIndex + 1}`, 'price'],\r\n 0\r\n )\r\n\r\n const extraAddons = getExtraAddons(currSelectedPlan.addons).reverse()\r\n const isYearlyBillingFrequency = billingFrequency === TimePeriod.Year\r\n\r\n return {\r\n content: {\r\n selectedPlan,\r\n changePlan,\r\n upgradeClose,\r\n quantityLabelLong,\r\n quantityLabelPlural,\r\n quantityLabel,\r\n continue: contentContinue,\r\n quantityPopupInfo,\r\n additionalUserLicences,\r\n howManyMore,\r\n existingUserLicencePlural,\r\n existingUserLicense,\r\n additional,\r\n changePlanMethodModalHeader,\r\n changePlanModalSubheader,\r\n modalCloseButtonText,\r\n edit,\r\n changeNumberModalHeader,\r\n changeNumberModalContent,\r\n changePlanUrl,\r\n couponDisclaimer,\r\n monthly,\r\n annual,\r\n user,\r\n year,\r\n month,\r\n billedMonthlyPrice,\r\n billedAnnualPrice,\r\n selectAddons,\r\n selectAddonsDescription,\r\n per,\r\n organizer,\r\n taxTooltip,\r\n agentsVolumediscountTooltip,\r\n endpointsVolumediscountTooltip,\r\n mobileVolumediscountTooltip,\r\n cameraShareVolumediscountTooltip,\r\n endpointProtectionVolumediscountTooltip,\r\n proratedadjustmentTooltip,\r\n },\r\n organizers,\r\n planData,\r\n selectedPlan: currSelectedPlan,\r\n isUserLoggedIn,\r\n selectedAddons,\r\n userType,\r\n fatalErrorBlocker,\r\n existingAccountInformation,\r\n initialData,\r\n billingFrequency,\r\n isCouponValidAndApplied,\r\n urlCouponCode,\r\n couponServerData,\r\n locale: Locale,\r\n selectedTierIndex,\r\n CurrencyCode,\r\n coupon,\r\n currentAgent,\r\n currentEndpoint,\r\n endpoints,\r\n baseTierMonthlyPrice,\r\n baseTierAnnualPrice,\r\n extraAddons,\r\n isYearlyBillingFrequency,\r\n extraAddonsSelected,\r\n agents,\r\n accountSubscriptions,\r\n calculatedTotal,\r\n totalLoading,\r\n statesOptional,\r\n isUserUpgrading,\r\n baseTierMonthlyAnnualContractPrice,\r\n }\r\n}\r\nexport const mapResolveCustomizeActions = {\r\n setOrganizers: (organizer: number) => resolveCheckoutActions.setOrganizers(organizer),\r\n setSelectedAddons: (addons: ResolveSelectedAddon[]) => resolveCheckoutActions.setSelectedAddons(addons),\r\n calculatePrice: (values: ResolveBuyFormData, planSKU?: string) =>\r\n resolveCheckoutActions.calculatePrice(values, 'customize', planSKU),\r\n setSelectedPlan: (planSku: string) => resolveCheckoutActions.setSelectedPlan(planSku),\r\n setExtraAddons: (addons: ResolveAddon[]) => resolveCheckoutActions.setExtraAddons(addons),\r\n setEndpoints: (endpoints: number) => resolveCheckoutActions.setEndpoints(endpoints),\r\n setAgents: (agents: number) => resolveCheckoutActions.setAgents(agents),\r\n}\r\n\r\nexport type ResolveCustomizeActionsType = typeof mapResolveCustomizeActions\r\n","import { get, isEmpty } from 'lodash-es'\r\nimport { formatDate } from '@common/utils'\r\n\r\nimport { AppState } from 'app-store'\r\nimport { BillingPeriod, TimePeriod } from '@common/constants'\r\nimport {\r\n getUserState,\r\n getLabelContent,\r\n getCheckoutState,\r\n getPlanData,\r\n getCouponState,\r\n} from '@gtresolve/state/selectors'\r\nimport { getCurrentPlan } from '@gtresolve/utils/get-current-plan'\r\nimport {\r\n getCurrentAddons,\r\n getCurrentAgent,\r\n getCurrentEndpoint,\r\n getExtraAddons,\r\n} from '@gtresolve/utils/get-current-addons'\r\nimport { ResolvePlan } from '@gtresolve/state/plan'\r\nimport { resolveCheckoutActions } from '@gtresolve/state/checkout/actions'\r\nimport { getActiveCouponServerData, getSubscriptionInfo } from '@gtresolve/utils'\r\nimport { ADDONS } from '@gtresolve/constants'\r\nimport { getAddonVolumeDiscount } from '@gtresolve/utils/calculate-volume-discount'\r\nimport { getAccountState, getMarketingState, getLocationState, getModalState } from '@common/state/selectors'\r\nimport { marketingActions } from '@common/state/marketing/actions'\r\nimport { modalActions } from '@common/state/modal/actions'\r\nimport { ResolveAddon } from '@gtresolve/state/add-on'\r\nimport { getContentLanguage } from '@gtresolve/utils/language-helpers'\r\nimport { ResolveOrderSummaryState } from './state'\r\n\r\nexport const mapResolveOrderSummaryState = (state: AppState): ResolveOrderSummaryState => {\r\n const content = getLabelContent(state)\r\n\r\n const { locationInfo } = getLocationState(state)\r\n const { locale: Locale, currency: CurrencyCode } = locationInfo\r\n\r\n const {\r\n selectedAddons,\r\n billingFrequency,\r\n selectedPlanSku,\r\n calculatedTotal,\r\n calculatedTax,\r\n calculatedCredit,\r\n productPrices,\r\n anniversaryDate,\r\n calculatedNetTotal,\r\n totalLoading,\r\n currentVolumeDiscountPrice,\r\n selectedTierIndex,\r\n calculatedProratedAmount,\r\n endpoints,\r\n agents: totalAgents,\r\n } = getCheckoutState(state)\r\n const language = getContentLanguage()\r\n const modal = getModalState(state)\r\n const planData: ResolvePlan[] = getPlanData(state)\r\n const selectedPlan = getCurrentPlan(selectedPlanSku, planData)\r\n const coupon = getCouponState(state)\r\n const { couponProcessedDataPerSku, isCouponValidAndApplied, couponDoubleDipAmountForNewUser } = coupon\r\n const couponServerData = getActiveCouponServerData(coupon, selectedPlan)\r\n const couponDiscountType = couponServerData ? couponServerData.couponDiscountType : null\r\n const currSelectedAddons = getCurrentAddons(selectedAddons, selectedPlan)\r\n const currentTier = `tier${selectedTierIndex + 1}`\r\n const billingFrequencyKey = billingFrequency === TimePeriod.Year ? BillingPeriod.ANNUAL : BillingPeriod.MONTHLY\r\n const baseTierAnnualPrice: number = get(\r\n selectedPlan,\r\n ['pricingInfo', CurrencyCode, 'annual', currentTier, 'price'],\r\n 0\r\n )\r\n const baseTierMonthlyPrice: number = get(\r\n selectedPlan,\r\n ['pricingInfo', CurrencyCode, 'monthly', currentTier, 'price'],\r\n 0\r\n )\r\n const currentTierPrice: number = get(\r\n selectedPlan,\r\n ['pricingInfo', CurrencyCode, billingFrequencyKey, currentTier, 'price'],\r\n 0\r\n )\r\n\r\n const {\r\n userType,\r\n existingAccountInformation,\r\n loggedIn: { isUserLoggedIn },\r\n } = getUserState(state)\r\n\r\n const { accountSubscriptions } = getAccountState(state)\r\n const { displayOptOut, isUserOptOut } = getMarketingState(state)\r\n const subscriptionInfo = getSubscriptionInfo(billingFrequency, selectedPlan, planData, accountSubscriptions)\r\n\r\n const planStartDate = formatDate(\r\n new Date(accountSubscriptions.find((sub) => sub.productSku === selectedPlan.sKU)?.startDate ?? Date.now()),\r\n 'UTC',\r\n 'en-US'\r\n )\r\n\r\n const extraAddonsSelected = getExtraAddons(currSelectedAddons)\r\n const currentAgent = getCurrentAgent(currSelectedAddons)\r\n const currentEndpoint = getCurrentEndpoint(currSelectedAddons)\r\n const disablePlanSelection = !subscriptionInfo.isReplacementBooking\r\n const disableExtraAddons = false\r\n const { includedAgents } = subscriptionInfo\r\n const { includedEndpoints } = subscriptionInfo\r\n const agentsAdded = (currentAgent && currentAgent.quantity > 0 ? currentAgent : null) as ResolveAddon\r\n const endpointsAdded = (currentEndpoint && currentEndpoint.quantity > 0 ? currentEndpoint : null) as ResolveAddon\r\n const agentContent = getCurrentAgent(selectedPlan.addons)\r\n\r\n const agentsPrice: number =\r\n agentsAdded && get(agentsAdded, ['pricingInfo', CurrencyCode, billingFrequencyKey, currentTier, 'price'], 0)\r\n const endpointsPrice: number =\r\n endpointsAdded &&\r\n get(endpointsAdded, ['pricingInfo', CurrencyCode, billingFrequencyKey, currentTier, 'price'], 0)\r\n\r\n let addonsVolumeDiscountTotal = 0\r\n\r\n if (agentsAdded) {\r\n const { discountPrice, tierIndex } = getAddonVolumeDiscount(\r\n agentsAdded,\r\n totalAgents - selectedPlan.userAgentsIncludedAmount,\r\n CurrencyCode,\r\n billingFrequencyKey,\r\n currentTier,\r\n totalAgents - includedAgents\r\n )\r\n agentsAdded.discountPrice = discountPrice\r\n agentsAdded.tier = `Tier${tierIndex}`\r\n addonsVolumeDiscountTotal += discountPrice\r\n }\r\n\r\n if (endpointsAdded) {\r\n const { discountPrice, tierIndex } = getAddonVolumeDiscount(\r\n endpointsAdded,\r\n (endpoints - selectedPlan.endpointsIncludedAmount) / ADDONS.ENDPOINTS_ADDONS_INTERVAL,\r\n CurrencyCode,\r\n billingFrequencyKey,\r\n currentTier,\r\n (endpoints - includedEndpoints) / ADDONS.ENDPOINTS_ADDONS_INTERVAL\r\n )\r\n endpointsAdded.discountPrice = discountPrice\r\n endpointsAdded.tier = `Tier${tierIndex}`\r\n addonsVolumeDiscountTotal += discountPrice\r\n }\r\n\r\n if (extraAddonsSelected.length) {\r\n // Swap the Mobile/Camera-Share Addons positions to show the \"Mobile Addons\" on top in case both the addons are selected and `Camera Share` addon is first selected\r\n if (extraAddonsSelected.length > 1 && extraAddonsSelected[0].sKU === ADDONS.CAMERA_SHARE_ADDON) {\r\n extraAddonsSelected.reverse()\r\n }\r\n\r\n if (extraAddonsSelected.length === 3) {\r\n const epp = extraAddonsSelected.filter((addon) => addon.sKU === ADDONS.ENDPOINT_PROTECTION_ADDON).pop()\r\n if (epp) {\r\n const endpointIndex = extraAddonsSelected.indexOf(epp)\r\n extraAddonsSelected.splice(endpointIndex, 1)\r\n extraAddonsSelected.splice(1, 0, epp)\r\n }\r\n }\r\n extraAddonsSelected.forEach((addon) => {\r\n /* eslint-disable no-param-reassign */\r\n const { discountPrice, tierIndex } = getAddonVolumeDiscount(\r\n addon,\r\n addon.sKU === ADDONS.ENDPOINT_PROTECTION_ADDON ? endpoints : totalAgents,\r\n CurrencyCode,\r\n billingFrequencyKey,\r\n currentTier,\r\n addon.quantity\r\n )\r\n addon.discountPrice = discountPrice\r\n addon.tier = `Tier${tierIndex}`\r\n addonsVolumeDiscountTotal += discountPrice\r\n })\r\n }\r\n const isCouponValid = coupon.isCouponValidAndApplied && coupon.couponServerData && !isEmpty(coupon.couponServerData)\r\n const couponCode = isCouponValid ? coupon.couponServerData?.couponCode ?? '' : ''\r\n\r\n return {\r\n content: {\r\n ...content,\r\n proratedadjustmentTooltip: content.proratedadjustmentTooltip.replace('{proratedDate}', planStartDate),\r\n },\r\n agentContent,\r\n modal,\r\n Locale,\r\n CurrencyCode,\r\n selectedAddons: currSelectedAddons,\r\n billingFrequency,\r\n selectedPlan,\r\n calculatedTax,\r\n calculatedTotal,\r\n calculatedCredit,\r\n isUserLoggedIn,\r\n productPrices,\r\n anniversaryDate,\r\n calculatedNetTotal,\r\n calculatedProratedAmount,\r\n userType,\r\n existingAccountInformation,\r\n totalLoading,\r\n currentVolumeDiscountPrice,\r\n baseTierAnnualPrice,\r\n baseTierMonthlyPrice,\r\n currentTierPrice,\r\n couponProcessedDataPerSku,\r\n isCouponValidAndApplied,\r\n couponDiscountType,\r\n couponDoubleDipAmountForNewUser,\r\n agentsAdded,\r\n endpointsAdded,\r\n agentsPrice,\r\n endpointsPrice,\r\n currentTier,\r\n endpoints,\r\n extraAddonsSelected,\r\n addonsVolumeDiscountTotal,\r\n totalAgents,\r\n disablePlanSelection,\r\n disableExtraAddons,\r\n includedAgents,\r\n includedEndpoints,\r\n displayOptOut,\r\n isUserOptOut,\r\n subscriptionInfo,\r\n planData,\r\n couponCode,\r\n language,\r\n }\r\n}\r\n\r\nexport const mapResolveOrderSummaryActions = {\r\n setBillingFrequency: (frequency: TimePeriod) => resolveCheckoutActions.setBillingFrequency(frequency),\r\n setIsUserOptOut: (isUserOutOut: boolean) => marketingActions.setIsUserOptOut(isUserOutOut),\r\n setDisplayOptOut: (displayOutOut: boolean) => marketingActions.setDisplayOptOut(displayOutOut),\r\n closeErrorModal: () => modalActions.setModalOpen(false),\r\n}\r\n\r\nexport type ResolveOrderSummaryActionsType = typeof mapResolveOrderSummaryActions\r\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"password-validation-module__wrapper\",\"wrapper--compact\":\"password-validation-module__wrapper--compact\",\"requirements\":\"password-validation-module__requirements\",\"subhead\":\"password-validation-module__subhead\",\"label\":\"password-validation-module__label\",\"label--focused\":\"password-validation-module__label--focused\",\"password-wrapper\":\"password-validation-module__password-wrapper\",\"password-wrapper--focused\":\"password-validation-module__password-wrapper--focused\",\"password-wrapper--error\":\"password-validation-module__password-wrapper--error\",\"password-wrapper--disabled\":\"password-validation-module__password-wrapper--disabled\",\"password-wrapper--valid\":\"password-validation-module__password-wrapper--valid\",\"eye\":\"password-validation-module__eye\",\"subhead--error\":\"password-validation-module__subhead--error\"};","import React, { FunctionComponent, useState } from 'react'\r\nimport classNames from 'classnames'\r\nimport { Input, InputProps, PasswordStrengthIndicator } from '@common/components'\r\n\r\nimport Eye from '@common/images/icon-pw-show@2x.svg'\r\nimport EyeClosed from '@common/images/icon-pw-hide@2x.svg'\r\n\r\nimport styles from './password-validation.module.css'\r\n\r\nexport interface ResolvePasswordValidationProps extends InputProps {\r\n label: string\r\n touched: boolean\r\n genericPasswordLabel: string\r\n modifier?: string\r\n passwordStrength: string\r\n passwordStrengthLevel1: string\r\n passwordStrengthLevel2: string\r\n passwordStrengthLevel3: string\r\n passwordStrengthLevel4: string\r\n passwordStrengthTip1: string\r\n passwordStrengthTip2: string\r\n passwordStrengthTip3: string\r\n passwordStrengthTipDrawer: string\r\n isSubmittingRef: React.RefObject\r\n}\r\n\r\nexport const ResolvePasswordValidation: FunctionComponent = ({\r\n touched,\r\n genericPasswordLabel,\r\n modifier = '',\r\n passwordStrength,\r\n passwordStrengthLevel1,\r\n passwordStrengthLevel2,\r\n passwordStrengthLevel3,\r\n passwordStrengthLevel4,\r\n passwordStrengthTipDrawer,\r\n passwordStrengthTip1,\r\n passwordStrengthTip2,\r\n passwordStrengthTip3,\r\n isSubmittingRef,\r\n ...props\r\n}) => {\r\n const { id, label, error, value = '', disabled, valid } = props\r\n\r\n const [showPW, setShowPW] = useState(false)\r\n const [isPWFocused, setIsPWFocused] = useState(false)\r\n\r\n const setFocusState = (e: React.FocusEvent) => {\r\n setIsPWFocused(true)\r\n if (props.onFocus) props.onFocus(e)\r\n }\r\n\r\n const setBlurState = (e: React.FocusEvent) => {\r\n setIsPWFocused(false)\r\n if (props.onBlur) props.onBlur(e)\r\n }\r\n\r\n const classList = classNames({\r\n [styles.wrapper]: true,\r\n [modifier]: !!modifier,\r\n })\r\n\r\n const InputWrapperClassList = classNames({\r\n [styles['password-wrapper']]: true,\r\n [styles['password-wrapper--focused']]: isPWFocused,\r\n [styles['password-wrapper--error']]: error,\r\n [styles['password-wrapper--disabled']]: disabled,\r\n [styles['password-wrapper--valid']]: valid,\r\n })\r\n\r\n const labelClasslist = classNames({\r\n [styles.label]: true,\r\n [styles['label--focused']]: isPWFocused || valid || value,\r\n })\r\n\r\n return (\r\n
\r\n \r\n
\r\n setBlurState(e)}\r\n onFocus={(e) => setFocusState(e)}\r\n type={showPW ? 'text' : 'password'}\r\n />\r\n \r\n
\r\n\r\n \r\n
\r\n )\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"order-summary-module__header\",\"section\":\"order-summary-module__section\",\"sub-section\":\"order-summary-module__sub-section\",\"row\":\"order-summary-module__row\",\"item\":\"order-summary-module__item\",\"item-title\":\"order-summary-module__item-title\",\"item-sub-title\":\"order-summary-module__item-sub-title\",\"item-sub-line\":\"order-summary-module__item-sub-line\",\"small\":\"order-summary-module__small\",\"teal\":\"order-summary-module__teal\",\"light\":\"order-summary-module__light\",\"total\":\"order-summary-module__total\",\"row--subtotal\":\"order-summary-module__row--subtotal\",\"row--total\":\"order-summary-module__row--total\",\"row--total-note\":\"order-summary-module__row--total-note\",\"order-tooltip\":\"order-summary-module__order-tooltip\",\"order-tooltip-content\":\"order-summary-module__order-tooltip-content\"};","import React, { FunctionComponent, memo } from 'react'\r\n\r\nimport { ResolveAddon } from '@gtresolve/state/add-on'\r\nimport { ADDONS } from '@gtresolve/constants'\r\nimport { getAddonPrice } from '@gtresolve/utils'\r\nimport { ConnectedResolveFormatCurrency } from '@gtresolve/connectedComponents'\r\nimport { Tooltip } from '@common/components'\r\n// Import Local Styles\r\nimport { ResolveCouponProcessedDataPerSku } from '@gtresolve/state/coupon/state'\r\nimport { isEmpty } from 'lodash-es'\r\nimport styles from '../../connectedComponents/OrderSummary/order-summary.module.css'\r\n\r\nexport interface ResolveOrderSummaryAddonsProps {\r\n addon: ResolveAddon\r\n showSubtotal?: boolean\r\n isAnnual: boolean\r\n currency: string\r\n content: {\r\n year: string\r\n month: string\r\n months: string\r\n percentageOffPromoDiscount: string\r\n percentageOffVolumeDiscount: string\r\n prorateDiscount: string\r\n tooltips: {\r\n [key: string]: string\r\n }\r\n }\r\n couponProcessedDataPerSku: ResolveCouponProcessedDataPerSku | null\r\n isCouponValidAndApplied: boolean\r\n isPercentageCoupon: boolean\r\n currentTier: string\r\n quantity?: number\r\n title?: string\r\n prorateDiscount?: number\r\n subLabels?: string[]\r\n}\r\n\r\nexport const ResolveOrderSummaryAddons: FunctionComponent = ({\r\n addon,\r\n showSubtotal = true,\r\n isAnnual,\r\n currency,\r\n content,\r\n couponProcessedDataPerSku,\r\n isCouponValidAndApplied,\r\n isPercentageCoupon,\r\n currentTier,\r\n quantity,\r\n title,\r\n subLabels = [],\r\n prorateDiscount,\r\n}) => {\r\n if (!addon) return null\r\n const addonCouponData = couponProcessedDataPerSku ? couponProcessedDataPerSku[addon.sKU] : null\r\n const isCouponAppliedtoAddon =\r\n isCouponValidAndApplied && couponProcessedDataPerSku && addonCouponData && !isEmpty(addonCouponData)\r\n const addonCouponDiscountPercentage = addonCouponData?.discountPercentage || 0\r\n const addonCouponDiscountAmount = addonCouponData?.discountTotalSavings || 0\r\n const discountLineClasses = `${styles.small} ${styles.teal} ${styles['sub-section']}`\r\n const addonPrice = getAddonPrice(addon, isAnnual, currency, currentTier)\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n {showSubtotal && (\r\n \r\n \r\n \r\n )}\r\n
\r\n\r\n
\r\n \r\n {subLabels.map((label) => (\r\n \r\n {label.split(/ /).map((word) =>\r\n word === ADDONS.ADDON_PRICE_REPLACE ? (\r\n \r\n {' '}\r\n \r\n ) : (\r\n `${word} `\r\n )\r\n )}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n\r\n {isCouponAppliedtoAddon && (\r\n
\r\n \r\n \r\n {isPercentageCoupon ? (\r\n `${addonCouponDiscountPercentage}%`\r\n ) : (\r\n \r\n )}\r\n  \r\n \r\n {content.percentageOffVolumeDiscount}\r\n \r\n \r\n -\r\n \r\n \r\n
\r\n )}\r\n\r\n {!!prorateDiscount && (\r\n
\r\n \r\n {content.prorateDiscount} \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport const ResolveMemoOrderSummaryAddon = memo(ResolveOrderSummaryAddons)\r\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"payment-info-module__wrapper\",\"cc-grid\":\"payment-info-module__cc-grid\",\"cc-grid--hidden\":\"payment-info-module__cc-grid--hidden\",\"heading\":\"payment-info-module__heading\",\"cc\":\"payment-info-module__cc\",\"exp-date\":\"payment-info-module__exp-date\",\"cvv\":\"payment-info-module__cvv\",\"cvv-wrapper\":\"payment-info-module__cvv-wrapper\",\"cc-wrapper\":\"payment-info-module__cc-wrapper\",\"credit-card\":\"payment-info-module__credit-card\",\"credit-card--error\":\"payment-info-module__credit-card--error\",\"credit-card--focus\":\"payment-info-module__credit-card--focus\",\"credit-card--valid\":\"payment-info-module__credit-card--valid\",\"cc-img\":\"payment-info-module__cc-img\",\"error\":\"payment-info-module__error\",\"optional\":\"payment-info-module__optional\",\"terms\":\"payment-info-module__terms\",\"submit\":\"payment-info-module__submit\",\"optout-button\":\"payment-info-module__optout-button\",\"optout-checkbox\":\"payment-info-module__optout-checkbox\",\"payment-details\":\"payment-info-module__payment-details\",\"secure-badge\":\"payment-info-module__secure-badge\",\"secure-icon\":\"payment-info-module__secure-icon\"};","// import dependencies\r\nimport React, { FunctionComponent, useMemo, useEffect, useState } from 'react'\r\n\r\nimport { Checkbox, CommonButton, ConvertStringToReact, ToggleButton, Tooltip, TrustArcLogo } from '@common/components'\r\nimport { TimePeriod, COUPON_DISCOUNT_TYPE, PRODUCT_SKU, BillingPeriodKey } from '@common/constants'\r\nimport { getSessionState, saveSessionState, connectRedux, GoToComponentProps, formatDate } from '@common/utils'\r\n\r\nimport { ConnectedResolveFormatCurrency } from '@gtresolve/connectedComponents'\r\nimport { RESOLVE_USER_TYPES, ADDONS } from '@gtresolve/constants'\r\nimport {\r\n mapResolveOrderSummaryState,\r\n mapResolveOrderSummaryActions,\r\n ResolveOrderSummaryActionsType,\r\n} from '@gtresolve/connectedComponents/OrderSummary/connector'\r\nimport { ConnectedModal } from '@common/connectedComponents/Modal'\r\nimport { ResolveOrderSummaryState } from '@gtresolve/connectedComponents/OrderSummary/state'\r\nimport { calculateTotalPriceWithAddons, getCouponTotalSavings, getAddonPrice } from '@gtresolve/utils'\r\nimport { ResolveMemoOrderSummaryAddon } from '@gtresolve/components'\r\nimport { getAddonProrateAmount } from '@gtresolve/utils/calculate-prorated-amount'\r\n\r\nimport { isEmpty } from 'lodash-es'\r\nimport toggleStyles from '@common/components/ToggleButton/toggle-button.module.css'\r\nimport paymentStyles from '../PaymentFormInfo/payment-info.module.css'\r\nimport styles from './order-summary.module.css'\r\n\r\ntype ResolveOrderSummaryProps = GoToComponentProps<\r\n ResolveOrderSummaryState,\r\n ResolveOrderSummaryActionsType,\r\n {\r\n hidePrice?: boolean\r\n isTabletOrMobileView?: boolean\r\n isMobileView?: boolean\r\n }\r\n>\r\n\r\ntype addonsContentType = {\r\n year: string\r\n month: string\r\n months: string\r\n percentageOffPromoDiscount: string\r\n percentageOffVolumeDiscount: string\r\n prorateDiscount: string\r\n totalVolumeDiscount: string\r\n tooltips: {\r\n [key: string]: string\r\n }\r\n}\r\n\r\nconst ResolveOrderSummary: FunctionComponent = ({ state, actions, props }) => {\r\n const {\r\n billingFrequency,\r\n selectedPlan,\r\n selectedAddons,\r\n content,\r\n CurrencyCode,\r\n currentVolumeDiscountPrice,\r\n baseTierAnnualPrice,\r\n baseTierMonthlyPrice,\r\n currentTierPrice,\r\n calculatedCredit,\r\n calculatedProratedAmount,\r\n couponProcessedDataPerSku,\r\n isCouponValidAndApplied,\r\n couponDiscountType,\r\n couponDoubleDipAmountForNewUser,\r\n agentsAdded,\r\n endpointsAdded,\r\n extraAddonsSelected,\r\n currentTier,\r\n addonsVolumeDiscountTotal,\r\n disablePlanSelection,\r\n productPrices,\r\n totalAgents,\r\n endpoints: totalEndpoints,\r\n couponCode,\r\n language,\r\n } = state\r\n // coupon discounts\r\n const planCouponData = couponProcessedDataPerSku ? couponProcessedDataPerSku[selectedPlan.sKU] : null\r\n const isCouponAppliedtoPlan = isCouponValidAndApplied && !isEmpty(planCouponData)\r\n const planCouponDiscountPercentage = planCouponData?.discountPercentage || 0\r\n const planCouponDiscountAmount = planCouponData?.discountTotalSavings || 0\r\n const isPercentageCoupon = couponDiscountType === COUPON_DISCOUNT_TYPE.PERCENTAGEOFF\r\n const totalCouponDiscountSavings = getCouponTotalSavings(\r\n isCouponValidAndApplied,\r\n couponProcessedDataPerSku,\r\n couponDoubleDipAmountForNewUser\r\n )\r\n const isRepriceCouponAndApplied = couponDiscountType === COUPON_DISCOUNT_TYPE.REPRICE && isCouponAppliedtoPlan\r\n const isAnnual = billingFrequency === TimePeriod.Year\r\n const [isAnnualOnly, setIsAnnualOnly] = useState(false)\r\n const [toggleContent, setToggleContent] = useState({})\r\n\r\n // tier 1 (base tier) price to calculate discounts off\r\n let calculatedBasePrice = isAnnual ? baseTierMonthlyPrice * 12 : baseTierMonthlyPrice\r\n if (\r\n selectedPlan.sKU === PRODUCT_SKU.GTR_REMOTE_SUPPORT_NAMED_V2 ||\r\n selectedPlan.sKU === PRODUCT_SKU.GTR_REMOTE_ACCESS\r\n ) {\r\n calculatedBasePrice =\r\n (isAnnual ? baseTierMonthlyPrice * 12 : baseTierMonthlyPrice) *\r\n (agentsAdded?.quantity ? agentsAdded?.quantity + 1 : 1)\r\n }\r\n // only used in UI display\r\n const basePriceTotal = calculatedBasePrice\r\n\r\n // coupon processed current Tier price\r\n const couponProcessedMonthlyCurrentTierPrice = isRepriceCouponAndApplied ? baseTierMonthlyPrice : currentTierPrice\r\n const couponProcessedAnnualCurrentTierPrice = isRepriceCouponAndApplied ? baseTierAnnualPrice : currentTierPrice\r\n\r\n // current selected tier to calculate total off\r\n const calculatedMonthlyPrice = couponProcessedMonthlyCurrentTierPrice\r\n const calculatedAnnualPrice = couponProcessedAnnualCurrentTierPrice * 12\r\n let calculatedTotalPriceForPlan = isAnnual ? calculatedAnnualPrice : calculatedMonthlyPrice\r\n\r\n if (\r\n selectedPlan.sKU === PRODUCT_SKU.GTR_REMOTE_SUPPORT_NAMED_V2 ||\r\n selectedPlan.sKU === PRODUCT_SKU.GTR_REMOTE_ACCESS\r\n ) {\r\n calculatedTotalPriceForPlan *= agentsAdded?.quantity ? agentsAdded?.quantity + 1 : 1\r\n }\r\n\r\n // annual discount off the selected tier\r\n let annualDiscountAmount = (baseTierMonthlyPrice - baseTierAnnualPrice) * 12\r\n if (\r\n selectedPlan.sKU === PRODUCT_SKU.GTR_REMOTE_SUPPORT_NAMED_V2 ||\r\n selectedPlan.sKU === PRODUCT_SKU.GTR_REMOTE_ACCESS\r\n ) {\r\n annualDiscountAmount *= agentsAdded?.quantity ? agentsAdded?.quantity + 1 : 1\r\n }\r\n\r\n // total of extra add-ons\r\n const totalExtraAddOns = extraAddonsSelected.reduce(\r\n (previousSum, addon) =>\r\n previousSum + getAddonPrice(addon, isAnnual, CurrencyCode, currentTier) * addon.quantity,\r\n 0\r\n )\r\n\r\n // total price of plan plus addons (volume discount is already accounted in the plan)\r\n const currentTotalPrice = useMemo(\r\n () =>\r\n calculateTotalPriceWithAddons(\r\n disablePlanSelection ? 0 : calculatedTotalPriceForPlan,\r\n selectedAddons,\r\n selectedPlan,\r\n isAnnual,\r\n CurrencyCode,\r\n currentTier\r\n ),\r\n [\r\n calculatedTotalPriceForPlan,\r\n isAnnual,\r\n selectedAddons,\r\n selectedPlan,\r\n CurrencyCode,\r\n currentTier,\r\n disablePlanSelection,\r\n ]\r\n )\r\n\r\n const calculatedProrateAmount = calculatedProratedAmount < 0 ? Math.abs(calculatedProratedAmount) : 0\r\n\r\n // total savings (add the prorated discount only if its negative, otherwise its not a saving anymore)\r\n const discountSavingsWithoutAnunualOnly =\r\n (isAnnual ? annualDiscountAmount : 0) +\r\n currentVolumeDiscountPrice +\r\n calculatedProrateAmount +\r\n totalCouponDiscountSavings\r\n\r\n const discountSavingsWithAnunualOnly =\r\n currentVolumeDiscountPrice + calculatedProrateAmount + totalCouponDiscountSavings\r\n\r\n const discountSavings = !isAnnualOnly ? discountSavingsWithoutAnunualOnly : discountSavingsWithAnunualOnly\r\n\r\n const totalDiscountSavings =\r\n (disablePlanSelection ? calculatedProrateAmount : discountSavings) +\r\n addonsVolumeDiscountTotal +\r\n calculatedCredit\r\n\r\n const subtotalWithCouponDiscounts = currentTotalPrice - totalCouponDiscountSavings - calculatedCredit\r\n const subtotal = state.calculatedNetTotal ? state.calculatedNetTotal : subtotalWithCouponDiscounts\r\n const total = state.calculatedTotal ? state.calculatedTotal : subtotal\r\n\r\n // labels and state display\r\n const isAddonFlow = state.isUserLoggedIn && state.userType === RESOLVE_USER_TYPES.ADDON\r\n const displayProrated =\r\n isAddonFlow && calculatedProratedAmount !== 0 && state.anniversaryDate && state.anniversaryDate.length > 1\r\n\r\n // annual only\r\n const basePriceTotalAnnualOnly = basePriceTotal - annualDiscountAmount\r\n\r\n useEffect(() => {\r\n if (\r\n selectedPlan.billingPeriods.length === 1 &&\r\n selectedPlan.billingPeriods.find((item) => item.key === BillingPeriodKey.ANNUAL)\r\n ) {\r\n setIsAnnualOnly(true)\r\n } else {\r\n setIsAnnualOnly(false)\r\n }\r\n selectedPlan.billingPeriods.forEach((item) => {\r\n if (item.key === BillingPeriodKey.ANNUAL) {\r\n setToggleContent((prevState) => {\r\n return {\r\n ...prevState,\r\n label2: item.name,\r\n }\r\n })\r\n } else {\r\n setToggleContent((prevState) => {\r\n return {\r\n ...prevState,\r\n label1: item.name,\r\n }\r\n })\r\n }\r\n })\r\n }, [selectedPlan])\r\n\r\n const addonsContent: addonsContentType = {\r\n year: content.year,\r\n month: content.month,\r\n months: content.months,\r\n percentageOffPromoDiscount: content.percentageOffPromoDiscount,\r\n percentageOffVolumeDiscount: content.percentageOffVolumeDiscount,\r\n prorateDiscount: content.proratedAdjustment,\r\n totalVolumeDiscount: content.totalVolumeDiscount,\r\n tooltips: {\r\n [ADDONS.AGENT]: content.agentsVolumediscountTooltip,\r\n [ADDONS.ENDPOINT]: content.endpointsVolumediscountTooltip,\r\n [ADDONS.MOBILE_ADDON]: content.mobileVolumediscountTooltip,\r\n [ADDONS.CAMERA_SHARE_ADDON]: content.cameraShareVolumediscountTooltip,\r\n [ADDONS.ENDPOINT_PROTECTION_ADDON]: content.endpointProtectionVolumediscountTooltip,\r\n proratedadjustmentTooltip: content.proratedadjustmentTooltip,\r\n totalVolumeDiscountTooltip: content.totalVolumeDiscountTooltip,\r\n },\r\n }\r\n\r\n const anniversaryDate = displayProrated ? formatDate(new Date(state.anniversaryDate), 'UTC', state.Locale) : ''\r\n const proratedTooltip = `${content.billingCycleCredit} ${anniversaryDate} - ${content.today}`\r\n const discountLineClasses = `${styles.small} ${styles.teal}`\r\n\r\n useEffect(() => {\r\n const qualtricsData = getSessionState('qualtrics_data_gh')\r\n saveSessionState('qualtrics_data_gh', {\r\n ...(!qualtricsData ? {} : qualtricsData),\r\n // id: '', // added on GTM side\r\n sku: selectedPlan.sKU,\r\n purchase_term: isAnnual ? 'annual' : 'monthly',\r\n purchase_type: isAddonFlow ? 'addon' : 'new',\r\n order_total: calculatedTotalPriceForPlan,\r\n // referral_channel: '', // added on GTM side\r\n promo_code_applied: couponCode ?? '',\r\n site_language: language,\r\n })\r\n }, [selectedPlan.sKU, isAnnual, isAddonFlow, calculatedTotalPriceForPlan, couponCode, language])\r\n\r\n return (\r\n
\r\n
\r\n

{content.orderSummary}

\r\n {!isAnnualOnly && (\r\n actions.setBillingFrequency(isAnnual ? TimePeriod.Month : TimePeriod.Year)}\r\n disabled={isAddonFlow}\r\n isOn={isAnnual}\r\n modifier={toggleStyles['wrapper--order-summary']}\r\n id={`toggle-${Math.random()}`}\r\n isLarge\r\n />\r\n )}\r\n {!disablePlanSelection && (\r\n
\r\n
\r\n \r\n {state.selectedPlan.name}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n  x \r\n {(selectedPlan.sKU === PRODUCT_SKU.GTR_REMOTE_SUPPORT_NAMED_V2 ||\r\n selectedPlan.sKU === PRODUCT_SKU.GTR_REMOTE_ACCESS) &&\r\n (() => (\r\n <>\r\n {`${agentsAdded?.quantity ? agentsAdded?.quantity + 1 : 1} ${\r\n agentsAdded?.quantity\r\n ? state.agentContent.quantityLabelPlural\r\n : state.agentContent.quantityLabel\r\n }`}\r\n  x \r\n \r\n ))()}\r\n \r\n {isAnnual ? 12 : 1} {content.months}\r\n \r\n \r\n
\r\n
\r\n )}\r\n\r\n {agentsAdded &&\r\n selectedPlan.sKU !== PRODUCT_SKU.GTR_REMOTE_SUPPORT_NAMED_V2 &&\r\n selectedPlan.sKU !== PRODUCT_SKU.GTR_REMOTE_ACCESS && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {endpointsAdded && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {extraAddonsSelected.length >= 1 && (\r\n
\r\n
\r\n \r\n {content.addOns || 'Add-Ons'}\r\n \r\n \r\n \r\n \r\n
\r\n {extraAddonsSelected\r\n .filter((a) => a.quantity)\r\n .map((addon, index) => (\r\n \r\n ))}\r\n
\r\n )}\r\n\r\n {totalDiscountSavings > 0 && (\r\n
\r\n
\r\n \r\n {content.discount}\r\n \r\n \r\n -\r\n \r\n
\r\n {!isAnnualOnly && isAnnual && (\r\n
\r\n
\r\n \r\n {content.percentageOffAnnualDiscount}\r\n \r\n \r\n -\r\n \r\n
\r\n
\r\n )}\r\n {\r\n /* Use reduce to combine all volume discounts to an array with single object */\r\n extraAddonsSelected\r\n .concat(agentsAdded)\r\n .concat(endpointsAdded)\r\n .reduce(\r\n (prev, curr) => [\r\n {\r\n discountPrice: prev[0].discountPrice + (curr?.discountPrice ?? 0),\r\n discountPercentage:\r\n prev[0].discountPercentage + (curr?.discountPercentage ?? 0),\r\n },\r\n ],\r\n [\r\n {\r\n discountPrice:\r\n currentVolumeDiscountPrice > 0 ? currentVolumeDiscountPrice : 0,\r\n discountPercentage: 0,\r\n },\r\n ]\r\n )\r\n .map((addon) =>\r\n addon.discountPrice ? (\r\n \r\n
\r\n \r\n {addonsContent.totalVolumeDiscount}\r\n \r\n \r\n \r\n -\r\n \r\n
\r\n
\r\n ) : null\r\n )\r\n }\r\n {isCouponAppliedtoPlan && (\r\n
\r\n
\r\n \r\n \r\n {isPercentageCoupon ? (\r\n `${planCouponDiscountPercentage}%`\r\n ) : (\r\n \r\n )}\r\n  \r\n \r\n {content.percentageOffPromoDiscount}\r\n \r\n \r\n -\r\n \r\n \r\n
\r\n
\r\n )}\r\n {couponDoubleDipAmountForNewUser > 0 && (\r\n
\r\n
\r\n \r\n {content.couponAdjustmentSavings}\r\n \r\n \r\n \r\n -\r\n \r\n \r\n
\r\n
\r\n )}\r\n {displayProrated && (\r\n
\r\n
\r\n \r\n {content.proratedAdjustment}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n {calculatedCredit > 0 && (\r\n
\r\n
\r\n \r\n {content.upgradeSubscriptionCredit}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n\r\n
\r\n
\r\n {content.subtotal}\r\n \r\n {state.totalLoading ? '--' : }\r\n \r\n
\r\n
\r\n \r\n {content.estimatedTax}{' '}\r\n \r\n \r\n\r\n \r\n {state.totalLoading ? (\r\n '--'\r\n ) : (\r\n <>\r\n {state.calculatedTax ? (\r\n \r\n ) : (\r\n content.tBD\r\n )}\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n {content.total} {CurrencyCode}\r\n \r\n \r\n {state.totalLoading ? (\r\n `${content.calculating}...`\r\n ) : (\r\n 0 ? total : 0} />\r\n )}\r\n \r\n
\r\n
\r\n {isAnnual ? content.annualPlanNote : content.monthlyPlanNote}\r\n
\r\n {calculatedCredit > 0 && (\r\n \r\n \r\n {content.upgradeSubscriptionCreditNote &&\r\n content.upgradeSubscriptionCreditNote.replace(\r\n '{upgradeRemainingDays}',\r\n state.subscriptionInfo.remainingDays.toString()\r\n )}\r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n {' '}\r\n actions.setDisplayOptOut(!state.displayOptOut)}\r\n type=\"button\"\r\n >\r\n {content.optOut}\r\n \r\n {state.displayOptOut && (\r\n actions.setIsUserOptOut(!state.isUserOptOut)}\r\n qaTag=\"checkout-form-optout\"\r\n />\r\n )}\r\n
\r\n {!props.isTabletOrMobileView && }\r\n actions.closeErrorModal()}>\r\n
\r\n

{state.content.upgradeCreditErrorMessage}

\r\n
\r\n \r\n
\r\n actions.closeErrorModal()}>{state.content.upgradeClose}\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport const ConnectedResolveOrderSummary = connectRedux(\r\n ResolveOrderSummary,\r\n mapResolveOrderSummaryState,\r\n mapResolveOrderSummaryActions\r\n)\r\n\r\nexport default ConnectedResolveOrderSummary\r\n","// extracted by mini-css-extract-plugin\nexport default {\"subtitle\":\"customize-module__subtitle\",\"flex-header\":\"customize-module__flex-header\",\"addon-header__sub-text\":\"customize-module__addon-header__sub-text\",\"includes\":\"customize-module__includes\",\"light\":\"customize-module__light\",\"compare\":\"customize-module__compare\",\"label\":\"customize-module__label\",\"labelDescription\":\"customize-module__labelDescription\",\"description\":\"customize-module__description\",\"flex\":\"customize-module__flex\",\"disclaimer\":\"customize-module__disclaimer\",\"license\":\"customize-module__license\",\"logo\":\"customize-module__logo\",\"plan-summary\":\"customize-module__plan-summary\",\"plan-summary-row\":\"customize-module__plan-summary-row\",\"customize-submit-btn\":\"customize-module__customize-submit-btn\",\"plan-summary-base-price\":\"customize-module__plan-summary-base-price\",\"disabled-section\":\"customize-module__disabled-section\",\"addon-selector\":\"customize-module__addon-selector\",\"addon-header\":\"customize-module__addon-header\",\"addon-tooltip\":\"customize-module__addon-tooltip\",\"addon-selector-label\":\"customize-module__addon-selector-label\",\"addon-selector-select\":\"customize-module__addon-selector-select\",\"addon-selector-options-container\":\"customize-module__addon-selector-options-container\",\"addon-selector-option\":\"customize-module__addon-selector-option\",\"addon-selector-option--active\":\"customize-module__addon-selector-option--active\"};","import React, { FunctionComponent, useState, useEffect, useCallback } from 'react'\r\nimport classNames from 'classnames'\r\nimport { get, range } from 'lodash-es'\r\n\r\n// import components\r\nimport {\r\n BoxWrapper,\r\n CommonButton,\r\n ConvertStringToReact,\r\n TrustArcLogo,\r\n CardSelector,\r\n FormatCurrency,\r\n Tooltip,\r\n CustomDropdown,\r\n} from '@common/components'\r\nimport { connectRedux, formatDate, GoToComponentProps } from '@common/utils'\r\nimport { ConnectedModal } from '@common/connectedComponents/Modal'\r\nimport Pencil from '@common/images/icon-modify-on.svg'\r\nimport Logo from '@common/images/img-logo-gotoresolve.svg'\r\nimport { ConnectedResolveFormatCurrency } from '@gtresolve/connectedComponents/FormatCurrency'\r\nimport { ErrorMessage } from '@common/components/ErrorMessage'\r\n\r\nimport {\r\n ResolveCustomizeActionsType,\r\n mapResolveCustomizeActions,\r\n mapResolveCustomizeState,\r\n} from '@gtresolve/connectedComponents/Customize/connector'\r\nimport { isAddressComplete } from '@gtresolve/utils'\r\nimport { ResolveCustomizeState } from '@gtresolve/connectedComponents/Customize/state'\r\nimport { RESOLVE_USER_TYPES, ADDONS } from '@gtresolve/constants'\r\nimport { useCustomizePageTracking, useCustomizeCart } from '@gtresolve/hooks'\r\nimport { ResolveCardLabels } from '@gtresolve/components/Card'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { TimePeriod, PRODUCT_SKU, FEATURE_FLAGS } from '@common/constants'\r\nimport { DescriptionWithCard } from '@common/components/DescriptionWithCard'\r\nimport MobileAddon from '@common/images/icon-buyflow-mobile.svg'\r\nimport CameraAddon from '@common/images/icon-buyflow-camera.svg'\r\nimport EndpointProtectionAddon from '@common/images/icon-buyflow-endpoint.svg'\r\nimport { ResolveAddon } from '@gtresolve/state/add-on'\r\nimport { useFeatureFlags } from '@common/components/FeatureFlags'\r\nimport { useParams } from 'react-router-dom'\r\nimport { ConnectedResolveOrderSummary } from '../OrderSummary'\r\nimport styles from './customize.module.css'\r\nimport billingStyles from '../../views/Billing/billing.module.css'\r\n\r\ntype ParamTypes = {\r\n plan: string\r\n}\r\n\r\ntype ResolveCustomizeProps = GoToComponentProps<\r\n ResolveCustomizeState,\r\n ResolveCustomizeActionsType,\r\n {\r\n nextSteps: () => void\r\n isTabletOrMobileView?: boolean\r\n isMobileView?: boolean\r\n }\r\n>\r\n\r\nexport interface Icons {\r\n [key: string]: string\r\n}\r\n\r\nconst Customize: FunctionComponent = ({ state, actions, props }) => {\r\n const [initStateLoaded, setInitStateLoaded] = useState(false)\r\n const [isPlanModalOpen, setIsPlanModalOpen] = useState(false)\r\n const [showCustomAgentsExpanded, setShowCustomAgentsExpanded] = useState(false)\r\n const [showCustomDevicesExpanded, setShowCustomDevicesExpanded] = useState(false)\r\n\r\n const { monthly, annual, user, year, month, billedMonthlyPrice, billedAnnualPrice, organizer, per } = state.content\r\n\r\n const cardLabels: ResolveCardLabels = {\r\n monthly,\r\n annual,\r\n user,\r\n year,\r\n month,\r\n newLicenseCopy: '',\r\n highlightsLabel: '',\r\n billedMonthlyPrice,\r\n billedAnnualPrice,\r\n organizer,\r\n per,\r\n }\r\n\r\n const { featureFlagsLoaded, featureFlags } = useFeatureFlags()\r\n const cart = useCustomizeCart({ ...state, featureFlags: featureFlagsLoaded ? featureFlags : [] }, actions)\r\n const useNewResolveSkus = featureFlags?.includes(FEATURE_FLAGS.RESOLVE_USE_NEW_SKUS)\r\n const useCustomAgentsDevices = featureFlags?.includes(FEATURE_FLAGS.RESOLVE_USE_CUSTOM_AGENTS_DEVICES)\r\n const useRemoteSupportAgents =\r\n featureFlags?.includes(FEATURE_FLAGS.RESOLVE_USE_REMOTESUPPORT_AGENTS) &&\r\n ([PRODUCT_SKU.GTR_REMOTE_SUPPORT_NAMED_V2] as string[]).includes(state.selectedPlan?.sKU) &&\r\n (!state.isUserLoggedIn || state.userType === RESOLVE_USER_TYPES.TRIALER)\r\n\r\n useEffect(() => {\r\n if (state.selectedAddons.length > 0 && !initStateLoaded) {\r\n setInitStateLoaded(true)\r\n }\r\n }, [initStateLoaded, state.selectedAddons.length])\r\n\r\n const recalculatePrice = useCallback(\r\n (initialData: ResolveBuyFormData, planSKU?: string) => {\r\n if (isAddressComplete(initialData, state.statesOptional)) {\r\n actions.calculatePrice(initialData, planSKU)\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [actions]\r\n )\r\n\r\n useEffect(() => {\r\n recalculatePrice(state.initialData)\r\n }, [\r\n state.initialData,\r\n state.agents,\r\n state.extraAddonsSelected.length,\r\n recalculatePrice,\r\n state.endpoints,\r\n state.billingFrequency,\r\n ])\r\n\r\n const setExtraAddons = (addon: ResolveAddon, selected: boolean) => {\r\n const extraAddonsSelected: ResolveAddon[] = state.extraAddonsSelected || []\r\n const index = extraAddonsSelected.findIndex((addonSelected) => addonSelected.sKU === addon.sKU)\r\n // new selection\r\n if (selected && index < 0) {\r\n actions.setExtraAddons(extraAddonsSelected.concat(addon))\r\n // unselect\r\n } else if (!selected) {\r\n actions.setExtraAddons(extraAddonsSelected.filter((addonSelected) => addonSelected.sKU !== addon.sKU))\r\n }\r\n }\r\n\r\n // tracking\r\n useCustomizePageTracking({\r\n planName: state.selectedPlan.name,\r\n })\r\n\r\n const isAnnual = state.billingFrequency === TimePeriod.Year\r\n\r\n const calculatedBasePrice = isAnnual ? state.baseTierAnnualPrice * 12 : state.baseTierMonthlyPrice\r\n const submitBtnStyles = classNames({\r\n [billingStyles['resolve-custom-submit-btn']]: true,\r\n [styles['customize-submit-btn']]: true,\r\n })\r\n\r\n const agentOptions = range(cart.includedAgents, ADDONS.MAX_AGENTS_ADDONS)\r\n const endpointOptions = range(cart.includedEndpoints, ADDONS.MAX_ENDPOINTS_ADDONS, ADDONS.ENDPOINTS_ADDONS_INTERVAL)\r\n const deviceOptions = range(\r\n cart.includedAgents * ADDONS.DEVICE_ADDONS_INTERVAL,\r\n ADDONS.MAX_DEVICE_ADDONS,\r\n ADDONS.DEVICE_ADDONS_INTERVAL\r\n )\r\n\r\n const icons: Icons = {\r\n [ADDONS.MOBILE_ADDON]: MobileAddon,\r\n [ADDONS.CAMERA_SHARE_ADDON]: CameraAddon,\r\n [ADDONS.ENDPOINT_PROTECTION_ADDON]: EndpointProtectionAddon,\r\n }\r\n\r\n const { plan: urlPlan } = useParams()\r\n const loggedInNoUpgrade = state.isUserLoggedIn && !cart.canUpgradePlan\r\n const v2NoDowngrade = useNewResolveSkus && urlPlan?.toLowerCase() === 'standard'\r\n\r\n const showCustomAgents =\r\n useCustomAgentsDevices && (!state.isUserLoggedIn || state.userType === RESOLVE_USER_TYPES.TRIALER)\r\n const showCustomDevices =\r\n showCustomAgents &&\r\n ([PRODUCT_SKU.GTR_STANDARD_NAMED_V2, PRODUCT_SKU.G2RE_STANDARD_NAME] as string[]).includes(\r\n state.selectedPlan?.sKU\r\n )\r\n const showDevices = state.selectedPlan?.sKU === PRODUCT_SKU.GTR_REMOTE_ACCESS\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n \"logo\"\r\n

{state.selectedPlan.shortName}

\r\n
\r\n {state.selectedPlan.shortDescription}\r\n
\r\n
\r\n
\r\n {props.isMobileView && (\r\n <>\r\n {' '}\r\n /{state.content.user}\r\n \r\n /{isAnnual ? state.content.year : state.content.month}\r\n \r\n \r\n )}\r\n {(state.selectedPlan.userAgentsIncludedAmount && !!cart.includedAgents && (\r\n

\r\n {state.selectedPlan.userAgentsIncludedText}:{' '}\r\n {showDevices ? cart.includedAgents * ADDONS.DEVICE_ADDONS_INTERVAL : cart.includedAgents}\r\n

\r\n )) ||\r\n null}\r\n {(state.selectedPlan.endpointsIncludedAmount && !!cart.includedEndpoints && (\r\n

\r\n {state.selectedPlan.endpointsIncludedText}: {cart.includedEndpoints}\r\n

\r\n )) ||\r\n null}\r\n
\r\n \r\n\r\n {(showCustomDevices || useRemoteSupportAgents) && (\r\n \r\n <>\r\n
\r\n

\r\n {state.currentAgent.shortDescription.replace('{quantity}', `${state.agents}`)}\r\n \r\n

\r\n\r\n {/* \r\n {state.currentAgent.shortDescription.replace('{quantity}', `${state.agents}`)}\r\n */}\r\n \r\n
\r\n\r\n {state.agents >= ADDONS.MAX_AGENTS_ADDONS - 1 && (\r\n \r\n )}\r\n\r\n {showCustomAgentsExpanded && (\r\n
\r\n {\r\n if ((event.target as HTMLElement).innerText)\r\n actions.setAgents(Number((event.target as HTMLElement).innerText))\r\n }}\r\n value={state.agents}\r\n modifier={styles['addon-selector']}\r\n label={}\r\n labelClass={styles['addon-selector-label']}\r\n additionalClass={styles['addon-selector-select']}\r\n options={agentOptions}\r\n optionsContainerClass={styles['addon-selector-options-container']}\r\n optionsClass={styles['addon-selector-option']}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n )}\r\n\r\n {showDevices && (\r\n \r\n <>\r\n
\r\n

\r\n {state.currentAgent.shortDescription.replace(\r\n '{quantity}',\r\n `${state.agents * ADDONS.DEVICE_ADDONS_INTERVAL}`\r\n )}\r\n \r\n

\r\n\r\n {/* \r\n {state.currentAgent.shortDescription.replace('{quantity}', `${state.agents}`)}\r\n */}\r\n \r\n
\r\n\r\n {state.agents >= ADDONS.MAX_AGENTS_ADDONS - 1 && (\r\n \r\n )}\r\n\r\n {showCustomAgentsExpanded && (\r\n
\r\n {\r\n if ((event.target as HTMLElement).innerText)\r\n actions.setAgents(\r\n Number((event.target as HTMLElement).innerText) /\r\n ADDONS.DEVICE_ADDONS_INTERVAL\r\n )\r\n }}\r\n value={state.agents * ADDONS.DEVICE_ADDONS_INTERVAL}\r\n modifier={styles['addon-selector']}\r\n label={}\r\n labelClass={styles['addon-selector-label']}\r\n additionalClass={styles['addon-selector-select']}\r\n options={deviceOptions}\r\n optionsContainerClass={styles['addon-selector-options-container']}\r\n optionsClass={styles['addon-selector-option']}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n )}\r\n\r\n {showCustomDevices && (\r\n \r\n <>\r\n
\r\n

\r\n {state.currentEndpoint.shortDescription.replace('{quantity}', `${state.endpoints}`)}\r\n \r\n

\r\n\r\n {/* \r\n {state.currentEndpoint.shortDescription.replace('{quantity}', `${state.endpoints}`)}\r\n */}\r\n \r\n
\r\n\r\n {state.endpoints >= ADDONS.MAX_ENDPOINTS_ADDONS - ADDONS.ENDPOINTS_ADDONS_INTERVAL && (\r\n \r\n )}\r\n\r\n {showCustomDevicesExpanded && (\r\n
\r\n {\r\n if ((event.target as HTMLElement).innerText)\r\n actions.setEndpoints(Number((event.target as HTMLElement).innerText))\r\n }}\r\n value={state.endpoints}\r\n label={}\r\n labelClass={styles['addon-selector-label']}\r\n modifier={styles['addon-selector']}\r\n additionalClass={styles['addon-selector-select']}\r\n options={endpointOptions}\r\n optionsContainerClass={styles['addon-selector-options-container']}\r\n optionsClass={styles['addon-selector-option']}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n )}\r\n\r\n {state.extraAddons && (\r\n \r\n

{state.content.selectAddons}:

\r\n
{state.content.selectAddonsDescription}
\r\n \r\n {state.extraAddons.map((addon) => {\r\n if (\r\n addon.sKU === ADDONS.ENDPOINT_PROTECTION_ADDON &&\r\n ([PRODUCT_SKU.GTR_REMOTE_SUPPORT_NAMED_V2] as string[]).includes(\r\n state.selectedPlan?.sKU\r\n )\r\n )\r\n return null\r\n\r\n const monthlyPrice: number = get(\r\n addon,\r\n [\r\n 'pricingInfo',\r\n state.CurrencyCode,\r\n 'monthly',\r\n `tier${state.selectedTierIndex + 1}`,\r\n 'price',\r\n ],\r\n 0\r\n )\r\n const annualPrice: number =\r\n get(\r\n addon,\r\n [\r\n 'pricingInfo',\r\n state.CurrencyCode,\r\n 'annual',\r\n `tier${state.selectedTierIndex + 1}`,\r\n 'price',\r\n ],\r\n 0\r\n ) * 12\r\n\r\n const price = state.isYearlyBillingFrequency ? annualPrice : monthlyPrice\r\n const priceLabel = state.isYearlyBillingFrequency ? cardLabels.year : cardLabels.month\r\n const addonSelected = !!state.extraAddonsSelected.find(\r\n (selectedAddon) => selectedAddon.sKU === addon.sKU\r\n )\r\n const isDisabled =\r\n (addon.sKU === ADDONS.MOBILE_ADDON && !cart.canUpgradeMobileAddon) ||\r\n (addon.sKU === ADDONS.CAMERA_SHARE_ADDON && !cart.canUpgradeCameraAddon) ||\r\n (addon.sKU === ADDONS.ENDPOINT_PROTECTION_ADDON &&\r\n !cart.canUpgradeEndpointProtectionAddon)\r\n\r\n const cardTitle = (\r\n <>\r\n \r\n \r\n {state.currentAgent ? (\r\n <>\r\n /{state.content.per}{' '}\r\n {(addon.sKU === ADDONS.ENDPOINT_PROTECTION_ADDON\r\n ? state.currentEndpoint\r\n : state.currentAgent\r\n ).quantityLabel\r\n .toLowerCase()\r\n .replace('pro ', '')}{' '}\r\n /{priceLabel}\r\n \r\n ) : (\r\n <>\r\n /{state.content.per} {state.content.quantityLabel.toLowerCase()} /\r\n {priceLabel}\r\n \r\n )}\r\n \r\n \r\n )\r\n\r\n return (\r\n {\r\n setExtraAddons(addon, selected)\r\n }}\r\n showCheckbox\r\n selected={addonSelected}\r\n id={addon.sKU}\r\n disabled={isDisabled}\r\n />\r\n )\r\n })}\r\n \r\n
\r\n )}\r\n\r\n setIsPlanModalOpen(false)}>\r\n
\r\n

{state.content.changePlanMethodModalHeader}

\r\n \r\n setIsPlanModalOpen(false)}>\r\n {state.content.modalCloseButtonText}\r\n \r\n
\r\n
\r\n {props.isTabletOrMobileView && }\r\n props.nextSteps()}\r\n disabled={\r\n state.fatalErrorBlocker ||\r\n state.totalLoading ||\r\n (state.calculatedTotal === 0 && !cart.canUpgradePlan && !v2NoDowngrade)\r\n }\r\n data-qat=\"continue-to-checkout\"\r\n >\r\n {state.content.continue}\r\n \r\n {props.isTabletOrMobileView && }\r\n {state.isCouponValidAndApplied && state.couponServerData?.validTo && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport const ConnectedResolveCustomize = connectRedux(Customize, mapResolveCustomizeState, mapResolveCustomizeActions)\r\n","import { AppState } from 'app-store'\r\nimport { locationActions } from '@common/state/location/actions'\r\nimport { flexActions } from '@common/state/flex/actions'\r\nimport { resolveUserActions } from '@gtresolve/state/user/actions'\r\nimport { resolveBuyFormActions } from '@gtresolve/state/buy-form/actions'\r\nimport { resolveCheckoutActions } from '@gtresolve/state/checkout/actions'\r\nimport { getFatalError, getFlexState, getCheckoutState as getCommonCheckoutState } from '@common/state/selectors'\r\nimport { ResolvePlan } from '@gtresolve/state/plan'\r\nimport { ResolveAbandonedCartFormData } from '@gtresolve/state/user/state'\r\nimport { getCurrentPlan } from '@gtresolve/utils/get-current-plan'\r\nimport { fatalErrorActions } from '@common/state/fatal-error/actions'\r\nimport {\r\n getLabelContent,\r\n getCheckoutState,\r\n getUserState,\r\n getBuyFormState,\r\n getPlanData,\r\n} from '@gtresolve/state/selectors'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { resolveTrackingActions } from '@gtresolve/state/tracking/actions'\r\nimport { TrackingState } from '@common/state/tracking/state'\r\nimport { RESOLVE_TRACKING_COMPONENTS } from '@gtresolve/constants'\r\nimport { FatalErrorMessageType } from '@common/state/fatal-error/state'\r\nimport { checkoutActions as commonCheckoutActions } from '@common/state/checkout/actions'\r\nimport { ResolveCheckoutFormState } from './state'\r\n\r\nexport const mapResolveCheckoutFormState = (state: AppState): ResolveCheckoutFormState => {\r\n const {\r\n signIn,\r\n changePaymentMethodModalHeader,\r\n changePaymentMethodModalSubheader,\r\n modalCloseButtonText,\r\n showMe,\r\n errorCardinalChallenge,\r\n errorCardinalSetup,\r\n existingUsersModalContent,\r\n existingUsersModalHeader,\r\n existingUsersNewEmailButtonText,\r\n changeCountryContent,\r\n changeCountryHeader,\r\n modalCancel,\r\n modalReload,\r\n } = getLabelContent(state)\r\n\r\n const { inlineErrors } = getCommonCheckoutState(state)\r\n const { selectedPlanSku, billingFrequency } = getCheckoutState(state)\r\n const planData: ResolvePlan[] = getPlanData(state)\r\n const selectedPlan = getCurrentPlan(selectedPlanSku, planData)\r\n const { isCardValid, isCvvValid, userInteractedWithFlexField, keyInfo, isCardinalSetupComplete } =\r\n getFlexState(state)\r\n const {\r\n userType,\r\n existingPaymentInformation,\r\n loggedIn: { isUserLoggedIn },\r\n } = getUserState(state)\r\n const { clearEmail, statesOptional } = getBuyFormState(state)\r\n const { isFatalError, fatalErrorType } = getFatalError(state)\r\n const isScaEnabledForMid = keyInfo?.scaToken?.isScaEnabledForMid\r\n const tokenString = keyInfo?.scaToken?.tokenString\r\n\r\n return {\r\n content: {\r\n signIn,\r\n changePaymentMethodModalHeader,\r\n changePaymentMethodModalSubheader,\r\n modalCloseButtonText,\r\n showMe,\r\n errorCardinalChallenge,\r\n errorCardinalSetup,\r\n existingUsersModalContent,\r\n existingUsersModalHeader,\r\n existingUsersNewEmailButtonText,\r\n changeCountryContent,\r\n changeCountryHeader,\r\n modalCancel,\r\n modalReload,\r\n },\r\n clearEmail,\r\n userInteractedWithFlexField,\r\n selectedPlan,\r\n isUserLoggedIn,\r\n isFatalError,\r\n fatalErrorType,\r\n userType,\r\n existingPaymentInformation,\r\n billingFrequency,\r\n isCardValid,\r\n isCvvValid,\r\n inlineErrors,\r\n isScaEnabledForMid,\r\n tokenString,\r\n statesOptional,\r\n isCardinalSetupComplete,\r\n }\r\n}\r\n\r\nexport const mapResolveCheckoutFormActions = {\r\n setUserInteractedWithFlexFieldCvv: (interacted: boolean) =>\r\n flexActions.setUserInteractedWithFlexFieldCvv(interacted),\r\n setUserInteractedWithFlexField: (interacted: boolean) => flexActions.setUserInteractedWithFlexField(interacted),\r\n submitForm: (values: ResolveBuyFormData) => resolveBuyFormActions.submitForm(values),\r\n existingUserSubmitForm: (values: ResolveBuyFormData) => resolveBuyFormActions.existingUserSubmitForm(values),\r\n validateAddress: (values: ResolveBuyFormData) => locationActions.validateAddress(values),\r\n calculatePrice: (values: ResolveBuyFormData) => resolveCheckoutActions.calculatePrice(values),\r\n setFatalError: (isFatalError: boolean, message?: FatalErrorMessageType) =>\r\n fatalErrorActions.setFatalError(isFatalError, message),\r\n setCheckoutFormInlineError: (value: string) => commonCheckoutActions.setCheckoutFormInlineError(value),\r\n removeCheckoutFormInlineError: (value: string) => commonCheckoutActions.removeCheckoutFormInlineError(value),\r\n userLogin: (pathname: string) => resolveUserActions.userLogin('trial checkout view', pathname),\r\n setEmailClear: (clear: boolean) => resolveBuyFormActions.setClearEmail(clear),\r\n setChallengeCompleteJwt: (jwt: string) => flexActions.setChallengeCompleteJwt(jwt),\r\n track: (trackingInfo: TrackingState) =>\r\n resolveTrackingActions.track(trackingInfo, RESOLVE_TRACKING_COMPONENTS.CHECKOUT_PAGE),\r\n setCardinalSetupComplete: () => flexActions.setCardinalSetupComplete(),\r\n submitAbandonCart: (email: string, form: ResolveAbandonedCartFormData) =>\r\n resolveUserActions.submitAbandonedCart({\r\n success: false,\r\n isTrial: false,\r\n program: 'cart',\r\n email,\r\n form,\r\n }),\r\n}\r\n\r\nexport type ResolveCheckoutFormActionsType = typeof mapResolveCheckoutFormActions\r\n","// extracted by mini-css-extract-plugin\nexport default {\"submit-blocker\":\"checkout-form-module__submit-blocker\",\"existing-email-ctas\":\"checkout-form-module__existing-email-ctas\",\"existing-email-text\":\"checkout-form-module__existing-email-text\",\"currency-modal-desc\":\"checkout-form-module__currency-modal-desc\",\"currency-modal-cta\":\"checkout-form-module__currency-modal-cta\"};","import React, { FunctionComponent, useState, useEffect, useCallback, BaseSyntheticEvent } from 'react'\r\nimport { Form, FormikProps } from 'formik'\r\nimport { setCountryInCookie } from '@common/utils/cookie-utils'\r\nimport { CommonButton, ConvertStringToReact, LoadingSpinner } from '@common/components'\r\nimport { isEmpty } from 'lodash-es'\r\nimport { getSessionState, saveSessionState, connectRedux, GoToComponentProps, scrollToTop } from '@common/utils'\r\nimport { useQualtrics } from '@common/hooks'\r\nimport {\r\n mapResolveCheckoutFormState,\r\n mapResolveCheckoutFormActions,\r\n ResolveCheckoutFormActionsType,\r\n} from '@gtresolve/connectedComponents/CheckoutForm/connector'\r\nimport { isAddressComplete, isValidationAddressEligible } from '@gtresolve/utils'\r\nimport {\r\n ConnectedResolveAccountFormInfo,\r\n ResolveAccountFormInfoComponentProps,\r\n ConnectedResolveBillingFormInfo,\r\n ResolveBillingFormInfoComponentProps,\r\n ConnectedResolvePaymentFormInfo,\r\n ResolvePaymentFormInfoComponentProps,\r\n ConnectedResolveCheckoutFormSubmission,\r\n ResolveCheckoutFormSubmissionComponentProps,\r\n} from '@gtresolve/connectedComponents'\r\nimport { ResolveCheckoutFormState } from '@gtresolve/connectedComponents/CheckoutForm/state'\r\nimport { ConnectedModal } from '@common/connectedComponents/Modal'\r\nimport {\r\n CHECKOUTFORM_FIELDS,\r\n CHECKOUTFORM_VALIDATION_EXCLUDE_FIELD_TYPES,\r\n RESOLVE_PARTIAL_NON_VALIDATION_USER_TYPES,\r\n RESOLVE_USER_TYPES,\r\n} from '@gtresolve/constants'\r\nimport { RESOLVE_TRIAL_ERROR_IDS } from '@gtresolve/constants/error-strings'\r\nimport { useCheckoutFormPageTracking } from '@gtresolve/hooks'\r\nimport { ResolveErrorContent } from '@gtresolve/state/checkout-form-container/state'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { GTRESOLVE_VIEW_PATHS, TRACKING_EVENTS, PLATFORM } from '@common/constants'\r\n\r\nimport { CardinalPaymentsValidatedResponse } from '@common/state/flex/state'\r\nimport { FATAL_ERROR_TYPE } from '@common/state/fatal-error/state'\r\nimport checkoutStyles from './checkout-form.module.css'\r\n\r\ndeclare const Cardinal: any\r\n\r\ntype ResolveCheckoutFormProps = GoToComponentProps<\r\n ResolveCheckoutFormState,\r\n ResolveCheckoutFormActionsType,\r\n {\r\n isTabletOrMobileView?: boolean\r\n isMobileView?: boolean\r\n initialData: ResolveBuyFormData\r\n errorContent: ResolveErrorContent\r\n formikRef: React.RefObject>\r\n setHasAddressValidationErrors: React.Dispatch>\r\n setGeneralFieldErrors: React.Dispatch>\r\n setHasCardValidationErrors: React.Dispatch>\r\n hasAddressValidationErrors: boolean\r\n generalFieldErrors: boolean\r\n hasCardValidationErrors: boolean\r\n isSubmittingRef: React.RefObject\r\n }\r\n>\r\n\r\nconst CheckoutForm: FunctionComponent = ({ state, actions, props }) => {\r\n const { userInteractedWithFlexField, inlineErrors, clearEmail, content, statesOptional } = state\r\n const {\r\n formikRef,\r\n setHasAddressValidationErrors,\r\n setGeneralFieldErrors,\r\n setHasCardValidationErrors,\r\n hasCardValidationErrors,\r\n generalFieldErrors,\r\n hasAddressValidationErrors,\r\n isSubmittingRef,\r\n } = props\r\n const { setCheckoutFormInlineError, removeCheckoutFormInlineError } = actions\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false)\r\n const [useSameForBilling, setUseSameForBilling] = useState(sessionStorage.getItem('useSameForBilling') !== 'false')\r\n const [isFormReset, setIsFormReset] = useState(false)\r\n const [isPaymentModalOpen, setIsPaymentModalOpen] = useState(false)\r\n const [showCurrencyModal, setCurrencyModal] = useState(false)\r\n const [showCardinalModal, setCardinalModal] = useState(false)\r\n const [isTaxRequired, setTaxRequired] = useState(false)\r\n const [isCardinalScriptLoaded, setIsCardinalScriptLoaded] = useState(false)\r\n const [onInitialValue, setOnInitialValue] = useState>({})\r\n\r\n const hasExistingPaymentInformation = !isEmpty(state.existingPaymentInformation)\r\n const isAddonFlow =\r\n state.isUserLoggedIn &&\r\n (state.userType === RESOLVE_USER_TYPES.ADDON ||\r\n (state.userType === RESOLVE_USER_TYPES.EXPIRED && hasExistingPaymentInformation))\r\n const isCrossProductFlow =\r\n (state.isUserLoggedIn && state.userType === RESOLVE_USER_TYPES.CROSSPRODUCT && hasExistingPaymentInformation) ||\r\n (state.isUserLoggedIn && state.userType === RESOLVE_USER_TYPES.TRIALER && hasExistingPaymentInformation)\r\n const isTrialUser =\r\n state.userType === RESOLVE_USER_TYPES.IDENTITY_ONLY ||\r\n (state.userType === RESOLVE_USER_TYPES.TRIALER && !hasExistingPaymentInformation) ||\r\n (state.userType === RESOLVE_USER_TYPES.CROSSPRODUCT && !hasExistingPaymentInformation)\r\n const isExpiredTrialUser = state.userType === RESOLVE_USER_TYPES.EXPIRED\r\n const cardinalScriptUrl =\r\n process.env.ENVIRONMENT === PLATFORM.PROD\r\n ? 'https://songbird.cardinalcommerce.com/edge/v1/songbird.js'\r\n : 'https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js'\r\n const qualtricsQZID = process.env.ENVIRONMENT === PLATFORM.PROD ? 'ZN_299DrXKoCGOsbHw' : 'ZN_eWlJ0ywVecl7T38'\r\n\r\n useQualtrics(isSubmitting, qualtricsQZID)\r\n\r\n const resetFieldTouched = useCallback(() => {\r\n if (formikRef?.current) {\r\n Object.keys(formikRef.current.values).forEach((fieldKey) => {\r\n formikRef.current?.setFieldTouched(fieldKey, false)\r\n })\r\n }\r\n }, [formikRef])\r\n\r\n const canValidateAddress = (values: ResolveBuyFormData) => {\r\n // for later: need to send a new FormData object with billing first name and billing last name instead of FN & LN\r\n if (isValidationAddressEligible(values) && isAddressComplete(values, statesOptional, isTaxRequired)) {\r\n actions.validateAddress(values)\r\n actions.calculatePrice(values)\r\n }\r\n }\r\n\r\n const resetFatalError = () => {\r\n if (isFormReset && state.isFatalError) {\r\n actions.setFatalError(false)\r\n setIsFormReset(false)\r\n }\r\n }\r\n\r\n // tracking\r\n const { trackFormError, trackBillingInfoStep, trackPaymentStep, trackSubmitForm } = useCheckoutFormPageTracking({\r\n planName: state.selectedPlan.name,\r\n formikRef,\r\n })\r\n\r\n const loadCardinalScript = () => {\r\n const script = document.createElement('script')\r\n script.type = 'text/javascript'\r\n script.async = true\r\n script.src = cardinalScriptUrl\r\n script.addEventListener('load', () => {\r\n setIsCardinalScriptLoaded(true)\r\n })\r\n script.addEventListener('error', () => {\r\n actions.setFatalError(true, { fatalErrorType: FATAL_ERROR_TYPE.CARDINAL_SETUP })\r\n actions.track({\r\n event: TRACKING_EVENTS.CARDINAL_SECURITY_MODAL,\r\n eventData: {\r\n securityModalAction: TRACKING_EVENTS.CARDINAL_FAIL,\r\n },\r\n })\r\n })\r\n document.body.appendChild(script)\r\n }\r\n\r\n const submitForm = (formValues: ResolveBuyFormData) => {\r\n try {\r\n const qualtricsData = getSessionState('qualtrics_data_gh')\r\n saveSessionState('qualtrics_data_gh', {\r\n ...(!qualtricsData ? {} : qualtricsData),\r\n userEmail: formValues.Email,\r\n })\r\n } catch (err) {\r\n console.error(err)\r\n }\r\n setIsSubmitting(true)\r\n if (!userInteractedWithFlexField) {\r\n actions.setUserInteractedWithFlexField(true)\r\n }\r\n actions.submitForm(formValues)\r\n trackSubmitForm()\r\n }\r\n\r\n const onFormErrors = (formIds: string[], formErrors: string[]) => {\r\n scrollToTop()\r\n setGeneralFieldErrors(true)\r\n trackFormError(formIds, formErrors)\r\n }\r\n\r\n const preSubmit = () => {\r\n if (hasAddressValidationErrors || hasCardValidationErrors) {\r\n scrollToTop()\r\n if (hasCardValidationErrors) {\r\n trackFormError([RESOLVE_TRIAL_ERROR_IDS.CARD_ERROR], ['invalid credit card'])\r\n }\r\n if (hasAddressValidationErrors) {\r\n trackFormError([RESOLVE_TRIAL_ERROR_IDS.ADDRESS_ERROR], ['invalid billing address'])\r\n }\r\n } else if (isAddonFlow || isCrossProductFlow) {\r\n setIsSubmitting(true)\r\n trackSubmitForm()\r\n if (formikRef?.current) {\r\n actions.existingUserSubmitForm(formikRef.current.values)\r\n }\r\n } else if (formikRef?.current) {\r\n formikRef.current.validateForm().then((errors) => {\r\n if (statesOptional && errors.StateCode) {\r\n /* eslint-disable no-param-reassign */\r\n delete errors.StateCode\r\n }\r\n if (!isTaxRequired && errors.TaxNumber) {\r\n /* eslint-disable no-param-reassign */\r\n delete errors.TaxNumber\r\n }\r\n const errorList = Object.keys(errors)\r\n if (!state.isCardValid) {\r\n actions.setUserInteractedWithFlexField(true)\r\n }\r\n if (!state.isCvvValid) {\r\n actions.setUserInteractedWithFlexFieldCvv(true)\r\n }\r\n if (errors.Password && formikRef?.current) {\r\n formikRef.current.touched.Password = true\r\n }\r\n if (errorList.length > 0) {\r\n if (isTrialUser || isExpiredTrialUser) {\r\n const trialUserValidErrors = Object.entries(errors).filter(\r\n (errorField) => errorField[0] !== CHECKOUTFORM_FIELDS.PASSWORD\r\n )\r\n if (Object.keys(trialUserValidErrors).length > 0) {\r\n const trialUserValidErrorValues = trialUserValidErrors.map(\r\n (fieldErrorTuple) => fieldErrorTuple[1]\r\n )\r\n const trialUserValidErrorKeys = trialUserValidErrors.map(\r\n (fieldErrorTuple) => fieldErrorTuple[0]\r\n )\r\n onFormErrors(trialUserValidErrorKeys, trialUserValidErrorValues as string[])\r\n } else if (formikRef.current) {\r\n submitForm(formikRef.current.values)\r\n }\r\n } else {\r\n onFormErrors(Object.keys(errors), Object.values(errors) as string[])\r\n }\r\n } else if (formikRef.current) {\r\n submitForm(formikRef.current.values)\r\n }\r\n })\r\n }\r\n }\r\n\r\n const checkCurrencyConflict = (country: string, originCountry: string) => {\r\n if (originCountry !== country) {\r\n setCurrencyModal(true)\r\n } else {\r\n setCurrencyModal(false)\r\n }\r\n }\r\n\r\n /* configure cardinal */\r\n useEffect(() => {\r\n if (!isCardinalScriptLoaded) {\r\n return\r\n }\r\n\r\n Cardinal.configure({\r\n logging: {\r\n level: 'on',\r\n },\r\n })\r\n\r\n Cardinal.on('payments.validated', (data: CardinalPaymentsValidatedResponse, jwt: string) => {\r\n const {\r\n ErrorDescription,\r\n ErrorNumber,\r\n Payment: {\r\n ExtendedData: { ChallengeCancel },\r\n },\r\n } = data\r\n if (ErrorDescription === 'Success' && ErrorNumber === 0 && ChallengeCancel !== '01') {\r\n actions.setChallengeCompleteJwt(jwt)\r\n actions.track({\r\n event: TRACKING_EVENTS.CARDINAL_SECURITY_MODAL,\r\n eventData: {\r\n securityModalAction: TRACKING_EVENTS.CARDINAL_SUCCESS,\r\n },\r\n })\r\n } else {\r\n actions.setFatalError(true, { fatalErrorType: FATAL_ERROR_TYPE.CARDINAL_CHALLENGE })\r\n actions.track({\r\n event: TRACKING_EVENTS.CARDINAL_SECURITY_MODAL,\r\n eventData: {\r\n securityModalAction: TRACKING_EVENTS.CARDINAL_FAIL,\r\n },\r\n })\r\n }\r\n })\r\n\r\n Cardinal.on('payments.setupComplete', () => {\r\n actions.setCardinalSetupComplete()\r\n actions.track({\r\n event: TRACKING_EVENTS.CARDINAL_SECURITY_MODAL,\r\n eventData: {\r\n securityModalAction: TRACKING_EVENTS.CARDINAL_LOADED,\r\n },\r\n })\r\n })\r\n\r\n Cardinal.setup('init', {\r\n jwt: state.tokenString,\r\n })\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state.tokenString, isCardinalScriptLoaded])\r\n\r\n useEffect(() => {\r\n if (!Object.keys(inlineErrors).length) {\r\n setGeneralFieldErrors(false)\r\n }\r\n }, [inlineErrors, setGeneralFieldErrors])\r\n\r\n useEffect(() => {\r\n if (statesOptional && formikRef.current) {\r\n removeCheckoutFormInlineError('StateCode')\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [statesOptional])\r\n\r\n useEffect(() => {\r\n if (state.userType === RESOLVE_USER_TYPES.ADDON && formikRef.current) {\r\n actions.calculatePrice(formikRef.current.values)\r\n }\r\n }, [state.userType, actions, formikRef])\r\n\r\n useEffect(() => {\r\n if (state.isScaEnabledForMid) {\r\n loadCardinalScript()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state.isScaEnabledForMid])\r\n\r\n // show form errors by scrolling to top\r\n useEffect(() => {\r\n const errorsInForm = generalFieldErrors || hasAddressValidationErrors\r\n if (errorsInForm) {\r\n scrollToTop()\r\n setIsSubmitting(false)\r\n if ((window as any).QSI) {\r\n ;(window as any).QSI.API.unload()\r\n }\r\n }\r\n }, [hasAddressValidationErrors, generalFieldErrors])\r\n\r\n // reset the form and reset the states affected by checkout form\r\n useEffect(() => {\r\n if (state.isFatalError && formikRef.current) {\r\n scrollToTop()\r\n formikRef.current.setSubmitting(false)\r\n setIsSubmitting(false)\r\n resetFieldTouched()\r\n formikRef.current.setFieldValue(CHECKOUTFORM_FIELDS.EXPIRATION_DATE, '')\r\n setHasAddressValidationErrors(false)\r\n setHasCardValidationErrors(false)\r\n setGeneralFieldErrors(false)\r\n setIsFormReset(true)\r\n if (\r\n state.fatalErrorType === FATAL_ERROR_TYPE.CARDINAL_SETUP ||\r\n state.fatalErrorType === FATAL_ERROR_TYPE.CARDINAL_CHALLENGE ||\r\n state.fatalErrorType === FATAL_ERROR_TYPE.CARDINAL_PAYMENT\r\n ) {\r\n setCardinalModal(true)\r\n }\r\n if ((window as any).QSI) {\r\n ;(window as any).QSI.API.unload()\r\n }\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [actions, formikRef, isFormReset, resetFieldTouched, state.isFatalError])\r\n\r\n // validate the non empty entries after populating\r\n useEffect(() => {\r\n if (state.userType !== RESOLVE_USER_TYPES.ADDON) {\r\n Object.entries(props.initialData).forEach(([formField, formValue]) => {\r\n // ignore empty fields\r\n if (formValue !== '') {\r\n // if the user is a trialer, crossproduct, expired, banned\r\n // then dont validate the identity and address fields\r\n if (\r\n !(\r\n Object.values(RESOLVE_PARTIAL_NON_VALIDATION_USER_TYPES).includes(\r\n state.userType as RESOLVE_PARTIAL_NON_VALIDATION_USER_TYPES\r\n ) &&\r\n Object.values(CHECKOUTFORM_VALIDATION_EXCLUDE_FIELD_TYPES).includes(\r\n formField as CHECKOUTFORM_VALIDATION_EXCLUDE_FIELD_TYPES\r\n )\r\n )\r\n ) {\r\n if (formikRef.current) {\r\n formikRef.current.validateField(formField)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }, [formikRef, props.initialData, state.userType])\r\n\r\n // if the billing frequency changes, recalculate the cost\r\n useEffect(() => {\r\n if (formikRef.current && isAddressComplete(formikRef.current.values, statesOptional, isTaxRequired)) {\r\n actions.calculatePrice(formikRef.current.values)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [actions, formikRef, state.billingFrequency])\r\n\r\n // for trial and expired trial user, set billing FN and LN to avoid validation error\r\n useEffect(() => {\r\n if ((isTrialUser || isExpiredTrialUser) && useSameForBilling && formikRef.current) {\r\n formikRef.current.setFieldValue(CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME, props.initialData.FirstName)\r\n formikRef.current.setFieldValue(CHECKOUTFORM_FIELDS.BILLING_LAST_NAME, props.initialData.LastName)\r\n }\r\n }, [isTrialUser, useSameForBilling, props.initialData, isExpiredTrialUser, formikRef])\r\n\r\n const accountInfoProps: ResolveAccountFormInfoComponentProps = {\r\n useSameForBilling,\r\n resetFatalError,\r\n canValidateAddress,\r\n formikRef,\r\n setCheckoutFormInlineError,\r\n removeCheckoutFormInlineError,\r\n setOnInitialValue,\r\n inlineErrors,\r\n isSubmittingRef,\r\n }\r\n\r\n const billingInfoProps: ResolveBillingFormInfoComponentProps = {\r\n useSameForBilling,\r\n resetFatalError,\r\n canValidateAddress,\r\n setUseSameForBilling,\r\n trackBillingInfoStep,\r\n setHasAddressValidationErrors,\r\n formikRef,\r\n setCheckoutFormInlineError,\r\n removeCheckoutFormInlineError,\r\n inlineErrors,\r\n checkCurrencyConflict,\r\n setTaxRequired,\r\n }\r\n\r\n const paymentInfoProps: ResolvePaymentFormInfoComponentProps = {\r\n resetFatalError,\r\n hasExistingPaymentInformation,\r\n setIsPaymentModalOpen,\r\n trackPaymentStep,\r\n setHasCardValidationErrors,\r\n setCheckoutFormInlineError,\r\n removeCheckoutFormInlineError,\r\n inlineErrors,\r\n }\r\n\r\n const checkoutSubmissionProps: ResolveCheckoutFormSubmissionComponentProps = {\r\n isSubmitting,\r\n preSubmit,\r\n isTabletOrMobileView: props.isTabletOrMobileView,\r\n inlineErrors,\r\n }\r\n\r\n const trackAbandon = (value: BaseSyntheticEvent) => {\r\n if (formikRef.current) {\r\n const formData = {\r\n firstName: formikRef.current.values.FirstName,\r\n lastName: formikRef.current.values.LastName,\r\n email: formikRef.current.values.Email,\r\n }\r\n\r\n const fieldName = value.target.name\r\n const currentValue = value.target.value\r\n const fieldsToValidate = [\r\n CHECKOUTFORM_FIELDS.EMAIL,\r\n CHECKOUTFORM_FIELDS.FIRST_NAME,\r\n CHECKOUTFORM_FIELDS.LAST_NAME,\r\n ]\r\n if (fieldsToValidate.includes(fieldName)) {\r\n const initialValue = onInitialValue[fieldName]\r\n formikRef.current.validateField(fieldName).then(() => {\r\n const hasFieldErrors = Boolean(\r\n formikRef.current?.errors.Email ||\r\n formikRef.current?.errors.FirstName ||\r\n formikRef.current?.errors.LastName\r\n )\r\n if (!isEmpty(formData.email) && currentValue !== initialValue && !hasFieldErrors) {\r\n actions.submitAbandonCart(formData.email, formData)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
trackAbandon(value)}>\r\n {!state.isUserLoggedIn && }\r\n \r\n \r\n \r\n \r\n \r\n
\r\n

Oh no!

\r\n
\r\n {state.fatalErrorType === FATAL_ERROR_TYPE.CARDINAL_CHALLENGE\r\n ? content.errorCardinalChallenge\r\n : content.errorCardinalSetup}\r\n
\r\n
\r\n {\r\n window.location.reload()\r\n }}\r\n >\r\n {content.modalCloseButtonText}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n

{content.changeCountryHeader}

\r\n
\r\n \r\n
\r\n
\r\n {\r\n const currentForm = formikRef.current\r\n if (currentForm) {\r\n setCountryInCookie(currentForm.values.CountryCode)\r\n sessionStorage.removeItem(CHECKOUTFORM_FIELDS.STREET1)\r\n sessionStorage.removeItem(CHECKOUTFORM_FIELDS.CITY)\r\n sessionStorage.removeItem(CHECKOUTFORM_FIELDS.STATE_CODE)\r\n sessionStorage.removeItem(CHECKOUTFORM_FIELDS.ZIP_CODE)\r\n sessionStorage.removeItem(CHECKOUTFORM_FIELDS.CONTACT_PHONE)\r\n window.location.reload()\r\n }\r\n }}\r\n modifier={checkoutStyles['currency-modal-cta']}\r\n >\r\n {content.modalReload}\r\n \r\n {\r\n const currentForm = formikRef.current\r\n if (currentForm) currentForm.values.CountryCode = currentForm.initialValues.CountryCode\r\n setCurrencyModal(false)\r\n }}\r\n >\r\n {content.modalCancel}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n

{content.existingUsersModalHeader}

\r\n
\r\n \r\n
\r\n
\r\n actions.userLogin(GTRESOLVE_VIEW_PATHS.RESOLVE_CHECKOUT)}\r\n qaTag=\"login-error-button\"\r\n >\r\n {content.signIn}\r\n \r\n actions.setEmailClear(false)}>\r\n {content.existingUsersNewEmailButtonText}\r\n \r\n
\r\n
\r\n
\r\n\r\n setIsPaymentModalOpen(false)}>\r\n
\r\n

{content.changePaymentMethodModalHeader}

\r\n
\r\n \r\n
\r\n setIsPaymentModalOpen(false)}>\r\n {content.modalCloseButtonText}\r\n \r\n
\r\n
\r\n\r\n {isSubmitting && }\r\n {/* Needed for qualtrics, Do Not Remove */}\r\n
\r\n \r\n )\r\n}\r\n\r\nexport const ConnectedCheckoutForm = connectRedux(\r\n CheckoutForm,\r\n mapResolveCheckoutFormState,\r\n mapResolveCheckoutFormActions\r\n)\r\n","import { AppState } from 'app-store'\r\nimport { resolveBuyFormActions } from '@gtresolve/state/buy-form/actions'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { getBuyFormState, getLabelContent } from '@gtresolve/state/selectors'\r\nimport { ResolveCheckoutFormContainerState } from '@gtresolve/state/checkout-form-container/state'\r\n\r\nexport const mapResolveCheckoutFormContainerState = (state: AppState): ResolveCheckoutFormContainerState => {\r\n const {\r\n errorInvalidCharacter,\r\n errorInvalidCVV,\r\n errorInvalidEmail,\r\n errorInvalidExpirationDate,\r\n errorInvalidPassword,\r\n errorInvalidPhoneNumber,\r\n errorInvalidTaxNumber,\r\n errorRequiredAddress,\r\n errorRequiredCity,\r\n errorRequiredFirstName,\r\n errorRequiredLastName,\r\n errorRequiredPostalCode,\r\n errorRequiredState,\r\n errorInvalidCreditCardNumber,\r\n emailAddressAlreadyInUse,\r\n errorRequiredCVV,\r\n errorRequiredCountry,\r\n errorRequiredCreditCardNumber,\r\n errorRequiredEmail,\r\n errorRequiredExpDate,\r\n errorRequiredPassword,\r\n errorRequiredPhoneNumber,\r\n errorInvalidPostalCode,\r\n errorGenericMessage,\r\n errorInvalidAddress,\r\n errorRequiredTaxNumber,\r\n passwordStrength,\r\n passwordStrengthLevel1,\r\n passwordStrengthLevel2,\r\n passwordStrengthLevel3,\r\n passwordStrengthLevel4,\r\n passwordStrengthTipDrawer,\r\n passwordStrengthTip1,\r\n passwordStrengthTip2,\r\n passwordStrengthTip3,\r\n } = getLabelContent(state)\r\n const { initialData } = getBuyFormState(state)\r\n\r\n return {\r\n errorContent: {\r\n errorInvalidCharacter,\r\n errorInvalidCVV,\r\n errorInvalidEmail,\r\n errorInvalidExpirationDate,\r\n errorInvalidPassword,\r\n errorInvalidPhoneNumber,\r\n errorInvalidTaxNumber,\r\n errorRequiredAddress,\r\n errorRequiredCity,\r\n errorRequiredFirstName,\r\n errorRequiredLastName,\r\n errorRequiredPostalCode,\r\n errorRequiredState,\r\n errorInvalidCreditCardNumber,\r\n emailAddressAlreadyInUse,\r\n errorRequiredCVV,\r\n errorRequiredCountry,\r\n errorRequiredCreditCardNumber,\r\n errorRequiredEmail,\r\n errorRequiredExpDate,\r\n errorRequiredPassword,\r\n errorRequiredPhoneNumber,\r\n errorInvalidPostalCode,\r\n errorGenericMessage,\r\n errorInvalidAddress,\r\n errorRequiredTaxNumber,\r\n passwordStrength,\r\n passwordStrengthLevel1,\r\n passwordStrengthLevel2,\r\n passwordStrengthLevel3,\r\n passwordStrengthLevel4,\r\n passwordStrengthTipDrawer,\r\n passwordStrengthTip1,\r\n passwordStrengthTip2,\r\n passwordStrengthTip3,\r\n },\r\n initialData,\r\n }\r\n}\r\n\r\nexport const mapResolveCheckoutFormContainerActions = {\r\n updateInitialFormState: (data: ResolveBuyFormData) => resolveBuyFormActions.updateInitialFormState(data),\r\n}\r\nexport type ResolveCheckoutFormContainerActionsType = typeof mapResolveCheckoutFormContainerActions\r\n","import { getCountryFromCookie } from '@common/utils/cookie-utils'\r\nimport { COUNTRIES } from '@common/constants'\r\nimport { connectRedux, GoToComponentProps } from '@common/utils'\r\nimport {\r\n ResolveCheckoutFormContainerActionsType,\r\n mapResolveCheckoutFormContainerActions,\r\n mapResolveCheckoutFormContainerState,\r\n} from '@gtresolve/connectedComponents/CheckoutFormContainer/connector'\r\nimport { ResolveCheckoutFormContainerState } from '@gtresolve/state/checkout-form-container/state'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { CheckoutSchema } from '@gtresolve/utils'\r\nimport { Formik, FormikProps } from 'formik'\r\nimport React, { FunctionComponent, useEffect, useRef } from 'react'\r\nimport { CHECKOUTFORM_FIELDS } from '@gtresolve/constants'\r\nimport { ConnectedCheckoutForm } from '../CheckoutForm'\r\n\r\ntype ResolveCheckoutFormContainerProps = GoToComponentProps<\r\n ResolveCheckoutFormContainerState,\r\n ResolveCheckoutFormContainerActionsType,\r\n {\r\n isTabletOrMobileView?: boolean\r\n isMobileView?: boolean\r\n setHasAddressValidationErrors: React.Dispatch>\r\n setGeneralFieldErrors: React.Dispatch>\r\n setHasCardValidationErrors: React.Dispatch>\r\n hasAddressValidationErrors: boolean\r\n generalFieldErrors: boolean\r\n hasCardValidationErrors: boolean\r\n }\r\n>\r\n\r\nexport const ResolveCheckoutFormContainer: FunctionComponent = ({\r\n state,\r\n props,\r\n actions,\r\n}) => {\r\n const formikRef = useRef>(null)\r\n const isSubmittingRef = useRef(false)\r\n\r\n // save form data when component unmounts\r\n useEffect(() => {\r\n const getFormValues = () => {\r\n return formikRef.current?.values\r\n }\r\n return () => {\r\n const formValues = getFormValues()\r\n if (formValues) {\r\n actions.updateInitialFormState(formValues)\r\n }\r\n }\r\n }, [actions])\r\n\r\n useEffect(() => {\r\n /* eslint-disable no-param-reassign */\r\n const countryCode = getCountryFromCookie() || COUNTRIES.US\r\n state.initialData.CountryCode = countryCode\r\n sessionStorage.setItem(CHECKOUTFORM_FIELDS.COUNTRY_CODE, countryCode)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n\r\n const setCheckoutFormValues = async () => {\r\n const fieldValues = {\r\n [CHECKOUTFORM_FIELDS.FIRST_NAME]: sessionStorage.getItem(CHECKOUTFORM_FIELDS.FIRST_NAME) || '',\r\n [CHECKOUTFORM_FIELDS.LAST_NAME]: sessionStorage.getItem(CHECKOUTFORM_FIELDS.LAST_NAME) || '',\r\n [CHECKOUTFORM_FIELDS.COUNTRY_CODE]: sessionStorage.getItem(CHECKOUTFORM_FIELDS.COUNTRY_CODE) || '',\r\n [CHECKOUTFORM_FIELDS.STREET1]: sessionStorage.getItem(CHECKOUTFORM_FIELDS.STREET1) || '',\r\n [CHECKOUTFORM_FIELDS.CITY]: sessionStorage.getItem(CHECKOUTFORM_FIELDS.CITY) || '',\r\n [CHECKOUTFORM_FIELDS.ZIP_CODE]: sessionStorage.getItem(CHECKOUTFORM_FIELDS.ZIP_CODE) || '',\r\n [CHECKOUTFORM_FIELDS.CONTACT_PHONE]: sessionStorage.getItem(CHECKOUTFORM_FIELDS.CONTACT_PHONE) || '',\r\n [CHECKOUTFORM_FIELDS.STATE_CODE]: sessionStorage.getItem(CHECKOUTFORM_FIELDS.STATE_CODE) || '',\r\n [CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME]:\r\n sessionStorage.getItem(CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME) || '',\r\n [CHECKOUTFORM_FIELDS.BILLING_LAST_NAME]:\r\n sessionStorage.getItem(CHECKOUTFORM_FIELDS.BILLING_LAST_NAME) || '',\r\n }\r\n\r\n await formikRef.current?.setValues((values) => ({ ...values, ...fieldValues }))\r\n }\r\n setCheckoutFormValues()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n CheckoutSchema(state.initialData.CountryCode, state.errorContent)}\r\n validateOnChange={false}\r\n validateOnBlur={false}\r\n onSubmit={(_values, formikBag) => {\r\n formikBag.setSubmitting(false)\r\n }}\r\n innerRef={formikRef}\r\n >\r\n {(formikProps) => {\r\n if (formikProps.isSubmitting) {\r\n isSubmittingRef.current = true\r\n }\r\n\r\n if (isSubmittingRef.current && !formikProps.isSubmitting) {\r\n isSubmittingRef.current = false\r\n }\r\n return (\r\n \r\n )\r\n }}\r\n \r\n )\r\n}\r\n\r\nexport const ConnectedResolveCheckoutFormContainer = connectRedux(\r\n ResolveCheckoutFormContainer,\r\n mapResolveCheckoutFormContainerState,\r\n mapResolveCheckoutFormContainerActions\r\n)\r\n","import { AppState } from 'app-store'\r\nimport { getBuyFormState, getLabelContent } from '@gtresolve/state/selectors'\r\nimport { resolveUserActions } from '@gtresolve/state/user/actions'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { resolveBuyFormActions } from '@gtresolve/state/buy-form/actions'\r\nimport { ResolveAccountFormInfoState } from './state'\r\n\r\nexport const mapResolveAccountFormInfoState = (state: AppState): ResolveAccountFormInfoState => {\r\n const {\r\n createAnAccount,\r\n signIn,\r\n firstName,\r\n lastName,\r\n email,\r\n password,\r\n passwordRequirements,\r\n errorInvalidPassword,\r\n errorRequiredPassword,\r\n passwordStrength,\r\n passwordStrengthLevel1,\r\n passwordStrengthLevel2,\r\n passwordStrengthLevel3,\r\n passwordStrengthLevel4,\r\n passwordStrengthTipDrawer,\r\n passwordStrengthTip1,\r\n passwordStrengthTip2,\r\n passwordStrengthTip3,\r\n } = getLabelContent(state)\r\n const { clearEmail, steps } = getBuyFormState(state)\r\n return {\r\n content: { createAnAccount, signIn, firstName, lastName, email, password, passwordRequirements },\r\n errorContent: {\r\n errorInvalidPassword,\r\n errorRequiredPassword,\r\n passwordStrength,\r\n passwordStrengthLevel1,\r\n passwordStrengthLevel2,\r\n passwordStrengthLevel3,\r\n passwordStrengthLevel4,\r\n passwordStrengthTipDrawer,\r\n passwordStrengthTip1,\r\n passwordStrengthTip2,\r\n passwordStrengthTip3,\r\n },\r\n clearEmail,\r\n steps,\r\n }\r\n}\r\n\r\nexport const mapResolveAccountFormInfoActions = {\r\n checkExistingUser: (email: string, form?: ResolveBuyFormData) => resolveUserActions.checkExistingUser(email, form),\r\n userLogin: (view: string, path?: string) => resolveUserActions.userLogin(view, path),\r\n setEmailClear: (clear: boolean) => resolveBuyFormActions.setClearEmail(clear),\r\n}\r\n\r\nexport type ResolveAccountFormInfoActionsType = typeof mapResolveAccountFormInfoActions\r\n","import { BoxWrapper, ConvertStringToReact, InputField, InlineErrorView } from '@common/components'\r\nimport { useClearField } from '@common/hooks'\r\nimport { connectRedux, GoToComponentProps } from '@common/utils'\r\nimport { CHECKOUTFORM_FIELDS, CHECKOUTFORM_STEPS } from '@gtresolve/constants'\r\nimport {\r\n ResolveAccountFormInfoActionsType,\r\n mapResolveAccountFormInfoActions,\r\n mapResolveAccountFormInfoState,\r\n} from '@gtresolve/connectedComponents/AccountFormInfo/connector'\r\nimport { ResolveAccountFormInfoState } from '@gtresolve/connectedComponents/AccountFormInfo/state'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { manuallyValidateFieldData } from '@gtresolve/utils'\r\nimport { Field, FieldProps, FormikProps } from 'formik'\r\nimport React, { FunctionComponent } from 'react'\r\nimport { ResolvePasswordValidation } from '@gtresolve/components/PasswordValidation'\r\nimport passwordValidationStyles from '@gtresolve/components/PasswordValidation/password-validation.module.css'\r\nimport { GTRESOLVE_VIEW_PATHS } from '@common/constants'\r\nimport accountStyles from './account-info.module.css'\r\n\r\nexport interface ResolveAccountFormInfoComponentProps {\r\n useSameForBilling: boolean\r\n resetFatalError: () => void\r\n canValidateAddress: (values: ResolveBuyFormData) => void\r\n formikRef: React.RefObject>\r\n setCheckoutFormInlineError: (value: string) => void\r\n removeCheckoutFormInlineError: (value: string) => void\r\n inlineErrors: { [key: string]: string } | Record\r\n isSubmittingRef: React.RefObject\r\n setOnInitialValue: React.Dispatch>>\r\n}\r\n\r\ntype ResolveAccountFormInfoProps = GoToComponentProps<\r\n ResolveAccountFormInfoState,\r\n ResolveAccountFormInfoActionsType,\r\n ResolveAccountFormInfoComponentProps\r\n>\r\nexport const ResolveAccountFormInfo: FunctionComponent = ({ state, actions, props }) => {\r\n const {\r\n useSameForBilling,\r\n resetFatalError,\r\n canValidateAddress,\r\n formikRef,\r\n setCheckoutFormInlineError,\r\n removeCheckoutFormInlineError,\r\n inlineErrors,\r\n isSubmittingRef,\r\n setOnInitialValue,\r\n } = props\r\n const { content, errorContent, clearEmail, steps } = state\r\n\r\n const createUserAccountStep = steps[CHECKOUTFORM_STEPS.CREATE_USER_ACCOUNT]\r\n const userAccountCreated = createUserAccountStep.completed && !createUserAccountStep.error\r\n\r\n const userLogIn = () => actions.userLogin('billing view', GTRESOLVE_VIEW_PATHS.RESOLVE_CHECKOUT)\r\n const existingUserCheck = (email: string, form: ResolveBuyFormData) => {\r\n actions.checkExistingUser(email, form)\r\n }\r\n\r\n // clear email\r\n useClearField(clearEmail, formikRef, CHECKOUTFORM_FIELDS.EMAIL)\r\n\r\n return (\r\n \r\n
\r\n

\r\n {' '}\r\n \r\n {content.signIn}\r\n \r\n

\r\n
\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : field.value\r\n return (\r\n \r\n {\r\n if (clearEmail) actions.setEmailClear(false)\r\n setOnInitialValue((oldState) => ({\r\n ...oldState,\r\n [field.name]: e.target.value,\r\n }))\r\n }}\r\n onBlur={async (e) => {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n if (!meta.error && e.target.value.length > 0) {\r\n existingUserCheck(e.target.value, form.values)\r\n canValidateAddress(form.values)\r\n }\r\n\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n form.validateField(field.name)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n valid={manuallyValidateFieldData({ form, field, meta })}\r\n disabled={userAccountCreated}\r\n />\r\n \r\n )\r\n }}\r\n \r\n\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : field.value\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n resetFatalError()\r\n canValidateAddress(form.values)\r\n }}\r\n onChange={async (e) => {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n if (useSameForBilling) {\r\n sessionStorage.setItem(\r\n CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME,\r\n e.target.value.trim()\r\n )\r\n await form.setFieldValue(\r\n CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME,\r\n e.target.value\r\n )\r\n }\r\n }}\r\n onFocus={(e) => {\r\n setOnInitialValue((oldState) => ({\r\n ...oldState,\r\n [field.name]: e.target.value,\r\n }))\r\n }}\r\n valid={manuallyValidateFieldData({ form, field, meta })}\r\n disabled={userAccountCreated}\r\n />\r\n \r\n )\r\n }}\r\n \r\n\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : field.value\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n resetFatalError()\r\n canValidateAddress(form.values)\r\n }}\r\n onChange={async (e) => {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n if (useSameForBilling) {\r\n sessionStorage.setItem(\r\n CHECKOUTFORM_FIELDS.BILLING_LAST_NAME,\r\n e.target.value.trim()\r\n )\r\n await form.setFieldValue(\r\n CHECKOUTFORM_FIELDS.BILLING_LAST_NAME,\r\n e.target.value\r\n )\r\n }\r\n }}\r\n onFocus={(e) => {\r\n setOnInitialValue((oldState) => ({\r\n ...oldState,\r\n [field.name]: e.target.value,\r\n }))\r\n }}\r\n valid={manuallyValidateFieldData({ form, field, meta })}\r\n disabled={userAccountCreated}\r\n />\r\n \r\n )\r\n }}\r\n \r\n\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n return (\r\n \r\n 0\r\n ? errorContent.errorInvalidPassword\r\n : errorContent.errorRequiredPassword\r\n }\r\n onBlur={(e) => {\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n }}\r\n value={field.value}\r\n valid={manuallyValidateFieldData({ form, field, meta })}\r\n touched={meta.touched}\r\n disabled={userAccountCreated}\r\n modifier={passwordValidationStyles['wrapper--compact']}\r\n passwordStrength={errorContent.passwordStrength}\r\n passwordStrengthLevel1={errorContent.passwordStrengthLevel1}\r\n passwordStrengthLevel2={errorContent.passwordStrengthLevel2}\r\n passwordStrengthLevel3={errorContent.passwordStrengthLevel3}\r\n passwordStrengthLevel4={errorContent.passwordStrengthLevel4}\r\n passwordStrengthTipDrawer={errorContent.passwordStrengthTipDrawer}\r\n passwordStrengthTip1={errorContent.passwordStrengthTip1}\r\n passwordStrengthTip2={errorContent.passwordStrengthTip2}\r\n passwordStrengthTip3={errorContent.passwordStrengthTip3}\r\n isSubmittingRef={isSubmittingRef}\r\n />\r\n \r\n )\r\n }}\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport const ConnectedResolveAccountFormInfo = connectRedux(\r\n ResolveAccountFormInfo,\r\n mapResolveAccountFormInfoState,\r\n mapResolveAccountFormInfoActions\r\n)\r\n","import { locationActions } from '@common/state/location/actions'\r\nimport { getLocationState } from '@common/state/selectors'\r\nimport { AppState } from 'app-store'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { resolveCheckoutActions } from '@gtresolve/state/checkout/actions'\r\nimport { getContentData, getLabelContent, getUserState, getCheckoutState } from '@gtresolve/state/selectors'\r\nimport { COUNTRIES, SC_SITE } from '@common/constants'\r\nimport { resolveBuyFormActions } from '@gtresolve/state/buy-form/actions'\r\nimport { getContentLanguage } from '@gtresolve/utils/language-helpers'\r\nimport { ResolveBillingFormInfoState } from './state'\r\n\r\nexport const mapResolveBillingFormInfoState = (state: AppState): ResolveBillingFormInfoState => {\r\n const {\r\n billingInformation,\r\n useAccountInfo,\r\n firstName,\r\n lastName,\r\n address,\r\n country,\r\n city,\r\n state: addressState,\r\n pleaseSelect,\r\n postalCode,\r\n phone,\r\n taxBusiness,\r\n taxIndividual,\r\n taxNumber,\r\n gSTDisclaimer,\r\n vATDisclaimer,\r\n gSTOption,\r\n vATOption,\r\n companyName,\r\n optional,\r\n taxCodeGST,\r\n taxCodeVAT,\r\n errorInvalidTaxNumber,\r\n } = getLabelContent(state)\r\n const location = getLocationState(state)\r\n\r\n const {\r\n existingBillingInformation,\r\n loggedIn: { isUserLoggedIn },\r\n } = getUserState(state)\r\n\r\n const { taxType } = getCheckoutState(state)\r\n\r\n const { DefaultCountry: contentDefaultCountry } = getContentData(state)\r\n const defaultCountry = contentDefaultCountry || COUNTRIES.US\r\n const language = getContentLanguage()\r\n\r\n return {\r\n content: {\r\n billingInformation,\r\n useAccountInfo,\r\n firstName,\r\n lastName,\r\n address,\r\n country,\r\n city,\r\n state: addressState,\r\n pleaseSelect,\r\n postalCode,\r\n phone,\r\n taxBusiness,\r\n taxIndividual,\r\n taxNumber,\r\n gSTDisclaimer,\r\n vATDisclaimer,\r\n gSTOption,\r\n vATOption,\r\n companyName,\r\n optional,\r\n taxCodeGST,\r\n taxCodeVAT,\r\n errorInvalidTaxNumber,\r\n },\r\n location,\r\n isUserLoggedIn,\r\n existingBillingInformation,\r\n defaultCountry,\r\n taxType,\r\n language,\r\n }\r\n}\r\n\r\nexport const mapResolveBillingFormInfoActions = {\r\n getCountries: () => locationActions.getCountries(SC_SITE.RESOLVE),\r\n calculatePrice: (values: ResolveBuyFormData) => resolveCheckoutActions.calculatePrice(values),\r\n setTaxType: (type: string) => resolveCheckoutActions.setTaxType(type),\r\n setStatesOptional: (optional: boolean) => resolveBuyFormActions.setStatesOptional(optional),\r\n}\r\nexport type ResolveBillingFormInfoActionsType = typeof mapResolveBillingFormInfoActions\r\n","// extracted by mini-css-extract-plugin\nexport default {\"grid\":\"billing-info-module__grid\",\"cc-first-name\":\"billing-info-module__cc-first-name\",\"cc-last-name\":\"billing-info-module__cc-last-name\",\"address\":\"billing-info-module__address\",\"city\":\"billing-info-module__city\",\"state\":\"billing-info-module__state\",\"zipcode\":\"billing-info-module__zipcode\",\"phone\":\"billing-info-module__phone\",\"checkbox-wrapper\":\"billing-info-module__checkbox-wrapper\",\"existing-address\":\"billing-info-module__existing-address\",\"country-wrapper\":\"billing-info-module__country-wrapper\",\"tax-id\":\"billing-info-module__tax-id\",\"radioInputField-module__radios\":\"billing-info-module__radioInputField-module__radios\",\"tax\":\"billing-info-module__tax\",\"tax-disclaimer\":\"billing-info-module__tax-disclaimer\",\"tax-option\":\"billing-info-module__tax-option\",\"tax-checkbox\":\"billing-info-module__tax-checkbox\",\"tax-code\":\"billing-info-module__tax-code\",\"existing-tax\":\"billing-info-module__existing-tax\",\"exisiting-company\":\"billing-info-module__exisiting-company\"};","import { BoxWrapper, Checkbox, InputField, Select, InlineErrorView, RadioInputField } from '@common/components'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\n\r\nimport { Field, FieldProps, FormikProps } from 'formik'\r\nimport React, { FunctionComponent, useCallback, useEffect, useState, ChangeEvent, useRef } from 'react'\r\nimport { isEmpty } from 'lodash-es'\r\nimport { manuallyValidateFieldData, checkAlphaNumerical } from '@gtresolve/utils'\r\nimport { connectRedux, GoToComponentProps } from '@common/utils'\r\nimport { ResolveBillingFormInfoState } from '@gtresolve/connectedComponents/BillingFormInfo/state'\r\nimport {\r\n ResolveBillingFormInfoActionsType,\r\n mapResolveBillingFormInfoActions,\r\n mapResolveBillingFormInfoState,\r\n} from '@gtresolve/connectedComponents/BillingFormInfo/connector'\r\nimport { Address } from '@common/state/location/state'\r\nimport { CHECKOUTFORM_FIELDS } from '@gtresolve/constants'\r\nimport { TAX_COUNTRIES } from '@common/constants'\r\nimport selectStyles from '@common/components/Select/select.module.css'\r\nimport InfoIcon from '@common/images/icon-info-grey.svg'\r\nimport { getAddressFromGooglePlace } from '@common/utils/getAddressFromGooglePlace'\r\nimport { useAddressAutoFill } from '@common/hooks/useAddressAutoFill'\r\nimport { GooglePlace } from '@common/state/addressAutoFill/state'\r\nimport { useTaxNumberValidation } from '@gtresolve/hooks'\r\nimport billingStyles from './billing-info.module.css'\r\n\r\nexport interface ResolveBillingFormInfoComponentProps {\r\n useSameForBilling: boolean\r\n resetFatalError: () => void\r\n canValidateAddress: (values: ResolveBuyFormData) => void\r\n setUseSameForBilling: (useSame: boolean) => void\r\n trackBillingInfoStep: () => void\r\n setHasAddressValidationErrors: (value: React.SetStateAction) => void\r\n formikRef: React.RefObject>\r\n setCheckoutFormInlineError: (value: string) => void\r\n removeCheckoutFormInlineError: (value: string) => void\r\n inlineErrors: { [key: string]: string } | Record\r\n checkCurrencyConflict: (country: string, originCountry: string) => void\r\n setTaxRequired: (value: boolean) => void\r\n}\r\n\r\ntype ResolveBillingFormInfoProps = GoToComponentProps<\r\n ResolveBillingFormInfoState,\r\n ResolveBillingFormInfoActionsType,\r\n ResolveBillingFormInfoComponentProps\r\n>\r\n\r\nexport const BillingFormInfo: FunctionComponent = ({ state, actions, props }) => {\r\n const { content, existingBillingInformation, isUserLoggedIn, location, taxType } = state\r\n const {\r\n useSameForBilling,\r\n resetFatalError,\r\n canValidateAddress,\r\n setUseSameForBilling,\r\n trackBillingInfoStep,\r\n setHasAddressValidationErrors,\r\n formikRef,\r\n setCheckoutFormInlineError,\r\n removeCheckoutFormInlineError,\r\n inlineErrors,\r\n checkCurrencyConflict,\r\n setTaxRequired,\r\n } = props\r\n\r\n const [countryCode, setCountryCode] = useState('')\r\n const [showTaxField, setShowTaxField] = useState(false)\r\n const [showIndividualTax, setShowIndividualTax] = useState(true)\r\n const [showBrazilTaxField, setShowBrazilTaxField] = useState(false)\r\n const [showOptionalTaxField, setShowOptionalTaxField] = useState(false)\r\n const [shouldLoadAddressAutoFill, setShouldLoadAddressAutoFill] = useState(false)\r\n\r\n const taxNumbValidation = useTaxNumberValidation()\r\n\r\n useEffect(() => {\r\n if (formikRef.current && !taxNumbValidation.isValidating && showTaxField) {\r\n if (taxNumbValidation.isValid) {\r\n formikRef.current.setFieldError(CHECKOUTFORM_FIELDS.TAX_ID, '')\r\n } else {\r\n formikRef.current.setFieldError(CHECKOUTFORM_FIELDS.TAX_ID, content.errorInvalidTaxNumber)\r\n }\r\n }\r\n }, [\r\n formikRef,\r\n content.errorInvalidTaxNumber,\r\n showTaxField,\r\n taxNumbValidation.isValid,\r\n taxNumbValidation.isValidating,\r\n ])\r\n\r\n // Do not set allowAddressAutofill back to true until bug WAE1-1721 is solved.\r\n // (See comment replies on that ticket for root cause of the bug.)\r\n const allowAddressAutofill = false\r\n\r\n const streetFieldRef = useRef(null)\r\n\r\n const selectCountry = (e: React.ChangeEvent) => {\r\n checkCurrencyConflict(countryCode, e.target.value)\r\n }\r\n const selectedCountry = state.location.countries.find((country) => {\r\n return country.abbreviation === countryCode\r\n })\r\n\r\n const setAddressErrors = useCallback(\r\n (errorMessage: string | undefined) => {\r\n if (formikRef.current) {\r\n formikRef.current.setFieldError('CountryCode', errorMessage)\r\n formikRef.current.setFieldError('Street1', errorMessage)\r\n formikRef.current.setFieldError('City', errorMessage)\r\n formikRef.current.setFieldError('StateCode', errorMessage)\r\n formikRef.current.setFieldError('ZipCode', errorMessage)\r\n }\r\n },\r\n [formikRef]\r\n )\r\n\r\n const setAddressValues = useCallback(\r\n (address: Address) => {\r\n if (formikRef.current) {\r\n formikRef.current.setFieldValue('CountryCode', address.country)\r\n formikRef.current.setFieldValue('Street1', address.addressLine1)\r\n formikRef.current.setFieldValue('City', address.city)\r\n formikRef.current.setFieldValue('StateCode', address.state)\r\n formikRef.current.setFieldValue('ZipCode', address.postalCode)\r\n }\r\n },\r\n [formikRef]\r\n )\r\n\r\n const getFormValuesWithUpdatedAddress = useCallback(\r\n (correctedAddress: Address) => {\r\n if (formikRef.current) {\r\n const currentFormValues = formikRef.current.values\r\n const { addressLine1: Street1, city: City, state: StateCode, postalCode: ZipCode } = correctedAddress\r\n const updatedAddressValues = { ...currentFormValues, Street1, City, StateCode, ZipCode }\r\n return updatedAddressValues\r\n }\r\n return null\r\n },\r\n [formikRef]\r\n )\r\n\r\n const isLocationEligible = (country: string) =>\r\n location.countries.find((eligibleCountry) => country === eligibleCountry.abbreviation)\r\n\r\n const existingBillingInfoLocation = location.countries.find((country) => {\r\n return country.abbreviation === existingBillingInformation?.country\r\n })\r\n\r\n const getExistingBillingInfoTaxType = () => {\r\n if (existingBillingInformation && existingBillingInformation.federalTaxType) {\r\n return existingBillingInformation.federalTaxType === content.taxIndividual\r\n ? content.taxIndividual\r\n : content.taxBusiness\r\n }\r\n if (existingBillingInfoLocation) {\r\n return existingBillingInfoLocation.taxType === 'GST' ? content.taxCodeGST : content.taxCodeVAT\r\n }\r\n return ''\r\n }\r\n\r\n const handleTaxOptionChanged = (e: ChangeEvent) => {\r\n if (formikRef.current) {\r\n formikRef.current.setFieldValue('TaxNumber', '')\r\n }\r\n actions.setTaxType(e.target.value)\r\n }\r\n\r\n const handleAutoFillAddress = (place: GooglePlace) => {\r\n const addr = getAddressFromGooglePlace(place)\r\n setAddressValues(addr)\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n canValidateAddress(formikRef.current!.values)\r\n }\r\n\r\n // effects\r\n // get list of countries\r\n useEffect(() => {\r\n if (!location.isCountriesLoaded) {\r\n actions.getCountries()\r\n }\r\n }, [actions, location.isCountriesLoaded])\r\n\r\n useEffect(() => {\r\n if (location.isCountriesLoaded && !countryCode && formikRef.current) {\r\n const preSelectedCountry = isLocationEligible(formikRef?.current.values.CountryCode)\r\n setCountryCode(preSelectedCountry?.abbreviation || state.defaultCountry)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [location.isCountriesLoaded])\r\n\r\n useEffect(() => {\r\n if (location.isCountriesLoaded && countryCode && formikRef.current) {\r\n if (selectedCountry && !selectedCountry.states) {\r\n actions.setStatesOptional(true)\r\n } else if (!formikRef.current.values.StateCode) {\r\n actions.setStatesOptional(false)\r\n }\r\n\r\n if (selectedCountry && selectedCountry.hasTaxId) {\r\n setShowTaxField(true)\r\n if (countryCode === 'BR') {\r\n setShowBrazilTaxField(true)\r\n formikRef.current.values.TaxType = 'Individual'\r\n setTaxRequired(true)\r\n } else {\r\n removeCheckoutFormInlineError('TaxNumber')\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [location.isCountriesLoaded, countryCode])\r\n\r\n // Once the countryCode is determined, then enable Google Places address autofill\r\n useEffect(() => {\r\n if (allowAddressAutofill && countryCode) {\r\n setShouldLoadAddressAutoFill(true)\r\n }\r\n }, [countryCode, allowAddressAutofill])\r\n\r\n useAddressAutoFill({\r\n language: state.language,\r\n streetFieldRef,\r\n countries: [countryCode],\r\n onChangePlace: handleAutoFillAddress,\r\n shouldLoad: shouldLoadAddressAutoFill,\r\n })\r\n\r\n // show & reset address errors\r\n useEffect(() => {\r\n if (!location.validAddress && location.addressErrors.length !== 0) {\r\n setHasAddressValidationErrors(true)\r\n setAddressErrors(' ')\r\n } else if (location.validAddress && location.addressErrors.length === 0) {\r\n setHasAddressValidationErrors(false)\r\n setAddressErrors(undefined)\r\n }\r\n }, [location, setAddressErrors, setHasAddressValidationErrors])\r\n\r\n // update with corrected address\r\n useEffect(() => {\r\n if (location.validAddress && location.correctedAddress.city && formikRef.current) {\r\n setAddressValues(location.correctedAddress)\r\n // we need to do this because, formik setFieldValue is async in nature and doesn't return a promise\r\n // so we can't assume we have updated values within formikRef\r\n const updatedFormValues = getFormValuesWithUpdatedAddress(location.correctedAddress)\r\n if (updatedFormValues) {\r\n actions.calculatePrice(updatedFormValues)\r\n }\r\n }\r\n }, [\r\n actions,\r\n location.validAddress,\r\n location.correctedAddress,\r\n formikRef,\r\n setAddressValues,\r\n getFormValuesWithUpdatedAddress,\r\n ])\r\n\r\n useEffect(() => {\r\n if (taxType) {\r\n if (taxType === 'individualTax' && formikRef.current) {\r\n formikRef.current.values.TaxType = 'Individual'\r\n setShowIndividualTax(true)\r\n }\r\n if (taxType === 'businessTax' && formikRef.current) {\r\n formikRef.current.values.TaxType = 'Business'\r\n setShowIndividualTax(false)\r\n }\r\n if (taxType === 'GstVatNotRequired' && formikRef.current) {\r\n formikRef.current.values.TaxNumber = ''\r\n formikRef.current.errors.TaxNumber = ''\r\n formikRef.current.touched.TaxNumber = false\r\n removeCheckoutFormInlineError('TaxNumber')\r\n setTaxRequired(false)\r\n setShowOptionalTaxField(false)\r\n }\r\n if (taxType === 'GstVatRequired') {\r\n setTaxRequired(true)\r\n setShowOptionalTaxField(true)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [taxType])\r\n\r\n const isTaxGST = selectedCountry?.taxType === 'GST'\r\n\r\n const clearBillingFields = async (\r\n fieldName: CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME | CHECKOUTFORM_FIELDS.BILLING_LAST_NAME\r\n ) => {\r\n sessionStorage.removeItem(fieldName)\r\n await formikRef.current?.setFieldValue(fieldName, '')\r\n }\r\n\r\n const setBillingValues = async (\r\n accountFieldName: CHECKOUTFORM_FIELDS.FIRST_NAME | CHECKOUTFORM_FIELDS.LAST_NAME,\r\n billingFieldName: CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME | CHECKOUTFORM_FIELDS.BILLING_LAST_NAME\r\n ) => {\r\n const field = formikRef.current?.getFieldProps(accountFieldName)\r\n const form = formikRef.current\r\n const value = field?.value || sessionStorage.getItem(accountFieldName)\r\n\r\n if (!value) {\r\n const firstNameValue =\r\n formikRef.current?.values[billingFieldName] || sessionStorage.getItem(billingFieldName)\r\n await formikRef.current?.setFieldValue(accountFieldName, firstNameValue)\r\n\r\n if (firstNameValue) {\r\n sessionStorage.setItem(accountFieldName, firstNameValue)\r\n }\r\n\r\n if (field) {\r\n form?.validateField(field.name)\r\n }\r\n } else {\r\n await formikRef.current?.setFieldValue(billingFieldName, value || '')\r\n sessionStorage.setItem(billingFieldName, value || '')\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n

{content.billingInformation}

\r\n\r\n {!isUserLoggedIn || isEmpty(existingBillingInformation) ? (\r\n <>\r\n
\r\n {\r\n setUseSameForBilling(!useSameForBilling)\r\n sessionStorage.setItem('useSameForBilling', `${!useSameForBilling}`)\r\n\r\n if (useSameForBilling) {\r\n clearBillingFields(CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME)\r\n clearBillingFields(CHECKOUTFORM_FIELDS.BILLING_LAST_NAME)\r\n } else {\r\n setBillingValues(\r\n CHECKOUTFORM_FIELDS.FIRST_NAME,\r\n CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME\r\n )\r\n setBillingValues(\r\n CHECKOUTFORM_FIELDS.LAST_NAME,\r\n CHECKOUTFORM_FIELDS.BILLING_LAST_NAME\r\n )\r\n }\r\n }}\r\n label={content.useAccountInfo}\r\n qaTag=\"checkout-form-same-for-billing\"\r\n />\r\n
\r\n
\r\n <>\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n // TODO : optimize the conditions\r\n const billingInfoChecked = useSameForBilling\r\n ? sessionStorage.getItem(field.name)\r\n : ''\r\n\r\n let value = !field.value ? billingInfoChecked : field.value\r\n\r\n const accountFirstName = form.getFieldProps(CHECKOUTFORM_FIELDS.FIRST_NAME)\r\n .value\r\n ? sessionStorage.getItem(CHECKOUTFORM_FIELDS.BILLING_FIRST_NAME)\r\n : form.getFieldProps(CHECKOUTFORM_FIELDS.FIRST_NAME).value\r\n\r\n const checkSession = sessionStorage.getItem(CHECKOUTFORM_FIELDS.FIRST_NAME)\r\n ? sessionStorage.getItem(CHECKOUTFORM_FIELDS.FIRST_NAME)\r\n : accountFirstName\r\n\r\n value = useSameForBilling ? checkSession : value?.trim()\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n canValidateAddress(form.values)\r\n resetFatalError()\r\n }}\r\n onChange={async (e) => {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n data-qat=\"billing-first-name\"\r\n />\r\n \r\n )\r\n }}\r\n \r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n // TODO : optimize the conditions\r\n const billingInfoChecked = useSameForBilling\r\n ? sessionStorage.getItem(field.name)\r\n : ''\r\n\r\n let value = !field.value ? billingInfoChecked : field.value\r\n\r\n const accountLastName = form.getFieldProps(CHECKOUTFORM_FIELDS.LAST_NAME).value\r\n ? sessionStorage.getItem(CHECKOUTFORM_FIELDS.BILLING_LAST_NAME)\r\n : form.getFieldProps(CHECKOUTFORM_FIELDS.LAST_NAME).value\r\n\r\n const checkSession = sessionStorage.getItem(CHECKOUTFORM_FIELDS.LAST_NAME)\r\n ? sessionStorage.getItem(CHECKOUTFORM_FIELDS.LAST_NAME)\r\n : accountLastName\r\n\r\n value = useSameForBilling ? checkSession : value?.trim()\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n canValidateAddress(form.values)\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n data-qat=\"billing-last-name\"\r\n />\r\n \r\n )\r\n }}\r\n \r\n \r\n
\r\n \r\n {({ form, field }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : countryCode\r\n return (\r\n {\r\n selectCountry(e)\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n onBlur={() => {\r\n canValidateAddress(form.values)\r\n }}\r\n value={value as string}\r\n selected={!!countryCode}\r\n modifier={selectStyles['select-wrapper--compact']}\r\n >\r\n {location.countries.length === 0 ? (\r\n \r\n ) : (\r\n location.countries.map((country) => (\r\n \r\n {country.name}\r\n \r\n ))\r\n )}\r\n \r\n )\r\n }}\r\n \r\n
\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : field.value\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n canValidateAddress(form.values)\r\n resetFatalError()\r\n trackBillingInfoStep()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n data-qat=\"billing-address\"\r\n />\r\n \r\n )\r\n }}\r\n \r\n\r\n \r\n {({ field, form, meta }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : field.value\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n canValidateAddress(form.values)\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n data-qat=\"billing-city\"\r\n />\r\n \r\n )\r\n }}\r\n \r\n {selectedCountry && selectedCountry.states && (\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : field.value\r\n return (\r\n \r\n {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n onBlur={async (e) => {\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n canValidateAddress(form.values)\r\n resetFatalError()\r\n }}\r\n valid={manuallyValidateFieldData({ form, field, meta })}\r\n wrapperClass={billingStyles.state}\r\n modifier={selectStyles['select-wrapper--compact']}\r\n >\r\n \r\n {selectedCountry.states &&\r\n selectedCountry.states.map((countryState) => (\r\n \r\n {countryState.name}\r\n \r\n ))}\r\n \r\n \r\n )\r\n }}\r\n \r\n )}\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : field.value\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n canValidateAddress(form.values)\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n data-qat=\"billing-postal-code\"\r\n />\r\n \r\n )\r\n }}\r\n \r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n const value = !field.value ? sessionStorage.getItem(field.name) : field.value\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n sessionStorage.setItem(field.name, e.target.value.trim())\r\n }}\r\n data-qat=\"billing-contact-number\"\r\n />\r\n \r\n )\r\n }}\r\n \r\n
\r\n {showTaxField && (\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n return (\r\n
\r\n {showBrazilTaxField ? (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n if (!meta.error && meta.value.length > 0) {\r\n taxNumbValidation.validate(\r\n countryCode,\r\n meta.value,\r\n formikRef.current!.values.TaxType\r\n )\r\n }\r\n canValidateAddress(form.values)\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n form.validateField(field.name)\r\n }}\r\n ismasked={true}\r\n mask={\r\n showIndividualTax ? '999.999.999-99' : '99.999.999/9999-99'\r\n }\r\n maskChar=\"\"\r\n data-qat=\"billing-tax-number\"\r\n />\r\n \r\n ) : (\r\n <>\r\n {\r\n if (showOptionalTaxField && formikRef.current) {\r\n actions.setTaxType('GstVatNotRequired')\r\n } else {\r\n actions.setTaxType('GstVatRequired')\r\n }\r\n }}\r\n label={isTaxGST ? content.gSTOption : content.vATOption}\r\n qaTag=\"checkout-form-optional-tax\"\r\n modifier={billingStyles['tax-checkbox']}\r\n />\r\n {showOptionalTaxField && (\r\n \r\n
\r\n \r\n {TAX_COUNTRIES[countryCode] || countryCode}\r\n \r\n {\r\n await form.setFieldValue(\r\n field.name,\r\n e.target.value.trim()\r\n )\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n if (!meta.error && meta.value.length > 0) {\r\n taxNumbValidation.validate(\r\n countryCode,\r\n meta.value\r\n )\r\n }\r\n canValidateAddress(form.values)\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n form.validateField(field.name)\r\n }}\r\n checkValid={checkAlphaNumerical}\r\n data-qat=\"billing-tax-number\"\r\n />\r\n
\r\n
\r\n \"info\"\r\n \r\n {isTaxGST\r\n ? content.gSTDisclaimer\r\n : content.vATDisclaimer}\r\n \r\n
\r\n \r\n )}\r\n \r\n )}\r\n
\r\n )\r\n }}\r\n
\r\n )}\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n }}\r\n data-qat=\"billing-company-name\"\r\n />\r\n \r\n )\r\n }}\r\n \r\n \r\n ) : (\r\n existingBillingInformation && (\r\n
\r\n
\r\n {existingBillingInformation.firstName} {existingBillingInformation.lastName}\r\n
\r\n
{existingBillingInformation.addressLine1}
\r\n
\r\n {existingBillingInformation.city} {existingBillingInformation.state}{' '}\r\n {existingBillingInfoLocation?.name} {existingBillingInformation.postalCode}\r\n
\r\n
{existingBillingInformation.phoneNumber}
\r\n {existingBillingInformation.taxNumber && (\r\n
\r\n {getExistingBillingInfoTaxType()}: {existingBillingInformation.taxNumber}\r\n
\r\n )}\r\n {existingBillingInformation.companyName ? (\r\n
\r\n {content.companyName}: {existingBillingInformation.companyName}\r\n
\r\n ) : (\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n }}\r\n data-qat=\"billing-company-name\"\r\n />\r\n \r\n )\r\n }}\r\n \r\n )}\r\n
\r\n )\r\n )}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport const ConnectedResolveBillingFormInfo = connectRedux(\r\n BillingFormInfo,\r\n mapResolveBillingFormInfoState,\r\n mapResolveBillingFormInfoActions\r\n)\r\n","// extracted by mini-css-extract-plugin\nexport default {\"submit\":\"resolve-checkout-form-submit__submit\"};","import classNames from 'classnames'\r\nimport { FormSubmitButton, TrustArcLogo } from '@common/components'\r\nimport { connectRedux, GoToComponentProps } from '@common/utils'\r\nimport { ConnectedResolveOrderSummary } from '@gtresolve/connectedComponents'\r\nimport {\r\n ResolveCheckoutFormSubmissionActionsType,\r\n mapResolveCheckoutFormSubmissionActions,\r\n mapResolveCheckoutFormSubmissionState,\r\n} from '@gtresolve/connectedComponents/CheckoutFormSubmission/connector'\r\nimport { ResolveCheckoutFormSubmissionState } from '@gtresolve/connectedComponents/CheckoutFormSubmission/state'\r\n\r\nimport React, { FunctionComponent } from 'react'\r\nimport checkoutFormStyles from './resolve-checkout-form-submit.css'\r\nimport billingStyles from '../../views/Billing/billing.module.css'\r\n\r\nexport interface ResolveCheckoutFormSubmissionComponentProps {\r\n isSubmitting: boolean\r\n preSubmit: () => void\r\n isTabletOrMobileView?: boolean | undefined\r\n inlineErrors: { [key: string]: string } | Record\r\n}\r\ntype ResolveCheckoutFormSubmissionProps = GoToComponentProps<\r\n ResolveCheckoutFormSubmissionState,\r\n ResolveCheckoutFormSubmissionActionsType,\r\n ResolveCheckoutFormSubmissionComponentProps\r\n>\r\n\r\nexport const ResolveCheckoutFormSubmission: FunctionComponent = ({\r\n state,\r\n props,\r\n}) => {\r\n const { content, isFatalError, fatalErrorBlocker, totalLoading, calculatedTotal, disablePlanSelection } = state\r\n const { isSubmitting, preSubmit, isTabletOrMobileView, inlineErrors } = props\r\n const submitBtnStyles = classNames({\r\n [billingStyles['resolve-custom-submit-btn']]: true,\r\n [billingStyles['common-submit-btn']]: true,\r\n [checkoutFormStyles.submit]: true,\r\n })\r\n\r\n return (\r\n <>\r\n {!isTabletOrMobileView ? (\r\n <>\r\n {\r\n preSubmit()\r\n }}\r\n text={content.completePurchase}\r\n />\r\n \r\n ) : (\r\n <>\r\n \r\n {\r\n preSubmit()\r\n }}\r\n text={content.completePurchase}\r\n />\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport const ConnectedResolveCheckoutFormSubmission = connectRedux(\r\n ResolveCheckoutFormSubmission,\r\n mapResolveCheckoutFormSubmissionState,\r\n mapResolveCheckoutFormSubmissionActions\r\n)\r\n","import { getFatalError, getMarketingState } from '@common/state/selectors'\r\nimport { AppState } from 'app-store'\r\nimport { getCheckoutState, getLabelContent } from '@gtresolve/state/selectors'\r\nimport { ResolveCheckoutFormSubmissionState } from './state'\r\n\r\nexport const mapResolveCheckoutFormSubmissionState = (state: AppState): ResolveCheckoutFormSubmissionState => {\r\n const { completePurchase, pricingNote, optOut, optOutCheckboxLabel } = getLabelContent(state)\r\n const { isFatalError, fatalErrorBlocker } = getFatalError(state)\r\n const { totalLoading, calculatedTotal } = getCheckoutState(state)\r\n const { displayOptOut } = getMarketingState(state)\r\n\r\n return {\r\n content: { completePurchase, pricingNote, optOut, optOutCheckboxLabel },\r\n isFatalError,\r\n fatalErrorBlocker,\r\n totalLoading,\r\n displayOptOut,\r\n calculatedTotal,\r\n disablePlanSelection: false,\r\n }\r\n}\r\n\r\nexport const mapResolveCheckoutFormSubmissionActions = {}\r\n\r\nexport type ResolveCheckoutFormSubmissionActionsType = typeof mapResolveCheckoutFormSubmissionActions\r\n","import { getFatalError, getFlexState } from '@common/state/selectors'\r\nimport { AppState } from 'app-store'\r\nimport { flexActions } from '@common/state/flex/actions'\r\nimport { getLabelContent, getUserState } from '@gtresolve/state/selectors'\r\nimport { ResolvePaymentFormInfoState } from './state'\r\n\r\nexport const mapResolvePaymentFormInfoState = (state: AppState): ResolvePaymentFormInfoState => {\r\n const {\r\n paymentDetails,\r\n edit,\r\n cardNumber,\r\n expirationDate,\r\n cVVHint,\r\n cVV,\r\n errorInvalidCreditCardNumber,\r\n errorRequiredCreditCardNumber,\r\n errorInvalidCVV,\r\n errorRequiredCVV,\r\n secure,\r\n } = getLabelContent(state)\r\n const { isFatalError } = getFatalError(state)\r\n const { existingPaymentInformation } = getUserState(state)\r\n const { isCardValid, isCvvValid, userInteractedWithFlexField, userInteractedWithFlexFieldCvv, microformCreated } =\r\n getFlexState(state)\r\n\r\n return {\r\n content: { paymentDetails, edit, cardNumber, expirationDate, cVVHint, cVV, secure },\r\n errorContent: {\r\n errorInvalidCreditCardNumber,\r\n errorRequiredCreditCardNumber,\r\n errorInvalidCVV,\r\n errorRequiredCVV,\r\n },\r\n isFatalError,\r\n existingPaymentInformation,\r\n isCardValid,\r\n isCvvValid,\r\n userInteractedWithFlexField,\r\n userInteractedWithFlexFieldCvv,\r\n microformCreated: !!microformCreated,\r\n }\r\n}\r\n\r\nexport const mapResolvePaymentFormInfoActions = {\r\n setCardValid: (valid: boolean) => flexActions.setCardValid(valid),\r\n setCvvValid: (valid: boolean) => flexActions.setCvvValid(valid),\r\n setUserInteractedWithFlexField: (interacted: boolean) => flexActions.setUserInteractedWithFlexField(interacted),\r\n setUserInteractedWithFlexFieldCvv: (interacted: boolean) =>\r\n flexActions.setUserInteractedWithFlexFieldCvv(interacted),\r\n}\r\n\r\nexport type ResolvePaymentFormInfoActionsType = typeof mapResolvePaymentFormInfoActions\r\n","import { BoxWrapper, InputField, InlineErrorView } from '@common/components'\r\nimport { FieldProps, Field } from 'formik'\r\nimport React, { FunctionComponent, useEffect } from 'react'\r\nimport PencilIcon from '@common/images/icon-modify-on.svg'\r\nimport CreditIcon from '@common/images/img-icon-credit@2x.png'\r\nimport SecureIcon from '@common/images/icon-secure.svg'\r\nimport { ConnectedFlexForm } from '@common/connectedComponents'\r\nimport { connectRedux, GoToComponentProps } from '@common/utils'\r\nimport { ResolvePaymentFormInfoState } from '@gtresolve/connectedComponents/PaymentFormInfo/state'\r\nimport {\r\n mapResolvePaymentFormInfoActions,\r\n mapResolvePaymentFormInfoState,\r\n ResolvePaymentFormInfoActionsType,\r\n} from '@gtresolve/connectedComponents/PaymentFormInfo/connector'\r\nimport { CHECKOUTFORM_FIELDS } from '@gtresolve/constants'\r\nimport { FlexField } from '@common/components/FlexField/flex-field'\r\nimport paymentStyles from './payment-info.module.css'\r\n\r\nexport interface ResolvePaymentFormInfoComponentProps {\r\n resetFatalError: () => void\r\n hasExistingPaymentInformation: boolean\r\n setIsPaymentModalOpen: (value: React.SetStateAction) => void\r\n trackPaymentStep: () => void\r\n setHasCardValidationErrors: (value: React.SetStateAction) => void\r\n setCheckoutFormInlineError: (value: string) => void\r\n removeCheckoutFormInlineError: (value: string) => void\r\n inlineErrors: { [key: string]: string } | Record\r\n}\r\ntype ResolvePaymentFormInfoProps = GoToComponentProps<\r\n ResolvePaymentFormInfoState,\r\n ResolvePaymentFormInfoActionsType,\r\n ResolvePaymentFormInfoComponentProps\r\n>\r\n\r\nexport const ResolvePaymentFormInfo: FunctionComponent = ({ state, actions, props }) => {\r\n const {\r\n content,\r\n errorContent,\r\n isFatalError,\r\n existingPaymentInformation,\r\n isCardValid,\r\n isCvvValid,\r\n userInteractedWithFlexField,\r\n userInteractedWithFlexFieldCvv,\r\n microformCreated,\r\n } = state\r\n const {\r\n resetFatalError,\r\n setIsPaymentModalOpen,\r\n setCheckoutFormInlineError,\r\n removeCheckoutFormInlineError,\r\n inlineErrors,\r\n hasExistingPaymentInformation,\r\n trackPaymentStep,\r\n setHasCardValidationErrors,\r\n } = props\r\n\r\n // effects\r\n // if credit card is invalid display error message\r\n useEffect(() => {\r\n if (!isCardValid && userInteractedWithFlexField) {\r\n setHasCardValidationErrors(true)\r\n if ((inlineErrors && !inlineErrors.cardCC) || !inlineErrors) {\r\n setCheckoutFormInlineError('cardCC')\r\n }\r\n }\r\n if (isCardValid && userInteractedWithFlexField) {\r\n setHasCardValidationErrors(false)\r\n if (inlineErrors && inlineErrors.cardCC) {\r\n removeCheckoutFormInlineError('cardCC')\r\n }\r\n }\r\n\r\n if (!isCvvValid && userInteractedWithFlexFieldCvv) {\r\n setHasCardValidationErrors(true)\r\n if ((inlineErrors && !inlineErrors.cardCvv) || !inlineErrors) {\r\n setCheckoutFormInlineError('cardCvv')\r\n }\r\n }\r\n\r\n if (isCvvValid && userInteractedWithFlexFieldCvv) {\r\n setHasCardValidationErrors(false)\r\n if (inlineErrors && inlineErrors.cardCvv) {\r\n removeCheckoutFormInlineError('cardCvv')\r\n }\r\n }\r\n }, [\r\n isCardValid,\r\n setHasCardValidationErrors,\r\n userInteractedWithFlexField,\r\n isCvvValid,\r\n userInteractedWithFlexFieldCvv,\r\n setCheckoutFormInlineError,\r\n removeCheckoutFormInlineError,\r\n inlineErrors,\r\n ])\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{content.paymentDetails}

\r\n
\r\n \"secure\"\r\n {content.secure}\r\n
\r\n
\r\n {hasExistingPaymentInformation && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {!hasExistingPaymentInformation && }\r\n\r\n {/* Credit Card Number */}\r\n {!hasExistingPaymentInformation ? (\r\n
\r\n {\r\n actions.setCardValid(valid)\r\n actions.setUserInteractedWithFlexField(false)\r\n }}\r\n onBlur={() => {\r\n actions.setUserInteractedWithFlexField(true)\r\n trackPaymentStep()\r\n resetFatalError()\r\n }}\r\n shouldRefresh={isFatalError}\r\n />\r\n
\r\n ) : (\r\n // Show a disabled field if hasExistingPaymentInformation\r\n \r\n )}\r\n\r\n {/* Expiration Date */}\r\n \r\n {({ form, field, meta }: FieldProps) => {\r\n return (\r\n \r\n {\r\n await form.setFieldValue(field.name, e.target.value.trim())\r\n field.onBlur(e)\r\n form.validateField(field.name)\r\n resetFatalError()\r\n }}\r\n onChange={(e) => {\r\n field.onChange(e)\r\n }}\r\n valid={!meta.error && meta.touched}\r\n />\r\n \r\n )\r\n }}\r\n \r\n\r\n {/* CVV Code */}\r\n
\r\n {!hasExistingPaymentInformation ? (\r\n {\r\n actions.setCvvValid(valid)\r\n actions.setUserInteractedWithFlexFieldCvv(false)\r\n }}\r\n onBlur={() => {\r\n actions.setUserInteractedWithFlexFieldCvv(true)\r\n resetFatalError()\r\n }}\r\n shouldRefresh={isFatalError}\r\n />\r\n ) : (\r\n // Show a disabled field if hasExistingPaymentInformation\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport const ConnectedResolvePaymentFormInfo = connectRedux(\r\n ResolvePaymentFormInfo,\r\n mapResolvePaymentFormInfoState,\r\n mapResolvePaymentFormInfoActions\r\n)\r\n","import { TrackingState } from '@common/state/tracking/state'\r\nimport { ResolveTrackingContext } from '@gtresolve/connectedComponents/Tracking'\r\nimport { useContext, useMemo } from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nexport const useGTResolveTracking = () => {\r\n const location = useLocation()\r\n const trackingContext = useContext(ResolveTrackingContext)\r\n if (!trackingContext) {\r\n throw new Error(\r\n 'useGTResolveTrackingContext must only be used within GTResolveTrackingProvider component and its children.'\r\n )\r\n }\r\n\r\n const currentLocation = location.pathname\r\n const trackingWrapper = useMemo(\r\n () => ({\r\n track: (trackingInfo: TrackingState, component: string) => {\r\n const trackingData = {\r\n ...trackingInfo,\r\n eventData: { ...trackingInfo.eventData, currentLocation },\r\n }\r\n trackingContext.track(trackingData, component)\r\n },\r\n }),\r\n [currentLocation, trackingContext]\r\n )\r\n return trackingWrapper\r\n}\r\n","import { TRACKING_EVENTS } from '@common/constants'\r\nimport { usePageLoad } from '@common/hooks'\r\nimport { RESOLVE_TRACKING_COMPONENTS } from '@gtresolve/constants'\r\nimport { useGTResolveTracking } from './useGTResolveTracking'\r\n\r\nexport interface BillingPageTrackingParams {\r\n contentLoaded?: boolean\r\n isUserLoggedIn?: boolean\r\n}\r\nexport const useBillingPageTracking = (params: BillingPageTrackingParams) => {\r\n const { track } = useGTResolveTracking()\r\n const componentName = RESOLVE_TRACKING_COMPONENTS.BILLING_PAGE\r\n const trackCTAClick = (name: string, url: string) => {\r\n track({ event: TRACKING_EVENTS.CLICK_CTA, eventData: { name, url } }, componentName)\r\n }\r\n usePageLoad(() => {\r\n track({ event: TRACKING_EVENTS.SESSION_INFORMATION }, componentName)\r\n }, params.contentLoaded && params.isUserLoggedIn)\r\n\r\n return { trackCTAClick }\r\n}\r\n","import { TRACKING_EVENTS, GTRESOLVE_VIEW_PATHS } from '@common/constants'\r\nimport { usePageLoad } from '@common/hooks'\r\nimport { RESOLVE_TRACKING_COMPONENTS } from '@gtresolve/constants'\r\nimport { ResolveBuyFormData } from '@gtresolve/state/buy-form/state'\r\nimport { FormikProps } from 'formik'\r\nimport { useState, useEffect, useCallback } from 'react'\r\nimport { useGTResolveTracking } from './useGTResolveTracking'\r\n\r\nexport interface CheckoutFormPageTrackingParams {\r\n planName: string\r\n formikRef: React.RefObject>\r\n}\r\n\r\nexport const useCheckoutFormPageTracking = (params: CheckoutFormPageTrackingParams) => {\r\n const [hasTrackedStartForm, setHasTrackedStartForm] = useState(false)\r\n const [hasSetBeforeunload, setHasSetBeforeunload] = useState(false)\r\n const [skipBeforeunload, setSkipBeforeunload] = useState(false)\r\n const componentName = RESOLVE_TRACKING_COMPONENTS.CHECKOUT_PAGE\r\n const { track } = useGTResolveTracking()\r\n const trackFormError = (formIds: string[], formErrors: string[]) => {\r\n track({ event: TRACKING_EVENTS.ERROR_FORM, eventData: { formIds, formErrors } }, componentName)\r\n }\r\n const trackBillingInfoStep = () => {\r\n track({ event: TRACKING_EVENTS.BEGIN_CHECKOUT, eventData: { step: 3 } }, componentName)\r\n }\r\n const trackPaymentStep = () => {\r\n track({ event: TRACKING_EVENTS.BEGIN_CHECKOUT, eventData: { step: 4 } }, componentName)\r\n }\r\n const trackAbandonForm = useCallback(() => {\r\n window.removeEventListener('beforeunload', trackAbandonForm)\r\n const currentForm = params.formikRef.current\r\n if (!skipBeforeunload && currentForm?.values.CountryCode === currentForm?.initialValues.CountryCode) {\r\n track({ event: TRACKING_EVENTS.ABANDON_FORM }, componentName)\r\n }\r\n }, [track, componentName, skipBeforeunload, params.formikRef])\r\n const trackSubmitForm = () => {\r\n window.removeEventListener('beforeunload', trackAbandonForm)\r\n setSkipBeforeunload(true)\r\n track({ event: TRACKING_EVENTS.SUBMIT_FORM }, componentName)\r\n }\r\n usePageLoad(() => {\r\n track({ event: TRACKING_EVENTS.VIEW_CONTENT }, componentName)\r\n track({ event: TRACKING_EVENTS.LOAD_FORM }, componentName)\r\n track({ event: TRACKING_EVENTS.BEGIN_CHECKOUT, eventData: { step: 2 } }, componentName)\r\n }, !!params.planName)\r\n\r\n const { touched = {} } = params.formikRef.current ?? {}\r\n useEffect(() => {\r\n if (params.formikRef.current) {\r\n const fieldTouched = Object.keys(touched).length > 0\r\n if (fieldTouched && !hasTrackedStartForm) {\r\n setHasTrackedStartForm(true)\r\n track({ event: TRACKING_EVENTS.START_FORM }, componentName)\r\n }\r\n if (\r\n fieldTouched &&\r\n !hasSetBeforeunload &&\r\n window.location.pathname === GTRESOLVE_VIEW_PATHS.RESOLVE_CHECKOUT\r\n ) {\r\n setHasSetBeforeunload(true)\r\n window.addEventListener('beforeunload', trackAbandonForm)\r\n }\r\n }\r\n return undefined\r\n }, [componentName, hasTrackedStartForm, params.formikRef, touched, track, hasSetBeforeunload, trackAbandonForm])\r\n return { trackFormError, trackBillingInfoStep, trackPaymentStep, trackSubmitForm }\r\n}\r\n","import { TRACKING_EVENTS } from '@common/constants'\r\nimport { usePageLoad } from '@common/hooks'\r\nimport { RESOLVE_TRACKING_COMPONENTS } from '@gtresolve/constants'\r\nimport { useGTResolveTracking } from './useGTResolveTracking'\r\n\r\nexport interface CustomizePageTrackingParams {\r\n planName: string\r\n}\r\n\r\nexport const useCustomizePageTracking = (params: CustomizePageTrackingParams) => {\r\n const componentName = RESOLVE_TRACKING_COMPONENTS.CUSTOMIZE_PAGE\r\n const { track } = useGTResolveTracking()\r\n const trackCustomizeViewClick = () => {\r\n track({ event: TRACKING_EVENTS.VIEW_ITEM }, componentName)\r\n }\r\n usePageLoad(() => {\r\n track({ event: TRACKING_EVENTS.VIEW_CONTENT }, componentName)\r\n track({ event: TRACKING_EVENTS.BEGIN_CHECKOUT, eventData: { step: 1 } }, componentName)\r\n track({ event: TRACKING_EVENTS.START_BUY_FLOW }, componentName)\r\n }, !!params.planName)\r\n return { trackCustomizeViewClick }\r\n}\r\n","import { useEffect, useMemo } from 'react'\r\nimport { ActionWithPayload } from '@common/utils'\r\nimport { TimePeriod } from '@common/constants'\r\nimport { ResolveCheckoutActionTypes } from '@gtresolve/state/checkout/actions'\r\nimport { BillingDetailedSubscriptionPlan } from '@common/state/billing/state'\r\nimport { ResolveSelectedAddon, ResolveAddon } from '@gtresolve/state/add-on'\r\nimport { ResolvePlan } from '@gtresolve/state/plan'\r\nimport { getCartInfo } from '@gtresolve/utils'\r\nimport { useParams } from 'react-router-dom'\r\n\r\ntype ParamTypes = {\r\n plan: string\r\n}\r\n\r\nexport const useCustomizeCart = (\r\n state: {\r\n agents: number\r\n endpoints: number\r\n billingFrequency: TimePeriod\r\n planData: ResolvePlan[]\r\n selectedPlan: ResolvePlan\r\n extraAddonsSelected: ResolveAddon[]\r\n accountSubscriptions?: BillingDetailedSubscriptionPlan[]\r\n featureFlags?: string[]\r\n },\r\n actions: {\r\n setSelectedAddons: (addons: ResolveSelectedAddon[]) => ActionWithPayload<\r\n ResolveCheckoutActionTypes.SET_SELECTED_ADDONS,\r\n {\r\n addons: ResolveSelectedAddon[]\r\n }\r\n >\r\n\r\n setExtraAddons: (addons: ResolveAddon[]) => ActionWithPayload<\r\n ResolveCheckoutActionTypes.SET_EXTRA_ADDON,\r\n {\r\n addons: ResolveAddon[]\r\n }\r\n >\r\n }\r\n) => {\r\n const { plan: urlPlan } = useParams()\r\n const cart = useMemo(() => {\r\n return getCartInfo(\r\n state.agents,\r\n state.endpoints,\r\n state.billingFrequency,\r\n state.planData,\r\n state.selectedPlan,\r\n state.extraAddonsSelected,\r\n state.accountSubscriptions,\r\n state.featureFlags,\r\n urlPlan\r\n )\r\n }, [\r\n state.agents,\r\n state.endpoints,\r\n state.billingFrequency,\r\n state.planData,\r\n state.selectedPlan,\r\n state.extraAddonsSelected,\r\n state.accountSubscriptions,\r\n state.featureFlags,\r\n urlPlan,\r\n ])\r\n\r\n useEffect(\r\n () => {\r\n actions.setExtraAddons(cart.extraAddons)\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [state.selectedPlan, state.accountSubscriptions, actions.setExtraAddons]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n actions.setSelectedAddons(cart.addons)\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [\r\n state.agents,\r\n state.endpoints,\r\n state.selectedPlan,\r\n state.extraAddonsSelected,\r\n state.billingFrequency,\r\n state.accountSubscriptions,\r\n actions.setSelectedAddons,\r\n ]\r\n )\r\n\r\n return cart\r\n}\r\n","import { useState, useCallback } from 'react'\r\nimport { validateTaxNumber } from '@gtresolve/services'\r\n\r\nexport const useTaxNumberValidation = () => {\r\n const [isValid, setIsValid] = useState(true)\r\n const [isValidating, setIsValidating] = useState(false)\r\n\r\n const validate = useCallback(\r\n async (country: string, taxNumber: string, federalTaxType?: string) => {\r\n setIsValidating(true)\r\n\r\n try {\r\n await validateTaxNumber(country, taxNumber, federalTaxType)\r\n setIsValid(true)\r\n } catch (e) {\r\n setIsValid(false)\r\n } finally {\r\n setIsValidating(false)\r\n }\r\n },\r\n [setIsValid, setIsValidating]\r\n )\r\n\r\n return {\r\n validate,\r\n isValid,\r\n isValidating,\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"existing-info\":\"account-info-module__existing-info\",\"signin\":\"account-info-module__signin\",\"flex\":\"account-info-module__flex\",\"grid\":\"account-info-module__grid\",\"error-box\":\"account-info-module__error-box\"};","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"billing-module__wrapper\",\"grid\":\"billing-module__grid\",\"column\":\"billing-module__column\",\"heading\":\"billing-module__heading\",\"subnav\":\"billing-module__subnav\",\"disabled\":\"billing-module__disabled\",\"arrow\":\"billing-module__arrow\",\"subnav-btn\":\"billing-module__subnav-btn\",\"common-submit-btn\":\"billing-module__common-submit-btn\",\"resolve-custom-submit-btn\":\"billing-module__resolve-custom-submit-btn\",\"disabled-section\":\"billing-module__disabled-section\",\"form\":\"billing-module__form\"};"],"names":["DescriptionWithCard","_ref","icon","mainDescription","title","cardDescription","showCheckbox","cardTitle","onSelect","selected","id","disabled","containerClassList","classNames","styles","cardClassList","checkboxClassList","React","className","src","alt","role","Checkbox","checked","modifier","onchange","event","target","qaTag","defaultValue","featureFlagsLoaded","featureFlags","Context","FeatureFlagProvider","children","siteType","setFeatureFlagsLoaded","useState","setFeatureFlags","useEffect","async","response","commonServices","getFeatureFlags","status","data","_flagsInstanceProperty","loadFeatureFlags","value","Provider","useFeatureFlags","useContext","Redirect","url","window","location","replace","useFavicon","favicon","headLink","document","head","querySelector","setAttribute","useLanguageInPathName","storedLanguage","getSessionState","STORAGE_CONST","SAVED_LANGUAGE","urlSplitForLang","pathname","split","urlLang","Object","values","LANGUAGE_CODES","includes","didRedirect","setDidRedirect","saveSessionState","Billing","lazy","ErrorView","MarketingSiteUrl","process","GtreRoutes","search","hash","Suspense","fallback","LoadingSpinner","Routes","Route","path","VIEW_PATH","PATH_ERROR","element","PATH_CUSTOMIZE","step","PATH_CHECKOUT","GTRESOLVE_VIEW_PATH","PATH_FREE_TIER","PATH_STANDARD_TIER","Navigate","to","GTRESOLVE_VIEW_PATHS","RESOLVE_CUSTOMIZE","App","GlobalScripts","analyticsProductKey","ANALYTICS_CONTAINER_ID","G2R","lmiMaScriptUrl","LMI_MA_SCRIPT","URL","enableChatBot","SC_SITE","RESOLVE","ConnectedResolveTrackingProvider","mapResolveTrackingActions","track","trackingInfo","component","resolveTrackingActions","ResolveTrackingContext","createContext","connectRedux","actions","trackingContextValue","mapResolveTrackingState","mapResolveFormatCurrencyState","state","locationInfo","getLocationState","locale","Locale","currency","CurrencyCode","mapResolveFormatCurrencyActions","ConnectedResolveFormatCurrency","props","FormatCurrency","_extends","FormatDecimalCurrency","mapResolveCustomizeActions","setOrganizers","organizer","resolveCheckoutActions","setSelectedAddons","addons","calculatePrice","planSKU","setSelectedPlan","planSku","setExtraAddons","setEndpoints","endpoints","setAgents","agents","mapResolveOrderSummaryActions","setBillingFrequency","frequency","setIsUserOptOut","isUserOutOut","marketingActions","setDisplayOptOut","displayOutOut","closeErrorModal","modalActions","setModalOpen","ResolvePasswordValidation","touched","genericPasswordLabel","passwordStrength","passwordStrengthLevel1","passwordStrengthLevel2","passwordStrengthLevel3","passwordStrengthLevel4","passwordStrengthTipDrawer","passwordStrengthTip1","passwordStrengthTip2","passwordStrengthTip3","isSubmittingRef","_objectWithoutProperties","_excluded","label","error","valid","showPW","setShowPW","isPWFocused","setIsPWFocused","classList","InputWrapperClassList","labelClasslist","htmlFor","Input","onBlur","e","setBlurState","onFocus","setFocusState","type","onClick","EyeClosed","Eye","PasswordStrengthIndicator","isFocused","ResolveOrderSummaryAddons","addon","showSubtotal","isAnnual","content","couponProcessedDataPerSku","isCouponValidAndApplied","isPercentageCoupon","currentTier","quantity","subLabels","prorateDiscount","addonCouponData","sKU","isCouponAppliedtoAddon","isEmpty","addonCouponDiscountPercentage","discountPercentage","addonCouponDiscountAmount","discountTotalSavings","discountLineClasses","small","teal","addonPrice","getAddonPrice","key","row","total","item","map","word","ADDONS","ADDON_PRICE_REPLACE","percentageOffVolumeDiscount","Tooltip","tooltips","proratedadjustmentTooltip","additionalClass","contentClass","ResolveMemoOrderSummaryAddon","memo","ConnectedResolveOrderSummary","billingFrequency","selectedPlan","selectedAddons","currentVolumeDiscountPrice","baseTierAnnualPrice","baseTierMonthlyPrice","currentTierPrice","calculatedCredit","calculatedProratedAmount","couponDiscountType","couponDoubleDipAmountForNewUser","agentsAdded","endpointsAdded","extraAddonsSelected","addonsVolumeDiscountTotal","disablePlanSelection","productPrices","totalAgents","totalEndpoints","couponCode","language","planCouponData","isCouponAppliedtoPlan","planCouponDiscountPercentage","planCouponDiscountAmount","COUPON_DISCOUNT_TYPE","PERCENTAGEOFF","totalCouponDiscountSavings","getCouponTotalSavings","isRepriceCouponAndApplied","REPRICE","TimePeriod","Year","isAnnualOnly","setIsAnnualOnly","toggleContent","setToggleContent","calculatedBasePrice","PRODUCT_SKU","GTR_REMOTE_SUPPORT_NAMED_V2","GTR_REMOTE_ACCESS","basePriceTotal","calculatedTotalPriceForPlan","annualDiscountAmount","totalExtraAddOns","reduce","previousSum","currentTotalPrice","useMemo","calculateTotalPriceWithAddons","calculatedProrateAmount","Math","abs","totalDiscountSavings","subtotalWithCouponDiscounts","subtotal","calculatedNetTotal","calculatedTotal","isAddonFlow","isUserLoggedIn","userType","RESOLVE_USER_TYPES","ADDON","displayProrated","anniversaryDate","length","basePriceTotalAnnualOnly","billingPeriods","find","BillingPeriodKey","ANNUAL","forEach","prevState","_objectSpread","label2","name","label1","addonsContent","year","month","months","percentageOffPromoDiscount","proratedAdjustment","totalVolumeDiscount","AGENT","agentsVolumediscountTooltip","ENDPOINT","endpointsVolumediscountTooltip","MOBILE_ADDON","mobileVolumediscountTooltip","CAMERA_SHARE_ADDON","cameraShareVolumediscountTooltip","ENDPOINT_PROTECTION_ADDON","endpointProtectionVolumediscountTooltip","totalVolumeDiscountTooltip","formatDate","Date","proratedTooltip","billingCycleCredit","today","qualtricsData","sku","purchase_term","purchase_type","order_total","promo_code_applied","site_language","wrapper","header","orderSummary","ToggleButton","onChangeFn","Month","isOn","toggleStyles","random","isLarge","section","agentContent","quantityLabelPlural","quantityLabel","additional","getAddonProrateAmount","ENDPOINTS_ADDONS_INTERVAL","added","per","countAbbr","addOns","filter","a","index","devices","discount","percentageOffAnnualDiscount","concat","prev","curr","_curr$discountPrice","_curr$discountPercent","discountPrice","couponAdjustmentSavings","couponAdjustmentSavingsPopupText","upgradeSubscriptionCredit","upgradeSubscriptionCreditTooltip","totalLoading","estimatedTax","estimatedTaxPopupInfo","calculatedTax","tBD","calculating","annualPlanNote","monthlyPlanNote","upgradeSubscriptionCreditNote","subscriptionInfo","remainingDays","toString","paymentStyles","terms","ConvertStringToReact","htmlString","pricingNote","displayOptOut","optOut","optOutCheckboxLabel","isUserOptOut","isTabletOrMobileView","TrustArcLogo","trustArcSupport","ConnectedModal","isOpen","modal","isModalOpen","closeable","onClose","upgradeCreditErrorMessage","upgradeCreditErrorAssistance","CommonButton","upgradeClose","_accountSubscriptions","_coupon$couponServerD","getLabelContent","selectedPlanSku","selectedTierIndex","getCheckoutState","getContentLanguage","getModalState","planData","getPlanData","getCurrentPlan","coupon","getCouponState","couponServerData","getActiveCouponServerData","currSelectedAddons","getCurrentAddons","billingFrequencyKey","BillingPeriod","MONTHLY","get","existingAccountInformation","loggedIn","getUserState","accountSubscriptions","getAccountState","getMarketingState","getSubscriptionInfo","planStartDate","sub","productSku","startDate","now","getExtraAddons","currentAgent","getCurrentAgent","currentEndpoint","getCurrentEndpoint","isReplacementBooking","includedAgents","includedEndpoints","agentsPrice","endpointsPrice","tierIndex","getAddonVolumeDiscount","userAgentsIncludedAmount","tier","endpointsIncludedAmount","reverse","epp","pop","endpointIndex","indexOf","splice","disableExtraAddons","ConnectedResolveCustomize","initStateLoaded","setInitStateLoaded","isPlanModalOpen","setIsPlanModalOpen","showCustomAgentsExpanded","setShowCustomAgentsExpanded","showCustomDevicesExpanded","setShowCustomDevicesExpanded","monthly","annual","user","billedMonthlyPrice","billedAnnualPrice","cardLabels","newLicenseCopy","highlightsLabel","cart","useCustomizeCart","useNewResolveSkus","FEATURE_FLAGS","RESOLVE_USE_NEW_SKUS","useCustomAgentsDevices","RESOLVE_USE_CUSTOM_AGENTS_DEVICES","useRemoteSupportAgents","RESOLVE_USE_REMOTESUPPORT_AGENTS","TRIALER","recalculatePrice","useCallback","initialData","isAddressComplete","statesOptional","useCustomizePageTracking","planName","submitBtnStyles","billingStyles","agentOptions","range","MAX_AGENTS_ADDONS","endpointOptions","MAX_ENDPOINTS_ADDONS","deviceOptions","DEVICE_ADDONS_INTERVAL","MAX_DEVICE_ADDONS","icons","MobileAddon","CameraAddon","EndpointProtectionAddon","plan","urlPlan","useParams","loggedInNoUpgrade","canUpgradePlan","v2NoDowngrade","toLowerCase","showCustomDevices","GTR_STANDARD_NAMED_V2","G2RE_STANDARD_NAME","showDevices","BoxWrapper","Logo","shortName","shortDescription","isMobileView","userAgentsIncludedText","endpointsIncludedText","userAgentsTootip","Pencil","additionalDescription","ErrorMessage","warning","errorMessage","quantityErrorMessage","CustomDropdown","onChange","innerText","Number","description","labelClass","options","optionsContainerClass","optionsClass","endpointsTooltip","extraAddons","selectAddons","selectAddonsDescription","CardSelector","wrap","monthlyPrice","annualPrice","price","isYearlyBillingFrequency","priceLabel","addonSelected","selectedAddon","isDisabled","canUpgradeMobileAddon","canUpgradeCameraAddon","canUpgradeEndpointProtectionAddon","decimals","findIndex","changePlanMethodModalHeader","changePlanModalSubheader","modalCloseButtonText","nextSteps","fatalErrorBlocker","continue","validTo","couponDisclaimer","changePlan","quantityLabelLong","contentContinue","quantityPopupInfo","additionalUserLicences","howManyMore","existingUserLicencePlural","existingUserLicense","edit","changeNumberModalHeader","changeNumberModalContent","changePlanUrl","taxTooltip","organizers","getBuyFormState","selectedPlanDetails","isUserUpgrading","getUpgradingStatus","currSelectedPlan","urlCouponCode","getFatalError","baseTierMonthlyAnnualContractPrice","mapResolveCheckoutFormActions","setUserInteractedWithFlexFieldCvv","interacted","flexActions","setUserInteractedWithFlexField","submitForm","resolveBuyFormActions","existingUserSubmitForm","validateAddress","locationActions","setFatalError","isFatalError","message","fatalErrorActions","setCheckoutFormInlineError","commonCheckoutActions","removeCheckoutFormInlineError","userLogin","resolveUserActions","setEmailClear","clear","setClearEmail","setChallengeCompleteJwt","jwt","RESOLVE_TRACKING_COMPONENTS","CHECKOUT_PAGE","setCardinalSetupComplete","submitAbandonCart","email","form","submitAbandonedCart","success","isTrial","program","ConnectedCheckoutForm","userInteractedWithFlexField","inlineErrors","clearEmail","formikRef","setHasAddressValidationErrors","setGeneralFieldErrors","setHasCardValidationErrors","hasCardValidationErrors","generalFieldErrors","hasAddressValidationErrors","isSubmitting","setIsSubmitting","useSameForBilling","setUseSameForBilling","sessionStorage","getItem","isFormReset","setIsFormReset","isPaymentModalOpen","setIsPaymentModalOpen","showCurrencyModal","setCurrencyModal","showCardinalModal","setCardinalModal","isTaxRequired","setTaxRequired","isCardinalScriptLoaded","setIsCardinalScriptLoaded","onInitialValue","setOnInitialValue","hasExistingPaymentInformation","existingPaymentInformation","EXPIRED","isCrossProductFlow","CROSSPRODUCT","isTrialUser","IDENTITY_ONLY","isExpiredTrialUser","cardinalScriptUrl","PLATFORM","PROD","qualtricsQZID","useQualtrics","resetFieldTouched","current","keys","fieldKey","setFieldTouched","canValidateAddress","isValidationAddressEligible","resetFatalError","trackFormError","trackBillingInfoStep","trackPaymentStep","trackSubmitForm","useCheckoutFormPageTracking","formValues","userEmail","Email","err","console","onFormErrors","formIds","formErrors","scrollToTop","Cardinal","configure","logging","level","on","ErrorDescription","ErrorNumber","Payment","ExtendedData","ChallengeCancel","TRACKING_EVENTS","CARDINAL_SECURITY_MODAL","eventData","securityModalAction","CARDINAL_SUCCESS","fatalErrorType","FATAL_ERROR_TYPE","CARDINAL_CHALLENGE","CARDINAL_FAIL","CARDINAL_LOADED","setup","tokenString","isScaEnabledForMid","loadCardinalScript","script","createElement","addEventListener","CARDINAL_SETUP","body","appendChild","QSI","API","unload","setSubmitting","setFieldValue","CHECKOUTFORM_FIELDS","EXPIRATION_DATE","CARDINAL_PAYMENT","entries","_ref2","formField","formValue","RESOLVE_PARTIAL_NON_VALIDATION_USER_TYPES","CHECKOUTFORM_VALIDATION_EXCLUDE_FIELD_TYPES","validateField","BILLING_FIRST_NAME","FirstName","BILLING_LAST_NAME","LastName","accountInfoProps","billingInfoProps","checkCurrencyConflict","country","originCountry","paymentInfoProps","checkoutSubmissionProps","preSubmit","RESOLVE_TRIAL_ERROR_IDS","CARD_ERROR","ADDRESS_ERROR","validateForm","then","errors","StateCode","TaxNumber","errorList","isCardValid","isCvvValid","Password","trialUserValidErrors","errorField","PASSWORD","trialUserValidErrorValues","fieldErrorTuple","trialUserValidErrorKeys","Form","formData","firstName","lastName","fieldName","currentValue","EMAIL","FIRST_NAME","LAST_NAME","initialValue","hasFieldErrors","Boolean","trackAbandon","ConnectedResolveAccountFormInfo","ConnectedResolveBillingFormInfo","ConnectedResolvePaymentFormInfo","ConnectedResolveCheckoutFormSubmission","checkoutStyles","errorCardinalChallenge","errorCardinalSetup","reload","changeCountryHeader","changeCountryContent","currentForm","setCountryInCookie","CountryCode","removeItem","STREET1","CITY","STATE_CODE","ZIP_CODE","CONTACT_PHONE","modalReload","purpose","initialValues","modalCancel","existingUsersModalHeader","existingUsersModalContent","RESOLVE_CHECKOUT","signIn","existingUsersNewEmailButtonText","changePaymentMethodModalHeader","changePaymentMethodModalSubheader","wrapperModifier","showMe","getCommonCheckoutState","keyInfo","isCardinalSetupComplete","getFlexState","scaToken","mapResolveCheckoutFormContainerActions","updateInitialFormState","ConnectedResolveCheckoutFormContainer","useRef","countryCode","getCountryFromCookie","COUNTRIES","US","setItem","COUNTRY_CODE","fieldValues","setValues","setCheckoutFormValues","Formik","validationSchema","CheckoutSchema","errorContent","validateOnChange","validateOnBlur","onSubmit","_values","formikBag","innerRef","formikProps","errorInvalidCharacter","errorInvalidCVV","errorInvalidEmail","errorInvalidExpirationDate","errorInvalidPassword","errorInvalidPhoneNumber","errorInvalidTaxNumber","errorRequiredAddress","errorRequiredCity","errorRequiredFirstName","errorRequiredLastName","errorRequiredPostalCode","errorRequiredState","errorInvalidCreditCardNumber","emailAddressAlreadyInUse","errorRequiredCVV","errorRequiredCountry","errorRequiredCreditCardNumber","errorRequiredEmail","errorRequiredExpDate","errorRequiredPassword","errorRequiredPhoneNumber","errorInvalidPostalCode","errorGenericMessage","errorInvalidAddress","errorRequiredTaxNumber","mapResolveAccountFormInfoActions","checkExistingUser","view","steps","createUserAccountStep","CHECKOUTFORM_STEPS","CREATE_USER_ACCOUNT","userAccountCreated","completed","useClearField","createAnAccount","accountStyles","signin","userLogIn","grid","Field","field","meta","InlineErrorView","fieldData","setErrorCall","removeErrorCall","InputField","autoFocus","wrapperClass","oldState","trim","existingUserCheck","manuallyValidateFieldData","_ref3","maxLength","_ref4","_ref5","password","passwordValidationStyles","passwordRequirements","mapResolveBillingFormInfoActions","getCountries","setTaxType","setStatesOptional","optional","existingBillingInformation","taxType","setCountryCode","showTaxField","setShowTaxField","showIndividualTax","setShowIndividualTax","showBrazilTaxField","setShowBrazilTaxField","showOptionalTaxField","setShowOptionalTaxField","shouldLoadAddressAutoFill","setShouldLoadAddressAutoFill","taxNumbValidation","useTaxNumberValidation","isValidating","isValid","setFieldError","TAX_ID","allowAddressAutofill","streetFieldRef","selectedCountry","countries","abbreviation","setAddressErrors","setAddressValues","address","addressLine1","city","postalCode","getFormValuesWithUpdatedAddress","correctedAddress","currentFormValues","Street1","City","ZipCode","existingBillingInfoLocation","handleTaxOptionChanged","isCountriesLoaded","preSelectedCountry","eligibleCountry","defaultCountry","states","hasTaxId","TaxType","useAddressAutoFill","onChangePlace","place","addr","getAddressFromGooglePlace","shouldLoad","validAddress","addressErrors","undefined","updatedFormValues","isTaxGST","clearBillingFields","setBillingValues","accountFieldName","billingFieldName","getFieldProps","firstNameValue","billingInformation","useAccountInfo","billingInfoChecked","accountFirstName","checkSession","ignoreInlineError","autoComplete","accountLastName","Select","selectCountry","selectStyles","inputRef","_ref6","_ref7","pleaseSelect","countryState","code","_ref8","_ref9","phone","_ref10","RadioInputField","taxIndividual","taxBusiness","taxNumber","validate","ismasked","mask","maskChar","gSTOption","vATOption","TAX_COUNTRIES","taxCodeGST","taxCodeVAT","checkValid","checkAlphaNumerical","InfoIcon","gSTDisclaimer","vATDisclaimer","COMPANY_NAME","_ref11","companyName","phoneNumber","federalTaxType","_ref12","addressState","DefaultCountry","contentDefaultCountry","getContentData","checkoutFormStyles","FormSubmitButton","text","completePurchase","mapResolvePaymentFormInfoActions","setCardValid","setCvvValid","_existingPaymentInfor","userInteractedWithFlexFieldCvv","microformCreated","cardCC","cardCvv","heading","paymentDetails","SecureIcon","secure","PencilIcon","selector","CreditIcon","ConnectedFlexForm","shouldRefresh","last4Digits","inputMode","cardNumber","cc","FlexField","flexFieldType","labelCopy","hasError","errorCopyNotEmpty","errorCopyEmpty","hint","expirationDate","cvv","cVVHint","cVV","useGTResolveTracking","useLocation","trackingContext","Error","currentLocation","trackingData","useBillingPageTracking","params","componentName","BILLING_PAGE","usePageLoad","SESSION_INFORMATION","contentLoaded","trackCTAClick","CLICK_CTA","_params$formikRef$cur","hasTrackedStartForm","setHasTrackedStartForm","hasSetBeforeunload","setHasSetBeforeunload","skipBeforeunload","setSkipBeforeunload","trackAbandonForm","removeEventListener","ABANDON_FORM","VIEW_CONTENT","LOAD_FORM","BEGIN_CHECKOUT","fieldTouched","START_FORM","ERROR_FORM","SUBMIT_FORM","CUSTOMIZE_PAGE","START_BUY_FLOW","trackCustomizeViewClick","VIEW_ITEM","getCartInfo","setIsValid","setIsValidating","validateTaxNumber"],"sourceRoot":""}