{"version":3,"file":"static/chunks/9890.fef62962d9cb4b88.js","mappings":"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","sources":["webpack://_N_E/./adapters/cloudinary/ImageFactory.js","webpack://_N_E/./adapters/model/service/warrantyExtension/warrantyExtension.helpers.js","webpack://_N_E/./components/Janrain/Janrain/janrainForms/RegisterProductForm/inputs.js","webpack://_N_E/./components/Janrain/Janrain/janrainForms/useJanrainGlobalState.js","webpack://_N_E/./components/Janrain/components/FormGoalsCheckboxes/FormGoalsCheckboxes.js","webpack://_N_E/./components/Janrain/components/FormInput/FormInput.js","webpack://_N_E/./components/Janrain/components/FormSelect/FormSelect.js","webpack://_N_E/./components/Janrain/components/Button/Button.styles.js","webpack://_N_E/./components/Janrain/components/Button/Button.js","webpack://_N_E/./components/Janrain/components/SubmitButton/SubmitButton.js","webpack://_N_E/./components/Janrain/components/CheckboxInput/CheckboxInput.js","webpack://_N_E/./components/Janrain/components/RadioInput/RadioInput.styles.js","webpack://_N_E/./components/Janrain/components/RadioInput/RadioInput.js","webpack://_N_E/./components/Janrain/components/RegisterProduct/RegisterProduct.js","webpack://_N_E/./components/Janrain/components/ProductManagement/ProductManagement.js","webpack://_N_E/./components/Janrain/Janrain/janrainForms/ProfileForm/inputs.js","webpack://_N_E/./components/Janrain/components/EditProfile/EditProfile.js","webpack://_N_E/./components/Janrain/components/UpdateBenefitPreferences/UpdateBenefitPreferences.js","webpack://_N_E/./components/Janrain/components/FormBirthdate/FormBirthdate.js","webpack://_N_E/./components/Janrain/helpers/product.helpers.js","webpack://_N_E/./components/Janrain/helpers/setting.helpers.js","webpack://_N_E/./components/MarkdownText/MarkdownText.js","webpack://_N_E/"],"sourcesContent":["export function buildContentfullImageUrl(assetUrl, transformations) {\n return transformations ? 'https:'+ assetUrl + \"?\" + transformations : 'https:'+ assetUrl; \n}\n\nexport function buildContentfullImageUrlByHeight(assetUrl, height = 'auto', transformations = 'c_limit', format = 'auto') {\n return 'https:'+ assetUrl + \"?h=\"+ height ;\n}\n\nexport function buildContentfullImageUrlByWidth(assetUrl, width = 'auto', transformations = 'c_limit', format = 'auto') {\n return 'https:'+ assetUrl + \"?w=\"+ width ; \n}\n\nexport function imageContentfullSrc(assetUrl, transformations) {\n return buildContentfullImageUrl(assetUrl, transformations);\n}\n\nexport function imageContentfullDpr(assetUrl, transformations = '') {\n if (!transformations) {\n return buildContentfullImageUrl(assetUrl);\n }\n\n return buildContentfullImageUrl(assetUrl, transformations)\n}\n\n\nexport default {\n buildContentfullImageUrl,\n buildContentfullImageUrlByHeight,\n buildContentfullImageUrlByWidth,\n imageContentfullDpr,\n imageContentfullSrc,\n};\n","import {WarrantyExtensionConstants} from '../../../helpers/Constants';\nimport {customJsonstringify,formatDateToStringValue} from '../../../helpers/Utils';\nimport ImageFactory from '../../../cloudinary/ImageFactory';\nimport { optimizeImage } from '../../../helpers/pagespeedHelper';\n\n// FORM HEADERS\nexport function generateHeader() {\n let header = new Headers();\n header.append(WarrantyExtensionConstants.contentType, WarrantyExtensionConstants.json);\n header.append(WarrantyExtensionConstants.accessToken, process.env.WARRANTY_API_ACCESS_TOKEN);\n\n return header;\n}\n\nexport function isOldConsumer(consumerId) {\n consumerId = (consumerId || '').toString();\n return consumerId.startsWith('JR') || consumerId.startsWith('PC');\n}\n\nexport function generateEmailNotificationHeader() {\n let header = new Headers();\n header.append(WarrantyExtensionConstants.contentType, WarrantyExtensionConstants.json);\n header.append(WarrantyExtensionConstants.accessToken, process.env.WARRANTY_API_EMAIL_NOTIFICATION_ACCESS_TOKEN);\n\n return header;\n}\n\nexport const warrantyExtensionUrl = process.env.WARRANTY_API_BASE_URL \n + process.env.WARRANTY_API_VERSION + WarrantyExtensionConstants.warrantyExtensionPath\n + '?' + WarrantyExtensionConstants.programIdParam + process.env.WARRANTY_API_PROGRAM_ID\n + '&' + WarrantyExtensionConstants.localeParam + process.env.WARRANTY_API_LOCALE;\n\nexport const warrantyGetConsumerIdUrl = process.env.WARRANTY_API_BASE_URL \n + process.env.WARRANTY_API_VERSION + WarrantyExtensionConstants.getConsumerPath\n + '?' + WarrantyExtensionConstants.programIdParam + process.env.WARRANTY_API_PROGRAM_ID\n + '&' + WarrantyExtensionConstants.localeParam + process.env.WARRANTY_API_LOCALE;\n\nexport const warrantyExtensionGetProductsByTypeCode = process.env.WARRANTY_API_BASE_URL \n+ process.env.WARRANTY_API_VERSION + WarrantyExtensionConstants.getProductsByTypeCodePath\n+ '?' + WarrantyExtensionConstants.programIdParam + process.env.WARRANTY_API_PROGRAM_ID\n+ '&' + WarrantyExtensionConstants.localeParam + process.env.WARRANTY_API_LOCALE;\n\nexport const warrantyExtensionGetCampaignInfoMaster = process.env.WARRANTY_API_BASE_URL \n+ process.env.WARRANTY_API_VERSION + WarrantyExtensionConstants.getCampaignInfoMaster\n+ '?' + WarrantyExtensionConstants.programIdParam + process.env.WARRANTY_API_PROGRAM_ID\n+ '&' + WarrantyExtensionConstants.localeParam + process.env.WARRANTY_API_LOCALE;\n\nexport const warrantyExtensionGetProductList = process.env.WARRANTY_API_BASE_URL \n+ process.env.WARRANTY_API_VERSION + WarrantyExtensionConstants.getproductListBySeries\n+ '?' + WarrantyExtensionConstants.programIdParam + process.env.WARRANTY_API_PROGRAM_ID\n+ '&' + WarrantyExtensionConstants.localeParam + process.env.WARRANTY_API_LOCALE;\n\nexport const getProductByTypeCode = async (typeCode) => {\n const url = warrantyExtensionGetProductsByTypeCode\n const requestBody = {\n 'sType': Number(typeCode)\n }\n const warrantyHeader = generateHeader();\n const requestOptions = {\n method: 'POST',\n headers: warrantyHeader,\n body: customJsonstringify(requestBody)\n };\n try {\n const response = await fetch(url, requestOptions).then(response => response)\n return response\n } catch (error) {\n console.error('get product by typecode error=>', error)\n return {message: 'Server Error'};\n }\n}\n\nexport const getProductBySeries = async (lstInternSubGroup, lstSeries) => {\n let response = null;\n try {\n const requestBody = {\n lstInternSubGroup: [...lstInternSubGroup],\n lstSeries: [...lstSeries]\n };\n const warrantyHeader = generateHeader();\n const requestOptions = {\n method: 'POST',\n headers: warrantyHeader,\n body: customJsonstringify(requestBody)\n };\n const data = await fetch(warrantyExtensionGetProductList, requestOptions).then(response => response.json())\n if (data.error) {\n console.error('Product Fetch error', data.error)\n } else {\n response = data;\n }\n } catch (error) {\n console.error('series fetch error', error)\n }\n return response;\n};\n\nexport const postWarrantyRegistration = (product, janrainProfile, newJanrainProduct, postWarrantyOnSuccess = function(){}, postWarrantyOnFailure = function(){}) => {\n\n const getConsumerIDSuccess = (product, janrainProfile, newJanrainProduct, consumerID = null, onSuccess = function(){}, onFailure = function(){}) => {\n let registration = {\n program: {\n programId: parseInt(process.env.WARRANTY_API_PROGRAM_ID),\n locale: process.env.WARRANTY_API_LOCALE,\n sourceSystemId: parseInt(process.env.WARRANTY_API_SOURCE_SYSTEM_ID)\n },\n consumer: {\n },\n address: [],\n productOrder: {\n product: [\n {\n productId: WarrantyExtensionConstants.productId,\n productCode: product.primary.typeCode,\n productPurchased: product.primary.longDescription,\n productQuantity: 1,\n productName: product.primary.productName,\n dateOfPurchase: formatDateToStringValue(product.primary.purchaseDate, 'DD/MM/YYYY', 'YYYY-MM-DD'),\n productImageUrl: product.primary.mainAsset\n }\n ]\n }\n }\n\n if(product.secondary){\n registration.productOrder.product.push({\n productId: WarrantyExtensionConstants.productId,\n productCode: product.secondary.typeCode,\n productPurchased: product.secondary.longDescription,\n productQuantity: 1,\n productName: product.secondary.productName,\n dateOfPurchase: formatDateToStringValue(product.secondary.purchaseDate, 'DD/MM/YYYY', 'YYYY-MM-DD'),\n productImageUrl: product.secondary.mainAsset\n })\n }\n if (janrainProfile?.traitProductType?.length == 0) {\n registration.productOrder.product[0].isPrimary = true;\n }\n\n\n // After user create profile. There is a delay to get the consumerID.\n // For that reason we need to give the uuid to identify the user we are registering the product to.\n if (janrainProfile?.uuid) {\n registration.consumer.UUID = janrainProfile?.uuid;\n }\n\n\n // GCS consumerID will be available after first product registration. It works that way on their side.\n // They want us to add it to the call on subsequent product registration.\n if (consumerID) {\n registration.consumer.consumerId = consumerID;\n }\n\n if (janrainProfile?.consumerID || janrainProfile?.uuid) {\n registration.consumer.oneCPId = isOldConsumer(janrainProfile?.consumerID) ? janrainProfile?.consumerID : janrainProfile?.uuid;\n }\n\n if(janrainProfile?.countryId) {\n registration.address.push({\n addressTypeCode: WarrantyExtensionConstants.addressTypeCode,\n countryId: janrainProfile?.countryId\n })\n }\n\n const warrantyHeader = generateHeader();\n const requestOptions = {\n method: 'POST',\n headers: warrantyHeader,\n body: customJsonstringify(registration)\n };\n fetch(warrantyExtensionUrl, requestOptions)\n .then(response => response.json())\n .then(data => {\n if(data.error) {\n console.error(data.error);\n onFailure();\n } else {\n onSuccess(newJanrainProduct, data);\n }\n })\n .catch((error) => {\n console.error(error);\n onFailure();\n });\n }\n\n getConsumerId(product, janrainProfile, newJanrainProduct, postWarrantyOnSuccess, postWarrantyOnFailure, getConsumerIDSuccess);\n\n}\n\nexport const getCountryId = async (countryValue) => {\n let countryId = -1;\n try {\n const warrantyHeader = generateHeader();\n const requestOptions = {\n method: 'GET',\n headers: warrantyHeader,\n };\n const data = await fetch(warrantyExtensionGetCampaignInfoMaster, requestOptions).then(response => response.json())\n if(data.error) {\n console.error('country ID find error', data.error)\n } else if(Array.isArray(data.programCountriesForAddress) && data.programCountriesForAddress.length > 0) {\n countryId = data.programCountriesForAddress.filter(country => country.countryCode === countryValue)[0].countryId\n } else {\n console.error('country ID not found', data)\n }\n } catch(error) {\n console.error('country ID find error', error)\n }\n return countryId;\n}\n\nexport const postWarrantyRegistrationUpdate = (product, janrainProfile, makePrimary = false, isDelete = false, onSuccess = function(){}, onFailure = function(){}, postObject, onPostReplaceSuccess = function(){}) => {\n let registration = {\n productId: product.gCSProductId,\n orderId: product.id,\n UUID: janrainProfile?.uuid,\n oneCPId: isOldConsumer(janrainProfile?.consumerID) ? janrainProfile?.consumerID : janrainProfile?.uuid,\n isPrimary: makePrimary,\n isDelete: isDelete,\n orderProductId: product?.orderProductId\n }\n\n const warrantyHeader = generateHeader();\n const requestOptions = {\n method: 'PUT',\n headers: warrantyHeader,\n body: customJsonstringify(registration)\n };\n fetch(warrantyExtensionUrl, requestOptions)\n .then(response => response.json())\n .then(data => {\n if(data.code) {\n if(data.code == 'SUCCESS') {\n onSuccess(postObject, onPostReplaceSuccess);\n } else {\n onFailure(postObject);\n }\n } else {\n console.error(data.error);\n }\n })\n .catch((error) => {\n console.error(error);\n\n });\n}\n\n// Email notification send on congratulation page when clicking resend CTA.\n// Used on FR, DE, NL, UK markets\nexport const postEmailNotification = (janrainProfile, product, callback = null) => {\n // create image url\n const finalTransformations = '';\n const image = { fields: { assetId: product?.mainAsset?.fields?.asset?.fields?.file?.url }};\n const imageUrl = optimizeImage(ImageFactory.imageContentfullSrc(image, finalTransformations));\n\n let emailRequestBody = { email : janrainProfile?.email,\n parameters: [\n {\n name: 'fname',\n value: janrainProfile?.givenName\n }, {\n name: 'lineproduct',\n value: product?.title\n }, {\n name: 'itemurl1',\n value: imageUrl\n }, {\n name: 'productname',\n value: product?.title\n }, {\n name: 'typecode',\n value: product?.typeCode || ''\n }, {\n name: 'dateofpurchase',\n value: product?.traitDate\n }, {\n name: 'dateofregistration',\n value: product?.registrationDate\n }, {\n name: 'warrantyexpirationdate',\n value: product?.warrantyExpirationDate\n }, {\n name: 'email',\n value: janrainProfile?.email\n }\n ],\n campaignId:parseInt(process.env.WARRANTY_API_PROGRAM_ID),\n templateType:process.env.WARRANTY_API_EMAIL_TEMPLATE_TYPE,\n locale:process.env.WARRANTY_API_LOCALE,\n system:process.env.WARRANTY_API_EMAIL_SYSTEM\n }\n\n const warrantyHeader = generateEmailNotificationHeader();\n const requestOptions = {\n method: 'POST',\n headers: warrantyHeader,\n body: customJsonstringify(emailRequestBody)\n };\n fetch(process.env.WARRANTY_API_EMAIL_NOTIFICATION_URL, requestOptions)\n .then(response => response.json())\n .then(data => {\n if (data == null) {\n console.log('No data fetched')\n }\n })\n .catch((error) => {\n console.error('failed to notification send email', error);})\n .finally(() => {\n if (callback) {\n callback();\n }\n });\n}\n\nexport const getConsumerProduct = (onSuccess = function(){}, onFailure = function(){},\n profileData, productCategoryList, warrantyExtensionTime) => {\n const warrantyHeader = generateHeader();\n warrantyHeader.append(WarrantyExtensionConstants.UUID, profileData?.uuid);\n warrantyHeader.append(WarrantyExtensionConstants.oneCPId, profileData?.consumerID);\n\n const requestOptions = {\n method: 'GET',\n headers: warrantyHeader,\n };\n fetch(warrantyExtensionUrl, requestOptions)\n .then(response => response.json())\n .then(data => {\n if(data.error) {\n if (data.error.code == 'PRODUCT_NOT_FOUND' && data.error.statusCode == 400) {\n // user has no product, give empty array to success method.\n onSuccess([], profileData, productCategoryList, warrantyExtensionTime);\n }\n } else if(Array.isArray(data)) {\n onSuccess(data, profileData, productCategoryList, warrantyExtensionTime);\n } else {\n onFailure();\n }\n })\n .catch((error) => {\n onFailure();\n console.error(error);\n })\n}\n\nexport const getConsumerId = (product, janrainProfile, newJanrainProduct, postWarrantyOnSuccess = function(){}, postWarrantyOnFailure = function(){}, getConsumerIDSuccess = function(){}, getConsumerIDFailure = function(){}) => {\n const warrantyHeader = generateHeader();\n warrantyHeader.append(WarrantyExtensionConstants.UUID, janrainProfile?.uuid);\n\n const requestOptions = {\n method: 'GET',\n headers: warrantyHeader,\n };\n fetch(warrantyGetConsumerIdUrl, requestOptions)\n .then(response => response.json())\n .then(data => {\n if (data.error) {\n if (data.error.code == 'CONSUMER_NOT_FOUND' && data.error.statusCode == 400) {\n // user has no consumerID yet, give empty consumerID to success method.\n getConsumerIDSuccess(product, janrainProfile, newJanrainProduct, null, postWarrantyOnSuccess, postWarrantyOnFailure);\n }\n } else if (Array.isArray(data)) {\n let consumerID = data[0].ConsumerId;\n getConsumerIDSuccess(product, janrainProfile, newJanrainProduct, consumerID, postWarrantyOnSuccess, postWarrantyOnFailure);\n } else {\n getConsumerIDFailure();\n console.error(data);\n }\n })\n .catch((error) => {\n getConsumerIDFailure();\n console.error(error);\n })\n}\n\n// Second warranty notification email post. Used on SE, FI, IT markets.\n// Is called on product registration and when resend email CTA is triggered\nexport const postGWEProductWarrantyEmailNotification = (janrainProfile, orderId, callback = null) => {\n let emailRequestBody = {\n programId:parseInt(process.env.WARRANTY_API_PROGRAM_ID),\n locale:process.env.WARRANTY_API_LOCALE,\n janrain : {\n UUID: janrainProfile?.uuid\n },\n user : {\n emailAddress: janrainProfile?.email,\n firstName: janrainProfile?.givenName\n },\n orderId : orderId\n }\n\n const warrantyHeader = generateHeader();\n const requestOptions = {\n method: 'POST',\n headers: warrantyHeader,\n body: customJsonstringify(emailRequestBody)\n };\n fetch(process.env.WARRANTY_API_EMAIL_NOTIFICATION_GWE_URL, requestOptions)\n .then(response => response.json())\n .then(data => {\n if (data == null) {\n console.log('No data fetched');\n }\n })\n .catch((error) => {\n console.error('failed to notification send email', error);})\n .finally(() => {\n if (callback) {\n callback();\n }\n });\n}\n","export const inputs = {\n formName: 'registerProductForm',\n editFormName: 'editProfileForm',\n type: {\n text: 'text',\n date: 'date'\n },\n field: {\n selectProductType: 'selectProductType',\n reminderToReplace: 'reminderToReplace',\n dateOfPurchase: 'dateOfPurchase',\n traitProductType: {\n traitValue: 'traitProductType_traitValue',\n imageUrl: 'traitProductType_imageUrl',\n registrationDate: 'traitProductType_registrationDate',\n purchaseDate: 'traitProductType_purchaseDate'\n },\n registerProductsID: 'RegisterProductsID',\n primaryProduct: {\n traitValue: 'primaryProduct'\n }\n }\n}\n","import { useState, useEffect } from 'react';\n\nlet listeners = [];\nlet state = { formErrorResponse: undefined, isInvalidForm: false, givenName: undefined};\n\nconst setState = (newState) => {\n state = { ...state, ...newState };\n listeners.forEach((listener) => {\n listener(state);\n });\n};\n\nconst useJanrainGlobalState = () => {\n const newListener = useState()[1];\n useEffect(() => {\n listeners.push(newListener);\n \n return function cleanup() {\n if (listeners.indexOf(newListener) >= 0) {\n listeners.splice(listeners.indexOf(newListener), 1);\n }\n };\n }, []);\n return [state, setState];\n};\n\nexport default useJanrainGlobalState;\n","import React, {useEffect, useState} from 'react';\nimport {CheckboxInput} from '../index';\nimport {inputs} from '../../Janrain/janrainForms/RegisterProductForm/inputs';\nimport PropTypes from 'prop-types';\n\nconst FormGoalsCheckboxes =({oralCareGoals, janrainLabels, setGoalsData, setReminderData, currentGoals, className}) => {\n const [selectedGoals, setSelectedGoals] = useState([]);\n\n const handleGoalSelection = event => {\n const checkbox = event.currentTarget;\n const goal = checkbox.getAttribute('value');\n const isChecked = checkbox.checked;\n let goals = [...selectedGoals];\n if (isChecked && !selectedGoals.includes(goal)) {\n goals.push(goal)\n } else {\n goals = goals.filter(elem => (elem !== goal))\n }\n setGoalsData(goals);\n setSelectedGoals(goals);\n };\n \n useEffect(() => {\n if (currentGoals?.length > 0) {\n setSelectedGoals([...currentGoals]);\n }\n },[currentGoals]);\n\n const handleReminder = checked => {\n setReminderData(checked);\n };\n\n return (\n
\n \n {janrainLabels.reminderToReplaceLabel &&\n {handleReminder(e.target.checked)}} />\n }\n
\n )\n};\n\nFormGoalsCheckboxes.propTypes = {\n oralCareGoals: PropTypes.array,\n janrainLabels: PropTypes.object,\n setGoalsData: PropTypes.func,\n setReminderData: PropTypes.func,\n currentGoals: PropTypes.object,\n className: PropTypes.string\n}\n\nFormGoalsCheckboxes.defaultProps = {\n className: ''\n}\n\nexport default FormGoalsCheckboxes;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport DOMPurify from 'isomorphic-dompurify';\n\nconst FormInput = ({\n inputType,\n name,\n label,\n value,\n toolTipText,\n checked,\n validationErrorText,\n placeholder,\n halfWidth,\n quarterWidth,\n required,\n ariaDescribedBy,\n onChange,\n onBlur,\n disabled=false\n}) => {\n const [dynamicInputType, setDynamicInputType] = useState(inputType);\n const [isPasswordShown, setIsPasswordShown] = useState(false);\n\n const togglePasswordShowHide = () => {\n dynamicInputType === 'password' ? setDynamicInputType('text') : setDynamicInputType('password');\n setIsPasswordShown(!isPasswordShown);\n };\n\n const isDateInputSupported = () => {\n const input = document.createElement('input');\n const notADateValue = 'not-a-date';\n\n if(input) {\n input.setAttribute('type', 'date');\n input.setAttribute('value', notADateValue);\n }\n\n return ((input) && (input.value !== notADateValue));\n };\n\n useEffect(() => {\n if (inputType === 'date' && !isDateInputSupported()) {\n setDynamicInputType('text');\n }\n }, []);\n\n return (\n
\n \n
\n {inputType === 'date' && isDateInputSupported() ? (\n\n \n ) : (\n \n )}\n { inputType === 'password' &&\n \n }\n
\n {toolTipText &&\n
\n

{toolTipText}

\n
\n }\n {validationErrorText &&\n

\n {validationErrorText}\n

\n }\n
\n )\n};\n\nFormInput.propTypes = {\n value: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n required: PropTypes.bool,\n placeholder: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n inputType: PropTypes.oneOf(['text', 'email', 'password', 'tel', 'hidden', 'date']).isRequired,\n onChange: PropTypes.func,\n checked: PropTypes.bool,\n validationErrorText: PropTypes.string,\n toolTipText: PropTypes.string,\n halfWidth: PropTypes.bool,\n quarterWidth: PropTypes.bool,\n onBlur: PropTypes.func,\n disabled:PropTypes.bool\n};\n\nFormInput.defaultProps = {\n required: true,\n ariaDescribedBy: ''\n};\n\nexport default FormInput\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst FormSelect = ({ dataArray, value, selectLabel, name, onChange, isHalfWidth, ariaLabel, hasInitialValue }) => {\n const options = dataArray.map(el => \n {el.value}\n )\n\n /* eslint-disable jsx-a11y/no-onchange */\n return
\n {selectLabel &&\n \n }\n
\n \n
\n
\n}\n\nFormSelect.defaultProps = {\n isHalfWidth: false,\n hasInitialValue: false\n};\n\nFormSelect.propTypes = {\n dataArray: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n })).isRequired,\n isHalfWidth: PropTypes.bool,\n selectLabel: PropTypes.string,\n value: PropTypes.any,\n onChange: PropTypes.func,\n name: PropTypes.string,\n ariaLabel: PropTypes.string,\n hasInitialValue: PropTypes.bool\n}\n\nexport default FormSelect\n","import styled, { keyframes } from 'styled-components'\n\nexport const buttonColors = {\n light: {\n border: '#000000',\n text: '#000000',\n background: 'transparent'\n },\n dark: {\n border: '#000000',\n text: '#FFFFFF',\n background: '#000000'\n }\n}\n\nexport const oppositeColor = (variant) => variant === 'light' ? 'dark' : 'light'\n\nexport const ButtonWrapper = styled.a`\n display: block;\n background: ${({ variant }) => buttonColors[variant].background};\n padding: 10px 20px;\n outline: none;\n border: 2px solid ${({ variant }) => buttonColors[variant].border};\n cursor: pointer;\n font-size: 0.9rem;\n text-align: center;\n text-decoration: none;\n \n &:hover{\n background-color: ${({ variant, disabled }) => buttonColors[disabled ? variant : oppositeColor(variant)].background};\n border-color: ${({ variant, disabled }) => buttonColors[disabled ? variant :oppositeColor(variant)].border};\n }\n \n ${({ disabled }) => disabled && 'cursor: not-allowed;'}\n`\nexport const linkStyle = ` \n font-weight: bold;\n text-decoration: none;\n text-transform: uppercase;\n vertical-align: middle;\n`\n\nexport const ButtonLink = styled.span`\n color: ${({ variant }) => buttonColors[variant].text};\n \n ${ButtonWrapper}:hover & {\n color: ${({ variant, disabled }) => buttonColors[disabled ? variant : oppositeColor(variant)].text};\n }\n \n ${linkStyle}\n`\n\nconst loaderColors = {\n main: '#e2e2e2',\n second: '#545454',\n}\n\nconst spin = keyframes`\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n`\n\nexport const Loader = styled.span`\n border: 4px solid ${loaderColors.main};\n border-radius: 50%;\n border-top: 4px solid ${loaderColors.second};\n width: 9px;\n height: 9px;\n animation: ${spin} 2s linear infinite;\n display: inline-block;\n margin-left: 3%;\n vertical-align: middle;\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n ButtonLink,\n ButtonWrapper,\n Loader,\n} from './Button.styles'\n\nconst Button = ({\n disabled,\n onClick,\n url,\n variant,\n buttonText,\n isProcessing,\n buttonProcessingText,\n}) => \n \n {!isProcessing ? buttonText : buttonProcessingText}\n \n {isProcessing && }\n\n\nconst urlOrOnClickRequired = (props, propName, componentName) => {\n if (!props.onClick && !props.url) {\n return new Error(`One of props 'url' or 'onClick' was not specified in '${componentName}'.`)\n }\n if(props.onClick && typeof props.onClick !== 'function') {\n return new Error(`Invalid prop type of ${propName} supplied to '${componentName}'.`)\n }\n if(props.url && typeof props.url !== 'string') {\n return new Error(`Invalid prop type of ${propName} supplied to '${componentName}'.`)\n }\n}\n\nButton.propTypes = {\n buttonText: PropTypes.string.isRequired,\n url: urlOrOnClickRequired,\n onClick: urlOrOnClickRequired,\n variant: PropTypes.oneOf(['light', 'dark']),\n disabled: PropTypes.bool,\n isProcessing: PropTypes.bool,\n buttonProcessingText: PropTypes.string,\n}\n\nButton.defaultProps = {\n variant: 'light',\n disabled: false\n}\n\nexport default Button\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst SubmitButton = (props) => (\n \n);\n\nSubmitButton.propTypes = {\n buttonText: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n isSubmitting: PropTypes.bool,\n ariaFormIsSubmitting: PropTypes.string,\n onClick: PropTypes.func\n};\n\nSubmitButton.defaultProps = {\n isSubmitting: false,\n disabled: false\n};\n\nexport default SubmitButton\n","import React, {useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport DOMPurify from 'isomorphic-dompurify';\n\nconst CheckboxInput = ({\n label,\n name,\n value,\n checked,\n isBold,\n isSquared,\n onChange,\n isWhite,\n isSmall,\n error,\n errorMessage,\n isRequired,\n className\n}) => {\n const [isChecked, setChecked] = useState(checked);\n const onChangeEvent = (e) => {\n setChecked(!isChecked);\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n setChecked(checked);\n }, [checked]);\n\n return (\n
\n onChangeEvent(e)}\n type='checkbox'\n />\n \n \n \n \n\n {(error && errorMessage) &&\n

{errorMessage}

\n }\n
\n )\n};\n\nCheckboxInput.defaultProps = {\n checked: false,\n isBold: false,\n isSquared: false,\n isWhite: false,\n error: false,\n className: ''\n};\n\nCheckboxInput.propTypes = {\n label: PropTypes.string,\n name: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool\n ]),\n isBold: PropTypes.bool,\n isSquared: PropTypes.bool,\n isWhite: PropTypes.bool,\n isSmall: PropTypes.bool,\n isRequired: PropTypes.bool,\n error: PropTypes.bool,\n errorMessage: PropTypes.string,\n onChange: PropTypes.func,\n className: PropTypes.string,\n};\n\nexport default CheckboxInput\n","import styled from 'styled-components'\n\nconst colors = {\n darkGray: '#333333',\n}\n\nexport const RadioWrapper = styled.div`\n position: relative;\n display: flex;\n flex-direction:row;\n margin-bottom: 2%;\n \n @media(min-width: 768px){\n margin-bottom: 2%;\n }\n`\n\nexport const InputLabel = styled.label`\n text-transform: uppercase;\n font-size: 0.9rem;\n margin: 0.3% 0;\n`\n\nexport const Input = styled.input`\n background: none;\n color: ${colors.darkGray};\n font-size: 0.9rem;\n padding: 2%;\n border: 0;\n cursor: pointer;\n \n @media(min-width: 768px){\n margin-left: 0;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { RadioWrapper, InputLabel, Input } from './RadioInput.styles'\n\nconst RadioInput = ({\n name,\n label,\n value,\n checked,\n onChange\n}) => (\n \n \n {label}\n \n)\n\nRadioInput.defaultProps = {\n checked: false,\n}\n\nRadioInput.propTypes = {\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default RadioInput\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {FormInput, FormSelect, SubmitButton} from '../index';\nimport {inputs} from '../../Janrain/janrainForms/RegisterProductForm/inputs';\nimport {formatDate} from '../../../../adapters/helpers/Utils';\nimport {getProductVariantName} from '../../helpers/product.helpers';\nimport dynamic from 'next/dynamic';\nconst Image = dynamic(()=>import('../../../Image/Image'))\nconst Icon = dynamic(()=>import('../../../Icon/Icon'))\nconst DotNav = dynamic(()=>import('../../../DotNav/DotNav'))\nimport {Markdown} from '../../../MarkdownText/MarkdownText';\nimport throttle from 'lodash/throttle';\nimport DOMPurify from 'isomorphic-dompurify'\n\nconst RegisterProduct = ({janrainLabels, dateOfPurchaseDisclaimer, dateOfPurchaseValidation, productCategoryList, productTypes, receiptPicture, setProductData, isCreatingProfile, setFormValidated, validPurchaseTimeWindow, warrantyExtensionTime, isGCSDown, formValidated, isSubmitting}) => {\n\n const [currentPage, setCurrentPage] = useState(0);\n const [numCarouselPages, setNumCarouselPages] = useState(0);\n const [currentProductList, setCurrentProductList] = useState([]);\n const [currentProductCategory, setCurrentProductCategory] = useState('');\n const [activeProductID, setActiveProductID] = useState(null);\n const [dateErrorText, setDateErrorText] = useState('');\n const [noWarrantyError, setNoWarrantyError] = useState('');\n const [productSelected, setProductSelected] = useState(false);\n const productCarouselRef = useRef(null);\n const dotNavRef = useRef(null);\n const locale = process.env.JANRAIN_CAPTURE_LOCALE;\n const commonControlBtnIconProps = {\n name: 'thinChevronDown',\n size: 2.4\n };\n\n const updateNumCarouselPages = () => {\n if (window && productCarouselRef?.current) {\n const carousel = productCarouselRef.current;\n const children = carousel.children;\n let fullCarouselWidth = 0;\n\n for(let i = 0; i < children.length; i++) {\n const element = children[i];\n\n let elementWidth = element.offsetWidth;\n const style = getComputedStyle(element);\n elementWidth += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n fullCarouselWidth += elementWidth;\n }\n\n if (children?.length % 3 === 1) {\n setNumCarouselPages(Math.ceil(fullCarouselWidth / carousel.offsetWidth));\n } else {\n setNumCarouselPages(Math.round(fullCarouselWidth / carousel.offsetWidth));\n }\n }\n };\n\n useEffect(() => {\n const handleResize = throttle(updateNumCarouselPages, 100);\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n }\n });\n\n useEffect(() => {\n updateNumCarouselPages();\n }, [currentProductList]);\n\n const onScroll = useCallback(\n event => {\n if (!productCarouselRef.current) {\n return;\n }\n\n const currentRatio = event.target.scrollLeft / productCarouselRef.current.clientWidth;\n const min = Math.floor(currentRatio);\n\n let currentPosition = currentRatio < (min + 0.3) ? min : min + 1;\n currentPosition = Math.max(0, currentPosition);\n currentPosition = Math.min(currentProductList.length, currentPosition);\n\n setCurrentPage(currentPosition);\n },\n [productCarouselRef.current],\n );\n\n const handleDotClick = useCallback(i => {\n if(productCarouselRef.current) {\n const nextY = productCarouselRef.current.clientWidth * i;\n if(productCarouselRef.current.scrollTo) {\n productCarouselRef.current.scrollTo({ left: nextY, behavior: 'smooth'});\n } else {\n productCarouselRef.current.scrollLeft = nextY;\n }\n }\n }, []);\n\n const handleClick = event => {\n if (dotNavRef?.current && productCarouselRef?.current) {\n let activePageIndex = parseInt(dotNavRef.current.querySelector('.ob-dot-nav__item--active .ob-dot-nav__button').dataset.index, 10);\n const clickedButton = event.currentTarget.dataset.controlButton;\n if (clickedButton === 'next' && activePageIndex + 1 < numCarouselPages) {\n activePageIndex = activePageIndex + 1;\n } else if (clickedButton === 'prev' && activePageIndex - 1 >= 0) {\n activePageIndex = activePageIndex - 1;\n }\n const nextY = productCarouselRef.current.clientWidth * activePageIndex;\n if (productCarouselRef.current.scrollTo) {\n productCarouselRef.current.scrollTo({ left: nextY, behavior: 'smooth'});\n } else {\n productCarouselRef.current.scrollLeft = nextY;\n }\n }\n };\n\n const handleProductSelectClick = (productId, hasWarranty) => {\n if(hasWarranty) {\n setActiveProductID(productId);\n setProductSelected(true);\n }\n };\n\n const handleFormSelect = event => {\n event.stopPropagation();\n const value = event.currentTarget.value;\n let productVariantList = [];\n productCategoryList.forEach(category => {\n if (category.fields.name !== value) {\n return;\n }\n if (category?.fields?.productOverviewList) {\n category?.fields?.productOverviewList.forEach(productOverview => {\n productOverview.fields.productVariants.forEach(productVariant => {\n if(productVariant?.fields?.displayJanrainProduct === true) {\n let janrainProductId = productVariant?.fields?.sku;\n if(productVariant?.fields?.janrainProductId) {\n janrainProductId = productVariant?.fields?.janrainProductId;\n }\n productVariant.fields['productId'] = janrainProductId;\n productVariant.fields['displayName'] = productVariant?.fields?.name;\n if(productVariant?.fields?.shortTitle) {\n productVariant.fields['displayName'] = productVariant?.fields?.shortTitle;\n }\n productVariantList.push(productVariant);\n }\n });\n });\n setCurrentProductList(productVariantList);\n } else {\n setNoWarrantyError(janrainLabels.warrantyErrorLabel);\n setCurrentProductList([]);\n }\n });\n setCurrentProductCategory(value);\n };\n\n const validateDate = (inputValue) => {\n const regex = new RegExp(dateOfPurchaseValidation.fields.pattern);\n\n let inputDate = {};\n const currentDate = new Date();\n const validPurchaseWindow = new Date();\n validPurchaseWindow.setFullYear(validPurchaseWindow.getFullYear() - validPurchaseTimeWindow);\n\n switch (inputValue.indexOf('/')) {\n case 2: {\n let year = inputValue.substr(inputValue.length - 4);\n let month = inputValue.substring(3, 5);\n let day = inputValue.substring(0, 2);\n inputDate = new Date(`${year}-${month}-${day}T00:00:00`);\n break;\n }\n case 4: {\n inputDate = new Date(inputValue);\n break;\n }\n default: {\n inputDate = currentDate;\n }\n }\n\n let isValid = regex.test(inputValue) && inputDate < currentDate && inputDate.getFullYear() >= validPurchaseWindow.getFullYear();\n\n if (isValid) {\n setDateErrorText('');\n const cmsProductInfo = currentProductList.find(elem => elem?.fields?.productId === activeProductID);\n const productName = getProductVariantName(cmsProductInfo);\n const mainAsset = cmsProductInfo?.fields?.mainAsset;\n const today = new Date();\n // Get the date for the end of the month, one year later\n let warrantyExpirationDate = new Date(inputDate.getFullYear() + warrantyExtensionTime, inputDate.getMonth() + 1, inputDate.getDate()); // 0 gets the last day of the month\n\n let product = {\n traitDate: formatDate(inputValue, '/', 'dd-mm-yyyy'),\n purchaseDate: formatDate(inputValue, '/', 'dd-mm-yyyy'),\n productId: activeProductID,\n gCSProductId: cmsProductInfo?.fields?.gCSProductId,\n typeCode: cmsProductInfo?.fields?.typeCode,\n productName,\n mainAsset,\n warrantyExpirationDate: formatDate(warrantyExpirationDate, '/', 'dd-mm-yyyy'),\n warrantyExpirationDateInText: warrantyExpirationDate.toLocaleString(locale, { month: 'long', year: 'numeric'}),\n category: currentProductCategory,\n registrationDate: formatDate(today, '/', 'dd-mm-yyyy'),\n timeStamp: today.toUTCString()\n };\n\n setProductData(product);\n setFormValidated(true);\n } else {\n setDateErrorText(dateOfPurchaseValidation.fields.errorMessage);\n setFormValidated(false);\n }\n\n };\n\n const handleDateOfPurchase = event => {\n let value = event.currentTarget.value;\n if (event.currentTarget.type !== 'date') {\n // This autopopulates slashes in case input[type=\"date\"] isn't supported\n // eslint-disable-next-line no-useless-escape\n event.currentTarget.value = value.replace(/^(\\d\\d)(\\d)$/g,'$1/$2').replace(/^(\\d\\d\\/\\d\\d)(\\d+)$/g,'$1/$2').replace(/[^\\d\\/]/g,'');\n } else {\n value = value.replace(/-/g, '/')\n }\n if (activeProductID === null || activeProductID === '') {\n setDateErrorText(janrainLabels.noProductSelectedLabel);\n } else {\n validateDate(value);\n }\n };\n\n /* eslint-disable jsx-a11y/click-events-have-key-events */\n /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\n return (\n
\n \n\n {currentProductList?.length > 0 ? (\n <>\n
\n

{janrainLabels.selectProductLabel}

\n
    \n {currentProductList.map((productVariant, index) => (\n handleProductSelectClick(productVariant?.fields?.productId, productVariant?.fields?.hasWarranty)} >\n { productVariant.fields.mainAsset &&\n
    \n \n

    \n

    \n
    \n }\n { !productVariant.fields.hasWarranty &&\n

    \n {janrainLabels.noProductWarrantyLabel}\n

    \n }\n { productVariant.fields.hasWarranty &&\n
    \n \n
    \n }\n\n \n ))}\n
\n {numCarouselPages > 1 &&\n
\n \n \n
\n \n
\n
\n }\n
\n {productSelected &&\n
\n
\n \n
\n \n
\n {!isCreatingProfile && !isGCSDown &&\n \n }\n {!isCreatingProfile && isGCSDown &&\n

{janrainLabels.gcsDownErrorMessage}

\n }\n
\n \n
\n }\n \n ) : (\n noWarrantyError !== '' &&

{noWarrantyError}

\n )}\n
\n )\n};\n\nexport default RegisterProduct;\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport dynamic from 'next/dynamic';\nconst MarkdownText = dynamic(()=>import('../../../MarkdownText/MarkdownText'))\nconst Eyebrow = dynamic(()=>import('../../../Eyebrow/Eyebrow'))\nconst Image = dynamic(()=>import('../../../Image/Image'))\nconst Button = dynamic(()=>import('../../../Button/Button'))\nimport throttle from 'lodash/throttle';\nconst Icon = dynamic(()=>import('../../../Icon/Icon'))\nconst DotNav = dynamic(()=>import('../../../DotNav/DotNav'))\nimport Modal from 'react-modal';\nimport {customJsonstringify,isObjectEmpty, toggleScroll, customSuperJsonParse} from '../../../../adapters/helpers/Utils';\nimport { WarrantyExtensionConstants } from '../../../../adapters/helpers/Constants';\nimport {\n removeProductFromDisplayedList, removeProductFromJanrainList \n} from './../../helpers/product.helpers';\nconst Label = dynamic(()=>import('../../../Label/Label'))\nimport {\n deleteIsCreatingAccountFromLocalStorage, getJanrainCaptureProfileDataFromLocalStorage,\n} from '../../helpers/localstorage.helpers';\nimport {\n postReplaceEntityUpdate\n} from '../../../../adapters/model/service/api/svc';\nimport {getPostReplaceEntityObject} from '../../../../adapters/model/service/api/svc';\nimport {postWarrantyRegistrationUpdate} from '../../../../adapters/model/service/warrantyExtension/warrantyExtension.helpers';\nimport { optimizeImage } from '../../../../adapters/helpers/pagespeedHelper';\nimport DOMPurify from 'isomorphic-dompurify'\nconst ResponsiveImage = dynamic(()=>import('../../../ResponsiveImage/ResponsiveImage'))\n\nconst ProductManagement = ({oralbProductList, profileProductManagementTab, commonLabels, customStyles, closeModalTimeoutMS, setOralbProductList, isGCSAPIDown}) => {\n const [currentPage, setCurrentPage] = useState(0);\n const [numCarouselPages, setNumCarouselPages] = useState(0);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [lastScroll, setLastScroll] = useState(0);\n const [requestedProduct, setRequestedProduct] = useState({});\n const [currentProduct, setCurrentProduct] = useState({});\n const [isDeleting, setIsDeleting] = useState(false);\n const [isProgress, setIsProgress] = useState(false);\n const productCarouselRef = useRef(null);\n const dotNavRef = useRef(null);\n const viewWarrantyLink = profileProductManagementTab?.viewWarrantyLink?.fields;\n const registeredProductLimit = profileProductManagementTab?.registeredProductLimit;\n const dummyImage = profileProductManagementTab?.dummyImage;\n\n const janrainLabels = {\n title: profileProductManagementTab?.title,\n profileIntroText: profileProductManagementTab?.profileIntroText,\n productManagementText: profileProductManagementTab?.productManagementText,\n primaryButtonLabel: profileProductManagementTab?.primaryButtonLabel?.fields?.text,\n makePrimaryButtonLabel: profileProductManagementTab?.makePrimaryButtonLabel?.fields?.text,\n deleteLabel: profileProductManagementTab?.delete?.fields?.text,\n registeredOn: profileProductManagementTab?.registeredOn?.fields?.text,\n registerProductLinkGwe: profileProductManagementTab?.registerProductLinkGwe,\n tryTheAppTitle: profileProductManagementTab?.tryTheAppTitle,\n tryTheAppText: profileProductManagementTab?.tryTheAppText,\n downloadOnAppStore: profileProductManagementTab?.downloadOnAppStore,\n downloadOnPlayStore: profileProductManagementTab?.downloadOnPlayStore,\n productManagementModalTitle: profileProductManagementTab?.productManagementModalTitle?.fields?.text,\n deleteProductModalTitle: profileProductManagementTab?.deleteProductModalTitle?.fields?.text,\n productManagementModalSubtitle: profileProductManagementTab?.productManagementModalSubtitle?.fields?.text,\n productManagementModalConfirm: profileProductManagementTab?.productManagementModalConfirm?.fields?.text,\n registeredProductLimitLabel: profileProductManagementTab?.registeredProductLimitLabel?.fields?.text,\n gcsDownErrorMessage: profileProductManagementTab?.gcsDownErrorMessage?.fields?.text,\n previousLabel: profileProductManagementTab?.previousLabel?.fields?.text,\n nextLabel: profileProductManagementTab?.nextLabel?.fields?.text,\n ...commonLabels\n };\n\n const commonControlBtnIconProps = {\n name: 'thinChevronDown',\n size: 2.4\n };\n\n const updateNumCarouselPages = () => {\n if (window && productCarouselRef?.current) {\n const carousel = productCarouselRef.current;\n const children = carousel.children;\n let fullCarouselWidth = 0;\n\n for (let i = 0; i < children.length; i++) {\n const element = children[i];\n\n let elementWidth = element.offsetWidth;\n const style = getComputedStyle(element);\n elementWidth += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n fullCarouselWidth += elementWidth;\n }\n // This fixes an issue where the result of \"fullCarouselWidth / carousel.offsetWidth\" was a low decimal point\n // and created less carousel pages than expected\n if (oralbProductList?.length % 3 === 1) {\n setNumCarouselPages(Math.ceil(fullCarouselWidth / carousel.offsetWidth));\n } else {\n setNumCarouselPages(Math.round(fullCarouselWidth / carousel.offsetWidth));\n }\n }\n };\n\n useEffect(() => {\n const handleResize = throttle(updateNumCarouselPages, 100);\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n }\n });\n\n useEffect(() => {\n updateNumCarouselPages();\n }, []);\n\n useEffect(() => {\n if (!isObjectEmpty(oralbProductList)) {\n const product = oralbProductList.find(e => e.isPrimary);\n setCurrentProduct(product);\n }\n if (document.querySelector('.js-modal-container')) {\n Modal.setAppElement('.js-modal-container');\n }\n }, []);\n\n useEffect(() => {\n window.addEventListener('scroll', handleScroll);\n return () => {\n window.removeEventListener('scroll', handleScroll);\n }\n },\n [lastScroll]\n );\n\n useEffect(() => {\n toggleScroll(isModalOpen, lastScroll);\n }, [isModalOpen]);\n\n useEffect(() => {\n closeModal();\n updateNumCarouselPages();\n }, [oralbProductList]);\n\n const onScroll = useCallback(\n event => {\n if(!productCarouselRef.current) {\n return;\n }\n\n const currentRatio = event.target.scrollLeft / productCarouselRef.current.clientWidth;\n const min = Math.floor(currentRatio);\n\n let currentPosition = currentRatio < (min + 0.3) ? min : min + 1;\n currentPosition = Math.max(0, currentPosition);\n currentPosition = Math.min(oralbProductList.length, currentPosition);\n\n setCurrentPage(currentPosition);\n },\n [productCarouselRef.current],\n );\n\n const handleDotClick = useCallback(i => {\n if(productCarouselRef.current) {\n const nextY = productCarouselRef.current.clientWidth * i;\n if(productCarouselRef.current.scrollTo) {\n productCarouselRef.current.scrollTo({ left: nextY, behavior: 'smooth'});\n } else {\n productCarouselRef.current.scrollLeft = nextY;\n }\n }\n }, []);\n\n const handleClick = event => {\n if (dotNavRef?.current && productCarouselRef?.current) {\n let activePageIndex = parseInt(dotNavRef.current.querySelector('.ob-dot-nav__item--active .ob-dot-nav__button').dataset.index, 10);\n const clickedButton = event.currentTarget.dataset.controlButton;\n if (clickedButton === 'next' && activePageIndex + 1 < numCarouselPages) {\n activePageIndex = activePageIndex + 1;\n } else if (clickedButton === 'prev' && activePageIndex - 1 >= 0) {\n activePageIndex = activePageIndex - 1;\n }\n const nextY = productCarouselRef.current.clientWidth * activePageIndex;\n if (productCarouselRef.current.scrollTo) {\n productCarouselRef.current.scrollTo({ left: nextY, behavior: 'smooth'});\n } else {\n productCarouselRef.current.scrollLeft = nextY;\n }\n }\n };\n\n const handleScroll = useCallback(\n () => {\n if (!document.body.classList.contains('noScroll')) {\n setLastScroll(window.pageYOffset);\n }\n }\n );\n\n const closeModal = () => {\n setIsModalOpen(false);\n\n // Needed so the state only updates once the modal is closed and not during\n setTimeout(() => {\n setRequestedProduct({});\n setIsDeleting(false);\n }, closeModalTimeoutMS)\n };\n\n const openModal = event => {\n event.preventDefault();\n const product = customSuperJsonParse(event.currentTarget.dataset.custom);\n setRequestedProduct(product);\n setIsModalOpen(true);\n };\n\n const deleteItem = () => {\n setIsProgress(true);\n const janrainProfileData = customSuperJsonParse(getJanrainCaptureProfileDataFromLocalStorage());\n const newLocalStorageProductList = removeProductFromJanrainList(janrainProfileData.traitProductType, requestedProduct.id, requestedProduct.orderProductId);\n const newDisplayedProductList = removeProductFromDisplayedList(oralbProductList, requestedProduct.id, requestedProduct.orderProductId);\n // remove id from localStorage product. /entity.replace doesn't accept them. A new id will be generated.\n newLocalStorageProductList.forEach(product => {\n delete product.id;\n });\n\n let postObject = getPostReplaceEntityObject(janrainProfileData);\n postObject['traitProductType'] = newLocalStorageProductList;\n\n //remove primary product attributes\n if(requestedProduct?.isPrimary) {\n if(Array.isArray(newDisplayedProductList) && newDisplayedProductList.length > 0) {\n const oldestProductIndex = WarrantyExtensionConstants.janrinProfileOldestProductIndex;\n const oldestProduct = newDisplayedProductList[oldestProductIndex];\n const primaryProductSku = oldestProduct.productId;\n postObject['primaryProduct'] = primaryProductSku + '_' + oldestProduct.purchaseDate;\n const traitPrimaryBrushValue = {\n traitValue: null,\n productTypeCode : oldestProduct.typeCode\n }\n postObject['traitPrimaryBrush'] = traitPrimaryBrushValue;\n postWarrantyRegistrationUpdate(oldestProduct, janrainProfileData, true, false);\n newDisplayedProductList[oldestProductIndex].isPrimary = true;\n } else {\n postObject['primaryProduct'] = '';\n postObject['traitPrimaryBrush'] = {};\n }\n }\n\n const postReplaceSuccess = () => {\n setIsProgress(false);\n };\n // GCS post, callback janrain entity update on success\n postWarrantyRegistrationUpdate(requestedProduct, janrainProfileData, false, true, postReplaceEntityUpdate, function(){}, postObject, postReplaceSuccess);\n setOralbProductList(newDisplayedProductList);\n };\n\n const makePrimary = () => {\n setIsProgress(true);\n const janrainProfileData = customSuperJsonParse(getJanrainCaptureProfileDataFromLocalStorage());\n let postObject = getPostReplaceEntityObject(janrainProfileData);\n\n const primaryProductSku = requestedProduct.productId;\n\n postObject['primaryProduct'] = primaryProductSku + '_' + requestedProduct.purchaseDate;\n const traitPrimaryBrushValue = {\n traitValue: null,\n productTypeCode : requestedProduct.typeCode\n }\n postObject['traitPrimaryBrush'] = traitPrimaryBrushValue;\n\n const postReplaceSuccess = () => {\n setIsProgress(false);\n };\n postWarrantyRegistrationUpdate(requestedProduct, janrainProfileData, true, false, postReplaceEntityUpdate, function(){}, postObject, postReplaceSuccess);\n const newProductList = [];\n let primarySet = false;\n for (let i = 0; i < oralbProductList.length; i++) {\n const product = oralbProductList[i];\n if (!primarySet && product.productId === requestedProduct.productId &&\n product.orderProductId === requestedProduct.orderProductId &&\n product.id === requestedProduct.id) {\n product.isPrimary = true;\n primarySet = true;\n } else {\n product.isPrimary = false;\n }\n newProductList.push(product);\n }\n setOralbProductList(newProductList);\n };\n\n return (\n
\n \n {janrainLabels.title}\n \n {isProgress &&
}\n {!isObjectEmpty(oralbProductList) &&\n
\n
    \n {oralbProductList.map((product, index) => (\n
  • \n
    \n
    \n {product?.imageUrl ?\n {product?.name :\n }\n
    \n

    \n
    \n
    \n \n {janrainLabels.registeredOn + ' ' + product?.traitDate}\n \n
    \n {product.isPrimary ?\n \n {janrainLabels.primaryButtonLabel}\n \n :\n \n {janrainLabels.makePrimaryButtonLabel}\n \n }\n {\n setIsDeleting(true);\n openModal(e);\n }}\n disabled={isProgress}\n className={'ob-product-management__product-button'}>\n {janrainLabels.deleteLabel}\n \n
    \n
    \n
  • \n ))}\n
\n\n {numCarouselPages > 1 &&\n
\n \n \n
\n \n
\n
\n }\n
\n }\n {!isGCSAPIDown &&\n
\n {!isObjectEmpty(oralbProductList) && oralbProductList.length >= registeredProductLimit ? (\n <>\n \n {janrainLabels.registerProductLinkGwe?.fields?.title}\n \n {janrainLabels.registeredProductLimitLabel}\n \n ) : (\n \n {janrainLabels.registerProductLinkGwe?.fields?.title}\n \n )}\n
\n }\n\n {isGCSAPIDown &&\n

{janrainLabels.gcsDownErrorMessage}

\n }\n\n
\n {janrainLabels.tryTheAppTitle}\n \n \n
\n\n \n
\n
\n

\n {isDeleting ? (\n

\n { !isDeleting && currentProduct?.cmsProductInfo?.title &&\n

\n \n

\n }\n
\n
\n \n {janrainLabels.productManagementModalConfirm}\n \n \n {janrainLabels.modalCancelButton}\n \n
\n
\n \n
\n )\n};\n\nexport default ProductManagement;\n","export const inputs = {\n formName: 'editProfileForm',\n type: {\n text: 'text',\n email: 'email',\n radio: 'radio',\n date: 'date',\n hidden: 'hidden',\n phone: 'tel'\n },\n field: {\n firstName: 'firstName',\n lastName: 'lastName',\n emailAddress: 'emailAddress',\n phone: 'phone',\n addressPostalCode: 'addressPostalCode',\n dateOfBirth: 'dateOfBirth',\n addressCountry: 'addressCountry',\n birthdate: {\n dateselect_month: 'birthdate[dateselect_month]',\n dateselect_year: 'birthdate[dateselect_year]',\n dateselect_day: 'birthdate[dateselect_day]'\n },\n traitProductType: {\n traitValue: 'traitProductType_traitValue',\n imageUrl: 'traitProductType_imageUrl',\n registrationDate: 'traitProductType_registrationDate'\n },\n traitBenefitPreferences: 'traitBenefitPreferences',\n traitBrushHeadReminderOptInFlag: 'traitBrushHeadReminderOptInFlag'\n }\n}\n","import React, {useEffect, useState} from 'react';\nimport dynamic from 'next/dynamic';\nconst FormInput = dynamic(()=>import('../FormInput/FormInput'))\nimport {inputs} from '../../Janrain/janrainForms/ProfileForm/inputs';\nimport {FormBirthdate, FormSelect, SubmitButton} from '../index';\nconst Button = dynamic(()=>import('../../../Button/Button'))\nimport Modal from 'react-modal';\nimport {setMonths, setYears} from '../../../../adapters/helpers/Utils';\nimport useJanrainGlobalState from '../../Janrain/janrainForms/useJanrainGlobalState';\nimport PropTypes from 'prop-types';\nimport {CountryCode, Constants} from '../../../../adapters/helpers/Constants';\nimport { CheckboxInput } from '../../components';\nimport { customSuperJsonParse } from '../../../../adapters/helpers/Utils';\nimport { getJanrainCaptureProfileDataFromLocalStorage } from '../../helpers/localstorage.helpers';\nimport { getPostReplaceEntityObject, postReplaceBenefitPreferences } from '../../../../adapters/model/service/api/svc';\n\nconst EditProfile = ({profileStore, errors, form, userData, profileEditTab, commonLabels, janrainErrors, formValidated, customStyles, closeModalTimeoutMS}) => {\n\n const [isFormProcessing, setFormProcessing] = useState(false);\n const [arrMonths, setArrMonths] = useState([]);\n const [arrYear, setArrYear] = useState([]);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isSubmitDisabled, setIsSubmitDisabled] = useState(false);\n const [areChangesSaved, setAreChangesSaved] = useState(false);\n const [arrCountries, setArrCountries] = useState([]);\n const [globalState, setGlobalState] = useJanrainGlobalState();\n \n const optStatus = userData?.optIns && userData?.optIns[Constants.optinIdx]?.optStatus;\n const [emailOptStatus, setEmailOptStatus] = useState(optStatus);\n\n const postalCodeValidationRegex = profileEditTab?.postalCodeValidationRegex?.fields?.pattern;\n const postalCodeSecondPattern = profileEditTab?.postalCodeValidationRegex?.fields?.secondPattern;\n const minimumAge = profileEditTab?.minimumAge || 18;\n\n const janrainLabels = {\n title: profileEditTab?.title,\n modalCancelButton: profileEditTab?.modalCancelButton?.fields?.text,\n allFieldsRequiredLabel: profileEditTab?.allFieldsRequiredLabel?.fields?.text,\n firstName: profileEditTab?.firstName?.fields?.text,\n lastName: profileEditTab?.lastName?.fields?.text,\n email: profileEditTab?.email?.fields?.text,\n dateOfBirth: profileEditTab?.dateOfBirth?.fields?.text,\n whyWeAskForDateOfBirth: profileEditTab?.whyWeAskForDateOfBirth,\n whyWeAskForDateOfBirthLegal: profileEditTab?.whyWeAskForDateOfBirthLegal,\n registerDateOfBirthPlaceholder: profileEditTab?.registerDateOfBirthPlaceholder?.fields?.text,\n dateValidationRegex: profileEditTab?.dateValidationRegex,\n monthSelectLabel: profileEditTab?.monthSelectLabel?.fields?.text,\n yearSelectLabel: profileEditTab?.yearSelectLabel?.fields?.text,\n postCode: profileEditTab?.postCode?.fields?.text,\n country: profileEditTab?.country?.fields?.text,\n changePasswordLink: profileEditTab?.changePasswordLink,\n emailDisclaimer: profileEditTab?.profileEmailAccountDisclaimer,\n ...commonLabels\n };\n\n const regExpPattern = (patternFormat) => {\n const pattern = new RegExp(patternFormat);\n return pattern;\n }\n\n const validPostalCode = function(input) {\n const pattern = regExpPattern(postalCodeValidationRegex);\n if(pattern.test(input)) {\n return true; \n } else {\n const secPattern = regExpPattern(postalCodeSecondPattern);\n return secPattern.test(input);\n }\n };\n\n // Is duplicated in register form, we try not to, but we need variable from the block context/scope\n const validAge = function(input) {\n let birthMonth = profileStore.form['birthdate[dateselect_month]'] - 1 || 0;\n const currentDate = new Date();\n const birthDate = new Date(input, birthMonth);\n // 31536000000 is the number of milisec in a year\n const age = (currentDate - birthDate) / 31536000000;\n return minimumAge <= age;\n };\n\n useEffect(() => {\n if (formValidated) {\n setIsSubmitDisabled(false);\n } else {\n setIsSubmitDisabled(true);\n }\n });\n\n useEffect (() => {\n profileStore.clear();\n profileStore.errorTexts = janrainErrors;\n profileStore.rehydrateForProfileForm(userData);\n setArrMonths(setMonths(janrainLabels.monthSelectLabel));\n setArrYear(setYears(janrainLabels.yearSelectLabel));\n if (document.querySelector('.js-modal-container')) {\n Modal.setAppElement('.js-modal-container');\n }\n\n profileStore.validation.addressPostalCode.push({\n error: 'postalCodeIsRequired',\n fn: validPostalCode\n });\n\n // dynamic minimumAge validation validation\n profileStore.validation['birthdate[dateselect_year]'].push({\n error: 'yearMustBeOldEnough',\n fn: validAge\n });\n\n const countries = profileEditTab?.countries;\n if (countries) {\n let newCountriesArr = [];\n for (let i = 0; i < countries.length; i++) {\n const country = countries[i].fields.text;\n const countryCode = CountryCode[country] || country;\n newCountriesArr.push({value: country, id: countryCode});\n }\n setArrCountries(newCountriesArr);\n }\n }, []);\n\n const handleEditProfileSendSuccess = () => {\n // updating the email opt status\n const janrainProfileData = customSuperJsonParse(getJanrainCaptureProfileDataFromLocalStorage());\n const postObject = getPostReplaceEntityObject(janrainProfileData);\n if(postObject?.[Constants.optins]?.[Constants.optinIdx]){\n postObject[Constants.optins][Constants.optinIdx].optStatus = emailOptStatus;\n }\n postReplaceBenefitPreferences(postObject, handleFormSendSuccess, handleFormSendFailed);\n };\n\n useEffect(() => {\n if(isFormProcessing) {\n const formName = inputs.formName;\n\n let reminderFieldValues = {\n firstName: form.firstName,\n lastName: form.lastName,\n emailAddress: form.emailAddress,\n 'birthdate[dateselect_day]': form['birthdate[dateselect_day]'],\n 'birthdate[dateselect_month]': form['birthdate[dateselect_month]'],\n 'birthdate[dateselect_year]': form['birthdate[dateselect_year]'],\n addressPostalCode: form.addressPostalCode,\n addressCountry: form.addressCountry\n };\n\n globalState.givenName = form.firstName;\n setGlobalState(globalState);\n\n window.janrain.events.onCaptureSaveSuccess.addHandler(handleEditProfileSendSuccess);\n window.janrain.events.onCaptureSaveFailed.addHandler(handleFormSendFailed);\n window.janrain.capture.ui.postCaptureForm(formName, reminderFieldValues);\n }\n }, [isFormProcessing]);\n\n const handleFormSendFailed = () => {\n setFormProcessing(false);\n setAreChangesSaved(false);\n };\n\n const handleFormSendSuccess = () => {\n setFormProcessing(false);\n setAreChangesSaved(true);\n };\n\n const handleSubmit = () => {\n setFormProcessing(true);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n };\n\n const openModal = event => {\n event.preventDefault();\n setAreChangesSaved(false);\n if (formValidated) {\n setIsModalOpen(true);\n }\n };\n\n return (\n
\n

{janrainLabels.allFieldsRequiredLabel}

\n
\n
\n
\n profileStore.fieldChange(inputs.field.firstName, e.target.value)}\n validationErrorText={errors.firstName}\n autoComplete={'off'}\n />\n
\n
\n profileStore.fieldChange(inputs.field.lastName, e.target.value)}\n validationErrorText={errors.lastName}\n autoComplete={'off'}\n />\n
\n
\n
\n
\n profileStore.fieldChange(inputs.field.emailAddress, e.target.value)}\n validationErrorText={errors.emailAddress}\n autoComplete={'off'}\n />\n
\n
\n
\n
\n profileStore.fieldChange(inputs.field.birthdate.dateselect_month, parseInt(e.target.value, 10))}\n errorMonth={errors['birthdate[dateselect_month]']}\n arrYear={arrYear}\n nameYear={inputs.field.birthdate.dateselect_year}\n yearLabel={janrainLabels.yearSelectLabel}\n valueYear={form['birthdate[dateselect_year]'] || janrainLabels.yearSelectLabel}\n onChangeYear={(e) => profileStore.fieldChange(inputs.field.birthdate.dateselect_year, e.target.value)}\n errorYear={errors['birthdate[dateselect_year]']}\n />\n
\n profileStore.fieldChange(inputs.field.addressPostalCode, e.target.value)}\n validationErrorText={errors.addressPostalCode}\n autoComplete={'off'}\n />\n
\n
\n
\n profileStore.fieldChange(inputs.field.addressCountry, e.target.value)}\n dataArray={arrCountries}\n />\n
\n
\n {janrainLabels.emailDisclaimer &&\n <>\n
\n setEmailOptStatus(!emailOptStatus)}\n />\n
\n \n }\n \n {janrainLabels.saveLabel}\n \n \n {janrainLabels.changePasswordLink?.fields?.title}\n \n\n \n
\n
\n

