{"version":3,"file":"js/app.b4ad7392.js","mappings":"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","sources":["webpack://givingportal/./src/utils/StringFunctions.ts","webpack://givingportal/./src/models/Events.ts","webpack://givingportal/./src/models/DonationAttributionType.ts","webpack://givingportal/./src/models/GivingOption.ts","webpack://givingportal/./src/stores/DonationStore.ts","webpack://givingportal/./src/components/ConfirmationDialog.vue?0c08","webpack://givingportal/./src/components/ConfirmationDialog.vue","webpack://givingportal/./src/components/ConfirmationDialog.vue?c107","webpack://givingportal/./src/stores/SiteSettingsStore.ts","webpack://givingportal/./src/components/DonorInformation.vue?5304","webpack://givingportal/./src/components/DonorInformation.vue","webpack://givingportal/./src/components/DonorInformation.vue?68cc","webpack://givingportal/./src/models/DayOfTheMonthMenuItem.ts","webpack://givingportal/./src/components/DonationInformation.vue?1111","webpack://givingportal/./src/components/DonationInformation.vue","webpack://givingportal/./src/components/DonationInformation.vue?ae17","webpack://givingportal/./src/components/DirectYourDonation.vue?1cd1","webpack://givingportal/./src/components/DirectYourDonation.vue","webpack://givingportal/./src/components/DirectYourDonation.vue?6f51","webpack://givingportal/./src/views/DonationForm.vue?028f","webpack://givingportal/./src/views/DonationForm.vue","webpack://givingportal/./src/views/DonationForm.vue?72ea","webpack://givingportal/./src/views/ConfirmationPage.vue?7009","webpack://givingportal/./src/views/ConfirmationPage.vue","webpack://givingportal/./src/views/ConfirmationPage.vue?1647","webpack://givingportal/./src/views/SiteNotEnabled.vue?526b","webpack://givingportal/./src/views/SiteNotEnabled.vue","webpack://givingportal/./src/views/SiteNotEnabled.vue?c2ea","webpack://givingportal/./src/views/SiteNotFound.vue?10be","webpack://givingportal/./src/views/SiteNotFound.vue","webpack://givingportal/./src/views/SiteNotFound.vue?585b","webpack://givingportal/./src/router/index.ts","webpack://givingportal/./src/App.vue?2a5e","webpack://givingportal/./src/App.vue","webpack://givingportal/./src/App.vue?7ccd","webpack://givingportal/./src/main.ts","webpack://givingportal/webpack/bootstrap","webpack://givingportal/webpack/runtime/chunk loaded","webpack://givingportal/webpack/runtime/compat get default export","webpack://givingportal/webpack/runtime/define property getters","webpack://givingportal/webpack/runtime/global","webpack://givingportal/webpack/runtime/hasOwnProperty shorthand","webpack://givingportal/webpack/runtime/jsonp chunk loading","webpack://givingportal/webpack/startup"],"sourcesContent":["const regexPostalCodeCanadian1 = new RegExp(\"^[A-Za-z][0-9][A-Za-z][0-9][A-Za-z][0-9]$\");\nconst regexPostalCodeCanadian2 = new RegExp(\"^[A-Za-z][0-9][A-Za-z] [0-9][A-Za-z][0-9]$\");\nconst regexPostalCodeAmerican1 = new RegExp(\"^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$\");\nconst regexPostalCodeAmerican2 = new RegExp(\"^[0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]$\");\nconst regexProvinceWith2Letters = new RegExp(\"^[A-Z][A-Z]$\");\n\n// Phone Number\nexport const FormatPhoneNumber = (input: string): string => {\n    const phoneAsNumber: number = parseFloat(input);\n\n    if (isNaN(phoneAsNumber)) {\n        return input ? input.trim() : input;\n    }\n\n    if (phoneAsNumber.toString().length != input.length) {\n        return input ? input.trim() : input;\n    }\n\n    const phoneParts: string[] = input.split(\".\");\n\n    let returnValue: string = input;\n\n    let formattedPhone = false;\n\n    switch (phoneParts[0].length) {\n        case 7:\n            returnValue = phoneParts[0].substr(0, 3) + \"-\" + phoneParts[0].substr(3, 4);\n            formattedPhone = true;\n            break;\n        case 10:\n            returnValue = phoneParts[0].substr(0, 3) + \"-\" + phoneParts[0].substr(3, 3) + \"-\" + phoneParts[0].substr(6, 4);\n            formattedPhone = true;\n            break;\n        case 11:\n            returnValue =\n                phoneParts[0].substr(0, 1) +\n                \"-\" +\n                phoneParts[0].substr(1, 3) +\n                \"-\" +\n                phoneParts[0].substr(4, 3) +\n                \"-\" +\n                phoneParts[0].substr(7, 4);\n            formattedPhone = true;\n            break;\n        default:\n            break;\n    }\n\n    if (formattedPhone && phoneParts.length > 1) {\n        returnValue = `${returnValue} x ${phoneParts[1]}`;\n    }\n\n    return returnValue;\n};\n\n// AutoCap\nexport const AutoCap = (input: string): string => {\n    if (!input) return input;\n\n    //If any uppercase letters in the string, return as is.\n    if (input.toLowerCase() != input) return input;\n\n    //Capitalize first letter and everything after a carriage return, hyphen or a space\n    let formattedStr = \"\";\n\n    let newWord = true;\n    for (let x = 0; x < input.length; x++) {\n        const c: string = input.charAt(x);\n        if (newWord) {\n            formattedStr += c.toUpperCase();\n            newWord = false;\n        } else {\n            formattedStr += c;\n        }\n        if (c == \" \" || c == \"-\" || c == \"\\n\") {\n            newWord = true;\n        }\n    }\n    return formattedStr;\n};\n\n// Postal Code\nexport const FormatPostalCode = (postalCode: string): string => {\n    postalCode = postalCode.trim();\n\n    if (!postalCode) {\n        return postalCode;\n    }\n\n    //M2J2R3\n    if (regexPostalCodeCanadian1.test(postalCode)) {\n        postalCode = `${postalCode.substring(0, 3)} ${postalCode.substr(3)}`;\n        return postalCode.toUpperCase();\n    }\n    //M2J 2R3\n    else if (regexPostalCodeCanadian2.test(postalCode)) {\n        return postalCode.toUpperCase();\n    }\n    //902102333\n    else if (regexPostalCodeAmerican1.test(postalCode)) {\n        return `${postalCode.substring(0, 5)}-${postalCode.substr(5)}`;\n    }\n    //90210 2333\n    else if (regexPostalCodeAmerican2.test(postalCode)) {\n        return `${postalCode.substring(0, 5)}-${postalCode.substr(5).trim()}`;\n    } else {\n        return postalCode;\n    }\n};\n\nexport const FormatProvince = (input: string): string => {\n    if (!input) {\n        return input;\n    }\n\n    const trimmedInput: string = input.trim();\n\n    if (trimmedInput.toLowerCase() != trimmedInput) {\n        //Contains upper case\n        return trimmedInput;\n    } else if (trimmedInput.length == 2) {\n        return regexProvinceWith2Letters.test(trimmedInput) ? input : input.toUpperCase();\n    } else {\n        return AutoCap(input);\n    }\n};\n\nexport const GetTextColourFromBackground = (backgroundColour: string): string => {\n    // Text colour is based on background colour so the text will show up\n    const white = \"#fff\";\n    const black = \"#000\";\n\n    if (backgroundColour === null) {\n        return white;\n    }\n    const hex: string = backgroundColour.replace(/#/, \"\");\n    const r: number = parseInt(hex.substr(0, 2), 16);\n    const g: number = parseInt(hex.substr(2, 2), 16);\n    const b: number = parseInt(hex.substr(4, 2), 16);\n\n    const lumina: number = [0.299 * r, 0.587 * g, 0.114 * b].reduce((x, y) => x + y);\n\n    return lumina > 162 ? black : white;\n};\n\nexport const GetOrdinalForDayOfTheMonth = (day: number): string => {\n    if (day) {\n        if (day > 3 && day < 21) {\n            return \"th\";\n        }\n        switch (day % 10) {\n            case 1:\n                return \"st\";\n            case 2:\n                return \"nd\";\n            case 3:\n                return \"rd\";\n            default:\n                return \"th\";\n        }\n    } else {\n        return \"\";\n    }\n};\n","export default class Events {\n    public static TokenUpdated = \"TokenUpdated\";\n    public static ValidityUpdated = \"ValidityUpdated\";\n    public static DonationSubmitted = \"DonationSubmitted\";\n    public static CardholderNameUpdated = \"CardholderNameUpdated\";\n    public static SubmitPaymentClicked = \"SubmitPaymentClicked\";\n    public static RefreshToken = \"RefreshToken\";\n}\n","import * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\n\nexport class DonationAttributionType {\n    public Name: string;\n    public Value: Gateway.DonationDedicationType;\n\n    public constructor(name: string, value: Gateway.DonationDedicationType) {\n        this.Name = name;\n        this.Value = value;\n    }\n}\n","import * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\n\nexport class GivingOption {\n    public Name: string;\n    public Id: string;\n    public Description: string;\n    public Order: number;\n    public DonationAttribution: Gateway.DonationDedicationType;\n    public DonationAttributionName: string;\n\n    public constructor(option: Gateway.GivingOptionDTO) {\n        this.Name = option.Name;\n        this.Id = option.Id;\n        this.Description = option.Description;\n        this.Order = option.Order;\n        this.DonationAttribution = option.DonationAttribution;\n        this.DonationAttributionName = option.DonationAttributionName;\n    }\n}\n","import { DonationAttributionType } from \"@/models/DonationAttributionType\";\nimport { GivingOption } from \"@/models/GivingOption\";\nimport { GetOrdinalForDayOfTheMonth } from \"@/utils/StringFunctions\";\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport { defineStore } from \"pinia\";\n\nexport const useDonationStore = defineStore(\"donationStore\", {\n    state: () => ({\n        DonationAttempts: 0,\n        //donation amount\n        DonationAmount: null,\n        DonationNote: null as string,\n\n        //giving option\n        GivingOptions: [] as GivingOption[],\n        SelectedGivingOptionId: \"\",\n        SelectedDonationAttributionOption: {} as Gateway.DonationDedicationType,\n        DonationAttributionName: \"\",\n\n        DonationAttributionOptions: [\n            new DonationAttributionType(\"No Dedication\", Gateway.DonationDedicationType.NoDedication),\n            new DonationAttributionType(\"In Memory Of\", Gateway.DonationDedicationType.InMemoryOf),\n            new DonationAttributionType(\"In Honor Of\", Gateway.DonationDedicationType.InHonourOf),\n        ],\n\n        //donor info\n        FirstName: null as string,\n        LastName: null as string,\n        Email: null as string,\n        PhoneNumber: null as string,\n        PhoneNumberTypes: [\"Cell\", \"Home\", \"Other\"] as string[],\n        SelectedPhoneNumberType: \"\",\n        PhoneExtension: null as string,\n\n        StreetAddress: null as string,\n        City: null as string,\n        ProvinceState: null as string,\n        Country: null as string,\n        PostalCode: null as string,\n\n        BillingStreetAddress: null as string,\n        BillingCity: null as string,\n        BillingProvinceState: null as string,\n        BillingCountry: null as string,\n        BillingPostalCode: null as string,\n        UseDifferentAddress: false,\n\n        //PaymentInfo\n        CardholderName: null as string,\n        IsSubmittingPayment: false,\n        PaymentDeclined: false,\n        Token: null as string,\n        SubmitPaymentClicked: false,\n\n        //misc\n        UseCanadianSpelling: false,\n        ByPassCaptcha: false,\n        RecaptchaToken: null as string,\n\n        ShowBamboraError: false,\n\n        PreviousSubmissionDeclinedDonationId: \"\",\n\n        ShowConfirmation: false,\n\n        IsLoading: false,\n\n        IsRecurringDonation: false,\n        DayOfRecurrence: new Date().getDate(),\n\n        paymentMethod: {} as Gateway.PaymentMethodDTO,\n    }),\n    getters: {\n        SelectedGivingOption(): GivingOption {\n            if (this.GivingOptions.length > 1) {\n                return this.GivingOptions.filter((opt) => opt.Id === this.SelectedGivingOptionId)[0];\n            } else {\n                return this.GivingOptions[0];\n            }\n        },\n        DedicationString(): string {\n            if (this.SelectedDonationAttributionOption) {\n                const type = this.DonationAttributionOptions.find(\n                    (attributionOption) => attributionOption.Value === this.SelectedDonationAttributionOption,\n                );\n                if (type) {\n                    return type.Name;\n                }\n            }\n            return \"\";\n        },\n        CalculatedRecurrenceDate(): Date {\n            const currentDate = new Date();\n            let scheduledDate = new Date();\n\n            if (currentDate.getDate() < this.DayOfRecurrence) {\n                //if the date is later this month\n                scheduledDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), this.DayOfRecurrence);\n            } else if (currentDate.getDate() > this.DayOfRecurrence) {\n                //if the date is next month\n                const daysNextMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate();\n                if (this.DayOfRecurrence <= daysNextMonth) {\n                    //if the day exists next month, fast forward\n                    scheduledDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, this.DayOfRecurrence);\n                } else {\n                    //set it to the end of the month\n                    scheduledDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, daysNextMonth);\n                }\n            } else {\n                //if the date is today\n                scheduledDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());\n            }\n\n            return scheduledDate;\n        },\n        IsDayOfRecurrenceToday(): boolean {\n            return this.DayOfRecurrence === new Date().getDate();\n        },\n        DayOfRecurrenceOrdinal(): string {\n            return GetOrdinalForDayOfTheMonth(this.DayOfRecurrence);\n        },\n    },\n    actions: {\n        async GetGivingOptions() {\n            const response = await Gateway.ApiGateway.GetGivingOptions();\n            this.GivingOptions = response.data.map((option: Gateway.GivingOptionDTO) => {\n                return new GivingOption(option);\n            });\n            this.IsLoading = false;\n        },\n        async GetDonationAttributingSpelling() {\n            const response = await Gateway.ApiGateway.GetDisplayCanadianSpelling();\n            this.UseCanadianSpelling = response.data;\n            this.DonationAttributionOptions = [\n                new DonationAttributionType(\"No Dedication\", Gateway.DonationDedicationType.NoDedication),\n                new DonationAttributionType(\"In Memory Of\", Gateway.DonationDedicationType.InMemoryOf),\n                new DonationAttributionType(\n                    `${this.UseCanadianSpelling ? \"In Honour Of\" : \"In Honor Of\"}`,\n                    Gateway.DonationDedicationType.InHonourOf,\n                ),\n            ];\n        },\n        ToDTO(): Gateway.DonationSubmissionDTO {\n            const dto: Gateway.DonationSubmissionDTO = <Gateway.DonationSubmissionDTO>{};\n\n            dto.Amount = this.DonationAmount;\n            dto.SelectedGivingOptionId = this.SelectedGivingOption.Id;\n            dto.DonationNote = this.DonationNote;\n\n            if (this.SelectedGivingOption.DonationAttribution !== Gateway.DonationDedicationType.NoDedication) {\n                dto.Attribution = this.SelectedGivingOption.DonationAttribution;\n                dto.AttributedTo = this.SelectedGivingOption.DonationAttributionName;\n            } else {\n                dto.Attribution = this.SelectedDonationAttributionOption;\n                dto.AttributedTo = this.DonationAttributionName;\n            }\n\n            dto.FirstName = this.FirstName;\n            dto.LastName = this.LastName;\n            dto.Email = this.Email;\n            if (this.PhoneNumber != \"\" && this.PhoneNumber != null) {\n                dto.PhoneNumber = this.PhoneNumber;\n                dto.PhoneNumberType = this.SelectedPhoneNumberType;\n                dto.PhoneExtension = this.PhoneExtension;\n            } else {\n                //dto.PhoneNumberType = null;\n            }\n\n            dto.StreetAddress = this.StreetAddress;\n            dto.Country = this.Country;\n            dto.State = this.ProvinceState;\n            dto.City = this.City;\n            dto.PostalCode = this.PostalCode;\n\n            dto.BillingAddress = this.BillingStreetAddress;\n            dto.BillingCity = this.BillingCity;\n            dto.BillingState = this.BillingProvinceState;\n            dto.BillingCountry = this.BillingCountry;\n            dto.BillingPostalCode = this.BillingPostalCode;\n            dto.UseBillingAddress = this.UseDifferentAddress;\n\n            dto.CardHolderName = this.CardholderName;\n            dto.Token = this.Token;\n\n            dto.RecaptchaToken = this.RecaptchaToken;\n\n            dto.PreviousSubmissionDeclinedDonationId = this.PreviousSubmissionDeclinedDonationId;\n\n            dto.IsRecurring = this.IsRecurringDonation;\n            dto.DayOfRecurrence = this.DayOfRecurrence;\n            return dto;\n        },\n        async getPaymentMethods() {\n            try {\n                const response = await Gateway.ApiGateway.PaymentMethod();\n                this.paymentMethod = response.data;\n            } catch (error) {\n                console.error(\"PaymentMethod: \", error);\n            }\n        },\n    },\n});\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, toDisplayString as _toDisplayString, createBlock as _createBlock, normalizeStyle as _normalizeStyle, isRef as _isRef } from \"vue\"\n\nconst _hoisted_1 = { class: \"title\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { class: \"review-table\" }\nconst _hoisted_4 = [\"textContent\"]\nconst _hoisted_5 = [\"textContent\"]\nconst _hoisted_6 = [\"textContent\"]\nconst _hoisted_7 = [\"textContent\"]\nconst _hoisted_8 = [\"textContent\"]\nconst _hoisted_9 = [\"textContent\"]\nconst _hoisted_10 = [\"textContent\"]\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = { class: \"buttons-container\" }\n\nimport { storeToRefs } from \"pinia\";\nimport Events from \"../models/Events\";\nimport { useDonationStore } from \"@/stores/DonationStore\";\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport { computed } from \"vue\";\n\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'ConfirmationDialog',\n  emits: [Events.DonationSubmitted, \"closeDialog\"],\n  setup(__props, { emit: __emit }) {\n\nconst donationStore = useDonationStore();\nconst {\n    ShowConfirmation,\n    IsSubmittingPayment,\n    PaymentDeclined,\n    DonationAmount,\n    Email,\n    IsRecurringDonation,\n    SelectedGivingOption,\n    DedicationString,\n    DonationAttributionName,\n    DonationNote,\n    CalculatedRecurrenceDate,\n    IsDayOfRecurrenceToday,\n    DayOfRecurrence,\n    DayOfRecurrenceOrdinal,\n    SelectedDonationAttributionOption,\n} = storeToRefs(donationStore);\n\nconst emits = __emit;\n\nconst RecurringDonationAmount = computed<string>(() => {\n    if (!IsRecurringDonation.value) {\n        return \"\";\n    }\n\n    return `$${DonationAmount.value}/month (on the ${DayOfRecurrence.value}${DayOfRecurrenceOrdinal.value}${\n        DayOfRecurrence.value > 28 ? \"*\" : \"\"\n    })`;\n});\n\nconst DonationAmountText = computed<string>(() => {\n    return `$${DonationAmount.value}`;\n});\n\nfunction submit(): void {\n    emits(Events.DonationSubmitted, null);\n}\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_cb_col = _resolveComponent(\"cb-col\")!\n  const _component_cb_row = _resolveComponent(\"cb-row\")!\n  const _component_cb_alert = _resolveComponent(\"cb-alert\")!\n  const _component_cb_button = _resolveComponent(\"cb-button\")!\n  const _component_cb_modal_page = _resolveComponent(\"cb-modal-page\")!\n  const _component_cb_spinner = _resolveComponent(\"cb-spinner\")!\n  const _component_cb_icon = _resolveComponent(\"cb-icon\")!\n  const _component_cb_app = _resolveComponent(\"cb-app\")!\n  const _component_cb_modal = _resolveComponent(\"cb-modal\")!\n\n  return (_openBlock(), _createBlock(_component_cb_modal, {\n    modelValue: _unref(ShowConfirmation),\n    \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => (_isRef(ShowConfirmation) ? (ShowConfirmation).value = $event : null)),\n    persistent: \"\",\n    customWidth: \"300\"\n  }, {\n    default: _withCtx(() => [\n      _createVNode(_component_cb_app, { class: \"modal-container\" }, {\n        default: _withCtx(() => [\n          (!_unref(IsSubmittingPayment) && !_unref(PaymentDeclined))\n            ? (_openBlock(), _createBlock(_component_cb_modal_page, { key: 0 }, {\n                header: _withCtx(() => [\n                  _createElementVNode(\"div\", _hoisted_1, [\n                    _cache[4] || (_cache[4] = _createTextVNode(\"Review Your\")),\n                    (_unref(IsRecurringDonation))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, \" Monthly\"))\n                      : _createCommentVNode(\"\", true),\n                    _cache[5] || (_cache[5] = _createTextVNode(\" Donation\"))\n                  ])\n                ]),\n                body: _withCtx(() => [\n                  _createElementVNode(\"div\", _hoisted_3, [\n                    _createVNode(_component_cb_row, { class: \"table-row\" }, {\n                      default: _withCtx(() => [\n                        _createVNode(_component_cb_col, {\n                          desktop: \"3\",\n                          tablet: \"3\",\n                          phone: \"4\"\n                        }, {\n                          default: _withCtx(() => _cache[6] || (_cache[6] = [\n                            _createElementVNode(\"span\", { class: \"description\" }, \"Donation\", -1)\n                          ])),\n                          _: 1\n                        }),\n                        _createVNode(_component_cb_col, {\n                          desktop: \"9\",\n                          tablet: \"9\",\n                          phone: \"8\"\n                        }, {\n                          default: _withCtx(() => [\n                            _createElementVNode(\"span\", {\n                              textContent: _toDisplayString(_unref(IsRecurringDonation) ? RecurringDonationAmount.value : DonationAmountText.value)\n                            }, null, 8, _hoisted_4)\n                          ]),\n                          _: 1\n                        })\n                      ]),\n                      _: 1\n                    }),\n                    _createVNode(_component_cb_row, { class: \"table-row\" }, {\n                      default: _withCtx(() => [\n                        _createVNode(_component_cb_col, {\n                          desktop: \"3\",\n                          tablet: \"3\",\n                          phone: \"4\"\n                        }, {\n                          default: _withCtx(() => _cache[7] || (_cache[7] = [\n                            _createElementVNode(\"span\", { class: \"description\" }, \"Giving to\", -1)\n                          ])),\n                          _: 1\n                        }),\n                        _createVNode(_component_cb_col, {\n                          desktop: \"9\",\n                          tablet: \"9\",\n                          phone: \"8\"\n                        }, {\n                          default: _withCtx(() => [\n                            _createElementVNode(\"span\", {\n                              textContent: _toDisplayString(_unref(SelectedGivingOption).Name)\n                            }, null, 8, _hoisted_5)\n                          ]),\n                          _: 1\n                        })\n                      ]),\n                      _: 1\n                    }),\n                    (_unref(SelectedDonationAttributionOption) !== Gateway.DonationDedicationType.NoDedication)\n                      ? (_openBlock(), _createBlock(_component_cb_row, {\n                          key: 0,\n                          class: \"table-row\"\n                        }, {\n                          default: _withCtx(() => [\n                            _createVNode(_component_cb_col, {\n                              desktop: \"3\",\n                              tablet: \"3\",\n                              phone: \"4\"\n                            }, {\n                              default: _withCtx(() => _cache[8] || (_cache[8] = [\n                                _createElementVNode(\"span\", { class: \"description\" }, \"Dedication\", -1)\n                              ])),\n                              _: 1\n                            }),\n                            _createVNode(_component_cb_col, {\n                              desktop: \"9\",\n                              tablet: \"9\",\n                              phone: \"8\"\n                            }, {\n                              default: _withCtx(() => [\n                                _createElementVNode(\"span\", {\n                                  textContent: _toDisplayString(`${_unref(DedicationString)}: ${_unref(DonationAttributionName)}`)\n                                }, null, 8, _hoisted_6)\n                              ]),\n                              _: 1\n                            })\n                          ]),\n                          _: 1\n                        }))\n                      : _createCommentVNode(\"\", true),\n                    (_unref(DonationNote))\n                      ? (_openBlock(), _createBlock(_component_cb_row, {\n                          key: 1,\n                          class: \"table-row\"\n                        }, {\n                          default: _withCtx(() => [\n                            _createVNode(_component_cb_col, {\n                              desktop: \"3\",\n                              tablet: \"3\",\n                              phone: \"4\"\n                            }, {\n                              default: _withCtx(() => _cache[9] || (_cache[9] = [\n                                _createElementVNode(\"span\", { class: \"description\" }, \"Donation Note\", -1)\n                              ])),\n                              _: 1\n                            }),\n                            _createVNode(_component_cb_col, {\n                              desktop: \"9\",\n                              tablet: \"9\",\n                              phone: \"8\"\n                            }, {\n                              default: _withCtx(() => [\n                                _createElementVNode(\"span\", {\n                                  textContent: _toDisplayString(_unref(DonationNote))\n                                }, null, 8, _hoisted_7)\n                              ]),\n                              _: 1\n                            })\n                          ]),\n                          _: 1\n                        }))\n                      : _createCommentVNode(\"\", true)\n                  ]),\n                  (_unref(IsRecurringDonation) && _unref(DayOfRecurrence) > 28)\n                    ? (_openBlock(), _createBlock(_component_cb_row, { key: 0 }, {\n                        default: _withCtx(() => _cache[10] || (_cache[10] = [\n                          _createElementVNode(\"span\", { class: \"last-day-text\" }, \" *Should an upcoming month not include this date, the donation will process on the last day of that month (i.e. 29th, 30th, 31st, etc.) \", -1)\n                        ])),\n                        _: 1\n                      }))\n                    : _createCommentVNode(\"\", true),\n                  _createVNode(_component_cb_row, {\n                    class: \"table-row\",\n                    style: {\"margin-top\":\"16px\"}\n                  }, {\n                    default: _withCtx(() => [\n                      _createVNode(_component_cb_col, {\n                        desktop: \"3\",\n                        tablet: \"3\",\n                        phone: \"4\"\n                      }, {\n                        default: _withCtx(() => _cache[11] || (_cache[11] = [\n                          _createElementVNode(\"span\", { class: \"description\" }, \"Email\", -1)\n                        ])),\n                        _: 1\n                      }),\n                      _createVNode(_component_cb_col, {\n                        desktop: \"9\",\n                        tablet: \"9\",\n                        phone: \"8\"\n                      }, {\n                        default: _withCtx(() => [\n                          _createElementVNode(\"span\", {\n                            textContent: _toDisplayString(_unref(Email))\n                          }, null, 8, _hoisted_8)\n                        ]),\n                        _: 1\n                      })\n                    ]),\n                    _: 1\n                  }),\n                  _createElementVNode(\"div\", {\n                    class: \"separator\",\n                    style: _normalizeStyle(_unref(IsRecurringDonation) ? `` : `margin-bottom: 0px`)\n                  }, null, 4),\n                  (_unref(IsRecurringDonation))\n                    ? (_openBlock(), _createBlock(_component_cb_row, { key: 1 }, {\n                        default: _withCtx(() => [\n                          _createVNode(_component_cb_col, null, {\n                            default: _withCtx(() => [\n                              _createVNode(_component_cb_alert, {\n                                color: \"accent\",\n                                class: \"banner-style\"\n                              }, {\n                                default: _withCtx(() => [\n                                  _cache[12] || (_cache[12] = _createTextVNode(\" Your first \")),\n                                  _createElementVNode(\"b\", null, [\n                                    _createElementVNode(\"span\", {\n                                      textContent: _toDisplayString(DonationAmountText.value)\n                                    }, null, 8, _hoisted_9)\n                                  ]),\n                                  _cache[13] || (_cache[13] = _createTextVNode(\" donation will be processed \")),\n                                  _createElementVNode(\"b\", null, [\n                                    _createElementVNode(\"span\", {\n                                      textContent: _toDisplayString(\n                                            _unref(CalculatedRecurrenceDate).toLocaleDateString('en-us', {\n                                                month: 'short',\n                                                day: 'numeric',\n                                            })\n                                        )\n                                    }, null, 8, _hoisted_10),\n                                    (_unref(IsDayOfRecurrenceToday))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" (today)\"))\n                                      : _createCommentVNode(\"\", true)\n                                  ]),\n                                  _cache[14] || (_cache[14] = _createTextVNode(\". \"))\n                                ]),\n                                _: 1\n                              })\n                            ]),\n                            _: 1\n                          })\n                        ]),\n                        _: 1\n                      }))\n                    : _createCommentVNode(\"\", true)\n                ]),\n                footer: _withCtx(() => [\n                  _createElementVNode(\"div\", _hoisted_12, [\n                    _createVNode(_component_cb_button, {\n                      class: \"col\",\n                      color: \"accent\",\n                      label: \"Confirm\",\n                      \"full-width\": true,\n                      onClick: submit\n                    }),\n                    _createVNode(_component_cb_button, {\n                      label: \"Back\",\n                      class: \"col\",\n                      \"full-width\": true,\n                      onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('closeDialog')))\n                    })\n                  ])\n                ]),\n                _: 1\n              }))\n            : _createCommentVNode(\"\", true),\n          (_unref(IsSubmittingPayment))\n            ? (_openBlock(), _createBlock(_component_cb_modal_page, {\n                key: 1,\n                style: {\"text-align\":\"center\"}\n              }, {\n                header: _withCtx(() => [\n                  _createVNode(_component_cb_spinner)\n                ]),\n                body: _withCtx(() => _cache[15] || (_cache[15] = [\n                  _createElementVNode(\"p\", null, \"Submitting...\", -1)\n                ])),\n                footer: _withCtx(() => _cache[16] || (_cache[16] = [\n                  _createElementVNode(\"p\", null, \"(This may take a moment)\", -1)\n                ])),\n                _: 1\n              }))\n            : _createCommentVNode(\"\", true),\n          (!_unref(IsSubmittingPayment) && _unref(PaymentDeclined) && !_unref(IsRecurringDonation))\n            ? (_openBlock(), _createBlock(_component_cb_modal_page, { key: 2 }, {\n                header: _withCtx(() => [\n                  _createVNode(_component_cb_icon, {\n                    name: \"fas fa-exclamation-triangle\",\n                    color: \"red\"\n                  }),\n                  _cache[17] || (_cache[17] = _createTextVNode(\" We were unable to process your donation \"))\n                ]),\n                body: _withCtx(() => _cache[18] || (_cache[18] = [\n                  _createElementVNode(\"p\", { style: {\"text-align\":\"center\"} }, \"Please check the credit card information and try again\", -1)\n                ])),\n                footer: _withCtx(() => [\n                  _createVNode(_component_cb_button, {\n                    label: \"Close\",\n                    onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$emit('closeDialog', _unref(PaymentDeclined))))\n                  })\n                ]),\n                _: 1\n              }))\n            : _createCommentVNode(\"\", true),\n          (!_unref(IsSubmittingPayment) && _unref(PaymentDeclined) && _unref(IsRecurringDonation))\n            ? (_openBlock(), _createBlock(_component_cb_modal_page, { key: 3 }, {\n                header: _withCtx(() => [\n                  _createVNode(_component_cb_icon, {\n                    name: \"fas fa-exclamation-triangle\",\n                    color: \"red\"\n                  }),\n                  _cache[19] || (_cache[19] = _createTextVNode(\" We were unable to process your donation \"))\n                ]),\n                body: _withCtx(() => _cache[20] || (_cache[20] = [\n                  _createElementVNode(\"p\", { style: {\"text-align\":\"center\"} }, \"Your credit card will not be charged monthly going forward.\", -1),\n                  _createElementVNode(\"p\", { style: {\"text-align\":\"center\"} }, \"Please check the credit card information and try again\", -1)\n                ])),\n                footer: _withCtx(() => [\n                  _createVNode(_component_cb_button, {\n                    label: \"Close\",\n                    onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$emit('closeDialog', _unref(PaymentDeclined))))\n                  })\n                ]),\n                _: 1\n              }))\n            : _createCommentVNode(\"\", true)\n        ]),\n        _: 1\n      })\n    ]),\n    _: 1\n  }, 8, [\"modelValue\"]))\n}\n}\n\n})","<template>\n    <cb-modal v-model=\"ShowConfirmation\" persistent customWidth=\"300\">\n        <cb-app class=\"modal-container\">\n            <cb-modal-page v-if=\"!IsSubmittingPayment && !PaymentDeclined\">\n                <template #header>\n                    <div class=\"title\">Review Your<span v-if=\"IsRecurringDonation\"> Monthly</span> Donation</div>\n                </template>\n                <template #body>\n                    <div class=\"review-table\">\n                        <cb-row class=\"table-row\">\n                            <cb-col desktop=\"3\" tablet=\"3\" phone=\"4\">\n                                <span class=\"description\">Donation</span>\n                            </cb-col>\n                            <cb-col desktop=\"9\" tablet=\"9\" phone=\"8\">\n                                <span v-text=\"IsRecurringDonation ? RecurringDonationAmount : DonationAmountText\" />\n                            </cb-col>\n                        </cb-row>\n                        <cb-row class=\"table-row\">\n                            <cb-col desktop=\"3\" tablet=\"3\" phone=\"4\">\n                                <span class=\"description\">Giving to</span>\n                            </cb-col>\n                            <cb-col desktop=\"9\" tablet=\"9\" phone=\"8\">\n                                <span v-text=\"SelectedGivingOption.Name\" />\n                            </cb-col>\n                        </cb-row>\n                        <cb-row v-if=\"SelectedDonationAttributionOption !== Gateway.DonationDedicationType.NoDedication\" class=\"table-row\">\n                            <cb-col desktop=\"3\" tablet=\"3\" phone=\"4\">\n                                <span class=\"description\">Dedication</span>\n                            </cb-col>\n                            <cb-col desktop=\"9\" tablet=\"9\" phone=\"8\">\n                                <span v-text=\"`${DedicationString}: ${DonationAttributionName}`\" />\n                            </cb-col>\n                        </cb-row>\n                        <cb-row v-if=\"DonationNote\" class=\"table-row\">\n                            <cb-col desktop=\"3\" tablet=\"3\" phone=\"4\">\n                                <span class=\"description\">Donation Note</span>\n                            </cb-col>\n                            <cb-col desktop=\"9\" tablet=\"9\" phone=\"8\">\n                                <span v-text=\"DonationNote\" />\n                            </cb-col>\n                        </cb-row>\n                    </div>\n\n                    <cb-row v-if=\"IsRecurringDonation && DayOfRecurrence > 28\">\n                        <span class=\"last-day-text\">\n                            *Should an upcoming month not include this date, the donation will process on the last day of that month (i.e.\n                            29th, 30th, 31st, etc.)\n                        </span>\n                    </cb-row>\n                    <cb-row class=\"table-row\" style=\"margin-top: 16px\">\n                        <cb-col desktop=\"3\" tablet=\"3\" phone=\"4\">\n                            <span class=\"description\">Email</span>\n                        </cb-col>\n                        <cb-col desktop=\"9\" tablet=\"9\" phone=\"8\">\n                            <span v-text=\"Email\" />\n                        </cb-col>\n                    </cb-row>\n\n                    <div class=\"separator\" :style=\"IsRecurringDonation ? `` : `margin-bottom: 0px`\" />\n\n                    <cb-row v-if=\"IsRecurringDonation\">\n                        <cb-col>\n                            <cb-alert color=\"accent\" class=\"banner-style\">\n                                Your first <b><span v-text=\"DonationAmountText\"></span></b> donation will be processed\n                                <b>\n                                    <span\n                                        v-text=\"\n                                            CalculatedRecurrenceDate.toLocaleDateString('en-us', {\n                                                month: 'short',\n                                                day: 'numeric',\n                                            })\n                                        \"\n                                    />\n                                    <span v-if=\"IsDayOfRecurrenceToday\"> (today)</span> </b\n                                >.\n                            </cb-alert>\n                        </cb-col>\n                    </cb-row>\n                </template>\n                <template #footer>\n                    <div class=\"buttons-container\">\n                        <cb-button class=\"col\" color=\"accent\" label=\"Confirm\" :full-width=\"true\" @click=\"submit\" />\n                        <cb-button label=\"Back\" class=\"col\" :full-width=\"true\" @click=\"$emit('closeDialog')\" />\n                    </div>\n                </template>\n            </cb-modal-page>\n            <cb-modal-page v-if=\"IsSubmittingPayment\" style=\"text-align: center\">\n                <template #header>\n                    <cb-spinner />\n                </template>\n                <template #body>\n                    <p>Submitting...</p>\n                </template>\n                <template #footer>\n                    <p>(This may take a moment)</p>\n                </template>\n            </cb-modal-page>\n            <cb-modal-page v-if=\"!IsSubmittingPayment && PaymentDeclined && !IsRecurringDonation\">\n                <template #header>\n                    <cb-icon name=\"fas fa-exclamation-triangle\" color=\"red\" /> We were unable to process your donation\n                </template>\n                <template #body>\n                    <p style=\"text-align: center\">Please check the credit card information and try again</p>\n                </template>\n                <template #footer>\n                    <cb-button label=\"Close\" @click=\"$emit('closeDialog', PaymentDeclined)\" />\n                </template>\n            </cb-modal-page>\n            <cb-modal-page v-if=\"!IsSubmittingPayment && PaymentDeclined && IsRecurringDonation\">\n                <template #header>\n                    <cb-icon name=\"fas fa-exclamation-triangle\" color=\"red\" /> We were unable to process your donation\n                </template>\n                <template #body>\n                    <p style=\"text-align: center\">Your credit card will not be charged monthly going forward.</p>\n                    <p style=\"text-align: center\">Please check the credit card information and try again</p>\n                </template>\n                <template #footer>\n                    <cb-button label=\"Close\" @click=\"$emit('closeDialog', PaymentDeclined)\" />\n                </template>\n            </cb-modal-page>\n        </cb-app>\n    </cb-modal>\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from \"pinia\";\nimport Events from \"../models/Events\";\nimport { useDonationStore } from \"@/stores/DonationStore\";\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport { computed } from \"vue\";\n\nconst donationStore = useDonationStore();\nconst {\n    ShowConfirmation,\n    IsSubmittingPayment,\n    PaymentDeclined,\n    DonationAmount,\n    Email,\n    IsRecurringDonation,\n    SelectedGivingOption,\n    DedicationString,\n    DonationAttributionName,\n    DonationNote,\n    CalculatedRecurrenceDate,\n    IsDayOfRecurrenceToday,\n    DayOfRecurrence,\n    DayOfRecurrenceOrdinal,\n    SelectedDonationAttributionOption,\n} = storeToRefs(donationStore);\n\nconst emits = defineEmits([Events.DonationSubmitted, \"closeDialog\"]);\n\nconst RecurringDonationAmount = computed<string>(() => {\n    if (!IsRecurringDonation.value) {\n        return \"\";\n    }\n\n    return `$${DonationAmount.value}/month (on the ${DayOfRecurrence.value}${DayOfRecurrenceOrdinal.value}${\n        DayOfRecurrence.value > 28 ? \"*\" : \"\"\n    })`;\n});\n\nconst DonationAmountText = computed<string>(() => {\n    return `$${DonationAmount.value}`;\n});\n\nfunction submit(): void {\n    emits(Events.DonationSubmitted, null);\n}\n</script>\n\n<style scoped>\n.title {\n    text-align: center;\n    font-size: 22px;\n    font-weight: 700;\n}\n.description {\n    font-weight: 500;\n    font-size: 13px;\n}\n.modal-container {\n    max-width: 440px;\n}\n.table-row {\n    margin-top: -1px;\n    font-weight: 400;\n    font-size: 13px;\n    border: 1px solid #e4e5e9;\n}\n.table-row > * {\n    display: flex;\n    align-items: center;\n    padding: 8px;\n}\n.table-row .cb-col + .cb-col {\n    border-left: 1px solid #e4e5e9;\n}\n.last-day-text {\n    font-weight: 400;\n    font-size: 10px;\n    font-style: italic;\n    text-align: center;\n    padding-top: 8px;\n}\n:deep(.q-banner) {\n    min-height: unset;\n}\n:deep(.q-card__actions) {\n    padding: 0px 16px 16px 16px;\n}\n.buttons-container {\n    display: flex;\n    width: 100%;\n}\n.buttons-container .cb-wrapper + .cb-wrapper {\n    padding-left: 8px;\n}\n.banner-style :deep(.q-banner) {\n    color: unset !important;\n    text-align: center;\n    background-color: #3333331a !important;\n}\n@media (max-width: 1024px) {\n    .modal-container {\n        min-width: 340px;\n    }\n}\n@media (min-width: 1024px) {\n    .modal-container {\n        min-width: 440px;\n    }\n}\n:deep(.q-card__actions) {\n    justify-content: center;\n}\n</style>\n","import script from \"./ConfirmationDialog.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ConfirmationDialog.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ConfirmationDialog.vue?vue&type=style&index=0&id=f9f0073e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f9f0073e\"]])\n\nexport default __exports__","import { defineStore } from \"pinia\";\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport { AxiosResponse } from \"axios\";\n\nexport const useSiteSettings = defineStore(\"siteSettingsStore\", {\n    state: () => ({\n        VisualSettings: {} as Gateway.GivingSiteLookAndFeelDTO,\n        SiteSettings: {} as Gateway.GivingSiteSettingsDTO,\n        Confirmation: {} as Gateway.GivingSiteConfirmationDTO,\n        GoogleTagSettings: {} as Gateway.GoogleTagSettingsDTO,\n\n        ButtonTextColour: \"#fff\",\n\n        Description: \"\",\n        CaptchaSiteKey: \"\",\n        IsValidSite: false,\n\n        FooterHeight: null as number,\n        Version: \"\",\n\n        IsEnabled: false,\n\n        IsLoading: false,\n\n        IsRecurringDonationsFeatureEnabled: false,\n\n        CountryCodes: [] as string[],\n    }),\n    getters: {},\n    actions: {\n        async getSiteInfo() {\n            const givingSite: AxiosResponse<Gateway.OnlineGivingSiteDTO> = await Gateway.ApiGateway.GetSiteInfo();\n\n            if (givingSite.data.IsValidSite) {\n                this.VisualSettings = givingSite.data.LookAndFeel;\n                this.Description = this.VisualSettings.Description;\n                this.SiteSettings = givingSite.data.SiteSettings;\n                this.Confirmation = givingSite.data.Confirmation;\n                this.Version = givingSite.data.Version;\n                this.CaptchaSiteKey = givingSite.data.CaptchaSiteKey;\n                this.GoogleTagSettings = givingSite.data.GoogleTagSettings;\n\n                this.IsEnabled = givingSite.data.IsEnabled;\n\n                //one is the feature flag(IsRecurringDonationsFeatureEnabled)\n                // and one is the site setting (RecurringDonationsEnabled)\n                this.IsRecurringDonationsFeatureEnabled =\n                    givingSite.data.SiteSettings.RecurringDonationsEnabled &&\n                    givingSite.data.SiteSettings.IsRecurringDonationsFeatureEnabled;\n            }\n            this.IsValidSite = givingSite.data.IsValidSite;\n            this.CountryCodes = givingSite.data.CountryCodes;\n        },\n    },\n});\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, isRef as _isRef, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"contact-info-container\" }\n\nimport { useDonationStore } from \"@/stores/DonationStore\";\nimport useVuelidate from \"@vuelidate/core\";\nimport { email, required, requiredIf, helpers, maxLength } from \"@vuelidate/validators\";\nimport { storeToRefs } from \"pinia\";\nimport { computed } from \"vue\";\nimport { AutoCap, FormatPostalCode, FormatProvince } from \"../utils/StringFunctions\";\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport { useSiteSettings } from \"@/stores/SiteSettingsStore\";\n\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'DonorInformation',\n  setup(__props) {\n\nconst donationStore = useDonationStore();\nconst {\n    FirstName,\n    LastName,\n    Email,\n    PhoneNumber,\n    SelectedPhoneNumberType,\n    PhoneNumberTypes,\n    PhoneExtension,\n    StreetAddress,\n    City,\n    ProvinceState,\n    PostalCode,\n    Country,\n    BillingStreetAddress,\n    BillingCity,\n    BillingProvinceState,\n    BillingCountry,\n    BillingPostalCode,\n    UseDifferentAddress,\n    paymentMethod,\n} = storeToRefs(donationStore);\n\nconst siteSettingsStore = useSiteSettings();\nconst { CountryCodes } = storeToRefs(siteSettingsStore);\n\nSelectedPhoneNumberType.value = \"Cell\";\n\nconst validations = computed(() => ({\n    FirstName: {\n        required: helpers.withMessage(\"First name is required\", required),\n        maxLength: helpers.withMessage(\"This field has a character limit of 100.\", maxLength(100)),\n    },\n    LastName: {\n        required: helpers.withMessage(\"Last name is required\", required),\n        maxLength: helpers.withMessage(\"This field has a character limit of 100.\", maxLength(100)),\n    },\n    Email: {\n        required: helpers.withMessage(\"Email is required\", required),\n        email,\n        maxLength: helpers.withMessage(\"This field has a character limit of 250.\", maxLength(250)),\n    },\n    StreetAddress: { required },\n    City: { required },\n    ProvinceState: { required },\n    PostalCode: { required },\n    Country: { required },\n    BillingStreetAddress: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n    BillingCity: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n    BillingProvinceState: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n    BillingPostalCode: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n    BillingCountry: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n}));\n\nfunction writeOdinField(newValue: string, field: \"street\" | \"city\" | \"postal\") {\n    if (paymentMethod.value.Processor?.Processor !== Gateway.ProcessorType.Odin) return;\n    const odinElement: HTMLInputElement | null = document.querySelector(`[aria-label=\"odin-${field}\"]`);\n    if (!odinElement) return;\n    odinElement.value = newValue;\n    odinElement.dispatchEvent(new Event(\"keyup\"));\n}\n\nconst vuelidate = useVuelidate(validations, {\n    FirstName,\n    LastName,\n    Email,\n    StreetAddress,\n    City,\n    ProvinceState,\n    PostalCode,\n    Country,\n    BillingStreetAddress,\n    BillingCity,\n    BillingProvinceState,\n    BillingPostalCode,\n    BillingCountry,\n}) as any;\n\nfunction phoneTypeUpdated(newValue: string) {\n    SelectedPhoneNumberType.value = newValue;\n}\n\nfunction phoneExtensionUpdated(newValue: string) {\n    PhoneExtension.value = newValue;\n}\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_cb_input = _resolveComponent(\"cb-input\")!\n  const _component_cb_col = _resolveComponent(\"cb-col\")!\n  const _component_cb_row = _resolveComponent(\"cb-row\")!\n  const _component_cb_email_input = _resolveComponent(\"cb-email-input\")!\n  const _component_cb_phone_input = _resolveComponent(\"cb-phone-input\")!\n  const _component_cb_checkbox_input = _resolveComponent(\"cb-checkbox-input\")!\n  const _component_cb_card = _resolveComponent(\"cb-card\")!\n\n  return (_openBlock(), _createBlock(_component_cb_card, {\n    rounded: true,\n    \"big-rounded\": true,\n    class: _normalizeClass(['contact-container', _unref(UseDifferentAddress) ? 'checked' : ''])\n  }, {\n    default: _withCtx(() => [\n      _cache[31] || (_cache[31] = _createElementVNode(\"div\", { class: \"section-title\" }, \"Donor Information\", -1)),\n      _createElementVNode(\"div\", _hoisted_1, [\n        _createVNode(_component_cb_row, { gutter: \"sm\" }, {\n          default: _withCtx(() => [\n            _createVNode(_component_cb_col, {\n              desktop: \"6\",\n              tablet: \"6\",\n              phone: \"12\"\n            }, {\n              default: _withCtx(() => [\n                _createVNode(_component_cb_input, {\n                  modelValue: _unref(FirstName),\n                  \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (_isRef(FirstName) ? (FirstName).value = $event : null)),\n                  validate: _unref(vuelidate).FirstName,\n                  error: _unref(vuelidate).FirstName.$error,\n                  label: \"First Name\"\n                }, null, 8, [\"modelValue\", \"validate\", \"error\"])\n              ]),\n              _: 1\n            }),\n            _createVNode(_component_cb_col, {\n              desktop: \"6\",\n              tablet: \"6\",\n              phone: \"12\"\n            }, {\n              default: _withCtx(() => [\n                _createVNode(_component_cb_input, {\n                  modelValue: _unref(LastName),\n                  \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (_isRef(LastName) ? (LastName).value = $event : null)),\n                  validate: _unref(vuelidate).LastName,\n                  error: _unref(vuelidate).LastName.$error,\n                  label: \"Last Name\"\n                }, null, 8, [\"modelValue\", \"validate\", \"error\"])\n              ]),\n              _: 1\n            })\n          ]),\n          _: 1\n        }),\n        _createVNode(_component_cb_row, { gutter: \"sm\" }, {\n          default: _withCtx(() => [\n            _createVNode(_component_cb_col, {\n              desktop: \"6\",\n              tablet: \"6\",\n              phone: \"12\"\n            }, {\n              default: _withCtx(() => [\n                _createVNode(_component_cb_email_input, {\n                  modelValue: _unref(Email),\n                  \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (_isRef(Email) ? (Email).value = $event : null)),\n                  class: \"col-3\",\n                  validate: _unref(vuelidate).Email,\n                  error: _unref(vuelidate).Email.$error,\n                  label: \"Email\"\n                }, null, 8, [\"modelValue\", \"validate\", \"error\"])\n              ]),\n              _: 1\n            })\n          ]),\n          _: 1\n        }),\n        _createVNode(_component_cb_row, { gutter: \"sm\" }, {\n          default: _withCtx(() => [\n            _createVNode(_component_cb_col, {\n              desktop: \"12\",\n              tablet: \"12\",\n              phone: \"12\"\n            }, {\n              default: _withCtx(() => [\n                _createVNode(_component_cb_phone_input, {\n                  id: \"donorPhoneNumber\",\n                  modelValue: _unref(PhoneNumber),\n                  \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => (_isRef(PhoneNumber) ? (PhoneNumber).value = $event : null)),\n                  phoneType: _unref(SelectedPhoneNumberType),\n                  \"onUpdate:phoneType\": [\n                    _cache[4] || (_cache[4] = ($event: any) => (_isRef(SelectedPhoneNumberType) ? (SelectedPhoneNumberType).value = $event : null)),\n                    phoneTypeUpdated\n                  ],\n                  extension: _unref(PhoneExtension),\n                  \"onUpdate:extension\": [\n                    _cache[5] || (_cache[5] = ($event: any) => (_isRef(PhoneExtension) ? (PhoneExtension).value = $event : null)),\n                    phoneExtensionUpdated\n                  ],\n                  \"phone-type-options\": _unref(PhoneNumberTypes),\n                  class: \"cb-phone-input\",\n                  \"phone-show-type\": true,\n                  label: \"Phone\",\n                  name: \"phone\",\n                  \"show-extension\": true,\n                  \"default-country-codes\": _unref(CountryCodes),\n                  validate: _unref(vuelidate).PhoneNumber,\n                  \"validate-on-blur\": false\n                }, null, 8, [\"modelValue\", \"phoneType\", \"extension\", \"phone-type-options\", \"default-country-codes\", \"validate\"])\n              ]),\n              _: 1\n            })\n          ]),\n          _: 1\n        })\n      ]),\n      _cache[32] || (_cache[32] = _createElementVNode(\"div\", { class: \"section-subtitle section-padding\" }, \"Mailing Address\", -1)),\n      _createVNode(_component_cb_row, {\n        gutter: \"sm\",\n        style: {\"padding-top\":\"4px\"}\n      }, {\n        default: _withCtx(() => [\n          _createVNode(_component_cb_col, {\n            desktop: \"7\",\n            tablet: \"7\",\n            phone: \"12\"\n          }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_input, {\n                modelValue: _unref(StreetAddress),\n                \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => (_isRef(StreetAddress) ? (StreetAddress).value = $event : null)),\n                error: _unref(vuelidate).StreetAddress.$error,\n                errorMessage: \"Street address is required\",\n                label: \"Street Address or PO Box\",\n                autocomplete: \"shipping street-address\",\n                class: \"street-address\",\n                onKeyup: _cache[7] || (_cache[7] = ($event: any) => (writeOdinField($event.target.value, 'street')))\n              }, null, 8, [\"modelValue\", \"error\"])\n            ]),\n            _: 1\n          }),\n          _createVNode(_component_cb_col, {\n            desktop: \"5\",\n            tablet: \"5\",\n            phone: \"12\"\n          }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_input, {\n                modelValue: _unref(City),\n                \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => (_isRef(City) ? (City).value = $event : null)),\n                error: _unref(vuelidate).City.$error,\n                errorMessage: \"City is required\",\n                label: \"City/Town\",\n                autocomplete: \"shipping address-level2\",\n                class: \"city-town\",\n                onChange: _cache[9] || (_cache[9] = ($event: any) => (City.value = _unref(AutoCap)(_unref(City)))),\n                onKeyup: _cache[10] || (_cache[10] = ($event: any) => (writeOdinField($event.target.value, 'city')))\n              }, null, 8, [\"modelValue\", \"error\"])\n            ]),\n            _: 1\n          })\n        ]),\n        _: 1\n      }),\n      _createVNode(_component_cb_row, { gutter: \"sm\" }, {\n        default: _withCtx(() => [\n          _createVNode(_component_cb_col, {\n            desktop: \"4\",\n            tablet: \"4\",\n            phone: \"12\"\n          }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_input, {\n                modelValue: _unref(ProvinceState),\n                \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => (_isRef(ProvinceState) ? (ProvinceState).value = $event : null)),\n                error: _unref(vuelidate).ProvinceState.$error,\n                errorMessage: \"Field is required\",\n                label: \"State/Province\",\n                autocomplete: \"shipping province state\",\n                class: \"state-province\",\n                onChange: _cache[12] || (_cache[12] = ($event: any) => (ProvinceState.value = _unref(FormatProvince)(_unref(ProvinceState))))\n              }, null, 8, [\"modelValue\", \"error\"])\n            ]),\n            _: 1\n          }),\n          _createVNode(_component_cb_col, {\n            desktop: \"4\",\n            tablet: \"4\",\n            phone: \"12\"\n          }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_input, {\n                modelValue: _unref(PostalCode),\n                \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => (_isRef(PostalCode) ? (PostalCode).value = $event : null)),\n                error: _unref(vuelidate).PostalCode.$error,\n                errorMessage: \"Field is required\",\n                label: \"Zip/Postal Code\",\n                autocomplete: \"shipping postal-code\",\n                class: \"postal-code\",\n                onChange: _cache[14] || (_cache[14] = ($event: any) => (PostalCode.value = _unref(FormatPostalCode)(_unref(PostalCode)))),\n                onKeyup: _cache[15] || (_cache[15] = ($event: any) => (writeOdinField($event.target.value, 'postal')))\n              }, null, 8, [\"modelValue\", \"error\"])\n            ]),\n            _: 1\n          }),\n          _createVNode(_component_cb_col, {\n            desktop: \"4\",\n            tablet: \"4\",\n            phone: \"12\"\n          }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_input, {\n                modelValue: _unref(Country),\n                \"onUpdate:modelValue\": _cache[16] || (_cache[16] = ($event: any) => (_isRef(Country) ? (Country).value = $event : null)),\n                error: _unref(vuelidate).Country.$error,\n                errorMessage: \"Country is required\",\n                label: \"Country\",\n                autocomplete: \"shipping country\",\n                onChange: _cache[17] || (_cache[17] = ($event: any) => (Country.value = _unref(AutoCap)(_unref(Country))))\n              }, null, 8, [\"modelValue\", \"error\"])\n            ]),\n            _: 1\n          })\n        ]),\n        _: 1\n      }),\n      _cache[33] || (_cache[33] = _createElementVNode(\"div\", {\n        class: \"section-subtitle\",\n        style: {\"padding-top\":\"16px\"}\n      }, \"Billing Address\", -1)),\n      _createVNode(_component_cb_row, { class: \"billing-checkbox\" }, {\n        default: _withCtx(() => [\n          _createVNode(_component_cb_col, null, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_checkbox_input, {\n                modelValue: _unref(UseDifferentAddress),\n                \"onUpdate:modelValue\": _cache[18] || (_cache[18] = ($event: any) => (_isRef(UseDifferentAddress) ? (UseDifferentAddress).value = $event : null)),\n                label: \"Use a different address for billing\",\n                name: \"billing\",\n                color: \"accent\",\n                val: false\n              }, null, 8, [\"modelValue\"])\n            ]),\n            _: 1\n          })\n        ]),\n        _: 1\n      }),\n      (_unref(UseDifferentAddress))\n        ? (_openBlock(), _createBlock(_component_cb_row, {\n            key: 0,\n            gutter: \"sm\"\n          }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_col, {\n                desktop: \"6\",\n                tablet: \"6\",\n                phone: \"12\"\n              }, {\n                default: _withCtx(() => [\n                  _createVNode(_component_cb_input, {\n                    modelValue: _unref(BillingStreetAddress),\n                    \"onUpdate:modelValue\": _cache[19] || (_cache[19] = ($event: any) => (_isRef(BillingStreetAddress) ? (BillingStreetAddress).value = $event : null)),\n                    error: _unref(vuelidate).BillingStreetAddress.$error,\n                    errorMessage: \"Street address is required\",\n                    label: \"Street Address or PO Box\",\n                    autocomplete: \"shipping street-address\",\n                    class: \"street-address\",\n                    onKeyup: _cache[20] || (_cache[20] = ($event: any) => (writeOdinField($event.target.value, 'street')))\n                  }, null, 8, [\"modelValue\", \"error\"])\n                ]),\n                _: 1\n              }),\n              _createVNode(_component_cb_col, {\n                desktop: \"6\",\n                tablet: \"6\",\n                phone: \"12\"\n              }, {\n                default: _withCtx(() => [\n                  _createVNode(_component_cb_input, {\n                    modelValue: _unref(BillingCity),\n                    \"onUpdate:modelValue\": _cache[21] || (_cache[21] = ($event: any) => (_isRef(BillingCity) ? (BillingCity).value = $event : null)),\n                    error: _unref(vuelidate).BillingCity.$error,\n                    errorMessage: \"City is required\",\n                    label: \"City/Town\",\n                    autocomplete: \"shipping address-level2\",\n                    class: \"city-town\",\n                    onChange: _cache[22] || (_cache[22] = ($event: any) => (BillingCity.value = _unref(AutoCap)(_unref(BillingCity)))),\n                    onKeyup: _cache[23] || (_cache[23] = ($event: any) => (writeOdinField($event.target.value, 'city')))\n                  }, null, 8, [\"modelValue\", \"error\"])\n                ]),\n                _: 1\n              })\n            ]),\n            _: 1\n          }))\n        : _createCommentVNode(\"\", true),\n      (_unref(UseDifferentAddress))\n        ? (_openBlock(), _createBlock(_component_cb_row, {\n            key: 1,\n            gutter: \"sm\"\n          }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_col, {\n                desktop: \"3\",\n                tablet: \"3\",\n                phone: \"6\"\n              }, {\n                default: _withCtx(() => [\n                  _createVNode(_component_cb_input, {\n                    modelValue: _unref(BillingProvinceState),\n                    \"onUpdate:modelValue\": _cache[24] || (_cache[24] = ($event: any) => (_isRef(BillingProvinceState) ? (BillingProvinceState).value = $event : null)),\n                    error: _unref(vuelidate).BillingProvinceState.$error,\n                    errorMessage: \"Field is required\",\n                    label: \"State/Province\",\n                    autocomplete: \"shipping province state\",\n                    class: \"state-province\",\n                    onChange: _cache[25] || (_cache[25] = ($event: any) => (BillingProvinceState.value = _unref(FormatProvince)(_unref(BillingProvinceState))))\n                  }, null, 8, [\"modelValue\", \"error\"])\n                ]),\n                _: 1\n              }),\n              _createVNode(_component_cb_col, {\n                desktop: \"3\",\n                tablet: \"3\",\n                phone: \"6\"\n              }, {\n                default: _withCtx(() => [\n                  _createVNode(_component_cb_input, {\n                    modelValue: _unref(BillingPostalCode),\n                    \"onUpdate:modelValue\": _cache[26] || (_cache[26] = ($event: any) => (_isRef(BillingPostalCode) ? (BillingPostalCode).value = $event : null)),\n                    error: _unref(vuelidate).BillingPostalCode.$error,\n                    errorMessage: \"Field is required\",\n                    label: \"Zip/Postal Code\",\n                    autocomplete: \"shipping postal-code\",\n                    class: \"postal-code\",\n                    onChange: _cache[27] || (_cache[27] = ($event: any) => (BillingPostalCode.value = _unref(FormatPostalCode)(_unref(BillingPostalCode)))),\n                    onKeyup: _cache[28] || (_cache[28] = ($event: any) => (writeOdinField($event.target.value, 'postal')))\n                  }, null, 8, [\"modelValue\", \"error\"])\n                ]),\n                _: 1\n              }),\n              _createVNode(_component_cb_col, {\n                desktop: \"6\",\n                tablet: \"6\",\n                phone: \"12\"\n              }, {\n                default: _withCtx(() => [\n                  _createVNode(_component_cb_input, {\n                    modelValue: _unref(BillingCountry),\n                    \"onUpdate:modelValue\": _cache[29] || (_cache[29] = ($event: any) => (_isRef(BillingCountry) ? (BillingCountry).value = $event : null)),\n                    name: \"country\",\n                    error: _unref(vuelidate).BillingCountry.$error,\n                    errorMessage: \"Country is required\",\n                    label: \"Country\",\n                    autocomplete: \"shipping country\",\n                    onChange: _cache[30] || (_cache[30] = ($event: any) => (BillingCountry.value = _unref(AutoCap)(_unref(BillingCountry))))\n                  }, null, 8, [\"modelValue\", \"error\"])\n                ]),\n                _: 1\n              })\n            ]),\n            _: 1\n          }))\n        : _createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  }, 8, [\"class\"]))\n}\n}\n\n})","<template>\n    <cb-card :rounded=\"true\" :big-rounded=\"true\" :class=\"['contact-container', UseDifferentAddress ? 'checked' : '']\">\n        <div class=\"section-title\">Donor Information</div>\n        <div class=\"contact-info-container\">\n            <cb-row gutter=\"sm\">\n                <cb-col desktop=\"6\" tablet=\"6\" phone=\"12\">\n                    <cb-input v-model=\"FirstName\" :validate=\"vuelidate.FirstName\" :error=\"vuelidate.FirstName.$error\" label=\"First Name\" />\n                </cb-col>\n                <cb-col desktop=\"6\" tablet=\"6\" phone=\"12\">\n                    <cb-input v-model=\"LastName\" :validate=\"vuelidate.LastName\" :error=\"vuelidate.LastName.$error\" label=\"Last Name\" />\n                </cb-col>\n            </cb-row>\n            <cb-row gutter=\"sm\">\n                <cb-col desktop=\"6\" tablet=\"6\" phone=\"12\">\n                    <cb-email-input\n                        v-model=\"Email\"\n                        class=\"col-3\"\n                        :validate=\"vuelidate.Email\"\n                        :error=\"vuelidate.Email.$error\"\n                        label=\"Email\"\n                    />\n                </cb-col>\n            </cb-row>\n            <cb-row gutter=\"sm\">\n                <cb-col desktop=\"12\" tablet=\"12\" phone=\"12\">\n                    <cb-phone-input\n                        id=\"donorPhoneNumber\"\n                        v-model=\"PhoneNumber\"\n                        v-model:phoneType=\"SelectedPhoneNumberType\"\n                        v-model:extension=\"PhoneExtension\"\n                        :phone-type-options=\"PhoneNumberTypes\"\n                        class=\"cb-phone-input\"\n                        :phone-show-type=\"true\"\n                        label=\"Phone\"\n                        name=\"phone\"\n                        :show-extension=\"true\"\n                        :default-country-codes=\"CountryCodes\"\n                        :validate=\"vuelidate.PhoneNumber\"\n                        :validate-on-blur=\"false\"\n                        @update:phoneType=\"phoneTypeUpdated\"\n                        @update:extension=\"phoneExtensionUpdated\"\n                    />\n                </cb-col>\n            </cb-row>\n        </div>\n\n        <div class=\"section-subtitle section-padding\">Mailing Address</div>\n        <cb-row gutter=\"sm\" style=\"padding-top: 4px\">\n            <cb-col desktop=\"7\" tablet=\"7\" phone=\"12\">\n                <cb-input\n                    v-model=\"StreetAddress\"\n                    :error=\"vuelidate.StreetAddress.$error\"\n                    errorMessage=\"Street address is required\"\n                    label=\"Street Address or PO Box\"\n                    autocomplete=\"shipping street-address\"\n                    class=\"street-address\"\n                    @keyup=\"writeOdinField($event.target.value, 'street')\"\n                />\n            </cb-col>\n\n            <cb-col desktop=\"5\" tablet=\"5\" phone=\"12\">\n                <cb-input\n                    v-model=\"City\"\n                    :error=\"vuelidate.City.$error\"\n                    errorMessage=\"City is required\"\n                    label=\"City/Town\"\n                    autocomplete=\"shipping address-level2\"\n                    class=\"city-town\"\n                    @change=\"City = AutoCap(City)\"\n                    @keyup=\"writeOdinField($event.target.value, 'city')\"\n                />\n            </cb-col>\n        </cb-row>\n        <cb-row gutter=\"sm\">\n            <cb-col desktop=\"4\" tablet=\"4\" phone=\"12\">\n                <cb-input\n                    v-model=\"ProvinceState\"\n                    :error=\"vuelidate.ProvinceState.$error\"\n                    errorMessage=\"Field is required\"\n                    label=\"State/Province\"\n                    autocomplete=\"shipping province state\"\n                    class=\"state-province\"\n                    @change=\"ProvinceState = FormatProvince(ProvinceState)\"\n                />\n            </cb-col>\n            <cb-col desktop=\"4\" tablet=\"4\" phone=\"12\">\n                <cb-input\n                    v-model=\"PostalCode\"\n                    :error=\"vuelidate.PostalCode.$error\"\n                    errorMessage=\"Field is required\"\n                    label=\"Zip/Postal Code\"\n                    autocomplete=\"shipping postal-code\"\n                    class=\"postal-code\"\n                    @change=\"PostalCode = FormatPostalCode(PostalCode)\"\n                    @keyup=\"writeOdinField($event.target.value, 'postal')\"\n                />\n            </cb-col>\n            <cb-col desktop=\"4\" tablet=\"4\" phone=\"12\">\n                <cb-input\n                    v-model=\"Country\"\n                    :error=\"vuelidate.Country.$error\"\n                    errorMessage=\"Country is required\"\n                    label=\"Country\"\n                    autocomplete=\"shipping country\"\n                    @change=\"Country = AutoCap(Country)\"\n                />\n            </cb-col>\n        </cb-row>\n\n        <div class=\"section-subtitle\" style=\"padding-top: 16px\">Billing Address</div>\n        <cb-row class=\"billing-checkbox\">\n            <cb-col>\n                <cb-checkbox-input\n                    v-model=\"UseDifferentAddress\"\n                    label=\"Use a different address for billing\"\n                    name=\"billing\"\n                    color=\"accent\"\n                    :val=\"false\"\n                />\n            </cb-col>\n        </cb-row>\n\n        <cb-row v-if=\"UseDifferentAddress\" gutter=\"sm\">\n            <cb-col desktop=\"6\" tablet=\"6\" phone=\"12\">\n                <cb-input\n                    v-model=\"BillingStreetAddress\"\n                    :error=\"vuelidate.BillingStreetAddress.$error\"\n                    errorMessage=\"Street address is required\"\n                    label=\"Street Address or PO Box\"\n                    autocomplete=\"shipping street-address\"\n                    class=\"street-address\"\n                    @keyup=\"writeOdinField($event.target.value, 'street')\"\n                />\n            </cb-col>\n            <cb-col desktop=\"6\" tablet=\"6\" phone=\"12\">\n                <cb-input\n                    v-model=\"BillingCity\"\n                    :error=\"vuelidate.BillingCity.$error\"\n                    errorMessage=\"City is required\"\n                    label=\"City/Town\"\n                    autocomplete=\"shipping address-level2\"\n                    class=\"city-town\"\n                    @change=\"BillingCity = AutoCap(BillingCity)\"\n                    @keyup=\"writeOdinField($event.target.value, 'city')\"\n                />\n            </cb-col>\n        </cb-row>\n        <cb-row v-if=\"UseDifferentAddress\" gutter=\"sm\">\n            <cb-col desktop=\"3\" tablet=\"3\" phone=\"6\">\n                <cb-input\n                    v-model=\"BillingProvinceState\"\n                    :error=\"vuelidate.BillingProvinceState.$error\"\n                    errorMessage=\"Field is required\"\n                    label=\"State/Province\"\n                    autocomplete=\"shipping province state\"\n                    class=\"state-province\"\n                    @change=\"BillingProvinceState = FormatProvince(BillingProvinceState)\"\n                />\n            </cb-col>\n            <cb-col desktop=\"3\" tablet=\"3\" phone=\"6\">\n                <cb-input\n                    v-model=\"BillingPostalCode\"\n                    :error=\"vuelidate.BillingPostalCode.$error\"\n                    errorMessage=\"Field is required\"\n                    label=\"Zip/Postal Code\"\n                    autocomplete=\"shipping postal-code\"\n                    class=\"postal-code\"\n                    @change=\"BillingPostalCode = FormatPostalCode(BillingPostalCode)\"\n                    @keyup=\"writeOdinField($event.target.value, 'postal')\"\n                />\n            </cb-col>\n            <cb-col desktop=\"6\" tablet=\"6\" phone=\"12\">\n                <cb-input\n                    v-model=\"BillingCountry\"\n                    name=\"country\"\n                    :error=\"vuelidate.BillingCountry.$error\"\n                    errorMessage=\"Country is required\"\n                    label=\"Country\"\n                    autocomplete=\"shipping country\"\n                    @change=\"BillingCountry = AutoCap(BillingCountry)\"\n                />\n            </cb-col>\n        </cb-row>\n    </cb-card>\n</template>\n<script setup lang=\"ts\">\nimport { useDonationStore } from \"@/stores/DonationStore\";\nimport useVuelidate from \"@vuelidate/core\";\nimport { email, required, requiredIf, helpers, maxLength } from \"@vuelidate/validators\";\nimport { storeToRefs } from \"pinia\";\nimport { computed } from \"vue\";\nimport { AutoCap, FormatPostalCode, FormatProvince } from \"../utils/StringFunctions\";\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport { useSiteSettings } from \"@/stores/SiteSettingsStore\";\n\nconst donationStore = useDonationStore();\nconst {\n    FirstName,\n    LastName,\n    Email,\n    PhoneNumber,\n    SelectedPhoneNumberType,\n    PhoneNumberTypes,\n    PhoneExtension,\n    StreetAddress,\n    City,\n    ProvinceState,\n    PostalCode,\n    Country,\n    BillingStreetAddress,\n    BillingCity,\n    BillingProvinceState,\n    BillingCountry,\n    BillingPostalCode,\n    UseDifferentAddress,\n    paymentMethod,\n} = storeToRefs(donationStore);\n\nconst siteSettingsStore = useSiteSettings();\nconst { CountryCodes } = storeToRefs(siteSettingsStore);\n\nSelectedPhoneNumberType.value = \"Cell\";\n\nconst validations = computed(() => ({\n    FirstName: {\n        required: helpers.withMessage(\"First name is required\", required),\n        maxLength: helpers.withMessage(\"This field has a character limit of 100.\", maxLength(100)),\n    },\n    LastName: {\n        required: helpers.withMessage(\"Last name is required\", required),\n        maxLength: helpers.withMessage(\"This field has a character limit of 100.\", maxLength(100)),\n    },\n    Email: {\n        required: helpers.withMessage(\"Email is required\", required),\n        email,\n        maxLength: helpers.withMessage(\"This field has a character limit of 250.\", maxLength(250)),\n    },\n    StreetAddress: { required },\n    City: { required },\n    ProvinceState: { required },\n    PostalCode: { required },\n    Country: { required },\n    BillingStreetAddress: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n    BillingCity: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n    BillingProvinceState: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n    BillingPostalCode: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n    BillingCountry: {\n        required: requiredIf(() => {\n            return UseDifferentAddress.value;\n        }),\n    },\n}));\n\nfunction writeOdinField(newValue: string, field: \"street\" | \"city\" | \"postal\") {\n    if (paymentMethod.value.Processor?.Processor !== Gateway.ProcessorType.Odin) return;\n    const odinElement: HTMLInputElement | null = document.querySelector(`[aria-label=\"odin-${field}\"]`);\n    if (!odinElement) return;\n    odinElement.value = newValue;\n    odinElement.dispatchEvent(new Event(\"keyup\"));\n}\n\nconst vuelidate = useVuelidate(validations, {\n    FirstName,\n    LastName,\n    Email,\n    StreetAddress,\n    City,\n    ProvinceState,\n    PostalCode,\n    Country,\n    BillingStreetAddress,\n    BillingCity,\n    BillingProvinceState,\n    BillingPostalCode,\n    BillingCountry,\n}) as any;\n\nfunction phoneTypeUpdated(newValue: string) {\n    SelectedPhoneNumberType.value = newValue;\n}\n\nfunction phoneExtensionUpdated(newValue: string) {\n    PhoneExtension.value = newValue;\n}\n</script>\n\n<style scoped>\n.contact-container {\n    padding: 24px 24px 18px 24px;\n}\n.contact-container.checked {\n    padding: 24px 24px 4px 24px;\n}\n.contact-info-container {\n    padding: 16px 0px 4px 0px;\n}\n.billing-checkbox {\n    font-size: 15px;\n    margin-left: -10px;\n}\n\n.billing-checkbox :deep(.q-checkbox__inner--falsy .q-checkbox__bg) {\n    border-color: #bdbdbd !important;\n}\n.cb-phone-input :deep(.phone-type .q-field__label) {\n    font-size: 11px;\n}\n/* Mobile */\n@media (max-width: 1024px) {\n    .section-padding {\n        margin-top: 16px;\n    }\n}\n</style>\n","import script from \"./DonorInformation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonorInformation.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./DonorInformation.vue?vue&type=style&index=0&id=c7baea9c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c7baea9c\"]])\n\nexport default __exports__","export default class DayOfTheMonthMenuItem {\n    // eslint-disable-next-line\n    public constructor(public Name: string, public Value: number) {}\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, isRef as _isRef } from \"vue\"\n\nconst _hoisted_1 = { class: \"recurring-text\" }\n\nimport DayOfTheMonthMenuItem from \"@/models/DayOfTheMonthMenuItem\";\nimport { useDonationStore } from \"@/stores/DonationStore\";\nimport { useSiteSettings } from \"@/stores/SiteSettingsStore\";\nimport { GetOrdinalForDayOfTheMonth } from \"@/utils/StringFunctions\";\nimport useVuelidate from \"@vuelidate/core\";\nimport { required, minValue, helpers, maxLength, requiredIf } from \"@vuelidate/validators\";\nimport { storeToRefs } from \"pinia\";\nimport { computed, ref } from \"vue\";\n\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'DonationInformation',\n  setup(__props) {\n\nconst donationStore = useDonationStore();\nconst { DonationAmount, DonationNote, IsRecurringDonation, DayOfRecurrence } = storeToRefs(donationStore);\n\nconst siteSettingsStore = useSiteSettings();\nconst { SiteSettings, IsRecurringDonationsFeatureEnabled } = storeToRefs(siteSettingsStore);\n\nconst validations = computed(() => ({\n    DonationAmount: { required, minValue: minValue(SiteSettings.value.MinimumAmount) },\n    DonationNote: {\n        maxLength: helpers.withMessage(\n            ({ $model }) => `This field has a character limit of 4000. You entered ${$model.length}.`,\n            maxLength(4000),\n        ),\n    },\n    DayOfRecurrence: {\n        required: requiredIf(() => {\n            return IsRecurringDonation.value;\n        }),\n    },\n}));\n\nconst vuelidate = useVuelidate(validations, { DonationAmount, DonationNote, DayOfRecurrence }) as any;\n\nconst currentDate = new Date();\nconst DaysOfTheMonth: number[] = Array.from(\n    { length: new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate() },\n    (_, i) => i + 1,\n);\n\nconst DaysOfTheMonthMenuItems: DayOfTheMonthMenuItem[] = DaysOfTheMonth.map((dayOfTheMonth: number) => {\n    return new DayOfTheMonthMenuItem(`${dayOfTheMonth}${GetOrdinalForDayOfTheMonth(dayOfTheMonth)}`, dayOfTheMonth);\n});\n\nconst dayOfTheMonth: DayOfTheMonthMenuItem = DaysOfTheMonthMenuItems.find((day: DayOfTheMonthMenuItem) => {\n    return day.Value === DayOfRecurrence.value;\n});\n\nconst DayOfRecurrenceValue = ref<DayOfTheMonthMenuItem>(dayOfTheMonth);\n\nfunction dayOfRecurrenceUpdated(newValue: DayOfTheMonthMenuItem): void {\n    if (newValue) {\n        DayOfRecurrence.value = newValue.Value;\n    } else {\n        DayOfRecurrence.value = null;\n    }\n}\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_cb_button = _resolveComponent(\"cb-button\")!\n  const _component_cb_col = _resolveComponent(\"cb-col\")!\n  const _component_cb_row = _resolveComponent(\"cb-row\")!\n  const _component_cb_money_input = _resolveComponent(\"cb-money-input\")!\n  const _component_cb_textarea = _resolveComponent(\"cb-textarea\")!\n  const _component_cb_select = _resolveComponent(\"cb-select\")!\n  const _component_cb_card = _resolveComponent(\"cb-card\")!\n\n  return (_openBlock(), _createBlock(_component_cb_card, {\n    rounded: true,\n    \"big-rounded\": true,\n    class: \"amount-container\"\n  }, {\n    default: _withCtx(() => [\n      _cache[8] || (_cache[8] = _createElementVNode(\"div\", { class: \"section-title padding-bottom-16\" }, \"Enter an Amount\", -1)),\n      (_unref(IsRecurringDonationsFeatureEnabled))\n        ? (_openBlock(), _createBlock(_component_cb_row, { key: 0 }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_col, { class: \"buttons-container\" }, {\n                default: _withCtx(() => [\n                  _createVNode(_component_cb_button, {\n                    label: \"One-Time Donation\",\n                    color: \"accent\",\n                    inverted: _unref(IsRecurringDonation),\n                    onClick: _cache[0] || (_cache[0] = ($event: any) => (IsRecurringDonation.value = false))\n                  }, null, 8, [\"inverted\"]),\n                  _createVNode(_component_cb_button, {\n                    label: \"Monthly Donation\",\n                    color: \"accent\",\n                    inverted: !_unref(IsRecurringDonation),\n                    onClick: _cache[1] || (_cache[1] = ($event: any) => (IsRecurringDonation.value = true))\n                  }, null, 8, [\"inverted\"])\n                ]),\n                _: 1\n              })\n            ]),\n            _: 1\n          }))\n        : _createCommentVNode(\"\", true),\n      _createVNode(_component_cb_row, { class: \"donation-amount-container\" }, {\n        default: _withCtx(() => [\n          _createVNode(_component_cb_col, {\n            desktop: \"4\",\n            tablet: \"4\",\n            phone: \"6\"\n          }, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_money_input, {\n                modelValue: _unref(DonationAmount),\n                \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (_isRef(DonationAmount) ? (DonationAmount).value = $event : null)),\n                label: \"Amount\",\n                name: \"amount\",\n                validate: _unref(vuelidate).DonationAmount,\n                dense: \"\",\n                \"money-whole\": \"\",\n                big: \"\"\n              }, null, 8, [\"modelValue\", \"validate\"])\n            ]),\n            _: 1\n          })\n        ]),\n        _: 1\n      }),\n      _createVNode(_component_cb_row, { class: \"donation-note-container\" }, {\n        default: _withCtx(() => [\n          _createVNode(_component_cb_col, null, {\n            default: _withCtx(() => [\n              _createVNode(_component_cb_textarea, {\n                modelValue: _unref(DonationNote),\n                \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => (_isRef(DonationNote) ? (DonationNote).value = $event : null)),\n                label: \"Donation note (optional)\",\n                name: \"note\",\n                validate: _unref(vuelidate).DonationNote,\n                error: _unref(vuelidate).DonationNote.$error,\n                errorMessage: _unref(vuelidate).DonationNote.$errors[0]?.$message,\n                dense: \"\",\n                textareaAutogrow: \"\"\n              }, null, 8, [\"modelValue\", \"validate\", \"error\", \"errorMessage\"])\n            ]),\n            _: 1\n          })\n        ]),\n        _: 1\n      }),\n      (_unref(IsRecurringDonationsFeatureEnabled) && _unref(IsRecurringDonation))\n        ? (_openBlock(), _createBlock(_component_cb_row, {\n            key: 1,\n            class: \"donation-recurrence-day\"\n          }, {\n            default: _withCtx(() => [\n              _cache[7] || (_cache[7] = _createElementVNode(\"div\", {\n                style: {\"width\":\"100%\"},\n                class: \"separator\"\n              }, null, -1)),\n              _createVNode(_component_cb_col, null, {\n                default: _withCtx(() => [\n                  _createElementVNode(\"span\", _hoisted_1, [\n                    _cache[5] || (_cache[5] = _createElementVNode(\"label\", null, \"This donation will repeat on the  \", -1)),\n                    _createVNode(_component_cb_select, {\n                      modelValue: DayOfRecurrenceValue.value,\n                      \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((DayOfRecurrenceValue).value = $event)),\n                      options: _unref(DaysOfTheMonthMenuItems),\n                      optionLabel: \"Name\",\n                      error: _unref(vuelidate).DayOfRecurrence.$error,\n                      errorMessage: \"Value is required\",\n                      class: \"validation-adjust\",\n                      onChange: dayOfRecurrenceUpdated\n                    }, null, 8, [\"modelValue\", \"options\", \"error\"]),\n                    _cache[6] || (_cache[6] = _createElementVNode(\"label\", null, \"  of the month.\", -1))\n                  ])\n                ]),\n                _: 1\n              })\n            ]),\n            _: 1\n          }))\n        : _createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  }))\n}\n}\n\n})","<template>\n    <cb-card :rounded=\"true\" :big-rounded=\"true\" class=\"amount-container\">\n        <div class=\"section-title padding-bottom-16\">Enter an Amount</div>\n        <cb-row v-if=\"IsRecurringDonationsFeatureEnabled\">\n            <cb-col class=\"buttons-container\">\n                <cb-button\n                    label=\"One-Time Donation\"\n                    color=\"accent\"\n                    :inverted=\"IsRecurringDonation\"\n                    @click=\"IsRecurringDonation = false\"\n                ></cb-button>\n                <cb-button\n                    label=\"Monthly Donation\"\n                    color=\"accent\"\n                    :inverted=\"!IsRecurringDonation\"\n                    @click=\"IsRecurringDonation = true\"\n                ></cb-button>\n            </cb-col>\n        </cb-row>\n        <cb-row class=\"donation-amount-container\">\n            <cb-col desktop=\"4\" tablet=\"4\" phone=\"6\">\n                <cb-money-input\n                    v-model=\"DonationAmount\"\n                    label=\"Amount\"\n                    name=\"amount\"\n                    :validate=\"vuelidate.DonationAmount\"\n                    dense\n                    money-whole\n                    big\n                />\n            </cb-col>\n        </cb-row>\n        <cb-row class=\"donation-note-container\">\n            <cb-col>\n                <cb-textarea\n                    v-model=\"DonationNote\"\n                    label=\"Donation note (optional)\"\n                    name=\"note\"\n                    :validate=\"vuelidate.DonationNote\"\n                    :error=\"vuelidate.DonationNote.$error\"\n                    :errorMessage=\"vuelidate.DonationNote.$errors[0]?.$message\"\n                    dense\n                    textareaAutogrow\n                />\n            </cb-col>\n        </cb-row>\n        <cb-row v-if=\"IsRecurringDonationsFeatureEnabled && IsRecurringDonation\" class=\"donation-recurrence-day\">\n            <div style=\"width: 100%\" class=\"separator\" />\n            <cb-col>\n                <span class=\"recurring-text\">\n                    <label>This donation will repeat on the &nbsp;</label>\n                    <cb-select\n                        v-model=\"DayOfRecurrenceValue\"\n                        :options=\"DaysOfTheMonthMenuItems\"\n                        optionLabel=\"Name\"\n                        :error=\"vuelidate.DayOfRecurrence.$error\"\n                        errorMessage=\"Value is required\"\n                        class=\"validation-adjust\"\n                        @change=\"dayOfRecurrenceUpdated\"\n                    />\n                    <label>&nbsp; of the month.</label>\n                </span>\n            </cb-col>\n        </cb-row>\n    </cb-card>\n</template>\n\n<script setup lang=\"ts\">\nimport DayOfTheMonthMenuItem from \"@/models/DayOfTheMonthMenuItem\";\nimport { useDonationStore } from \"@/stores/DonationStore\";\nimport { useSiteSettings } from \"@/stores/SiteSettingsStore\";\nimport { GetOrdinalForDayOfTheMonth } from \"@/utils/StringFunctions\";\nimport useVuelidate from \"@vuelidate/core\";\nimport { required, minValue, helpers, maxLength, requiredIf } from \"@vuelidate/validators\";\nimport { storeToRefs } from \"pinia\";\nimport { computed, ref } from \"vue\";\n\nconst donationStore = useDonationStore();\nconst { DonationAmount, DonationNote, IsRecurringDonation, DayOfRecurrence } = storeToRefs(donationStore);\n\nconst siteSettingsStore = useSiteSettings();\nconst { SiteSettings, IsRecurringDonationsFeatureEnabled } = storeToRefs(siteSettingsStore);\n\nconst validations = computed(() => ({\n    DonationAmount: { required, minValue: minValue(SiteSettings.value.MinimumAmount) },\n    DonationNote: {\n        maxLength: helpers.withMessage(\n            ({ $model }) => `This field has a character limit of 4000. You entered ${$model.length}.`,\n            maxLength(4000),\n        ),\n    },\n    DayOfRecurrence: {\n        required: requiredIf(() => {\n            return IsRecurringDonation.value;\n        }),\n    },\n}));\n\nconst vuelidate = useVuelidate(validations, { DonationAmount, DonationNote, DayOfRecurrence }) as any;\n\nconst currentDate = new Date();\nconst DaysOfTheMonth: number[] = Array.from(\n    { length: new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate() },\n    (_, i) => i + 1,\n);\n\nconst DaysOfTheMonthMenuItems: DayOfTheMonthMenuItem[] = DaysOfTheMonth.map((dayOfTheMonth: number) => {\n    return new DayOfTheMonthMenuItem(`${dayOfTheMonth}${GetOrdinalForDayOfTheMonth(dayOfTheMonth)}`, dayOfTheMonth);\n});\n\nconst dayOfTheMonth: DayOfTheMonthMenuItem = DaysOfTheMonthMenuItems.find((day: DayOfTheMonthMenuItem) => {\n    return day.Value === DayOfRecurrence.value;\n});\n\nconst DayOfRecurrenceValue = ref<DayOfTheMonthMenuItem>(dayOfTheMonth);\n\nfunction dayOfRecurrenceUpdated(newValue: DayOfTheMonthMenuItem): void {\n    if (newValue) {\n        DayOfRecurrence.value = newValue.Value;\n    } else {\n        DayOfRecurrence.value = null;\n    }\n}\n</script>\n\n<style scoped>\n.amount-container {\n    padding: 24px 80px 4px 80px;\n}\n.donation-amount-container {\n    justify-content: center;\n    margin-bottom: 20px;\n}\n.buttons-container {\n    display: flex;\n    justify-content: center;\n    padding: 0px 0px 24px 0px;\n}\n.buttons-container .cb-wrapper + .cb-wrapper {\n    padding-left: 16px;\n}\n.donation-wording {\n    font-weight: 400;\n    font-size: 16px;\n}\n.recurring-text {\n    display: flex;\n    align-items: center;\n}\n@media (max-width: 515px) {\n    .amount-container {\n        padding: 24px 30px;\n    }\n}\n@media (min-width: 660px) {\n    .validation-adjust :deep(.q-field__bottom) {\n        margin-left: -20px;\n        white-space: nowrap;\n    }\n}\n</style>\n","import script from \"./DonationInformation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonationInformation.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./DonationInformation.vue?vue&type=style&index=0&id=4b463fb6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4b463fb6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, resolveComponent as _resolveComponent, isRef as _isRef, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\nconst _hoisted_2 = {\n  key: 1,\n  label: \"Dedication Information\"\n}\n\nimport { GivingOption } from \"@/models/GivingOption\";\nimport { useDonationStore } from \"@/stores/DonationStore\";\nimport useVuelidate from \"@vuelidate/core\";\nimport { requiredIf } from \"@vuelidate/validators\";\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport { storeToRefs } from \"pinia\";\nimport { computed } from \"vue\";\n\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'DirectYourDonation',\n  setup(__props) {\n\nconst donationsStore = useDonationStore();\nconst { SelectedGivingOptionId, SelectedDonationAttributionOption, DonationAttributionName, GivingOptions, DonationAttributionOptions } =\n    storeToRefs(donationsStore);\n\nSelectedDonationAttributionOption.value = DonationAttributionOptions.value[0].Value;\n\nconst SelectedGivingOption = computed<GivingOption>(() => {\n    if (GivingOptions.value.length > 1) {\n        return GivingOptions.value.filter((opt) => opt.Id === SelectedGivingOptionId.value)[0];\n    } else {\n        return GivingOptions.value[0];\n    }\n});\n\nconst DisplayTributeOptions = computed<boolean>(() => {\n    const result =\n        SelectedGivingOption.value && SelectedGivingOption.value.DonationAttribution == Gateway.DonationDedicationType.NoDedication;\n    return result;\n});\n\nconst DisplayInMemoryOfTribute = computed<boolean>(() => {\n    return SelectedGivingOption.value && SelectedDonationAttributionOption.value == Gateway.DonationDedicationType.InMemoryOf;\n});\n\nconst DisplayInHonorOfTribute = computed<boolean>(() => {\n    return SelectedGivingOption.value && SelectedDonationAttributionOption.value == Gateway.DonationDedicationType.InHonourOf;\n});\n\nconst validations = computed(() => ({\n    SelectedGivingOptionId: {\n        required: requiredIf(() => {\n            return GivingOptions.value.length > 1;\n        }),\n    },\n    DonationAttributionName: {\n        required: requiredIf(() => {\n            return DisplayTributeOptions.value && (DisplayInMemoryOfTribute.value || DisplayInHonorOfTribute.value);\n        }),\n    },\n}));\n\nconst vuelidate = useVuelidate(validations, {\n    DonationAttributionName,\n    SelectedGivingOptionId,\n});\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_cb_select = _resolveComponent(\"cb-select\")!\n  const _component_cb_col = _resolveComponent(\"cb-col\")!\n  const _component_cb_row = _resolveComponent(\"cb-row\")!\n  const _component_cb_input = _resolveComponent(\"cb-input\")!\n  const _component_cb_card = _resolveComponent(\"cb-card\")!\n\n  return (_openBlock(), _createBlock(_component_cb_card, {\n    rounded: true,\n    \"big-rounded\": true,\n    class: \"direct-donation-container\"\n  }, {\n    default: _withCtx(() => [\n      _cache[3] || (_cache[3] = _createElementVNode(\"div\", { class: \"section-title\" }, \"Direct Your Donation\", -1)),\n      _createVNode(_component_cb_row, { class: \"direct-container\" }, {\n        default: _withCtx(() => [\n          _createVNode(_component_cb_col, null, {\n            default: _withCtx(() => [\n              (_unref(GivingOptions).length > 1)\n                ? (_openBlock(), _createBlock(_component_cb_select, {\n                    key: 0,\n                    modelValue: _unref(SelectedGivingOptionId),\n                    \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (_isRef(SelectedGivingOptionId) ? (SelectedGivingOptionId).value = $event : null)),\n                    name: \"\",\n                    label: \"Please select\",\n                    options: _unref(GivingOptions),\n                    optionValue: \"Id\",\n                    optionLabel: \"Name\",\n                    error: _unref(vuelidate).SelectedGivingOptionId.$error,\n                    errorMessage: \"Value is required\",\n                    \"emit-value\": \"\",\n                    \"map-options\": \"\"\n                  }, null, 8, [\"modelValue\", \"options\", \"error\"]))\n                : _createCommentVNode(\"\", true)\n            ]),\n            _: 1\n          })\n        ]),\n        _: 1\n      }),\n      (SelectedGivingOption.value && SelectedGivingOption.value.Description)\n        ? (_openBlock(), _createElementBlock(\"div\", {\n            key: 0,\n            class: \"donation-image-text\",\n            innerHTML: SelectedGivingOption.value.Description\n          }, null, 8, _hoisted_1))\n        : _createCommentVNode(\"\", true),\n      (DisplayTributeOptions.value)\n        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n            _createVNode(_component_cb_row, {\n              class: \"dedication-container\",\n              gutter: \"sm\"\n            }, {\n              default: _withCtx(() => [\n                _createVNode(_component_cb_col, {\n                  desktop: \"4\",\n                  tablet: \"6\"\n                }, {\n                  default: _withCtx(() => [\n                    (DisplayTributeOptions.value)\n                      ? (_openBlock(), _createBlock(_component_cb_select, {\n                          key: 0,\n                          modelValue: _unref(SelectedDonationAttributionOption),\n                          \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (_isRef(SelectedDonationAttributionOption) ? (SelectedDonationAttributionOption).value = $event : null)),\n                          options: _unref(DonationAttributionOptions),\n                          optionLabel: \"Name\",\n                          optionValue: \"Value\",\n                          label: \"Dedication\",\n                          \"emit-value\": \"\",\n                          \"map-options\": \"\"\n                        }, null, 8, [\"modelValue\", \"options\"]))\n                      : _createCommentVNode(\"\", true)\n                  ]),\n                  _: 1\n                }),\n                _createVNode(_component_cb_col, {\n                  desktop: \"6\",\n                  tablet: \"6\",\n                  class: \"mobile-gutter\"\n                }, {\n                  default: _withCtx(() => [\n                    (DisplayTributeOptions.value && (DisplayInMemoryOfTribute.value || DisplayInHonorOfTribute.value))\n                      ? (_openBlock(), _createBlock(_component_cb_input, {\n                          key: 0,\n                          modelValue: _unref(DonationAttributionName),\n                          \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (_isRef(DonationAttributionName) ? (DonationAttributionName).value = $event : null)),\n                          class: \"input-adjustment\",\n                          label: \"Enter Name\",\n                          error: _unref(vuelidate).DonationAttributionName.$error,\n                          errorMessage: _unref(vuelidate).DonationAttributionName.$errors[0]?.$message\n                        }, null, 8, [\"modelValue\", \"error\", \"errorMessage\"]))\n                      : _createCommentVNode(\"\", true)\n                  ]),\n                  _: 1\n                })\n              ]),\n              _: 1\n            })\n          ]))\n        : _createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  }))\n}\n}\n\n})","<template>\n    <cb-card :rounded=\"true\" :big-rounded=\"true\" class=\"direct-donation-container\">\n        <div class=\"section-title\">Direct Your Donation</div>\n        <cb-row class=\"direct-container\">\n            <cb-col>\n                <cb-select\n                    v-if=\"GivingOptions.length > 1\"\n                    v-model=\"SelectedGivingOptionId\"\n                    name=\"\"\n                    label=\"Please select\"\n                    :options=\"GivingOptions\"\n                    optionValue=\"Id\"\n                    optionLabel=\"Name\"\n                    :error=\"vuelidate.SelectedGivingOptionId.$error\"\n                    errorMessage=\"Value is required\"\n                    emit-value\n                    map-options\n                />\n            </cb-col>\n        </cb-row>\n        <div\n            v-if=\"SelectedGivingOption && SelectedGivingOption.Description\"\n            class=\"donation-image-text\"\n            v-html=\"SelectedGivingOption.Description\"\n        />\n        <div v-if=\"DisplayTributeOptions\" label=\"Dedication Information\">\n            <cb-row class=\"dedication-container\" gutter=\"sm\">\n                <cb-col desktop=\"4\" tablet=\"6\">\n                    <cb-select\n                        v-if=\"DisplayTributeOptions\"\n                        v-model=\"SelectedDonationAttributionOption\"\n                        :options=\"DonationAttributionOptions\"\n                        optionLabel=\"Name\"\n                        optionValue=\"Value\"\n                        label=\"Dedication\"\n                        emit-value\n                        map-options\n                    />\n                </cb-col>\n                <cb-col desktop=\"6\" tablet=\"6\" class=\"mobile-gutter\">\n                    <cb-input\n                        v-if=\"DisplayTributeOptions && (DisplayInMemoryOfTribute || DisplayInHonorOfTribute)\"\n                        v-model=\"DonationAttributionName\"\n                        class=\"input-adjustment\"\n                        label=\"Enter Name\"\n                        :error=\"vuelidate.DonationAttributionName.$error\"\n                        :errorMessage=\"vuelidate.DonationAttributionName.$errors[0]?.$message\"\n                    />\n                </cb-col>\n            </cb-row>\n        </div>\n    </cb-card>\n</template>\n\n<script setup lang=\"ts\">\nimport { GivingOption } from \"@/models/GivingOption\";\nimport { useDonationStore } from \"@/stores/DonationStore\";\nimport useVuelidate from \"@vuelidate/core\";\nimport { requiredIf } from \"@vuelidate/validators\";\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport { storeToRefs } from \"pinia\";\nimport { computed } from \"vue\";\n\nconst donationsStore = useDonationStore();\nconst { SelectedGivingOptionId, SelectedDonationAttributionOption, DonationAttributionName, GivingOptions, DonationAttributionOptions } =\n    storeToRefs(donationsStore);\n\nSelectedDonationAttributionOption.value = DonationAttributionOptions.value[0].Value;\n\nconst SelectedGivingOption = computed<GivingOption>(() => {\n    if (GivingOptions.value.length > 1) {\n        return GivingOptions.value.filter((opt) => opt.Id === SelectedGivingOptionId.value)[0];\n    } else {\n        return GivingOptions.value[0];\n    }\n});\n\nconst DisplayTributeOptions = computed<boolean>(() => {\n    const result =\n        SelectedGivingOption.value && SelectedGivingOption.value.DonationAttribution == Gateway.DonationDedicationType.NoDedication;\n    return result;\n});\n\nconst DisplayInMemoryOfTribute = computed<boolean>(() => {\n    return SelectedGivingOption.value && SelectedDonationAttributionOption.value == Gateway.DonationDedicationType.InMemoryOf;\n});\n\nconst DisplayInHonorOfTribute = computed<boolean>(() => {\n    return SelectedGivingOption.value && SelectedDonationAttributionOption.value == Gateway.DonationDedicationType.InHonourOf;\n});\n\nconst validations = computed(() => ({\n    SelectedGivingOptionId: {\n        required: requiredIf(() => {\n            return GivingOptions.value.length > 1;\n        }),\n    },\n    DonationAttributionName: {\n        required: requiredIf(() => {\n            return DisplayTributeOptions.value && (DisplayInMemoryOfTribute.value || DisplayInHonorOfTribute.value);\n        }),\n    },\n}));\n\nconst vuelidate = useVuelidate(validations, {\n    DonationAttributionName,\n    SelectedGivingOptionId,\n});\n</script>\n\n<style scoped>\n.direct-donation-container {\n    padding: 24px 24px 0px 24px;\n}\n.direct-container {\n    padding: 16px 0px 24px 0px;\n}\n.dedication-container {\n    padding-bottom: 18px;\n}\n.dedication-memory {\n    padding-top: 12px;\n}\n.input-adjustment :deep(label) {\n    padding-bottom: 0px;\n}\n.donation-image-text {\n    margin: 0px 24px 16px 24px;\n    text-align: center; /* WYSWYG Editor? */\n}\n@media (max-width: 1024px) {\n    .mobile-gutter {\n        padding: 16px 0px 0px 0px;\n    }\n}\n</style>\n","import script from \"./DirectYourDonation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DirectYourDonation.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./DirectYourDonation.vue?vue&type=style&index=0&id=e6402902&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e6402902\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, isRef as _isRef, normalizeClass as _normalizeClass, withModifiers as _withModifiers, createStaticVNode as _createStaticVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = { class: \"caption\" }\nconst _hoisted_5 = { style: {\"white-space\":\"nowrap\"} }\n\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport ConfirmationDialog from \"../components/ConfirmationDialog.vue\";\nimport useVuelidate from \"@vuelidate/core\";\nimport { required } from \"@vuelidate/validators\";\nimport { ref, computed, onBeforeMount, onMounted } from \"vue\";\nimport router from \"@/router\";\n\nimport { CBPayField, Notify } from \"@campbrain/cortex\";\nimport { useSiteSettings } from \"@/stores/SiteSettingsStore\";\nimport { storeToRefs } from \"pinia\";\nimport { useDonationStore } from \"@/stores/DonationStore\";\n\nimport DonorInformation from \"@/components/DonorInformation.vue\";\nimport DonationInformation from \"@/components/DonationInformation.vue\";\nimport DirectYourDonation from \"@/components/DirectYourDonation.vue\";\n\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'DonationForm',\n  setup(__props) {\n\nconst siteSettingsStore = useSiteSettings();\nconst { Version, Description, ButtonTextColour, IsEnabled } = storeToRefs(siteSettingsStore);\n\nconst donationStore = useDonationStore();\nconst {\n    DonationAttempts,\n    DonationAmount,\n    Email,\n    SubmitPaymentClicked,\n    IsLoading,\n    GivingOptions,\n    CardholderName,\n    Token,\n    SelectedGivingOption,\n    IsSubmittingPayment,\n    ShowBamboraError,\n    ByPassCaptcha,\n    RecaptchaToken,\n    PaymentDeclined,\n    PreviousSubmissionDeclinedDonationId,\n    ShowConfirmation,\n    paymentMethod,\n} = storeToRefs(donationStore);\n\nconst PayField = ref<typeof CBPayField>();\nconst ErrorMessage = ref<string>(\"\");\nconst publicToken = ref(\"\");\nconst odinResults = ref();\nconst waitingOdinResponse = ref(false);\nconst currentRecaptchaKey = ref(\"\");\nconst formDisabled = ref(false);\n\nconst isOdin = computed(() => {\n    return paymentMethod.value.Processor?.Processor === Gateway.ProcessorType.Odin;\n});\n\nlet HasLoadedCaptchaScript = false;\nlet CaptchaWidgetId: string;\n\nconst currentProcessor = computed(() => {\n    if (isOdin.value) getPublicToken();\n    return paymentMethod.value.Processor?.Processor;\n});\nconst creditCardComponentReady = computed(() => {\n    return (\n        currentProcessor.value === Gateway.ProcessorType.Bambora ||\n        (currentProcessor.value === Gateway.ProcessorType.Odin && publicToken.value != \"\")\n    );\n});\n\nfunction DispatchValidation(): void {\n    SubmitPaymentClicked.value = !SubmitPaymentClicked.value;\n}\n\nconst SiteHasPaymentOption = computed<boolean>(() => {\n    return !!siteSettingsStore.SiteSettings && !!siteSettingsStore.SiteSettings.SelectedPaymentOptionId;\n});\n\nfunction OnloadCallback() {\n    CaptchaWidgetId = (<any>window).grecaptcha.render(\"CaptchaSubmit\", {\n        sitekey: siteSettingsStore.CaptchaSiteKey,\n        callback: ValidateOnSubmit,\n    });\n}\n\n(<any>window).OnloadCallback = OnloadCallback;\n\nfunction getCaptchaScript(): void {\n    const recaptchaScript = document.createElement(\"script\");\n    recaptchaScript.setAttribute(\"src\", \"https://www.google.com/recaptcha/api.js?onload=OnloadCallback&render=explicit\");\n    document.head.appendChild(recaptchaScript);\n}\n\nfunction OnCaptchaExpired() {\n    if (!ByPassCaptcha.value) {\n        (<any>window).grecaptcha.reset(CaptchaWidgetId);\n    }\n}\n\nfunction CheckForBypassParam(): boolean {\n    const queryString: string = window.location.search.substring(1);\n\n    const params: { [id: string]: string } = {};\n\n    const queries = queryString.split(\"&\");\n\n    queries.forEach((indexQuery: string) => {\n        const indexPair = indexQuery.split(\"=\");\n\n        const queryKey: string = decodeURIComponent(indexPair[0]);\n        const queryValue: string = decodeURIComponent(indexPair.length > 1 ? indexPair[1] : \"\");\n\n        params[queryKey] = queryValue;\n    });\n\n    return params[\"specflowletsgo\"] === \"true\";\n}\n\nfunction closeDialog(paymentDeclined: boolean): void {\n    ShowConfirmation.value = false;\n    ShowBamboraError.value = paymentDeclined;\n    PayField.value.refreshToken();\n    OnCaptchaExpired();\n}\n\nfunction checkOdinResult(odinResponse) {\n    odinResults.value = odinResponse;\n    waitingOdinResponse.value = false;\n    executeValidation(currentRecaptchaKey.value);\n    if (!odinResponse.success) {\n        document.getElementById(\"parentDivodin-card-info\").style.borderColor = \"red\";\n        document.getElementById(\"parentDivodin-card-info\").style.borderWidth = \"2px\";\n    }\n}\n\nfunction OnSubmitted(): void {\n    if (Token.value == null) {\n        DispatchValidation();\n    } else {\n        DonationAttempts.value = DonationAttempts.value + 1;\n        IsSubmittingPayment.value = true;\n        PaymentDeclined.value = false;\n        ShowBamboraError.value = false;\n        Gateway.ApiGateway.SubmitDonation(donationStore.ToDTO()).then((response) => {\n            if (response.data.Success) {\n                if (siteSettingsStore.SiteSettings.FacebookPixelEnabled) {\n                    (<any>window).fbq(\"track\", \"Donate\", {\n                        value: DonationAmount,\n                        currency: siteSettingsStore.SiteSettings.FacebookPixelCurrency,\n                    });\n                }\n                router.push({\n                    name: \"Confirmation\",\n                });\n            } else {\n                PaymentDeclined.value = true;\n                OnCaptchaExpired();\n                PreviousSubmissionDeclinedDonationId.value = response.data.Id;\n                ErrorMessage.value = \"The transaction could not be completed. Reason: \" + response.data.Exception;\n                PayField.value.refreshToken();\n            }\n            IsSubmittingPayment.value = false;\n        });\n    }\n}\n\nfunction executeValidation(recaptchaToken: string = \"\") {\n    if (validateForm() && ByPassCaptcha.value) {\n        PayField.value.refreshToken();\n        PaymentDeclined.value = false;\n        ShowConfirmation.value = true;\n    } else if (validateForm() && !ByPassCaptcha.value) {\n        PayField.value.refreshToken();\n        PaymentDeclined.value = false;\n        RecaptchaToken.value = recaptchaToken;\n        ShowConfirmation.value = true;\n    } else {\n        if (!ByPassCaptcha.value) {\n            OnCaptchaExpired();\n        }\n        setTimeout(() => {\n            ScrollToError();\n        }, 100);\n    }\n}\n\nfunction ValidateOnSubmit(recaptchaToken: string): void {\n    currentRecaptchaKey.value = recaptchaToken;\n\n    if (DonationAttempts.value >= process.env.VUE_APP_MAX_DONATION_ATTEMPTS) {\n        formDisabled.value = true;\n        Notify.create({\n            //Generic System Error\n            message:\n                \"We were unable to process your donation and you have exceeded the number of retries available. Refresh the page to try again.\",\n            type: \"cb-error\",\n            icon: \"\",\n            group: false,\n            position: \"center\",\n            multiLine: true,\n            timeout: 0,\n            html: true,\n            actions: [\n                {\n                    label: \"Refresh\",\n                    color: \"red-10\",\n                    handler: () => {\n                        window.location.reload();\n                    },\n                },\n            ],\n        });\n\n        return;\n    }\n\n    DispatchValidation();\n    if (currentProcessor.value !== Gateway.ProcessorType.Odin) {\n        executeValidation(recaptchaToken);\n        return;\n    }\n\n    waitingOdinResponse.value = true;\n    odinResults.value = null;\n    document.getElementById(\"odin-submit\")?.click();\n}\n\nconst validations = computed(() => ({\n    CardholderName: { required },\n    Token: { required },\n}));\n\nconst vuelidate = useVuelidate(validations, {\n    CardholderName,\n    Token,\n});\n\nfunction validateForm(): boolean {\n    vuelidate.value.$validate();\n    if (vuelidate.value.$errors.length > 0) {\n        return false;\n    }\n    return true;\n}\n\nfunction ScrollToError() {\n    const el = document.querySelector(\".text-negative:first-of-type\");\n    if (el) el.scrollIntoView();\n}\n\nByPassCaptcha.value = CheckForBypassParam();\n\nasync function getPublicToken() {\n    const result = await Gateway.ApiGateway.PaymentPublicToken(paymentMethod.value.Id);\n    publicToken.value = result.data.Token;\n}\n\nonMounted(() => {\n    setTimeout(() => {\n        if (!HasLoadedCaptchaScript && !ByPassCaptcha.value && IsEnabled.value) {\n            HasLoadedCaptchaScript = true;\n            getCaptchaScript();\n        }\n    }, 1000);\n});\n\nonBeforeMount(async () => {\n    IsLoading.value = true;\n    if (IsEnabled.value) {\n        await donationStore.GetGivingOptions();\n        await donationStore.GetDonationAttributingSpelling();\n        await donationStore.getPaymentMethods();\n    }\n\n    if (GivingOptions.value.length === 0 || !SiteHasPaymentOption.value) {\n        router.push({\n            name: \"SiteNotEnabled\",\n        });\n    }\n\n    IsLoading.value = false;\n});\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_cb_spinner = _resolveComponent(\"cb-spinner\")!\n  const _component_cb_alert = _resolveComponent(\"cb-alert\")!\n  const _component_cb_col = _resolveComponent(\"cb-col\")!\n  const _component_cb_row = _resolveComponent(\"cb-row\")!\n  const _component_cb_pay_field = _resolveComponent(\"cb-pay-field\")!\n  const _component_cb_card = _resolveComponent(\"cb-card\")!\n  const _component_cb_button = _resolveComponent(\"cb-button\")!\n\n  return (_openBlock(), _createElementBlock(_Fragment, null, [\n    (_unref(IsLoading))\n      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n          _createVNode(_component_cb_spinner)\n        ]))\n      : _createCommentVNode(\"\", true),\n    (!_unref(IsLoading) && _unref(GivingOptions) && _unref(GivingOptions).length > 0 && SiteHasPaymentOption.value)\n      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n          _createElementVNode(\"form\", {\n            ref: \"form\",\n            onSubmit: _cache[3] || (_cache[3] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.submitForm && _ctx.submitForm(...args)), [\"prevent\"]))\n          }, [\n            _createElementVNode(\"div\", {\n              class: \"main-description\",\n              innerHTML: _unref(Description)\n            }, null, 8, _hoisted_3),\n            _createVNode(DonationInformation),\n            _cache[8] || (_cache[8] = _createElementVNode(\"br\", null, null, -1)),\n            _createVNode(DirectYourDonation),\n            _cache[9] || (_cache[9] = _createElementVNode(\"br\", null, null, -1)),\n            _createVNode(DonorInformation),\n            _createElementVNode(\"div\", null, [\n              _cache[5] || (_cache[5] = _createElementVNode(\"br\", null, null, -1)),\n              _createVNode(_component_cb_card, {\n                rounded: \"\",\n                \"big-rounded\": \"\",\n                class: \"payment-container\"\n              }, {\n                default: _withCtx(() => [\n                  _cache[4] || (_cache[4] = _createElementVNode(\"div\", { class: \"section-title padding-bottom-16\" }, \"Payment Information\", -1)),\n                  _createVNode(_component_cb_row, null, {\n                    default: _withCtx(() => [\n                      _createVNode(_component_cb_col, null, {\n                        default: _withCtx(() => [\n                          (_unref(ShowBamboraError))\n                            ? (_openBlock(), _createBlock(_component_cb_alert, {\n                                key: 0,\n                                icon: \"fas fa-exclamation-triangle\",\n                                color: \"orange\",\n                                dismissible: \"\",\n                                onDismiss: _cache[0] || (_cache[0] = ($event: any) => (ShowBamboraError.value = false))\n                              }, {\n                                default: _withCtx(() => [\n                                  _createTextVNode(_toDisplayString(ErrorMessage.value), 1)\n                                ]),\n                                _: 1\n                              }))\n                            : _createCommentVNode(\"\", true)\n                        ]),\n                        _: 1\n                      })\n                    ]),\n                    _: 1\n                  }),\n                  (creditCardComponentReady.value)\n                    ? (_openBlock(), _createBlock(_component_cb_row, { key: 0 }, {\n                        default: _withCtx(() => [\n                          _createVNode(_component_cb_col, {\n                            class: _normalizeClass(currentProcessor.value === Gateway.ProcessorType.Odin ? 'odin' : '')\n                          }, {\n                            default: _withCtx(() => [\n                              (!formDisabled.value)\n                                ? (_openBlock(), _createBlock(_component_cb_pay_field, {\n                                    key: 0,\n                                    ref_key: \"PayField\",\n                                    ref: PayField,\n                                    tokenValue: _unref(Token),\n                                    \"onUpdate:tokenValue\": _cache[1] || (_cache[1] = ($event: any) => (_isRef(Token) ? (Token).value = $event : null)),\n                                    cardholderName: _unref(CardholderName),\n                                    \"onUpdate:cardholderName\": _cache[2] || (_cache[2] = ($event: any) => (_isRef(CardholderName) ? (CardholderName).value = $event : null)),\n                                    errorCardholder: _unref(vuelidate).CardholderName.$error,\n                                    errorToken: _unref(vuelidate).Token.$error,\n                                    twoRows: \"\",\n                                    publicToken: publicToken.value,\n                                    processor: currentProcessor.value,\n                                    onOdinResult: checkOdinResult\n                                  }, null, 8, [\"tokenValue\", \"cardholderName\", \"errorCardholder\", \"errorToken\", \"publicToken\", \"processor\"]))\n                                : _createCommentVNode(\"\", true)\n                            ]),\n                            _: 1\n                          }, 8, [\"class\"])\n                        ]),\n                        _: 1\n                      }))\n                    : (_openBlock(), _createBlock(_component_cb_spinner, { key: 1 }))\n                ]),\n                _: 1\n              }),\n              _cache[6] || (_cache[6] = _createElementVNode(\"br\", null, null, -1)),\n              _cache[7] || (_cache[7] = _createElementVNode(\"hr\", null, null, -1)),\n              (_unref(ByPassCaptcha))\n                ? (_openBlock(), _createBlock(_component_cb_button, {\n                    key: 0,\n                    color: \"accent\",\n                    label: \"Review and Submit\",\n                    disabled: formDisabled.value,\n                    loading: isOdin.value && waitingOdinResponse.value,\n                    type: \"submit\",\n                    onClick: ValidateOnSubmit\n                  }, null, 8, [\"disabled\", \"loading\"]))\n                : (_openBlock(), _createBlock(_component_cb_button, {\n                    key: 1,\n                    id: \"CaptchaSubmit\",\n                    loading: isOdin.value && waitingOdinResponse.value,\n                    color: \"accent\",\n                    label: \"Review and Submit\",\n                    disabled: formDisabled.value,\n                    type: \"submit\"\n                  }, null, 8, [\"loading\", \"disabled\"])),\n              _createVNode(ConfirmationDialog, {\n                ButtonTextColour: _unref(ButtonTextColour),\n                DonationAmount: _unref(DonationAmount),\n                Email: _unref(Email),\n                GivingOption: _unref(SelectedGivingOption) && _unref(SelectedGivingOption).Name,\n                IsSubmittingPayment: _unref(IsSubmittingPayment),\n                PaymentDeclined: _unref(PaymentDeclined),\n                onDonationSubmitted: OnSubmitted,\n                onCloseDialog: closeDialog\n              }, null, 8, [\"ButtonTextColour\", \"DonationAmount\", \"Email\", \"GivingOption\", \"IsSubmittingPayment\", \"PaymentDeclined\"])\n            ])\n          ], 544),\n          _cache[10] || (_cache[10] = _createStaticVNode(\"<div class=\\\"caption\\\" data-v-26a497fe><p style=\\\"margin:16px 0px 0px;\\\" data-v-26a497fe> By submitting your donation, you agree to our <span style=\\\"white-space:nowrap;\\\" data-v-26a497fe><a href=\\\"https://www.campbrain.com/olrterms\\\" target=\\\"_blank\\\" class=\\\"text-accent\\\" data-v-26a497fe>Terms</a> and <a href=\\\"https://www.campbrain.com/olrprivacy\\\" target=\\\"_blank\\\" class=\\\"text-accent\\\" style=\\\"white-space:nowrap;\\\" data-v-26a497fe>Privacy Policy</a>. </span></p><p data-v-26a497fe> This site is protected by reCAPTCHA and the Google <a href=\\\"https://policies.google.com/privacy\\\" target=\\\"_blank\\\" class=\\\"text-accent\\\" style=\\\"white-space:nowrap;\\\" data-v-26a497fe>Privacy Policy</a> and <a href=\\\"https://policies.google.com/terms\\\" target=\\\"_blank\\\" class=\\\"text-accent\\\" style=\\\"white-space:nowrap;\\\" data-v-26a497fe>Terms of Service</a> apply. </p></div>\", 1)),\n          _createElementVNode(\"div\", _hoisted_4, [\n            _createElementVNode(\"p\", _hoisted_5, \" © \" + _toDisplayString(new Date().getFullYear()) + \" BrainRunner Inc. | \" + _toDisplayString(_unref(Version)), 1)\n          ])\n        ]))\n      : _createCommentVNode(\"\", true)\n  ], 64))\n}\n}\n\n})","<template>\n    <div v-if=\"IsLoading\">\n        <cb-spinner />\n    </div>\n    <div v-if=\"!IsLoading && GivingOptions && GivingOptions.length > 0 && SiteHasPaymentOption\">\n        <form ref=\"form\" @submit.prevent=\"submitForm\">\n            <div class=\"main-description\" v-html=\"Description\"></div>\n            <DonationInformation />\n            <br />\n            <DirectYourDonation />\n            <br />\n            <DonorInformation />\n            <div>\n                <br />\n                <cb-card rounded big-rounded class=\"payment-container\">\n                    <div class=\"section-title padding-bottom-16\">Payment Information</div>\n                    <cb-row>\n                        <cb-col>\n                            <cb-alert\n                                v-if=\"ShowBamboraError\"\n                                icon=\"fas fa-exclamation-triangle\"\n                                color=\"orange\"\n                                dismissible\n                                @dismiss=\"ShowBamboraError = false\"\n                            >\n                                {{ ErrorMessage }}\n                            </cb-alert>\n                        </cb-col>\n                    </cb-row>\n                    <cb-row v-if=\"creditCardComponentReady\">\n                        <cb-col :class=\"currentProcessor === Gateway.ProcessorType.Odin ? 'odin' : ''\">\n                            <cb-pay-field\n                                v-if=\"!formDisabled\"\n                                ref=\"PayField\"\n                                v-model:tokenValue=\"Token\"\n                                v-model:cardholderName=\"CardholderName\"\n                                :errorCardholder=\"vuelidate.CardholderName.$error\"\n                                :errorToken=\"vuelidate.Token.$error\"\n                                twoRows\n                                :publicToken=\"publicToken\"\n                                :processor=\"currentProcessor\"\n                                @odinResult=\"checkOdinResult\"\n                            />\n                        </cb-col>\n                    </cb-row>\n                    <cb-spinner v-else />\n                </cb-card>\n                <br />\n                <hr />\n                <cb-button\n                    v-if=\"ByPassCaptcha\"\n                    color=\"accent\"\n                    label=\"Review and Submit\"\n                    :disabled=\"formDisabled\"\n                    :loading=\"isOdin && waitingOdinResponse\"\n                    type=\"submit\"\n                    @click=\"ValidateOnSubmit\"\n                />\n                <cb-button\n                    v-else\n                    id=\"CaptchaSubmit\"\n                    :loading=\"isOdin && waitingOdinResponse\"\n                    color=\"accent\"\n                    label=\"Review and Submit\"\n                    :disabled=\"formDisabled\"\n                    type=\"submit\"\n                />\n                <ConfirmationDialog\n                    :ButtonTextColour=\"ButtonTextColour\"\n                    :DonationAmount=\"DonationAmount\"\n                    :Email=\"Email\"\n                    :GivingOption=\"SelectedGivingOption && SelectedGivingOption.Name\"\n                    :IsSubmittingPayment=\"IsSubmittingPayment\"\n                    :PaymentDeclined=\"PaymentDeclined\"\n                    @DonationSubmitted=\"OnSubmitted\"\n                    @closeDialog=\"closeDialog\"\n                />\n            </div>\n        </form>\n        <div class=\"caption\">\n            <p style=\"margin: 16px 0px 0px\">\n                By submitting your donation, you agree to our\n                <span style=\"white-space: nowrap\">\n                    <a href=\"https://www.campbrain.com/olrterms\" target=\"_blank\" class=\"text-accent\">Terms</a> and\n                    <a href=\"https://www.campbrain.com/olrprivacy\" target=\"_blank\" class=\"text-accent\" style=\"white-space: nowrap\"\n                        >Privacy Policy</a\n                    >.\n                </span>\n            </p>\n            <p>\n                This site is protected by reCAPTCHA and the Google\n                <a href=\"https://policies.google.com/privacy\" target=\"_blank\" class=\"text-accent\" style=\"white-space: nowrap\"\n                    >Privacy Policy</a\n                >\n                and\n                <a href=\"https://policies.google.com/terms\" target=\"_blank\" class=\"text-accent\" style=\"white-space: nowrap\"\n                    >Terms of Service</a\n                >\n                apply.\n            </p>\n        </div>\n        <div class=\"caption\">\n            <p style=\"white-space: nowrap\">\n                ©\n                {{ new Date().getFullYear() }} BrainRunner Inc. | {{ Version }}\n            </p>\n        </div>\n    </div>\n</template>\n\n<script setup lang=\"ts\">\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport ConfirmationDialog from \"../components/ConfirmationDialog.vue\";\nimport useVuelidate from \"@vuelidate/core\";\nimport { required } from \"@vuelidate/validators\";\nimport { ref, computed, onBeforeMount, onMounted } from \"vue\";\nimport router from \"@/router\";\n\nimport { CBPayField, Notify } from \"@campbrain/cortex\";\nimport { useSiteSettings } from \"@/stores/SiteSettingsStore\";\nimport { storeToRefs } from \"pinia\";\nimport { useDonationStore } from \"@/stores/DonationStore\";\n\nimport DonorInformation from \"@/components/DonorInformation.vue\";\nimport DonationInformation from \"@/components/DonationInformation.vue\";\nimport DirectYourDonation from \"@/components/DirectYourDonation.vue\";\n\nconst siteSettingsStore = useSiteSettings();\nconst { Version, Description, ButtonTextColour, IsEnabled } = storeToRefs(siteSettingsStore);\n\nconst donationStore = useDonationStore();\nconst {\n    DonationAttempts,\n    DonationAmount,\n    Email,\n    SubmitPaymentClicked,\n    IsLoading,\n    GivingOptions,\n    CardholderName,\n    Token,\n    SelectedGivingOption,\n    IsSubmittingPayment,\n    ShowBamboraError,\n    ByPassCaptcha,\n    RecaptchaToken,\n    PaymentDeclined,\n    PreviousSubmissionDeclinedDonationId,\n    ShowConfirmation,\n    paymentMethod,\n} = storeToRefs(donationStore);\n\nconst PayField = ref<typeof CBPayField>();\nconst ErrorMessage = ref<string>(\"\");\nconst publicToken = ref(\"\");\nconst odinResults = ref();\nconst waitingOdinResponse = ref(false);\nconst currentRecaptchaKey = ref(\"\");\nconst formDisabled = ref(false);\n\nconst isOdin = computed(() => {\n    return paymentMethod.value.Processor?.Processor === Gateway.ProcessorType.Odin;\n});\n\nlet HasLoadedCaptchaScript = false;\nlet CaptchaWidgetId: string;\n\nconst currentProcessor = computed(() => {\n    if (isOdin.value) getPublicToken();\n    return paymentMethod.value.Processor?.Processor;\n});\nconst creditCardComponentReady = computed(() => {\n    return (\n        currentProcessor.value === Gateway.ProcessorType.Bambora ||\n        (currentProcessor.value === Gateway.ProcessorType.Odin && publicToken.value != \"\")\n    );\n});\n\nfunction DispatchValidation(): void {\n    SubmitPaymentClicked.value = !SubmitPaymentClicked.value;\n}\n\nconst SiteHasPaymentOption = computed<boolean>(() => {\n    return !!siteSettingsStore.SiteSettings && !!siteSettingsStore.SiteSettings.SelectedPaymentOptionId;\n});\n\nfunction OnloadCallback() {\n    CaptchaWidgetId = (<any>window).grecaptcha.render(\"CaptchaSubmit\", {\n        sitekey: siteSettingsStore.CaptchaSiteKey,\n        callback: ValidateOnSubmit,\n    });\n}\n\n(<any>window).OnloadCallback = OnloadCallback;\n\nfunction getCaptchaScript(): void {\n    const recaptchaScript = document.createElement(\"script\");\n    recaptchaScript.setAttribute(\"src\", \"https://www.google.com/recaptcha/api.js?onload=OnloadCallback&render=explicit\");\n    document.head.appendChild(recaptchaScript);\n}\n\nfunction OnCaptchaExpired() {\n    if (!ByPassCaptcha.value) {\n        (<any>window).grecaptcha.reset(CaptchaWidgetId);\n    }\n}\n\nfunction CheckForBypassParam(): boolean {\n    const queryString: string = window.location.search.substring(1);\n\n    const params: { [id: string]: string } = {};\n\n    const queries = queryString.split(\"&\");\n\n    queries.forEach((indexQuery: string) => {\n        const indexPair = indexQuery.split(\"=\");\n\n        const queryKey: string = decodeURIComponent(indexPair[0]);\n        const queryValue: string = decodeURIComponent(indexPair.length > 1 ? indexPair[1] : \"\");\n\n        params[queryKey] = queryValue;\n    });\n\n    return params[\"specflowletsgo\"] === \"true\";\n}\n\nfunction closeDialog(paymentDeclined: boolean): void {\n    ShowConfirmation.value = false;\n    ShowBamboraError.value = paymentDeclined;\n    PayField.value.refreshToken();\n    OnCaptchaExpired();\n}\n\nfunction checkOdinResult(odinResponse) {\n    odinResults.value = odinResponse;\n    waitingOdinResponse.value = false;\n    executeValidation(currentRecaptchaKey.value);\n    if (!odinResponse.success) {\n        document.getElementById(\"parentDivodin-card-info\").style.borderColor = \"red\";\n        document.getElementById(\"parentDivodin-card-info\").style.borderWidth = \"2px\";\n    }\n}\n\nfunction OnSubmitted(): void {\n    if (Token.value == null) {\n        DispatchValidation();\n    } else {\n        DonationAttempts.value = DonationAttempts.value + 1;\n        IsSubmittingPayment.value = true;\n        PaymentDeclined.value = false;\n        ShowBamboraError.value = false;\n        Gateway.ApiGateway.SubmitDonation(donationStore.ToDTO()).then((response) => {\n            if (response.data.Success) {\n                if (siteSettingsStore.SiteSettings.FacebookPixelEnabled) {\n                    (<any>window).fbq(\"track\", \"Donate\", {\n                        value: DonationAmount,\n                        currency: siteSettingsStore.SiteSettings.FacebookPixelCurrency,\n                    });\n                }\n                router.push({\n                    name: \"Confirmation\",\n                });\n            } else {\n                PaymentDeclined.value = true;\n                OnCaptchaExpired();\n                PreviousSubmissionDeclinedDonationId.value = response.data.Id;\n                ErrorMessage.value = \"The transaction could not be completed. Reason: \" + response.data.Exception;\n                PayField.value.refreshToken();\n            }\n            IsSubmittingPayment.value = false;\n        });\n    }\n}\n\nfunction executeValidation(recaptchaToken: string = \"\") {\n    if (validateForm() && ByPassCaptcha.value) {\n        PayField.value.refreshToken();\n        PaymentDeclined.value = false;\n        ShowConfirmation.value = true;\n    } else if (validateForm() && !ByPassCaptcha.value) {\n        PayField.value.refreshToken();\n        PaymentDeclined.value = false;\n        RecaptchaToken.value = recaptchaToken;\n        ShowConfirmation.value = true;\n    } else {\n        if (!ByPassCaptcha.value) {\n            OnCaptchaExpired();\n        }\n        setTimeout(() => {\n            ScrollToError();\n        }, 100);\n    }\n}\n\nfunction ValidateOnSubmit(recaptchaToken: string): void {\n    currentRecaptchaKey.value = recaptchaToken;\n\n    if (DonationAttempts.value >= process.env.VUE_APP_MAX_DONATION_ATTEMPTS) {\n        formDisabled.value = true;\n        Notify.create({\n            //Generic System Error\n            message:\n                \"We were unable to process your donation and you have exceeded the number of retries available. Refresh the page to try again.\",\n            type: \"cb-error\",\n            icon: \"\",\n            group: false,\n            position: \"center\",\n            multiLine: true,\n            timeout: 0,\n            html: true,\n            actions: [\n                {\n                    label: \"Refresh\",\n                    color: \"red-10\",\n                    handler: () => {\n                        window.location.reload();\n                    },\n                },\n            ],\n        });\n\n        return;\n    }\n\n    DispatchValidation();\n    if (currentProcessor.value !== Gateway.ProcessorType.Odin) {\n        executeValidation(recaptchaToken);\n        return;\n    }\n\n    waitingOdinResponse.value = true;\n    odinResults.value = null;\n    document.getElementById(\"odin-submit\")?.click();\n}\n\nconst validations = computed(() => ({\n    CardholderName: { required },\n    Token: { required },\n}));\n\nconst vuelidate = useVuelidate(validations, {\n    CardholderName,\n    Token,\n});\n\nfunction validateForm(): boolean {\n    vuelidate.value.$validate();\n    if (vuelidate.value.$errors.length > 0) {\n        return false;\n    }\n    return true;\n}\n\nfunction ScrollToError() {\n    const el = document.querySelector(\".text-negative:first-of-type\");\n    if (el) el.scrollIntoView();\n}\n\nByPassCaptcha.value = CheckForBypassParam();\n\nasync function getPublicToken() {\n    const result = await Gateway.ApiGateway.PaymentPublicToken(paymentMethod.value.Id);\n    publicToken.value = result.data.Token;\n}\n\nonMounted(() => {\n    setTimeout(() => {\n        if (!HasLoadedCaptchaScript && !ByPassCaptcha.value && IsEnabled.value) {\n            HasLoadedCaptchaScript = true;\n            getCaptchaScript();\n        }\n    }, 1000);\n});\n\nonBeforeMount(async () => {\n    IsLoading.value = true;\n    if (IsEnabled.value) {\n        await donationStore.GetGivingOptions();\n        await donationStore.GetDonationAttributingSpelling();\n        await donationStore.getPaymentMethods();\n    }\n\n    if (GivingOptions.value.length === 0 || !SiteHasPaymentOption.value) {\n        router.push({\n            name: \"SiteNotEnabled\",\n        });\n    }\n\n    IsLoading.value = false;\n});\n</script>\n\n<style scoped>\n.suggested-amount {\n    width: 100%;\n    justify-content: center;\n}\n\n.grecaptcha-badge {\n    visibility: hidden;\n}\n\n.caption {\n    font-size: 12px !important;\n    font-weight: 400;\n    margin-bottom: 4px !important;\n    color: #9e9e9e !important;\n    caret-color: #9e9e9e !important;\n}\n.payment-container {\n    padding: 24px 24px 4px 24px;\n}\n.main-description {\n    margin: 16px 0px;\n}\n:deep(.cardhold-name) {\n    padding-left: 0px;\n}\n:deep(.odin .card-number) {\n    padding-left: 0px !important;\n    padding-bottom: 24px;\n}\n</style>\n","import script from \"./DonationForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonationForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./DonationForm.vue?vue&type=style&index=0&id=26a497fe&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-26a497fe\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { key: 1 }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport Axios, { AxiosResponse } from \"axios\";\nimport { ref } from \"vue\";\nimport { useSiteSettings } from \"@/stores/SiteSettingsStore\";\n\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'ConfirmationPage',\n  setup(__props) {\n\nconst ConfirmationWording = ref<string>(\"\");\nconst Loading = ref<boolean>(true);\n\nconst siteSettingsStore = useSiteSettings();\nConfirmationWording.value = siteSettingsStore.Confirmation.ConfirmationWording;\n\nAxios.all([GetSiteInfo()])\n    .then(\n        Axios.spread((siteInfo: AxiosResponse<Gateway.OnlineGivingSiteDTO>) => {\n            ConfirmationWording.value = siteInfo.data.Confirmation.ConfirmationWording;\n            Loading.value = false;\n            window.scrollTo(0, 0);\n        }),\n    )\n    .catch(() => {\n        Loading.value = false;\n    });\n\nfunction GetSiteInfo() {\n    return Gateway.ApiGateway.GetSiteInfo();\n}\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_cb_spinner = _resolveComponent(\"cb-spinner\")!\n\n  return (_openBlock(), _createElementBlock(\"div\", null, [\n    (Loading.value)\n      ? (_openBlock(), _createBlock(_component_cb_spinner, { key: 0 }))\n      : _createCommentVNode(\"\", true),\n    (!Loading.value)\n      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n          _createElementVNode(\"div\", { innerHTML: ConfirmationWording.value }, null, 8, _hoisted_2)\n        ]))\n      : _createCommentVNode(\"\", true)\n  ]))\n}\n}\n\n})","<template>\n    <div>\n        <cb-spinner v-if=\"Loading\"></cb-spinner>\n        <div v-if=\"!Loading\">\n            <div v-html=\"ConfirmationWording\"></div>\n        </div>\n    </div>\n</template>\n\n<script setup lang=\"ts\">\nimport * as Gateway from \"@campbrain/bigbrain.givingportal.gateway\";\nimport Axios, { AxiosResponse } from \"axios\";\nimport { ref } from \"vue\";\nimport { useSiteSettings } from \"@/stores/SiteSettingsStore\";\n\nconst ConfirmationWording = ref<string>(\"\");\nconst Loading = ref<boolean>(true);\n\nconst siteSettingsStore = useSiteSettings();\nConfirmationWording.value = siteSettingsStore.Confirmation.ConfirmationWording;\n\nAxios.all([GetSiteInfo()])\n    .then(\n        Axios.spread((siteInfo: AxiosResponse<Gateway.OnlineGivingSiteDTO>) => {\n            ConfirmationWording.value = siteInfo.data.Confirmation.ConfirmationWording;\n            Loading.value = false;\n            window.scrollTo(0, 0);\n        }),\n    )\n    .catch(() => {\n        Loading.value = false;\n    });\n\nfunction GetSiteInfo() {\n    return Gateway.ApiGateway.GetSiteInfo();\n}\n</script>\n","import script from \"./ConfirmationPage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ConfirmationPage.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return (_openBlock(), _createElementBlock(\"div\", null, _cache[0] || (_cache[0] = [\n    _createElementVNode(\"div\", { class: \"text-h4 text-center\" }, \"Site Unavailable\", -1),\n    _createElementVNode(\"div\", { class: \"text-body1 text-center\" }, \" The site you are trying to access is unavailable at this time. For more information or to make a donation, please call our office. \", -1)\n  ])))\n}","<template>\n    <div>\n        <div class=\"text-h4 text-center\">Site Unavailable</div>\n        <div class=\"text-body1 text-center\">\n            The site you are trying to access is unavailable at this time. For more information or to make a donation, please call our\n            office.\n        </div>\n    </div>\n</template>\n\n<script lang=\"ts\">\nexport default {};\n</script>\n","import { render } from \"./SiteNotEnabled.vue?vue&type=template&id=34e59ff2&ts=true\"\nimport script from \"./SiteNotEnabled.vue?vue&type=script&lang=ts\"\nexport * from \"./SiteNotEnabled.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return (_openBlock(), _createElementBlock(\"div\", null, _cache[0] || (_cache[0] = [\n    _createElementVNode(\"div\", { class: \"text-h4 text-center\" }, \"Site Not Found\", -1),\n    _createElementVNode(\"div\", { class: \"text-body1 text-center\" }, \"The site you are trying to access does not exist.\", -1)\n  ])))\n}","<template>\n    <div>\n        <div class=\"text-h4 text-center\">Site Not Found</div>\n        <div class=\"text-body1 text-center\">The site you are trying to access does not exist.</div>\n    </div>\n</template>\n\n<script lang=\"ts\">\nexport default {};\n</script>\n","import { render } from \"./SiteNotFound.vue?vue&type=template&id=fefe5240&ts=true\"\nimport script from \"./SiteNotFound.vue?vue&type=script&lang=ts\"\nexport * from \"./SiteNotFound.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from \"vue-router\";\nimport DonationForm from \"@/views/DonationForm.vue\";\nimport ConfirmationPage from \"@/views/ConfirmationPage.vue\";\nimport SiteNotEnabled from \"@/views/SiteNotEnabled.vue\";\nimport SiteNotFound from \"@/views/SiteNotFound.vue\";\n\nconst routes: Array<RouteRecordRaw> = [\n    {\n        path: \"/\",\n        name: \"Form\",\n        component: DonationForm,\n    },\n    {\n        path: \"/\",\n        name: \"Confirmation\",\n        component: ConfirmationPage,\n    },\n    {\n        path: \"/SiteNotEnabled/\",\n        name: \"SiteNotEnabled\",\n        component: SiteNotEnabled,\n    },\n    {\n        path: \"/SiteNotFound/\",\n        name: \"SiteNotFound\",\n        component: SiteNotFound,\n    },\n    {\n        path: \"/:pathMatch(.*)*\",\n        redirect: \"/\",\n    },\n];\n\nconst router = createRouter({\n    history: createWebHistory(process.env.BASE_URL),\n    routes,\n});\n\nexport default router;\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { GetTextColourFromBackground } from \"./utils/StringFunctions\";\nimport { onBeforeMount } from \"vue\";\nimport router from \"@/router\";\n\nimport { applyOptions } from \"@campbrain/cortex\";\nimport { useSiteSettings } from \"./stores/SiteSettingsStore\";\nimport { storeToRefs } from \"pinia\";\n\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'App',\n  setup(__props) {\n\nconst siteSettingsStore = useSiteSettings();\nconst { VisualSettings, SiteSettings, ButtonTextColour, IsValidSite, IsEnabled, IsLoading } = storeToRefs(siteSettingsStore);\n\nasync function GetVisualSettings() {\n    IsLoading.value = true;\n    await siteSettingsStore.getSiteInfo();\n\n    if (!IsEnabled.value) {\n        router.push({\n            name: \"SiteNotFound\",\n        });\n        return;\n    }\n\n    if (!IsValidSite.value) {\n        router.push({\n            name: \"SiteNotEnabled\",\n        });\n        return;\n    }\n\n    ButtonTextColour.value = GetTextColourFromBackground(VisualSettings.value.DarkColor);\n\n    document.title = VisualSettings.value.SiteName;\n\n    if (SiteSettings.value.FacebookPixelEnabled) {\n        (<any>window).fbq(\"init\", SiteSettings.value.FacebookPixelId);\n        (<any>window).fbq(\"track\", \"PageView\");\n    }\n\n    applyOptions({\n        colours: {\n            primary: VisualSettings.value.BaseColor,\n            accent: VisualSettings.value.DarkColor,\n        },\n    });\n\n    router.push({\n        name: \"Form\",\n    });\n}\nonBeforeMount(async () => {\n    await GetVisualSettings();\n    IsLoading.value = false;\n});\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_cb_header = _resolveComponent(\"cb-header\")!\n  const _component_router_view = _resolveComponent(\"router-view\")!\n  const _component_cb_page_layout = _resolveComponent(\"cb-page-layout\")!\n\n  return (_openBlock(), _createBlock(_component_cb_page_layout, {\n    footerColor: _unref(VisualSettings)?.FooterColor,\n    backgroundImage: _unref(VisualSettings)?.BackgroundImageURL,\n    backgroundType: _unref(VisualSettings)?.BackgroundType,\n    backgroundColor: _unref(VisualSettings)?.BackgroundColor\n  }, {\n    body: _withCtx(() => [\n      (_unref(VisualSettings)?.HeaderImageUrl)\n        ? (_openBlock(), _createBlock(_component_cb_header, {\n            key: 0,\n            headerImageUrl: _unref(VisualSettings)?.HeaderImageUrl,\n            headerImageAlignment: _unref(VisualSettings)?.HeaderImageAlignment\n          }, null, 8, [\"headerImageUrl\", \"headerImageAlignment\"]))\n        : _createCommentVNode(\"\", true),\n      (!_unref(IsLoading))\n        ? (_openBlock(), _createBlock(_component_router_view, { key: 1 }))\n        : _createCommentVNode(\"\", true)\n    ]),\n    footer: _withCtx(() => [\n      _createElementVNode(\"div\", {\n        innerHTML: _unref(VisualSettings)?.Footer\n      }, null, 8, _hoisted_1)\n    ]),\n    _: 1\n  }, 8, [\"footerColor\", \"backgroundImage\", \"backgroundType\", \"backgroundColor\"]))\n}\n}\n\n})","<template>\n    <cb-page-layout\n        :footerColor=\"VisualSettings?.FooterColor\"\n        :backgroundImage=\"VisualSettings?.BackgroundImageURL\"\n        :backgroundType=\"VisualSettings?.BackgroundType\"\n        :backgroundColor=\"VisualSettings?.BackgroundColor\"\n    >\n        <template #body>\n            <cb-header\n                v-if=\"VisualSettings?.HeaderImageUrl\"\n                :headerImageUrl=\"VisualSettings?.HeaderImageUrl\"\n                :headerImageAlignment=\"VisualSettings?.HeaderImageAlignment\"\n            />\n            <router-view v-if=\"!IsLoading\" />\n        </template>\n        <template #footer>\n            <div v-html=\"VisualSettings?.Footer\"></div>\n        </template>\n    </cb-page-layout>\n</template>\n\n<script setup lang=\"ts\">\nimport { GetTextColourFromBackground } from \"./utils/StringFunctions\";\nimport { onBeforeMount } from \"vue\";\nimport router from \"@/router\";\n\nimport { applyOptions } from \"@campbrain/cortex\";\nimport { useSiteSettings } from \"./stores/SiteSettingsStore\";\nimport { storeToRefs } from \"pinia\";\n\nconst siteSettingsStore = useSiteSettings();\nconst { VisualSettings, SiteSettings, ButtonTextColour, IsValidSite, IsEnabled, IsLoading } = storeToRefs(siteSettingsStore);\n\nasync function GetVisualSettings() {\n    IsLoading.value = true;\n    await siteSettingsStore.getSiteInfo();\n\n    if (!IsEnabled.value) {\n        router.push({\n            name: \"SiteNotFound\",\n        });\n        return;\n    }\n\n    if (!IsValidSite.value) {\n        router.push({\n            name: \"SiteNotEnabled\",\n        });\n        return;\n    }\n\n    ButtonTextColour.value = GetTextColourFromBackground(VisualSettings.value.DarkColor);\n\n    document.title = VisualSettings.value.SiteName;\n\n    if (SiteSettings.value.FacebookPixelEnabled) {\n        (<any>window).fbq(\"init\", SiteSettings.value.FacebookPixelId);\n        (<any>window).fbq(\"track\", \"PageView\");\n    }\n\n    applyOptions({\n        colours: {\n            primary: VisualSettings.value.BaseColor,\n            accent: VisualSettings.value.DarkColor,\n        },\n    });\n\n    router.push({\n        name: \"Form\",\n    });\n}\nonBeforeMount(async () => {\n    await GetVisualSettings();\n    IsLoading.value = false;\n});\n</script>\n<style>\n#app {\n    font-family: Roboto, Helvetica, Arial, sans-serif;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    color: #2c3e50;\n}\n\n#nav {\n    padding: 30px;\n}\n\n#nav a {\n    font-weight: bold;\n    color: #2c3e50;\n}\n\nimg {\n    max-width: 100%;\n    height: auto !important;\n    /* override froala's inline height */\n}\n\n#nav a.router-link-exact-active {\n    color: #42b983;\n}\n</style>\n\n<style>\nhr {\n    border-color: rgba(0, 0, 0, 0.12);\n    margin-bottom: 24px;\n}\n\nlabel.text-h6 {\n    font-weight: 600;\n}\n\nfooter p {\n    margin-bottom: 0px;\n}\n\nbody {\n    font-size: 16px;\n}\n.separator {\n    border: 1px solid #f2f2f2;\n    margin: 16px 0px;\n}\n.section-title {\n    font-weight: 600;\n    font-size: 18px;\n    text-align: center;\n}\n.padding-bottom-16 {\n    padding-bottom: 16px;\n}\n\n.section-subtitle {\n    font-weight: 600;\n    font-size: 15px;\n    color: #4f4f4f;\n}\n\nmain {\n    max-width: 640px;\n}\n\n.q-btn {\n    text-transform: none !important;\n}\n\n/* Overrule Quasar's border on hover */\n.q-field__control:hover:before {\n    border-color: rgba(0, 0, 0, 0.24) !important;\n}\n/* Overrule Quasar's dropdown animation */\n.rotate-180 {\n    transform: unset !important;\n}\n/* Overrule Quasar's dropdown size */\n.q-select__dropdown-icon {\n    font-size: 12px;\n}\n/* Overrule Quasar's checkbox size */\n.q-checkbox__inner {\n    font-size: 36px;\n}\n/* Overrule Quasar's checkbox animation on hover */\n.q-checkbox__inner:before {\n    background: transparent !important;\n}\n/* Overrule Quasar's padding for validation */\n.q-field__bottom {\n    padding: 4px 12px 0;\n}\n/* Overrule Quasar's error icon in dropdowns */\n.fa-exclamation-circle:before {\n    content: unset;\n}\n</style>\n","import script from \"./App.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=fa867578&lang=css\"\nimport \"./App.vue?vue&type=style&index=1&id=fa867578&lang=css\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createApp } from \"vue\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport axios from \"axios\";\nimport { ApplicationInsights } from \"@microsoft/applicationinsights-web\";\nimport { default as CbComponents } from \"@campbrain/cortex\";\nimport { createPinia } from \"pinia\";\n\naxios.interceptors.request.use((config) => {\n    const subdomain: string = window.location.host.split(\".\")[0];\n    if (process.env.NODE_ENV === \"development\") {\n        // config.baseURL = \"https://devdemo.bigbrainqa.com\";\n        config.baseURL = \"https://\" + subdomain + \".lacolhost.com:44368\";\n    } else {\n        config.baseURL = \"https://\" + subdomain + \".\" + process.env.VUE_APP_API_ENDPOINT_URL;\n    }\n    return config;\n});\n\nconst app = createApp(App);\n\nconst pinia = createPinia();\n\napp.use(pinia);\napp.use(router);\napp.use(CbComponents as any);\napp.mount(\"#app\");\n\nconst appInsights = new ApplicationInsights({\n    config: {\n        instrumentationKey: process.env.VUE_APP_INSIGHTS,\n        /* ...Other Configuration Options... */\n    },\n});\nappInsights.loadAppInsights();\nappInsights.trackPageView();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkgivingportal\"] = self[\"webpackChunkgivingportal\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], () => (__webpack_require__(313)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["regexPostalCodeCanadian1","RegExp","regexPostalCodeCanadian2","regexPostalCodeAmerican1","regexPostalCodeAmerican2","regexProvinceWith2Letters","AutoCap","input","toLowerCase","formattedStr","newWord","x","length","c","charAt","toUpperCase","FormatPostalCode","postalCode","trim","test","substring","substr","FormatProvince","trimmedInput","GetTextColourFromBackground","backgroundColour","white","black","hex","replace","r","parseInt","g","b","lumina","reduce","y","GetOrdinalForDayOfTheMonth","day","Events","static","DonationAttributionType","Name","Value","name","value","this","GivingOption","Id","Description","Order","DonationAttribution","DonationAttributionName","option","useDonationStore","state","DonationAttempts","DonationAmount","DonationNote","GivingOptions","SelectedGivingOptionId","SelectedDonationAttributionOption","DonationAttributionOptions","NoDedication","InMemoryOf","InHonourOf","FirstName","LastName","Email","PhoneNumber","PhoneNumberTypes","SelectedPhoneNumberType","PhoneExtension","StreetAddress","City","ProvinceState","Country","PostalCode","BillingStreetAddress","BillingCity","BillingProvinceState","BillingCountry","BillingPostalCode","UseDifferentAddress","CardholderName","IsSubmittingPayment","PaymentDeclined","Token","SubmitPaymentClicked","UseCanadianSpelling","ByPassCaptcha","RecaptchaToken","ShowBamboraError","PreviousSubmissionDeclinedDonationId","ShowConfirmation","IsLoading","IsRecurringDonation","DayOfRecurrence","Date","getDate","paymentMethod","getters","SelectedGivingOption","filter","opt","DedicationString","type","find","attributionOption","CalculatedRecurrenceDate","currentDate","scheduledDate","getFullYear","getMonth","daysNextMonth","IsDayOfRecurrenceToday","DayOfRecurrenceOrdinal","actions","GetGivingOptions","response","data","map","GetDonationAttributingSpelling","GetDisplayCanadianSpelling","ToDTO","dto","Amount","Attribution","AttributedTo","PhoneNumberType","State","BillingAddress","BillingState","UseBillingAddress","CardHolderName","IsRecurring","getPaymentMethods","PaymentMethod","error","console","_hoisted_1","class","_hoisted_2","key","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","__name","emits","DonationSubmitted","setup","__props","emit","__emit","donationStore","RecurringDonationAmount","DonationAmountText","submit","_ctx","_cache","_component_cb_col","_component_cb_row","_component_cb_alert","_component_cb_button","_component_cb_modal_page","_component_cb_spinner","_component_cb_icon","_component_cb_app","_component_cb_modal","modelValue","$event","persistent","customWidth","default","header","body","desktop","tablet","phone","_","textContent","style","color","toLocaleDateString","month","footer","label","onClick","$emit","__exports__","useSiteSettings","VisualSettings","SiteSettings","Confirmation","GoogleTagSettings","ButtonTextColour","CaptchaSiteKey","IsValidSite","FooterHeight","Version","IsEnabled","IsRecurringDonationsFeatureEnabled","CountryCodes","getSiteInfo","givingSite","GetSiteInfo","LookAndFeel","RecurringDonationsEnabled","siteSettingsStore","validations","required","withMessage","maxLength","email","writeOdinField","newValue","field","Processor","Odin","odinElement","document","querySelector","dispatchEvent","Event","vuelidate","phoneTypeUpdated","phoneExtensionUpdated","_component_cb_input","_component_cb_email_input","_component_cb_phone_input","_component_cb_checkbox_input","_component_cb_card","rounded","gutter","validate","$error","id","phoneType","extension","errorMessage","autocomplete","onKeyup","target","onChange","val","DayOfTheMonthMenuItem","minValue","MinimumAmount","$model","DaysOfTheMonth","Array","from","i","DaysOfTheMonthMenuItems","dayOfTheMonth","DayOfRecurrenceValue","dayOfRecurrenceUpdated","_component_cb_money_input","_component_cb_textarea","_component_cb_select","inverted","dense","big","$errors","$message","textareaAutogrow","options","optionLabel","donationsStore","DisplayTributeOptions","result","DisplayInMemoryOfTribute","DisplayInHonorOfTribute","optionValue","innerHTML","PayField","ErrorMessage","publicToken","odinResults","waitingOdinResponse","currentRecaptchaKey","formDisabled","isOdin","CaptchaWidgetId","HasLoadedCaptchaScript","currentProcessor","getPublicToken","creditCardComponentReady","Bambora","DispatchValidation","SiteHasPaymentOption","SelectedPaymentOptionId","OnloadCallback","window","grecaptcha","render","sitekey","callback","ValidateOnSubmit","getCaptchaScript","recaptchaScript","createElement","setAttribute","head","appendChild","OnCaptchaExpired","reset","CheckForBypassParam","queryString","location","search","params","queries","split","forEach","indexQuery","indexPair","queryKey","decodeURIComponent","queryValue","closeDialog","paymentDeclined","refreshToken","checkOdinResult","odinResponse","executeValidation","success","getElementById","borderColor","borderWidth","OnSubmitted","SubmitDonation","then","Success","FacebookPixelEnabled","fbq","currency","FacebookPixelCurrency","push","Exception","recaptchaToken","validateForm","setTimeout","ScrollToError","create","message","icon","group","position","multiLine","timeout","html","handler","reload","click","$validate","el","scrollIntoView","async","PaymentPublicToken","_component_cb_pay_field","ref","onSubmit","args","submitForm","DonationInformation","DirectYourDonation","DonorInformation","dismissible","onDismiss","ref_key","tokenValue","cardholderName","errorCardholder","errorToken","twoRows","processor","onOdinResult","disabled","loading","ConfirmationDialog","onDonationSubmitted","onCloseDialog","ConfirmationWording","Loading","siteInfo","scrollTo","catch","$props","$setup","$data","$options","routes","path","component","DonationForm","ConfirmationPage","SiteNotEnabled","SiteNotFound","redirect","router","history","GetVisualSettings","DarkColor","title","SiteName","FacebookPixelId","colours","primary","BaseColor","accent","_component_cb_header","_component_router_view","_component_cb_page_layout","footerColor","FooterColor","backgroundImage","BackgroundImageURL","backgroundType","BackgroundType","backgroundColor","BackgroundColor","HeaderImageUrl","headerImageUrl","headerImageAlignment","HeaderImageAlignment","Footer","request","use","config","subdomain","host","baseURL","app","App","mount","appInsights","instrumentationKey","loadAppInsights","trackPageView","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","splice","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","call","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}