{"version":3,"file":"login.obs.js","sources":["../../src/Security/types.partial.ts","../../src/Security/breakpointObserver.partial.obs","../../src/Security/Login/htmlRenderer.partial.obs","../../src/Security/Login/credentialLogin.partial.obs","../../src/Security/Login/divider.partial.obs","../../../Rock.JavaScript.Obsidian/node_modules/style-inject/dist/style-inject.es.js","../../src/Security/Login/externalLogin.partial.obs","../../src/Security/Login/loginMethodPicker.partial.obs","../../src/Security/Login/passwordlessLoginStartStep.partial.obs","../../src/Security/Login/passwordlessLoginVerifyStep.partial.obs","../../src/Security/Login/passwordlessLogin.partial.obs","../../src/Security/login.obs"],"sourcesContent":["// <copyright>\n// Copyright by the Spark Development Network\n//\n// Licensed under the Rock Community License (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.rockrms.com/license\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// </copyright>\n//\n\nimport { InjectionKey, Ref, inject, provide } from \"vue\";\n\nexport type CodeBoxCharacterController = {\n    focus(): void;\n    clear(): void;\n    boxIndex: number;\n};\n\nexport type Breakpoint = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"unknown\";\n\n/**\n * An injection key to provide a reactive bootstrap breakpoint to descendent components.\n */\nconst bootstrapBreakpointInjectionKey: InjectionKey<Ref<Breakpoint>> = Symbol(\"bootstrap-breakpoint\");\n\n/**\n * Provides the reactive breakpoint that can be used by child components.\n */\nexport function provideBreakpoint(breakpoint: Ref<Breakpoint>): void {\n    provide(bootstrapBreakpointInjectionKey, breakpoint);\n}\n\n/**\n * Gets the breakpoint that can be used to provide responsive behavior.\n */\nexport function useBreakpoint(): Ref<Breakpoint> {\n    const breakpoint = inject(bootstrapBreakpointInjectionKey);\n\n    if (!breakpoint) {\n        throw \"provideBreakpoint must be invoked before useBreakpoint can be used. If useBreakpoint is in a component where <BreakpointObserver> is used in the template, then use the @breakpoint output binding to get the breakpoint.\";\n    }\n\n    return breakpoint;\n}","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <slot></slot>\n\n    <div ref=\"breakpointHelperDiv\"\n         style=\"visibility: collapse !important;\"\n         :class=\"classes\"></div>\n</template>\n\n<script setup lang=\"ts\">\n    import { computed, onBeforeUnmount, onMounted, ref } from \"vue\";\n    import { Breakpoint, provideBreakpoint } from \"./types.partial\";\n\n    defineProps();\n\n    const emit = defineEmits<{\n        (e: \"breakpoint\", value: Breakpoint): void\n    }>();\n\n    const breakpointDisplays: Partial<Record<Breakpoint, string>> = {\n        \"xs\": \"none\",\n        \"sm\": \"inline\",\n        \"md\": \"inline-block\",\n        \"lg\": \"block\",\n        \"xl\": \"table\"\n    };\n\n    const displayBreakpoints: Record<string, Breakpoint> = Object.entries(breakpointDisplays).reduce((swapped, [key, value]) => ({\n        ...swapped,\n        [value]: key\n    }), {});\n\n    const classes: string[] = Object.keys(breakpointDisplays)\n        .map((breakpoint: string) => breakpoint as Breakpoint)\n        .map((breakpoint: Breakpoint) => breakpoint === \"xs\" ? `d-${breakpointDisplays[breakpoint]}` : `d-${breakpoint}-${breakpointDisplays[breakpoint]}`);\n\n    //#region Values\n\n    /**\n     * This div helps determine the responsive breakpoint based on CSS rules.\n     *\n     * The element has `class=\"d-none d-sm-inline d-md-inline-block d-lg-block d-xl-table\"`\n     * so whenever the screen is a specific width, the div's `display` property will be updated.\n     * We can efficiently re-check the breakpoint by listening to the window \"resize\" event\n     * and examining the current `display` property.\n     *\n     * Lastly, we need `visibility: collapse !important` in the div's inline style\n     * because we want to keep the element invisible while the `display` is being updated.\n     */\n    const breakpointHelperDiv = ref<HTMLElement | undefined>();\n    const breakpoint = ref<Breakpoint>(\"unknown\");\n    const internalBreakpoint = computed<Breakpoint>({\n        get() {\n            return breakpoint.value;\n        },\n        set(newValue: Breakpoint) {\n            breakpoint.value = newValue;\n\n            // Emit so client code can use output binding\n            // if unable to use the provide/inject pattern.\n            emit(\"breakpoint\", breakpoint.value);\n        }\n    });\n\n    //#endregion\n\n    //#region Functions\n\n    /** Checks if the breakpoint changed */\n    function checkBreakpoint(): void {\n        // Skip if the div element is not set (this could happen if this component isn't mounted).\n        if (!breakpointHelperDiv.value) {\n            return;\n        }\n\n        // Get the breakpoint that is mapped to the `display` style property.\n        const display = getComputedStyle(breakpointHelperDiv.value).display;\n        const newBreakpoint: Breakpoint = displayBreakpoints[display] ?? \"unknown\";\n        internalBreakpoint.value = newBreakpoint;\n    }\n\n    //#endregion\n\n    //#region Event Handlers\n\n    /** Event handler for the window \"resize\" event. */\n    function onWindowResized(): void {\n        checkBreakpoint();\n    }\n\n    //#endregion\n\n    // Provide the reactive breakpoint to child components.\n    provideBreakpoint(breakpoint);\n\n    onMounted(() => {\n        // Check the breakpoint initially and wire up the window \"resize\" event handler.\n        checkBreakpoint();\n        addEventListener(\"resize\", onWindowResized);\n    });\n\n    onBeforeUnmount(() => {\n        // Remove the window \"resize\" event handler when this component is unmounted.\n        removeEventListener(\"resize\", onWindowResized);\n    });\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <div :id=\"id\" style=\"display: none;\">\n        <!-- This will be removed once the component is mounted. -->\n    </div>\n</template>\n\n<script setup lang=\"ts\">\n    import { onMounted, PropType, ref, watch } from \"vue\";\n    import { newGuid } from \"@Obsidian/Utility/guid\";\n\n    const props = defineProps({\n        html: {\n            type: String as PropType<string>\n        }\n    });\n\n    const id = newGuid();\n\n    const mountPoint = ref<Node | undefined>();\n    const mountedWrapper = ref<HTMLElement | undefined>();\n    const mountedNodes = ref<Node[]>([]);\n\n    /**\n     * Mounts the supplied HTML onto the DOM between the mount points.\n     *\n     * If the supplied HTML has not been converted to HTMLElement objects\n     * or if the mount points are not in the DOM, then this method does nothing.\n     */\n    function mountHtml(): void {\n        const mountedWrapperElement = mountedWrapper.value;\n        const mountPointElement = mountPoint.value;\n\n        if (!mountedWrapperElement || !mountPointElement) {\n            // Cannot mount because the mount point or element to be mounted are not defined yet.\n            return;\n        }\n\n        const parentElement = mountPointElement.parentElement;\n\n        if (!parentElement) {\n            // Cannot mount because this component hasn't fully been mounted onto a parent element.\n            return;\n        }\n\n        if (mountedWrapperElement.childNodes.length === 0) {\n            // Nothing to mount.\n            return;\n        }\n\n        mountedNodes.value = [];\n        for (let i = 0; i < mountedWrapperElement.childNodes.length; i++) {\n            // Insert the HTML before the mount point element.\n            const childNode = mountedWrapperElement.childNodes[i];\n            parentElement.insertBefore(childNode, mountPointElement);\n            mountedNodes.value.push(childNode);\n        }\n\n        // Remove the comment node from the DOM (this will be added back when unmount is called);\n        parentElement.removeChild(mountPointElement);\n    }\n\n    /**\n     * Unmounts the supplied HTML from the DOM between the mount points.\n     *\n     * If the mount points are not in the DOM or if there is nothing to\n     * unmount, then this method does nothing.\n     */\n    function unmountHtml(): void {\n        const nodesToRemove = mountedNodes.value;\n\n        if (nodesToRemove.length === 0) {\n            // Nothing to unmount.\n            return;\n        }\n\n        const mountPointElement = mountPoint.value;\n\n        if (!mountPointElement) {\n            // Nothing to unmount because the mount point is not defined yet.\n            return;\n        }\n\n        // Clear mounted nodes.\n        const parentElement = nodesToRemove[0].parentElement;\n        if (!parentElement) {\n            // Nothing to unmount because this component hasn't fully been mounted, itself.\n            return;\n        }\n\n        // Add the comment before removing child nodes.\n        parentElement.insertBefore(mountPointElement, nodesToRemove[0]);\n\n        // Remove the child nodes.\n        for (const node of nodesToRemove) {\n            parentElement.removeChild(node);\n        }\n    }\n\n    watch([() => props.html, mountPoint], ([newHtml, newMount], [oldHtml, _oldMount]) => {\n        // If any changes are made, unmount the old HTML.\n        unmountHtml();\n\n        if (newHtml !== oldHtml) {\n            // Reset the mounted wrapper if the HTML was changed.\n            mountedWrapper.value = undefined;\n        }\n\n        // Create a new element to be mounted, if necessary.\n        if (!mountedWrapper.value && newHtml) {\n            const tempDiv = document.createElement(\"div\");\n            tempDiv.innerHTML = newHtml;\n            mountedWrapper.value = tempDiv;\n        }\n\n        if (newMount) {\n            mountHtml();\n        }\n    });\n\n    onMounted(() => {\n        // Swap out the div placeholder for mount point comment node.\n        // The comment node is what will be used to dynamically insert the HTML\n        // into the correct location in the DOM without adding any rendered HTML elements.\n        const div = document.getElementById(id);\n        mountPoint.value = document.createComment(\"\");\n        div?.parentElement?.insertBefore(mountPoint.value, div);\n        div?.remove();\n    });\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <RockForm @submit=\"onCredentialLoginSubmitted\">\n        <HtmlRenderer v-if=\"promptMessage\" :html=\"promptMessage\" />\n\n        <TextBox v-model=\"username\"\n                 :disabled=\"disabled\"\n                 :isRequiredIndicatorHidden=\"true\"\n                 :label=\"usernameFieldLabel\"\n                 rules=\"required\"\n                 type=\"text\" />\n\n        <TextBox v-model=\"password\"\n                 :disabled=\"disabled\"\n                 :isRequiredIndicatorHidden=\"true\"\n                 label=\"Password\"\n                 rules=\"required\"\n                 type=\"password\" />\n\n        <InlineCheckBox v-if=\"!isRememberMeHidden\"\n                        v-model=\"rememberMe\"\n                        :disabled=\"disabled\"\n                        label=\"Keep me logged in\" />\n\n        <RockButton autoDisable\n                    :btnType=\"BtnType.Primary\"\n                    :class=\"isMobile ? 'btn-block' : 'd-inline-block'\"\n                    :disabled=\"disabled\"\n                    type=\"submit\">Log In</RockButton>\n\n        <RockButton v-if=\"!isNewAccountHidden\"\n                    autoDisable\n                    :btnType=\"BtnType.Action\"\n                    :class=\"isMobile ? 'btn-block mt-2' : 'ml-1 d-inline-block'\"\n                    :disabled=\"disabled\"\n                    type=\"button\"\n                    @click=\"onRegisterClicked\">{{ newAccountButtonText }}</RockButton>\n\n        <RockButton autoDisable\n                    :btnType=\"BtnType.Link\"\n                    :class=\"isMobile ? 'btn-block mt-2' : 'ml-1 d-inline-block'\"\n                    :disabled=\"disabled\"\n                    type=\"button\"\n                    @click=\"onForgotAccountClicked\">Forgot Account</RockButton>\n    </RockForm>\n</template>\n\n<script setup lang=\"ts\">\n    import { computed, PropType, ref } from \"vue\";\n    import HtmlRenderer from \"./htmlRenderer.partial.obs\";\n    import { useBreakpoint } from \"../types.partial\";\n    import InlineCheckBox from \"@Obsidian/Controls/inlineCheckBox.obs\";\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\n    import RockForm from \"@Obsidian/Controls/rockForm.obs\";\n    import TextBox from \"@Obsidian/Controls/textBox.obs\";\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\n    import { CredentialLoginRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/credentialLoginRequestBag\";\n\n    const props = defineProps({\n        disabled: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        isMobileForced: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        isNewAccountHidden: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        isRememberMeHidden: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        newAccountButtonText: {\n            type: String as PropType<string | null | undefined>,\n            required: false\n        },\n        promptMessage: {\n            type: String as PropType<string | null | undefined>,\n            required: false\n        },\n        usernameFieldLabel: {\n            type: String as PropType<string | null | undefined>,\n            required: false\n        }\n    });\n\n    const emit = defineEmits<{\n        (e: \"forgotAccount\"): void,\n        (e: \"login\", _value: CredentialLoginRequestBag): void,\n        (e: \"register\"): void\n    }>();\n\n    // #region Values\n\n    const breakpoint = useBreakpoint();\n    const username = ref<string>(\"\");\n    const password = ref<string>(\"\");\n    const rememberMe = ref<boolean>(false);\n\n    // #endregion\n\n    // #region Computed Values\n\n    const usernameFieldLabel = computed(() => props.usernameFieldLabel || \"Username\");\n    const newAccountButtonText = computed(() => props.newAccountButtonText || \"Register\");\n    const isMobile = computed<boolean>(() => props.isMobileForced || breakpoint.value === \"xs\");\n\n    // #endregion\n\n    // #region Event Handlers\n\n    /**\n     * Event handler for the credential login form being submitted.\n     */\n    function onCredentialLoginSubmitted(): void {\n        emit(\"login\", {\n            username: username.value,\n            password: password.value,\n            rememberMe: rememberMe.value\n        });\n    }\n\n    /**\n     * Event handler for the Forgot Account button being clicked.\n     */\n    function onForgotAccountClicked(): void {\n        emit(\"forgotAccount\");\n    }\n\n    /**\n     * Event handler for the Register button being clicked.\n     */\n    function onRegisterClicked(): void {\n        emit(\"register\");\n    }\n\n    // #endregion\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <div :class=\"dividerClassRef\">\n        <div class=\"rock-divider-line\"></div><div v-if=\"isContentVisible\" class=\"rock-divider-content\" v-html=\"content\"></div><div v-if=\"isContentVisible\" class=\"rock-divider-line\"></div>\n    </div>\n</template>\n\n\n<style scoped>\n* {\n    --var-divider-color: #a4a4a4;\n}\n\n.rock-divider {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    margin: 2rem 0;\n}\n\n.rock-divider-line {\n    flex: 1;\n    border-top: 1px solid var(--var-divider-color);\n}\n\n.rock-divider-content {\n    padding: 0 1rem;\n    color: var(--var-divider-color);\n}\n\n.rock-divider-vertical {\n    flex-direction: column;\n    margin: 0;\n}\n\n.rock-divider-vertical .rock-divider-line {\n    border: 0;\n    border-left: 1px solid var(--var-divider-color);\n}\n\n</style>\n\n<script setup lang=\"ts\">\n    import { computed, PropType } from \"vue\";\n\n    const props = defineProps({\n        isVertical: {\n            type: Object as PropType<boolean>,\n            required: false,\n            default: () => false\n        },\n\n        content: {\n            type: Object as PropType<string>,\n            required: false,\n            default: () => null\n        }\n    });\n\n    // #region Values\n\n    // #endregion\n\n    // #region Computed Values\n\n    const isContentVisible = computed(() => !!props.content);\n    const dividerClassRef = computed(() => `rock-divider${props.isVertical ? \" rock-divider-vertical\" : \"\"}`);\n\n    // #endregion\n\n    // #region Functions\n\n    // #endregion\n\n    // #region Event Handlers\n\n    // #endregion\n</script>\n","function styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nexport default styleInject;\n","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <p v-if=\"hasExternalLogins && isCaptionNotEmpty\" v-html=\"caption\"></p>\n\n    <RockButton v-for=\"login in externalLogins\"\n                :btnType=\"BtnType.Authentication\"\n                :class=\"login.cssClass + ' btn-authentication-v2'\"\n                :disabled=\"disabled\"\n                @click=\"onExternalLoginClick(login)\"><span>{{ login.text }}</span></RockButton>\n</template>\n\n<script setup lang=\"ts\">\n    import { computed, PropType } from \"vue\";\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\n    import { ExternalAuthenticationButtonBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/externalAuthenticationButtonBag\";\n\n    const props = defineProps({\n        modelValue: {\n            type: Array as PropType<ExternalAuthenticationButtonBag[]>,\n            required: true,\n            default: []\n        },\n        disabled: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        caption: {\n            type: String as PropType<string>,\n            required: false,\n            default: \"\"\n        }\n    });\n\n    const emit = defineEmits<{\n        (e: \"login\", value: ExternalAuthenticationButtonBag): void\n    }>();\n\n    // #endregion\n\n    // #region Computed Values\n\n    const externalLogins = computed<ExternalAuthenticationButtonBag[]>(() => {\n        return props.modelValue?.filter(l => !!l.authenticationType) ?? [];\n    });\n\n    const hasExternalLogins = computed<boolean>(() => !!externalLogins.value.length);\n\n    const isCaptionNotEmpty = computed<boolean>(() => !!props.caption);\n\n    // #endregion\n\n    // #region Event Handlers\n\n    /**\n     * Handles the event when an external login button is clicked.\n     */\n    function onExternalLoginClick(externalLogin: ExternalAuthenticationButtonBag): void {\n        emit(\"login\", externalLogin);\n    }\n\n    // #endregion\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n\n    <RockButton\n        v-if=\"isCredentialLoginSupported && internalLoginMethod !== LoginMethod.InternalDatabase\"\n        :btnType=\"BtnType.Default\"\n        class=\"btn-block\"\n        :disabled=\"disabled\"\n        type=\"button\"\n        @click=\"onSignInWithAccountClicked()\">Sign in with Account</RockButton>\n\n    <RockButton\n        v-else-if=\"isPasswordlessLoginSupported && internalLoginMethod !== LoginMethod.Passwordless\"\n        :btnType=\"BtnType.Default\"\n        class=\"btn-block\"\n        :disabled=\"disabled\"\n        type=\"button\"\n        @click=\"onSignInWithEmailOrPhoneClicked()\">Sign in with Email or Phone</RockButton>\n</template>\n\n<script setup lang=\"ts\">\n    import { PropType } from \"vue\";\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\n    import { LoginMethod } from \"@Obsidian/Enums/Blocks/Security/Login/loginMethod\";\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\n    import { useVModelPassthrough } from \"@Obsidian/Utility/component\";\n\n    const props = defineProps({\n        modelValue: {\n            type: Object as PropType<LoginMethod | undefined>,\n            required: true\n        },\n        isCredentialLoginSupported: {\n            type: Boolean as PropType<boolean>,\n            required: true\n        },\n        isPasswordlessLoginSupported: {\n            type: Boolean as PropType<boolean>,\n            required: true\n        },\n        disabled: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        }\n    });\n\n    const emit = defineEmits<{\n        (e: \"update:modelValue\", _value: LoginMethod | undefined): void\n    }>();\n\n    //#region Values\n\n    //#endregion\n\n    //#region Computed Values\n\n    const internalLoginMethod = useVModelPassthrough(props, \"modelValue\", emit);\n\n    //#endregion\n\n    //#region Event Handlers\n\n    function onSignInWithAccountClicked(): void {\n        internalLoginMethod.value = LoginMethod.InternalDatabase;\n    }\n\n    function onSignInWithEmailOrPhoneClicked(): void {\n        internalLoginMethod.value = LoginMethod.Passwordless;\n    }\n\n    //#endregion\n\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <RockValidation :errors=\"validationErrors\" />\n\n    <RockForm @submit=\"onPasswordlessLoginStartSubmitted\" >\n        <TextBox\n            v-model=\"emailOrPhoneNumber\"\n            :disabled=\"disabled\"\n            :isRequiredIndicatorHidden=\"true\"\n            :label=\"label\"\n            :rules=\"['required']\"></TextBox>\n\n        <RockButton\n            :btnType=\"BtnType.Primary\"\n            :class=\"isMobileForced ? 'btn-block' : 'btn-block d-sm-none'\"\n            :disabled=\"disabled\"\n            type=\"submit\">Continue</RockButton>\n        <RockButton\n            v-if=\"!isMobileForced\"\n            :btnType=\"BtnType.Primary\"\n            class=\"d-none d-sm-inline-block\"\n            :disabled=\"disabled\"\n            type=\"submit\">Continue</RockButton>\n    </RockForm>\n</template>\n\n<script setup lang=\"ts\">\n    import { computed, PropType, ref } from \"vue\";\n    import RockValidation from \"@Obsidian/Controls/rockValidation.obs\";\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\n    import RockForm from \"@Obsidian/Controls/rockForm.obs\";\n    import TextBox from \"@Obsidian/Controls/textBox.obs\";\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\n    import { isEmail } from \"@Obsidian/Utility/email\";\n    import { FormError } from \"@Obsidian/Utility/form\";\n    import { formatPhoneNumber, getPhoneNumberConfiguration, stripPhoneNumber } from \"@Obsidian/Utility/phone\";\n    import { validateValue } from \"@Obsidian/ValidationRules\";\n    import { PasswordlessLoginStartRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginStartRequestBag\";\n    import { PhoneNumberBoxGetConfigurationResultsBag } from \"@Obsidian/ViewModels/Rest/Controls/phoneNumberBoxGetConfigurationResultsBag\";\n    import { PhoneNumberCountryCodeRulesConfigurationBag } from \"@Obsidian/ViewModels/Rest/Controls/phoneNumberCountryCodeRulesConfigurationBag\";\n\n    const props = defineProps({\n        modelValue: {\n            type: Object as PropType<PasswordlessLoginStartRequestBag>,\n            required: true\n        },\n        disabled: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        isMobileForced: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        }\n    });\n\n    const emit = defineEmits<{\n        (e: \"start\"): void,\n        (e: \"update:modelValue\", _value: PasswordlessLoginStartRequestBag): void\n    }>();\n\n    //#region Values\n\n    const label = \"Email or Phone\";\n    const validationErrors = ref<FormError[]>([]);\n    const phoneNumberConfig = ref<PhoneNumberBoxGetConfigurationResultsBag>();\n    const emailOrPhoneNumberRaw = ref<string>(\"\");\n\n    //#endregion\n\n    //#region Computed Values\n\n    const emailOrPhoneNumber = computed<string>({\n        get() {\n            return emailOrPhoneNumberRaw.value;\n        },\n        set(newValue: string) {\n            emailOrPhoneNumberRaw.value = newValue;\n            validateEmailOrPhoneNumber(newValue);\n        }\n    });\n\n    //#endregion\n\n    //#region Event Handlers\n\n    /**\n     * Handles the event where the passwordless login start form is submitted.\n     */\n    function onPasswordlessLoginStartSubmitted(): void {\n        validateForm();\n\n        if (validationErrors.value.length === 0) {\n            emit(\"start\");\n        }\n    }\n\n    //#endregion\n\n    //#region Functions\n\n    /** Get all rules for any country code */\n    function getConfiguredRules(): PhoneNumberCountryCodeRulesConfigurationBag[] {\n        const rules = phoneNumberConfig.value?.rules;\n        const configuredRules: PhoneNumberCountryCodeRulesConfigurationBag[] = [];\n        if (rules) {\n            for (const key in rules) {\n                const bag = rules[key];\n                configuredRules.push(...bag);\n            }\n        }\n        return configuredRules;\n    }\n\n    /**\n     * Loads the phone number configuration for validation.\n     */\n    async function loadPhoneNumberConfig(): Promise<void> {\n        phoneNumberConfig.value = await getPhoneNumberConfiguration();\n    }\n\n    /**\n     *\n     */\n    function validateForm(): void {\n        const errorMessages = validateValue(emailOrPhoneNumber.value, validateEmailOrPhoneNumber);\n\n        if (errorMessages && errorMessages.length) {\n            validationErrors.value = errorMessages.map(\n                errorMessage => ({\n                    name: label,\n                    text: errorMessage\n                })\n            );\n        }\n        else {\n            validationErrors.value = [];\n        }\n    }\n\n    /**\n     * Validates the \"Email or Phone\" field and emits modelValue updates depending on validity.\n     *\n     * @param value the value to validate.\n     */\n    function validateEmailOrPhoneNumber(value: unknown): string | boolean {\n        if (!value) {\n            return true;\n        }\n\n        let errors = validateEmail(value);\n        if (errors === \"\") {\n            emit(\"update:modelValue\", {\n                ...props.modelValue,\n                email: value as string,\n                phoneNumber: null,\n                shouldSendEmailCode: true,\n                shouldSendEmailLink: true,\n                shouldSendSmsCode: false\n            });\n            return true;\n        }\n\n        const formattedNumber = formatPhoneNumber(stripPhoneNumber(value as string));\n        if (formattedNumber) {\n            errors = validatePhoneNumber(stripPhoneNumber(formattedNumber));\n            if (errors === \"\") {\n                emailOrPhoneNumberRaw.value = formattedNumber;\n                emit(\"update:modelValue\", {\n                    ...props.modelValue,\n                    email: null,\n                    phoneNumber: formattedNumber,\n                    shouldSendEmailCode: false,\n                    shouldSendEmailLink: false,\n                    shouldSendSmsCode: true\n                });\n                return true;\n            }\n        }\n\n        // Clear modelValue when invalid.\n        emit(\"update:modelValue\", {\n            ...props.modelValue,\n            email: null,\n            phoneNumber: null,\n            shouldSendEmailCode: false,\n            shouldSendEmailLink: false,\n            shouldSendSmsCode: false\n        });\n        return \"must be a valid email or phone number\";\n    }\n\n    /**\n     * Validates a value as an email address.\n     *\n     * @param value The value to validate.\n     */\n    function validateEmail(value: unknown): string {\n        if (!value) {\n            return \"\";\n        }\n\n        if (isEmail(value)) {\n            return \"\";\n        }\n\n        return \"Email must be a valid email address.\";\n    }\n\n    /**\n     * Validates a value as a phone number using the configuration retrieved from the server.\n     *\n     * @param value The value to validate.\n     */\n    function validatePhoneNumber(value: string): string {\n        const rules = getConfiguredRules();\n\n        if (!value) {\n            return \"\";\n        }\n\n        if (rules.length === 0) {\n            return \"\";\n        }\n\n        for (let rule of rules) {\n            const regex = new RegExp(rule.match ?? \"\");\n\n            if (regex.test(value)) {\n                return \"\";\n            }\n        }\n\n        return `Phone number '${value}' must be a valid phone number.`;\n    }\n\n    //#endregion\n\n    loadPhoneNumberConfig();\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <RockForm v-model:submit=\"internalSubmitPasswordlessLoginVerification\"\n              @submit=\"onPasswordlessLoginVerifySubmitted\">\n\n        <div class=\"mb-2\" ref=\"instructionsDiv\">Please enter your confirmation code below.</div>\n\n        <CodeBox v-model.capitalize=\"internalCode\"\n                 :disabled=\"disabled\"\n                 :maxLength=\"6\"\n                 rules=\"required\"\n                 validationTitle=\"Code\"\n                 @complete=\"onCodeCompleted\" />\n\n        <template v-if=\"modelValue.isPersonSelectionRequired\">\n            <p>The {{ internalCommunicationType }} you provided is matched to several different individuals. Please select the one that is you.</p>\n            <RadioButtonList v-model=\"internalMatchingPersonValue\"\n                             v-model:items=\"internalMatchingPeople\" />\n        </template>\n\n        <RockButton :btnType=\"BtnType.Primary\"\n                    :class=\"['complete-sign-in-btn', isMobile ? 'btn-block' : '']\"\n                    :disabled=\"disabled\"\n                    type=\"submit\">Complete Sign In</RockButton>\n\n        <RockButton autoDisable\n                    :btnType=\"BtnType.Action\"\n                    :class=\"isMobile ? 'btn-block mt-2' : 'ml-1'\"\n                    :disabled=\"disabled\"\n                    type=\"button\"\n                    @click=\"onResendCodeClicked\">Resend code</RockButton>\n    </RockForm>\n</template>\n\n<script setup lang=\"ts\">\n    import { computed, PropType, ref } from \"vue\";\n    import { PasswordlessCommunicationType } from \"./types.partial\";\n    import CodeBox from \"../codeBox.obs\";\n    import { useBreakpoint } from \"../types.partial\";\n    import RadioButtonList from \"@Obsidian/Controls/radioButtonList.obs\";\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\n    import RockForm from \"@Obsidian/Controls/rockForm.obs\";\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\n    import { useVModelPassthrough } from \"@Obsidian/Utility/component\";\n    import { PasswordlessLoginVerifyOptionsBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginVerifyOptionsBag\";\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\n\n    const props = defineProps({\n        modelValue: {\n            type: Object as PropType<PasswordlessLoginVerifyOptionsBag>,\n            required: true\n        },\n        communicationType: {\n            type: String as PropType<PasswordlessCommunicationType>,\n            required: false,\n            default: \"data\"\n        },\n        disabled: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        isMobileForced: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        submitPasswordlessLoginVerification: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        }\n    });\n\n    const emit = defineEmits<{\n        (e: \"resendCode\"): void,\n        (e: \"update:submitPasswordlessLoginVerification\", _value: boolean): void\n        (e: \"update:modelValue\", _value: PasswordlessLoginVerifyOptionsBag),\n        (e: \"verify\"): void,\n    }>();\n\n    //#region Values\n\n    const internalSubmitPasswordlessLoginVerification = useVModelPassthrough(props, \"submitPasswordlessLoginVerification\", emit);\n    const instructionsDiv = ref<HTMLElement | undefined>();\n    const breakpoint = useBreakpoint();\n\n    //#endregion\n\n    //#region Computed Values\n\n    const internalCode = computed({\n        get() {\n            return props.modelValue.code || \"\";\n        },\n        set(newValue: string) {\n            emit(\"update:modelValue\", {\n                ...props.modelValue,\n                code: newValue\n            });\n        }\n    });\n\n    const internalCommunicationType = computed(() => props.communicationType || \"data\");\n\n    const internalMatchingPeople = computed({\n        get() {\n            return props.modelValue.matchingPeople ?? [];\n        },\n        set(newValue: ListItemBag[]) {\n            emit(\"update:modelValue\", {\n                ...props.modelValue,\n                matchingPeople: newValue\n            });\n        }\n    });\n\n    const internalMatchingPersonValue = computed({\n        get() {\n            return props.modelValue.matchingPersonValue || \"\";\n        },\n        set(newValue: string) {\n            emit(\"update:modelValue\", {\n                ...props.modelValue,\n                matchingPersonValue: newValue\n            });\n        }\n    });\n\n    const isMobile = computed<boolean>(() => props.isMobileForced || breakpoint.value === \"xs\");\n\n    //#endregion\n\n    //#region Event Handlers\n\n    function onPasswordlessLoginVerifySubmitted(): void {\n        emit(\"verify\");\n    }\n\n    function onResendCodeClicked(): void {\n        internalCode.value = \"\";\n        internalMatchingPersonValue.value = \"\";\n        internalMatchingPeople.value = [];\n        emit(\"resendCode\");\n    }\n\n    function onCodeCompleted(): void {\n        const signInButton = instructionsDiv.value?.parentElement?.querySelector<HTMLButtonElement>(\"button.complete-sign-in-btn\");\n\n        if (signInButton) {\n            signInButton.focus();\n        }\n    }\n\n    //#endregion\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <PasswordlessLoginStartStep v-if=\"passwordlessLoginStep.isStart\"\n                                v-model=\"passwordlessLoginStartRequest\"\n                                :disabled=\"disabled\"\n                                :isMobileForced=\"isMobileForced\"\n                                @start=\"onStartPasswordlessLogin\" />\n\n    <PasswordlessLoginVerifyStep v-else-if=\"passwordlessLoginStep.isVerify\"\n                                 v-model=\"passwordlessLoginVerifyOptions\"\n                                 v-model:submitPasswordlessLoginVerification=\"submitPasswordlessLoginVerification\"\n                                 :communicationType=\"communicationType\"\n                                 :disabled=\"disabled\"\n                                 :isMobileForced=\"isMobileForced\"\n                                 @resendCode=\"onResendCode\"\n                                 @verify=\"onVerifyPasswordlessLogin\" />\n</template>\n\n<script setup lang=\"ts\">\n    import { computed, onMounted, onUnmounted, PropType, ref, watch } from \"vue\";\n    import { PasswordlessCommunicationType } from \"./types.partial\";\n    import PasswordlessLoginStartStep from \"./passwordlessLoginStartStep.partial.obs\";\n    import PasswordlessLoginVerifyStep from \"./passwordlessLoginVerifyStep.partial.obs\";\n    import { PasswordlessLoginStep } from \"@Obsidian/Enums/Blocks/Security/Login/passwordlessLoginStep\";\n    import { LoginInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/Login/loginInitializationBox\";\n    import { PasswordlessLoginOptionsBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginOptionsBag\";\n    import { PasswordlessLoginStartRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginStartRequestBag\";\n    import { PasswordlessLoginVerifyOptionsBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginVerifyOptionsBag\";\n    import { PasswordlessLoginVerifyRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginVerifyRequestBag\";\n\n    const props = defineProps({\n        modelValue: {\n            type: Object as PropType<PasswordlessLoginOptionsBag>,\n            required: true\n        },\n        config: {\n            type: Object as PropType<LoginInitializationBox>,\n            required: true\n        },\n        disabled: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        },\n        isMobileForced: {\n            type: Boolean as PropType<boolean>,\n            required: false,\n            default: false\n        }\n    });\n\n    const emit = defineEmits<{\n        (e: \"start\", value: PasswordlessLoginStartRequestBag): void,\n        (e: \"update:modelValue\", value: PasswordlessLoginOptionsBag): void,\n        (e: \"verify\", value: PasswordlessLoginVerifyRequestBag): void,\n    }>();\n\n    // #region Values\n\n    const passwordlessLoginStartRequest = ref<PasswordlessLoginStartRequestBag>({\n        shouldSendEmailCode: false,\n        shouldSendEmailLink: false,\n        shouldSendSmsCode: false,\n        email: null,\n        phoneNumber: null\n    });\n\n    const passwordlessLoginVerifyOptions = ref<PasswordlessLoginVerifyOptionsBag>({\n        code: props.modelValue?.code,\n        isPersonSelectionRequired: props.modelValue?.isPersonSelectionRequired,\n        matchingPeople: props.modelValue?.matchingPeople,\n        matchingPersonValue: null,\n        state: props.modelValue?.state\n    });\n\n    /**\n     * Enables programmatic submission of the Passwordless Login Verify form.\n     */\n    const submitPasswordlessLoginVerification = ref(false);\n\n    /**\n     * Initialize with Start step unless we need to automatically submit the verification code.\n     */\n    const passwordlessLoginStep = computed(() => ({\n        isStart: internalStep.value === PasswordlessLoginStep.Start,\n        isVerify: internalStep.value === PasswordlessLoginStep.Verify\n    }));\n\n    // #endregion\n\n    // #region Computed Values\n\n    const internalCode = computed<string>({\n        get() {\n            return props.modelValue.code ?? \"\";\n        },\n        set(newValue) {\n            emit(\"update:modelValue\", {\n                ...props.modelValue,\n                code: newValue\n            });\n        }\n    });\n\n    const internalState = computed<string>({\n        get() {\n            return props.modelValue.state ?? \"\";\n        },\n        set(newValue) {\n            emit(\"update:modelValue\", {\n                ...props.modelValue,\n                state: newValue\n            });\n        }\n    });\n\n    const internalStep = computed<PasswordlessLoginStep>({\n        get() {\n            return props.modelValue.step;\n        },\n        set(newValue: PasswordlessLoginStep) {\n            emit(\"update:modelValue\", {\n                ...props.modelValue,\n                step: newValue\n            });\n        }\n    });\n\n    const communicationType = computed<PasswordlessCommunicationType>(() => passwordlessLoginStartRequest.value.email ? \"email\" : passwordlessLoginStartRequest.value.phoneNumber ? \"phone number\" : \"data\");\n\n    // #endregion\n\n    // #region Event Handlers\n\n    /**\n     * Event handler for the \"Resend code\" button being clicked.\n     *\n     * @param passwordlessLoginStepValue\n     */\n    function onResendCode(): void {\n        internalCode.value = \"\";\n        passwordlessLoginVerifyOptions.value.code = \"\";\n        internalStep.value = PasswordlessLoginStep.Start;\n    }\n\n    /**\n     * Event handler for the Passwordless Login Start form being submitted.\n     */\n    function onStartPasswordlessLogin(): void {\n        // Make sure the code and state are cleared before starting a new passwordless authentication session.\n        internalCode.value = \"\";\n        passwordlessLoginVerifyOptions.value.code = \"\";\n        internalState.value = \"\";\n\n        emit(\"start\", passwordlessLoginStartRequest.value);\n    }\n\n    /**\n     * Event handler for the Passwordless Login Verify form being submitted.\n     * Handles the redirect to the return URL if authentication is successful.\n     */\n    async function onVerifyPasswordlessLogin(): Promise<void> {\n        emit(\"verify\", {\n            code: passwordlessLoginVerifyOptions.value.code,\n            matchingPersonValue: passwordlessLoginVerifyOptions.value.matchingPersonValue,\n            state: passwordlessLoginVerifyOptions.value.state,\n        });\n    }\n\n    // #endregion\n\n    // #region Watchers\n\n    // Update the child passwordless verify options when the parent passwordless options are updated.\n    watch(() => props.modelValue, (newPasswordlessLoginOptions, oldPasswordlessLoginOptions) => {\n        // Only update the fields that were changed so we don't overwrite everything on the child options.\n        if (newPasswordlessLoginOptions.code !== oldPasswordlessLoginOptions.code) {\n            passwordlessLoginVerifyOptions.value.code = newPasswordlessLoginOptions.code;\n        }\n\n        if (newPasswordlessLoginOptions.isPersonSelectionRequired !== oldPasswordlessLoginOptions.isPersonSelectionRequired) {\n            passwordlessLoginVerifyOptions.value.isPersonSelectionRequired = newPasswordlessLoginOptions.isPersonSelectionRequired;\n        }\n\n        if (newPasswordlessLoginOptions.matchingPeople !== oldPasswordlessLoginOptions.matchingPeople) {\n            passwordlessLoginVerifyOptions.value.matchingPeople = newPasswordlessLoginOptions.matchingPeople;\n        }\n\n        if (newPasswordlessLoginOptions.state !== oldPasswordlessLoginOptions.state) {\n            passwordlessLoginVerifyOptions.value.state = newPasswordlessLoginOptions.state;\n        }\n    });\n\n    // #endregion\n\n    // If the page was loaded as a result of clicking a passwordless login link,\n    // then automatically submit the form.\n    onMounted(() => {\n        if (props.modelValue.isAutomaticVerificationRequired) {\n            submitPasswordlessLoginVerification.value = true;\n        }\n    });\n\n    onUnmounted(() => {\n        // Reset to the start step when this component is unmounted.\n        // We don't want to do this after mounting because the\n        // step can be externally overridden.\n        internalStep.value = PasswordlessLoginStep.Start;\n    });\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <BreakpointObserver @breakpoint=\"value => breakpoint = value\">\n        <div>\n            <div v-if=\"criticalErrorMessage\">\n                <NotificationBox alertType=\"danger\" v-html=\"criticalErrorMessage\" />\n            </div>\n            <div v-else-if=\"isCompleted\">\n                <NotificationBox alertType=\"warning\" v-html=\"completedCaption\" />\n            </div>\n            <div v-else class=\"login-block\">\n                <fieldset>\n                    <legend>Log In</legend>\n\n                    <template v-if=\"config.configurationErrors?.length\">\n                        <NotificationBox v-for=\"configError in config.configurationErrors\"\n                                         alertType=\"warning\"\n                                         v-text=\"configError\" />\n                    </template>\n\n                    <div v-if=\"config.errorMessage\" class=\"row\">\n                        <NotificationBox alertType=\"danger\"\n                                         class=\"col-sm-12\"\n                                         v-html=\"config.errorMessage\" />\n                    </div>\n\n                    <div :class=\"['login-container', 'row', isMobile ? 'mobile-layout' : 'd-flex']\">\n                        <div v-if=\"isAnyExternalAuthProviderVisible || areBothInternalAuthProvidersVisible\"\n                            :class=\"['login-methods', isMobileForced ? 'col-sm-12' : 'col-sm-5', 'remote-logins']\">\n                            <ExternalLogin v-if=\"isAnyExternalAuthProviderVisible\"\n                                           :modelValue=\"config.externalAuthProviderButtons || []\"\n                                           :caption=\"config.remoteAuthorizationPromptMessage ?? ''\"\n                                           :disabled=\"isAuthenticating || isNavigating\"\n                                           @login=\"onExternalLogin($event)\" />\n\n                            <LoginMethodPicker v-if=\"areBothInternalAuthProvidersVisible\"\n                                               :modelValue=\"loginMethod\"\n                                               :disabled=\"isAuthenticating || isNavigating\"\n                                               :isCredentialLoginSupported=\"config.isInternalDatabaseLoginSupported\"\n                                               :isPasswordlessLoginSupported=\"config.isPasswordlessLoginSupported\"\n                                               @update:modelValue=\"onLoginMethodPickerChanged\" />\n                        </div>\n\n                        <Divider v-if=\"areSecondaryAndPrimaryAuthVisible\"\n                                 :class=\"isMobileForced ? 'col-sm-12' : 'col-sm-1'\"\n                                 content=\"or\"\n                                 :isVertical=\"!isMobile\" />\n\n                        <div :class=\"['login-entry', isMobileForced || (!isAnyExternalAuthProviderVisible && !areBothInternalAuthProvidersVisible) ? 'col-sm-12' : 'col-sm-6']\">\n                            <div v-if=\"mfaMessage\" v-html=\"mfaMessage\"></div>\n\n                            <CredentialLogin v-if=\"loginMethod === LoginMethod.InternalDatabase\n                                                   && ((config.isInternalDatabaseLoginSupported && !mfa?.credentialLogin) || mfa?.credentialLogin?.isError === false)\"\n                                            :disabled=\"isAuthenticating || isNavigating\"\n                                            :isMobileForced=\"isMobileForced\"\n                                            :isNewAccountHidden=\"currentMfaFactor === LoginMethod.InternalDatabase || config.hideNewAccountOption\"\n                                            :isRememberMeHidden=\"currentMfaFactor === LoginMethod.InternalDatabase\"\n                                            :newAccountButtonText=\"config.newAccountButtonText\"\n                                            :promptMessage=\"config.promptMessage\"\n                                            :usernameFieldLabel=\"config.usernameFieldLabel\"\n                                            @forgotAccount=\"onForgotAccount()\"\n                                            @login=\"onCredentialLogin($event)\"\n                                            @register=\"onRegister()\" />\n\n                            <PasswordlessLogin v-else-if=\"loginMethod !== LoginMethod.InternalDatabase\n                                                          && ((config.isPasswordlessLoginSupported && !mfa?.passwordless) || mfa?.passwordless?.isError === false)\"\n                                            v-model=\"passwordlessLoginOptions\"\n                                            :config=\"config\"\n                                            :disabled=\"isAuthenticating || isNavigating\"\n                                            :isMobileForced=\"isMobileForced\"\n                                            @start=\"onPasswordlessLoginStart($event)\"\n                                            @verify=\"onPasswordlessLoginVerify($event)\" />\n\n                            <NotificationBox v-if=\"errorMessage\"\n                                             alertType=\"warning\"\n                                             class=\"block-message margin-t-md\"\n                                             v-html=\"errorMessage\" />\n                        </div>\n                    </div>\n                </fieldset>\n\n                <div v-if=\"config.contentText\" class=\"mt-3\" v-html=\"config.contentText\"></div>\n            </div>\n        </div>\n    </BreakpointObserver>\n</template>\n\n<script setup lang=\"ts\">\n    import { computed, onMounted, ref } from \"vue\";\n    import BreakpointObserver from \"./breakpointObserver.partial.obs\";\n    import CredentialLogin from \"./Login/credentialLogin.partial.obs\";\n    import Divider from \"./Login/divider.partial.obs\";\n    import ExternalLogin from \"./Login/externalLogin.partial.obs\";\n    import LoginMethodPicker from \"./Login/loginMethodPicker.partial.obs\";\n    import PasswordlessLogin from \"./Login/passwordlessLogin.partial.obs\";\n    import { Breakpoint } from \"./types.partial\";\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\n    import { LoginMethod } from \"@Obsidian/Enums/Blocks/Security/Login/loginMethod\";\n    import { onConfigurationValuesChanged, useConfigurationValues, useInvokeBlockAction, useReloadBlock } from \"@Obsidian/Utility/block\";\n    import { removeCurrentUrlQueryParams } from \"@Obsidian/Utility/url\";\n    import { CredentialLoginMfaBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/credentialLoginMfaBag\";\n    import { CredentialLoginRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/credentialLoginRequestBag\";\n    import { CredentialLoginResponseBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/credentialLoginResponseBag\";\n    import { ExternalAuthenticationButtonBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/externalAuthenticationButtonBag\";\n    import { LoginInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/Login/loginInitializationBox\";\n    import { PasswordlessLoginMfaBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginMfaBag\";\n    import { PasswordlessLoginOptionsBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginOptionsBag\";\n    import { PasswordlessLoginStartRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginStartRequestBag\";\n    import { PasswordlessLoginStartResponseBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginStartResponseBag\";\n    import { PasswordlessLoginStep } from \"@Obsidian/Enums/Blocks/Security/Login/passwordlessLoginStep\";\n    import { PasswordlessLoginVerifyRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginVerifyRequestBag\";\n    import { PasswordlessLoginVerifyResponseBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/passwordlessLoginVerifyResponseBag\";\n    import { RemoteLoginStartRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/remoteLoginStartRequestBag\";\n    import { RemoteLoginStartResponseBag } from \"@Obsidian/ViewModels/Blocks/Security/Login/remoteLoginStartResponseBag\";\n\n    const config = useConfigurationValues<LoginInitializationBox>();\n    const invokeBlockAction = useInvokeBlockAction();\n\n    // #region Types\n\n    type Mfa = {\n        passwordless?: Omit<PasswordlessLoginMfaBag, \"ticket\"> | null | undefined;\n        credentialLogin?: Omit<CredentialLoginMfaBag, \"ticket\"> | null | undefined;\n        ticket: string | null;\n        is2FANotSupportedForAuthenticationFactor?: boolean | undefined;\n    };\n\n    // #endregion\n\n    // #region Values\n\n    const breakpoint = ref<Breakpoint>(\"unknown\");\n    const isMobileForced = !!document.getElementById(\"splash\");\n\n    const isAuthenticating = ref(config.shouldRedirect);\n    const completedCaption = ref<string | null>(null);\n    const errorMessage = ref<string | null>(config.errorMessage || null);\n    const criticalErrorMessage = ref<string | null>(null);\n    const isNavigating = ref(false);\n\n    const passwordlessLoginOptions = ref<PasswordlessLoginOptionsBag>({\n        code: config.passwordlessAutoVerifyOptions?.code,\n        state: config.passwordlessAutoVerifyOptions?.state,\n        isAutomaticVerificationRequired: !!config.passwordlessAutoVerifyOptions,\n        isPersonSelectionRequired: false,\n        matchingPeople: null,\n        step: config.passwordlessAutoVerifyOptions ? PasswordlessLoginStep.Verify : PasswordlessLoginStep.Start\n    });\n\n    const isCompleted = ref<boolean>(false);\n\n    const mfa = ref<Mfa | null | undefined>();\n    const twoFactorEmailPhoneNotAvailableMessage = ref<string>(config.twoFactorEmailPhoneNotAvailableMessage ?? \"\");\n    const twoFactorEmailPhoneRequiredMessage = ref<string>(config.twoFactorEmailPhoneRequiredMessage ?? \"\");\n    const twoFactorLoginNotAvailableMessage = ref<string>(config.twoFactorLoginNotAvailableMessage ?? \"\");\n    const twoFactorLoginRequiredMessage = ref<string>(config.twoFactorLoginRequiredMessage ?? \"\");\n    const twoFactorNotSupportedByAuthenticationMethodMessage = ref<string>(config.twoFactorNotSupportedByAuthenticationMethodMessage ?? \"\");\n\n    // #endregion\n\n    // #region Computed Values\n\n    const areBothInternalAuthProvidersVisible = computed<boolean>(() =>\n        config.isInternalDatabaseLoginSupported && config.isPasswordlessLoginSupported\n    );\n\n    const isAnyExternalAuthProviderVisible = computed<boolean>(() =>\n        !!config.externalAuthProviderButtons?.length\n    );\n\n    const areSecondaryAndPrimaryAuthVisible = computed<boolean>(() => {\n        const isAnyInternalAuthProviderVisible = config.isInternalDatabaseLoginSupported || config.isPasswordlessLoginSupported;\n        return (isAnyExternalAuthProviderVisible.value && isAnyInternalAuthProviderVisible) || areBothInternalAuthProvidersVisible.value;\n    });\n\n    const loginMethod = ref<LoginMethod | undefined>();\n\n    const isMobile = computed<boolean>(() => isMobileForced || breakpoint.value === \"xs\");\n\n    const mfaMessage = computed<string | null>(() => {\n        if (!mfa.value) {\n            return null;\n        }\n        else if (mfa.value.passwordless && !mfa.value.passwordless.isError) {\n            return twoFactorEmailPhoneRequiredMessage.value;\n        }\n        else if (mfa.value.passwordless?.isEmailAndMobilePhoneMissing) {\n            return twoFactorEmailPhoneNotAvailableMessage.value;\n        }\n        else if (mfa.value.credentialLogin && !mfa.value.credentialLogin.isError) {\n            return twoFactorLoginRequiredMessage.value;\n        }\n        else if (mfa.value.credentialLogin?.isUsernameAndPasswordMissing) {\n            return twoFactorLoginNotAvailableMessage.value;\n        }\n        else if (mfa.value.is2FANotSupportedForAuthenticationFactor) {\n            return twoFactorNotSupportedByAuthenticationMethodMessage.value;\n        }\n        else {\n            return null;\n        }\n    });\n\n    const currentMfaFactor = computed<LoginMethod | null>(() => {\n        const mfaDetails = mfa.value;\n\n        if (!mfaDetails) {\n            return null;\n        }\n\n        if (mfaDetails.credentialLogin) {\n            return LoginMethod.InternalDatabase;\n        }\n\n        if (mfaDetails.passwordless) {\n            return LoginMethod.Passwordless;\n        }\n\n        // This would only occur if a new auth factor if block is not added here.\n        console.error(\"Unknown MFA factor\");\n        return null;\n    });\n\n    // #endregion\n\n    // #region Event Handlers\n\n    /**\n     * Event handler for the credential login form being submitted.\n     * Handles the redirect to the return URL if authentication is successful.\n     */\n    async function onCredentialLogin(bag: CredentialLoginRequestBag): Promise<void> {\n        isAuthenticating.value = true;\n\n        try {\n            // Attach the MFA state to the request.\n            bag.mfaTicket = mfa.value?.ticket;\n            const response = await invokeBlockAction<CredentialLoginResponseBag>(\"CredentialLogin\", { bag });\n            const responseBag = response?.data;\n\n            if (!response?.isSuccess || !responseBag) {\n                uiState.error({\n                    errorMessage: response?.errorMessage || \"Something went wrong. Please try again.\"\n                });\n                return;\n            }\n\n            if (responseBag.isLockedOut) {\n                uiState.criticalError({\n                    errorMessage: responseBag.errorMessage ?? null\n                });\n                return;\n            }\n\n            if (responseBag.isAuthenticated) {\n                uiState.valid();\n                await navigate(responseBag.redirectUrl || \"/\");\n                return;\n            }\n\n            if (responseBag.isConfirmationRequired) {\n                uiState.confirmationRequired({\n                    caption: responseBag.errorMessage || response.errorMessage\n                });\n                return;\n            }\n\n            if (responseBag.mfa) {\n                uiState.initMfaFactor({\n                    mfa: {\n                        passwordless: responseBag.mfa,\n                        ticket: responseBag.mfa.ticket ?? null\n                    },\n                    loginMethod: LoginMethod.Passwordless,\n                });\n                return;\n            }\n\n            uiState.error({\n                errorMessage: responseBag.errorMessage || \"Authentication failed. Please try again.\"\n            });\n        }\n        finally {\n            // Reset isAuthenticating in the event there is an error so the user can resubmit.\n            isAuthenticating.value = false;\n        }\n    }\n\n    /**\n     * Handles the event when an external login button is clicked.\n     */\n    async function onExternalLogin(externalLogin: ExternalAuthenticationButtonBag): Promise<void> {\n        isAuthenticating.value = true;\n        const bag: RemoteLoginStartRequestBag = {\n            authenticationType: externalLogin.authenticationType,\n            route: location.pathname\n        };\n\n        try {\n            const response = await invokeBlockAction<RemoteLoginStartResponseBag>(\"RemoteLoginStart\", { bag });\n\n            if (response?.isSuccess && response?.data?.redirectUrl) {\n                await navigate(response.data.redirectUrl);\n                return;\n            }\n\n            uiState.error({\n                errorMessage: response?.errorMessage\n            });\n            return;\n        }\n        finally {\n            isAuthenticating.value = false;\n        }\n    }\n\n    /**\n     * Event handler for the forgot account button being clicked.\n     */\n    async function onForgotAccount(): Promise<void> {\n        await navigate(config.helpPageUrl ?? \"/\");\n    }\n\n    /**\n     * Event handler for the login method picker being changed.\n     */\n    function onLoginMethodPickerChanged(value: LoginMethod | undefined): void {\n        if (typeof value !== \"undefined\") {\n            uiState.init({\n                loginMethod: value\n            });\n        }\n    }\n\n    /**\n     * Event handler for the Passwordless Login being started.\n     */\n    async function onPasswordlessLoginStart(bag: PasswordlessLoginStartRequestBag): Promise<void> {\n        isAuthenticating.value = true;\n\n        uiState.valid();\n\n        try {\n            // Attach the MFA state to the request.\n            bag.mfaTicket = mfa.value?.ticket;\n            const response = await invokeBlockAction<PasswordlessLoginStartResponseBag>(\"PasswordlessLoginStart\", { bag });\n\n            if (!response?.isSuccess || !response.data) {\n                uiState.error({\n                    errorMessage: response?.errorMessage || \"Something went wrong. Please try again.\"\n                });\n                return;\n            }\n\n            if (response.data.isSuccessful) {\n                passwordlessLoginOptions.value = {\n                    ...passwordlessLoginOptions.value,\n                    state: response.data.state || \"\",\n                    step: PasswordlessLoginStep.Verify\n                };\n                loginMethod.value = LoginMethod.Passwordless;\n                return;\n            }\n\n            passwordlessLoginOptions.value = {\n                ...passwordlessLoginOptions.value,\n                step: PasswordlessLoginStep.Start\n            };\n            loginMethod.value = LoginMethod.Passwordless;\n\n            uiState.error({\n                errorMessage: response?.data?.errorMessage || response?.errorMessage || \"An unknown error occurred. Please submit email or phone number again.\"\n            });\n            return;\n        }\n        finally {\n            isAuthenticating.value = false;\n        }\n    }\n\n    /**\n     * Event handler for the Passwordless Login being verified.\n     * Handles the redirect to the return URL if authentication is successful.\n     */\n    async function onPasswordlessLoginVerify(bag: PasswordlessLoginVerifyRequestBag): Promise<void> {\n        isAuthenticating.value = true;\n        uiState.valid();\n\n        try {\n            // Attach the MFA state to the request.\n            bag.mfaTicket = mfa.value?.ticket;\n            var response = await invokeBlockAction<PasswordlessLoginVerifyResponseBag>(\"PasswordlessLoginVerify\", { bag });\n\n            if (!response || !response.isSuccess || !response.data) {\n                uiState.error({\n                    errorMessage: \"Something went wrong. Please try again.\",\n                });\n                return;\n            }\n\n            if (response.data.isAuthenticated) {\n                uiState.valid();\n                await navigate(config.redirectUrl || \"/\");\n                return;\n            }\n\n            if (response.data.mfa) {\n                uiState.initMfaFactor({\n                    mfa: {\n                        credentialLogin: response.data.mfa,\n                        ticket: response.data.mfa.ticket ?? null,\n                    },\n                    loginMethod: LoginMethod.InternalDatabase,\n                });\n                return;\n            }\n\n            if (response.data.isRegistrationRequired) {\n                if (!response.data.registrationUrl) {\n                    uiState.error({ errorMessage: \"Redirecting to default registration page\" });\n                }\n                await navigate(response.data.registrationUrl || \"/NewAccount\");\n                return;\n            }\n\n            if (response.data.isPersonSelectionRequired) {\n                passwordlessLoginOptions.value = {\n                    ...passwordlessLoginOptions.value,\n                    isPersonSelectionRequired: true,\n                    matchingPeople: response.data.matchingPeople || []\n                };\n                loginMethod.value = LoginMethod.Passwordless;\n                return;\n            }\n\n            uiState.error({\n                errorMessage: response.data.errorMessage ?? \"Authentication failed. Please try again.\"\n            });\n        }\n        finally {\n            // Reset isAuthenticating in the event there is an error so the user can resubmit.\n            isAuthenticating.value = false;\n        }\n    }\n\n    /**\n     * Event handler for the register button being clicked.\n     */\n    async function onRegister(): Promise<void> {\n        await navigate(config.newAccountPageUrl ?? \"/\");\n    }\n\n    // #endregion\n\n    //#region Functions\n\n    /**\n     * Gets the initial login method to display.\n     */\n    function getInitialLoginMethod(): LoginMethod {\n        const configuredDefaultLoginMethod = config.defaultLoginMethod;\n\n        // If the block loaded as a response to a passwordless verification,\n        // then the initial login method should be passwordless.\n        if (config.passwordlessAutoVerifyOptions) {\n            return LoginMethod.Passwordless;\n        }\n\n        switch (configuredDefaultLoginMethod) {\n            case LoginMethod.InternalDatabase: {\n                // If block setting default is internal database but only passwordless is supported,\n                // then initial login method should be passwordless.\n                if (!config.isInternalDatabaseLoginSupported && config.isPasswordlessLoginSupported) {\n                    return LoginMethod.Passwordless;\n                }\n                break;\n            }\n\n            case LoginMethod.Passwordless: {\n                // If block setting default is passwordless but only internal database is supported,\n                // then initial login method should be internal database.\n                if (!config.isPasswordlessLoginSupported && config.isInternalDatabaseLoginSupported) {\n                    return LoginMethod.InternalDatabase;\n                }\n                break;\n            }\n\n            default: {\n                break;\n            }\n        }\n\n        // Return the block setting value.\n        return configuredDefaultLoginMethod;\n    }\n\n    /**\n     * Handles the event when a component triggers navigation.\n     *\n     * @param url The URL to navigate to.\n     * @returns an unresolving promise so the page/form remains unusable until the redirect is complete.\n     */\n    async function navigate(url: string): Promise<void> {\n        isNavigating.value = true;\n        window.location.href = url;\n        return new Promise((_resolve, _reject) => {\n            // Return an unresolving promise so the page/form remains unusable until the redirect is complete.\n        });\n    }\n\n    /**\n     * Displays a completed message to the user.\n     * If caption is provided, then a generic error is displayed.\n     *\n     * @param error The optional error message.\n     */\n    function showCompleted(caption?: string | null | undefined): void {\n        completedCaption.value = caption || \"An unknown error occurred\";\n        isCompleted.value = true;\n    }\n\n    function getErrorOrDefault(error?: string | null | undefined): string {\n        return error || \"An unknown error occurred\";\n    }\n\n    const uiState = {\n        init(state: { loginMethod: LoginMethod }): void {\n            // Clear the error, switch the login method, and set the MFA state.\n            errorMessage.value = null;\n            loginMethod.value = state.loginMethod;\n            mfa.value = null;\n        },\n\n        initMfaFactor(state: { loginMethod: LoginMethod, mfa: Mfa }): void {\n            // Clear the error, switch the login method, and set the MFA state.\n            errorMessage.value = null;\n            loginMethod.value = state.loginMethod;\n            mfa.value = state.mfa;\n        },\n\n        criticalError(state: { errorMessage: string | null }): void {\n            // Set the critical error message and leave everything else untouched.\n            criticalErrorMessage.value = state.errorMessage;\n        },\n\n        error(state: { errorMessage: string | null }): void {\n            // Set the error but do not modify the login method or MFA state.\n            errorMessage.value = getErrorOrDefault(state.errorMessage);\n        },\n\n        valid(): void {\n            // Clear the error but do not modify the login method or MFA state.\n            errorMessage.value = null;\n        },\n\n        confirmationRequired(state: { caption: string | null }): void {\n            // Clear the error and MFA state even though\n            // this will transition to the completed state\n            // where those fields are hidden.\n            errorMessage.value = null;\n            mfa.value = null;\n            showCompleted(state.caption);\n        },\n\n        passwordlessCodeSent(): void {\n            // Clear the error but do not modify the MFA state.\n            errorMessage.value = null;\n        },\n\n        passwordlessResendCode(): void {\n            // Clear the error but do not modify the MFA state.\n            errorMessage.value = null;\n        },\n\n        unsupportedMfaFactor(): void {\n            errorMessage.value = null;\n            mfa.value = {\n                is2FANotSupportedForAuthenticationFactor: true,\n                ticket: null,\n                credentialLogin: null,\n                passwordless: null\n            };\n        }\n    };\n\n    //#endregion\n\n    onMounted(() => {\n        // Redirect since already authenticated.\n        if (config.shouldRedirect) {\n            // If the redirect URL is not set, then redirect to the default route.\n            navigate(config.redirectUrl ? config.redirectUrl : \"/\");\n            return;\n        }\n\n        if (mfaParameter) {\n            uiState.initMfaFactor({\n                mfa: {\n                    credentialLogin: null,\n                    passwordless: {\n                        isEmailAndMobilePhoneMissing: false,\n                        isError: false\n                    },\n                    ticket: mfaParameter,\n                },\n                loginMethod: LoginMethod.Passwordless\n            });\n        }\n        else if (config.is2FANotSupportedForAuthenticationFactor) {\n            uiState.unsupportedMfaFactor();\n        }\n        else {\n            uiState.init({\n                loginMethod: getInitialLoginMethod()\n            });\n        }\n    });\n\n    const [ mfaParameter, ..._ ] = removeCurrentUrlQueryParams(\"Mfa\", \"State\", \"Code\", \"IsPasswordless\", \"state\", \"code\", \"scope\", \"authuser\", \"prompt\");\n\n    onConfigurationValuesChanged(useReloadBlock());\n</script>"],"names":["bootstrapBreakpointInjectionKey","Symbol","provideBreakpoint","breakpoint","provide","useBreakpoint","inject","emit","__emit","breakpointDisplays","displayBreakpoints","Object","entries","reduce","swapped","_ref2","_ref3","_slicedToArray","key","value","_objectSpread","classes","keys","map","concat","breakpointHelperDiv","ref","internalBreakpoint","computed","get","set","newValue","checkBreakpoint","_displayBreakpoints$d","display","getComputedStyle","newBreakpoint","onWindowResized","onMounted","addEventListener","onBeforeUnmount","removeEventListener","props","__props","id","newGuid","mountPoint","mountedWrapper","mountedNodes","mountHtml","mountedWrapperElement","mountPointElement","parentElement","childNodes","length","i","childNode","insertBefore","push","removeChild","unmountHtml","nodesToRemove","_iterator","_createForOfIteratorHelper","_step","s","n","done","node","err","e","f","watch","html","_ref","newHtml","newMount","_ref4","oldHtml","_oldMount","undefined","tempDiv","document","createElement","innerHTML","_div$parentElement","div","getElementById","createComment","remove","username","password","rememberMe","usernameFieldLabel","newAccountButtonText","isMobile","isMobileForced","onCredentialLoginSubmitted","onForgotAccountClicked","onRegisterClicked","isContentVisible","content","dividerClassRef","isVertical","styleInject","css","insertAt","head","getElementsByTagName","style","type","firstChild","appendChild","styleSheet","cssText","createTextNode","externalLogins","_props$modelValue$fil","_props$modelValue","modelValue","filter","l","authenticationType","hasExternalLogins","isCaptionNotEmpty","caption","onExternalLoginClick","externalLogin","internalLoginMethod","useVModelPassthrough","onSignInWithAccountClicked","LoginMethod","InternalDatabase","onSignInWithEmailOrPhoneClicked","Passwordless","label","validationErrors","phoneNumberConfig","emailOrPhoneNumberRaw","emailOrPhoneNumber","validateEmailOrPhoneNumber","onPasswordlessLoginStartSubmitted","validateForm","getConfiguredRules","_phoneNumberConfig$va","rules","configuredRules","bag","loadPhoneNumberConfig","_loadPhoneNumberConfig","apply","arguments","_asyncToGenerator","getPhoneNumberConfiguration","errorMessages","validateValue","errorMessage","name","text","errors","validateEmail","email","phoneNumber","shouldSendEmailCode","shouldSendEmailLink","shouldSendSmsCode","formattedNumber","formatPhoneNumber","stripPhoneNumber","validatePhoneNumber","isEmail","_rule$match","rule","regex","RegExp","match","test","internalSubmitPasswordlessLoginVerification","instructionsDiv","internalCode","code","internalCommunicationType","communicationType","internalMatchingPeople","_props$modelValue$mat","matchingPeople","internalMatchingPersonValue","matchingPersonValue","onPasswordlessLoginVerifySubmitted","onResendCodeClicked","onCodeCompleted","_instructionsDiv$valu","signInButton","querySelector","focus","passwordlessLoginStartRequest","passwordlessLoginVerifyOptions","isPersonSelectionRequired","_props$modelValue2","_props$modelValue3","state","_props$modelValue4","submitPasswordlessLoginVerification","passwordlessLoginStep","isStart","internalStep","PasswordlessLoginStep","Start","isVerify","Verify","_props$modelValue$cod","internalState","_props$modelValue$sta","step","onResendCode","onStartPasswordlessLogin","onVerifyPasswordlessLogin","_onVerifyPasswordlessLogin","newPasswordlessLoginOptions","oldPasswordlessLoginOptions","isAutomaticVerificationRequired","onUnmounted","config","useConfigurationValues","invokeBlockAction","useInvokeBlockAction","isAuthenticating","shouldRedirect","completedCaption","criticalErrorMessage","isNavigating","passwordlessLoginOptions","_config$passwordlessA","passwordlessAutoVerifyOptions","_config$passwordlessA2","isCompleted","mfa","twoFactorEmailPhoneNotAvailableMessage","_config$twoFactorEmai","twoFactorEmailPhoneRequiredMessage","_config$twoFactorEmai2","twoFactorLoginNotAvailableMessage","_config$twoFactorLogi","twoFactorLoginRequiredMessage","_config$twoFactorLogi2","twoFactorNotSupportedByAuthenticationMethodMessage","_config$twoFactorNotS","areBothInternalAuthProvidersVisible","isInternalDatabaseLoginSupported","isPasswordlessLoginSupported","isAnyExternalAuthProviderVisible","_config$externalAuthP","externalAuthProviderButtons","areSecondaryAndPrimaryAuthVisible","isAnyInternalAuthProviderVisible","loginMethod","mfaMessage","_mfa$value$passwordle","_mfa$value$credential","passwordless","isError","isEmailAndMobilePhoneMissing","credentialLogin","isUsernameAndPasswordMissing","is2FANotSupportedForAuthenticationFactor","currentMfaFactor","mfaDetails","console","error","onCredentialLogin","_x","_onCredentialLogin","_mfa$value5","mfaTicket","ticket","response","responseBag","data","isSuccess","uiState","isLockedOut","_responseBag$errorMes","criticalError","isAuthenticated","valid","navigate","redirectUrl","isConfirmationRequired","confirmationRequired","_responseBag$mfa$tick","initMfaFactor","onExternalLogin","_x2","_onExternalLogin","route","location","pathname","_response$data","onForgotAccount","_onForgotAccount","_config$helpPageUrl","helpPageUrl","onLoginMethodPickerChanged","init","onPasswordlessLoginStart","_x3","_onPasswordlessLoginStart","_mfa$value6","_response$data2","isSuccessful","onPasswordlessLoginVerify","_x4","_onPasswordlessLoginVerify","_mfa$value7","_response$data$errorM","_response$data$mfa$ti","isRegistrationRequired","registrationUrl","onRegister","_onRegister","_config$newAccountPag","newAccountPageUrl","getInitialLoginMethod","configuredDefaultLoginMethod","defaultLoginMethod","_x5","_navigate","url","window","href","Promise","_resolve","_reject","showCompleted","getErrorOrDefault","passwordlessCodeSent","passwordlessResendCode","unsupportedMfaFactor","mfaParameter","_removeCurrentUrlQuer","removeCurrentUrlQueryParams","_removeCurrentUrlQuer2","_toArray","slice","onConfigurationValuesChanged","useReloadBlock"],"mappings":"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","x_google_ignoreList":[5]}