{"version":3,"file":"login.DMRXNmpc.js","sources":["../Client/legacy/Components/Login.ts","../Client/legacy/Login/InvalidNpn/hook.ts","../Client/legacy/Login/InvalidNpn/index.tsx","../Client/legacy/Login/InvalidPhone/index.tsx","../Client/legacy/Login/index.tsx"],"sourcesContent":["import * as Api from '@api/MembershipApi';\r\nimport * as Common from '@shared/Common';\r\nimport * as Constants from '@shared/Constants';\r\nimport * as Storage from '@shared/Storage';\r\n\r\nexport class LoginResult {\r\n    error: string | undefined;\r\n    errorCode: number;\r\n    phoneNumberInvalid: boolean;\r\n    npnInvalid: boolean;\r\n    agentId: number | undefined;\r\n    agentPhoneNumber: string | undefined;\r\n    contactNpn: string;\r\n    locationNpn: string;\r\n}\r\n\r\nexport async function login(\r\n    userId: string,\r\n    password: string,\r\n    rememberMe: boolean,\r\n    isLoggedInFromQueryString: boolean = false,\r\n    validateContactInfo: boolean = true\r\n): Promise<LoginResult> {\r\n    const result = new LoginResult();\r\n\r\n    try {\r\n        const data = await Api.login({\r\n            UserName: userId,\r\n            Password: password,\r\n            RememberMe: rememberMe,\r\n            IsLoggedInFromQueryString: isLoggedInFromQueryString,\r\n        });\r\n\r\n        if (validateContactInfo) {\r\n            const contactInfo = await Api.validateContactInfo(userId, password);\r\n            result.phoneNumberInvalid = false;\r\n            result.npnInvalid = false;\r\n            result.agentId = contactInfo.agentId;\r\n            result.agentPhoneNumber = contactInfo.agentPhoneNumber;\r\n            result.contactNpn = contactInfo.contactNpn;\r\n            result.locationNpn = contactInfo.locationNpn;\r\n            if (!contactInfo.agentPhoneNumber || !Common.validatePhoneNumber(contactInfo.agentPhoneNumber)) {\r\n                result.phoneNumberInvalid = true;\r\n                return result;\r\n            }\r\n            if (contactInfo.npnRequired) {\r\n                result.npnInvalid = true;\r\n                return result;\r\n            }\r\n        }\r\n\r\n        Storage.setRememberMe(rememberMe);\r\n\r\n        if (data.token) {\r\n            const rememberMe = Storage.getRememberMe();\r\n            Storage.setAuth(data.token, rememberMe, data.hasJwt);\r\n            const roles = data.roles as Constants.AccessRole[];\r\n            Storage.setRoles(roles);\r\n            Storage.setLoginDetails(data.details);\r\n\r\n            const root = Common.getRootPageForLoggedInAgent(data.details);\r\n\r\n            let returnUrl = decodeURIComponent(Common.getQueryVariable('returnUrl') || root);\r\n            if (!Common.isSameDomain(returnUrl)) {\r\n                returnUrl = root;\r\n            }\r\n\r\n            // If the returnUrl is for an ISO form request, we need to simulate a click on the link to download the form, then redirect to the home page.\r\n            // This is because the request returns a file, not a page, so we can't redirect to it, but we want to redirect the user to login so they can conveniently\r\n            // download the form if they aren't already logged in. See Swyfft.Web/App/Controllers/Api/ISOFormsController.cs for more info. SW-25234.\r\n            if (returnUrl.includes('api/iso-forms')) {\r\n                const link = document.createElement('a');\r\n                Common.setMultipleAttributes(link, {\r\n                    href: returnUrl,\r\n                    download: true,\r\n                });\r\n                link.click();\r\n                Common.navigate(root);\r\n            } else {\r\n                Common.navigate(returnUrl);\r\n            }\r\n        } else {\r\n            await Common.handleError(\r\n                'Login',\r\n                'The login returned an unexpected result. Contact customersupport@swyfft.com for assistance.',\r\n                `User Roles: ${Storage.getRoles().toString()}`\r\n            );\r\n        }\r\n    } catch (reason) {\r\n        const error = Common.normalizeError(reason);\r\n        const errorCode = error.code ? parseInt(error.code) : 0;\r\n\r\n        // For back end exceptions we don't want to display the returned message since it will likely confuse users and could potentially contain sensitive\r\n        // info, so we specify a generic error instead.\r\n        if (errorCode >= 500) {\r\n            result.error = 'A server error occurred, please retry.';\r\n        } else {\r\n            result.error = error.message;\r\n        }\r\n\r\n        result.errorCode = error.subCode ? parseInt(error.subCode) : errorCode;\r\n    }\r\n\r\n    return result;\r\n}\r\n","import { importProducerContactNpnLicenses, importProducerLocationNpnLicenses } from '@api/AgenciesApi';\r\nimport { logout } from '@shared/Common';\r\nimport { useFormReducer } from '@shared/Hooks';\r\nimport { Rules, Value } from '@webkit/index';\r\nimport { useState } from 'react';\r\nimport { InvalidNpnAlertProps } from './models';\r\n\r\nconst npnRules = [Rules.required(), Rules.integer(), Rules.minLength(4), Rules.maxLength(9)];\r\n\r\nexport function useInvalidNpnAlert(props: InvalidNpnAlertProps) {\r\n    const [loading, setLoading] = useState(false),\r\n        [error, setError] = useState<string | null>(null),\r\n        { form, set, submit, valid } = useFormReducer({\r\n            contactNpn: new Value<string>('agent NPN', props.contactNpn ?? '', npnRules),\r\n            locationNpn: new Value<string>('location NPN', props.locationNpn ?? '', npnRules),\r\n        });\r\n\r\n    return {\r\n        loading,\r\n        form,\r\n        set,\r\n        closeAndLogout,\r\n        submitNpnChanges,\r\n        error,\r\n    };\r\n\r\n    async function closeAndLogout() {\r\n        props.onClose();\r\n        await logout();\r\n    }\r\n\r\n    async function submitNpnChanges() {\r\n        submit();\r\n        if (!valid()) return;\r\n\r\n        try {\r\n            setLoading(true);\r\n            // Validates NPN (throws UI errors for invalid NPN) then updates NPN and imports licenses from NIPR.\r\n            await importProducerContactNpnLicenses(form.contactNpn.content);\r\n            await importProducerLocationNpnLicenses(form.locationNpn.content);\r\n            await props.onLogin();\r\n        } catch (e) {\r\n            let error = 'There was an unexpected error updating your NPN. Please try again or contact support.';\r\n\r\n            if (e instanceof Response) {\r\n                try {\r\n                    const json = await e.json();\r\n                    error = json.ErrorMessage || error;\r\n                } catch (e) {}\r\n            }\r\n\r\n            setError(error);\r\n        } finally {\r\n            setLoading(false);\r\n        }\r\n    }\r\n}\r\n","import { Button, ErrorIcon, Link, Modal, Paragraph, Text } from '@webkit/index';\r\nimport { useInvalidNpnAlert } from './hook';\r\nimport { InvalidNpnAlertProps } from './models';\r\n\r\nexport function InvalidNpnAlert(props: InvalidNpnAlertProps) {\r\n    const { loading, form, set, closeAndLogout, submitNpnChanges, error } = useInvalidNpnAlert(props);\r\n\r\n    return (\r\n        <Modal\r\n            id='invalid-npn-modal'\r\n            title='Update NPN'\r\n            isOpen={props.visible}\r\n            onOpenChange={async isOpen => isOpen || (await closeAndLogout())}\r\n            isDismissable={false}\r\n        >\r\n            <div className='grid grid-cols-1 gap-4 mt-4'>\r\n                <div className='grid grid-cols-1 gap-2'>\r\n                    <Paragraph>It looks like we don't have a valid NPN for your account.</Paragraph>\r\n\r\n                    <Paragraph>\r\n                        Please update it to continue signing in. If you need help, reach out to us at{' '}\r\n                        <Link href='mailto:marketingteam@swyfft.com'>marketingteam@swyfft.com</Link>.\r\n                    </Paragraph>\r\n\r\n                    <Paragraph>\r\n                        Need to look up your NPN?{' '}\r\n                        <Link href='https://nipr.com/help/look-up-your-npn' newTab>\r\n                            Click Here\r\n                        </Link>\r\n                        .\r\n                    </Paragraph>\r\n                </div>\r\n\r\n                <hr className='w-full m-0' />\r\n\r\n                <div className='grid grid-cols-1 sm:grid-cols-2 gap-3'>\r\n                    <Text\r\n                        id='contactNpn'\r\n                        label='Agent NPN'\r\n                        value={form.contactNpn}\r\n                        onChange={value => set('contactNpn', value)}\r\n                        autoFocus\r\n                    />\r\n                    <Text\r\n                        id='locationNpn'\r\n                        label='Agency Location NPN'\r\n                        value={form.locationNpn}\r\n                        onChange={value => set('locationNpn', value)}\r\n                    />\r\n                </div>\r\n\r\n                {error && (\r\n                    <div className='inline-flex items-start gap-3'>\r\n                        <ErrorIcon fontSize='small' className='text-brand-red-250' />\r\n                        <Paragraph>\r\n                            <span className='text-brand-red-250 mt-3'>{error}</span>\r\n                        </Paragraph>\r\n                    </div>\r\n                )}\r\n\r\n                <div className='grid grid-cols-1 sm:grid-cols-2 gap-3 mt-2'>\r\n                    <Button id='cancel' key='cancel' onClick={closeAndLogout} isSecondary>\r\n                        Cancel\r\n                    </Button>\r\n\r\n                    <Button id='update-npn-button' key='submit' onClick={submitNpnChanges} isLoading={loading}>\r\n                        Submit\r\n                    </Button>\r\n                </div>\r\n            </div>\r\n        </Modal>\r\n    );\r\n}\r\n","import { setProducerContactPhone } from '@api/AgenciesApi';\r\nimport { PrimaryBlackButton, PrimaryGreenButton } from '@legacy/Components/FormGroups/Buttons';\r\nimport { TextFormGroup } from '@legacy/Components/FormGroups/Text';\r\nimport Modal, { ModalButtons, ModalText, ModalTitle } from '@legacy/Components/Modals/StandardModal';\r\nimport * as Common from '@shared/Common';\r\nimport { Rules, Value } from '@webkit/index';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nexport const InvalidPhoneNumberModal = (props: {\r\n    visible: boolean;\r\n    onClose: () => void;\r\n    onLogin: () => Promise<void>;\r\n    onError: (message: string) => void;\r\n    agentPhoneNumber?: string;\r\n}) => {\r\n    const [loading, setLoading] = useState<boolean>(false);\r\n    const [form, setForm] = useState({\r\n        phone: new Value<string>('phone number', '', [\r\n            Rules.required(),\r\n            Rules.phone('Please enter a valid value for the phone number.'),\r\n        ]),\r\n        extension: new Value<string>('extension', ''),\r\n    });\r\n\r\n    const phoneRef = useRef<TextFormGroup | null>();\r\n\r\n    useEffect(() => {\r\n        if (phoneRef.current && props.visible) {\r\n            phoneRef.current.focus();\r\n        }\r\n    }, [props.visible]);\r\n\r\n    return (\r\n        <Modal\r\n            id='invalid-phone-number-modal'\r\n            show={props.visible}\r\n            hideFn={() => onClose()}\r\n            className='invalid-phone-number-modal-bs std-confirm-modal-cp'\r\n            disableClickOutside={true}\r\n        >\r\n            <ModalTitle>Update Phone Number</ModalTitle>\r\n            <ModalText>\r\n                It looks like we don’t have a valid phone number for your account. Please update it to continue signing\r\n                in. If you need help, reach out to us at{' '}\r\n                <a href='mailto:marketingteam@swyfft.com'>marketingteam@swyfft.com</a>\r\n            </ModalText>\r\n\r\n            <div className='row-spacing-cp flex-row-cp'>\r\n                <TextFormGroup\r\n                    id='phone-number'\r\n                    ref={c => {\r\n                        phoneRef.current = c;\r\n                    }}\r\n                    label='Phone Number'\r\n                    className='flex-col-3-cp spacing-right-cp'\r\n                    inputClassName='small-border-radius-cp'\r\n                    value={form.phone}\r\n                    placeholder='(987) 654-3210'\r\n                    onTextChange={(value: string) => {\r\n                        setForm({ ...form, phone: form.phone.set(value) });\r\n                    }}\r\n                />\r\n\r\n                <TextFormGroup\r\n                    id='extension'\r\n                    label='Extension'\r\n                    inputClassName='small-border-radius-cp'\r\n                    value={form.extension}\r\n                    onTextChange={(value: string) => setForm({ ...form, extension: form.extension.set(value) })}\r\n                />\r\n            </div>\r\n\r\n            <ModalButtons\r\n                buttons={[\r\n                    <PrimaryBlackButton\r\n                        key='cancel'\r\n                        id='cancel'\r\n                        label='Log Out'\r\n                        onClick={() => onClose()}\r\n                        className='mini-button-cp'\r\n                    />,\r\n\r\n                    <PrimaryGreenButton\r\n                        id='update-phone-number-button'\r\n                        key='submit'\r\n                        label='Submit'\r\n                        onClick={() => onSubmit()}\r\n                        loading={loading}\r\n                        className='mini-button-cp'\r\n                    />,\r\n                ]}\r\n            />\r\n        </Modal>\r\n    );\r\n\r\n    function onClose() {\r\n        props.onClose();\r\n        Common.logout();\r\n    }\r\n\r\n    async function onSubmit() {\r\n        try {\r\n            form.phone.validate();\r\n            form.extension.validate();\r\n            setForm({ ...form });\r\n\r\n            if (!form.phone.valid || !form.extension.valid) {\r\n                return;\r\n            }\r\n\r\n            setLoading(true);\r\n            await setProducerContactPhone(form.phone.content, form.extension.content);\r\n            props.onLogin();\r\n        } catch (e) {\r\n            console.error(e);\r\n            props.onError(\r\n                `We were unable to update your phone number due to an error. Please contact customer support with help signing in.`\r\n            );\r\n        } finally {\r\n            setLoading(false);\r\n        }\r\n    }\r\n};\r\n","import LoginHeader from '@legacy/Components/Headers/Login';\r\nimport * as Login from '@legacy/Components/Login';\r\nimport Toast from '@legacy/Components/Toast';\r\nimport { FieldWrapper } from '@legacy/FormFields';\r\nimport { InvalidNpnAlert } from '@legacy/Login/InvalidNpn';\r\nimport { InvalidPhoneNumberModal } from '@legacy/Login/InvalidPhone';\r\nimport * as Main from '@legacy/Main';\r\nimport * as Common from '@shared/Common';\r\nimport * as Constants from '@shared/Constants';\r\nimport Portal from '@webkit/components/portal';\r\nimport { Rules, Value } from '@webkit/index';\r\nimport * as React from 'react';\r\nimport './style.scss';\r\n\r\nconst loginErrors = {\r\n    110: (_: string) => (\r\n        <>\r\n            The provided user ID or password is incorrect. If you've forgotten your password, click{' '}\r\n            <a href='/login/forgottenpassword'>here</a>.\r\n        </>\r\n    ),\r\n    111: (userId: string) => <>{`Agent \"${userId}\" is in an inactive status.`}</>,\r\n    112: (userId: string) => <>{`More than one active agent was found with user ID \"${userId}\".`}</>,\r\n};\r\n\r\ntype Props = {\r\n    customerSupportPhoneNumber: string;\r\n    customerSupportPhoneExtension: string;\r\n};\r\n\r\ntype State = {\r\n    errorCode: number | null;\r\n    errorMessage?: string;\r\n    errors: any[];\r\n    userId: Value<string>;\r\n    password: Value<string>;\r\n    rememberMe: boolean;\r\n    initialized: boolean;\r\n    showPhoneModal: boolean;\r\n    showNpnModal: boolean;\r\n    agentId?: number;\r\n    agentPhoneNumber?: string;\r\n    contactNpn: string;\r\n    locationNpn: string;\r\n    loggedInFromQueryString?: boolean;\r\n};\r\n\r\nexport class LoginPage extends React.Component<Props, State> {\r\n    private toast: Toast | null;\r\n\r\n    constructor(props: Props) {\r\n        super(props);\r\n\r\n        let query = Common.getQueryObject();\r\n        this.state = {\r\n            errorCode: null,\r\n            errorMessage: '',\r\n            errors: [],\r\n            userId: new Value<string>('email address', query.get('userid') || '', [Rules.required(), Rules.email()]),\r\n            password: new Value<string>('password', query.get('password') || '', [Rules.required()]),\r\n            rememberMe: false,\r\n            initialized: false,\r\n            showPhoneModal: false,\r\n            showNpnModal: false,\r\n            loginDetails: null,\r\n            agentPhoneNumber: '',\r\n            contactNpn: '',\r\n            locationNpn: '',\r\n            loggedInFromQueryString: false,\r\n        } as State;\r\n\r\n        if (query.get('userid') && query.get('password')) {\r\n            this.setState({ loggedInFromQueryString: true });\r\n            Common.logout().then(() => this.login(null));\r\n        }\r\n    }\r\n\r\n    render() {\r\n        return (\r\n            <>\r\n                <div id='wrapper'>\r\n                    <LoginHeader />\r\n                    <div>\r\n                        <section className='login-area'>\r\n                            <div className='container'>\r\n                                <div className='row'>\r\n                                    <div className='col-xs-12'>\r\n                                        <form className='form-login' autoComplete='off' onSubmit={e => this.login(e)}>\r\n                                            <div className='login-holder' onChange={this.onChange.bind(this)}>\r\n                                                <div className='form-group'>\r\n                                                    <div className='input-holder'>\r\n                                                        <FieldWrapper\r\n                                                            id='login-AgentID'\r\n                                                            name='agentID'\r\n                                                            className='agent-id-bs'\r\n                                                            inputClassName='custom-form-control login-input-bs'\r\n                                                            labelClassName='input-label-bs'\r\n                                                            type='text'\r\n                                                            value={this.state.userId.content}\r\n                                                            invalidate={!this.state.userId.valid}\r\n                                                            placeholder='Agent ID'\r\n                                                            active={true}\r\n                                                            onChange={() => {}}\r\n                                                            label='Your Email'\r\n                                                            autoFocus={true}\r\n                                                        />\r\n                                                        <span className='error-label-bs'>\r\n                                                            {this.state.userId.error}\r\n                                                        </span>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className='form-group'>\r\n                                                    <div className='input-holder'>\r\n                                                        <FieldWrapper\r\n                                                            id='login-Password'\r\n                                                            name='agentPassword'\r\n                                                            className='agent-password-bs'\r\n                                                            inputClassName='custom-form-control login-input-bs'\r\n                                                            labelClassName='input-label-bs'\r\n                                                            type='password'\r\n                                                            value={this.state.password.content}\r\n                                                            invalidate={!this.state.password.valid}\r\n                                                            placeholder='Password'\r\n                                                            active={true}\r\n                                                            onChange={() => {}}\r\n                                                            label='Password'\r\n                                                        />\r\n                                                        <span className='error-label-bs'>\r\n                                                            {this.state.password.error}\r\n                                                        </span>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className='form-group'>\r\n                                                    <label\r\n                                                        onClick={this.onCheck.bind(this)}\r\n                                                        className='remember-me-container'\r\n                                                    >\r\n                                                        <span\r\n                                                            className={`jcf-checkbox checkbox-field-md remember-me ${\r\n                                                                this.state.rememberMe ? 'jcf-checked' : ''\r\n                                                            }`}\r\n                                                        >\r\n                                                            <input\r\n                                                                id='remember_me'\r\n                                                                type='checkbox'\r\n                                                                value='remember-me'\r\n                                                                checked={this.state.rememberMe}\r\n                                                                style={{\r\n                                                                    position: 'absolute',\r\n                                                                    height: '100%',\r\n                                                                    width: '100%',\r\n                                                                    opacity: 0,\r\n                                                                    margin: 0,\r\n                                                                }}\r\n                                                                onChange={e => this.onCheck(e)}\r\n                                                            />\r\n                                                        </span>\r\n                                                        <span className='input-label-bs'>Remember me</span>\r\n                                                    </label>\r\n                                                </div>\r\n                                                <div>\r\n                                                    {this.state.errorCode && (\r\n                                                        <label id='unauthorizedErrorLabel' className='errorLabel'>\r\n                                                            {!!this.state.errorMessage\r\n                                                                ? this.state.errorMessage\r\n                                                                : loginErrors[this.state.errorCode](\r\n                                                                      this.state.userId.content\r\n                                                                  )}\r\n                                                        </label>\r\n                                                    )}\r\n                                                </div>\r\n                                                <div className='row'>\r\n                                                    <div className='col-xs-12 col-sm-12 col-lg-3 col-md-3'>\r\n                                                        <input\r\n                                                            type='submit'\r\n                                                            value='Submit'\r\n                                                            className='btn btn-default login-btn-bs'\r\n                                                            id='login-button'\r\n                                                        />\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className='row'>\r\n                                                    <div className='col-xs-12'>\r\n                                                        <a\r\n                                                            href='/Login/ForgottenPassword'\r\n                                                            className='forgotten-password-bs'\r\n                                                        >\r\n                                                            Forgot your password?\r\n                                                        </a>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className='row'>\r\n                                                    <div className='col-xs-12'>\r\n                                                        <a\r\n                                                            href={`${Constants.pages.NewAgent}`}\r\n                                                            className='forgotten-password-bs'\r\n                                                        >\r\n                                                            Not a Swyfft Agent or Need a login?\r\n                                                        </a>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </form>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n\r\n                            <Toast\r\n                                ref={c => {\r\n                                    this.toast = c;\r\n                                }}\r\n                            />\r\n                        </section>\r\n                    </div>\r\n                </div>\r\n\r\n                <Portal>\r\n                    <InvalidPhoneNumberModal\r\n                        // The key in this case is used to force a re-render of the component when the phone number changes.\r\n                        key={this.state.agentPhoneNumber}\r\n                        visible={this.state.showPhoneModal}\r\n                        onClose={() => this.setState({ showPhoneModal: false })}\r\n                        onLogin={async () => await this.submitLogin()}\r\n                        onError={(message: string) => this.onError(message)}\r\n                        agentPhoneNumber={this.state.agentPhoneNumber}\r\n                    />\r\n                </Portal>\r\n\r\n                <Portal>\r\n                    <InvalidNpnAlert\r\n                        // The key in this case is used to force a re-render of the component when the npn changes.\r\n                        key={this.state.locationNpn}\r\n                        visible={this.state.showNpnModal}\r\n                        onClose={() => this.setState({ showNpnModal: false })}\r\n                        onLogin={async () => await this.submitLogin()}\r\n                        contactNpn={this.state.contactNpn}\r\n                        locationNpn={this.state.locationNpn}\r\n                    />\r\n                </Portal>\r\n            </>\r\n        );\r\n    }\r\n\r\n    onChange(e) {\r\n        let target = e.target,\r\n            key;\r\n        if (target.name === 'agentID') key = 'userId';\r\n        else if (target.name === 'agentPassword') key = 'password';\r\n\r\n        if (key) {\r\n            let state = this.state;\r\n            let value = state[key];\r\n            value.set(e.target.value);\r\n            this.setState(state);\r\n        }\r\n    }\r\n\r\n    onCheck(e) {\r\n        this.setState({\r\n            rememberMe: !this.state.rememberMe,\r\n        });\r\n\r\n        e.preventDefault();\r\n    }\r\n\r\n    onError(message: string) {\r\n        if (this.toast) this.toast.error(message);\r\n    }\r\n\r\n    async login(e) {\r\n        if (e) e.preventDefault();\r\n\r\n        this.setState({\r\n            errorCode: null,\r\n            errorMessage: '',\r\n        });\r\n\r\n        this.state.userId.validate();\r\n        this.state.password.validate();\r\n\r\n        if (this.state.userId.error || this.state.password.error) {\r\n            return;\r\n        }\r\n\r\n        await this.submitLogin();\r\n    }\r\n\r\n    private async submitLogin() {\r\n        this.setState({ showPhoneModal: false, showNpnModal: false });\r\n\r\n        const result = await Login.login(\r\n            this.state.userId.content,\r\n            this.state.password.content,\r\n            this.state.rememberMe,\r\n            this.state.loggedInFromQueryString\r\n        );\r\n\r\n        this.setState({\r\n            initialized: true,\r\n            errorCode: result.errorCode,\r\n            errorMessage: result.error,\r\n            showPhoneModal: result.phoneNumberInvalid,\r\n            showNpnModal: result.npnInvalid,\r\n            agentId: result.agentId,\r\n            agentPhoneNumber: result.agentPhoneNumber,\r\n            contactNpn: result.contactNpn,\r\n            locationNpn: result.locationNpn,\r\n        });\r\n    }\r\n}\r\n\r\nexport function init() {\r\n    Main.init();\r\n    Common.renderComponent(\r\n        <LoginPage\r\n            customerSupportPhoneNumber={(window as any).Phone}\r\n            customerSupportPhoneExtension={(window as any).PhoneMarketingExtension}\r\n        />\r\n    );\r\n}\r\n\r\ninit();\r\n"],"names":["LoginResult","__publicField","login","userId","password","rememberMe","isLoggedInFromQueryString","validateContactInfo","result","data","Api.login","contactInfo","Api.validateContactInfo","Common.validatePhoneNumber","Storage.setRememberMe","Storage.getRememberMe","Storage.setAuth","roles","Storage.setRoles","Storage.setLoginDetails","root","Common.getRootPageForLoggedInAgent","returnUrl","Common.getQueryVariable","Common.isSameDomain","link","Common.setMultipleAttributes","Common.navigate","Common.handleError","Storage.getRoles","reason","error","Common.normalizeError","errorCode","npnRules","Rules.required","Rules.integer","Rules.minLength","Rules.maxLength","useInvalidNpnAlert","props","loading","setLoading","useState","setError","form","set","submit","valid","useFormReducer","Value","closeAndLogout","submitNpnChanges","logout","importProducerContactNpnLicenses","importProducerLocationNpnLicenses","e","InvalidNpnAlert","jsx","Modal","isOpen","jsxs","Paragraph","Link","Text","value","ErrorIcon","Button","InvalidPhoneNumberModal","setForm","Rules.phone","phoneRef","useRef","useEffect","onClose","ModalTitle","ModalText","TextFormGroup","ModalButtons","PrimaryBlackButton","PrimaryGreenButton","onSubmit","Common.logout","setProducerContactPhone","loginErrors","_","Fragment","LoginPage","React.Component","query","Common.getQueryObject","Rules.email","LoginHeader","FieldWrapper","Constants.pages","Toast","c","Portal","message","target","key","state","Login.login","init","Main.init","Common.renderComponent"],"mappings":"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"}