{"version":3,"file":"js/6476.chunk.js?v=1742528680091","mappings":"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","sources":["webpack://fed-boilerplate/./src/2-forms/CCheckbox.jsx","webpack://fed-boilerplate/./src/2-forms/CCheckboxContext.js","webpack://fed-boilerplate/./src/2-forms/CCheckboxItem.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-options/form-options.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/UserDetailsPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/ImportantToYouPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/DescribesYouPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/MainReasonPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/YourHomeProjectPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/HomeDetailsPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/KnowMoreAboutPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/NumberOfRoomsPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/StageOfProjectPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/TimeFramePage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/EstimatedBudgetPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/form-pages/HaveElectricianPage.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/thank-you-modal/ThankYouModal.jsx","webpack://fed-boilerplate/./src/3-components/assessment-tool-form/index.jsx","webpack://fed-boilerplate/./src/3-components/icon/index.jsx","webpack://fed-boilerplate/./src/js/utils/configHelper.js","webpack://fed-boilerplate/./src/js/utils/formik-util.js","webpack://fed-boilerplate/./node_modules/classnames/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport getRandomString from 'utils/getRandomString';\nimport CFormElementWrapper from './CFormElementWrapper';\nimport CCheckboxNameContext from './CCheckboxContext';\n\nclass CCheckbox extends React.Component {\n    randomNameString = getRandomString();\n\n    render() {\n        const {\n            formLayoutClass,\n            label,\n            hasError,\n            errorMsg,\n            isDisabled,\n            children,\n            name,\n        } = this.props;\n\n        return (\n            <CFormElementWrapper\n                formLayoutClass={formLayoutClass}\n                label={label}\n                hasError={hasError}\n                errorMsg={errorMsg}\n                isDisabled={isDisabled}\n                elementClass=\"checkbox-wrapper\"\n            >\n                <CCheckboxNameContext.Provider\n                    value={name || this.randomNameString}\n                >\n                    {children}\n                </CCheckboxNameContext.Provider>\n            </CFormElementWrapper>\n        );\n    }\n}\n\nCCheckbox.propTypes = {\n    name: PropTypes.string,\n    formLayoutClass: PropTypes.string,\n    label: PropTypes.string,\n    hasError: PropTypes.bool,\n    errorMsg: PropTypes.string,\n    isDisabled: PropTypes.bool,\n    children: PropTypes.node.isRequired,\n};\n\nCCheckbox.defaultProps = {\n    name: '',\n    formLayoutClass: '',\n    label: '',\n    hasError: false,\n    errorMsg: '',\n    isDisabled: false,\n};\n\nexport default CCheckbox;\n","import { createContext } from 'react';\n\nconst CCheckboxNameContext = createContext('');\n\nexport default CCheckboxNameContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport getRandomString from 'utils/getRandomString';\nimport CCheckboxNameContext from './CCheckboxContext';\n\nclass CCheckboxItem extends React.Component {\n    randomIDString = getRandomString();\n\n    render() {\n        return (\n            // TODO `RadioNameContext.Consumer` should be converted to a Class.contextType syntax\n            //  in case React is updated to a newer version.\n            //  See https://reactjs.org/docs/context.html#classcontexttype\n            <CCheckboxNameContext.Consumer>\n                {defaultName => {\n                    return (\n                        <div className=\"checkbox-item\">\n                            <input\n                                id={this.props.id || this.randomIDString}\n                                name={this.props.name || defaultName}\n                                value={this.props.value}\n                                checked={this.props.checked}\n                                disabled={this.props.isDisabled}\n                                required={!this.props.notRequired}\n                                type=\"checkbox\"\n                                onChange={this.props.onChange}\n                            />\n                            <label htmlFor={this.props.id || this.randomIDString}>\n                                {this.props.label}\n                            </label>\n                        </div>\n                    );\n                }}\n            </CCheckboxNameContext.Consumer>\n        );\n    }\n}\n\nCCheckboxItem.propTypes = {\n    id: PropTypes.string,\n    name: PropTypes.string,\n    value: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.number,\n        PropTypes.bool\n    ]),\n    checked: PropTypes.bool,\n    isDisabled: PropTypes.bool,\n    notRequired: PropTypes.bool,\n    label: PropTypes.string.isRequired,\n    onChange: PropTypes.func,\n};\n\nCCheckboxItem.defaultProps = {\n    id: '',\n    name: '',\n    value: true,\n    isDisabled: false,\n    notRequired: false,\n    checked: false,\n    onChange: () => {},\n};\n\nexport default CCheckboxItem;\n","export const formQuestions = [\n    { background: '/assets/images/assessment-tool/casto-about-you.jpeg', icon: 'user', question: 'Tell us a little about you so we can personalise your recommendations.', funnelStepName: 'name_surname' },\n    { background: '/assets/images/assessment-tool/casto-important.jpeg', icon: 'pictogram-star', question: 'What is most important to you when considering your project?', info: 'Please choose one option.', funnelStepName: 'q_considering_project' },\n    { background: '/assets/images/assessment-tool/casto-describes.jpeg', icon: 'login-2', question: 'Which best describes who lives in your home?', info: 'Please choose one option.', funnelStepName: 'q_lives_in_home' },\n    { background: '/assets/images/assessment-tool/casto-main-reason.jpeg', icon: 'pictogram-tools', question: 'What is the main reason for your home renovation or build?', info: 'Please choose one option.', funnelStepName: 'q_main_reason' },\n    { background: '/assets/images/assessment-tool/casto-describes-2.jpeg', icon: 'pictogram-residential', question: 'Which best describes your home project?', info: 'Please choose one option.', funnelStepName: 'q_describe_home_project' },\n    { background: '/assets/images/assessment-tool/casto-building.jpeg', icon: 'pictogram-tools', question: 'Please provide details of your new/existing home.', funnelStepName: 'q_new_home_details' },\n    { background: '/assets/images/assessment-tool/casto-know-more-about.jpeg', icon: 'pictogram-leaf', question: 'What would you like to know more about?', info: 'Please select one option or more.', funnelStepName: 'q_know_more_about' },\n    { background: '/assets/images/assessment-tool/casto-rooms.jpeg', icon: 'pictogram-pencil', question: 'Which rooms are you planning to renovate or include in your home?', info: 'Select each room that is applicable and the number of each room being renovated or built.', funnelStepName: 'q_which_rooms' },\n    { background: '/assets/images/assessment-tool/casto-stage-of-project.jpeg', icon: 'laptop', question: 'Which stage of the project are you currently at?', info: 'Please choose one option.', funnelStepName: 'q_stage_of_the_project' },\n    { background: '/assets/images/assessment-tool/casto-est-completion.jpeg', icon: 'clock-2', question: 'What is the estimated completion timeframe for your project?', info: 'Please choose one option.', funnelStepName: 'q_estimated_completion_time' },\n    { background: '/assets/images/assessment-tool/casto-est-budget.jpeg', icon: 'dollar-alt', question: 'What is your estimated total budget for the project?', info: 'Enter your estimated total project budget below to the nearest $10,000.', funnelStepName: 'q_estimated_budget' },\n    { background: '/assets/images/assessment-tool/casto-electrician.jpeg', icon: 'pictogram-elecPlug', question: 'Have you already selected an electrician for your project?', info: '', funnelStepName: 'q_selected_an_electrician' }\n];\n\nexport const importantToYouItems = [\n    { option: 'Home automation and performance' },\n    { option: 'Design and aesthetics' },\n    { option: 'Family focused living' },\n    { option: 'Cost effective solutions' },\n    { option: 'Managed by a professional' }\n];\n\nexport const describesYouItems = [\n    { option: 'Just me' },\n    { option: 'Couple under 50' },\n    { option: 'Couple 50+' },\n    { option: 'Family with young children' },\n    { option: 'Family with older children' },\n    { option: 'Intergenerational' }\n];\n\nexport const mainReasonItems = [\n    { option: 'Financially ready' },\n    { option: 'Have the time' },\n    { option: 'Recently purchased or moved in' },\n    { option: 'Adapting to changes in my family/lifestyle' },\n    { option: 'Home repair project' },\n    { option: 'Renovating for sale' },\n    { option: 'Other' }\n];\n\nexport const yourHomeProjectItems = [\n    { option: 'Renovating one room' },\n    { option: 'Renovating multiple rooms' },\n    { option: 'Renovating entire house' },\n    { option: 'Building an extension' },\n    { option: 'Building a new home' }\n];\n\nexport const homeLocationItems = [\n    { option: 'Rural' },\n    { option: 'Urban' }\n];\n\nexport const ageOfHomeItems = [\n    { option: 'Built before 1980' },\n    { option: 'Built between 1981-2004' },\n    { option: 'Built 2005 or after' }\n];\n\nexport const typeOfHomeItems = [\n    { option: 'Single storey home' },\n    { option: 'Multi-storey home' },\n    { option: 'Single brick home' },\n    { option: 'Double brick home' },\n    { option: 'Weatherboard/timber home' },\n    { option: 'Heritage listed' },\n    { option: 'Other' }\n];\n\nexport const easyCeilingAccessItems = [\n    { option: 'Yes' },\n    { option: 'No' }\n];\n\nexport const knowMoreAboutItems = [\n    { option: 'Sustainable living and energy efficiency solutions' },\n    { option: 'Electrical safety and protection' },\n    { option: 'Creating multifunctional spaces and flexible solutions' },\n    { option: 'Home comfort, control and security solutions' },\n    { option: 'Design and style' }\n];\n\nexport const numberOfRoomsItems = [\n    { option: 'Kitchen' },\n    { option: 'Dining room' },\n    { option: 'Living room' },\n    { option: 'Bedroom' },\n    { option: 'Bathroom' },\n    { option: 'Laundry' },\n    { option: 'Butler\\'s pantry or walk-in pantry' },\n    { option: 'Outdoor living' },\n    { option: 'Entrance, hallway or stairs' },\n    { option: 'Study or home office' },\n    { option: 'Garage' }\n];\n\nexport const stageOfProjectItems = [\n    { option: 'Gathering ideas and information' },\n    { option: 'Setting the budget' },\n    { option: 'Engaging with contractors' },\n    { option: 'Council or other approval' },\n    { option: 'Project is about to commence' },\n    { option: 'Project is underway' }\n];\n\nexport const timeFrameItems = [\n    { option: '1-3 months' },\n    { option: '4-6 months' },\n    { option: '7-12 months' },\n    { option: '13-18 months' },\n    { option: '19-23 months' },\n    { option: '2 years+' }\n];\n\nexport const estimatedBudgetItems = [\n    { option: '$100,000' },\n    { option: '$200,000' },\n    { option: '$400,000' },\n    { option: '$600,000' },\n    { option: '$800,000' },\n    { option: '$1,000,000' }\n];\n\nexport const haveElectricianItems = [\n    { option: 'Yes' },\n    { option: 'No' }\n];\n","import React from 'react';\nimport { bool, func, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitForm } from 'utils/formik-util';\nimport CInput from '../../../2-forms/CInput';\n\nconst UserDetailsPage = ({\n    userDetailsValues,\n    validateForm,\n    handleNext,\n    userDetailsFilled,\n}) => {\n    return (\n\n        <Formik\n            initialValues={userDetailsValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-row\">\n                                <CInput\n                                    formLayoutClass=\"casto-form-col\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    label=\"First name\"\n                                    name=\"firstName\"\n                                    value={values.firstName}\n                                    onChange={handleChange}\n                                    errorMsg={errors.firstName}\n                                    hasError={Boolean(\n                                        touched.firstName &&\n                                        errors.firstName\n                                    )}\n                                    onBlur={handleBlur}\n                                />\n                            </div>\n                            <div className=\"casto-form-row\">\n                                <CInput\n                                    formLayoutClass=\"casto-form-col\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    label=\"Last name\"\n                                    name=\"lastName\"\n                                    value={values.lastName}\n                                    onChange={handleChange}\n                                    errorMsg={errors.lastName}\n                                    hasError={Boolean(\n                                        touched.lastName && errors.lastName\n                                    )}\n                                    onBlur={handleBlur}\n                                />\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitForm(touched, errors) && !userDetailsFilled\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled': (!canSubmitForm(\n                                            touched,\n                                            errors\n                                        ) && !userDetailsFilled),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default UserDetailsPage;\n\nUserDetailsPage.propTypes = {\n    userDetailsValues: object.isRequired,\n    validateForm: func.isRequired,\n    handleNext: func.isRequired,\n    userDetailsFilled: bool.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitForm } from 'utils/formik-util';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\n\nconst ImportantToYouPage = ({\n    importantToYouItems,\n    importantToYouValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={importantToYouValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.importantToYou}\n                                    hasError={Boolean(\n                                        touched.importantToYou &&\n                                        errors.importantToYou\n                                    )}\n                                >\n                                    {importantToYouItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"importantToYou\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.importantToYou.includes(\n                                                        item.option)\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                                notRequired={true}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitForm(selectFieldsToValidate(values, ['importantToYou']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitForm(\n                                            selectFieldsToValidate(values, ['importantToYou']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default ImportantToYouPage;\n\nImportantToYouPage.propTypes = {\n    importantToYouItems: arrayOf(object).isRequired,\n    importantToYouValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitForm } from 'utils/formik-util';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\n\nconst DescribesYouPage = ({\n    describesYouItems,\n    describesYouValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={describesYouValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    // label=\"Describes You\"\n                                    errorMsg={errors.describesYou}\n                                    hasError={Boolean(\n                                        touched.describesYou &&\n                                        errors.describesYou\n                                    )}\n                                >\n                                    {describesYouItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"describesYou\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.describesYou ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitForm(selectFieldsToValidate(values, ['describesYou']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitForm(\n                                            selectFieldsToValidate(values, ['describesYou']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default DescribesYouPage;\n\nDescribesYouPage.propTypes = {\n    describesYouItems: arrayOf(object).isRequired,\n    describesYouValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitForm } from 'utils/formik-util';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\n\nconst MainReasonPage = ({\n    mainReasonItems,\n    mainReasonValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={mainReasonValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    // label=\"Main Reason\"\n                                    errorMsg={errors.mainReason}\n                                    hasError={Boolean(\n                                        touched.mainReason &&\n                                        errors.mainReason\n                                    )}\n                                >\n                                    {mainReasonItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"mainReason\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.mainReason ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitForm(selectFieldsToValidate(values, ['mainReason']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitForm(\n                                            selectFieldsToValidate(values, ['mainReason']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default MainReasonPage;\n\nMainReasonPage.propTypes = {\n    mainReasonItems: arrayOf(object).isRequired,\n    mainReasonValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitForm } from 'utils/formik-util';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\n\nconst YourHomeProjectPage = ({\n    yourHomeProjectItems,\n    yourHomeProjectValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={yourHomeProjectValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.yourHomeProject}\n                                    hasError={Boolean(\n                                        touched.yourHomeProject &&\n                                        errors.yourHomeProject\n                                    )}\n                                >\n                                    {yourHomeProjectItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"yourHomeProject\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.yourHomeProject ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitForm(selectFieldsToValidate(values, ['yourHomeProject']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitForm(\n                                            selectFieldsToValidate(values, ['yourHomeProject']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default YourHomeProjectPage;\n\nYourHomeProjectPage.propTypes = {\n    yourHomeProjectItems: arrayOf(object).isRequired,\n    yourHomeProjectValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitDropdownsOnlyForm } from 'utils/formik-util';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\nimport CCheckbox from '../../../2-forms/CCheckbox';\nimport CCheckboxItem from '../../../2-forms/CCheckboxItem';\n\nconst HomeDetailsPage = ({\n    homeLocationItems,\n    ageOfHomeItems,\n    typeOfHomeItems,\n    easyCeilingAccessItems,\n    homeDetailsValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={homeDetailsValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-category\">\n                                Home location\n                            </div>\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.homeLocation}\n                                    hasError={Boolean(\n                                        touched.homeLocation &&\n                                        errors.homeLocation\n                                    )}\n                                >\n                                    {homeLocationItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"homeLocation\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.homeLocation ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                            <div className=\"casto-form-category\">\n                                Age of home\n                            </div>\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.ageOfHome}\n                                    hasError={Boolean(\n                                        touched.ageOfHome &&\n                                        errors.ageOfHome\n                                    )}\n                                >\n                                    {ageOfHomeItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"ageOfHome\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.ageOfHome ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                            <div className=\"casto-form-category\">\n                            Type of home\n                            </div>\n                            <div className=\"casto-form-category-info\">\n                                Please select one option or more.\n                            </div>\n                            <div className=\"casto-form-col\">\n                                <CCheckbox\n                                    formLayoutClass=\"casto-element-checkbox\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.typeOfHome}\n                                    hasError={Boolean(\n                                        touched.typeOfHome &&\n                                        errors.typeOfHome\n                                    )}\n                                >\n                                    {typeOfHomeItems.map(item => {\n                                        return (\n                                            <CCheckboxItem\n                                                name=\"typeOfHome\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.typeOfHome.includes(\n                                                        item.option)\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                                notRequired={true}\n                                            />\n                                        );\n                                    })}\n                                </CCheckbox>\n                            </div>\n                            <div className=\"casto-form-category\">\n                            Do you have easy access to your ceiling space?\n                            </div>\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.easyCeilingAccess}\n                                    hasError={Boolean(\n                                        touched.easyCeilingAccess &&\n                                        errors.easyCeilingAccess\n                                    )}\n                                >\n                                    {easyCeilingAccessItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"easyCeilingAccess\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.easyCeilingAccess ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitDropdownsOnlyForm(selectFieldsToValidate(values, ['homeLocation', 'ageOfHome', 'typeOfHome', 'easyCeilingAccess']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitDropdownsOnlyForm(\n                                            selectFieldsToValidate(values, ['homeLocation', 'ageOfHome', 'typeOfHome', 'easyCeilingAccess']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default HomeDetailsPage;\n\nHomeDetailsPage.propTypes = {\n    homeLocationItems: arrayOf(object).isRequired,\n    ageOfHomeItems: arrayOf(object).isRequired,\n    typeOfHomeItems: arrayOf(object).isRequired,\n    easyCeilingAccessItems: arrayOf(object).isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitDropdownsOnlyForm } from 'utils/formik-util';\nimport CCheckbox from '../../../2-forms/CCheckbox';\nimport CCheckboxItem from '../../../2-forms/CCheckboxItem';\n\nconst KnowMoreAboutPage = ({\n    knowMoreAboutItems,\n    knowMoreAboutValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={knowMoreAboutValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                <CCheckbox\n                                    formLayoutClass=\"casto-element-checkbox\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.knowMoreAbout}\n                                    hasError={Boolean(\n                                        touched.knowMoreAbout &&\n                                        errors.knowMoreAbout\n                                    )}\n                                >\n                                    {knowMoreAboutItems.map(item => {\n                                        return (\n                                            <CCheckboxItem\n                                                name=\"knowMoreAbout\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.knowMoreAbout.includes(\n                                                        item.option)\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                                notRequired={true}\n                                            />\n                                        );\n                                    })}\n                                </CCheckbox>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitDropdownsOnlyForm(selectFieldsToValidate(values, ['knowMoreAbout']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitDropdownsOnlyForm(\n                                            selectFieldsToValidate(values, ['knowMoreAbout']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default KnowMoreAboutPage;\n\nKnowMoreAboutPage.propTypes = {\n    knowMoreAboutItems: arrayOf(object).isRequired,\n    knowMoreAboutValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\n// import {\n//     canSubmitForm,\n// } from 'utils/formik-util';\nimport Icon from '../../icon';\n\nconst NumberOfRoomsPage = ({\n    numberOfRoomsItems,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n    formData,\n}) => {\n    const roomDefaults = selectFieldsToValidate(formData, [\n        'kitchen',\n        'diningRoom',\n        'livingRoom',\n        'bedroom',\n        'bathroom',\n        'laundry',\n        'pantry',\n        'outdoorLiving',\n        'entrance',\n        'study',\n        'garage'\n    ]);\n    const [numberOfRoomsValues, setNumberOfRoomsValues] = useState(roomDefaults);\n    const [roomKitchen, setRoomKitchen] = useState(numberOfRoomsValues.kitchen);\n    const [roomDiningRoom, setRoomDiningRoom] = useState(numberOfRoomsValues.diningRoom);\n    const [roomLivingRoom, setRoomLivingRoom] = useState(numberOfRoomsValues.livingRoom);\n    const [roomBedroom, setRoomBedroom] = useState(numberOfRoomsValues.bedroom);\n    const [roomBathroom, setRoomBathroom] = useState(numberOfRoomsValues.bathroom);\n    const [roomLaundry, setRoomLaundry] = useState(numberOfRoomsValues.laundry);\n    const [roomPantry, setRoomPantry] = useState(numberOfRoomsValues.pantry);\n    const [roomOutdoorLiving, setRoomOutdoorLiving] = useState(numberOfRoomsValues.outdoorLiving);\n    const [roomEntrance, setRoomEntrance] = useState(numberOfRoomsValues.entrance);\n    const [roomStudy, setRoomStudy] = useState(numberOfRoomsValues.study);\n    const [roomGarage, setRoomGarage] = useState(numberOfRoomsValues.garage);\n    const [validated, setValidated] = useState(false);\n\n    const handleRoomNumberChange = useCallback((key, change) => {\n        switch (key) {\n        case 'kitchen':\n            if (change === 'reduce') {\n                setRoomKitchen(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomKitchen(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'diningRoom':\n            if (change === 'reduce') {\n                setRoomDiningRoom(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomDiningRoom(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'livingRoom':\n            if (change === 'reduce') {\n                setRoomLivingRoom(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomLivingRoom(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'bedroom':\n            if (change === 'reduce') {\n                setRoomBedroom(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomBedroom(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'bathroom':\n            if (change === 'reduce') {\n                setRoomBathroom(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomBathroom(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'laundry':\n            if (change === 'reduce') {\n                setRoomLaundry(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomLaundry(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'pantry':\n            if (change === 'reduce') {\n                setRoomPantry(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomPantry(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'outdoorLiving':\n            if (change === 'reduce') {\n                setRoomOutdoorLiving(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomOutdoorLiving(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'entrance':\n            if (change === 'reduce') {\n                setRoomEntrance(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomEntrance(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'study':\n            if (change === 'reduce') {\n                setRoomStudy(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomStudy(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        case 'garage':\n            if (change === 'reduce') {\n                setRoomGarage(prev => {\n                    return prev - 1;\n                });\n            }\n            if (change === 'add') {\n                setRoomGarage(prev => {\n                    return prev + 1;\n                });\n            }\n            break;\n        default:\n            break;\n        }\n    }, []);\n\n    const renderRoomQuantityField = useCallback((key, index) => {\n        let selectedRoom;\n\n        switch (key) {\n        case 'kitchen':\n            selectedRoom = roomKitchen;\n            break;\n        case 'diningRoom':\n            selectedRoom = roomDiningRoom;\n            break;\n        case 'livingRoom':\n            selectedRoom = roomLivingRoom;\n            break;\n        case 'bedroom':\n            selectedRoom = roomBedroom;\n            break;\n        case 'bathroom':\n            selectedRoom = roomBathroom;\n            break;\n        case 'laundry':\n            selectedRoom = roomLaundry;\n            break;\n        case 'pantry':\n            selectedRoom = roomPantry;\n            break;\n        case 'outdoorLiving':\n            selectedRoom = roomOutdoorLiving;\n            break;\n        case 'entrance':\n            selectedRoom = roomEntrance;\n            break;\n        case 'study':\n            selectedRoom = roomStudy;\n            break;\n        case 'garage':\n            selectedRoom = roomGarage;\n            break;\n        default:\n            break;\n        }\n\n        return (\n            <div key={`casto-form-quantity-${index}`} className=\"casto-form-quantity\">\n                <div>{numberOfRoomsItems[index].option}</div>\n                <div className=\"casto-form-quantity-selection\">\n                    <button\n                        type=\"button\"\n                        disabled={\n                            selectedRoom === 0\n                        }\n                        className={classNames(\n                            'casto-form-quantity-minus',\n                            { 'btn-disabled': selectedRoom === 0 }\n                        )}\n                        onClick={() => {\n                            return handleRoomNumberChange(key, 'reduce');\n                        }}\n                    >\n                        <Icon glyph=\"minus\" />\n                    </button>\n                    <div className=\"casto-form-quantity-number\">{selectedRoom}</div>\n                    <button\n                        type=\"button\"\n                        disabled={\n                            selectedRoom === 9\n                        }\n                        className={classNames(\n                            'casto-form-quantity-plus',\n                            { 'btn-disabled': selectedRoom === 9 }\n                        )}\n                        onClick={() => {\n                            return handleRoomNumberChange(key, 'add');\n                        }}\n                    >\n                        <Icon glyph=\"plus\" />\n                    </button>\n                </div>\n            </div>\n        );\n    }, [roomKitchen, roomDiningRoom, roomLivingRoom, roomBedroom, roomBathroom, roomLaundry, roomPantry, roomOutdoorLiving, roomEntrance, roomStudy, roomGarage, handleRoomNumberChange, numberOfRoomsItems]);\n\n    const handleRoomPageSubmit = useCallback(\n        values => {\n            setNumberOfRoomsValues(values);\n            const roomNumberFormData = {\n                kitchen: roomKitchen,\n                diningRoom: roomDiningRoom,\n                livingRoom: roomLivingRoom,\n                bedroom: roomBedroom,\n                bathroom: roomBathroom,\n                laundry: roomLaundry,\n                pantry: roomPantry,\n                outdoorLiving: roomOutdoorLiving,\n                entrance: roomEntrance,\n                study: roomStudy,\n                garage: roomGarage,\n            };\n            handleNext(roomNumberFormData);\n        },\n        [roomKitchen, roomDiningRoom, roomLivingRoom, roomBedroom, roomBathroom, roomLaundry, roomPantry, roomOutdoorLiving, roomEntrance, roomStudy, roomGarage, handleNext]\n    );\n\n    useEffect(() => {\n        if (\n            roomKitchen !== 0 ||\n            roomDiningRoom !== 0 ||\n            roomLivingRoom !== 0 ||\n            roomBedroom !== 0 ||\n            roomBathroom !== 0 ||\n            roomLaundry !== 0 ||\n            roomPantry !== 0 ||\n            roomOutdoorLiving !== 0 ||\n            roomEntrance !== 0 ||\n            roomStudy !== 0 ||\n            roomGarage !== 0\n        ) {\n            setValidated(true);\n        } else {\n            setValidated(false);\n        }\n    }, [\n        roomKitchen,\n        roomDiningRoom,\n        roomLivingRoom,\n        roomBedroom,\n        roomBathroom,\n        roomLaundry,\n        roomPantry,\n        roomOutdoorLiving,\n        roomEntrance,\n        roomStudy,\n        roomGarage\n    ]);\n\n    return (\n        <Formik\n            initialValues={numberOfRoomsValues}\n            validate={validateForm}\n            onSubmit={handleRoomPageSubmit}\n        >\n            {({ handleSubmit }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                {Object.entries(numberOfRoomsValues).map(([key], index) => {\n                                    return (\n                                        renderRoomQuantityField(key, index)\n                                    );\n                                })}\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={!validated}\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    { 'btn-disabled': !validated }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default NumberOfRoomsPage;\n\nNumberOfRoomsPage.propTypes = {\n    numberOfRoomsItems: arrayOf(object).isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n    formData: object.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitForm } from 'utils/formik-util';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\n\nconst StageOfProjectPage = ({\n    stageOfProjectItems,\n    stageOfProjectValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={stageOfProjectValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.stageOfProject}\n                                    hasError={Boolean(\n                                        touched.stageOfProject &&\n                                        errors.stageOfProject\n                                    )}\n                                >\n                                    {stageOfProjectItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"stageOfProject\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.stageOfProject ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitForm(selectFieldsToValidate(values, ['stageOfProject']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitForm(\n                                            selectFieldsToValidate(values, ['stageOfProject']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default StageOfProjectPage;\n\nStageOfProjectPage.propTypes = {\n    stageOfProjectItems: arrayOf(object).isRequired,\n    stageOfProjectValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitForm } from 'utils/formik-util';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\n\nconst TimeFramePage = ({\n    timeFrameItems,\n    timeFrameValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={timeFrameValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.timeFrame}\n                                    hasError={Boolean(\n                                        touched.timeFrame &&\n                                        errors.timeFrame\n                                    )}\n                                >\n                                    {timeFrameItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"timeFrame\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.timeFrame ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitForm(selectFieldsToValidate(values, ['timeFrame']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitForm(\n                                            selectFieldsToValidate(values, ['timeFrame']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default TimeFramePage;\n\nTimeFramePage.propTypes = {\n    timeFrameItems: arrayOf(object).isRequired,\n    timeFrameValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitCurrency } from 'utils/formik-util';\nimport CInput from '../../../2-forms/CInput';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\n\nconst EstimatedBudgetPage = ({\n    estimatedBudgetItems,\n    estimatedBudgetValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={estimatedBudgetValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-row\">\n                                <CInput\n                                    formLayoutClass=\"casto-form-col\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    label=\"Estimated budget\"\n                                    name=\"estimatedBudget\"\n                                    value={values.estimatedBudget}\n                                    onChange={handleChange}\n                                    errorMsg={errors.estimatedBudget}\n                                    hasError={Boolean(\n                                        touched.estimatedBudget &&\n                                        errors.estimatedBudget\n                                    )}\n                                    onBlur={handleBlur}\n                                />\n                            </div>\n                            <div className=\"casto-form-category\">\n                            OR\n                            </div>\n                            <div className=\"casto-form-category-info\">\n                            Choose one of the quick select options.\n                            </div>\n                            <div className=\"casto-form-col-half\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.estimatedBudget}\n                                    hasError={Boolean(\n                                        touched.estimatedBudget &&\n                                        errors.estimatedBudget\n                                    )}\n                                >\n                                    {estimatedBudgetItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"estimatedBudget\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.estimatedBudget ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitCurrency(selectFieldsToValidate(values, ['estimatedBudget']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitCurrency(\n                                            selectFieldsToValidate(values, ['estimatedBudget']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Next question\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default EstimatedBudgetPage;\n\nEstimatedBudgetPage.propTypes = {\n    estimatedBudgetItems: arrayOf(object).isRequired,\n    estimatedBudgetValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { func, arrayOf, object } from 'prop-types';\nimport classNames from 'classnames';\nimport { Formik } from 'formik';\nimport { canSubmitForm } from 'utils/formik-util';\nimport CRadioButton from '../../../2-forms/CRadioButton';\nimport CRadioButtonItem from '../../../2-forms/CRadioButtonItem';\n\nconst HaveElectricianPage = ({\n    haveElectricianItems,\n    haveElectricianValues,\n    validateForm,\n    selectFieldsToValidate,\n    handleNext,\n}) => {\n    return (\n        <Formik\n            initialValues={haveElectricianValues}\n            validate={validateForm}\n            onSubmit={handleNext}\n        >\n            {({\n                values,\n                errors,\n                touched,\n                handleChange,\n                handleBlur,\n                handleSubmit,\n            }) => {\n                return (\n                    <>\n                        <div className=\"casto-form-options\">\n                            <div className=\"casto-form-col\">\n                                <CRadioButton\n                                    formLayoutClass=\"casto-element-radio-box\"\n                                    labelClass=\"casto-element-text\"\n                                    inputClass=\"casto-element-box\"\n                                    errorMsg={errors.haveElectrician}\n                                    hasError={Boolean(\n                                        touched.haveElectrician &&\n                                        errors.haveElectrician\n                                    )}\n                                >\n                                    {haveElectricianItems.map(item => {\n                                        return (\n                                            <CRadioButtonItem\n                                                name=\"haveElectrician\"\n                                                key={item.option}\n                                                value={item.option}\n                                                label={item.option}\n                                                checked={\n                                                    values.haveElectrician ===\n                                            item.option\n                                                }\n                                                onBlur={handleBlur}\n                                                onChange={handleChange}\n                                            />\n                                        );\n                                    })}\n                                </CRadioButton>\n                            </div>\n                        </div>\n                        <div className=\"casto-form-submit\">\n                            <button\n                                type=\"button\"\n                                disabled={\n                                    !canSubmitForm(selectFieldsToValidate(values, ['haveElectrician']), errors)\n                                }\n                                className={classNames(\n                                    'casto-footer-link btn-skin-1 casto-submit-btn',\n                                    {\n                                        'btn-disabled':\n                                        !canSubmitForm(\n                                            selectFieldsToValidate(values, ['haveElectrician']),\n                                            errors\n                                        ),\n                                    }\n                                )}\n                                onClick={() => {\n                                    handleSubmit();\n                                }}\n                            >\n                            Get your results\n                            </button>\n                        </div>\n                    </>\n                );\n            }}\n        </Formik>\n    );\n};\n\nexport default HaveElectricianPage;\n\nHaveElectricianPage.propTypes = {\n    haveElectricianItems: arrayOf(object).isRequired,\n    haveElectricianValues: object.isRequired,\n    validateForm: func.isRequired,\n    selectFieldsToValidate: func.isRequired,\n    handleNext: func.isRequired,\n};\n","import React from 'react';\nimport { array, bool, func, string } from 'prop-types';\nimport classNames from 'classnames';\nimport Loader from '../../../3-components/loader';\nimport Icon from '../../../3-components/icon';\n\nconst ThankYouModal = ({\n    toggleErrorModal,\n    isThankYouModalShowing,\n    isErrorModalShowing,\n    formError,\n    formValidationErrors,\n}) => {\n    return (\n        <div className=\"c-thank-you-modal\">\n            <div\n                role=\"button\"\n                tabIndex={0}\n                className=\"modal-overlay\"\n                onClick={() => {\n                    return (isErrorModalShowing ? toggleErrorModal() : undefined);\n                }}\n                onKeyPress={() => {\n                    return (isErrorModalShowing ? toggleErrorModal() : undefined);\n                }}\n            >\n                <div className=\"modal-container\">\n                    <div\n                        className={classNames('modal-content', { 'error-border': isErrorModalShowing })}\n                    >\n                        {isThankYouModalShowing && (\n                            <>\n                                <div className=\"modal-info\">\n                                You are now being directed to your results\n                                </div>\n                                <Loader />\n                            </>\n                        )}\n                        {isErrorModalShowing && (\n                            <>\n                                <button type=\"button\" className=\"modal-close\">\n                                    <Icon glyph=\"cross\" />\n                                </button>\n                                <div className=\"modal-header\">\n                                Something went wrong...\n                                </div>\n                                <div className=\"modal-info\">{formError}</div>\n                                {formValidationErrors && (\n                                    <ul>\n                                        {formValidationErrors.map(error => {\n                                            return (\n                                                <li key={error} className=\"modal-error\">{error}</li>\n                                            );\n                                        })}\n                                    </ul>\n                                )}\n                            </>\n                        )}\n                    </div>\n                </div>\n            </div>\n        </div>\n    );\n};\n\nThankYouModal.propTypes = {\n    toggleErrorModal: func.isRequired,\n    isThankYouModalShowing: bool.isRequired,\n    isErrorModalShowing: bool.isRequired,\n    formError: string,\n    formValidationErrors: array.isRequired,\n};\n\nexport default ThankYouModal;\n\n","import React, { useState, useCallback, useEffect } from 'react';\nimport makeAssetsPath from '../../js/utils/configHelper';\nimport { tempCookie } from '../../js/utils/storage';\nimport Icon from '../icon';\nimport axios from 'axios';\nimport classNames from 'classnames';\nimport { string } from 'prop-types';\nimport {\n    checkRequiredField,\n    checkRequiredNumberOrCurrency\n} from 'utils/formik-util';\nimport {\n    formQuestions,\n    importantToYouItems,\n    describesYouItems,\n    mainReasonItems,\n    yourHomeProjectItems,\n    homeLocationItems,\n    ageOfHomeItems,\n    typeOfHomeItems,\n    easyCeilingAccessItems,\n    knowMoreAboutItems,\n    numberOfRoomsItems,\n    stageOfProjectItems,\n    timeFrameItems,\n    estimatedBudgetItems,\n    haveElectricianItems\n} from './form-options/form-options';\nimport UserDetailsPage from './form-pages/UserDetailsPage';\nimport ImportantToYouPage from './form-pages/ImportantToYouPage';\nimport DescribesYouPage from './form-pages/DescribesYouPage';\nimport MainReasonPage from './form-pages/MainReasonPage';\nimport YourHomeProjectPage from './form-pages/YourHomeProjectPage';\nimport HomeDetailsPage from './form-pages/HomeDetailsPage';\nimport KnowMoreAboutPage from './form-pages/KnowMoreAboutPage';\nimport NumberOfRoomsPage from './form-pages/NumberOfRoomsPage';\nimport StageOfProjectPage from './form-pages/StageOfProjectPage';\nimport TimeFramePage from './form-pages/TimeFramePage';\nimport EstimatedBudgetPage from './form-pages/EstimatedBudgetPage';\nimport HaveElectricianPage from './form-pages/HaveElectricianPage';\nimport ThankYouModal from './thank-you-modal/ThankYouModal';\n\nconst AssessmentToolForm = ({\n    submissionUrl,\n    resultsUrl,\n}) => {\n    // States\n    const [startingPage, setStartingPage] = useState(true);\n    const [currentPage, setCurrentPage] = useState(0);\n    const [userDetailsFilled, setUserDetailsFilled] = useState(false);\n    const [readyToSubmit, setReadyToSubmit] = useState(false);\n    const [isThankYouModalShowing, setIsThankYouModalShowing] = useState(false);\n    const [isErrorModalShowing, setIsErrorModalShowing] = useState(false);\n    const [formValidationErrors, setFormValidationErrors] = useState('');\n    const [formError, setFormError] = useState('');\n    const [formData, setFormData] = useState({\n        firstName: '',\n        lastName: '',\n        importantToYou: '',\n        describesYou: '',\n        mainReason: '',\n        yourHomeProject: '',\n        homeLocation: '',\n        ageOfHome: '',\n        typeOfHome: [],\n        easyCeilingAccess: 0,\n        knowMoreAbout: [],\n        kitchen: 0,\n        diningRoom: 0,\n        livingRoom: 0,\n        bedroom: 0,\n        bathroom: 0,\n        laundry: 0,\n        pantry: 0,\n        outdoorLiving: 0,\n        entrance: 0,\n        study: 0,\n        garage: 0,\n        stageOfProject: '',\n        timeFrame: '',\n        estimatedBudget: '',\n        haveElectrician: '',\n    });\n    const [isMobile, setIsMobile] = useState(window.innerWidth <= 768);\n\n    window.dataLayer = window.dataLayer || [];\n\n    // Functions\n    const handleWindowSizeChange = useCallback(() => {\n        setIsMobile(window.innerWidth <= 768);\n    }, []);\n\n    const selectFieldsToValidate = (obj, arr) => {\n        return arr.reduce((acc, record) => {\n            return (record in obj && (acc[record] = obj[record]), acc);\n        }, {});\n    };\n\n    const scrollToTop = useCallback(() => {\n        document.querySelector('.casto-form-section').scrollTop = 0;\n    }, []);\n\n    const pullAnswer = useCallback(formValues => {\n        switch (currentPage) {\n        case 1:\n            return `${formValues.firstName} ${formValues.lastName}`;\n        case 2:\n            return formValues.importantToYou;\n        case 3:\n            return formValues.describesYou;\n        case 4:\n            return formValues.mainReason;\n        case 5:\n            return formValues.yourHomeProject;\n        case 6:\n            return `home_location: ${formValues.homeLocation}, age_of_home: ${formValues.ageOfHome}, typeOfHome: ${formValues.typeOfHome.join(',')}, easy_ceiling_access: ${formValues.easyCeilingAccess}`;\n        case 7:\n            return formValues.knowMoreAbout.join(',');\n        case 8:\n            return `kitchen: ${formValues.kitchen}, diningRoom: ${formValues.diningRoom}, livingRoom: ${formValues.livingRoom}, bedroom: ${formValues.bedroom}, bathroom: ${formValues.bathroom}, laundry: ${formValues.laundry}, pantry: ${formValues.pantry}, outdoorLiving: ${formValues.outdoorLiving}, entrance: ${formValues.entrance}, study: ${formValues.study}, garage: ${formValues.garage}`;\n        case 9:\n            return formValues.stageOfProject;\n        case 10:\n            return formValues.timeFrame;\n        case 11:\n            return formValues.estimatedBudget;\n        case 12:\n            return formValues.haveElectrician;\n        default:\n            return null;\n        }\n    }, [currentPage]);\n\n    const nextPage = useCallback(values => {\n        scrollToTop();\n        window.dataLayer.push({\n            event: 'assessmentToolFormProgress',\n            assessmentToolFormProgress: currentPage,\n            assessmentToolFormCompletion: currentPage === formQuestions.length,\n        });\n        if (startingPage) {\n            setStartingPage(false);\n            setCurrentPage(prev => {\n                return prev + 1;\n            });\n        }\n        if (!startingPage && currentPage !== 0 && currentPage < formQuestions.length) {\n            setCurrentPage(prev => {\n                return prev + 1;\n            });\n        }\n        if (!startingPage) {\n            const { funnelStepName } = formQuestions[currentPage - 1];\n            window.dataLayer.push({\n                event: 'mhe_form',\n                funnel_step: currentPage,\n                funnel_total_steps: formQuestions.length,\n                funnel_step_name: funnelStepName,\n                answer: pullAnswer(values),\n            });\n        }\n        if (currentPage === formQuestions.length) {\n            setReadyToSubmit(true);\n        }\n    }, [scrollToTop, currentPage, startingPage, pullAnswer]);\n\n    const previousPage = useCallback(() => {\n        scrollToTop();\n        if (currentPage === 1) {\n            setStartingPage(true);\n        }\n        if (currentPage === 2) {\n            setUserDetailsFilled(true);\n        }\n        setCurrentPage(prev => {\n            return prev - 1;\n        });\n    }, [currentPage, scrollToTop]);\n\n    const validateForm = useCallback(values => {\n        const errors = {};\n        if (currentPage === 1) {\n            checkRequiredField('firstName', values, errors);\n            checkRequiredField('lastName', values, errors);\n        }\n        if (currentPage === 11) {\n            checkRequiredNumberOrCurrency('estimatedBudget', values, errors);\n        }\n        return errors;\n    }, [currentPage]);\n\n    const handleNext = useCallback(\n        values => {\n            scrollToTop();\n            if (Object.keys(formData).length > 0) {\n                setFormData({ ...formData, ...values });\n            } else {\n                setFormData(values);\n            }\n            nextPage(values);\n        },\n        [formData, scrollToTop, nextPage]\n    );\n\n    const toggleErrorModal = useCallback(() => {\n        setIsErrorModalShowing(false);\n        setReadyToSubmit(false);\n    }, []);\n\n    const capitalizeName = useCallback(name => {\n        return name.replace(/\\b(\\w)/g, s => { // factors in apostrophes and dashes in name\n            return s.toUpperCase();\n        });\n    }, []);\n\n    const convertDataForAPI = useCallback(() => {\n        const roundedBudget = Math.round(formData.estimatedBudget.replace(/[$,]+/g, '') / 10000) * 10000;\n        const budget = parseInt(roundedBudget);\n        const currentFormData = formData;\n        currentFormData.estimatedBudget = budget;\n        if (formData.haveElectrician === 'Yes') {\n            currentFormData.haveElectrician = 1;\n        }\n        if (formData.haveElectrician === 'No') {\n            currentFormData.haveElectrician = 0;\n        }\n        if (formData.easyCeilingAccess === 'Yes') {\n            currentFormData.easyCeilingAccess = 1;\n        }\n        if (formData.easyCeilingAccess === 'No') {\n            currentFormData.easyCeilingAccess = 0;\n        }\n        currentFormData.firstName = capitalizeName(formData.firstName);\n        currentFormData.lastName = capitalizeName(formData.lastName);\n        setFormData(currentFormData);\n    }, [formData, capitalizeName]);\n\n    const getProgressBar = useCallback(() => {\n        const percentage = Math.ceil(\n            (currentPage / formQuestions.length) * 100\n        );\n\n        return (\n            <>\n                {!startingPage && (\n                    <button\n                        type=\"button\" className=\"casto-form-back\" onClick={() => {\n                            return previousPage();\n                        }}\n                    >\n                        <Icon glyph=\"arrow-left-2\" />\n                        <span>Back</span>\n                    </button>\n                )}\n                <div className=\"casto-form-progress\">\n                    <div className=\"casto-form-progress-bar\">\n                        <div\n                            className=\"casto-form-completion\"\n                            style={{ width: `${percentage}%` }}\n                        />\n                    </div>\n                    <span>{currentPage} / {formQuestions.length}</span>\n                </div>\n            </>\n        );\n    }, [currentPage, startingPage, previousPage]);\n\n    const handleSendAssessmentToolFormData = useCallback(() => {\n        // Prevent default form submission if needed\n        // Add the reCAPTCHA token to your form data\n        window.grecaptcha.ready(() => {\n            window.grecaptcha.execute('6LfwxfgqAAAAAOw2Z0x_n9ikN7eCw1mUrCw-_Qex', { action: 'submit' }).then(token => {\n                // Add the token to formData or as a separate field\n                const formDataWithToken = { ...formData, gRecaptchaResponse: token };\n\n                console.info('Form data with reCAPTCHA token:', formDataWithToken);\n                // Proceed with your form submission logic\n                const formApi = submissionUrl;\n\n                axios\n                    .post(formApi, formDataWithToken) // Send formData with the reCAPTCHA token\n                    .then(response => {\n                        tempCookie('assessment-tool-results-guid', response.data.Message);\n                        if (window.location.host === 'localhost:3000') {\n                            window.location.replace(`${resultsUrl}.html`); // local testing\n                        } else {\n                            window.location.replace(resultsUrl); // redirection to result page occurs\n                        }\n                    })\n                    .catch(error => {\n                        if (error.response.data.errors) {\n                            const formErrorEntries = [];\n                            for (const [key, value] of Object.entries(error.response.data.errors)) {\n                                console.info(`${key}: ${value}`);\n                                formErrorEntries.push(value[0]);\n                            }\n                            setFormValidationErrors(formErrorEntries);\n                        }\n                        setFormError(error.response.data.Message);\n                        setIsThankYouModalShowing(false);\n                        setIsErrorModalShowing(true);\n                    });\n            });\n        });\n    }, [\n        formData,\n        resultsUrl,\n        submissionUrl\n    ]);\n\n    // const handleSendAssessmentToolFormData = useCallback(() => {\n    //     const formApi = submissionUrl;\n\n    //     axios\n    //         .post(formApi, formData)\n    //         .then(response => {\n    //             tempCookie('assessment-tool-results-guid', response.data.Message);\n    //             if (window.location.host === 'localhost:3000') {\n    //                 window.location.replace(`${resultsUrl}.html`); // local testing\n    //             } else {\n    //                 window.location.replace(resultsUrl); // redirection to result page occurs\n    //             }\n    //         })\n    //         .catch(error => {\n    //             if (error.response.data.errors) {\n    //                 const formErrorEntries = [];\n    //                 for (const [key, value] of Object.entries(error.response.data.errors)) {\n    //                     console.info(`${key}: ${value}`);\n    //                     formErrorEntries.push(value[0]);\n    //                 }\n    //                 setFormValidationErrors(formErrorEntries);\n    //             }\n    //             setFormError(error.response.data.Message);\n    //             setIsThankYouModalShowing(false);\n    //             setIsErrorModalShowing(true);\n    //         });\n    // }, [\n    //     formData,\n    //     resultsUrl,\n    //     submissionUrl\n    // ]\n    // );\n\n    const submitForm = useCallback(() => {\n        convertDataForAPI();\n        setIsThankYouModalShowing(true);\n        handleSendAssessmentToolFormData();\n    }, [convertDataForAPI, handleSendAssessmentToolFormData]);\n\n    useEffect(() => {\n        if (readyToSubmit) {\n            submitForm();\n        }\n        window.addEventListener('resize', handleWindowSizeChange);\n        return () => {\n            window.removeEventListener('resize', handleWindowSizeChange);\n        };\n    }, [readyToSubmit, submitForm, handleWindowSizeChange]);\n\n    return (\n        <div className=\"casto-page\">\n            <div className=\"casto-banner\">\n                <img\n                    className=\"casto-background\"\n                    src={makeAssetsPath(currentPage === 0 ?\n                        '/assets/images/assessment-tool/casto-home-design.jpeg' :\n                        formQuestions[currentPage - 1].background\n                    )}\n                    alt=\"\"\n                />\n                <div className={classNames('casto-overlay', { 'slide-one': currentPage === 0 })} />\n                <div className=\"casto-header\">\n                    {startingPage && (\n                        <div className=\"casto-title\">\n                            Optimise your home with My Home Enhancer\n                        </div>\n                    )}\n                    { isMobile && !startingPage && (\n                        <>\n                            <div className=\"casto-icon\">\n                                <Icon glyph={formQuestions[currentPage - 1].icon} />\n                            </div>\n                            <div className=\"casto-title\">\n                                {formQuestions[currentPage - 1].question}\n                            </div>\n                        </>\n                    )}\n                </div>\n            </div>\n            <div className=\"casto-form\">\n                {!startingPage && (\n                    <div className=\"casto-form-header\">\n                        {getProgressBar()}\n                    </div>\n                )}\n                <div className=\"casto-form-section\">\n                    {startingPage && (\n                        <>\n                            <div className=\"casto-form-info\">\n                                <div className=\"casto-form-brief\">\n                                    Answer a few questions about the way you live and the way you&apos;d love to live, and we&apos;ll provide you with budgeting advice and personalised recommendations for your renovation or new build project.\n                                    <br />\n                                    <br />\n                                    Once completed, you can email yourself a copy of your results and share these recommendations with your electrician or builder.\n                                </div>\n                            </div>\n                            <button\n                                type=\"button\" className=\"casto-form-next btn-icon btn-skin-1\" onClick={() => {\n                                    return nextPage();\n                                }}\n                            >\n                                <span>Let&apos;s get started</span>\n                                <Icon glyph=\"chevron-right\" />\n                            </button>\n                            <br />\n                            <span className=\"casto-form-disclaimer\">\n                                Any personal information collected, will be done so in accordance with our\n                                <a\n                                    href={window.location.toString().includes('clipsal') ?\n                                        'https://www.se.com/au/en/about-us/legal/privacy-policy.jsp' : // Clipsal privacy policy\n                                        'https://www.se.com/nz/en/about-us/legal/privacy-policy.jsp'} // PDL privacy policy\n                                    target=\"_blank\" rel=\"noreferrer\"\n                                > <u>privacy policy</u>\n                                </a>.\n                                The questions we ask about your age and living situation are to help us suggest the right product solutions for you.\n                            </span>\n                            <br />\n                            <span className=\"casto-form-note\">\n                                <b>Please Note: </b>\n                                For the best My Home Enhancer experience we don’t recommend using Mozilla Firefox.\n                            </span>\n                        </>\n                    )}\n                    {!startingPage && (\n                        <>\n                            {!isMobile && (\n                                <div className=\"casto-form-question\">\n                                    {formQuestions[currentPage - 1].question}\n                                </div>\n                            )}\n                            {formQuestions[currentPage - 1].info && (\n                                <div className=\"casto-form-info\">\n                                    {formQuestions[currentPage - 1].info}\n                                </div>\n                            )}\n                            {currentPage === 1 && (\n                                <UserDetailsPage\n                                    userDetailsValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                    userDetailsFilled={userDetailsFilled}\n                                />\n                            )}\n                            {currentPage === 2 && (\n                                <ImportantToYouPage\n                                    importantToYouItems={importantToYouItems}\n                                    importantToYouValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 3 && (\n                                <DescribesYouPage\n                                    describesYouItems={describesYouItems}\n                                    describesYouValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 4 && (\n                                <MainReasonPage\n                                    mainReasonItems={mainReasonItems}\n                                    mainReasonValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 5 && (\n                                <YourHomeProjectPage\n                                    yourHomeProjectItems={yourHomeProjectItems}\n                                    yourHomeProjectValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 6 && (\n                                <HomeDetailsPage\n                                    homeLocationItems={homeLocationItems}\n                                    ageOfHomeItems={ageOfHomeItems}\n                                    typeOfHomeItems={typeOfHomeItems}\n                                    easyCeilingAccessItems={easyCeilingAccessItems}\n                                    homeDetailsValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 7 && (\n                                <KnowMoreAboutPage\n                                    knowMoreAboutItems={knowMoreAboutItems}\n                                    knowMoreAboutValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 8 && (\n                                <NumberOfRoomsPage\n                                    numberOfRoomsItems={numberOfRoomsItems}\n                                    formData={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 9 && (\n                                <StageOfProjectPage\n                                    stageOfProjectItems={stageOfProjectItems}\n                                    stageOfProjectValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 10 && (\n                                <TimeFramePage\n                                    timeFrameItems={timeFrameItems}\n                                    timeFrameValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 11 && (\n                                <EstimatedBudgetPage\n                                    estimatedBudgetItems={estimatedBudgetItems}\n                                    estimatedBudgetValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                            {currentPage === 12 && (\n                                <HaveElectricianPage\n                                    haveElectricianItems={haveElectricianItems}\n                                    haveElectricianValues={formData}\n                                    validateForm={validateForm}\n                                    selectFieldsToValidate={selectFieldsToValidate}\n                                    handleNext={handleNext}\n                                />\n                            )}\n                        </>\n                    )}\n                </div>\n            </div>\n            {(isThankYouModalShowing || isErrorModalShowing) && (\n                <ThankYouModal\n                    toggleErrorModal={toggleErrorModal}\n                    isThankYouModalShowing={isThankYouModalShowing}\n                    isErrorModalShowing={isErrorModalShowing}\n                    formError={formError}\n                    formValidationErrors={formValidationErrors}\n                />\n            )}\n        </div>\n    );\n};\n\nexport default AssessmentToolForm;\n\nAssessmentToolForm.propTypes = {\n    submissionUrl: string.isRequired,\n    resultsUrl: string.isRequired,\n};\n\nAssessmentToolForm.defaultProps = {};\n","import React from 'react';\nimport { string } from 'prop-types';\n\nexport default class Icon extends React.Component {\n    shouldComponentUpdate(nextProps) {\n        if (\n            this.props.className !== nextProps.className ||\n            this.props.glyph !== nextProps.glyph\n        ) {\n            return true;\n        }\n\n        return false;\n    }\n\n    render() {\n        return (\n            <svg className={`svg-icon ${this.props.className}`}>\n                <use xlinkHref={`#${this.props.glyph}`} />\n            </svg>\n        );\n    }\n}\n\nIcon.propTypes = {\n    glyph: string.isRequired,\n    className: string,\n};\n\nIcon.defaultProps = { className: '' };\n","/**\n * @param {string} path\n * @returns {string}\n */\nexport default function makeAssetsPath(path) {\n    const $config = document.querySelectorAll('.js-config');\n    console.info('path');\n    if (!$config.length || !$config[0].dataset.assetsPath) {\n        return path;\n    }\n\n    return `${$config[0].dataset.assetsPath}${path}`;\n}\n\n// COMMENT OUT ABOVE AND SWAP TO BELOW TO BUILD SERVER.JS FILE\n\n// import { document } from 'components/global/global';\n\n// /**\n//  * @param {string} path\n//  * @returns {string}\n//  */\n// export default function makeAssetsPath(path) {\n//     const $config = document.querySelectorAll('.js-config');\n//     if (!$config.length || !$config[0].dataset.assetsPath) {\n//         return path;\n//     }\n\n//     return `${$config[0].dataset.assetsPath}${path}`;\n// }\n","export const isValidEmail = email => {\n    const rEmail =\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,}))$/;\n    return rEmail.test(email);\n};\n\nexport const isValidNumber = number => {\n    const rNumber = /^\\d*$/;\n    return rNumber.test(number);\n};\n\nexport const isValidCurrency = currency => {\n    const rCurrency = /(?=.*\\d)^\\$(([1-9]\\d{0,2}(,\\d{3})*)|0)?(\\.\\d{1,2})?$/;\n    return rCurrency.test(currency);\n};\n\nexport const checkRequiredField = (\n    field,\n    values,\n    errors,\n    errorMsg = 'Required'\n) => {\n    if (!values[field]) {\n        errors[field] = errorMsg;\n    }\n};\n\nexport const checkRequiredNumberOrCurrency = (\n    field,\n    values,\n    errors,\n    errorMsg = 'Required format of number or currency, e.g. 10000 or $10,000'\n) => {\n    if (!isValidNumber(values[field]) && !isValidCurrency(values[field])) {\n        errors[field] = errorMsg;\n    }\n    if (values[field].replace(/[^a-zA-Z0-9 ]/g, '') < 10000) {\n        errors[field] = 'Budget must be over $10,000';\n    }\n    if (values[field].replace(/[^a-zA-Z0-9 ]/g, '') > 10000000) {\n        errors[field] = 'Budget must be under $10,000,000';\n    }\n};\n\nexport const checkRequiredDecimalField = (\n    field,\n    values,\n    errors,\n    errorMsg = 'Number required'\n) => {\n    if (values[field]) {\n        // allows decimal and whole numbers\n        if (Number.isNaN(Number(values[field]))) {\n            errors[field] = errorMsg;\n        }\n    }\n    if (!values[field]) {\n        errors[field] = errorMsg;\n    }\n};\n\nexport const checkRequiredNumberField = (\n    field,\n    values,\n    errors,\n    errorMsg = 'Number required'\n) => {\n    if (values[field]) {\n        // only allows full numbers\n        if (!isValidNumber(values[field])) {\n            errors[field] = errorMsg;\n        }\n    }\n    if (!values[field]) {\n        errors[field] = errorMsg;\n    }\n};\n\nexport const checkEmailField = (\n    field,\n    values,\n    errors,\n    errorMsg = 'Invalid email'\n) => {\n    if (values[field]) {\n        if (!isValidEmail(values[field])) {\n            errors[field] = errorMsg;\n        }\n    }\n};\n\nexport const canSubmitForm = (touched, errors) => {\n    let hasTouched = false;\n    let hasError = false;\n    for (const prop in touched) {\n        if (\n            Object.prototype.hasOwnProperty.call(touched, prop) &&\n            touched[prop]\n        ) {\n            hasTouched = true;\n        }\n    }\n    for (const prop in errors) {\n        if (\n            Object.prototype.hasOwnProperty.call(errors, prop) &&\n            errors[prop]\n        ) {\n            hasError = true;\n        }\n    }\n    return hasTouched && !hasError;\n};\n\n// used if a form page has ONLY dropdowns or radio buttons\nexport const canSubmitDropdownsOnlyForm = (values, errors) => {\n    let hasError = false;\n    const noEmptyValues = Object.values(values).every(v => {\n        return v !== '';\n    });\n    const emptyArray = Object.keys(values).some(key => {\n        return values[key].length === 0;\n    });\n\n    for (const prop in errors) {\n        if (\n            Object.prototype.hasOwnProperty.call(errors, prop) &&\n            errors[prop]\n        ) {\n            hasError = true;\n        }\n    }\n\n    // eslint-disable-next-line no-constant-binary-expression\n    return noEmptyValues && !emptyArray && values !== {} && !hasError;\n};\n\nexport const canSubmitCurrency = (values, errors) => {\n    let hasError = false;\n    const noEmptyValues = Object.values(values).every(v => {\n        return v !== '';\n    });\n    const emptyArray = Object.keys(values).some(key => {\n        return values[key].length === 0;\n    });\n\n    for (const prop in errors) {\n        if (\n            Object.prototype.hasOwnProperty.call(errors, prop) &&\n            errors[prop]\n        ) {\n            hasError = true;\n        }\n    }\n\n    const rNumber = /^\\d*$/;\n    const rCurrency = /(?=.*\\d)^\\$(([1-9]\\d{0,2}(,\\d{3})*)|0)?(\\.\\d{1,2})?$/;\n    const checkValidNumbers = Object.values(values).every(v => {\n        return rNumber.test(Number(v));\n    });\n    const checkValidCurrencies = Object.values(values).every(v => {\n        return rCurrency.test(v);\n    });\n\n    // eslint-disable-next-line no-constant-binary-expression\n    return noEmptyValues && !emptyArray && (checkValidNumbers || checkValidCurrencies) && values !== {} && !hasError;\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"],"names":["CCheckbox","_React$Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","randomNameString","getRandomString","_inherits","key","value","_this$props","this","props","formLayoutClass","label","hasError","errorMsg","isDisabled","children","name","React","CFormElementWrapper","elementClass","CCheckboxNameContext","Provider","propTypes","PropTypes","isRequired","defaultProps","createContext","CCheckboxItem","randomIDString","_this2","Consumer","defaultName","className","id","checked","disabled","required","notRequired","type","onChange","htmlFor","formQuestions","background","icon","question","funnelStepName","info","importantToYouItems","option","describesYouItems","mainReasonItems","yourHomeProjectItems","homeLocationItems","ageOfHomeItems","typeOfHomeItems","easyCeilingAccessItems","knowMoreAboutItems","numberOfRoomsItems","stageOfProjectItems","timeFrameItems","estimatedBudgetItems","haveElectricianItems","UserDetailsPage","_ref","userDetailsValues","validateForm","handleNext","userDetailsFilled","Formik","initialValues","validate","onSubmit","_ref2","values","errors","touched","handleChange","handleBlur","handleSubmit","CInput","labelClass","inputClass","firstName","Boolean","onBlur","lastName","canSubmitForm","classNames","onClick","object","func","bool","ImportantToYouPage","importantToYouValues","selectFieldsToValidate","CRadioButton","importantToYou","map","item","CRadioButtonItem","includes","arrayOf","DescribesYouPage","describesYouValues","describesYou","MainReasonPage","mainReasonValues","mainReason","YourHomeProjectPage","yourHomeProjectValues","yourHomeProject","HomeDetailsPage","homeDetailsValues","homeLocation","ageOfHome","typeOfHome","easyCeilingAccess","canSubmitDropdownsOnlyForm","KnowMoreAboutPage","knowMoreAboutValues","knowMoreAbout","NumberOfRoomsPage","roomDefaults","formData","_useState2","_slicedToArray","useState","numberOfRoomsValues","setNumberOfRoomsValues","_useState4","kitchen","roomKitchen","setRoomKitchen","_useState6","diningRoom","roomDiningRoom","setRoomDiningRoom","_useState8","livingRoom","roomLivingRoom","setRoomLivingRoom","_useState10","bedroom","roomBedroom","setRoomBedroom","_useState12","bathroom","roomBathroom","setRoomBathroom","_useState14","laundry","roomLaundry","setRoomLaundry","_useState16","pantry","roomPantry","setRoomPantry","_useState18","outdoorLiving","roomOutdoorLiving","setRoomOutdoorLiving","_useState20","entrance","roomEntrance","setRoomEntrance","_useState22","study","roomStudy","setRoomStudy","_useState24","garage","roomGarage","setRoomGarage","_useState26","validated","setValidated","handleRoomNumberChange","useCallback","change","prev","renderRoomQuantityField","index","selectedRoom","Icon","glyph","handleRoomPageSubmit","useEffect","Object","entries","_ref3","StageOfProjectPage","stageOfProjectValues","stageOfProject","TimeFramePage","timeFrameValues","timeFrame","EstimatedBudgetPage","estimatedBudgetValues","estimatedBudget","canSubmitCurrency","HaveElectricianPage","haveElectricianValues","haveElectrician","ThankYouModal","toggleErrorModal","isThankYouModalShowing","isErrorModalShowing","formError","formValidationErrors","role","tabIndex","undefined","onKeyPress","Loader","error","string","array","AssessmentToolForm","submissionUrl","resultsUrl","startingPage","setStartingPage","currentPage","setCurrentPage","setUserDetailsFilled","readyToSubmit","setReadyToSubmit","setIsThankYouModalShowing","setIsErrorModalShowing","setFormValidationErrors","setFormError","setFormData","window","innerWidth","isMobile","setIsMobile","dataLayer","handleWindowSizeChange","obj","arr","reduce","acc","record","scrollToTop","document","querySelector","scrollTop","pullAnswer","formValues","join","nextPage","push","event","assessmentToolFormProgress","assessmentToolFormCompletion","funnel_step","funnel_total_steps","funnel_step_name","answer","previousPage","checkRequiredField","checkRequiredNumberOrCurrency","keys","_objectSpread","capitalizeName","replace","s","toUpperCase","convertDataForAPI","roundedBudget","Math","round","budget","parseInt","currentFormData","getProgressBar","percentage","ceil","style","width","handleSendAssessmentToolFormData","grecaptcha","ready","execute","action","then","token","formDataWithToken","gRecaptchaResponse","console","formApi","axios","post","response","tempCookie","data","Message","location","host","formErrorEntries","_i","_Object$entries","_Object$entries$_i","submitForm","addEventListener","removeEventListener","src","makeAssetsPath","alt","href","toString","target","rel","nextProps","xlinkHref","path","$config","querySelectorAll","dataset","assetsPath","isValidEmail","email","test","field","currency","number","hasTouched","prop","prototype","hasOwnProperty","call","noEmptyValues","every","v","emptyArray","some","rNumber","rCurrency","checkValidNumbers","Number","checkValidCurrencies","hasOwn","classes","i","arg","appendClass","parseValue","isArray","apply","newClass","module","exports","default"],"sourceRoot":""}