\n {janrainLabels.editModalSaveChangesTitle}\n

\n
\n
\n {!areChangesSaved ? (\n <>\n \n \n \n ) : (\n <>\n

{janrainLabels.editModalSuccess}

\n \n \n )}\n
\n
\n \n \n
\n )\n};\n\nexport default EditProfile;\n\nEditProfile.propTypes = {\n profileStore: PropTypes.object,\n errors: PropTypes.object,\n form: PropTypes.object,\n userData: PropTypes.object,\n profileEditTab: PropTypes.object,\n commonLabels: PropTypes.object,\n janrainErrors: PropTypes.object,\n formValidated: PropTypes.bool,\n customStyles: PropTypes.string,\n closeModalTimeoutMS: PropTypes.number\n};\n","import React, {useEffect, useState} from 'react';\nimport Modal from 'react-modal';\nimport dynamic from 'next/dynamic';\nconst Label = dynamic(()=>import('../../../Label/Label'))\nconst ToggleInput = dynamic(()=>import('../ToggleInput/ToggleInput'))\nconst Eyebrow = dynamic(()=>import('../../../Eyebrow/Eyebrow'))\nconst FormGoalsCheckboxes = dynamic(()=>import('../FormGoalsCheckboxes/FormGoalsCheckboxes'))\nimport {inputs} from '../../Janrain/janrainForms/ProfileForm/inputs';\nconst Button = dynamic(()=>import('../../../Button/Button'))\nimport {SubmitButton} from '../index';\nimport {isObjectEmpty, getDateInNinetyDays, substractDays, customSuperJsonParse} from '../../../../adapters/helpers/Utils';\nimport {getPostReplaceEntityObject, postReplaceBenefitPreferences} from '../../../../adapters/model/service/api/svc';\nimport { mediaQueryHOC } from '../../../../adapters/helpers/Hooks';\nimport {isToday, recoverPreferencesFromUserData} from '../../helpers/setting.helpers';\nimport {getJanrainCaptureProfileDataFromLocalStorage} from '../../helpers/localstorage.helpers';\nimport PropTypes from 'prop-types';\n\nconst UpdateBenefitPreferences = ({profileBenefitPreferencesTab, commonLabels, userData, customStyles, isMedium, closeModalTimeoutMS}) => {\n\n const [oralbBenefitPreferenceList, setOralbBenefitPreferenceList] = useState([]);\n const [goalsJson, setGoalsJson] = useState({});\n const [isReminded, setIsReminded] = useState(userData?.traitBrushHeadReminderOptInFlag?.traitValue === 'Yes');\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [areChangesSaved, setAreChangesSaved] = useState(false);\n const [isFormProcessing, setFormProcessing] = useState(false);\n\n let traitBrushheadReminderDate = new Date();\n if(userData.traitBrushheadReminderDate?.traitDate) {\n let splitDate = userData.traitBrushheadReminderDate?.traitDate.split('-')\n traitBrushheadReminderDate = new Date(splitDate[0], splitDate[1] - 1, splitDate[2]);\n }\n const [brushheadReminderDateValue, setBrushheadReminderDateValue] = useState(traitBrushheadReminderDate);\n\n const locale = process.env.JANRAIN_CAPTURE_LOCALE;\n const threeMonthsFromNow = getDateInNinetyDays();\n\n const brushHeadReminderDates = profileBenefitPreferencesTab?.brushHeadAgeList;\n\n const [currentReminderDate, setCurrentReminderDate] = useState(getDateInNinetyDays(traitBrushheadReminderDate) || threeMonthsFromNow);\n\n const [daysSincePurchase, setDaysSincePurchase] = useState(null);\n\n const janrainLabels = {\n yourPreferenceTitle: profileBenefitPreferencesTab?.yourPreferenceTitle,\n yourPreferenceText: profileBenefitPreferencesTab?.yourPreferenceText,\n replaceBrushHeadTitle: profileBenefitPreferencesTab?.replaceBrushHeadTitle,\n replaceBrushHeadText: profileBenefitPreferencesTab?.replaceBrushHeadText,\n resetReminder: profileBenefitPreferencesTab?.resetReminder?.fields?.text,\n myBenefitPreferencesTitle: profileBenefitPreferencesTab?.myBenefitPreferencesTitle,\n myBenefitPreferencesSubtitle: profileBenefitPreferencesTab?.myBenefitPreferencesSubtitle,\n onLabel: profileBenefitPreferencesTab?.onLabel?.fields?.text,\n offLabel: profileBenefitPreferencesTab?.offLabel?.fields?.text,\n ...commonLabels\n };\n\n const resetReminder = (numDays) => {\n const daysSince = parseInt(numDays, 10);\n const newReminderDate = getDateInNinetyDays();\n setDaysSincePurchase(daysSince);\n newReminderDate.setDate(newReminderDate.getDate() - daysSince);\n setCurrentReminderDate(newReminderDate);\n\n // the value save in janrain is the date of purchase. They are adding the 90 days themselves for the reminder.\n // So we need to save the date of purchase and show date of purchase + 90 days.\n let reminderDateValue = substractDays(new Date(), daysSince);\n\n setBrushheadReminderDateValue(reminderDateValue);\n };\n\n const setGoalsData = data => {\n setGoalsJson(data);\n };\n\n useEffect(() => {\n assignCurrentBenefitPreferencesFromUserData();\n\n if (document.querySelector('.js-modal-container')) {\n Modal.setAppElement('.js-modal-container');\n }\n },[]);\n\n useEffect(() => {\n if(isFormProcessing) {\n window.janrain.events.onCaptureSaveSuccess.addHandler(handleFormSendSuccess);\n window.janrain.events.onCaptureSaveFailed.addHandler(handleFormSendFailed);\n }\n }, [isFormProcessing]);\n\n useEffect(() => {\n //reset reminder when turning reminder to true\n if(isToday(traitBrushheadReminderDate)) {\n resetReminder(0);\n }\n }, [isReminded]);\n\n const handleFormSendFailed = () => {\n setFormProcessing(false);\n setAreChangesSaved(false);\n };\n\n const handleFormSendSuccess = () => {\n setFormProcessing(false);\n setAreChangesSaved(true);\n };\n\n const assignCurrentBenefitPreferencesFromUserData = () => {\n let benefitList = recoverPreferencesFromUserData(userData);\n setOralbBenefitPreferenceList(benefitList);\n setGoalsData(benefitList);\n };\n\n const handleSubmit = () => {\n setFormProcessing(true);\n const janrainProfileData = customSuperJsonParse(getJanrainCaptureProfileDataFromLocalStorage());\n let postObject = getPostReplaceEntityObject(janrainProfileData);\n // reminder Date\n const reminderValue = (isReminded) ? 'Yes' : null;\n let traitBrushHeadReminderOptInFlagValue = {\n traitValue: reminderValue\n }\n postObject['traitBrushHeadReminderOptInFlag'] = traitBrushHeadReminderOptInFlagValue;\n let reminderDate = brushheadReminderDateValue.toISOString().split('T')[0];\n if(!isReminded) {\n reminderDate = null;\n }\n let traitBrushheadReminderDateValue = {\n traitDate: reminderDate,\n traitValue: reminderDate\n }\n postObject['traitBrushheadReminderDate'] = traitBrushheadReminderDateValue;\n if (!isObjectEmpty(goalsJson)) {\n // BenefitPreferences\n let traitBenefitPreferencesValue = [];\n postObject['traitBenefitPreferences'] = [];\n goalsJson.forEach(goal => {\n let goalObject = {\n traitValue: goal,\n traitLastUpdated: new Date(),\n traitLastUpdatedClientId: process.env.JANRAIN_CAPTURE_CIENT_ID\n }\n traitBenefitPreferencesValue.push(goalObject);\n });\n postObject['traitBenefitPreferences'] = traitBenefitPreferencesValue;\n } else {\n postObject['traitBenefitPreferences'] = [];\n }\n postReplaceBenefitPreferences(postObject, handleFormSendSuccess, handleFormSendFailed);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n };\n\n const openModal = event => {\n event.preventDefault();\n setAreChangesSaved(false);\n setIsModalOpen(true);\n };\n\n return (\n
\n
\n {janrainLabels.yourPreferenceTitle}\n

{janrainLabels.yourPreferenceText}

\n
\n
\n
\n {janrainLabels.replaceBrushHeadTitle}\n {!isMedium &&\n setIsReminded(e.target.checked)}\n checked={isReminded}\n name={inputs.field.traitBrushHeadReminderOptInFlag}\n activeLabel={janrainLabels.onLabel}\n inactiveLabel={janrainLabels.offLabel}\n className={'ob-preferences__toggle-input--desktop'}\n />\n }\n
\n

\n {profileBenefitPreferencesTab?.RemindYouToReplace?.fields?.text}\n

\n {locale !== '' && isReminded &&\n \n \n \n }\n

{janrainLabels.resetReminder}

\n {isMedium &&\n setIsReminded(e.target.checked)}\n checked={isReminded}\n name={inputs.field.traitBrushHeadReminderOptInFlag}\n activeLabel={janrainLabels.onLabel}\n inactiveLabel={janrainLabels.offLabel}\n className={'ob-preferences__toggle-input--mobile'}\n />\n }\n {isReminded &&\n
    \n {brushHeadReminderDates.map((date, index) => (\n
  • \n resetReminder(date?.fields?.value)}\n />\n \n {date?.fields?.radioLabel?.fields?.text}\n \n
  • \n ))}\n
