{"version":3,"file":"6096.0d9635373b11b35155f8.js","mappings":"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","sources":["webpack://gyldendal-uddannelse/./src/Foundation/Frontend/siteConfig.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/RecaptchaField/recaptcha-field.tsx","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/AnimationComponents/slide-vertical-animation.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/ReduxFormInputs/index.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/ReduxFormInputs/text-field.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/ReduxFormInputs/textarea-field.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactReducers/ContactForm/contact-form-composer.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Contact/contact-form.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Contact/contact.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactViews/Contact/contact-view.js"],"sourcesContent":["const defaultConfig = {\r\n recaptchaSiteKey: \"6LeQT4IUAAAAABNJT-BGkSNQgkUlf8etAxjuE-fM\"\r\n};\r\n\r\nconst config = defaultConfig;\r\n\r\nexport default config;\r\n","import React, { Component, forwardRef, Suspense, useEffect, useState } from \"react\";\r\nimport { ReCAPTCHA as ReCAPTCHAInstance } from \"react-google-recaptcha\";\r\nimport { Field } from \"redux-form\";\r\nimport config from \"../../../siteConfig\";\r\nimport { errorMessage } from \"../ReduxFormInputs\";\r\n\r\nconst ReCAPTCHA = React.lazy(() => import(\"react-google-recaptcha\"));\r\n\r\ninterface RecaptchaFieldState {\r\n didMount: boolean;\r\n isRecaptchaValid: boolean;\r\n}\r\n\r\nclass RecaptchaField extends Component<unknown, RecaptchaFieldState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n didMount: false,\r\n isRecaptchaValid: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ didMount: true });\r\n }\r\n\r\n verifyReCaptchaCallback(response: boolean) {\r\n return new Promise(resolve => {\r\n this.setState({\r\n isRecaptchaValid: !!response\r\n });\r\n\r\n resolve(response);\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n {this.state.didMount && (\r\n <Suspense fallback={<span>Loading...</span>}>\r\n <ReCAPTCHA\r\n sitekey={config.recaptchaSiteKey}\r\n hl=\"da\"\r\n onChange={response =>\r\n this.verifyReCaptchaCallback(response as unknown as boolean)\r\n }\r\n />\r\n </Suspense>\r\n )}\r\n {!this.state.isRecaptchaValid && <Field name=\"CaptchaResponse\" component={errorMessage} />}\r\n </div>\r\n );\r\n }\r\n}\r\ninterface RecaptchaFieldBasicProps {\r\n error: string | undefined;\r\n}\r\n\r\nexport const RecaptchaFieldBasic = forwardRef<ReCAPTCHAInstance, RecaptchaFieldBasicProps>((props, ref) => {\r\n const [didMount, setDidMount] = useState(false);\r\n const [isRecaptchaValid, setIsRecaptchaValid] = useState(false);\r\n\r\n useEffect(() => {\r\n setDidMount(true);\r\n }, []);\r\n\r\n const verifyReCaptchaCallback = (response: any) => {\r\n return new Promise(resolve => {\r\n setIsRecaptchaValid(!!response);\r\n resolve(response);\r\n });\r\n };\r\n\r\n /*\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n didMount: false,\r\n isRecaptchaValid: false\r\n };\r\n }\r\n\r\n\r\n\r\n componentDidMount() {\r\n this.setState({ didMount: true });\r\n }\r\n\r\n\r\n verifyReCaptchaCallback(response) {\r\n return new Promise(resolve => {\r\n this.setState({\r\n isRecaptchaValid: !!response\r\n });\r\n\r\n resolve();\r\n });\r\n }\r\n */\r\n\r\n return (\r\n <div className=\"recaptcha-field\">\r\n {didMount && (\r\n <Suspense fallback={<span>Loading...</span>}>\r\n <ReCAPTCHA\r\n ref={ref}\r\n sitekey={config.recaptchaSiteKey}\r\n hl=\"da\"\r\n onChange={response => verifyReCaptchaCallback(response)}\r\n />\r\n </Suspense>\r\n )}\r\n {/* {!isRecaptchaValid && <Field name=\"CaptchaResponse\" component={errorMessage} />} */}\r\n {!isRecaptchaValid && props.error && (\r\n <span className=\"input-field__error-message\">{props.error}</span>\r\n )}\r\n </div>\r\n );\r\n});\r\n\r\nexport default RecaptchaField;\r\n","// @ts-check\r\nimport AnimateHeight from \"react-animate-height\";\r\nimport React from \"react\";\r\n\r\n/**\r\n * @component\r\n * @param {object} props\r\n * @param {boolean} props.visible visible or not\r\n * @param {number} [props.delayIn] seconds to delay animating in\r\n * @param {number} [props.delayOut] seconds to delay animating in\r\n * @param {number} [props.delay] seconds to delay animating in\r\n * @param {boolean} [props.fade] should the content fade while animating height\r\n * @param {React.ReactNode} props.children React children\r\n *\r\n */\r\nfunction SlideVerticalAnimation(props) {\r\n const height = props.visible ? \"auto\" : 0;\r\n const delay =\r\n props.visible && props.delayIn\r\n ? props.delayIn\r\n : !props.visible && props.delayOut\r\n ? props.delayOut\r\n : props.delay || 0;\r\n\r\n return (\r\n <AnimateHeight duration={250} height={height} delay={delay} animateOpacity={props.fade}>\r\n {props.children}\r\n </AnimateHeight>\r\n );\r\n}\r\n\r\nexport default SlideVerticalAnimation;\r\n","import * as React from \"react\";\r\n\r\nexport const errorMessage = field => {\r\n const { meta } = field;\r\n return (\r\n <div style={{ position: \"relative\" }}>\r\n {meta.error && meta.touched && <span className=\"field-error\">{meta.error}</span>}\r\n </div>\r\n );\r\n};\r\n\r\nexport const submitFailureGotoErrors = function submitFailureGotoErrors(errorFieldList) {\r\n if (global.canUseDOM) {\r\n const fields = [];\r\n for (const key in errorFieldList) {\r\n if (errorFieldList[key]) {\r\n fields.push(key);\r\n }\r\n }\r\n\r\n const input = document.querySelector(`[name=\"${fields[0]}\"]`);\r\n if (input) {\r\n window.scrollTo({ top: input.offsetTop, behavior: \"smooth\" });\r\n }\r\n }\r\n};\r\n\r\nexport const validateEmail = value => {\r\n const re =\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(value);\r\n};\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport const TextField = field => {\r\n const { error, touched } = field.meta;\r\n\r\n const inputClasses = classNames({\r\n \"text-input__input\": true,\r\n dirty: field.input.value,\r\n invalid: error && touched\r\n });\r\n\r\n return (\r\n <div className=\"text-input\">\r\n <input\r\n {...field.input}\r\n className={inputClasses}\r\n id={field.input.name}\r\n type={field.type || \"text\"}\r\n onFocus={field.onFocus}\r\n onBlur={field.onBlur}\r\n maxLength={field.maxLength}\r\n required={field.required}\r\n />\r\n <label htmlFor={field.input.name} className=\"text-input__label\">\r\n {field.label} {field.required && <span className=\"required-star\">*</span>}\r\n </label>\r\n {error && touched && <span className=\"text-input__error-msg\">{error}</span>}\r\n </div>\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport const TextareaField = field => {\r\n const { error, touched } = field.meta;\r\n const inputClasses = classNames({\r\n dirty: field.input.value,\r\n invalid: error && touched\r\n });\r\n\r\n return (\r\n <div className=\"textarea-field\">\r\n <textarea\r\n {...field.input}\r\n id={field.input.name}\r\n className={inputClasses}\r\n onFocus={field.onFocus}\r\n onBlur={field.onBlur}\r\n required={field.required}\r\n ></textarea>\r\n <label htmlFor={field.input.name} className=\"text-input__label\">\r\n {field.label} {field.required && <span className=\"required-star\">*</span>}\r\n </label>\r\n {error && touched && <span className=\"field-error\">{error}</span>}\r\n </div>\r\n );\r\n};\r\n","import { connect } from \"react-redux\";\r\nimport { contactFormSelector, contactFormActions } from \"./contact-form-reducer\";\r\n\r\nexport function contactFormComposer(Component) {\r\n const mapStateToProps = function (state) {\r\n return {\r\n contactFormSubmitPending: contactFormSelector.contactFormSubmitPending(state),\r\n contactFormSubmitSuccess: contactFormSelector.contactFormSubmitSuccess(state)\r\n };\r\n };\r\n\r\n const mapDispatchToProps = function (dispatch) {\r\n return {\r\n contactFormSubmit: (webApiUrl, formInfo, resolve, reject) =>\r\n dispatch(contactFormActions.contactFormSubmit(webApiUrl, formInfo, resolve, reject))\r\n };\r\n };\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(Component);\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Field, reduxForm } from \"redux-form\";\r\nimport RecaptchaField from \"../Shared/RecaptchaField/recaptcha-field\";\r\nimport { TextField } from \"../Shared/ReduxFormInputs/text-field\";\r\nimport { TextareaField } from \"../Shared/ReduxFormInputs/textarea-field\";\r\n\r\nclass ContactForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { submitting } = this.props;\r\n\r\n return (\r\n <div>\r\n <form onSubmit={this.props.handleSubmit}>\r\n <h3>{this.props.FormTitleText}</h3>\r\n <Field name=\"ItemId\" component=\"input\" type=\"hidden\" />\r\n <Field name=\"NameTextBox\" component={TextField} label={this.props.NameText} required />\r\n <Field name=\"MailTextBox\" component={TextField} label={this.props.EmailText} required />\r\n <Field\r\n name=\"PhoneNumberTextBox\"\r\n component={TextField}\r\n label={this.props.PhoneNumberText}\r\n />\r\n <Field name=\"SubjectTextBox\" component={TextField} label={this.props.SubjectText} />\r\n <Field\r\n name=\"DescriptionTextBox\"\r\n component={TextareaField}\r\n label={this.props.FormDescriptionText}\r\n required\r\n />\r\n <RecaptchaField />\r\n <br />\r\n <p>\r\n <button className=\"footer-widget__button\" type=\"submit\" disabled={submitting}>\r\n {submitting ? (\r\n <span className=\"loader button-is-loading\">\r\n <span></span>\r\n </span>\r\n ) : (\r\n <span>{this.props.SubmitButtonText}</span>\r\n )}\r\n </button>\r\n </p>\r\n </form>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default reduxForm({\r\n form: \"contactForm\"\r\n})(ContactForm);\r\n","import React, { Component } from \"react\";\r\nimport { SubmissionError } from \"redux-form\";\r\nimport { contactFormComposer } from \"ReactReducers/ContactForm/contact-form-composer\";\r\nimport ContactForm from \"./contact-form\";\r\nimport SliderVerticalAnimation from \"ReactComponents/Shared/AnimationComponents/slide-vertical-animation\";\r\n\r\nclass Contact extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n handleSubmit(data) {\r\n const contactData = Object.assign({}, data);\r\n\r\n const recaptchaResponse = window.grecaptcha.getResponse();\r\n contactData.CaptchaResponse = recaptchaResponse;\r\n\r\n //return promise that is resolves/rejected in saga\r\n return new Promise((resolve, reject) => {\r\n const webApiUrl = this.props.WebApiUrl;\r\n this.props.contactFormSubmit(webApiUrl, contactData, resolve, reject);\r\n }).then(response => {\r\n if (!response.Success) {\r\n throw new SubmissionError(response.Payload);\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n const initValues = {\r\n ItemId: this.props.ItemId,\r\n NameTextBox: this.props.NameTextBox,\r\n MailTextBox: this.props.MailTextBox,\r\n PhoneNumberTextBox: this.props.PhoneNumberTextBox,\r\n SubjectTextBox: this.props.SubjectTextBox,\r\n DescriptionTextBox: this.props.DescriptionTextBox\r\n };\r\n\r\n return (\r\n <div>\r\n <div className=\"content-row content-row--push-bottom\">\r\n <h1\r\n className=\"content-header\"\r\n dangerouslySetInnerHTML={{ __html: this.props.TitleText }}\r\n />\r\n <div dangerouslySetInnerHTML={{ __html: this.props.DescriptionText }} />\r\n </div>\r\n\r\n <div className=\"content-row content-row--push-bottom\">\r\n <h2\r\n className=\"content-header\"\r\n dangerouslySetInnerHTML={{ __html: this.props.CallUsHeadingText }}\r\n />\r\n\r\n <div className=\"content-row content--push-top\">\r\n <div className=\"content-column--large-33 content-column--gutter--large\">\r\n <div className=\"content-inner content-block content--dark\">\r\n <h3\r\n dangerouslySetInnerHTML={{ __html: this.props.CustomerService_TitleText }}\r\n />\r\n <br />\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: this.props.CustomerService_Timing1Text\r\n }}\r\n />\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: this.props.CustomerService_Timing2Text\r\n }}\r\n />\r\n <div\r\n dangerouslySetInnerHTML={{ __html: this.props.CustomerService_EmailText }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"content-column--large-33 content-column--gutter--large\">\r\n <div className=\"content-inner content-block content--dark\">\r\n <h3\r\n dangerouslySetInnerHTML={{ __html: this.props.DictionarySale_TitleText }}\r\n />\r\n <br />\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: this.props.DictionarySale_Timing1Text\r\n }}\r\n />\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: this.props.DictionarySale_Timing2Text\r\n }}\r\n />\r\n <div\r\n dangerouslySetInnerHTML={{ __html: this.props.DictionarySale_EmailText }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"content-column--large-33 content-column--gutter--large\">\r\n <div className=\"content-inner content-block content--dark\">\r\n <h3\r\n dangerouslySetInnerHTML={{\r\n __html: this.props.DictionarySupport_TitleText\r\n }}\r\n />\r\n <br />\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: this.props.DictionarySupport_Timing1Text\r\n }}\r\n />\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: this.props.DictionarySupport_Timing2Text\r\n }}\r\n />\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: this.props.DictionarySupport_EmailText\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"content-row\">\r\n <div className=\"content-column--large-50 content-column--gutter--large\">\r\n <h2\r\n className=\"content-header\"\r\n dangerouslySetInnerHTML={{ __html: this.props.FormHeadingText }}\r\n />\r\n <div className=\"content-inner content-block content--dark\">\r\n <div className=\"content-row\">\r\n <SliderVerticalAnimation visible={!this.props.contactFormSubmitSuccess}>\r\n <ContactForm\r\n {...this.props}\r\n initialValues={initValues}\r\n onSubmit={this.handleSubmit}\r\n />\r\n </SliderVerticalAnimation>\r\n\r\n <SliderVerticalAnimation visible={this.props.contactFormSubmitSuccess}>\r\n <div>\r\n <div dangerouslySetInnerHTML={{ __html: this.props.ReplyText }}></div>\r\n </div>\r\n </SliderVerticalAnimation>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"content-column--large-50 content-column--gutter--large\">\r\n <h2\r\n className=\"content-header\"\r\n dangerouslySetInnerHTML={{ __html: this.props.FindAnAnswerHeadingText }}\r\n />\r\n <div className=\"content-inner content-block content--dark\">\r\n <div\r\n dangerouslySetInnerHTML={{ __html: this.props.FindAnAnswerDescriptionText }}\r\n ></div>\r\n <p>\r\n <a href={this.props.FindAnAnswerURL}>{this.props.FindAnAnswerLinkText}</a>\r\n </p>\r\n </div>\r\n <div className=\"content-block\">\r\n <div dangerouslySetInnerHTML={{ __html: this.props.RightSideImage }}></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n// export default Contact;\r\nexport default contactFormComposer(Contact);\r\n","import * as React from \"react\";\r\nimport Contact from \"@/ReactComponents/Contact/contact\";\r\n\r\nconst ContactView = props => <Contact {...props} />;\r\n\r\nexport default ContactView;\r\n"],"names":["ReCAPTCHA","React","RecaptchaField","props","state","didMount","isRecaptchaValid","componentDidMount","this","setState","verifyReCaptchaCallback","response","Promise","resolve","render","div","Suspense","fallback","span","sitekey","config","hl","onChange","Field","name","component","errorMessage","Component","RecaptchaFieldBasic","forwardRef","ref","useState","setDidMount","setIsRecaptchaValid","useEffect","SlideVerticalAnimation","field","meta","style","position","error","touched","className","submitFailureGotoErrors","errorFieldList","global","canUseDOM","fields","key","push","input","document","querySelector","window","scrollTo","top","offsetTop","behavior","validateEmail","value","test","TextField","inputClasses","classNames","dirty","invalid","id","type","onFocus","onBlur","maxLength","required","label","htmlFor","TextareaField","textarea","contactFormComposer","connect","contactFormSubmitPending","contactFormSelector","contactFormSubmitSuccess","dispatch","contactFormSubmit","webApiUrl","formInfo","reject","contactFormActions","ContactForm","submitting","form","onSubmit","handleSubmit","h3","FormTitleText","NameText","EmailText","PhoneNumberText","SubjectText","FormDescriptionText","br","p","button","disabled","SubmitButtonText","reduxForm","Contact","bind","data","contactData","Object","assign","recaptchaResponse","grecaptcha","getResponse","CaptchaResponse","WebApiUrl","then","Success","SubmissionError","Payload","initValues","ItemId","NameTextBox","MailTextBox","PhoneNumberTextBox","SubjectTextBox","DescriptionTextBox","h1","dangerouslySetInnerHTML","__html","TitleText","DescriptionText","h2","CallUsHeadingText","CustomerService_TitleText","CustomerService_Timing1Text","CustomerService_Timing2Text","CustomerService_EmailText","DictionarySale_TitleText","DictionarySale_Timing1Text","DictionarySale_Timing2Text","DictionarySale_EmailText","DictionarySupport_TitleText","DictionarySupport_Timing1Text","DictionarySupport_Timing2Text","DictionarySupport_EmailText","FormHeadingText","SliderVerticalAnimation","visible","initialValues","ReplyText","FindAnAnswerHeadingText","FindAnAnswerDescriptionText","a","href","FindAnAnswerURL","FindAnAnswerLinkText","RightSideImage"],"sourceRoot":""}