{"version":3,"sources":["components/NewsletterFormModalPopup/index.tsx","helper/withErrorCatch.tsx","../node_modules/react-use/esm/misc/util.js","../node_modules/@sitecore-jss/sitecore-jss-react/dist/esm/components/RichText.js","../node_modules/react-use/esm/useEffectOnce.js","../node_modules/react-use/esm/useUnmount.js","../node_modules/react-use/esm/useRafState.js","components/@UI/Checkbox/CheckBox.tsx","../node_modules/react-use/esm/useWindowSize.js","components/@shared/ConsentModal/ConsentModal.tsx","components/@shared/ConsentModal/useConsentUtilities.ts"],"names":["withErrorCatch","fields","id","className","origin","Component","hocProps","error","console","log","stack","noop","on","obj","args","_i","arguments","length","addEventListener","apply","off","removeEventListener","isBrowser","window","__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","propertyIsEnumerable","RichText","forwardRef","_a","ref","field","tag","editable","otherProps","value","htmlProps","assign","dangerouslySetInnerHTML","__html","React","createElement","RichTextPropTypes","PropTypes","shape","string","bool","propTypes","defaultProps","displayName","useEffectOnce","effect","useEffect","useUnmount","fn","fnRef","useRef","current","useRafState","initialState","frame","useState","state","setState","setRafState","useCallback","cancelAnimationFrame","requestAnimationFrame","CheckBox","memo","children","onChange","checked","labelMargin","cirle","disabled","classes","style","cursor","type","name","marginLeft","useWindowSize","initialWidth","initialHeight","Infinity","width","innerWidth","height","innerHeight","handler_1","ConsentModal","policies","cancel_button","submit_button","version","consentState","setConsentState","invalidOptions","setInvalidOptions","setInitialValues","newConsentState","forEach","pol","defaultOnCloseBehaviour","convertToPascalCase","slice","toUpperCase","handleCloseModal","revert","document","getElementById","classList","remove","setTimeout","revertButton","getElementsByClassName","HTMLButtonElement","click","HTMLDivElement","firstChild","getStringifiedConsent","keys","stringValue","key","idx","setInputValue","el","getOwnPropertyDescriptor","HTMLInputElement","set","dispatchEvent","Event","bubbles","fieldsetToInput","fieldsetClass","getElementsByTagName","validateForm","newInvalidOptions","required","push","useConsentUtilities","handleConsentChange","target","prevValue","startsWith","handleSubmit","submitButton","isInvalid","includes","onClick","map","undefined","description","accept_label","deny_label"],"mappings":"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","file":"static/js/NewsletterFormModalPopup.b07bf6fc.chunk.js","sourcesContent":["import React, { FunctionComponent } from 'react';\r\nimport { FormModalPopupFields } from '../@shared/ConsentModal/types/ConsentModal.types';\r\nimport './NewsletterFormModalPopup.scss';\r\nimport withErrorCatch from '../../helper/withErrorCatch'\r\n\r\nimport ConsentModal from '../@shared/ConsentModal/ConsentModal';\r\n\r\nconst NewsletterFormModalPopup: FunctionComponent<{\r\n fields: FormModalPopupFields;\r\n}> = ({ fields }) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default withErrorCatch(NewsletterFormModalPopup);\r\n","import React, { ComponentType } from \"react\";\r\n\r\nfunction withErrorCatch(Component: ComponentType) {\r\n return (hocProps: any) => {\r\n try {\r\n if (!hocProps) return <>;\r\n if (!hocProps?.fields) return <>;\r\n return ;\r\n } catch (error) {\r\n console.log((error as Error)?.stack);\r\n return <>;\r\n }\r\n };\r\n}\r\n\r\nexport default withErrorCatch;\r\n","export var noop = function () { };\nexport function on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexport function off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nexport const RichText = forwardRef((_a, ref) => {\n var { field, tag, editable } = _a, otherProps = __rest(_a, [\"field\", \"tag\", \"editable\"]);\n if (!field || (!field.editable && !field.value)) {\n return null;\n }\n const htmlProps = Object.assign({ dangerouslySetInnerHTML: {\n __html: field.editable && editable ? field.editable : field.value,\n }, ref }, otherProps);\n return React.createElement(tag || 'div', htmlProps);\n});\nexport const RichTextPropTypes = {\n field: PropTypes.shape({\n value: PropTypes.string,\n editable: PropTypes.string,\n }),\n tag: PropTypes.string,\n editable: PropTypes.bool,\n};\nRichText.propTypes = RichTextPropTypes;\nRichText.defaultProps = {\n tag: 'div',\n editable: true,\n};\nRichText.displayName = 'RichText';\n","import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n useEffect(effect, []);\n};\nexport default useEffectOnce;\n","import { useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmount = function (fn) {\n var fnRef = useRef(fn);\n // update the ref each render so if it change the newest callback will be invoked\n fnRef.current = fn;\n useEffectOnce(function () { return function () { return fnRef.current(); }; });\n};\nexport default useUnmount;\n","import { useCallback, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useRafState = function (initialState) {\n var frame = useRef(0);\n var _a = useState(initialState), state = _a[0], setState = _a[1];\n var setRafState = useCallback(function (value) {\n cancelAnimationFrame(frame.current);\n frame.current = requestAnimationFrame(function () {\n setState(value);\n });\n }, []);\n useUnmount(function () {\n cancelAnimationFrame(frame.current);\n });\n return [state, setRafState];\n};\nexport default useRafState;\n","import React, { ChangeEvent, FunctionComponent, memo } from 'react';\r\nimport './CheckBox.scss';\r\n\r\ninterface CheckBoxProps {\r\n value?: string;\r\n onChange?: (e: ChangeEvent) => void;\r\n checked?: boolean;\r\n labelMargin?: string;\r\n cirle?: boolean;\r\n disabled?: boolean;\r\n classes?: string;\r\n}\r\n\r\nconst CheckBox: FunctionComponent = memo(\r\n ({\r\n children,\r\n value,\r\n onChange = () => {},\r\n checked,\r\n labelMargin = '12.2px',\r\n cirle = false,\r\n disabled = false,\r\n classes = '',\r\n }) => (\r\n \r\n {\r\n if (disabled) return;\r\n onChange(e);\r\n }}\r\n checked={checked}\r\n className={classes ? classes : ''}\r\n />\r\n
{children}
\r\n \r\n )\r\n);\r\n\r\nexport default CheckBox;\r\n","import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { isBrowser, off, on } from './misc/util';\nvar useWindowSize = function (initialWidth, initialHeight) {\n if (initialWidth === void 0) { initialWidth = Infinity; }\n if (initialHeight === void 0) { initialHeight = Infinity; }\n var _a = useRafState({\n width: isBrowser ? window.innerWidth : initialWidth,\n height: isBrowser ? window.innerHeight : initialHeight,\n }), state = _a[0], setState = _a[1];\n useEffect(function () {\n if (isBrowser) {\n var handler_1 = function () {\n setState({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n on(window, 'resize', handler_1);\n return function () {\n off(window, 'resize', handler_1);\n };\n }\n }, []);\n return state;\n};\nexport default useWindowSize;\n","import React, {\r\n ChangeEvent,\r\n FunctionComponent,\r\n useCallback,\r\n useEffect,\r\n useState,\r\n} from 'react';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-react';\r\nimport { useWindowSize } from 'react-use';\r\nimport { useConsentUtilities } from './useConsentUtilities';\r\nimport { FormModalPopupFields, policy } from './types/ConsentModal.types';\r\nimport './ConsentModal.scss';\r\n\r\nimport CheckBox from '../../@UI/Checkbox/CheckBox';\r\n\r\nconst ConsentModal: FunctionComponent = ({\r\n policies,\r\n cancel_button,\r\n submit_button,\r\n version,\r\n origin,\r\n}) => {\r\n if (!policies) return <>;\r\n\r\n const { height } = useWindowSize();\r\n\r\n const [consentState, setConsentState] = useState<{\r\n [type: string]: boolean | null;\r\n }>({});\r\n const [invalidOptions, setInvalidOptions] = useState([]);\r\n\r\n const setInitialValues = useCallback(() => {\r\n if (!policies || policies?.length === 0) return;\r\n let newConsentState = {};\r\n policies.forEach((pol) => {\r\n newConsentState[pol.name] = null;\r\n });\r\n setConsentState(newConsentState);\r\n }, []);\r\n\r\n useEffect(() => {\r\n setInitialValues();\r\n }, [policies]);\r\n\r\n const {\r\n handleCloseModal,\r\n getStringifiedConsent,\r\n setInputValue,\r\n fieldsetToInput,\r\n validateForm,\r\n } = useConsentUtilities({\r\n defaultOnCloseBehaviour: () => {\r\n setInitialValues();\r\n setInvalidOptions([]);\r\n },\r\n origin,\r\n });\r\n\r\n const handleConsentChange: (e: ChangeEvent) => void =\r\n useCallback(({ target: { value, type } }) => {\r\n if (type === 'checkbox') {\r\n setConsentState((prevValue) => ({\r\n ...prevValue,\r\n [value]: !prevValue[value],\r\n }));\r\n } else if (type === 'radio') {\r\n if (value.startsWith('!')) {\r\n setConsentState((prevValue) => ({\r\n ...prevValue,\r\n [value.slice(1)]: false,\r\n }));\r\n } else {\r\n setConsentState((prevValue) => ({\r\n ...prevValue,\r\n [value]: true,\r\n }));\r\n }\r\n }\r\n }, []);\r\n\r\n const handleSubmit = useCallback(() => {\r\n const newInvalidOptions = validateForm(policies, consentState);\r\n\r\n if (newInvalidOptions.length > 0) {\r\n setInvalidOptions(newInvalidOptions);\r\n } else {\r\n setInputValue(\r\n fieldsetToInput(`${origin}_consent_db_values`),\r\n getStringifiedConsent(consentState)\r\n );\r\n\r\n setInputValue(fieldsetToInput(`${origin}_consent_db_version`), version);\r\n\r\n setTimeout(() => {\r\n if(typeof document != 'undefined') {\r\n const submitButton = document.getElementsByClassName(\r\n `${origin}_form_submit`\r\n )[0];\r\n if (submitButton instanceof HTMLButtonElement) {\r\n submitButton.click();\r\n } else {\r\n submitButton.getElementsByTagName('button')[0].click();\r\n }\r\n }\r\n }, 200);\r\n setTimeout(() => {\r\n handleCloseModal(false);\r\n }, 300);\r\n }\r\n }, [consentState, policies]);\r\n\r\n const isInvalid: (pol: policy) => boolean = useCallback(\r\n (pol) => invalidOptions.includes(pol.name),\r\n [invalidOptions]\r\n );\r\n\r\n return (\r\n
\r\n
\r\n
\r\n handleCloseModal()}\r\n className=\"icon icon-close\"\r\n />\r\n
\r\n\r\n
\r\n
\r\n\r\n {policies.map((pol, idx) =>\r\n pol.type === 'checkbox' ? (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n
\r\n
\r\n \r\n \r\n {pol.accept_label}\r\n \r\n
\r\n \r\n \r\n {pol.deny_label}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n )}\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ConsentModal;\r\n","import { useCallback } from 'react';\r\nimport { policy } from './types/ConsentModal.types';\r\n\r\nexport const useConsentUtilities: (options?: {\r\n defaultOnCloseBehaviour?: () => void;\r\n origin?: string;\r\n}) => {\r\n handleCloseModal: (revert?: boolean) => void;\r\n getStringifiedConsent: (consentState: { [type: string]: boolean }) => string;\r\n setInputValue: (el: HTMLInputElement, value: string) => void;\r\n fieldsetToInput: (fieldsetClass: string) => HTMLInputElement;\r\n validateForm: (\r\n policies: policy[],\r\n consentState: {\r\n [type: string]: boolean;\r\n }\r\n ) => string[];\r\n} = ({ defaultOnCloseBehaviour = () => {}, origin }) => {\r\n const convertToPascalCase: (value: string) => string = useCallback(\r\n (value) => `${value.slice(0, 1).toUpperCase()}${value.slice(1)}`,\r\n []\r\n );\r\n\r\n const handleCloseModal: (revert?: boolean) => void = useCallback(\r\n (revert = true) => {\r\n if(typeof document != 'undefined') {\r\n document\r\n .getElementById(`${convertToPascalCase(origin)}FormModalPopup`)\r\n .classList.remove(\r\n `${convertToPascalCase(origin)}FormModalPopup--visible`\r\n );\r\n defaultOnCloseBehaviour();\r\n if (revert) {\r\n setTimeout(() => {\r\n if(typeof document != 'undefined') {\r\n const revertButton = document.getElementsByClassName(\r\n `${origin}_form_previous`\r\n )[0];\r\n\r\n if (revertButton instanceof HTMLButtonElement) revertButton.click();\r\n else if (revertButton instanceof HTMLDivElement) {\r\n (revertButton.firstChild as HTMLButtonElement).click();\r\n }\r\n }\r\n }, 10);\r\n }\r\n }\r\n },\r\n [defaultOnCloseBehaviour, origin]\r\n );\r\n\r\n const getStringifiedConsent: (consentState: {\r\n [type: string]: boolean;\r\n }) => string = useCallback((consentState) => {\r\n const keys = Object.keys(consentState);\r\n if (keys?.length === 0) return '';\r\n\r\n let stringValue = '';\r\n keys.forEach((key, idx) => {\r\n stringValue =\r\n stringValue + `${idx ? '|' : ''}${idx},${consentState[key]}`;\r\n });\r\n return stringValue;\r\n }, []);\r\n\r\n const setInputValue: (el: HTMLInputElement, value: string) => void =\r\n useCallback((el, value) => {\r\n Object.getOwnPropertyDescriptor(\r\n window.HTMLInputElement.prototype,\r\n 'value'\r\n ).set.call(el, value);\r\n el.dispatchEvent(new Event('input', { bubbles: true }));\r\n }, []);\r\n\r\n const fieldsetToInput: (fieldsetClass: string) => HTMLInputElement =\r\n useCallback((fieldsetClass) => {\r\n return document\r\n .getElementsByClassName(fieldsetClass)[0]\r\n ?.getElementsByTagName('input')[0];\r\n }, []);\r\n\r\n const validateForm: (\r\n policies: policy[],\r\n consentState: {\r\n [type: string]: boolean;\r\n }\r\n ) => string[] = useCallback((policies, consentState) => {\r\n let newInvalidOptions = [];\r\n policies.forEach((pol) => {\r\n if (pol.type === 'checkbox') {\r\n if (pol.required && !consentState[pol.name]) {\r\n newInvalidOptions.push(pol.name);\r\n }\r\n } else {\r\n if (\r\n (pol.required && !consentState[pol.name]) ||\r\n consentState[pol.name] === null\r\n ) {\r\n newInvalidOptions.push(pol.name);\r\n }\r\n }\r\n });\r\n\r\n return newInvalidOptions;\r\n }, []);\r\n\r\n return {\r\n handleCloseModal,\r\n getStringifiedConsent,\r\n setInputValue,\r\n fieldsetToInput,\r\n validateForm,\r\n };\r\n};\r\n"],"sourceRoot":""}