\n }\n
\n\n
\n

{janrainLabels.myBenefitPreferencesTitle}

\n {janrainLabels.myBenefitPreferencesSubtitle}\n \n
\n\n \n {janrainLabels.saveLabel}\n \n\n \n
\n
\n

\n {janrainLabels.editModalSaveChangesTitle}\n

\n
\n
\n {!areChangesSaved ? (\n <>\n \n \n \n ) : (\n <>\n

{janrainLabels.editModalSuccess}

\n \n \n )}\n
\n
\n \n
\n )\n};\n\nUpdateBenefitPreferences.propTypes = {\n profileBenefitPreferencesTab: PropTypes.object,\n commonLabels: PropTypes.object,\n userData: PropTypes.object,\n customStyles: PropTypes.string,\n isMedium: PropTypes.bool,\n closeModalTimeoutMS: PropTypes.number\n};\n\nexport default mediaQueryHOC(UpdateBenefitPreferences);\n// This export is for unit testing (do not remove) :\nexport const UpdateBenefitPreferencesTest = UpdateBenefitPreferences;\n","import React, {useState} from 'react';\nimport {FormSelect} from '../index';\nimport PropTypes from 'prop-types';\n\nconst FormBirthdate = (\n {\n className,\n dateOfBirthLabel,\n whyWeAskForDateOfBirth,\n whyWeAskForDateOfBirthLegal,\n arrMonths,\n nameMonth,\n monthLabel,\n valueMonth,\n onChangeMonth,\n errorMonth,\n arrYear,\n nameYear,\n yearLabel,\n valueYear,\n onChangeYear,\n errorYear,\n }) => {\n const [islegalTextShowing, setIslegalTextShowing] = useState(false)\n return (\n
\n

