{"version":3,"file":"accountEntry.obs.js","sources":["../../src/Security/AccountEntry/completedStep.partial.obs","../../src/Security/AccountEntry/simpleGrid.partial.obs","../../src/Security/AccountEntry/duplicatePersonSelectionStep.partial.obs","../../src/Security/AccountEntry/existingAccountStep.partial.obs","../../src/Security/types.partial.ts","../../src/Security/AccountEntry/passwordlessConfirmationSentStep.partial.obs","../../src/Security/AccountEntry/registrationStepAccountInfo.partial.obs","../../src/Security/AccountEntry/phoneNumberDetails.partial.obs","../../src/Security/AccountEntry/registrationStepPersonInfo.partial.obs","../../src/Security/AccountEntry/registrationStep.partial.obs","../../src/Security/breakpointObserver.partial.obs","../../src/Security/accountEntry.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <div v-if=\"options.isPlainCaption && options.caption\">{{ options.caption }}</div>\r\n    <NotificationBox v-else-if=\"options.caption\" alertType=\"success\">{{ options.caption }}</NotificationBox>\r\n\r\n    <RockButton v-if=\"options.redirectUrl\" :btnType=\"BtnType.Primary\" :disabled=\"disabled\" @click=\"onContinueClicked\">Continue</RockButton>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { onMounted, PropType } from \"vue\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { AccountEntryCompletedStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryCompletedStepBag\";\r\n\r\n    const props = defineProps({\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        options: {\r\n            type: Object as PropType<AccountEntryCompletedStepBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"navigate\", value: string): void\r\n    }>();\r\n\r\n    //#region Values\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    function onContinueClicked(): void {\r\n        tryNavigate(props.options.redirectUrl);\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    function tryNavigate(url: string | null | undefined): void {\r\n        if (url) {\r\n            emit(\"navigate\", url);\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    onMounted(() => {\r\n        if (props.options.isRedirectAutomatic) {\r\n            tryNavigate(props.options.redirectUrl);\r\n        }\r\n    });\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <table class=\"grid-table table table-bordered table-striped table-hover\">\r\n        <thead>\r\n            <!-- Implement <template v-slot=\"header\"></template> in parent to override the header template. -->\r\n            <slot name=\"header\">\r\n                <tr>\r\n                    <template v-for=\"propertyName in propertyNames\">\r\n                        <!-- Implement <template v-slot=\"header-<propertyName>\"></template> in parent to override the individual header cell templates. -->\r\n                        <slot :name=\"getHeaderSlotName(propertyName)\" :propertyName=\"propertyName\">\r\n                            <th>{{ toTitleCase(splitCase(propertyName)) }}</th>\r\n                        </slot>\r\n                    </template>\r\n                </tr>\r\n            </slot>\r\n        </thead>\r\n        <tbody>\r\n            <template v-for=\"item in items\">\r\n                <!-- Implement <template v-slot=\"row\"></template> in parent to override the row template. -->\r\n                <slot name=\"row\" :item=\"item\">\r\n                    <tr>\r\n                        <template v-for=\"propertyName in propertyNames\">\r\n                            <!-- Implement <template v-slot=\"column-<propertyName>\"></template> in parent to override the individual row cell templates. -->\r\n                            <slot :name=\"getColumnSlotName(propertyName)\" :item=\"item\" :propertyName=\"propertyName\">\r\n                                <td>{{ item[propertyName] }}</td>\r\n                            </slot>\r\n                        </template>\r\n                    </tr>\r\n                </slot>\r\n            </template>\r\n        </tbody>\r\n        <tfoot>\r\n            <!-- Implement <template v-slot=\"footer\"></template> in parent to override the footer template. -->\r\n            <slot name=\"footer\"></slot>\r\n        </tfoot>\r\n    </table>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { splitCase, toTitleCase } from \"@Obsidian/Utility/stringUtils\";\r\n    import { computed, PropType } from \"vue\";\r\n\r\n    const props = defineProps({\r\n        items: {\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            type: Array as PropType<any[] | null | undefined>,\r\n            required: false,\r\n            default: []\r\n        }\r\n    });\r\n\r\n    //#region Computed Values\r\n\r\n    const propertyNames = computed(() => {\r\n        if (!props.items?.length) {\r\n            return [];\r\n        }\r\n\r\n        const firstTruthyItem = props.items.find(item => !!item && typeof item === \"object\");\r\n\r\n        return getPropertyNames(firstTruthyItem);\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    /**\r\n     * Gets the slot name for a column.\r\n     *\r\n     * @param columnId The unique identifier for the column.\r\n     */\r\n    function getColumnSlotName(columnId: string): string {\r\n        return `column-${columnId}`;\r\n    }\r\n\r\n    /**\r\n     * Gets the slot name for a header column.\r\n     *\r\n     * @param columnId The unique identifier for the column.\r\n     */\r\n    function getHeaderSlotName(columnId: string): string {\r\n        return `header-${columnId}`;\r\n    }\r\n\r\n    /**\r\n     * Gets the properties for a data-bound item.\r\n     *\r\n     * @param item The data-bound item.\r\n     */\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    function getProperties(item: any): [string, unknown][] {\r\n        if (!item) {\r\n            return [];\r\n        }\r\n\r\n        return Object.entries(item);\r\n    }\r\n\r\n    /**\r\n     * Gets the property names for a data-bound item.\r\n     *\r\n     * @param item The data-bound item.\r\n     */\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    function getPropertyNames(item: any): string[] {\r\n        const properties = getProperties(item);\r\n        if (!properties.length) {\r\n            return [];\r\n        }\r\n\r\n        // The property names (column headers) and property values (column values) should be in the same order since they both use `getProperties()`.\r\n        return properties.map(([name, _value]) => name);\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <NotificationBox v-if=\"options.caption\" alertType=\"warning\">{{ options.caption }}</NotificationBox>\r\n\r\n    <SimpleGrid :items=\"options.duplicatePeople\">\r\n        <template #header>\r\n            <tr>\r\n                <th>You?</th>\r\n                <th>Name</th>\r\n            </tr>\r\n        </template>\r\n        <template #row=\"{ item }: { item: AccountEntryDuplicatePersonItemBag }\">\r\n            <tr>\r\n                <td><input v-model=\"internalModelValue\" :disabled=\"disabled\" name=\"DuplicatePerson\" type=\"radio\" :value=\"item\" /></td>\r\n                <td>{{ item.fullName }}</td>\r\n            </tr>\r\n        </template>\r\n    </SimpleGrid>\r\n\r\n    <div class=\"radio\">\r\n        <label>\r\n            <input v-model=\"internalModelValue\" :disabled=\"disabled\" name=\"DuplicatePerson\" type=\"radio\" :value=\"null\" />\r\n            <span class=\"label-text\"><strong>None of these are me</strong></span>\r\n        </label>\r\n    </div>\r\n\r\n    <slot name=\"captcha\" />\r\n\r\n    <div class=\"actions\">\r\n        <RockButton :btnType=\"BtnType.Link\" :disabled=\"disabled\" @click=\"onPreviousClicked\">Previous</RockButton>\r\n        <RockButton :btnType=\"BtnType.Primary\" :disabled=\"disabled\" @click=\"onNextClicked\">Next</RockButton>\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { PropType } from \"vue\";\r\n    import SimpleGrid from \"./simpleGrid.partial.obs\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { useVModelPassthrough } from \"@Obsidian/Utility/component\";\r\n    import { AccountEntryDuplicatePersonItemBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryDuplicatePersonItemBag\";\r\n    import { AccountEntryDuplicatePersonSelectionStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryDuplicatePersonSelectionStepBag\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryDuplicatePersonItemBag | null>,\r\n            required: false,\r\n            default: null\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        options: {\r\n            type: Object as PropType<AccountEntryDuplicatePersonSelectionStepBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: AccountEntryDuplicatePersonItemBag | null): void,\r\n        (e: \"movePrevious\"): void,\r\n        (e: \"personSelected\"): void,\r\n        (e: \"noPersonSelected\"): void\r\n    }>();\r\n\r\n    //#region Values\r\n\r\n    const internalModelValue = useVModelPassthrough(props, \"modelValue\", emit);\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the next button being clicked.\r\n     */\r\n    function onNextClicked(): void {\r\n        if (internalModelValue.value) {\r\n            emit(\"personSelected\");\r\n        }\r\n        else {\r\n            emit(\"noPersonSelected\");\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event handler for the previous button being clicked.\r\n     */\r\n    function onPreviousClicked(): void {\r\n        emit(\"movePrevious\");\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <NotificationBox v-if=\"options.caption\" alertType=\"warning\">{{ options.caption }}</NotificationBox>\r\n\r\n    <slot name=\"captcha\" />\r\n\r\n    <div class=\"actions\">\r\n        <RockButton\r\n                    :btnType=\"BtnType.Link\"\r\n                    :disabled=\"disabled\"\r\n                    @click=\"onPreviousClicked\">Previous</RockButton>\r\n        <RockButton\r\n                    :btnType=\"BtnType.Primary\"\r\n                    class=\"ml-1\"\r\n                    :disabled=\"disabled\"\r\n                    @click=\"onEmailUsernameClicked\">Yes, send it</RockButton>\r\n        <RockButton\r\n                    :btnType=\"BtnType.Primary\"\r\n                    class=\"ml-1\"\r\n                    :disabled=\"disabled\"\r\n                    @click=\"onSendToLoginClicked\">No, just let me log in</RockButton>\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { PropType } from \"vue\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { AccountEntryExistingAccountStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryExistingAccountStepBag\";\r\n\r\n    defineProps({\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        options: {\r\n            type: Object as PropType<AccountEntryExistingAccountStepBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"movePrevious\"): void,\r\n        (e: \"emailUsername\"): void,\r\n        (e: \"sendToLogin\"): void\r\n    }>();\r\n\r\n    //#region Values\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the \"Yes, send it\" button being clicked.\r\n     */\r\n    function onEmailUsernameClicked(): void {\r\n        emit(\"emailUsername\");\r\n    }\r\n\r\n    /**\r\n     * Event handler for the previous button being clicked.\r\n     */\r\n    function onPreviousClicked(): void {\r\n        emit(\"movePrevious\");\r\n    }\r\n\r\n    /**\r\n     * Event handler for the \"No, just let me log in\" button being clicked.\r\n     */\r\n    function onSendToLoginClicked(): void {\r\n        emit(\"sendToLogin\");\r\n    }\r\n\r\n                    //#endregion\r\n</script>","// <copyright>\r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// </copyright>\r\n//\r\n\r\nimport { InjectionKey, Ref, inject, provide } from \"vue\";\r\n\r\nexport type CodeBoxCharacterController = {\r\n    focus(): void;\r\n    clear(): void;\r\n    boxIndex: number;\r\n};\r\n\r\nexport type Breakpoint = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"unknown\";\r\n\r\n/**\r\n * An injection key to provide a reactive bootstrap breakpoint to descendent components.\r\n */\r\nconst bootstrapBreakpointInjectionKey: InjectionKey<Ref<Breakpoint>> = Symbol(\"bootstrap-breakpoint\");\r\n\r\n/**\r\n * Provides the reactive breakpoint that can be used by child components.\r\n */\r\nexport function provideBreakpoint(breakpoint: Ref<Breakpoint>): void {\r\n    provide(bootstrapBreakpointInjectionKey, breakpoint);\r\n}\r\n\r\n/**\r\n * Gets the breakpoint that can be used to provide responsive behavior.\r\n */\r\nexport function useBreakpoint(): Ref<Breakpoint> {\r\n    const breakpoint = inject(bootstrapBreakpointInjectionKey);\r\n\r\n    if (!breakpoint) {\r\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.\";\r\n    }\r\n\r\n    return breakpoint;\r\n}","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <NotificationBox v-if=\"options.caption\" alertType=\"warning\">{{ options.caption }}</NotificationBox>\r\n    <RockForm @submit=\"onFormSubmitted\">\r\n        <CodeBox v-model.capitalize=\"internalValue\"\r\n                 :disabled=\"disabled\"\r\n                 :maxLength=\"6\"\r\n                 rules=\"required\"\r\n                 validationTitle=\"Code\" />\r\n\r\n        <slot name=\"captcha\" />\r\n\r\n        <div class=\"actions d-flex d-sm-block flex-column-reverse\">\r\n            <RockButton :btnType=\"BtnType.Link\" :class=\"breakpoint === 'xs' ? 'btn-block' : ''\" :disabled=\"disabled\" type=\"button\" @click=\"onPreviousClicked\">Previous</RockButton>\r\n            <RockButton :btnType=\"BtnType.Primary\" :class=\"breakpoint === 'xs' ? 'btn-block' : ''\" :disabled=\"disabled\" type=\"submit\">Complete Sign In</RockButton>\r\n        </div>\r\n    </RockForm>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { PropType } from \"vue\";\r\n    import CodeBox from \"../codeBox.obs\";\r\n    import { useBreakpoint } from \"../types.partial\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\r\n    import RockForm from \"@Obsidian/Controls/rockForm.obs\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { useVModelPassthrough } from \"@Obsidian/Utility/component\";\r\n    import { AccountEntryPasswordlessConfirmationSentStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPasswordlessConfirmationSentStepBag\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: String as PropType<string>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        options: {\r\n            type: Object as PropType<AccountEntryPasswordlessConfirmationSentStepBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"movePrevious\"): void,\r\n        (e: \"submit\"): void,\r\n        (e: \"update:modelValue\", value: string): void,\r\n    }>();\r\n\r\n    //#region Values\r\n\r\n    const internalValue = useVModelPassthrough(props, \"modelValue\", emit);\r\n    const breakpoint = useBreakpoint();\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the previous button being clicked.\r\n     */\r\n    function onPreviousClicked(): void {\r\n        emit(\"movePrevious\");\r\n    }\r\n\r\n    /**\r\n     * Event handler for the form being submitted.\r\n     */\r\n    function onFormSubmitted(): void {\r\n        emit(\"submit\");\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <fieldset>\r\n        <legend>New Account</legend>\r\n        <TextBox\r\n                 v-if=\"!isEmailRequiredForUsername\"\r\n                 v-model=\"internalUsername\"\r\n                 :disabled=\"disabled\"\r\n                 :label=\"usernameFieldLabel\"\r\n                 :rules=\"usernameValidators\"\r\n                 @change=\"onUsernameChanged\"></TextBox>\r\n\r\n        <EmailBox\r\n                  v-else\r\n                  v-model=\"internalUsername\"\r\n                  :disabled=\"disabled\"\r\n                  label=\"Email\"\r\n                  rules=\"required\"></EmailBox>\r\n\r\n        <NotificationBox v-if=\"usernameValidationCaption\" :alertType=\"!isUsernameAvailable || isUsernameError ? 'warning' : 'success'\">{{ usernameValidationCaption }}</NotificationBox>\r\n\r\n        <TextBox\r\n                 v-model=\"internalPassword\"\r\n                 :disabled=\"disabled\"\r\n                 label=\"Password\"\r\n                 rules=\"required\"\r\n                 type=\"password\"></TextBox>\r\n        <TextBox\r\n                 v-model=\"internalConfirmPassword\"\r\n                 :disabled=\"disabled\"\r\n                 label=\"Confirm Password\"\r\n                 :rules=\"confirmPasswordRules\"\r\n                 type=\"password\"></TextBox>\r\n    </fieldset>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType, ref } from \"vue\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import EmailBox from \"@Obsidian/Controls/emailBox.obs\";\r\n    import TextBox from \"@Obsidian/Controls/textBox.obs\";\r\n    import { ValidationResult, ValidationRule } from \"@Obsidian/ValidationRules\";\r\n    import { AccountEntryAccountInfoBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryAccountInfoBag\";\r\n    import { AccountEntryInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryInitializationBox\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryAccountInfoBag | null | undefined>,\r\n            required: true\r\n        },\r\n        config: {\r\n            type: Object as PropType<AccountEntryInitializationBox>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        isUsernameAvailable: {\r\n            type: Object as PropType<boolean | null>,\r\n            required: false,\r\n            default: null\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"checkUsernameAvailability\", value: string): void,\r\n        (e: \"update:isUsernameAvailable\", value: boolean | null): void,\r\n        (e: \"update:modelValue\", value: AccountEntryAccountInfoBag): void\r\n    }>();\r\n\r\n    const usernameValidators: ValidationRule[] = [\r\n        \"required\",\r\n        (value: unknown, _params: unknown[] | undefined): ValidationResult => {\r\n            if (typeof value !== \"string\" || !value?.trim()) {\r\n                return `${usernameFieldLabel.value} is required.`;\r\n            }\r\n\r\n            if (validateUsernameRegex.value && !validateUsernameRegex.value.test(value)) {\r\n                return `${usernameFieldLabel.value} is invalid. ${props.config.usernameRegexDescription}`;\r\n            }\r\n\r\n            return true;\r\n        }\r\n    ];\r\n\r\n    //#region Values\r\n\r\n    const usernameValidationError = ref<string | null>(null);\r\n\r\n    //#endregion\r\n\r\n    //#region Computed Values\r\n\r\n    const isUsernameError = computed(() => !!usernameValidationError.value);\r\n\r\n    const isEmailRequiredForUsername = computed(() => props.config.isEmailRequiredForUsername);\r\n\r\n    const usernameFieldLabel = computed(() => props.config.usernameFieldLabel || \"Username\");\r\n\r\n    const validateUsernameRegex = computed((() => props.config.usernameRegex ? new RegExp(props.config.usernameRegex) : null));\r\n\r\n    const internalUsername = computed<string>({\r\n        get() {\r\n            return props.modelValue?.username ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, username: newValue });\r\n        }\r\n    });\r\n\r\n    const internalPassword = computed<string>({\r\n        get() {\r\n            return props.modelValue?.password ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, password: newValue });\r\n        }\r\n    });\r\n\r\n    const internalConfirmPassword = computed<string>({\r\n        get() {\r\n            return props.modelValue?.confirmPassword ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, confirmPassword: newValue });\r\n        }\r\n    });\r\n\r\n    const confirmPasswordRules = computed<string>(() => {\r\n        return `required|equalsfield:must match Password,${internalPassword.value}`;\r\n    });\r\n\r\n    const usernameValidationCaption = computed<string>(() => {\r\n        if (usernameValidationError.value) {\r\n            return usernameValidationError.value;\r\n        }\r\n        else if (props.isUsernameAvailable) {\r\n            return `The ${usernameFieldLabel.value.toLowerCase()} you selected is available.`;\r\n        }\r\n        else if (props.isUsernameAvailable === false) {\r\n            return `The ${usernameFieldLabel.value.toLowerCase()} you selected is already in use.`;\r\n        }\r\n        else {\r\n            return \"\";\r\n        }\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the username being changed.\r\n     */\r\n    function onUsernameChanged(): void {\r\n        if (!internalUsername.value?.trim()) {\r\n            usernameValidationError.value = `${usernameFieldLabel.value} is required.`;\r\n            emit(\"update:isUsernameAvailable\", null);\r\n        }\r\n        else if (validateUsernameRegex.value && !validateUsernameRegex.value.test(internalUsername.value)) {\r\n            usernameValidationError.value = `${usernameFieldLabel.value} is invalid. ${props.config.usernameRegexDescription}`;\r\n            emit(\"update:isUsernameAvailable\", null);\r\n        }\r\n        else {\r\n            usernameValidationError.value = null;\r\n            if (!props.config.isUsernameAvailabilityCheckDisabled) {\r\n                emit(\"checkUsernameAvailability\", internalUsername.value);\r\n            }\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <div :class=\"['phonegroup clearfix form-group', modelValue.isRequired ? 'required' : '']\">\r\n        <div v-if=\"!isMobile\" class=\"control-label col-sm-1 phonegroup-label\">{{ modelValue.label }}&nbsp;</div>\r\n        <div :class=\"['controls', !isMobile ? 'col-sm-11' : 'col-sm-12', 'phonegroup-number']\">\r\n            <div :class=\"['row', !isMobile ? 'margin-l-sm' : '']\">\r\n                <div class=\"col-sm-7\">\r\n                    <PhoneNumberBox v-model:modelValue=\"internalPhoneNumber\"\r\n                                    v-model:countryCode=\"internalCountryCode\"\r\n                                    :disabled=\"disabled\"\r\n                                    :disableLabel=\"!isMobile\"\r\n                                    :label=\"modelValue.label!\"\r\n                                    :rules=\"phoneNumberRules\"\r\n                                    :validationTitle=\"`${modelValue.label} phone`\" />\r\n                </div>\r\n                <div class=\"col-sm-5 margin-t-sm\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-xs-6\">\r\n                            <InlineCheckBox v-model=\"internalIsSmsEnabled\"\r\n                                            :disabled=\"disabled\"\r\n                                            label=\"SMS\" />\r\n                        </div>\r\n                        <div class=\"col-xs-6\">\r\n                            <InlineCheckBox v-model=\"internalIsUnlisted\"\r\n                                            :disabled=\"disabled\"\r\n                                            label=\"Unlisted\" />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType } from \"vue\";\r\n    import InlineCheckBox from \"@Obsidian/Controls/inlineCheckBox.obs\";\r\n    import PhoneNumberBox from \"@Obsidian/Controls/phoneNumberBox.obs\";\r\n    import { AccountEntryPhoneNumberBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPhoneNumberBag\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryPhoneNumberBag>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        isMobile: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: AccountEntryPhoneNumberBag): void\r\n    }>();\r\n\r\n    //#region Computed Values\r\n\r\n    const internalPhoneNumber = computed<string>({\r\n        get() {\r\n            return props.modelValue.phoneNumber ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, phoneNumber: newValue });\r\n        }\r\n    });\r\n\r\n    const internalCountryCode = computed<string>({\r\n        get() {\r\n            return props.modelValue.countryCode ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, countryCode: newValue });\r\n        }\r\n    });\r\n\r\n    const internalIsSmsEnabled = computed<boolean>({\r\n        get() {\r\n            return props.modelValue.isSmsEnabled;\r\n        },\r\n        set(newValue: boolean) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, isSmsEnabled: newValue });\r\n        }\r\n    });\r\n\r\n    const internalIsUnlisted = computed<boolean>({\r\n        get() {\r\n            return props.modelValue.isUnlisted;\r\n        },\r\n        set(newValue: boolean) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, isUnlisted: newValue });\r\n        }\r\n    });\r\n\r\n    const phoneNumberRules = computed<string>(() => props.modelValue.isRequired ? \"required\" : \"\");\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <div>\r\n        <fieldset>\r\n            <legend>Your Information</legend>\r\n            <TextBox\r\n                v-model=\"internalFirstName\"\r\n                :disabled=\"disabled\"\r\n                label=\"First Name\"\r\n                rules=\"required\" />\r\n            <TextBox\r\n                v-model=\"internalLastName\"\r\n                :disabled=\"disabled\"\r\n                label=\"Last Name\"\r\n                rules=\"required\" />\r\n            <EmailBox\r\n                v-if=\"!isEmailHidden\"\r\n                v-model=\"internalEmail\"\r\n                :disabled=\"disabled\"\r\n                label=\"Email\"\r\n                rules=\"required\" />\r\n            <GenderDropDownList\r\n                v-if=\"isGenderPickerShown\"\r\n                v-model=\"internalGender\"\r\n                :disabled=\"disabled\" />\r\n            <BirthdayPicker\r\n                v-if=\"isBirthDateShown\"\r\n                v-model=\"internalBirthday\"\r\n                :disabled=\"disabled\"\r\n                label=\"Birthday\"\r\n                :rules=\"birthdayRules\" />\r\n        </fieldset>\r\n\r\n        <fieldset v-if=\"internalArePhoneNumbersShown\">\r\n            <legend v-if=\"internalPhoneNumbers.length > 1\">Phone Numbers</legend>\r\n            <template v-for=\"(value, key) in internalPhoneNumbers\">\r\n                <PhoneNumberDetails\r\n                    v-if=\"!value.isHidden\"\r\n                    v-model=\"internalPhoneNumbers[key]\"\r\n                    :disabled=\"disabled\"\r\n                    :isMobile=\"isMobile\" />\r\n            </template>\r\n        </fieldset>\r\n\r\n        <fieldset v-if=\"isAddressShown\">\r\n            <legend>Address</legend>\r\n            <Address\r\n                v-model=\"internalAddress\"\r\n                :disabled=\"disabled\"\r\n                :rules=\"addressRules\"></Address>\r\n        </fieldset>\r\n\r\n        <CampusPicker\r\n            v-if=\"isCampusPickerShown\"\r\n            :disabled=\"disabled\"\r\n            :label=\"campusPickerLabel\"\r\n            @update:modelValue=\"onCampusChanged\"\r\n            :campusStatusFilter=\"campusStatusFilter\"\r\n            :campusTypeFilter=\"campusTypeFilter\"\r\n            :showBlankItem=\"true\"\r\n            :rules=\"campusRules\" />\r\n\r\n        <AttributeValuesContainer\r\n            v-if=\"internalAttributes\"\r\n            v-model=\"internalAttributeValues\"\r\n            :attributes=\"internalAttributes\"\r\n            isEditMode\r\n            :showCategoryLabel=\"false\" />\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType } from \"vue\";\r\n    import PhoneNumberDetails from \"./phoneNumberDetails.partial.obs\";\r\n    import Address from \"@Obsidian/Controls/addressControl.obs\";\r\n    import AttributeValuesContainer from \"@Obsidian/Controls/attributeValuesContainer.obs\";\r\n    import { AddressControlBag } from \"@Obsidian/ViewModels/Controls/addressControlBag\";\r\n    import BirthdayPicker from \"@Obsidian/Controls/birthdayPicker.obs\";\r\n    import CampusPicker from \"@Obsidian/Controls/campusPicker.obs\";\r\n    import EmailBox from \"@Obsidian/Controls/emailBox.obs\";\r\n    import GenderDropDownList from \"@Obsidian/Controls/genderDropDownList.obs\";\r\n    import TextBox from \"@Obsidian/Controls/textBox.obs\";\r\n    import { Gender } from \"@Obsidian/Enums/Crm/gender\";\r\n    import { toNumberOrNull } from \"@Obsidian/Utility/numberUtils\";\r\n    import { AccountEntryInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryInitializationBox\";\r\n    import { AccountEntryPersonInfoBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPersonInfoBag\";\r\n    import { AccountEntryPhoneNumberBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPhoneNumberBag\";\r\n    import { BirthdayPickerBag } from \"@Obsidian/ViewModels/Controls/birthdayPickerBag\";\r\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\n    import { PublicAttributeBag } from \"@Obsidian/ViewModels/Utility/publicAttributeBag\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryPersonInfoBag | null | undefined>,\r\n            required: true\r\n        },\r\n        config: {\r\n            type: Object as PropType<AccountEntryInitializationBox>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        isMobile: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: AccountEntryPersonInfoBag): void\r\n    }>();\r\n\r\n    // #region Computed Values\r\n\r\n    const arePhoneNumbersShown = computed(() => props.config.arePhoneNumbersShown);\r\n    const campusPickerLabel = computed(() => props.config.campusPickerLabel || \"Campus\");\r\n    const isAddressShown = computed(() => props.config.isAddressShown);\r\n    const isAddressRequired = computed(() => props.config.isAddressRequired);\r\n    const isCampusPickerShown = computed(() => props.config.isCampusPickerShown);\r\n    const isCampusRequired = computed(() => props.config.isCampusRequired);\r\n    const isEmailHidden = computed(() => props.config.isEmailHidden);\r\n    const isGenderPickerShown = computed(() => props.config.isGenderPickerShown);\r\n    const isBirthDateShown = computed(() => props.config.isBirthDateShown);\r\n    const campusStatusFilter = computed(() => props.config.campusStatusFilter ?? []);\r\n    const campusTypeFilter = computed(() => props.config.campusTypeFilter ?? []);\r\n\r\n    const internalFirstName = computed<string>({\r\n        get() {\r\n            return props.modelValue?.firstName ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, firstName: newValue });\r\n        }\r\n    });\r\n\r\n    const internalLastName = computed<string>({\r\n        get() {\r\n            return props.modelValue?.lastName ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, lastName: newValue });\r\n        }\r\n    });\r\n\r\n    const internalEmail = computed<string>({\r\n        get() {\r\n            return props.modelValue?.email ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, email: newValue });\r\n        }\r\n    });\r\n\r\n    const internalGender = computed<string>({\r\n        get() {\r\n            return (props.modelValue?.gender ?? 0).toString();\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, gender: toNumberOrNull(newValue) as Gender ?? Gender.Unknown });\r\n        }\r\n    });\r\n\r\n    const internalBirthday = computed<BirthdayPickerBag | undefined>({\r\n        get() {\r\n            return props.modelValue?.birthday ?? undefined;\r\n        },\r\n        set(newValue: BirthdayPickerBag | undefined) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, birthday: newValue ?? null });\r\n        }\r\n    });\r\n\r\n    const internalPhoneNumbers = computed<AccountEntryPhoneNumberBag[]>({\r\n        get() {\r\n            return props.modelValue?.phoneNumbers ?? [];\r\n        },\r\n        set(newValue: AccountEntryPhoneNumberBag[]) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, phoneNumbers: newValue });\r\n        }\r\n    });\r\n\r\n    const internalAddress = computed<AddressControlBag | undefined>({\r\n        get() {\r\n            return props.modelValue?.address ?? undefined;\r\n        },\r\n        set(newValue: AddressControlBag | undefined) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, address: newValue });\r\n        }\r\n    });\r\n\r\n    const addressRules = computed<string>(() => isAddressRequired.value ? \"required\" : \"\");\r\n    const campusRules = computed<string>(() => isCampusRequired.value ? \"required\" : \"\");\r\n    const birthdayRules = computed<string>(() => isBirthDateShown.value ? \"required\" : \"\");\r\n\r\n    const internalArePhoneNumbersShown = computed<boolean>(() => arePhoneNumbersShown.value && internalPhoneNumbers.value.some(p => !p.isHidden));\r\n\r\n    const internalAttributes = computed<Record<string, PublicAttributeBag> | null | undefined>({\r\n        get() {\r\n            return props.modelValue?.attributes;\r\n        },\r\n        set(newValue: Record<string, PublicAttributeBag> | null | undefined) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, attributes: newValue });\r\n        }\r\n    });\r\n\r\n    const internalAttributeValues = computed<Record<string, string>>({\r\n        get() {\r\n            return props.modelValue?.attributeValues ?? {};\r\n        },\r\n        set(newValue: Record<string, string>) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, attributeValues: newValue });\r\n        }\r\n    });\r\n\r\n    // #endregion\r\n\r\n    // #region Event Handlers\r\n\r\n    /**\r\n     * Returns truthy if the argument is of type ListItemBag.\r\n     *\r\n     * @param object The object to test.\r\n     */\r\n    function isListItemBag(object: unknown): object is ListItemBag {\r\n        return !!object && typeof object === \"object\" && \"value\" in object;\r\n    }\r\n\r\n    /**\r\n     * Updates the person's campus guid whenever the campus picker selection changes.\r\n     */\r\n     function onCampusChanged(value: ListItemBag | ListItemBag[] | null): void {\r\n        if (isListItemBag(value)) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, campus: value.value });\r\n        }\r\n        else {\r\n            emit(\"update:modelValue\", { ...props.modelValue, campus: null });\r\n        }\r\n    }\r\n\r\n    // #endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <RockForm @submit=\"onFormSubmit\">\r\n        <TextBox\r\n            v-model=\"fullName\"\r\n            class=\"rock-fullname\"\r\n            :disabled=\"disabled\"\r\n            name=\"name\"\r\n            placeholder=\"Please enter name (Required)\"></TextBox>\r\n\r\n        <div class=\"row\">\r\n            <AccountInfo\r\n                v-if=\"!config.isAccountInfoHidden\"\r\n                v-model=\"internalAccountInfo\"\r\n                v-model:isUsernameAvailable=\"internalIsUsernameAvailable\"\r\n                class=\"col-md-6\"\r\n                :config=\"config\"\r\n                :disabled=\"disabled\"\r\n                @checkUsernameAvailability=\"onCheckUsernameAvailability\" />\r\n\r\n            <PersonInfo\r\n                v-model=\"internalPersonInfo\"\r\n                class=\"col-md-6\"\r\n                :config=\"config\"\r\n                :disabled=\"disabled\"\r\n                :isMobile=\"isMobile\" />\r\n        </div>\r\n\r\n        <slot name=\"captcha\" />\r\n\r\n        <div class=\"row\">\r\n            <div class=\"col-md-12\">\r\n                <RockButton\r\n                    :btnType=\"BtnType.Primary\"\r\n                    :disabled=\"disabled\"\r\n                    type=\"submit\">Next</RockButton>\r\n            </div>\r\n        </div>\r\n    </RockForm>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType, ref } from \"vue\";\r\n    import { useBreakpoint } from \"../types.partial\";\r\n    import AccountInfo from \"./registrationStepAccountInfo.partial.obs\";\r\n    import PersonInfo from \"./registrationStepPersonInfo.partial.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton.obs\";\r\n    import RockForm from \"@Obsidian/Controls/rockForm.obs\";\r\n    import TextBox from \"@Obsidian/Controls/textBox.obs\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { useVModelPassthrough } from \"@Obsidian/Utility/component\";\r\n    import { RockDateTime } from \"@Obsidian/Utility/rockDateTime\";\r\n    import { AccountEntryAccountInfoBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryAccountInfoBag\";\r\n    import { AccountEntryInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryInitializationBox\";\r\n    import { AccountEntryPersonInfoBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPersonInfoBag\";\r\n    import { AccountEntryRegisterRequestBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryRegisterRequestBox\";\r\n\r\n    const breakpoint = useBreakpoint();\r\n\r\n    const props = defineProps({\r\n        config: {\r\n            type: Object as PropType<AccountEntryInitializationBox>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        isUsernameAvailable: {\r\n            type: Object as PropType<boolean | null>,\r\n            required: false,\r\n            default: null\r\n        },\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryRegisterRequestBox>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"checkUsernameAvailability\", value: string): void,\r\n        (e: \"error\", value: string): void,\r\n        (e: \"register\"): void,\r\n        (e: \"update:isUsernameAvailable\", value: boolean | null): void,\r\n        (e: \"update:modelValue\", value: AccountEntryRegisterRequestBox): void,\r\n    }>();\r\n\r\n    enum ValidationErrorMessages {\r\n        MinimumAge = \"We are sorry, you must be at least {0} years old to create an account.\"\r\n    }\r\n\r\n    //#region Values\r\n\r\n    const isMobile = computed<boolean>(() => breakpoint.value === \"xs\");\r\n\r\n    const fullName = ref(\"\");\r\n\r\n    const shouldUsernameUpdateSetPersonInfoEmail = computed<boolean>(() => props.config.isEmailRequiredForUsername);\r\n\r\n    const internalIsUsernameAvailable = useVModelPassthrough(props, \"isUsernameAvailable\", emit);\r\n\r\n    //#endregion\r\n\r\n    //#region Computed Values\r\n\r\n    const internalAccountInfo = computed<AccountEntryAccountInfoBag | null | undefined>({\r\n        get() {\r\n            return props.modelValue.accountInfo;\r\n        },\r\n        set(newValue: AccountEntryAccountInfoBag | null | undefined) {\r\n            let modelValue: AccountEntryRegisterRequestBox;\r\n\r\n            if (shouldUsernameUpdateSetPersonInfoEmail.value && props.modelValue.personInfo?.email !== newValue?.username) {\r\n                modelValue = {\r\n                    ...props.modelValue,\r\n                    accountInfo: newValue,\r\n                    personInfo: {\r\n                        ...props.modelValue.personInfo,\r\n                        email: newValue?.username\r\n                    }\r\n                };\r\n            }\r\n            else {\r\n                modelValue = {\r\n                    ...props.modelValue,\r\n                    accountInfo: newValue\r\n                };\r\n            }\r\n\r\n            emit(\"update:modelValue\", modelValue);\r\n        }\r\n    });\r\n\r\n    const internalPersonInfo = computed<AccountEntryPersonInfoBag | null | undefined>({\r\n        get() {\r\n            return props.modelValue.personInfo;\r\n        },\r\n        set(newValue: AccountEntryPersonInfoBag | null | undefined) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, personInfo: newValue });\r\n        }\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the username being checked.\r\n     */\r\n    function onCheckUsernameAvailability(username: string): void {\r\n        if (!props.config.isUsernameAvailabilityCheckDisabled) {\r\n            emit(\"checkUsernameAvailability\", username);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event handler for the registration form being submitted.\r\n     */\r\n    async function onFormSubmit(): Promise<void> {\r\n        if (isPersonInfoValid()) {\r\n            emit(\"register\");\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    /**\r\n     * Determines whether the person is old enough to register.\r\n     */\r\n    function isOldEnough(): boolean {\r\n        if (props.config.minimumAge <= 0) {\r\n            return true;\r\n        }\r\n\r\n        const birthday = internalPersonInfo.value?.birthday;\r\n\r\n        if (!birthday) {\r\n            emit(\"error\", \"Birthday is required\");\r\n            return false;\r\n        }\r\n\r\n        const threshold = RockDateTime.now().addYears(- props.config.minimumAge);\r\n        const birthdate = RockDateTime.fromParts(birthday.year, birthday.month, birthday.day);\r\n        if (!birthdate || birthdate.isLaterThan(threshold)) {\r\n            emit(\"error\", ValidationErrorMessages.MinimumAge.replace(\"{0}\", props.config.minimumAge.toString()));\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Determines whether the person info is valid.\r\n     */\r\n    function isPersonInfoValid(): boolean {\r\n        if (props.config.isBirthDateShown) {\r\n            isOldEnough();\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <slot></slot>\r\n\r\n    <div ref=\"breakpointHelperDiv\"\r\n         style=\"visibility: collapse !important;\"\r\n         :class=\"classes\"></div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, onBeforeUnmount, onMounted, ref } from \"vue\";\r\n    import { Breakpoint, provideBreakpoint } from \"./types.partial\";\r\n\r\n    defineProps();\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"breakpoint\", value: Breakpoint): void\r\n    }>();\r\n\r\n    const breakpointDisplays: Partial<Record<Breakpoint, string>> = {\r\n        \"xs\": \"none\",\r\n        \"sm\": \"inline\",\r\n        \"md\": \"inline-block\",\r\n        \"lg\": \"block\",\r\n        \"xl\": \"table\"\r\n    };\r\n\r\n    const displayBreakpoints: Record<string, Breakpoint> = Object.entries(breakpointDisplays).reduce((swapped, [key, value]) => ({\r\n        ...swapped,\r\n        [value]: key\r\n    }), {});\r\n\r\n    const classes: string[] = Object.keys(breakpointDisplays)\r\n        .map((breakpoint: string) => breakpoint as Breakpoint)\r\n        .map((breakpoint: Breakpoint) => breakpoint === \"xs\" ? `d-${breakpointDisplays[breakpoint]}` : `d-${breakpoint}-${breakpointDisplays[breakpoint]}`);\r\n\r\n    //#region Values\r\n\r\n    /**\r\n     * This div helps determine the responsive breakpoint based on CSS rules.\r\n     *\r\n     * The element has `class=\"d-none d-sm-inline d-md-inline-block d-lg-block d-xl-table\"`\r\n     * so whenever the screen is a specific width, the div's `display` property will be updated.\r\n     * We can efficiently re-check the breakpoint by listening to the window \"resize\" event\r\n     * and examining the current `display` property.\r\n     *\r\n     * Lastly, we need `visibility: collapse !important` in the div's inline style\r\n     * because we want to keep the element invisible while the `display` is being updated.\r\n     */\r\n    const breakpointHelperDiv = ref<HTMLElement | undefined>();\r\n    const breakpoint = ref<Breakpoint>(\"unknown\");\r\n    const internalBreakpoint = computed<Breakpoint>({\r\n        get() {\r\n            return breakpoint.value;\r\n        },\r\n        set(newValue: Breakpoint) {\r\n            breakpoint.value = newValue;\r\n\r\n            // Emit so client code can use output binding\r\n            // if unable to use the provide/inject pattern.\r\n            emit(\"breakpoint\", breakpoint.value);\r\n        }\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    /** Checks if the breakpoint changed */\r\n    function checkBreakpoint(): void {\r\n        // Skip if the div element is not set (this could happen if this component isn't mounted).\r\n        if (!breakpointHelperDiv.value) {\r\n            return;\r\n        }\r\n\r\n        // Get the breakpoint that is mapped to the `display` style property.\r\n        const display = getComputedStyle(breakpointHelperDiv.value).display;\r\n        const newBreakpoint: Breakpoint = displayBreakpoints[display] ?? \"unknown\";\r\n        internalBreakpoint.value = newBreakpoint;\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /** Event handler for the window \"resize\" event. */\r\n    function onWindowResized(): void {\r\n        checkBreakpoint();\r\n    }\r\n\r\n    //#endregion\r\n\r\n    // Provide the reactive breakpoint to child components.\r\n    provideBreakpoint(breakpoint);\r\n\r\n    onMounted(() => {\r\n        // Check the breakpoint initially and wire up the window \"resize\" event handler.\r\n        checkBreakpoint();\r\n        addEventListener(\"resize\", onWindowResized);\r\n    });\r\n\r\n    onBeforeUnmount(() => {\r\n        // Remove the window \"resize\" event handler when this component is unmounted.\r\n        removeEventListener(\"resize\", onWindowResized);\r\n    });\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <BreakpointObserver>\r\n        <NotificationBox v-if=\"errorMessage\" alertType=\"validation\" v-html=\"errorMessage\" />\r\n\r\n        <RegistrationStep v-if=\"step.isRegistration\"\r\n                          v-model=\"registrationInfo\"\r\n                          v-model:isUsernameAvailable=\"isUsernameAvailable\"\r\n                          :config=\"config\"\r\n                          :disabled=\"isRegistering || isNavigating\"\r\n                          @checkUsernameAvailability=\"onCheckUsernameAvailability\"\r\n                          @error=\"showError\"\r\n                          @register=\"onRegister\">\r\n            <template #captcha>\r\n                <Captcha v-if=\"!disableCaptchaSupport\"\r\n                         ref=\"captchaElement\" />\r\n            </template>\r\n        </RegistrationStep>\r\n\r\n        <DuplicatePersonSelectionStep v-else-if=\"step.isDuplicatePersonSelection\"\r\n                                      v-model=\"selectedDuplicatePerson\"\r\n                                      :disabled=\"isRegistering || isNavigating\"\r\n                                      :options=\"duplicatePersonSelectionStepOptions\"\r\n                                      @movePrevious=\"onDuplicatePersonSelectionStepMovePrevious()\"\r\n                                      @personSelected=\"onDuplicatePersonSelected\"\r\n                                      @noPersonSelected=\"onNoDuplicatePersonSelected\">\r\n            <template #captcha>\r\n                <Captcha v-if=\"!disableCaptchaSupport\"\r\n                         ref=\"captchaElement\" />\r\n            </template>\r\n        </DuplicatePersonSelectionStep>\r\n\r\n        <PasswordlessConfirmationSentStep v-else-if=\"step.isPasswordlessConfirmationSent\"\r\n                                          v-model=\"passwordlessConfirmationCode\"\r\n                                          :disabled=\"isRegistering || isNavigating\"\r\n                                          :options=\"passwordlessConfirmationSentStepOptions\"\r\n                                          @movePrevious=\"onPasswordlessConfirmationSentStepMovePrevious()\"\r\n                                          @submit=\"onPasswordlessConfirmationSubmitted\">\r\n            <template #captcha>\r\n                <Captcha v-if=\"!disableCaptchaSupport\"\r\n                         ref=\"captchaElement\" />\r\n            </template>\r\n        </PasswordlessConfirmationSentStep>\r\n\r\n        <ExistingAccountStep v-else-if=\"step.isExistingAccount\"\r\n                             :disabled=\"isSendingForgotUsername || isRegistering || isNavigating\"\r\n                             :options=\"existingAccountStepOptions\"\r\n                             @movePrevious=\"onMovePrevious()\"\r\n                             @emailUsername=\"onEmailUsername\"\r\n                             @sendToLogin=\"onSendToLogin\">\r\n            <template #captcha>\r\n                <Captcha v-if=\"!disableCaptchaSupport\"\r\n                         ref=\"captchaElement\" />\r\n            </template>\r\n        </ExistingAccountStep>\r\n\r\n        <ConfirmationSentStep v-else-if=\"step.isConfirmationSent\"\r\n                              :options=\"confirmationSentStepOptions\" />\r\n\r\n        <CompletedStep v-else-if=\"step.isCompleted\"\r\n                       :disabled=\"isRegistering || isNavigating\"\r\n                       :options=\"completedStepOptions\"\r\n                       @navigate=\"onNavigate($event)\" />\r\n    </BreakpointObserver>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, ref } from \"vue\";\r\n    import Captcha from \"@Obsidian/Controls/captcha.obs\";\r\n    import CompletedStep from \"./AccountEntry/completedStep.partial.obs\";\r\n    import ConfirmationSentStep from \"./AccountEntry/confirmationSentStep.partial.obs\";\r\n    import DuplicatePersonSelectionStep from \"./AccountEntry/duplicatePersonSelectionStep.partial.obs\";\r\n    import ExistingAccountStep from \"./AccountEntry/existingAccountStep.partial.obs\";\r\n    import PasswordlessConfirmationSentStep from \"./AccountEntry/passwordlessConfirmationSentStep.partial.obs\";\r\n    import RegistrationStep from \"./AccountEntry/registrationStep.partial.obs\";\r\n    import BreakpointObserver from \"./breakpointObserver.partial.obs\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import { AccountEntryStep } from \"@Obsidian/Enums/Blocks/Security/AccountEntry/accountEntryStep\";\r\n    import { onConfigurationValuesChanged, useConfigurationValues, useInvokeBlockAction, useReloadBlock } from \"@Obsidian/Utility/block\";\r\n    import { useHttp } from \"@Obsidian/Utility/http\";\r\n    import { removeCurrentUrlQueryParams } from \"@Obsidian/Utility/url\";\r\n    import { AccountEntryCompletedStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryCompletedStepBag\";\r\n    import { AccountEntryConfirmationSentStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryConfirmationSentStepBag\";\r\n    import { AccountEntryDuplicatePersonSelectionStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryDuplicatePersonSelectionStepBag\";\r\n    import { AccountEntryDuplicatePersonItemBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryDuplicatePersonItemBag\";\r\n    import { AccountEntryExistingAccountStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryExistingAccountStepBag\";\r\n    import { AccountEntryForgotUsernameRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryForgotUsernameRequestBag\";\r\n    import { AccountEntryInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryInitializationBox\";\r\n    import { AccountEntryPasswordlessConfirmationSentStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPasswordlessConfirmationSentStepBag\";\r\n    import { AccountEntryRegisterRequestBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryRegisterRequestBox\";\r\n    import { AccountEntryRegisterResponseBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryRegisterResponseBox\";\r\n    import { BlockActionContextBag } from \"@Obsidian/ViewModels/Blocks/blockActionContextBag\";\r\n\r\n    const config = useConfigurationValues<AccountEntryInitializationBox>();\r\n    const invokeBlockAction = useInvokeBlockAction();\r\n    const http = useHttp();\r\n\r\n    removeCurrentUrlQueryParams(\"State\", \"AreUsernameAndPasswordRequired\");\r\n\r\n    //#region Values\r\n\r\n    const errorMessage = ref<string | null>();\r\n\r\n    const disableCaptchaSupport = ref(config.disableCaptchaSupport);\r\n    const captchaElement = ref<InstanceType<typeof Captcha> | undefined>();\r\n\r\n    const stepStack = ref<AccountEntryStep[]>([]);\r\n    const accountEntryStep = computed<AccountEntryStep | null | undefined>(() => stepStack.value.length ? stepStack.value[stepStack.value.length - 1] : config.accountEntryRegisterStepBox?.step || null);\r\n\r\n    const registrationInfo = ref<AccountEntryRegisterRequestBox>({\r\n        accountInfo: {\r\n            password: \"\",\r\n            username: \"\"\r\n        },\r\n        personInfo: config.accountEntryPersonInfoBag ?? {\r\n            birthday: {\r\n                year: 0,\r\n                month: 0,\r\n                day: 0\r\n            },\r\n            email: config.email || \"\",\r\n            firstName: \"\",\r\n            gender: 0,\r\n            lastName: \"\",\r\n            phoneNumbers: [...config.phoneNumbers ?? []]\r\n        },\r\n        fullName: null,\r\n        selectedPersonId: null,\r\n        state: config.state\r\n    });\r\n    const isUsernameAvailable = ref<boolean | null>(null);\r\n\r\n    const duplicatePersonSelectionStepOptions = ref<AccountEntryDuplicatePersonSelectionStepBag>({});\r\n    const internalSelectedDuplicatePerson = ref<AccountEntryDuplicatePersonItemBag | null>(null);\r\n    const selectedDuplicatePerson = computed<AccountEntryDuplicatePersonItemBag | null>({\r\n        get() {\r\n            return internalSelectedDuplicatePerson.value;\r\n        },\r\n        set(newValue: AccountEntryDuplicatePersonItemBag | null) {\r\n            internalSelectedDuplicatePerson.value = newValue;\r\n            registrationInfo.value.selectedPersonId = newValue?.id;\r\n        }\r\n    });\r\n\r\n    const passwordlessConfirmationSentStepOptions = ref<AccountEntryPasswordlessConfirmationSentStepBag>({});\r\n    const passwordlessConfirmationCode = ref<string>(\"\");\r\n\r\n    const existingAccountStepOptions = ref<AccountEntryExistingAccountStepBag>({});\r\n\r\n    const confirmationSentStepOptions = ref<AccountEntryConfirmationSentStepBag>({});\r\n\r\n    const completedStepOptions = ref<AccountEntryCompletedStepBag>({\r\n        isPlainCaption: false,\r\n        isRedirectAutomatic: false\r\n    });\r\n\r\n    const isNavigating = ref<boolean>(false);\r\n    const isRegistering = ref<boolean>(false);\r\n    const isSendingForgotUsername = ref<boolean>(false);\r\n\r\n    //#endregion\r\n\r\n    //#region Computed Values\r\n\r\n    const step = computed(() => ({\r\n        isCompleted: accountEntryStep.value === AccountEntryStep.Completed,\r\n        isConfirmationSent: accountEntryStep.value === AccountEntryStep.ConfirmationSent,\r\n        isDuplicatePersonSelection: accountEntryStep.value === AccountEntryStep.DuplicatePersonSelection,\r\n        isExistingAccount: accountEntryStep.value === AccountEntryStep.ExistingAccount,\r\n        isRegistration: accountEntryStep.value === AccountEntryStep.Registration,\r\n        isPasswordlessConfirmationSent: accountEntryStep.value === AccountEntryStep.PasswordlessConfirmationSent\r\n    }));\r\n\r\n    const sentLoginCaption = computed<string>(() => {\r\n        return config.sentLoginCaption || \"Your username has been emailed to you. If you've forgotten your password, the email includes a link to reset your password.\";\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the username being checked.\r\n     *\r\n     * @param username The username to check.\r\n     */\r\n    async function onCheckUsernameAvailability(username: string): Promise<void> {\r\n        if (config.isUsernameAvailabilityCheckDisabled) {\r\n            isUsernameAvailable.value = null;\r\n        }\r\n        else {\r\n            const response = await http.get<boolean>(\"/api/userlogins/available\", { username: username });\r\n            isUsernameAvailable.value = response.data;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event handler for the duplicate person being selected.\r\n     */\r\n    async function onDuplicatePersonSelected(): Promise<void> {\r\n        // Individual selected a person. Let them choose what to do on the next step.\r\n        registrationInfo.value.selectedPersonId = selectedDuplicatePerson.value?.id;\r\n\r\n        await register();\r\n    }\r\n\r\n    /**\r\n     * Event handler for moving to the step prior to the \"Duplicate Person Selection Step\".\r\n     */\r\n    function onDuplicatePersonSelectionStepMovePrevious(): void {\r\n        selectedDuplicatePerson.value = null;\r\n        onMovePrevious();\r\n    }\r\n\r\n    /**\r\n     * Event handler for the \"Email username\" button being clicked.\r\n     */\r\n    async function onEmailUsername(): Promise<void> {\r\n        try {\r\n            isSendingForgotUsername.value = true;\r\n\r\n            const bag: AccountEntryForgotUsernameRequestBag = {\r\n                personId: registrationInfo.value.selectedPersonId ?? 0,\r\n                email: registrationInfo.value.personInfo?.email,\r\n                lastName: registrationInfo.value.personInfo?.lastName\r\n            };\r\n\r\n            const result = await invokeBlockAction<void>(\"ForgotUsername\", { bag });\r\n\r\n            if (!result?.isSuccess) {\r\n                showError(result?.errorMessage || \"An unexpected error occurred.\");\r\n                return;\r\n            }\r\n\r\n            showCompletedStepNext({\r\n                isPlainCaption: true,\r\n                caption: sentLoginCaption.value,\r\n                isRedirectAutomatic: false\r\n            });\r\n        }\r\n        finally {\r\n            isSendingForgotUsername.value = false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event handler for moving to the previous step.\r\n     */\r\n    function onMovePrevious(): void {\r\n        movePrevious();\r\n    }\r\n\r\n    /**\r\n     * Handles the event when a component triggers navigation.\r\n     *\r\n     * @param url The URL to navigate to.\r\n     * @returns an unresolving promise so the page/form remains unusable until the redirect is complete.\r\n     */\r\n    async function onNavigate(url: string): Promise<void> {\r\n        await navigate(url);\r\n    }\r\n\r\n    /**\r\n     * Event handler for no duplicate person being selected.\r\n     */\r\n    async function onNoDuplicatePersonSelected(): Promise<void> {\r\n        registrationInfo.value.selectedPersonId = 0;\r\n        await register();\r\n    }\r\n\r\n    /**\r\n     * Event handler for moving to the step prior to the \"Passwordless Confirmation Sent Step\".\r\n     */\r\n    function onPasswordlessConfirmationSentStepMovePrevious(): void {\r\n        passwordlessConfirmationCode.value = \"\";\r\n        registrationInfo.value.code = \"\";\r\n        movePrevious();\r\n    }\r\n\r\n    /**\r\n     * Event handler for the passwordless confirmation being submitted.\r\n     */\r\n    async function onPasswordlessConfirmationSubmitted(): Promise<void> {\r\n        registrationInfo.value.code = passwordlessConfirmationCode.value;\r\n\r\n        await register();\r\n    }\r\n\r\n    /**\r\n     * Event handler for registering the account.\r\n     */\r\n    async function onRegister(): Promise<void> {\r\n        await register();\r\n    }\r\n\r\n    /**\r\n     * Event handler for the \"Let me log in\" button being clicked.\r\n     */\r\n    async function onSendToLogin(): Promise<void> {\r\n        await navigate(config.loginPageUrl || \"/Login\");\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    /**\r\n     * Clears the error message.\r\n     */\r\n    function clearError(): void {\r\n        errorMessage.value = null;\r\n    }\r\n\r\n    /**\r\n     * Moves to the previous step.\r\n     * Defaults to the registration step if no more steps.\r\n     */\r\n    function movePrevious(): void {\r\n        if (stepStack.value.length) {\r\n            stepStack.value.splice(stepStack.value.length - 1);\r\n        }\r\n        else {\r\n            showRegistrationStepNext();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Navigates to a URL.\r\n     *\r\n     * @param url The URL to navigate to.\r\n     * @returns an unresolving promise so the page/form remains disabled until the redirect is complete.\r\n     */\r\n    async function navigate(url: string): Promise<void> {\r\n        isNavigating.value = true;\r\n        window.location.href = url;\r\n        return new Promise((_resolve, _reject) => {\r\n            // Return an unresolving promise so the page/form remains disabled until the redirect is complete.\r\n        });\r\n    }\r\n\r\n    async function register(): Promise<void> {\r\n        try {\r\n            isRegistering.value = true;\r\n            clearError();\r\n            isUsernameAvailable.value = null;\r\n\r\n            const actionContext: BlockActionContextBag = {};\r\n\r\n            if (captchaElement.value) {\r\n                actionContext.captcha = await captchaElement.value.getToken();\r\n                captchaElement.value.refreshToken();\r\n            }\r\n\r\n            const response = await invokeBlockAction<AccountEntryRegisterResponseBox>(\"Register\", { box: registrationInfo.value }, actionContext);\r\n\r\n            if (response?.data?.step || response?.data?.step === AccountEntryStep.Registration) {\r\n                displayStep(response.data);\r\n            }\r\n            else {\r\n                showError(response?.errorMessage || \"An unexpected error occurred\");\r\n            }\r\n        }\r\n        finally {\r\n            isRegistering.value = false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Completed\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showCompletedStepNext(options?: AccountEntryCompletedStepBag | null): void {\r\n        if (options) {\r\n            completedStepOptions.value = options;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.Completed);\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Confirmation Sent\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showConfirmationSentStepNext(options?: AccountEntryConfirmationSentStepBag | null): void {\r\n        if (options) {\r\n            confirmationSentStepOptions.value = options;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.ConfirmationSent);\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Duplicate Person Selection\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showDuplicatePersonSelectionStepNext(options?: AccountEntryDuplicatePersonSelectionStepBag | null): void {\r\n        if (options) {\r\n            duplicatePersonSelectionStepOptions.value = options;\r\n            selectedDuplicatePerson.value = null;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.DuplicatePersonSelection);\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Passwordless Confirmation Sent\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showPasswordlessConfirmationSentStepNext(options?: AccountEntryPasswordlessConfirmationSentStepBag | null): void {\r\n        if (options) {\r\n            passwordlessConfirmationSentStepOptions.value = options;\r\n            passwordlessConfirmationCode.value = \"\";\r\n            registrationInfo.value.state = options.state;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.PasswordlessConfirmationSent);\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Existing Account\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showExistingAccountStepNext(options?: AccountEntryExistingAccountStepBag | null): void {\r\n        if (options) {\r\n            existingAccountStepOptions.value = options;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.ExistingAccount);\r\n    }\r\n\r\n    /**\r\n     * Sets and shows an error message.\r\n     *\r\n     * @param error The error message to show.\r\n     */\r\n    function showError(error: string): void {\r\n        errorMessage.value = error;\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Registration\" step.\r\n     */\r\n    function showRegistrationStepNext(): void {\r\n        // Clear duplicate person data.\r\n        selectedDuplicatePerson.value = null;\r\n        duplicatePersonSelectionStepOptions.value = {};\r\n\r\n        stepStack.value.push(AccountEntryStep.Registration);\r\n    }\r\n\r\n    /**\r\n     * Shows a registration step.\r\n     */\r\n    function displayStep(data: AccountEntryRegisterResponseBox): void {\r\n        switch (data.step) {\r\n            case AccountEntryStep.Completed: {\r\n                showCompletedStepNext(data.completedStepBag);\r\n                break;\r\n            }\r\n\r\n            case AccountEntryStep.ConfirmationSent: {\r\n                showConfirmationSentStepNext(data.confirmationSentStepBag);\r\n                break;\r\n            }\r\n\r\n            case AccountEntryStep.DuplicatePersonSelection: {\r\n                showDuplicatePersonSelectionStepNext(data.duplicatePersonSelectionStepBag);\r\n                break;\r\n            }\r\n\r\n            case AccountEntryStep.PasswordlessConfirmationSent: {\r\n                showPasswordlessConfirmationSentStepNext(data.passwordlessConfirmationSentStepBag);\r\n                break;\r\n            }\r\n\r\n            case AccountEntryStep.ExistingAccount: {\r\n                showExistingAccountStepNext(data.existingAccountStepBag);\r\n                break;\r\n            }\r\n\r\n            case AccountEntryStep.Registration: {\r\n                showRegistrationStepNext();\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    displayStep(config.accountEntryRegisterStepBox || { step: AccountEntryStep.Registration });\r\n    onConfigurationValuesChanged(useReloadBlock());\r\n</script>"],"names":["onContinueClicked","tryNavigate","props","options","redirectUrl","url","emit","onMounted","isRedirectAutomatic","propertyNames","computed","_props$items","items","length","firstTruthyItem","find","item","getPropertyNames","getColumnSlotName","columnId","concat","getHeaderSlotName","getProperties","Object","entries","properties","map","_ref","_ref2","_slicedToArray","name","_value","internalModelValue","useVModelPassthrough","onNextClicked","value","onPreviousClicked","onEmailUsernameClicked","onSendToLoginClicked","bootstrapBreakpointInjectionKey","Symbol","provideBreakpoint","breakpoint","provide","useBreakpoint","inject","internalValue","onFormSubmitted","usernameValidators","_params","trim","usernameFieldLabel","validateUsernameRegex","test","config","usernameRegexDescription","usernameValidationError","ref","isUsernameError","isEmailRequiredForUsername","usernameRegex","RegExp","internalUsername","get","_props$modelValue$use","_props$modelValue","modelValue","username","set","newValue","_objectSpread","internalPassword","_props$modelValue$pas","_props$modelValue2","password","internalConfirmPassword","_props$modelValue$con","_props$modelValue3","confirmPassword","confirmPasswordRules","usernameValidationCaption","isUsernameAvailable","toLowerCase","onUsernameChanged","_internalUsername$val","isUsernameAvailabilityCheckDisabled","internalPhoneNumber","_props$modelValue$pho","phoneNumber","internalCountryCode","_props$modelValue$cou","countryCode","internalIsSmsEnabled","isSmsEnabled","internalIsUnlisted","isUnlisted","phoneNumberRules","isRequired","arePhoneNumbersShown","campusPickerLabel","isAddressShown","isAddressRequired","isCampusPickerShown","isCampusRequired","isEmailHidden","isGenderPickerShown","isBirthDateShown","campusStatusFilter","_props$config$campusS","campusTypeFilter","_props$config$campusT","internalFirstName","_props$modelValue$fir","firstName","internalLastName","_props$modelValue$las","lastName","internalEmail","_props$modelValue$ema","email","internalGender","_props$modelValue$gen","_props$modelValue4","gender","toString","toNumberOrNull","Gender","Unknown","internalBirthday","_props$modelValue$bir","_props$modelValue5","birthday","undefined","internalPhoneNumbers","_props$modelValue6","phoneNumbers","internalAddress","_props$modelValue$add","_props$modelValue7","address","addressRules","campusRules","birthdayRules","internalArePhoneNumbersShown","some","p","isHidden","internalAttributes","_props$modelValue8","attributes","internalAttributeValues","_props$modelValue$att","_props$modelValue9","attributeValues","isListItemBag","object","onCampusChanged","campus","ValidationErrorMessages","isMobile","fullName","shouldUsernameUpdateSetPersonInfoEmail","internalIsUsernameAvailable","internalAccountInfo","accountInfo","_props$modelValue$per","personInfo","internalPersonInfo","onCheckUsernameAvailability","onFormSubmit","_onFormSubmit","apply","arguments","_asyncToGenerator","isPersonInfoValid","isOldEnough","_internalPersonInfo$v","minimumAge","threshold","RockDateTime","now","addYears","birthdate","fromParts","year","month","day","isLaterThan","MinimumAge","replace","breakpointDisplays","displayBreakpoints","reduce","swapped","_ref3","key","classes","keys","breakpointHelperDiv","internalBreakpoint","checkBreakpoint","_displayBreakpoints$d","display","getComputedStyle","newBreakpoint","onWindowResized","addEventListener","onBeforeUnmount","removeEventListener","useConfigurationValues","invokeBlockAction","useInvokeBlockAction","http","useHttp","removeCurrentUrlQueryParams","errorMessage","disableCaptchaSupport","captchaElement","stepStack","accountEntryStep","_config$accountEntryR","accountEntryRegisterStepBox","step","registrationInfo","_config$accountEntryP","accountEntryPersonInfoBag","_config$phoneNumbers","selectedPersonId","state","duplicatePersonSelectionStepOptions","internalSelectedDuplicatePerson","selectedDuplicatePerson","id","passwordlessConfirmationSentStepOptions","passwordlessConfirmationCode","existingAccountStepOptions","confirmationSentStepOptions","completedStepOptions","isPlainCaption","isNavigating","isRegistering","isSendingForgotUsername","isCompleted","AccountEntryStep","Completed","isConfirmationSent","ConfirmationSent","isDuplicatePersonSelection","DuplicatePersonSelection","isExistingAccount","ExistingAccount","isRegistration","Registration","isPasswordlessConfirmationSent","PasswordlessConfirmationSent","sentLoginCaption","_x","_onCheckUsernameAvailability","response","data","onDuplicatePersonSelected","_onDuplicatePersonSelected","_selectedDuplicatePer","register","onDuplicatePersonSelectionStepMovePrevious","onMovePrevious","onEmailUsername","_onEmailUsername","_registrationInfo$val","_registrationInfo$val2","_registrationInfo$val3","bag","personId","result","isSuccess","showError","showCompletedStepNext","caption","movePrevious","onNavigate","_x2","_onNavigate","navigate","onNoDuplicatePersonSelected","_onNoDuplicatePersonSelected","onPasswordlessConfirmationSentStepMovePrevious","code","onPasswordlessConfirmationSubmitted","_onPasswordlessConfirmationSubmitted","onRegister","_onRegister","onSendToLogin","_onSendToLogin","loginPageUrl","clearError","splice","showRegistrationStepNext","_x3","_navigate","window","location","href","Promise","_resolve","_reject","_register","_response$data","_response$data2","actionContext","captcha","getToken","refreshToken","box","displayStep","push","showConfirmationSentStepNext","showDuplicatePersonSelectionStepNext","showPasswordlessConfirmationSentStepNext","showExistingAccountStepNext","error","completedStepBag","confirmationSentStepBag","duplicatePersonSelectionStepBag","passwordlessConfirmationSentStepBag","existingAccountStepBag","onConfigurationValuesChanged","useReloadBlock"],"mappings":"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"}