{dateOfBirthLabel}

\n
\n \n\n \n
\n {errorMonth && errorYear && errorMonth === errorYear ? (\n

\n {errorYear}\n

\n ) : (\n <>\n {errorMonth &&\n

\n {errorMonth}\n

\n }\n {errorYear &&\n

\n {errorYear}\n

\n }\n \n )}\n \n

\n {whyWeAskForDateOfBirthLegal}\n

\n
\n )\n};\n\nFormBirthdate.propTypes = {\n className: PropTypes.string,\n dateOfBirthLabel: PropTypes.string,\n whyWeAskForDateOfBirth: PropTypes.string,\n whyWeAskForDateOfBirthLegal: PropTypes.string,\n arrMonths: PropTypes.object,\n nameMonth: PropTypes.string,\n monthLabel: PropTypes.string,\n valueMonth: PropTypes.string,\n onChangeMonth: PropTypes.func,\n errorMonth: PropTypes.string,\n arrYear: PropTypes.object,\n nameYear: PropTypes.string,\n yearLabel: PropTypes.string,\n valueYear: PropTypes.string,\n onChangeYear: PropTypes.func,\n errorYear: PropTypes.string\n}\n\nexport default FormBirthdate;\n","import { customSuperJsonParse, customSuperJsonStringify, formatDateToStringValue} from '../../../adapters/helpers/Utils';\nimport { WarrantyExtensionConstants } from '../../../adapters/helpers/Constants';\n\nexport const recoverProductsFromUserData = (profileData, productCategoryList, warrantyExtensionTime, gCSUserproductList) => {\n let products = [];\n\n if(gCSUserproductList && Array.isArray(gCSUserproductList)) {\n gCSUserproductList.forEach(gCSProduct => {\n // continue if product is not deleted\n if(!gCSProduct.isDelete) {\n productCategoryList.forEach(productCategory => {\n const productOverviews = productCategory?.fields?.productOverviewList;\n if (productOverviews) {\n productOverviews.forEach(productOverview => {\n productOverview.fields.productVariants.forEach(contentfulProduct => {\n let contentfulGCSProductId = contentfulProduct?.fields?.gCSProductId;\n if (contentfulProduct?.fields?.janrainProductId) {\n contentfulGCSProductId = contentfulProduct?.fields?.janrainProductId;\n }\n\n let gCSProductId = gCSProduct?.productId;\n if (gCSProductId == contentfulGCSProductId) {\n let enhanceProductVariant = customSuperJsonParse(customSuperJsonStringify(contentfulProduct.fields));\n // Product identifier eanCode or sku. It seems that it's called ean code in GCS even if they are SKU\n enhanceProductVariant.productId = gCSProduct.eanCode;\n\n // Order unique identifier. Is not post anywhere, but gives us the hability to identity two different order with the same product.\n // We use this identifier for delete or make primary manipulation.\n enhanceProductVariant.id = gCSProduct.orderId;\n\n // unique database identifier in GCS database. Needed for product registration.\n enhanceProductVariant.gCSProductId = gCSProductId;\n\n enhanceProductVariant.imageUrl = gCSProduct.imageUrl;\n enhanceProductVariant.registrationDate = formatDateToStringValue(gCSProduct.registrationDate, 'YYYY-MM-DD', 'DD/MM/YYYY');\n\n let warrantyDateObject = new Date(gCSProduct.warrantyExtendedDate);\n let warrantyExpirationDate = new Date(warrantyDateObject.getFullYear(), warrantyDateObject.getMonth(), warrantyDateObject.getDate());\n\n enhanceProductVariant.purchaseDate = formatDateToStringValue(gCSProduct.purchaseDate, 'YYYY-MM-DD', 'DD/MM/YYYY');\n enhanceProductVariant.traitDate = formatDateToStringValue(gCSProduct.purchaseDate, 'YYYY-MM-DD', 'DD/MM/YYYY');\n enhanceProductVariant.warrantyExpirationDate = formatDateToStringValue(warrantyExpirationDate, 'YYYY-MM-DD', 'DD/MM/YYYY');\n enhanceProductVariant.warrantyExpirationDateInText = warrantyExpirationDate.toLocaleString(process.env.JANRAIN_CAPTURE_LOCALE, {\n month: 'long',\n year: 'numeric'\n });\n enhanceProductVariant.category = productCategory?.fields?.name;\n enhanceProductVariant.timeStamp = new Date().toUTCString();\n\n // display name\n enhanceProductVariant.title = getProductVariantName(contentfulProduct);\n\n enhanceProductVariant.isPrimary = gCSProduct?.isPrimary;\n\n products.push(enhanceProductVariant);\n }\n })\n })\n }\n });\n }\n });\n }\n return products;\n};\n\nexport const enhanceProducts = (gCSUserproductList) => {\n let products = [];\n\n if(gCSUserproductList && Array.isArray(gCSUserproductList)) {\n gCSUserproductList.forEach(gCSProduct => {\n // continue if product is not deleted\n if(!gCSProduct.isDelete) {\n let gCSProductId = gCSProduct?.productId;\n \n let enhanceProductVariant = {};\n // Product identifier eanCode or sku. It seems that it's called ean code in GCS even if they are SKU\n enhanceProductVariant.productId = gCSProduct.productCode;\n enhanceProductVariant.orderProductId = gCSProduct.orderProductId;\n enhanceProductVariant.typeCode = gCSProduct.typeCode;\n\n // Order unique identifier. Is not post anywhere, but gives us the hability to identity two different order with the same product.\n // We use this identifier for delete or make primary manipulation.\n enhanceProductVariant.id = gCSProduct.orderId;\n\n // unique database identifier in GCS database. Needed for product registration.\n enhanceProductVariant.gCSProductId = gCSProductId;\n\n enhanceProductVariant.imageUrl = gCSProduct.productGasImageUrl;\n enhanceProductVariant.mainAsset = gCSProduct.productGasImageUrl;\n enhanceProductVariant.registrationDate = formatDateToStringValue(gCSProduct.registrationDate, 'YYYY-MM-DD', 'DD/MM/YYYY');\n\n let warrantyDateObject = new Date(gCSProduct.warrantyExtendedDate);\n let warrantyExpirationDate = new Date(warrantyDateObject.getFullYear(), warrantyDateObject.getMonth(), warrantyDateObject.getDate());\n \n enhanceProductVariant.purchaseDate = formatDateToStringValue(gCSProduct.purchaseDate, 'YYYY-MM-DD', 'DD/MM/YYYY');\n enhanceProductVariant.traitDate = formatDateToStringValue(gCSProduct.purchaseDate, 'YYYY-MM-DD', 'DD/MM/YYYY');\n enhanceProductVariant.warrantyExpirationDate = formatDateToStringValue(warrantyExpirationDate, 'YYYY-MM-DD', 'DD/MM/YYYY');\n enhanceProductVariant.warrantyExpirationDateInText = warrantyExpirationDate.toLocaleString(process.env.JANRAIN_CAPTURE_LOCALE, {\n month: 'long',\n year: 'numeric'\n });\n enhanceProductVariant.timeStamp = new Date().toUTCString();\n\n // display name\n enhanceProductVariant.name = gCSProduct?.productName;\n enhanceProductVariant.title = gCSProduct?.productName;\n\n enhanceProductVariant.isPrimary = gCSProduct?.isPrimary;\n\n products.push(enhanceProductVariant);\n \n }\n });\n }\n return products;\n};\n\nexport const removeProductFromJanrainList = (products, productIdToRemove, orderProductId) => {\n const orderIdWithProductId = `${productIdToRemove}${WarrantyExtensionConstants.janrinProductIdDelimiter}${orderProductId}`\n return products.filter(product => {\n if(product && product.productId && product.productId.toString().indexOf(WarrantyExtensionConstants.janrinProductIdDelimiter) > -1) {\n return product.productId !== orderIdWithProductId;\n } else {\n return product.productId !== productIdToRemove;\n }\n });\n};\n\nexport const removeProductFromDisplayedList = (products, orderId, orderProductId) => {\n return products.filter(product => (product.id !== orderId || product.orderProductId !== orderProductId));\n};\n\nexport const getJanrainProductId = (sku) => {\n let janrainId = sku;\n return janrainId;\n};\n\nexport const getContenfulPrimaryProductCode = (product) => {\n let code = product?.productId + '_' + product?.purchaseDate;\n return code;\n};\n\nexport const getProductVariantName = (productVariant) => {\n let title = productVariant?.fields?.name;\n if(productVariant?.fields?.shortTitle) {\n title = productVariant?.fields?.shortTitle;\n }\n return title;\n};\n","export const recoverPreferencesFromUserData = (profileData) => {\n const profilePreferences = profileData?.traitBenefitPreferences;\n const userPreferences = [];\n if(profilePreferences) {\n profilePreferences.forEach(benefitPreference => {\n let value = benefitPreference?.traitValue;\n if(value) {\n // set to upper case to be sure we match existing user benefit preferences in prod\n userPreferences.push(value);\n }\n })\n }\n return userPreferences;\n};\n\nexport const isToday = (someDate) => {\n const today = new Date()\n return someDate.getDate() == today.getDate() &&\n someDate.getMonth() == today.getMonth() &&\n someDate.getFullYear() == today.getFullYear()\n}","import React from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport Block from '../../adapters/helpers/Block'\nimport PropTypes from 'prop-types';\nimport htmlParser from 'react-markdown/plugins/html-parser';\nimport { MarkdownTextConstants } from '../../adapters/helpers/Constants'\n\nconst astPlugins = [\n htmlParser({\n isValidNode: node => node.type !== MarkdownTextConstants.script,\n processingInstructions: [/* ... */]\n }),\n];\n\nexport function Markdown({ source, className }) {\n return (\n \n );\n}\n\nMarkdown.propTypes = {\n source: PropTypes.any,\n className: PropTypes.string,\n}\n\nexport default function MarkdownText(props) {\n const block = new Block(props);\n const document = block.getDocument();\n const classNames = document?.fields?.classNames;\n let ariaHidden = null;\n if (classNames && classNames.indexOf('aria-hidden') >= 0) {\n ariaHidden = true;\n }\n const Tag = props.isSpan ? 'span' : 'div';\n\n return ((document?.fields) ?\n \n \n \n :\n \n \n \n );\n}\n\nMarkdownText.propTypes = {\n value: PropTypes.string,\n isSpan: PropTypes.bool,\n className: PropTypes.string,\n};\n","\"use strict\";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9890,811],{42456:function(e,t,r){function n(e,t){return t?\"https:\"+e+\"?\"+t:\"https:\"+e}t.ZP={buildContentfullImageUrl:n,buildContentfullImageUrlByHeight:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"auto\";return\"https:\"+e+\"?h=\"+t},buildContentfullImageUrlByWidth:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"auto\";return\"https:\"+e+\"?w=\"+t},imageContentfullDpr:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\";return t?n(e,t):n(e)},imageContentfullSrc:function(e,t){return n(e,t)}}},72428:function(e,t,r){r.d(t,{HP:function(){return I},KG:function(){return P},NR:function(){return A},O3:function(){return C},Yu:function(){return j},c1:function(){return O},tj:function(){return T},yS:function(){return N}});var n=r(7980),a=r.n(n),l=r(49376),o=r.n(l),i=r(87794),s=r.n(i),d=r(24036),u=r(8996),c=r(42456),p=r(19271),f=r(34155);function m(){var e=new Headers;return e.append(d.X.contentType,d.X.json),e.append(d.X.accessToken,f.env.WARRANTY_API_ACCESS_TOKEN),e}function h(e){return(e=(e||\"\").toString()).startsWith(\"JR\")||e.startsWith(\"PC\")}function b(){var e=new Headers;return e.append(d.X.contentType,d.X.json),e.append(d.X.accessToken,f.env.WARRANTY_API_EMAIL_NOTIFICATION_ACCESS_TOKEN),e}var v=f.env.WARRANTY_API_BASE_URL+f.env.WARRANTY_API_VERSION+d.X.warrantyExtensionPath+\"?\"+d.X.programIdParam+f.env.WARRANTY_API_PROGRAM_ID+\"&\"+d.X.localeParam+f.env.WARRANTY_API_LOCALE,_=f.env.WARRANTY_API_BASE_URL+f.env.WARRANTY_API_VERSION+d.X.getConsumerPath+\"?\"+d.X.programIdParam+f.env.WARRANTY_API_PROGRAM_ID+\"&\"+d.X.localeParam+f.env.WARRANTY_API_LOCALE,g=f.env.WARRANTY_API_BASE_URL+f.env.WARRANTY_API_VERSION+d.X.getProductsByTypeCodePath+\"?\"+d.X.programIdParam+f.env.WARRANTY_API_PROGRAM_ID+\"&\"+d.X.localeParam+f.env.WARRANTY_API_LOCALE,x=f.env.WARRANTY_API_BASE_URL+f.env.WARRANTY_API_VERSION+d.X.getCampaignInfoMaster+\"?\"+d.X.programIdParam+f.env.WARRANTY_API_PROGRAM_ID+\"&\"+d.X.localeParam+f.env.WARRANTY_API_LOCALE,y=f.env.WARRANTY_API_BASE_URL+f.env.WARRANTY_API_VERSION+d.X.getproductListBySeries+\"?\"+d.X.programIdParam+f.env.WARRANTY_API_PROGRAM_ID+\"&\"+d.X.localeParam+f.env.WARRANTY_API_LOCALE,P=function(){var e=o()(s().mark((function e(t){var r,n,a,l,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=g,n={sType:Number(t)},a=m(),l={method:\"POST\",headers:a,body:(0,u.Zl)(n)},e.prev=4,e.next=7,fetch(r,l).then((function(e){return e}));case 7:return o=e.sent,e.abrupt(\"return\",o);case 11:return e.prev=11,e.t0=e.catch(4),console.error(\"get product by typecode error=>\",e.t0),e.abrupt(\"return\",{message:\"Server Error\"});case 15:case\"end\":return e.stop()}}),e,null,[[4,11]])})));return function(t){return e.apply(this,arguments)}}(),j=function(){var e=o()(s().mark((function e(t,r){var n,l,o,i,d;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=null,e.prev=1,l={lstInternSubGroup:a()(t),lstSeries:a()(r)},o=m(),i={method:\"POST\",headers:o,body:(0,u.Zl)(l)},e.next=7,fetch(y,i).then((function(e){return e.json()}));case 7:(d=e.sent).error?console.error(\"Product Fetch error\",d.error):n=d,e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),console.error(\"series fetch error\",e.t0);case 14:return e.abrupt(\"return\",n);case 15:case\"end\":return e.stop()}}),e,null,[[1,11]])})));return function(t,r){return e.apply(this,arguments)}}(),N=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){},l=function(e,t,r){var n,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){},o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:function(){},i={program:{programId:parseInt(f.env.WARRANTY_API_PROGRAM_ID),locale:f.env.WARRANTY_API_LOCALE,sourceSystemId:parseInt(f.env.WARRANTY_API_SOURCE_SYSTEM_ID)},consumer:{},address:[],productOrder:{product:[{productId:d.X.productId,productCode:e.primary.typeCode,productPurchased:e.primary.longDescription,productQuantity:1,productName:e.primary.productName,dateOfPurchase:(0,u.l$)(e.primary.purchaseDate,\"DD/MM/YYYY\",\"YYYY-MM-DD\"),productImageUrl:e.primary.mainAsset}]}};e.secondary&&i.productOrder.product.push({productId:d.X.productId,productCode:e.secondary.typeCode,productPurchased:e.secondary.longDescription,productQuantity:1,productName:e.secondary.productName,dateOfPurchase:(0,u.l$)(e.secondary.purchaseDate,\"DD/MM/YYYY\",\"YYYY-MM-DD\"),productImageUrl:e.secondary.mainAsset}),0==(null==t||null==(n=t.traitProductType)?void 0:n.length)&&(i.productOrder.product[0].isPrimary=!0),(null==t?void 0:t.uuid)&&(i.consumer.UUID=null==t?void 0:t.uuid),a&&(i.consumer.consumerId=a),((null==t?void 0:t.consumerID)||(null==t?void 0:t.uuid))&&(i.consumer.oneCPId=h(null==t?void 0:t.consumerID)?null==t?void 0:t.consumerID:null==t?void 0:t.uuid),(null==t?void 0:t.countryId)&&i.address.push({addressTypeCode:d.X.addressTypeCode,countryId:null==t?void 0:t.countryId});var s=m(),c={method:\"POST\",headers:s,body:(0,u.Zl)(i)};fetch(v,c).then((function(e){return e.json()})).then((function(e){e.error?(console.error(e.error),o()):l(r,e)})).catch((function(e){console.error(e),o()}))};w(e,t,r,n,a,l)},A=function(){var e=o()(s().mark((function e(t){var r,n,a,l;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=-1,e.prev=1,n=m(),a={method:\"GET\",headers:n},e.next=6,fetch(x,a).then((function(e){return e.json()}));case 6:(l=e.sent).error?console.error(\"country ID find error\",l.error):Array.isArray(l.programCountriesForAddress)&&l.programCountriesForAddress.length>0?r=l.programCountriesForAddress.filter((function(e){return e.countryCode===t}))[0].countryId:console.error(\"country ID not found\",l),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),console.error(\"country ID find error\",e.t0);case 13:return e.abrupt(\"return\",r);case 14:case\"end\":return e.stop()}}),e,null,[[1,10]])})));return function(t){return e.apply(this,arguments)}}(),C=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){},l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:function(){},o=arguments.length>6?arguments[6]:void 0,i=arguments.length>7&&void 0!==arguments[7]?arguments[7]:function(){},s={productId:e.gCSProductId,orderId:e.id,UUID:null==t?void 0:t.uuid,oneCPId:h(null==t?void 0:t.consumerID)?null==t?void 0:t.consumerID:null==t?void 0:t.uuid,isPrimary:r,isDelete:n,orderProductId:null==e?void 0:e.orderProductId},d=m(),c={method:\"PUT\",headers:d,body:(0,u.Zl)(s)};fetch(v,c).then((function(e){return e.json()})).then((function(e){e.code?\"SUCCESS\"==e.code?a(o,i):l(o):console.error(e.error)})).catch((function(e){console.error(e)}))},I=function(e,t){var r,n,a,l,o,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=\"\",d={fields:{assetId:null==t||null==(r=t.mainAsset)||null==(n=r.fields)||null==(a=n.asset)||null==(l=a.fields)||null==(o=l.file)?void 0:o.url}},m=(0,p.H)(c.ZP.imageContentfullSrc(d,s)),h={email:null==e?void 0:e.email,parameters:[{name:\"fname\",value:null==e?void 0:e.givenName},{name:\"lineproduct\",value:null==t?void 0:t.title},{name:\"itemurl1\",value:m},{name:\"productname\",value:null==t?void 0:t.title},{name:\"typecode\",value:(null==t?void 0:t.typeCode)||\"\"},{name:\"dateofpurchase\",value:null==t?void 0:t.traitDate},{name:\"dateofregistration\",value:null==t?void 0:t.registrationDate},{name:\"warrantyexpirationdate\",value:null==t?void 0:t.warrantyExpirationDate},{name:\"email\",value:null==e?void 0:e.email}],campaignId:parseInt(f.env.WARRANTY_API_PROGRAM_ID),templateType:f.env.WARRANTY_API_EMAIL_TEMPLATE_TYPE,locale:f.env.WARRANTY_API_LOCALE,system:f.env.WARRANTY_API_EMAIL_SYSTEM},v=b(),_={method:\"POST\",headers:v,body:(0,u.Zl)(h)};fetch(f.env.WARRANTY_API_EMAIL_NOTIFICATION_URL,_).then((function(e){return e.json()})).then((function(e){null==e&&console.log(\"No data fetched\")})).catch((function(e){console.error(\"failed to notification send email\",e)})).finally((function(){i&&i()}))},O=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,l=m();l.append(d.X.UUID,null==r?void 0:r.uuid),l.append(d.X.oneCPId,null==r?void 0:r.consumerID);var o={method:\"GET\",headers:l};fetch(v,o).then((function(e){return e.json()})).then((function(l){l.error?\"PRODUCT_NOT_FOUND\"==l.error.code&&400==l.error.statusCode&&e([],r,n,a):Array.isArray(l)?e(l,r,n,a):t()})).catch((function(e){t(),console.error(e)}))},w=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){},l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:function(){},o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:function(){},i=m();i.append(d.X.UUID,null==t?void 0:t.uuid);var s={method:\"GET\",headers:i};fetch(_,s).then((function(e){return e.json()})).then((function(i){if(i.error)\"CONSUMER_NOT_FOUND\"==i.error.code&&400==i.error.statusCode&&l(e,t,r,null,n,a);else if(Array.isArray(i)){var s=i[0].ConsumerId;l(e,t,r,s,n,a)}else o(),console.error(i)})).catch((function(e){o(),console.error(e)}))},T=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n={programId:parseInt(f.env.WARRANTY_API_PROGRAM_ID),locale:f.env.WARRANTY_API_LOCALE,janrain:{UUID:null==e?void 0:e.uuid},user:{emailAddress:null==e?void 0:e.email,firstName:null==e?void 0:e.givenName},orderId:t},a=m(),l={method:\"POST\",headers:a,body:(0,u.Zl)(n)};fetch(f.env.WARRANTY_API_EMAIL_NOTIFICATION_GWE_URL,l).then((function(e){return e.json()})).then((function(e){null==e&&console.log(\"No data fetched\")})).catch((function(e){console.error(\"failed to notification send email\",e)})).finally((function(){r&&r()}))}},48075:function(e,t,r){r.d(t,{F:function(){return n}});var n={formName:\"registerProductForm\",editFormName:\"editProfileForm\",type:{text:\"text\",date:\"date\"},field:{selectProductType:\"selectProductType\",reminderToReplace:\"reminderToReplace\",dateOfPurchase:\"dateOfPurchase\",traitProductType:{traitValue:\"traitProductType_traitValue\",imageUrl:\"traitProductType_imageUrl\",registrationDate:\"traitProductType_registrationDate\",purchaseDate:\"traitProductType_purchaseDate\"},registerProductsID:\"RegisterProductsID\",primaryProduct:{traitValue:\"primaryProduct\"}}}},49872:function(e,t,r){var n=r(930),a=r.n(n),l=r(67294);function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0&&s.splice(s.indexOf(e),1)}}),[]),[d,u]}},77844:function(e,t,r){r.r(t);var n=r(7980),a=r.n(n),l=r(67294),o=r(86499),i=r(48075),s=r(85893),d=function(e){var t=e.oralCareGoals,r=e.janrainLabels,n=e.setGoalsData,d=e.setReminderData,u=e.currentGoals,c=e.className,p=(0,l.useState)([]),f=p[0],m=p[1],h=function(e){var t=e.currentTarget,r=t.getAttribute(\"value\"),l=t.checked,o=a()(f);l&&!f.includes(r)?o.push(r):o=o.filter((function(e){return e!==r})),n(o),m(o)};(0,l.useEffect)((function(){(null==u?void 0:u.length)>0&&m(a()(u))}),[u]);return(0,s.jsxs)(\"div\",{className:c,children:[(0,s.jsx)(\"ul\",{className:\"ob-form-goals__checkbox-list\",children:t.map((function(e,t){return(0,s.jsx)(\"li\",{className:\"ob-form-goals__checkbox-list--item\",children:(0,s.jsx)(o.I0,{name:e.fields.name,label:e.fields.name,value:e.fields.value,onChange:h,checked:f.includes(e.fields.value),isSquared:!0,className:c,isBold:!0})},t)}))}),r.reminderToReplaceLabel&&(0,s.jsx)(o.I0,{name:i.F.field.reminderToReplace,label:r.reminderToReplaceLabel,className:c,checked:!1,onChange:function(e){var t;t=e.target.checked,d(t)}})]})};d.defaultProps={className:\"\"},t.default=d},52107:function(e,t,r){r.r(t);var n=r(67294),a=r(29238),l=r.n(a),o=r(85893),i=function(e){var t=e.inputType,r=e.name,a=e.label,i=e.value,s=e.toolTipText,d=e.checked,u=e.validationErrorText,c=e.placeholder,p=e.halfWidth,f=e.quarterWidth,m=e.required,h=e.ariaDescribedBy,b=e.onChange,v=e.onBlur,_=e.disabled,g=void 0!==_&&_,x=(0,n.useState)(t),y=x[0],P=x[1],j=(0,n.useState)(!1),N=j[0],A=j[1],C=function(){var e=document.createElement(\"input\");return e&&(e.setAttribute(\"type\",\"date\"),e.setAttribute(\"value\",\"not-a-date\")),e&&\"not-a-date\"!==e.value};return(0,n.useEffect)((function(){\"date\"!==t||C()||P(\"text\")}),[]),(0,o.jsxs)(\"div\",{className:\"ob-input__wrapper\",\"data-half-width\":p,\"data-quarter-width\":f,children:[(0,o.jsx)(\"label\",{htmlFor:r,className:\"ob-input__label\",children:a}),(0,o.jsxs)(\"div\",{className:\"ob-input__password-wrapper\",children:[\"date\"===t&&C()?(0,o.jsx)(\"input\",{\"aria-label\":r,className:\"ob-input__input\",type:y,value:i,name:r,\"aria-describedby\":\"ob-input__error-\".concat(r,\" \").concat(h),id:r,onChange:b,\"data-isvalid\":!u,\"aria-invalid\":!!u,required:m}):(0,o.jsx)(\"input\",{\"aria-label\":c,className:\"ob-input__input\",disabled:g,placeholder:c,type:y,checked:d,value:i,name:r,\"aria-describedby\":\"\".concat(u?\"ob-input__error-\".concat(r):\"\",\" \").concat(h),id:r,onChange:b,onBlur:v,\"data-isvalid\":!u,\"aria-invalid\":!!u,autoComplete:r,required:m}),\"password\"===t&&(0,o.jsx)(\"button\",{className:\"ob-input__show-hide \".concat(N?\"--show\":\"--hide\"),type:\"button\",onClick:function(){P(\"password\"===y?\"text\":\"password\"),A(!N)},\"aria-label\":N?\"Hide Password\":\"Show Password\",children:(0,o.jsx)(\"svg\",{viewBox:\"0 0 37 19\",className:\"ob-icon ob-icon--showHide\",dangerouslySetInnerHTML:{__html:l().sanitize('\\n ')}})})]}),s&&(0,o.jsx)(\"div\",{children:(0,o.jsx)(\"p\",{children:s})}),u&&(0,o.jsx)(\"p\",{id:\"ob-input__error-\".concat(r),className:\"ob-input__error\",children:u})]})};i.defaultProps={required:!0,ariaDescribedBy:\"\"},t.default=i},72818:function(e,t,r){r.r(t);r(67294);var n=r(85893),a=function(e){var t=e.dataArray,r=e.value,a=e.selectLabel,l=e.name,o=e.onChange,i=e.isHalfWidth,s=e.ariaLabel,d=e.hasInitialValue,u=t.map((function(e){return(0,n.jsx)(\"option\",{value:e.id,children:e.value},e.id)}));return(0,n.jsxs)(\"div\",{className:\"ob-form-select\",\"data-is-half-width\":i,children:[a&&(0,n.jsx)(\"label\",{htmlFor:l,className:\"ob-input__label ob-form-select__label\",children:a}),(0,n.jsx)(\"div\",{className:\"ob-form-select__select-ctn\",children:(0,n.jsxs)(\"select\",{className:\"ob-form-select__select\",\"aria-label\":s,name:l,id:l,onChange:o,value:r||\"\",children:[!d&&(0,n.jsx)(\"option\",{value:\"\",disabled:!0},0),u]})})]})};a.defaultProps={isHalfWidth:!1,hasInitialValue:!1},t.default=a},86499:function(e,t,r){r.d(t,{I0:function(){return C},JI:function(){return ce},lr:function(){return je},Oi:function(){return E.default},yt:function(){return y.default},ih:function(){return P.default},UN:function(){return te},Mm:function(){return x},bC:function(){return Pe}});var n=r(930),a=r.n(n),l=r(67294),o=r(87379),i={light:{border:\"#000000\",text:\"#000000\",background:\"transparent\"},dark:{border:\"#000000\",text:\"#FFFFFF\",background:\"#000000\"}},s=function(e){return\"light\"===e?\"dark\":\"light\"},d=o.ZP.a.withConfig({displayName:\"Buttonstyles__ButtonWrapper\",componentId:\"p0ktkt-0\"})([\"display:block;background:\",\";padding:10px 20px;outline:none;border:2px solid \",\";cursor:pointer;font-size:0.9rem;text-align:center;text-decoration:none;&:hover{background-color:\",\";border-color:\",\";}\",\"\"],(function(e){var t=e.variant;return i[t].background}),(function(e){var t=e.variant;return i[t].border}),(function(e){var t=e.variant,r=e.disabled;return i[r?t:s(t)].background}),(function(e){var t=e.variant,r=e.disabled;return i[r?t:s(t)].border}),(function(e){return e.disabled&&\"cursor: not-allowed;\"})),u=o.ZP.span.withConfig({displayName:\"Buttonstyles__ButtonLink\",componentId:\"p0ktkt-1\"})([\"color:\",\";\",\":hover &{color:\",\";}\",\"\"],(function(e){var t=e.variant;return i[t].text}),d,(function(e){var t=e.variant,r=e.disabled;return i[r?t:s(t)].text}),\" \\n font-weight: bold;\\n text-decoration: none;\\n text-transform: uppercase;\\n vertical-align: middle;\\n\"),c=\"#e2e2e2\",p=\"#545454\",f=(0,o.F4)([\"0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}\"]),m=o.ZP.span.withConfig({displayName:\"Buttonstyles__Loader\",componentId:\"p0ktkt-2\"})([\"border:4px solid \",\";border-radius:50%;border-top:4px solid \",\";width:9px;height:9px;animation:\",\" 2s linear infinite;display:inline-block;margin-left:3%;vertical-align:middle;\"],c,p,f),h=r(85893);function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t=0&&(t-=1);var n=Fe.current.clientWidth*t;Fe.current.scrollTo?Fe.current.scrollTo({left:n,behavior:\"smooth\"}):Fe.current.scrollLeft=n}},Ke=(0,l.useCallback)((function(){document.body.classList.contains(\"noScroll\")||Ie(window.pageYOffset)})),Qe=function(){Ne(!1),setTimeout((function(){Te({}),Me(!1)}),fe)},Je=function(e){e.preventDefault();var t=(0,D.Cp)(e.currentTarget.dataset.custom);Te(t),Ne(!0)};return(0,h.jsxs)(\"div\",{className:\"ob-product-management js-modal-container\",children:[(0,h.jsx)(q,{className:\"ob-product-management__text\",value:Xe.profileIntroText}),(0,h.jsx)(Z,{className:\"ob-product-management__title\",children:Xe.title}),(0,h.jsx)(q,{className:\"ob-product-management__text\",value:Xe.productManagementText}),Ye&&(0,h.jsx)(\"div\",{className:\"ob-product-management__spinner\"}),!(0,D.nK)(de)&&(0,h.jsxs)(\"div\",{className:\"ob-product-management__carousel\",children:[(0,h.jsx)(\"ul\",{className:\"ob-product-management__product-list \".concat(1===xe||1===de.length?\"is-centered\":\"\"),onScroll:Ze,ref:Fe,children:de.map((function(e,t){var r,n;return(0,h.jsxs)(\"li\",{className:\"ob-product-management__product-list-item\",children:[(0,h.jsxs)(\"div\",{children:[(0,h.jsx)(\"div\",{className:\"ob-product-management__product-image-wrapper\",children:(null==e?void 0:e.imageUrl)?(0,h.jsx)(\"img\",{src:(0,H.H)(null==e?void 0:e.imageUrl),alt:(null==e?void 0:e.name)||\"\",className:\"ob-product-management__product-image\"}):(0,h.jsx)(ee,{document:He})}),(0,h.jsx)(\"p\",{className:\"ob-product-management__product-title\",dangerouslySetInnerHTML:{__html:N().sanitize(null==e?void 0:e.title)}})]}),(0,h.jsxs)(\"div\",{children:[(0,h.jsx)($,{className:\"ob-product-management__product-date\",textTheme:!0,tag:\"a\",href:\"\".concat(null==Ge||null==(r=Ge.pagePath)||null==(n=r.fields)?void 0:n.slug,\"?product_id=\").concat(null==e?void 0:e.id),children:Xe.registeredOn+\" \"+(null==e?void 0:e.traitDate)}),(0,h.jsxs)(\"div\",{className:\"ob-product-management__product-buttons-container\",children:[e.isPrimary?(0,h.jsx)(\"span\",{\"data-size\":\"small-slim\",className:\"ob-button ob-product-management__product-button --is-primary\",children:Xe.primaryButtonLabel}):(0,h.jsx)($,{size:\"small-slim\",borderThemeBlue:!0,className:\"ob-product-management__product-button ob-product-management__make-primary-btn\",dataCustom:(0,D.Zl)(e),disabled:Ye,onClick:Je,children:Xe.makePrimaryButtonLabel}),(0,h.jsx)($,{textTheme:!0,dataCustom:(0,D.Zl)(e),onClick:function(e){Me(!0),Je(e)},disabled:Ye,className:\"ob-product-management__product-button\",children:Xe.deleteLabel})]})]})]},t)}))}),xe>1&&(0,h.jsxs)(\"div\",{children:[(0,h.jsx)(\"button\",{className:\"ob-product-management__carousel--control-button\",\"data-control-button\":\"prev\",\"aria-label\":null==Xe?void 0:Xe.previousLabel,onClick:$e,disabled:0===ve,type:\"button\",children:(0,h.jsx)(\"span\",{children:(0,h.jsx)(K,V(V({},Ve),{},{rotate:90}))})}),(0,h.jsx)(\"button\",{className:\"ob-product-management__carousel--control-button\",\"data-control-button\":\"next\",\"aria-label\":null==Xe?void 0:Xe.nextLabel,onClick:$e,disabled:ve===xe-1,type:\"button\",children:(0,h.jsx)(\"span\",{children:(0,h.jsx)(K,V(V({},Ve),{},{rotate:-90}))})}),(0,h.jsx)(\"div\",{ref:We,children:(0,h.jsx)(Q,{count:xe,onClick:ze,current:ve,color:\"blue\"})})]})]}),!he&&(0,h.jsx)(\"div\",{className:\"ob-product-management__add-product-container\",children:!(0,D.nK)(de)&&de.length>=Ue?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)($,{size:\"large-long\",tag:\"button\",disabled:!0,className:\"ob-profile__full-width-btn\",children:null==(w=Xe.registerProductLinkGwe)||null==(T=w.fields)?void 0:T.title}),(0,h.jsx)(\"span\",{className:\"ob-product-management__product-limit-label\",children:Xe.registeredProductLimitLabel})]}):(0,h.jsx)($,{size:\"large-long\",tag:\"a\",href:null==(R=Xe.registerProductLinkGwe)||null==(k=R.fields)?void 0:k.url,className:\"ob-profile__full-width-btn\",onClick:W.QB,children:null==(L=Xe.registerProductLinkGwe)||null==(E=L.fields)?void 0:E.title})}),he&&(0,h.jsx)(\"p\",{className:\"ob-input__error\",children:Xe.gcsDownErrorMessage}),(0,h.jsxs)(\"div\",{className:\"ob-product-management__app-container\",children:[(0,h.jsx)(Z,{className:\"ob-product-management__app-title\",children:Xe.tryTheAppTitle}),(0,h.jsx)(q,{className:\"ob-product-management__text\",value:Xe.tryTheAppText}),(0,h.jsxs)(\"ul\",{className:\"ob-product-management__app-list\",children:[(0,h.jsx)(\"li\",{children:(0,h.jsx)(\"a\",{className:\"ob-product-management__app-link\",href:null==(Y=Xe.downloadOnAppStore)||null==(X=Y.fields)?void 0:X.url,target:\"_blank\",rel:\"noopener noreferrer\",children:(0,h.jsx)(z,{className:\"ob-product-management__app-img\",image:null==(te=Xe.downloadOnAppStore)||null==(re=te.fields)?void 0:re.image})})}),(0,h.jsx)(\"li\",{children:(0,h.jsx)(\"a\",{className:\"ob-product-management__app-link\",href:null==(ne=Xe.downloadOnPlayStore)||null==(ae=ne.fields)?void 0:ae.url,target:\"_blank\",rel:\"noopener noreferrer\",children:(0,h.jsx)(z,{className:\"ob-product-management__app-img\",image:null==(le=Xe.downloadOnPlayStore)||null==(oe=le.fields)?void 0:oe.image})})})]})]}),(0,h.jsx)(B(),{isOpen:je,onRequestClose:Qe,closeTimeoutMS:fe,style:pe,htmlOpenClassName:\"ob-profile__modal-overlay\",children:(0,h.jsxs)(\"div\",{className:\"ob-profile__modal-container\",children:[(0,h.jsxs)(\"div\",{children:[(0,h.jsx)(\"p\",{className:\"ob-profile__modal-title\",children:Le?(0,h.jsx)(J,{label:Xe.deleteProductModalTitle,tokens:{productName:null==we?void 0:we.title}}):(0,h.jsx)(J,{label:Xe.productManagementModalTitle,tokens:{productName:null==we?void 0:we.title}})}),!Le&&(null==Se||null==(ie=Se.cmsProductInfo)?void 0:ie.title)&&(0,h.jsx)(\"p\",{className:\"ob-profile__modal-subtitle\",children:(0,h.jsx)(J,{label:Xe.productManagementModalSubtitle,tokens:{productName:null==Se||null==(se=Se.cmsProductInfo)?void 0:se.title}})})]}),(0,h.jsxs)(\"div\",{children:[(0,h.jsx)($,{className:\"ob-profile__modal-confirm-btn\",size:\"large-long\",onClick:Le?function(){Be(!0);var e=(0,D.Cp)((0,W.n_)()),t=(0,S.OQ)(e.traitProductType,we.id,we.orderProductId),r=(0,S.tC)(de,we.id,we.orderProductId);t.forEach((function(e){delete e.id}));var n=(0,G.ll)(e);if(n.traitProductType=t,null==we?void 0:we.isPrimary)if(Array.isArray(r)&&r.length>0){var a=F.X.janrinProfileOldestProductIndex,l=r[a],o=l.productId;n.primaryProduct=o+\"_\"+l.purchaseDate;var i={traitValue:null,productTypeCode:l.typeCode};n.traitPrimaryBrush=i,(0,U.O3)(l,e,!0,!1),r[a].isPrimary=!0}else n.primaryProduct=\"\",n.traitPrimaryBrush={};(0,U.O3)(we,e,!1,!0,G.Es,(function(){}),n,(function(){Be(!1)})),me(r)}:function(){Be(!0);var e=(0,D.Cp)((0,W.n_)()),t=(0,G.ll)(e),r=we.productId;t.primaryProduct=r+\"_\"+we.purchaseDate;var n={traitValue:null,productTypeCode:we.typeCode};t.traitPrimaryBrush=n;(0,U.O3)(we,e,!0,!1,G.Es,(function(){}),t,(function(){Be(!1)}));for(var a=[],l=!1,o=0;o-1?e.productId!==n:e.productId!==t}))},s=function(e,t,r){return e.filter((function(e){return e.id!==t||e.orderProductId!==r}))}},63215:function(e,t,r){r.d(t,{Q:function(){return n},z:function(){return a}});var n=function(e){var t=null==e?void 0:e.traitBenefitPreferences,r=[];return t&&t.forEach((function(e){var t=null==e?void 0:e.traitValue;t&&r.push(t)})),r},a=function(e){var t=new Date;return e.getDate()==t.getDate()&&e.getMonth()==t.getMonth()&&e.getFullYear()==t.getFullYear()}},80811:function(e,t,r){r.r(t),r.d(t,{Markdown:function(){return c},default:function(){return p}});r(67294);var n=r(30724),a=r.n(n),l=r(40483),o=r(17031),i=r.n(o),s=r(24036),d=r(85893),u=[i()({isValidNode:function(e){return e.type!==s.$6.script},processingInstructions:[]})];function c(e){var t=e.source,r=e.className;return(0,d.jsx)(a(),{source:t,className:r,escapeHtml:!1,astPlugins:u})}function p(e){var t,r=new l.Z(e),n=r.getDocument(),o=null==n||null==(t=n.fields)?void 0:t.classNames,i=null;o&&o.indexOf(\"aria-hidden\")>=0&&(i=!0);var c=e.isSpan?\"span\":\"div\";return(null==n?void 0:n.fields)?(0,d.jsx)(c,{className:o,\"aria-hidden\":i,children:(0,d.jsx)(a(),{source:r.getFieldValue(s.$6.text),escapeHtml:!1,astPlugins:u})}):(0,d.jsx)(c,{className:e.className,\"aria-hidden\":i,children:(0,d.jsx)(a(),{source:e.value,escapeHtml:!1,astPlugins:u})})}}}]);"],"names":["self","webpackChunk_N_E","push","e","t","r","n","ZP","buildContentfullImageUrl","buildContentfullImageUrlByHeight","arguments","length","buildContentfullImageUrlByWidth","imageContentfullDpr","imageContentfullSrc","d","HP","I","KG","P","NR","A","O3","C","Yu","j","c1","O","tj","T","yS","N","a","l","o","i","s","u","c","p","f","m","Headers","append","X","contentType","json","accessToken","env","WARRANTY_API_ACCESS_TOKEN","h","toString","startsWith","v","WARRANTY_API_BASE_URL","WARRANTY_API_VERSION","warrantyExtensionPath","programIdParam","WARRANTY_API_PROGRAM_ID","localeParam","WARRANTY_API_LOCALE","_","getConsumerPath","g","getProductsByTypeCodePath","x","getCampaignInfoMaster","y","getproductListBySeries","mark","wrap","prev","next","sType","Number","method","headers","body","Zl","fetch","then","sent","abrupt","t0","catch","console","error","message","stop","apply","lstInternSubGroup","lstSeries","w","program","programId","parseInt","locale","sourceSystemId","WARRANTY_API_SOURCE_SYSTEM_ID","consumer","address","productOrder","product","productId","productCode","primary","typeCode","productPurchased","longDescription","productQuantity","productName","dateOfPurchase","l$","purchaseDate","productImageUrl","mainAsset","secondary","traitProductType","isPrimary","uuid","UUID","consumerId","consumerID","oneCPId","countryId","addressTypeCode","Array","isArray","programCountriesForAddress","filter","countryCode","gCSProductId","orderId","id","isDelete","orderProductId","code","fields","assetId","asset","file","url","H","email","parameters","name","value","givenName","title","traitDate","registrationDate","warrantyExpirationDate","campaignId","templateType","WARRANTY_API_EMAIL_TEMPLATE_TYPE","system","WARRANTY_API_EMAIL_SYSTEM","WARRANTY_API_EMAIL_NOTIFICATION_ACCESS_TOKEN","WARRANTY_API_EMAIL_NOTIFICATION_URL","log","finally","statusCode","ConsumerId","janrain","user","emailAddress","firstName","WARRANTY_API_EMAIL_NOTIFICATION_GWE_URL","F","formName","editFormName","type","text","date","field","selectProductType","reminderToReplace","traitValue","imageUrl","registerProductsID","primaryProduct","Object","keys","getOwnPropertySymbols","getOwnPropertyDescriptor","enumerable","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","formErrorResponse","isInvalidForm","Z","useState","useEffect","indexOf","splice","oralCareGoals","janrainLabels","setGoalsData","setReminderData","currentGoals","className","currentTarget","getAttribute","checked","includes","jsxs","children","jsx","map","I0","label","onChange","isSquared","isBold","reminderToReplaceLabel","target","defaultProps","default","inputType","toolTipText","validationErrorText","placeholder","halfWidth","quarterWidth","required","ariaDescribedBy","b","onBlur","disabled","document","createElement","setAttribute","htmlFor","concat","autoComplete","onClick","viewBox","dangerouslySetInnerHTML","__html","sanitize","dataArray","selectLabel","isHalfWidth","ariaLabel","hasInitialValue","JI","ce","lr","je","Oi","E","yt","ih","UN","te","Mm","bC","Pe","light","border","background","dark","withConfig","displayName","componentId","variant","span","F4","buttonText","isSubmitting","Fragment","ariaFormIsSubmitting","isWhite","isSmall","errorMessage","isRequired","div","input","D","S","R","k","L","M","Promise","resolve","bind","loadableGenerated","webpack","Y","B","W","G","U","V","q","z","$","K","Q","J","ee","re","ne","ae","le","oe","ie","se","de","oralbProductList","ue","profileProductManagementTab","commonLabels","pe","customStyles","fe","closeModalTimeoutMS","me","setOralbProductList","he","isGCSAPIDown","be","ve","_e","ge","xe","ye","Ne","Ae","Ce","Ie","Oe","we","Te","De","Se","Re","ke","Le","Me","Ee","Ye","Be","Fe","useRef","We","Ge","viewWarrantyLink","Ue","registeredProductLimit","He","dummyImage","Xe","profileIntroText","productManagementText","primaryButtonLabel","makePrimaryButtonLabel","deleteLabel","delete","registeredOn","registerProductLinkGwe","tryTheAppTitle","tryTheAppText","downloadOnAppStore","downloadOnPlayStore","productManagementModalTitle","deleteProductModalTitle","productManagementModalSubtitle","productManagementModalConfirm","registeredProductLimitLabel","gcsDownErrorMessage","previousLabel","nextLabel","Ve","size","qe","window","current","offsetWidth","getComputedStyle","marginLeft","marginRight","Math","ceil","round","addEventListener","removeEventListener","nK","find","querySelector","setAppElement","Ke","a9","Qe","Ze","useCallback","scrollLeft","clientWidth","floor","max","min","ze","scrollTo","left","behavior","$e","dataset","index","controlButton","classList","contains","pageYOffset","setTimeout","Je","preventDefault","Cp","custom","onScroll","ref","src","alt","textTheme","tag","href","pagePath","slug","borderThemeBlue","dataCustom","rotate","count","color","QB","rel","image","isOpen","onRequestClose","closeTimeoutMS","style","htmlOpenClassName","tokens","cmsProductInfo","n_","OQ","tC","ll","janrinProfileOldestProductIndex","productTypeCode","traitPrimaryBrush","Es","modalCancelButton","radio","hidden","phone","lastName","addressPostalCode","dateOfBirth","addressCountry","birthdate","dateselect_month","dateselect_year","dateselect_day","traitBenefitPreferences","traitBrushHeadReminderOptInFlag","profileStore","errors","form","userData","profileEditTab","janrainErrors","formValidated","optIns","gT","optinIdx","optStatus","postalCodeValidationRegex","pattern","secondPattern","minimumAge","allFieldsRequiredLabel","whyWeAskForDateOfBirth","whyWeAskForDateOfBirthLegal","registerDateOfBirthPlaceholder","dateValidationRegex","monthSelectLabel","yearSelectLabel","postCode","country","changePasswordLink","emailDisclaimer","profileEmailAccountDisclaimer","test","Date","clear","errorTexts","rehydrateForProfileForm","Ms","vk","validation","fn","countries","Cv","optins","AO","events","onCaptureSaveSuccess","addHandler","onCaptureSaveFailed","capture","ui","postCaptureForm","fieldChange","dateOfBirthLabel","arrMonths","nameMonth","monthLabel","valueMonth","onChangeMonth","errorMonth","arrYear","nameYear","yearLabel","valueYear","onChangeYear","errorYear","saveLabel","editModalSaveChangesTitle","editModalSuccess","closeModal","saveChangesLabel","Ui","profileBenefitPreferencesTab","isMedium","traitBrushheadReminderDate","split","JANRAIN_CAPTURE_LOCALE","ep","brushHeadAgeList","yourPreferenceTitle","yourPreferenceText","replaceBrushHeadTitle","replaceBrushHeadText","resetReminder","myBenefitPreferencesTitle","myBenefitPreferencesSubtitle","onLabel","offLabel","setDate","getDate","BF","activeLabel","inactiveLabel","RemindYouToReplace","replacementDate","toLocaleString","month","day","toUpperCase","radioLabel","topOralCareGoals","toISOString","traitLastUpdated","traitLastUpdatedClientId","JANRAIN_CAPTURE_CIENT_ID","y7","productGasImageUrl","warrantyExtendedDate","getFullYear","getMonth","warrantyExpirationDateInText","year","timeStamp","toUTCString","janrinProductIdDelimiter","Markdown","isValidNode","$6","script","processingInstructions","source","escapeHtml","astPlugins","getDocument","classNames","isSpan","getFieldValue"],"sourceRoot":""}