@firebase-oss/ui-core 0.0.1 โ†’ 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/register-framework.ts","../package.json","../src/translations.ts","../src/errors.ts","../src/behaviors/anonymous-upgrade.ts","../src/behaviors/auto-anonymous-login.ts","../src/behaviors/recaptcha.ts","../src/behaviors/provider-strategy.ts","../src/behaviors/one-tap.ts","../src/behaviors/require-display-name.ts","../src/country-data.ts","../src/behaviors/country-codes.ts","../src/behaviors/utils.ts","../src/behaviors/index.ts","../src/auth.ts","../src/config.ts","../src/schemas.ts","../src/index.ts"],"names":["registerFramework","framework","version","registerVersion","package_default","getTranslation","ui","category","key","_getTranslation","FirebaseUIError","_FirebaseUIError","FirebaseError","error","message","ERROR_CODE_MAP","handleFirebaseError","isFirebaseError","errorContainsCredential","resolver","getMultiFactorResolver","autoUpgradeAnonymousCredentialHandler","credential","onUpgrade","currentUser","oldUserId","result","linkWithCredential","autoUpgradeAnonymousProviderHandler","provider","getBehavior","autoUpgradeAnonymousUserRedirectHandler","autoAnonymousLoginHandler","auth","signInAnonymously","recaptchaVerificationHandler","element","options","RecaptchaVerifier","signInWithRediectHandler","signInWithRedirect","signInWithPopupHandler","signInWithPopup","linkWithRedirectHandler","_ui","user","linkWithRedirect","linkWithPopupHandler","linkWithPopup","oneTapSignInHandler","script","response","GoogleAuthProvider","signInWithCredential","requireDisplayNameHandler","_","displayName","updateProfile","countryData","formatPhoneNumber","phoneNumber","parsedNumber","parsePhoneNumberWithError","formatIncompletePhoneNumber","cleaned","countryCodesHandler","allowedCountries","country","defaultCountry","callableBehavior","handler","redirectBehavior","initBehavior","autoAnonymousLogin","autoUpgradeAnonymousUsers","recaptchaVerification","providerRedirectStrategy","providerPopupStrategy","oneTapSignIn","requireDisplayName","countryCodes","hasBehavior","defaultBehaviors","handlePendingCredential","pendingCredString","pendingCred","setPendingState","signInWithEmailAndPassword","email","password","EmailAuthProvider","_signInWithCredential","createUserWithEmailAndPassword","_createUserWithEmailAndPassword","verifyPhoneNumber","appVerifier","mfaUser","mfaHint","PhoneAuthProvider","session","confirmPhoneNumber","verificationId","verificationCode","sendPasswordResetEmail","_sendPasswordResetEmail","sendSignInLinkToEmail","actionCodeSettings","_sendSignInLinkToEmail","signInWithEmailLink","link","userCredential","signInWithCustomToken","customToken","_signInWithCustomToken","_signInAnonymously","signInWithProvider","completeEmailLinkSignIn","currentUrl","_isSignInWithEmailLink","generateTotpQrCode","secret","accountName","issuer","uri","qr","QRCode","signInWithMultiFactorAssertion","assertion","enrollWithMultiFactorAssertion","multiFactor","generateTotpSecret","TotpMultiFactorGenerator","$config","map","initializeUI","config","name","behaviors","acc","behavior","deepMap","getAuth","enUs","locale","state","store","initBehaviors","redirectBehaviors","getRedirectResult","LoginTypes","createSignInAuthFormSchema","n","createSignUpAuthFormSchema","displayNameRequiredMessage","createForgotPasswordAuthFormSchema","createEmailLinkAuthFormSchema","createPhoneAuthNumberFormSchema","createPhoneAuthVerifyFormSchema","val","createMultiFactorPhoneAuthNumberFormSchema","createMultiFactorPhoneAuthVerifyFormSchema","createMultiFactorTotpAuthNumberFormSchema","createMultiFactorTotpAuthVerifyFormSchema"],"mappings":"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","file":"index.cjs","sourcesContent":["import { registerVersion } from \"firebase/app\";\n\n/**\n * Register a framework with the FirebaseUI configuration.\n * @internal\n * @param framework The type of framework being registered.\n * @param version The version of the framework being registered.\n */\nexport function registerFramework(framework: string, version: string) {\n registerVersion(\"firebase-ui-web\", version, framework);\n}\n","{\n \"name\": \"@firebase-oss/ui-core\",\n \"version\": \"0.0.1\",\n \"description\": \"Core authentication service for Firebase UI\",\n \"type\": \"module\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./brands/*\": \"./brands/*\"\n },\n \"files\": [\n \"dist\",\n \"brands\"\n ],\n \"scripts\": {\n \"prepare\": \"pnpm run build\",\n \"emulators:start\": \"firebase emulators:start -P demo-firebaseui\",\n \"build\": \"tsup\",\n \"build:local\": \"pnpm run build && pnpm pack\",\n \"dev\": \"tsup --watch\",\n \"lint\": \"eslint . --ext .ts\",\n \"lint:fix\": \"eslint . --ext .ts --fix\",\n \"format\": \"prettier --write \\\"src/**/*.ts\\\" \\\"tests/**/*.ts\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.ts\\\" \\\"tests/**/*.ts\\\"\",\n \"clean\": \"rimraf dist\",\n \"test:unit\": \"vitest run src\",\n \"test:unit:watch\": \"vitest tests\",\n \"test:integration\": \"vitest run tests\",\n \"test:integration:watch\": \"vitest integration\",\n \"test\": \"vitest run\",\n \"publish:tags\": \"sh -c 'TAG=\\\"${npm_package_name}@${npm_package_version}\\\"; git tag --list \\\"$TAG\\\" | grep . || git tag \\\"$TAG\\\"; git push origin \\\"$TAG\\\"'\",\n \"release\": \"pnpm run build && pnpm pack --pack-destination --pack-destination ../../releases/\"\n },\n \"keywords\": [\n \"firebase\",\n \"auth\",\n \"authentication\",\n \"firebaseui\"\n ],\n \"author\": \"TODO\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"firebase\": \"catalog:peerDependencies\"\n },\n \"dependencies\": {\n \"@firebase-oss/ui-translations\": \"workspace:*\",\n \"libphonenumber-js\": \"^1.12.23\",\n \"nanostores\": \"catalog:\",\n \"qrcode-generator\": \"^2.0.4\",\n \"zod\": \"catalog:\"\n },\n \"devDependencies\": {\n \"@types/google-one-tap\": \"^1.2.6\",\n \"@types/jsdom\": \"catalog:\",\n \"firebase\": \"catalog:\",\n \"jsdom\": \"catalog:\",\n \"rimraf\": \"catalog:\",\n \"tsup\": \"catalog:\",\n \"typescript\": \"catalog:\",\n \"vite\": \"catalog:\",\n \"vitest\": \"catalog:\"\n }\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n getTranslation as _getTranslation,\n type TranslationCategory,\n type TranslationKey,\n} from \"@firebase-oss/ui-translations\";\nimport { type FirebaseUI } from \"./config\";\n\nexport function getTranslation<T extends TranslationCategory>(ui: FirebaseUI, category: T, key: TranslationKey<T>) {\n return _getTranslation(ui.locale, category, key);\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ERROR_CODE_MAP, type ErrorCode } from \"@firebase-oss/ui-translations\";\nimport { FirebaseError } from \"firebase/app\";\nimport { type AuthCredential, getMultiFactorResolver, type MultiFactorError } from \"firebase/auth\";\nimport { type FirebaseUI } from \"./config\";\nimport { getTranslation } from \"./translations\";\nexport class FirebaseUIError extends FirebaseError {\n constructor(ui: FirebaseUI, error: FirebaseError) {\n const message = getTranslation(ui, \"errors\", ERROR_CODE_MAP[error.code as ErrorCode]);\n super(error.code, message || error.message);\n\n // Ensures that `instanceof FirebaseUIError` works, alongside `instanceof FirebaseError`\n Object.setPrototypeOf(this, FirebaseUIError.prototype);\n }\n}\n\nexport function handleFirebaseError(ui: FirebaseUI, error: unknown): never {\n // If it's not a Firebase error, then we just throw it and preserve the original error.\n if (!isFirebaseError(error)) {\n throw error;\n }\n\n // TODO(ehesp): Type error as unknown, check instance of FirebaseError\n // TODO(ehesp): Support via behavior\n if (error.code === \"auth/account-exists-with-different-credential\" && errorContainsCredential(error)) {\n window.sessionStorage.setItem(\"pendingCred\", JSON.stringify(error.credential.toJSON()));\n }\n\n // Update the UI with the multi-factor resolver if the error is thrown.\n if (error.code === \"auth/multi-factor-auth-required\") {\n const resolver = getMultiFactorResolver(ui.auth, error as MultiFactorError);\n ui.setMultiFactorResolver(resolver);\n }\n\n throw new FirebaseUIError(ui, error);\n}\n\n// Utility to obtain whether something is a FirebaseError\nfunction isFirebaseError(error: unknown): error is FirebaseError {\n // Calling instanceof FirebaseError is not working - not sure why yet.\n return !!error && typeof error === \"object\" && \"code\" in error && \"message\" in error;\n}\n\n// Utility to obtain whether something is a FirebaseError that contains a credential - doesn't seemed to be typed?\nfunction errorContainsCredential(error: FirebaseError): error is FirebaseError & { credential: AuthCredential } {\n return \"credential\" in error;\n}\n","import { type AuthCredential, type AuthProvider, linkWithCredential, type UserCredential } from \"firebase/auth\";\nimport { type FirebaseUI } from \"~/config\";\nimport { getBehavior } from \"~/behaviors\";\n\nexport type OnUpgradeCallback = (ui: FirebaseUI, oldUserId: string, credential: UserCredential) => Promise<void> | void;\n\nexport const autoUpgradeAnonymousCredentialHandler = async (\n ui: FirebaseUI,\n credential: AuthCredential,\n onUpgrade?: OnUpgradeCallback\n) => {\n const currentUser = ui.auth.currentUser;\n\n if (!currentUser?.isAnonymous) {\n return;\n }\n\n const oldUserId = currentUser.uid;\n\n const result = await linkWithCredential(currentUser, credential);\n\n if (onUpgrade) {\n await onUpgrade(ui, oldUserId, result);\n }\n\n return result;\n};\n\nexport const autoUpgradeAnonymousProviderHandler = async (\n ui: FirebaseUI,\n provider: AuthProvider,\n onUpgrade?: OnUpgradeCallback\n) => {\n const currentUser = ui.auth.currentUser;\n\n if (!currentUser?.isAnonymous) {\n return;\n }\n\n const oldUserId = currentUser.uid;\n\n window.localStorage.setItem(\"fbui:upgrade:oldUserId\", oldUserId);\n\n const result = await getBehavior(ui, \"providerLinkStrategy\")(ui, currentUser, provider);\n\n // If we got here, the user has been linked via a popup, so we need to call the onUpgrade callback\n // and delete the oldUserId from localStorage.\n // If we didn't get here, they'll be redirected and we'll handle the result inside of the autoUpgradeAnonymousUserRedirectHandler.\n\n window.localStorage.removeItem(\"fbui:upgrade:oldUserId\");\n\n if (onUpgrade) {\n await onUpgrade(ui, oldUserId, result);\n }\n\n return result;\n};\n\nexport const autoUpgradeAnonymousUserRedirectHandler = async (\n ui: FirebaseUI,\n credential: UserCredential | null,\n onUpgrade?: OnUpgradeCallback\n) => {\n const oldUserId = window.localStorage.getItem(\"fbui:upgrade:oldUserId\");\n\n // Always clean up localStorage once we've retrieved the oldUserId\n if (oldUserId) {\n window.localStorage.removeItem(\"fbui:upgrade:oldUserId\");\n }\n\n if (!onUpgrade || !oldUserId || !credential) {\n return;\n }\n\n await onUpgrade(ui, oldUserId, credential);\n};\n","import { signInAnonymously } from \"firebase/auth\";\nimport { type InitHandler } from \"./utils\";\n\nexport const autoAnonymousLoginHandler: InitHandler = async (ui) => {\n const auth = ui.auth;\n\n if (!auth.currentUser) {\n await signInAnonymously(auth);\n }\n};\n","import { RecaptchaVerifier } from \"firebase/auth\";\nimport { type FirebaseUI } from \"~/config\";\n\nexport type RecaptchaVerificationOptions = {\n size?: \"normal\" | \"invisible\" | \"compact\";\n theme?: \"light\" | \"dark\";\n tabindex?: number;\n};\n\nexport const recaptchaVerificationHandler = (\n ui: FirebaseUI,\n element: HTMLElement,\n options?: RecaptchaVerificationOptions\n) => {\n return new RecaptchaVerifier(ui.auth, element, {\n size: options?.size ?? \"invisible\",\n theme: options?.theme ?? \"light\",\n tabindex: options?.tabindex ?? 0,\n });\n};\n","import {\n type AuthProvider,\n linkWithPopup,\n linkWithRedirect,\n signInWithPopup,\n signInWithRedirect,\n type User,\n type UserCredential,\n} from \"firebase/auth\";\nimport { type FirebaseUI } from \"~/config\";\n\nexport type ProviderSignInStrategyHandler = (ui: FirebaseUI, provider: AuthProvider) => Promise<never | UserCredential>;\nexport type ProviderLinkStrategyHandler = (\n ui: FirebaseUI,\n user: User,\n provider: AuthProvider\n) => Promise<never | UserCredential>;\n\nexport const signInWithRediectHandler: ProviderSignInStrategyHandler = async (ui, provider) => {\n return signInWithRedirect(ui.auth, provider);\n};\n\nexport const signInWithPopupHandler: ProviderSignInStrategyHandler = async (ui, provider) => {\n return signInWithPopup(ui.auth, provider);\n};\n\nexport const linkWithRedirectHandler: ProviderLinkStrategyHandler = async (_ui, user, provider) => {\n return linkWithRedirect(user, provider);\n};\n\nexport const linkWithPopupHandler: ProviderLinkStrategyHandler = async (_ui, user, provider) => {\n return linkWithPopup(user, provider);\n};\n","import { GoogleAuthProvider } from \"firebase/auth\";\nimport type { IdConfiguration } from \"google-one-tap\";\nimport type { FirebaseUI } from \"~/config\";\nimport { signInWithCredential } from \"~/auth\";\n\nexport type OneTapSignInOptions = {\n clientId: IdConfiguration[\"client_id\"];\n autoSelect?: IdConfiguration[\"auto_select\"];\n cancelOnTapOutside?: IdConfiguration[\"cancel_on_tap_outside\"];\n context?: IdConfiguration[\"context\"];\n uxMode?: IdConfiguration[\"ux_mode\"];\n logLevel?: IdConfiguration[\"log_level\"];\n};\n\nexport const oneTapSignInHandler = async (ui: FirebaseUI, options: OneTapSignInOptions) => {\n // Only show one-tap if user is not signed in OR if they are anonymous.\n // Don't show if user is already signed in with a real account.\n if (ui.auth.currentUser && !ui.auth.currentUser.isAnonymous) {\n return;\n }\n\n // Prevent multiple instances of the script from being loaded, e.g. hot reload.\n if (document.querySelector(\"script[data-one-tap-sign-in]\")) {\n return;\n }\n\n const script = document.createElement(\"script\");\n script.setAttribute(\"data-one-tap-sign-in\", \"true\");\n script.src = \"https://accounts.google.com/gsi/client\";\n script.async = true;\n\n script.onload = () => {\n window.google.accounts.id.initialize({\n client_id: options.clientId,\n auto_select: options.autoSelect,\n cancel_on_tap_outside: options.cancelOnTapOutside,\n context: options.context,\n ux_mode: options.uxMode,\n log_level: options.logLevel,\n callback: async (response) => {\n const credential = GoogleAuthProvider.credential(response.credential);\n await signInWithCredential(ui, credential);\n },\n });\n\n window.google.accounts.id.prompt();\n };\n\n document.body.appendChild(script);\n};\n","import { updateProfile, type User } from \"firebase/auth\";\nimport { type FirebaseUI } from \"~/config\";\n\nexport const requireDisplayNameHandler = async (_: FirebaseUI, user: User, displayName: string) => {\n await updateProfile(user, { displayName });\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { formatIncompletePhoneNumber, parsePhoneNumberWithError, type CountryCode } from \"libphonenumber-js\";\n\nexport const countryData = [\n { name: \"Afghanistan\", dialCode: \"+93\", code: \"AF\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ซ\" },\n { name: \"Albania\", dialCode: \"+355\", code: \"AL\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฑ\" },\n { name: \"Algeria\", dialCode: \"+213\", code: \"DZ\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ฟ\" },\n { name: \"American Samoa\", dialCode: \"+1\", code: \"AS\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ธ\" },\n { name: \"Andorra\", dialCode: \"+376\", code: \"AD\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฉ\" },\n { name: \"Angola\", dialCode: \"+244\", code: \"AO\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ด\" },\n { name: \"Anguilla\", dialCode: \"+1\", code: \"AI\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฎ\" },\n { name: \"Antigua and Barbuda\", dialCode: \"+1\", code: \"AG\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฌ\" },\n { name: \"Argentina\", dialCode: \"+54\", code: \"AR\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ท\" },\n { name: \"Armenia\", dialCode: \"+374\", code: \"AM\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฒ\" },\n { name: \"Aruba\", dialCode: \"+297\", code: \"AW\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ผ\" },\n { name: \"Ascension Island\", dialCode: \"+247\", code: \"AC\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡จ\" },\n { name: \"Australia\", dialCode: \"+61\", code: \"AU\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡บ\" },\n { name: \"Austria\", dialCode: \"+43\", code: \"AT\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡น\" },\n { name: \"Azerbaijan\", dialCode: \"+994\", code: \"AZ\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฟ\" },\n { name: \"Bahamas\", dialCode: \"+1\", code: \"BS\", emoji: \"๐Ÿ‡ง๐Ÿ‡ธ\" },\n { name: \"Bahrain\", dialCode: \"+973\", code: \"BH\", emoji: \"๐Ÿ‡ง๐Ÿ‡ญ\" },\n { name: \"Bangladesh\", dialCode: \"+880\", code: \"BD\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฉ\" },\n { name: \"Barbados\", dialCode: \"+1\", code: \"BB\", emoji: \"๐Ÿ‡ง๐Ÿ‡ง\" },\n { name: \"Belarus\", dialCode: \"+375\", code: \"BY\", emoji: \"๐Ÿ‡ง๐Ÿ‡พ\" },\n { name: \"Belgium\", dialCode: \"+32\", code: \"BE\", emoji: \"๐Ÿ‡ง๐Ÿ‡ช\" },\n { name: \"Belize\", dialCode: \"+501\", code: \"BZ\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฟ\" },\n { name: \"Benin\", dialCode: \"+229\", code: \"BJ\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฏ\" },\n { name: \"Bermuda\", dialCode: \"+1\", code: \"BM\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฒ\" },\n { name: \"Bhutan\", dialCode: \"+975\", code: \"BT\", emoji: \"๐Ÿ‡ง๐Ÿ‡น\" },\n { name: \"Bolivia\", dialCode: \"+591\", code: \"BO\", emoji: \"๐Ÿ‡ง๐Ÿ‡ด\" },\n { name: \"Bosnia and Herzegovina\", dialCode: \"+387\", code: \"BA\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฆ\" },\n { name: \"Botswana\", dialCode: \"+267\", code: \"BW\", emoji: \"๐Ÿ‡ง๐Ÿ‡ผ\" },\n { name: \"Brazil\", dialCode: \"+55\", code: \"BR\", emoji: \"๐Ÿ‡ง๐Ÿ‡ท\" },\n { name: \"British Indian Ocean Territory\", dialCode: \"+246\", code: \"IO\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ด\" },\n { name: \"British Virgin Islands\", dialCode: \"+1\", code: \"VG\", emoji: \"๐Ÿ‡ป๐Ÿ‡ฌ\" },\n { name: \"Brunei\", dialCode: \"+673\", code: \"BN\", emoji: \"๐Ÿ‡ง๐Ÿ‡ณ\" },\n { name: \"Bulgaria\", dialCode: \"+359\", code: \"BG\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฌ\" },\n { name: \"Burkina Faso\", dialCode: \"+226\", code: \"BF\", emoji: \"๐Ÿ‡ง๐Ÿ‡ซ\" },\n { name: \"Burundi\", dialCode: \"+257\", code: \"BI\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฎ\" },\n { name: \"Cambodia\", dialCode: \"+855\", code: \"KH\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ญ\" },\n { name: \"Cameroon\", dialCode: \"+237\", code: \"CM\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฒ\" },\n { name: \"Canada\", dialCode: \"+1\", code: \"CA\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฆ\" },\n { name: \"Cape Verde\", dialCode: \"+238\", code: \"CV\", emoji: \"๐Ÿ‡จ๐Ÿ‡ป\" },\n { name: \"Caribbean Netherlands\", dialCode: \"+599\", code: \"BQ\", emoji: \"๐Ÿ‡ง๐Ÿ‡ถ\" },\n { name: \"Cayman Islands\", dialCode: \"+1\", code: \"KY\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡พ\" },\n { name: \"Central African Republic\", dialCode: \"+236\", code: \"CF\", emoji: \"๐Ÿ‡จ๐Ÿ‡ซ\" },\n { name: \"Chad\", dialCode: \"+235\", code: \"TD\", emoji: \"๐Ÿ‡น๐Ÿ‡ฉ\" },\n { name: \"Chile\", dialCode: \"+56\", code: \"CL\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฑ\" },\n { name: \"China\", dialCode: \"+86\", code: \"CN\", emoji: \"๐Ÿ‡จ๐Ÿ‡ณ\" },\n { name: \"Christmas Island\", dialCode: \"+61\", code: \"CX\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฝ\" },\n { name: \"Cocos [Keeling] Islands\", dialCode: \"+61\", code: \"CC\", emoji: \"๐Ÿ‡จ๐Ÿ‡จ\" },\n { name: \"Colombia\", dialCode: \"+57\", code: \"CO\", emoji: \"๐Ÿ‡จ๐Ÿ‡ด\" },\n { name: \"Comoros\", dialCode: \"+269\", code: \"KM\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ฒ\" },\n { name: \"Democratic Republic Congo\", dialCode: \"+243\", code: \"CD\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฉ\" },\n { name: \"Republic of Congo\", dialCode: \"+242\", code: \"CG\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฌ\" },\n { name: \"Cook Islands\", dialCode: \"+682\", code: \"CK\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฐ\" },\n { name: \"Costa Rica\", dialCode: \"+506\", code: \"CR\", emoji: \"๐Ÿ‡จ๐Ÿ‡ท\" },\n { name: \"Cรดte d'Ivoire\", dialCode: \"+225\", code: \"CI\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฎ\" },\n { name: \"Croatia\", dialCode: \"+385\", code: \"HR\", emoji: \"๐Ÿ‡ญ๐Ÿ‡ท\" },\n { name: \"Cuba\", dialCode: \"+53\", code: \"CU\", emoji: \"๐Ÿ‡จ๐Ÿ‡บ\" },\n { name: \"Curaรงao\", dialCode: \"+599\", code: \"CW\", emoji: \"๐Ÿ‡จ๐Ÿ‡ผ\" },\n { name: \"Cyprus\", dialCode: \"+357\", code: \"CY\", emoji: \"๐Ÿ‡จ๐Ÿ‡พ\" },\n { name: \"Czech Republic\", dialCode: \"+420\", code: \"CZ\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฟ\" },\n { name: \"Denmark\", dialCode: \"+45\", code: \"DK\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ฐ\" },\n { name: \"Djibouti\", dialCode: \"+253\", code: \"DJ\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ฏ\" },\n { name: \"Dominica\", dialCode: \"+1\", code: \"DM\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ฒ\" },\n { name: \"Dominican Republic\", dialCode: \"+1\", code: \"DO\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ด\" },\n { name: \"East Timor\", dialCode: \"+670\", code: \"TL\", emoji: \"๐Ÿ‡น๐Ÿ‡ฑ\" },\n { name: \"Ecuador\", dialCode: \"+593\", code: \"EC\", emoji: \"๐Ÿ‡ช๐Ÿ‡จ\" },\n { name: \"Egypt\", dialCode: \"+20\", code: \"EG\", emoji: \"๐Ÿ‡ช๐Ÿ‡ฌ\" },\n { name: \"El Salvador\", dialCode: \"+503\", code: \"SV\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ป\" },\n { name: \"Equatorial Guinea\", dialCode: \"+240\", code: \"GQ\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ถ\" },\n { name: \"Eritrea\", dialCode: \"+291\", code: \"ER\", emoji: \"๐Ÿ‡ช๐Ÿ‡ท\" },\n { name: \"Estonia\", dialCode: \"+372\", code: \"EE\", emoji: \"๐Ÿ‡ช๐Ÿ‡ช\" },\n { name: \"Ethiopia\", dialCode: \"+251\", code: \"ET\", emoji: \"๐Ÿ‡ช๐Ÿ‡น\" },\n { name: \"Falkland Islands [Islas Malvinas]\", dialCode: \"+500\", code: \"FK\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ฐ\" },\n { name: \"Faroe Islands\", dialCode: \"+298\", code: \"FO\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ด\" },\n { name: \"Fiji\", dialCode: \"+679\", code: \"FJ\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ฏ\" },\n { name: \"Finland\", dialCode: \"+358\", code: \"FI\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ฎ\" },\n { name: \"France\", dialCode: \"+33\", code: \"FR\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ท\" },\n { name: \"French Guiana\", dialCode: \"+594\", code: \"GF\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ซ\" },\n { name: \"French Polynesia\", dialCode: \"+689\", code: \"PF\", emoji: \"๐Ÿ‡ต๐Ÿ‡ซ\" },\n { name: \"Gabon\", dialCode: \"+241\", code: \"GA\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฆ\" },\n { name: \"Gambia\", dialCode: \"+220\", code: \"GM\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฒ\" },\n { name: \"Georgia\", dialCode: \"+995\", code: \"GE\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ช\" },\n { name: \"Germany\", dialCode: \"+49\", code: \"DE\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ช\" },\n { name: \"Ghana\", dialCode: \"+233\", code: \"GH\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ญ\" },\n { name: \"Gibraltar\", dialCode: \"+350\", code: \"GI\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฎ\" },\n { name: \"Greece\", dialCode: \"+30\", code: \"GR\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ท\" },\n { name: \"Greenland\", dialCode: \"+299\", code: \"GL\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฑ\" },\n { name: \"Grenada\", dialCode: \"+1\", code: \"GD\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฉ\" },\n { name: \"Guadeloupe\", dialCode: \"+590\", code: \"GP\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ต\" },\n { name: \"Guam\", dialCode: \"+1\", code: \"GU\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡บ\" },\n { name: \"Guatemala\", dialCode: \"+502\", code: \"GT\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡น\" },\n { name: \"Guernsey\", dialCode: \"+44\", code: \"GG\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฌ\" },\n { name: \"Guinea Conakry\", dialCode: \"+224\", code: \"GN\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ณ\" },\n { name: \"Guinea-Bissau\", dialCode: \"+245\", code: \"GW\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ผ\" },\n { name: \"Guyana\", dialCode: \"+592\", code: \"GY\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡พ\" },\n { name: \"Haiti\", dialCode: \"+509\", code: \"HT\", emoji: \"๐Ÿ‡ญ๐Ÿ‡น\" },\n { name: \"Honduras\", dialCode: \"+504\", code: \"HN\", emoji: \"๐Ÿ‡ญ๐Ÿ‡ณ\" },\n { name: \"Hong Kong\", dialCode: \"+852\", code: \"HK\", emoji: \"๐Ÿ‡ญ๐Ÿ‡ฐ\" },\n { name: \"Hungary\", dialCode: \"+36\", code: \"HU\", emoji: \"๐Ÿ‡ญ๐Ÿ‡บ\" },\n { name: \"Iceland\", dialCode: \"+354\", code: \"IS\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ธ\" },\n { name: \"India\", dialCode: \"+91\", code: \"IN\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ณ\" },\n { name: \"Indonesia\", dialCode: \"+62\", code: \"ID\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ฉ\" },\n { name: \"Iran\", dialCode: \"+98\", code: \"IR\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ท\" },\n { name: \"Iraq\", dialCode: \"+964\", code: \"IQ\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ถ\" },\n { name: \"Ireland\", dialCode: \"+353\", code: \"IE\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ช\" },\n { name: \"Isle of Man\", dialCode: \"+44\", code: \"IM\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ฒ\" },\n { name: \"Israel\", dialCode: \"+972\", code: \"IL\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ฑ\" },\n { name: \"Italy\", dialCode: \"+39\", code: \"IT\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡น\" },\n { name: \"Jamaica\", dialCode: \"+1\", code: \"JM\", emoji: \"๐Ÿ‡ฏ๐Ÿ‡ฒ\" },\n { name: \"Japan\", dialCode: \"+81\", code: \"JP\", emoji: \"๐Ÿ‡ฏ๐Ÿ‡ต\" },\n { name: \"Jersey\", dialCode: \"+44\", code: \"JE\", emoji: \"๐Ÿ‡ฏ๐Ÿ‡ช\" },\n { name: \"Jordan\", dialCode: \"+962\", code: \"JO\", emoji: \"๐Ÿ‡ฏ๐Ÿ‡ด\" },\n { name: \"Kazakhstan\", dialCode: \"+7\", code: \"KZ\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ฟ\" },\n { name: \"Kenya\", dialCode: \"+254\", code: \"KE\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ช\" },\n { name: \"Kiribati\", dialCode: \"+686\", code: \"KI\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ฎ\" },\n { name: \"Kosovo\", dialCode: \"+377\", code: \"XK\", emoji: \"๐Ÿ‡ฝ๐Ÿ‡ฐ\" },\n { name: \"Kosovo\", dialCode: \"+381\", code: \"XK\", emoji: \"๐Ÿ‡ฝ๐Ÿ‡ฐ\" },\n { name: \"Kosovo\", dialCode: \"+386\", code: \"XK\", emoji: \"๐Ÿ‡ฝ๐Ÿ‡ฐ\" },\n { name: \"Kuwait\", dialCode: \"+965\", code: \"KW\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ผ\" },\n { name: \"Kyrgyzstan\", dialCode: \"+996\", code: \"KG\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ฌ\" },\n { name: \"Laos\", dialCode: \"+856\", code: \"LA\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ฆ\" },\n { name: \"Latvia\", dialCode: \"+371\", code: \"LV\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ป\" },\n { name: \"Lebanon\", dialCode: \"+961\", code: \"LB\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ง\" },\n { name: \"Lesotho\", dialCode: \"+266\", code: \"LS\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ธ\" },\n { name: \"Liberia\", dialCode: \"+231\", code: \"LR\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ท\" },\n { name: \"Libya\", dialCode: \"+218\", code: \"LY\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡พ\" },\n { name: \"Liechtenstein\", dialCode: \"+423\", code: \"LI\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ฎ\" },\n { name: \"Lithuania\", dialCode: \"+370\", code: \"LT\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡น\" },\n { name: \"Luxembourg\", dialCode: \"+352\", code: \"LU\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡บ\" },\n { name: \"Macau\", dialCode: \"+853\", code: \"MO\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ด\" },\n { name: \"Macedonia\", dialCode: \"+389\", code: \"MK\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฐ\" },\n { name: \"Madagascar\", dialCode: \"+261\", code: \"MG\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฌ\" },\n { name: \"Malawi\", dialCode: \"+265\", code: \"MW\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ผ\" },\n { name: \"Malaysia\", dialCode: \"+60\", code: \"MY\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡พ\" },\n { name: \"Maldives\", dialCode: \"+960\", code: \"MV\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ป\" },\n { name: \"Mali\", dialCode: \"+223\", code: \"ML\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฑ\" },\n { name: \"Malta\", dialCode: \"+356\", code: \"MT\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡น\" },\n { name: \"Marshall Islands\", dialCode: \"+692\", code: \"MH\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ญ\" },\n { name: \"Martinique\", dialCode: \"+596\", code: \"MQ\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ถ\" },\n { name: \"Mauritania\", dialCode: \"+222\", code: \"MR\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ท\" },\n { name: \"Mauritius\", dialCode: \"+230\", code: \"MU\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡บ\" },\n { name: \"Mayotte\", dialCode: \"+262\", code: \"YT\", emoji: \"๐Ÿ‡พ๐Ÿ‡น\" },\n { name: \"Mexico\", dialCode: \"+52\", code: \"MX\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฝ\" },\n { name: \"Micronesia\", dialCode: \"+691\", code: \"FM\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ฒ\" },\n { name: \"Moldova\", dialCode: \"+373\", code: \"MD\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฉ\" },\n { name: \"Monaco\", dialCode: \"+377\", code: \"MC\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡จ\" },\n { name: \"Mongolia\", dialCode: \"+976\", code: \"MN\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ณ\" },\n { name: \"Montenegro\", dialCode: \"+382\", code: \"ME\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ช\" },\n { name: \"Montserrat\", dialCode: \"+1\", code: \"MS\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ธ\" },\n { name: \"Morocco\", dialCode: \"+212\", code: \"MA\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฆ\" },\n { name: \"Mozambique\", dialCode: \"+258\", code: \"MZ\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฟ\" },\n { name: \"Myanmar [Burma]\", dialCode: \"+95\", code: \"MM\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฒ\" },\n { name: \"Namibia\", dialCode: \"+264\", code: \"NA\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฆ\" },\n { name: \"Nauru\", dialCode: \"+674\", code: \"NR\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ท\" },\n { name: \"Nepal\", dialCode: \"+977\", code: \"NP\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ต\" },\n { name: \"Netherlands\", dialCode: \"+31\", code: \"NL\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฑ\" },\n { name: \"New Caledonia\", dialCode: \"+687\", code: \"NC\", emoji: \"๐Ÿ‡ณ๐Ÿ‡จ\" },\n { name: \"New Zealand\", dialCode: \"+64\", code: \"NZ\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฟ\" },\n { name: \"Nicaragua\", dialCode: \"+505\", code: \"NI\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฎ\" },\n { name: \"Niger\", dialCode: \"+227\", code: \"NE\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ช\" },\n { name: \"Nigeria\", dialCode: \"+234\", code: \"NG\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฌ\" },\n { name: \"Niue\", dialCode: \"+683\", code: \"NU\", emoji: \"๐Ÿ‡ณ๐Ÿ‡บ\" },\n { name: \"Norfolk Island\", dialCode: \"+672\", code: \"NF\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ซ\" },\n { name: \"North Korea\", dialCode: \"+850\", code: \"KP\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ต\" },\n { name: \"Northern Mariana Islands\", dialCode: \"+1\", code: \"MP\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ต\" },\n { name: \"Norway\", dialCode: \"+47\", code: \"NO\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ด\" },\n { name: \"Oman\", dialCode: \"+968\", code: \"OM\", emoji: \"๐Ÿ‡ด๐Ÿ‡ฒ\" },\n { name: \"Pakistan\", dialCode: \"+92\", code: \"PK\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฐ\" },\n { name: \"Palau\", dialCode: \"+680\", code: \"PW\", emoji: \"๐Ÿ‡ต๐Ÿ‡ผ\" },\n { name: \"Palestinian Territories\", dialCode: \"+970\", code: \"PS\", emoji: \"๐Ÿ‡ต๐Ÿ‡ธ\" },\n { name: \"Panama\", dialCode: \"+507\", code: \"PA\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฆ\" },\n { name: \"Papua New Guinea\", dialCode: \"+675\", code: \"PG\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฌ\" },\n { name: \"Paraguay\", dialCode: \"+595\", code: \"PY\", emoji: \"๐Ÿ‡ต๐Ÿ‡พ\" },\n { name: \"Peru\", dialCode: \"+51\", code: \"PE\", emoji: \"๐Ÿ‡ต๐Ÿ‡ช\" },\n { name: \"Philippines\", dialCode: \"+63\", code: \"PH\", emoji: \"๐Ÿ‡ต๐Ÿ‡ญ\" },\n { name: \"Poland\", dialCode: \"+48\", code: \"PL\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฑ\" },\n { name: \"Portugal\", dialCode: \"+351\", code: \"PT\", emoji: \"๐Ÿ‡ต๐Ÿ‡น\" },\n { name: \"Puerto Rico\", dialCode: \"+1\", code: \"PR\", emoji: \"๐Ÿ‡ต๐Ÿ‡ท\" },\n { name: \"Qatar\", dialCode: \"+974\", code: \"QA\", emoji: \"๐Ÿ‡ถ๐Ÿ‡ฆ\" },\n { name: \"Rรฉunion\", dialCode: \"+262\", code: \"RE\", emoji: \"๐Ÿ‡ท๐Ÿ‡ช\" },\n { name: \"Romania\", dialCode: \"+40\", code: \"RO\", emoji: \"๐Ÿ‡ท๐Ÿ‡ด\" },\n { name: \"Russia\", dialCode: \"+7\", code: \"RU\", emoji: \"๐Ÿ‡ท๐Ÿ‡บ\" },\n { name: \"Rwanda\", dialCode: \"+250\", code: \"RW\", emoji: \"๐Ÿ‡ท๐Ÿ‡ผ\" },\n { name: \"Saint Barthรฉlemy\", dialCode: \"+590\", code: \"BL\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฑ\" },\n { name: \"Saint Helena\", dialCode: \"+290\", code: \"SH\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ญ\" },\n { name: \"St. Kitts\", dialCode: \"+1\", code: \"KN\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ณ\" },\n { name: \"St. Lucia\", dialCode: \"+1\", code: \"LC\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡จ\" },\n { name: \"Saint Martin\", dialCode: \"+590\", code: \"MF\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ซ\" },\n { name: \"Saint Pierre and Miquelon\", dialCode: \"+508\", code: \"PM\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฒ\" },\n { name: \"St. Vincent\", dialCode: \"+1\", code: \"VC\", emoji: \"๐Ÿ‡ป๐Ÿ‡จ\" },\n { name: \"Samoa\", dialCode: \"+685\", code: \"WS\", emoji: \"๐Ÿ‡ผ๐Ÿ‡ธ\" },\n { name: \"San Marino\", dialCode: \"+378\", code: \"SM\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฒ\" },\n { name: \"Sรฃo Tomรฉ and Prรญncipe\", dialCode: \"+239\", code: \"ST\", emoji: \"๐Ÿ‡ธ๐Ÿ‡น\" },\n { name: \"Saudi Arabia\", dialCode: \"+966\", code: \"SA\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฆ\" },\n { name: \"Senegal\", dialCode: \"+221\", code: \"SN\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ณ\" },\n { name: \"Serbia\", dialCode: \"+381\", code: \"RS\", emoji: \"๐Ÿ‡ท๐Ÿ‡ธ\" },\n { name: \"Seychelles\", dialCode: \"+248\", code: \"SC\", emoji: \"๐Ÿ‡ธ๐Ÿ‡จ\" },\n { name: \"Sierra Leone\", dialCode: \"+232\", code: \"SL\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฑ\" },\n { name: \"Singapore\", dialCode: \"+65\", code: \"SG\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฌ\" },\n { name: \"Sint Maarten\", dialCode: \"+1\", code: \"SX\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฝ\" },\n { name: \"Slovakia\", dialCode: \"+421\", code: \"SK\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฐ\" },\n { name: \"Slovenia\", dialCode: \"+386\", code: \"SI\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฎ\" },\n { name: \"Solomon Islands\", dialCode: \"+677\", code: \"SB\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ง\" },\n { name: \"Somalia\", dialCode: \"+252\", code: \"SO\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ด\" },\n { name: \"South Africa\", dialCode: \"+27\", code: \"ZA\", emoji: \"๐Ÿ‡ฟ๐Ÿ‡ฆ\" },\n { name: \"South Korea\", dialCode: \"+82\", code: \"KR\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ท\" },\n { name: \"South Sudan\", dialCode: \"+211\", code: \"SS\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ธ\" },\n { name: \"Spain\", dialCode: \"+34\", code: \"ES\", emoji: \"๐Ÿ‡ช๐Ÿ‡ธ\" },\n { name: \"Sri Lanka\", dialCode: \"+94\", code: \"LK\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ฐ\" },\n { name: \"Sudan\", dialCode: \"+249\", code: \"SD\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฉ\" },\n { name: \"Suriname\", dialCode: \"+597\", code: \"SR\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ท\" },\n { name: \"Svalbard and Jan Mayen\", dialCode: \"+47\", code: \"SJ\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฏ\" },\n { name: \"Swaziland\", dialCode: \"+268\", code: \"SZ\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฟ\" },\n { name: \"Sweden\", dialCode: \"+46\", code: \"SE\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ช\" },\n { name: \"Switzerland\", dialCode: \"+41\", code: \"CH\", emoji: \"๐Ÿ‡จ๐Ÿ‡ญ\" },\n { name: \"Syria\", dialCode: \"+963\", code: \"SY\", emoji: \"๐Ÿ‡ธ๐Ÿ‡พ\" },\n { name: \"Taiwan\", dialCode: \"+886\", code: \"TW\", emoji: \"๐Ÿ‡น๐Ÿ‡ผ\" },\n { name: \"Tajikistan\", dialCode: \"+992\", code: \"TJ\", emoji: \"๐Ÿ‡น๐Ÿ‡ฏ\" },\n { name: \"Tanzania\", dialCode: \"+255\", code: \"TZ\", emoji: \"๐Ÿ‡น๐Ÿ‡ฟ\" },\n { name: \"Thailand\", dialCode: \"+66\", code: \"TH\", emoji: \"๐Ÿ‡น๐Ÿ‡ญ\" },\n { name: \"Togo\", dialCode: \"+228\", code: \"TG\", emoji: \"๐Ÿ‡น๐Ÿ‡ฌ\" },\n { name: \"Tokelau\", dialCode: \"+690\", code: \"TK\", emoji: \"๐Ÿ‡น๐Ÿ‡ฐ\" },\n { name: \"Tonga\", dialCode: \"+676\", code: \"TO\", emoji: \"๐Ÿ‡น๐Ÿ‡ด\" },\n { name: \"Trinidad/Tobago\", dialCode: \"+1\", code: \"TT\", emoji: \"๐Ÿ‡น๐Ÿ‡น\" },\n { name: \"Tunisia\", dialCode: \"+216\", code: \"TN\", emoji: \"๐Ÿ‡น๐Ÿ‡ณ\" },\n { name: \"Turkey\", dialCode: \"+90\", code: \"TR\", emoji: \"๐Ÿ‡น๐Ÿ‡ท\" },\n { name: \"Turkmenistan\", dialCode: \"+993\", code: \"TM\", emoji: \"๐Ÿ‡น๐Ÿ‡ฒ\" },\n { name: \"Turks and Caicos Islands\", dialCode: \"+1\", code: \"TC\", emoji: \"๐Ÿ‡น๐Ÿ‡จ\" },\n { name: \"Tuvalu\", dialCode: \"+688\", code: \"TV\", emoji: \"๐Ÿ‡น๐Ÿ‡ป\" },\n { name: \"U.S. Virgin Islands\", dialCode: \"+1\", code: \"VI\", emoji: \"๐Ÿ‡ป๐Ÿ‡ฎ\" },\n { name: \"Uganda\", dialCode: \"+256\", code: \"UG\", emoji: \"๐Ÿ‡บ๐Ÿ‡ฌ\" },\n { name: \"Ukraine\", dialCode: \"+380\", code: \"UA\", emoji: \"๐Ÿ‡บ๐Ÿ‡ฆ\" },\n { name: \"United Arab Emirates\", dialCode: \"+971\", code: \"AE\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ช\" },\n { name: \"United Kingdom\", dialCode: \"+44\", code: \"GB\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ง\" },\n { name: \"United States\", dialCode: \"+1\", code: \"US\", emoji: \"๐Ÿ‡บ๐Ÿ‡ธ\" },\n { name: \"Uruguay\", dialCode: \"+598\", code: \"UY\", emoji: \"๐Ÿ‡บ๐Ÿ‡พ\" },\n { name: \"Uzbekistan\", dialCode: \"+998\", code: \"UZ\", emoji: \"๐Ÿ‡บ๐Ÿ‡ฟ\" },\n { name: \"Vanuatu\", dialCode: \"+678\", code: \"VU\", emoji: \"๐Ÿ‡ป๐Ÿ‡บ\" },\n { name: \"Vatican City\", dialCode: \"+379\", code: \"VA\", emoji: \"๐Ÿ‡ป๐Ÿ‡ฆ\" },\n { name: \"Venezuela\", dialCode: \"+58\", code: \"VE\", emoji: \"๐Ÿ‡ป๐Ÿ‡ช\" },\n { name: \"Vietnam\", dialCode: \"+84\", code: \"VN\", emoji: \"๐Ÿ‡ป๐Ÿ‡ณ\" },\n { name: \"Wallis and Futuna\", dialCode: \"+681\", code: \"WF\", emoji: \"๐Ÿ‡ผ๐Ÿ‡ซ\" },\n { name: \"Western Sahara\", dialCode: \"+212\", code: \"EH\", emoji: \"๐Ÿ‡ช๐Ÿ‡ญ\" },\n { name: \"Yemen\", dialCode: \"+967\", code: \"YE\", emoji: \"๐Ÿ‡พ๐Ÿ‡ช\" },\n { name: \"Zambia\", dialCode: \"+260\", code: \"ZM\", emoji: \"๐Ÿ‡ฟ๐Ÿ‡ฒ\" },\n { name: \"Zimbabwe\", dialCode: \"+263\", code: \"ZW\", emoji: \"๐Ÿ‡ฟ๐Ÿ‡ผ\" },\n { name: \"ร…land Islands\", dialCode: \"+358\", code: \"AX\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฝ\" },\n] as const satisfies CountryData[];\n\nexport type CountryData = {\n name: string;\n dialCode: string;\n code: CountryCode;\n emoji: string;\n};\n\nexport type { CountryCode };\n\nexport function formatPhoneNumber(phoneNumber: string, countryData: CountryData): string {\n try {\n const parsedNumber = parsePhoneNumberWithError(phoneNumber, countryData.code);\n\n if (parsedNumber && parsedNumber.isValid()) {\n // Return the E164 format.\n return parsedNumber.number;\n }\n } catch {\n // If parsing fails, try to format as incomplete number\n }\n\n try {\n // Try to format as incomplete number with country\n const formatted = formatIncompletePhoneNumber(phoneNumber, countryData.code);\n // Remove spaces from the formatted result.\n return formatted.replace(/\\s/g, \"\");\n } catch {\n // If all else fails, just clean the number and prepend country code\n const cleaned = phoneNumber.replace(/[^\\d+]/g, \"\").trim();\n if (cleaned.startsWith(\"+\")) {\n return cleaned;\n }\n\n return `${countryData.dialCode}${cleaned}`;\n }\n}\n","import { type CountryCode, countryData } from \"../country-data\";\n\nexport type CountryCodesOptions = {\n // The allowed countries are the countries that will be shown in the country selector\n // or `getCountries` is called.\n allowedCountries?: CountryCode[];\n // The default country is the country that will be selected by default when\n // the country selector is rendered, or `getDefaultCountry` is called.\n defaultCountry?: CountryCode;\n};\n\nexport const countryCodesHandler = (options?: CountryCodesOptions) => {\n // Determine allowed countries\n let allowedCountries = options?.allowedCountries?.length\n ? countryData.filter((country) => options.allowedCountries!.includes(country.code))\n : countryData;\n\n // If no countries match, fall back to all countries\n if (options?.allowedCountries?.length && allowedCountries.length === 0) {\n console.warn(`No countries matched the \"allowedCountries\" list, falling back to all countries`);\n allowedCountries = countryData;\n }\n\n // Determine default country\n let defaultCountry = options?.defaultCountry\n ? countryData.find((country) => country.code === options.defaultCountry)!\n : countryData.find((country) => country.code === \"US\")!;\n\n // If default country is not in allowed countries, use first allowed country\n if (!allowedCountries.some((country) => country.code === defaultCountry.code)) {\n defaultCountry = allowedCountries[0]!;\n console.warn(\n `The \"defaultCountry\" option is not in the \"allowedCountries\" list, the default country has been set to ${defaultCountry.code}`\n );\n }\n\n return {\n allowedCountries,\n defaultCountry,\n };\n};\n","import type { UserCredential } from \"firebase/auth\";\nimport type { FirebaseUI } from \"~/config\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CallableHandler<T extends (...args: any[]) => any = (...args: any[]) => any> = T;\nexport type InitHandler = (ui: FirebaseUI) => Promise<void> | void;\nexport type RedirectHandler = (ui: FirebaseUI, result: UserCredential | null) => Promise<void> | void;\n\nexport type CallableBehavior<T extends CallableHandler = CallableHandler> = {\n type: \"callable\";\n handler: T;\n};\n\nexport type RedirectBehavior<T extends RedirectHandler = RedirectHandler> = {\n type: \"redirect\";\n handler: T;\n};\n\nexport type InitBehavior<T extends InitHandler = InitHandler> = {\n type: \"init\";\n handler: T;\n};\n\nexport function callableBehavior<T extends CallableHandler>(handler: T): CallableBehavior<T> {\n return { type: \"callable\" as const, handler };\n}\n\nexport function redirectBehavior<T extends RedirectHandler = RedirectHandler>(handler: T): RedirectBehavior<T> {\n return { type: \"redirect\" as const, handler };\n}\n\nexport function initBehavior<T extends InitHandler = InitHandler>(handler: T): InitBehavior<T> {\n return { type: \"init\" as const, handler };\n}\n","import type { FirebaseUI } from \"~/config\";\nimport type { RecaptchaVerifier, UserCredential } from \"firebase/auth\";\nimport * as anonymousUpgradeHandlers from \"./anonymous-upgrade\";\nimport * as autoAnonymousLoginHandlers from \"./auto-anonymous-login\";\nimport * as recaptchaHandlers from \"./recaptcha\";\nimport * as providerStrategyHandlers from \"./provider-strategy\";\nimport * as oneTapSignInHandlers from \"./one-tap\";\nimport * as requireDisplayNameHandlers from \"./require-display-name\";\nimport * as countryCodesHandlers from \"./country-codes\";\nimport {\n callableBehavior,\n initBehavior,\n redirectBehavior,\n type CallableBehavior,\n type InitBehavior,\n type RedirectBehavior,\n} from \"./utils\";\n\ntype Registry = {\n autoAnonymousLogin: InitBehavior<typeof autoAnonymousLoginHandlers.autoAnonymousLoginHandler>;\n autoUpgradeAnonymousCredential: CallableBehavior<\n typeof anonymousUpgradeHandlers.autoUpgradeAnonymousCredentialHandler\n >;\n autoUpgradeAnonymousProvider: CallableBehavior<typeof anonymousUpgradeHandlers.autoUpgradeAnonymousProviderHandler>;\n autoUpgradeAnonymousUserRedirectHandler: RedirectBehavior<\n (\n ui: FirebaseUI,\n credential: UserCredential | null,\n onUpgrade?: anonymousUpgradeHandlers.OnUpgradeCallback\n ) => ReturnType<typeof anonymousUpgradeHandlers.autoUpgradeAnonymousUserRedirectHandler>\n >;\n recaptchaVerification: CallableBehavior<(ui: FirebaseUI, element: HTMLElement) => RecaptchaVerifier>;\n providerSignInStrategy: CallableBehavior<providerStrategyHandlers.ProviderSignInStrategyHandler>;\n providerLinkStrategy: CallableBehavior<providerStrategyHandlers.ProviderLinkStrategyHandler>;\n oneTapSignIn: InitBehavior<(ui: FirebaseUI) => ReturnType<typeof oneTapSignInHandlers.oneTapSignInHandler>>;\n requireDisplayName: CallableBehavior<typeof requireDisplayNameHandlers.requireDisplayNameHandler>;\n countryCodes: CallableBehavior<typeof countryCodesHandlers.countryCodesHandler>;\n};\n\nexport type Behavior<T extends keyof Registry = keyof Registry> = Pick<Registry, T>;\nexport type Behaviors = Partial<Registry>;\n\nexport function autoAnonymousLogin(): Behavior<\"autoAnonymousLogin\"> {\n return {\n autoAnonymousLogin: initBehavior(autoAnonymousLoginHandlers.autoAnonymousLoginHandler),\n };\n}\n\nexport type AutoUpgradeAnonymousUsersOptions = {\n onUpgrade?: anonymousUpgradeHandlers.OnUpgradeCallback;\n};\n\nexport function autoUpgradeAnonymousUsers(\n options?: AutoUpgradeAnonymousUsersOptions\n): Behavior<\n \"autoUpgradeAnonymousCredential\" | \"autoUpgradeAnonymousProvider\" | \"autoUpgradeAnonymousUserRedirectHandler\"\n> {\n return {\n autoUpgradeAnonymousCredential: callableBehavior((ui, credential) =>\n anonymousUpgradeHandlers.autoUpgradeAnonymousCredentialHandler(ui, credential, options?.onUpgrade)\n ),\n autoUpgradeAnonymousProvider: callableBehavior((ui, provider) =>\n anonymousUpgradeHandlers.autoUpgradeAnonymousProviderHandler(ui, provider, options?.onUpgrade)\n ),\n autoUpgradeAnonymousUserRedirectHandler: redirectBehavior((ui, credential) =>\n anonymousUpgradeHandlers.autoUpgradeAnonymousUserRedirectHandler(ui, credential, options?.onUpgrade)\n ),\n };\n}\n\nexport type RecaptchaVerificationOptions = recaptchaHandlers.RecaptchaVerificationOptions;\n\nexport function recaptchaVerification(options?: RecaptchaVerificationOptions): Behavior<\"recaptchaVerification\"> {\n return {\n recaptchaVerification: callableBehavior((ui, element) =>\n recaptchaHandlers.recaptchaVerificationHandler(ui, element, options)\n ),\n };\n}\n\nexport function providerRedirectStrategy(): Behavior<\"providerSignInStrategy\" | \"providerLinkStrategy\"> {\n return {\n providerSignInStrategy: callableBehavior(providerStrategyHandlers.signInWithRediectHandler),\n providerLinkStrategy: callableBehavior(providerStrategyHandlers.linkWithRedirectHandler),\n };\n}\n\nexport function providerPopupStrategy(): Behavior<\"providerSignInStrategy\" | \"providerLinkStrategy\"> {\n return {\n providerSignInStrategy: callableBehavior(providerStrategyHandlers.signInWithPopupHandler),\n providerLinkStrategy: callableBehavior(providerStrategyHandlers.linkWithPopupHandler),\n };\n}\n\nexport type OneTapSignInOptions = oneTapSignInHandlers.OneTapSignInOptions;\n\nexport function oneTapSignIn(options: OneTapSignInOptions): Behavior<\"oneTapSignIn\"> {\n return {\n oneTapSignIn: initBehavior((ui) => oneTapSignInHandlers.oneTapSignInHandler(ui, options)),\n };\n}\n\nexport function requireDisplayName(): Behavior<\"requireDisplayName\"> {\n return {\n requireDisplayName: callableBehavior(requireDisplayNameHandlers.requireDisplayNameHandler),\n };\n}\n\nexport function countryCodes(options?: countryCodesHandlers.CountryCodesOptions): Behavior<\"countryCodes\"> {\n return {\n countryCodes: callableBehavior(() => countryCodesHandlers.countryCodesHandler(options)),\n };\n}\n\nexport function hasBehavior<T extends keyof Registry>(ui: FirebaseUI, key: T): boolean {\n return !!ui.behaviors[key];\n}\n\nexport function getBehavior<T extends keyof Registry>(ui: FirebaseUI, key: T): Registry[T][\"handler\"] {\n if (!hasBehavior(ui, key)) {\n throw new Error(`Behavior ${key} not found`);\n }\n\n return (ui.behaviors[key] as Registry[T]).handler;\n}\n\nexport const defaultBehaviors: Behavior<\"recaptchaVerification\"> = {\n ...recaptchaVerification(),\n ...providerRedirectStrategy(),\n ...countryCodes(),\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createUserWithEmailAndPassword as _createUserWithEmailAndPassword,\n isSignInWithEmailLink as _isSignInWithEmailLink,\n sendPasswordResetEmail as _sendPasswordResetEmail,\n sendSignInLinkToEmail as _sendSignInLinkToEmail,\n signInAnonymously as _signInAnonymously,\n signInWithCredential as _signInWithCredential,\n signInWithCustomToken as _signInWithCustomToken,\n EmailAuthProvider,\n linkWithCredential,\n PhoneAuthProvider,\n TotpMultiFactorGenerator,\n multiFactor,\n type ActionCodeSettings,\n type ApplicationVerifier,\n type AuthProvider,\n type UserCredential,\n type AuthCredential,\n type TotpSecret,\n type MultiFactorAssertion,\n type MultiFactorUser,\n type MultiFactorInfo,\n} from \"firebase/auth\";\nimport QRCode from \"qrcode-generator\";\nimport { type FirebaseUI } from \"./config\";\nimport { handleFirebaseError } from \"./errors\";\nimport { hasBehavior, getBehavior } from \"./behaviors/index\";\nimport { FirebaseError } from \"firebase/app\";\nimport { getTranslation } from \"./translations\";\n\nasync function handlePendingCredential(_ui: FirebaseUI, user: UserCredential): Promise<UserCredential> {\n const pendingCredString = window.sessionStorage.getItem(\"pendingCred\");\n if (!pendingCredString) return user;\n\n try {\n const pendingCred = JSON.parse(pendingCredString);\n const result = await linkWithCredential(user.user, pendingCred);\n window.sessionStorage.removeItem(\"pendingCred\");\n return result;\n } catch {\n window.sessionStorage.removeItem(\"pendingCred\");\n return user;\n }\n}\n\nfunction setPendingState(ui: FirebaseUI) {\n ui.setRedirectError(undefined);\n ui.setState(\"pending\");\n}\n\nexport async function signInWithEmailAndPassword(\n ui: FirebaseUI,\n email: string,\n password: string\n): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const credential = EmailAuthProvider.credential(email, password);\n\n if (hasBehavior(ui, \"autoUpgradeAnonymousCredential\")) {\n const result = await getBehavior(ui, \"autoUpgradeAnonymousCredential\")(ui, credential);\n\n if (result) {\n return handlePendingCredential(ui, result);\n }\n }\n\n const result = await _signInWithCredential(ui.auth, credential);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function createUserWithEmailAndPassword(\n ui: FirebaseUI,\n email: string,\n password: string,\n displayName?: string\n): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const credential = EmailAuthProvider.credential(email, password);\n\n if (hasBehavior(ui, \"requireDisplayName\") && !displayName) {\n throw new FirebaseError(\"auth/display-name-required\", getTranslation(ui, \"errors\", \"displayNameRequired\"));\n }\n\n if (hasBehavior(ui, \"autoUpgradeAnonymousCredential\")) {\n const result = await getBehavior(ui, \"autoUpgradeAnonymousCredential\")(ui, credential);\n\n if (result) {\n if (hasBehavior(ui, \"requireDisplayName\")) {\n await getBehavior(ui, \"requireDisplayName\")(ui, result.user, displayName!);\n }\n\n return handlePendingCredential(ui, result);\n }\n }\n\n const result = await _createUserWithEmailAndPassword(ui.auth, email, password);\n\n if (hasBehavior(ui, \"requireDisplayName\")) {\n await getBehavior(ui, \"requireDisplayName\")(ui, result.user, displayName!);\n }\n\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function verifyPhoneNumber(\n ui: FirebaseUI,\n phoneNumber: string,\n appVerifier: ApplicationVerifier,\n mfaUser?: MultiFactorUser,\n mfaHint?: MultiFactorInfo\n): Promise<string> {\n try {\n setPendingState(ui);\n const provider = new PhoneAuthProvider(ui.auth);\n\n if (mfaHint && ui.multiFactorResolver) {\n // MFA assertion flow\n return await provider.verifyPhoneNumber(\n {\n multiFactorHint: mfaHint,\n session: ui.multiFactorResolver.session,\n },\n appVerifier\n );\n } else if (mfaUser) {\n // MFA enrollment flow\n const session = await mfaUser.getSession();\n return await provider.verifyPhoneNumber(\n {\n phoneNumber,\n session,\n },\n appVerifier\n );\n } else {\n // Regular phone auth flow\n return await provider.verifyPhoneNumber(phoneNumber, appVerifier);\n }\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function confirmPhoneNumber(\n ui: FirebaseUI,\n verificationId: string,\n verificationCode: string\n): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const currentUser = ui.auth.currentUser;\n const credential = PhoneAuthProvider.credential(verificationId, verificationCode);\n\n if (currentUser?.isAnonymous && hasBehavior(ui, \"autoUpgradeAnonymousCredential\")) {\n const result = await getBehavior(ui, \"autoUpgradeAnonymousCredential\")(ui, credential);\n\n if (result) {\n return handlePendingCredential(ui, result);\n }\n }\n\n const result = await _signInWithCredential(ui.auth, credential);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function sendPasswordResetEmail(ui: FirebaseUI, email: string): Promise<void> {\n try {\n setPendingState(ui);\n await _sendPasswordResetEmail(ui.auth, email);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function sendSignInLinkToEmail(ui: FirebaseUI, email: string): Promise<void> {\n try {\n setPendingState(ui);\n const actionCodeSettings = {\n url: window.location.href,\n // TODO(ehesp): Check this...\n handleCodeInApp: true,\n } satisfies ActionCodeSettings;\n\n await _sendSignInLinkToEmail(ui.auth, email, actionCodeSettings);\n // TODO: Should this be a behavior (\"storageStrategy\")?\n window.localStorage.setItem(\"emailForSignIn\", email);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function signInWithEmailLink(ui: FirebaseUI, email: string, link: string): Promise<UserCredential> {\n const credential = EmailAuthProvider.credentialWithLink(email, link);\n return signInWithCredential(ui, credential);\n}\n\nexport async function signInWithCredential(ui: FirebaseUI, credential: AuthCredential): Promise<UserCredential> {\n try {\n setPendingState(ui);\n if (hasBehavior(ui, \"autoUpgradeAnonymousCredential\")) {\n const userCredential = await getBehavior(ui, \"autoUpgradeAnonymousCredential\")(ui, credential);\n\n // If they got here, they're either not anonymous or they've been linked.\n // If the credential has been linked, we don't need to sign them in, so return early.\n if (userCredential) {\n return handlePendingCredential(ui, userCredential);\n }\n }\n\n const result = await _signInWithCredential(ui.auth, credential);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function signInWithCustomToken(ui: FirebaseUI, customToken: string): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const result = await _signInWithCustomToken(ui.auth, customToken);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function signInAnonymously(ui: FirebaseUI): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const result = await _signInAnonymously(ui.auth);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function signInWithProvider(ui: FirebaseUI, provider: AuthProvider): Promise<UserCredential | never> {\n try {\n setPendingState(ui);\n if (hasBehavior(ui, \"autoUpgradeAnonymousProvider\")) {\n const credential = await getBehavior(ui, \"autoUpgradeAnonymousProvider\")(ui, provider);\n\n // If we got here, the user is either not anonymous, or they have been linked\n // via a popup, and the credential has been created.\n if (credential) {\n return handlePendingCredential(ui, credential);\n }\n }\n\n const strategy = getBehavior(ui, \"providerSignInStrategy\");\n const result = await strategy(ui, provider);\n\n // If we got here, the user has been signed in via a popup.\n // Otherwise, they will have been redirected.\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function completeEmailLinkSignIn(ui: FirebaseUI, currentUrl: string): Promise<UserCredential | null> {\n try {\n if (!_isSignInWithEmailLink(ui.auth, currentUrl)) {\n return null;\n }\n\n const email = window.localStorage.getItem(\"emailForSignIn\");\n if (!email) return null;\n\n setPendingState(ui);\n const result = await signInWithEmailLink(ui, email, currentUrl);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n window.localStorage.removeItem(\"emailForSignIn\");\n }\n}\n\nexport function generateTotpQrCode(ui: FirebaseUI, secret: TotpSecret, accountName?: string, issuer?: string): string {\n const currentUser = ui.auth.currentUser;\n\n if (!currentUser) {\n throw new Error(\"User must be authenticated to generate a TOTP QR code\");\n }\n\n const uri = secret.generateQrCodeUrl(accountName || currentUser.email || \"\", issuer);\n\n const qr = QRCode(0, \"L\");\n qr.addData(uri);\n qr.make();\n return qr.createDataURL();\n}\n\nexport async function signInWithMultiFactorAssertion(ui: FirebaseUI, assertion: MultiFactorAssertion) {\n try {\n setPendingState(ui);\n const result = await ui.multiFactorResolver?.resolveSignIn(assertion);\n ui.setMultiFactorResolver(undefined);\n return result;\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function enrollWithMultiFactorAssertion(\n ui: FirebaseUI,\n assertion: MultiFactorAssertion,\n displayName?: string\n): Promise<void> {\n try {\n setPendingState(ui);\n await multiFactor(ui.auth.currentUser!).enroll(assertion, displayName);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\nexport async function generateTotpSecret(ui: FirebaseUI): Promise<TotpSecret> {\n try {\n setPendingState(ui);\n const mfaUser = multiFactor(ui.auth.currentUser!);\n const session = await mfaUser.getSession();\n return await TotpMultiFactorGenerator.generateSecret(session);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { enUs, type RegisteredLocale } from \"@firebase-oss/ui-translations\";\nimport type { FirebaseApp } from \"firebase/app\";\nimport { type Auth, getAuth, getRedirectResult, type MultiFactorResolver } from \"firebase/auth\";\nimport { deepMap, type DeepMapStore, map } from \"nanostores\";\nimport { type Behavior, type Behaviors, defaultBehaviors } from \"./behaviors\";\nimport type { InitBehavior, RedirectBehavior } from \"./behaviors/utils\";\nimport { type FirebaseUIState } from \"./state\";\nimport { handleFirebaseError } from \"./errors\";\n\nexport type FirebaseUIOptions = {\n app: FirebaseApp;\n auth?: Auth;\n locale?: RegisteredLocale;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n behaviors?: Behavior<any>[];\n};\n\nexport type FirebaseUI = {\n app: FirebaseApp;\n auth: Auth;\n setLocale: (locale: RegisteredLocale) => void;\n state: FirebaseUIState;\n setState: (state: FirebaseUIState) => void;\n locale: RegisteredLocale;\n behaviors: Behaviors;\n multiFactorResolver?: MultiFactorResolver;\n setMultiFactorResolver: (multiFactorResolver?: MultiFactorResolver) => void;\n redirectError?: Error;\n setRedirectError: (error?: Error) => void;\n};\n\nexport const $config = map<Record<string, DeepMapStore<FirebaseUI>>>({});\n\nexport type FirebaseUIStore = DeepMapStore<FirebaseUI>;\n\nexport function initializeUI(config: FirebaseUIOptions, name: string = \"[DEFAULT]\"): FirebaseUIStore {\n // Reduce the behaviors to a single object.\n const behaviors = config.behaviors?.reduce<Behavior>((acc, behavior) => {\n return {\n ...acc,\n ...behavior,\n };\n }, defaultBehaviors as Behavior);\n\n $config.setKey(\n name,\n deepMap<FirebaseUI>({\n app: config.app,\n auth: config.auth || getAuth(config.app),\n locale: config.locale ?? enUs,\n setLocale: (locale: RegisteredLocale) => {\n const current = $config.get()[name]!;\n current.setKey(`locale`, locale);\n },\n state: \"idle\",\n setState: (state: FirebaseUIState) => {\n const current = $config.get()[name]!;\n current.setKey(`state`, state);\n },\n // Since we've got config.behaviors?.reduce above, we need to default to defaultBehaviors\n // if no behaviors are provided, as they wont be in the reducer.\n behaviors: behaviors ?? (defaultBehaviors as Behavior),\n multiFactorResolver: undefined,\n setMultiFactorResolver: (resolver?: MultiFactorResolver) => {\n const current = $config.get()[name]!;\n current.setKey(`multiFactorResolver`, resolver);\n },\n redirectError: undefined,\n setRedirectError: (error?: Error) => {\n const current = $config.get()[name]!;\n current.setKey(`redirectError`, error);\n },\n })\n );\n\n const store = $config.get()[name]!;\n const ui = store.get();\n\n // If we're client-side, execute the init and redirect behaviors.\n if (typeof window !== \"undefined\") {\n const initBehaviors: InitBehavior[] = [];\n const redirectBehaviors: RedirectBehavior[] = [];\n\n for (const behavior of Object.values(ui.behaviors)) {\n if (behavior.type === \"redirect\") {\n redirectBehaviors.push(behavior);\n } else if (behavior.type === \"init\") {\n initBehaviors.push(behavior);\n }\n }\n\n if (initBehaviors.length > 0) {\n store.setKey(\"state\", \"loading\");\n ui.auth.authStateReady().then(() => {\n Promise.all(initBehaviors.map((behavior) => behavior.handler(ui))).then(() => {\n store.setKey(\"state\", \"idle\");\n });\n });\n }\n\n getRedirectResult(ui.auth)\n .then((result) => {\n return Promise.all(redirectBehaviors.map((behavior) => behavior.handler(ui, result)));\n })\n .catch((error) => {\n try {\n handleFirebaseError(ui, error);\n } catch (error) {\n ui.setRedirectError(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n\n return store;\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as z from \"zod\";\nimport { getTranslation } from \"./translations\";\nimport { type FirebaseUI } from \"./config\";\nimport { hasBehavior } from \"./behaviors\";\n\nexport const LoginTypes = [\"email\", \"phone\", \"anonymous\", \"emailLink\", \"google\"] as const;\nexport type LoginType = (typeof LoginTypes)[number];\nexport type AuthMode = \"signIn\" | \"signUp\";\n\nexport function createSignInAuthFormSchema(ui: FirebaseUI) {\n return z.object({\n email: z.email(getTranslation(ui, \"errors\", \"invalidEmail\")),\n password: z.string().min(6, getTranslation(ui, \"errors\", \"weakPassword\")),\n });\n}\n\nexport function createSignUpAuthFormSchema(ui: FirebaseUI) {\n const requireDisplayName = hasBehavior(ui, \"requireDisplayName\");\n const displayNameRequiredMessage = getTranslation(ui, \"errors\", \"displayNameRequired\");\n\n return z.object({\n email: z.email(getTranslation(ui, \"errors\", \"invalidEmail\")),\n password: z.string().min(6, getTranslation(ui, \"errors\", \"weakPassword\")),\n displayName: requireDisplayName\n ? z.string().min(1, displayNameRequiredMessage)\n : z.string().min(1, displayNameRequiredMessage).optional(),\n });\n}\n\nexport function createForgotPasswordAuthFormSchema(ui: FirebaseUI) {\n return z.object({\n email: z.email(getTranslation(ui, \"errors\", \"invalidEmail\")),\n });\n}\n\nexport function createEmailLinkAuthFormSchema(ui: FirebaseUI) {\n return z.object({\n email: z.email(getTranslation(ui, \"errors\", \"invalidEmail\")),\n });\n}\n\nexport function createPhoneAuthNumberFormSchema(ui: FirebaseUI) {\n return z.object({\n phoneNumber: z\n .string()\n .min(1, getTranslation(ui, \"errors\", \"missingPhoneNumber\"))\n .max(10, getTranslation(ui, \"errors\", \"invalidPhoneNumber\")),\n });\n}\n\nexport function createPhoneAuthVerifyFormSchema(ui: FirebaseUI) {\n return z.object({\n verificationId: z.string().min(1, getTranslation(ui, \"errors\", \"missingVerificationId\")),\n verificationCode: z.string().refine((val) => !val || val.length >= 6, {\n error: getTranslation(ui, \"errors\", \"invalidVerificationCode\"),\n }),\n });\n}\n\nexport function createMultiFactorPhoneAuthNumberFormSchema(ui: FirebaseUI) {\n const base = createPhoneAuthNumberFormSchema(ui);\n return base.extend({\n displayName: z.string().min(1, getTranslation(ui, \"errors\", \"displayNameRequired\")),\n });\n}\n\nexport function createMultiFactorPhoneAuthVerifyFormSchema(ui: FirebaseUI) {\n return createPhoneAuthVerifyFormSchema(ui);\n}\n\nexport function createMultiFactorTotpAuthNumberFormSchema(ui: FirebaseUI) {\n return z.object({\n displayName: z.string().min(1, getTranslation(ui, \"errors\", \"displayNameRequired\")),\n });\n}\n\nexport function createMultiFactorTotpAuthVerifyFormSchema(ui: FirebaseUI) {\n return z.object({\n verificationCode: z.string().refine((val) => val.length === 6, {\n error: getTranslation(ui, \"errors\", \"invalidVerificationCode\"),\n }),\n });\n}\n\nexport type SignInAuthFormSchema = z.infer<ReturnType<typeof createSignInAuthFormSchema>>;\nexport type SignUpAuthFormSchema = z.infer<ReturnType<typeof createSignUpAuthFormSchema>>;\nexport type ForgotPasswordAuthFormSchema = z.infer<ReturnType<typeof createForgotPasswordAuthFormSchema>>;\nexport type EmailLinkAuthFormSchema = z.infer<ReturnType<typeof createEmailLinkAuthFormSchema>>;\nexport type PhoneAuthNumberFormSchema = z.infer<ReturnType<typeof createPhoneAuthNumberFormSchema>>;\nexport type PhoneAuthVerifyFormSchema = z.infer<ReturnType<typeof createPhoneAuthVerifyFormSchema>>;\nexport type MultiFactorPhoneAuthNumberFormSchema = z.infer<\n ReturnType<typeof createMultiFactorPhoneAuthNumberFormSchema>\n>;\nexport type MultiFactorTotpAuthNumberFormSchema = z.infer<ReturnType<typeof createMultiFactorTotpAuthNumberFormSchema>>;\nexport type MultiFactorTotpAuthVerifyFormSchema = z.infer<ReturnType<typeof createMultiFactorTotpAuthVerifyFormSchema>>;\n","/// <reference types=\"vite/client\" />\n/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { registerFramework } from \"./register-framework\";\nimport pkgJson from \"../package.json\";\n\nexport * from \"./auth\";\nexport * from \"./behaviors\";\nexport * from \"./config\";\nexport * from \"./errors\";\nexport * from \"./schemas\";\nexport * from \"./country-data\";\nexport * from \"./translations\";\nexport * from \"./register-framework\";\n\nif (import.meta.env.PROD) {\n registerFramework(\"core\", pkgJson.version);\n}\n"]}
1
+ {"version":3,"sources":["../package.json","../src/register-framework.ts","../src/translations.ts","../src/errors.ts","../src/behaviors/anonymous-upgrade.ts","../src/behaviors/auto-anonymous-login.ts","../src/behaviors/recaptcha.ts","../src/behaviors/provider-strategy.ts","../src/behaviors/one-tap.ts","../src/behaviors/require-display-name.ts","../src/country-data.ts","../src/behaviors/country-codes.ts","../src/behaviors/utils.ts","../src/behaviors/index.ts","../src/auth.ts","../src/config.ts","../src/schemas.ts","../src/index.ts"],"names":["package_default","registerFramework","framework","version","registerVersion","getTranslation","ui","category","key","replacements","_getTranslation","FirebaseUIError","_FirebaseUIError","FirebaseError","error","message","ERROR_CODE_MAP","handleFirebaseError","isFirebaseError","errorContainsCredential","resolver","getMultiFactorResolver","autoUpgradeAnonymousCredentialHandler","credential","onUpgrade","currentUser","oldUserId","result","linkWithCredential","autoUpgradeAnonymousProviderHandler","provider","getBehavior","autoUpgradeAnonymousUserRedirectHandler","autoAnonymousLoginHandler","auth","signInAnonymously","recaptchaVerificationHandler","element","options","RecaptchaVerifier","signInWithRediectHandler","signInWithRedirect","signInWithPopupHandler","signInWithPopup","linkWithRedirectHandler","_ui","user","linkWithRedirect","linkWithPopupHandler","linkWithPopup","oneTapSignInHandler","script","response","GoogleAuthProvider","signInWithCredential","requireDisplayNameHandler","_","displayName","updateProfile","countryData","formatPhoneNumber","phoneNumber","parsedNumber","parsePhoneNumberWithError","formatIncompletePhoneNumber","cleaned","countryCodesHandler","allowedCountries","country","defaultCountry","callableBehavior","handler","redirectBehavior","initBehavior","autoAnonymousLogin","autoUpgradeAnonymousUsers","recaptchaVerification","providerRedirectStrategy","providerPopupStrategy","oneTapSignIn","requireDisplayName","countryCodes","hasBehavior","defaultBehaviors","handlePendingCredential","pendingCredString","pendingCred","setPendingState","signInWithEmailAndPassword","email","password","EmailAuthProvider","_signInWithCredential","createUserWithEmailAndPassword","_createUserWithEmailAndPassword","verifyPhoneNumber","appVerifier","mfaUser","mfaHint","PhoneAuthProvider","session","confirmPhoneNumber","verificationId","verificationCode","sendPasswordResetEmail","_sendPasswordResetEmail","sendSignInLinkToEmail","actionCodeSettings","_sendSignInLinkToEmail","signInWithEmailLink","link","userCredential","signInWithCustomToken","customToken","_signInWithCustomToken","_signInAnonymously","signInWithProvider","completeEmailLinkSignIn","currentUrl","_isSignInWithEmailLink","generateTotpQrCode","secret","accountName","issuer","uri","qr","QRCode","signInWithMultiFactorAssertion","assertion","enrollWithMultiFactorAssertion","multiFactor","generateTotpSecret","TotpMultiFactorGenerator","$config","map","initializeUI","config","name","behaviors","acc","behavior","deepMap","getAuth","enUs","locale","state","store","initBehaviors","redirectBehaviors","getRedirectResult","createSignInAuthFormSchema","n","createSignUpAuthFormSchema","displayNameRequiredMessage","createForgotPasswordAuthFormSchema","createEmailLinkAuthFormSchema","createPhoneAuthNumberFormSchema","createPhoneAuthVerifyFormSchema","val","createMultiFactorPhoneAuthNumberFormSchema","createMultiFactorPhoneAuthAssertionFormSchema","createMultiFactorPhoneAuthVerifyFormSchema","createMultiFactorTotpAuthNumberFormSchema","createMultiFactorTotpAuthVerifyFormSchema"],"mappings":"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","file":"index.cjs","sourcesContent":["{\n \"name\": \"@firebase-oss/ui-core\",\n \"version\": \"0.0.2\",\n \"description\": \"Core authentication service for Firebase UI\",\n \"type\": \"module\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./brands/*\": \"./brands/*\"\n },\n \"files\": [\n \"dist\",\n \"brands\"\n ],\n \"scripts\": {\n \"prepare\": \"pnpm run build\",\n \"emulators:start\": \"firebase emulators:start -P demo-firebaseui\",\n \"build\": \"tsup --env.PROD=true\",\n \"build:local\": \"pnpm run build && pnpm pack\",\n \"dev\": \"tsup --watch\",\n \"lint\": \"eslint . --ext .ts\",\n \"lint:fix\": \"eslint . --ext .ts --fix\",\n \"format\": \"prettier --write \\\"src/**/*.ts\\\" \\\"tests/**/*.ts\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.ts\\\" \\\"tests/**/*.ts\\\"\",\n \"clean\": \"rimraf dist\",\n \"test:unit\": \"vitest run src\",\n \"test:unit:watch\": \"vitest tests\",\n \"test:integration\": \"vitest run tests\",\n \"test:integration:watch\": \"vitest integration\",\n \"test\": \"vitest run\",\n \"version:bump\": \"pnpm version patch\",\n \"publish:tags\": \"sh -c 'TAG=\\\"${npm_package_name}@${npm_package_version}\\\"; git tag --list \\\"$TAG\\\" | grep . || git tag \\\"$TAG\\\"; git push origin \\\"$TAG\\\"'\",\n \"publish:npm\": \"pnpm publish --access public --tag beta\",\n \"release\": \"pnpm run build && pnpm pack --pack-destination --pack-destination ../../releases/\"\n },\n \"keywords\": [\n \"firebase\",\n \"auth\",\n \"authentication\",\n \"firebaseui\"\n ],\n \"author\": \"TODO\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"firebase\": \"catalog:peerDependencies\"\n },\n \"dependencies\": {\n \"@firebase-oss/ui-translations\": \"workspace:*\",\n \"libphonenumber-js\": \"^1.12.23\",\n \"nanostores\": \"catalog:\",\n \"qrcode-generator\": \"^2.0.4\",\n \"zod\": \"catalog:\"\n },\n \"devDependencies\": {\n \"@types/google-one-tap\": \"^1.2.6\",\n \"@types/jsdom\": \"catalog:\",\n \"firebase\": \"catalog:\",\n \"jsdom\": \"catalog:\",\n \"rimraf\": \"catalog:\",\n \"tsup\": \"catalog:\",\n \"typescript\": \"catalog:\",\n \"vite\": \"catalog:\",\n \"vitest\": \"catalog:\"\n }\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { registerVersion } from \"firebase/app\";\n\n/**\n * Register a framework with the FirebaseUI configuration.\n * @internal\n * @param framework The type of framework being registered.\n * @param version The version of the framework being registered.\n */\nexport function registerFramework(framework: string, version: string) {\n registerVersion(\"firebase-ui-web\", version, framework);\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n getTranslation as _getTranslation,\n type TranslationCategory,\n type TranslationKey,\n} from \"@firebase-oss/ui-translations\";\nimport { type FirebaseUI } from \"./config\";\n\n/**\n * Gets a translated string for a given category and key.\n *\n * Example:\n * ```typescript\n * const translation = getTranslation(ui, \"errors\", \"userNotFound\");\n * ```\n *\n * @param ui - The FirebaseUI instance.\n * @param category - The translation category.\n * @param key - The translation key.\n * @param replacements - Optional replacements for placeholders.\n * @returns The translated string.\n */\nexport function getTranslation<T extends TranslationCategory>(\n ui: FirebaseUI,\n category: T,\n key: TranslationKey<T>,\n replacements?: Record<string, string>\n) {\n return _getTranslation(ui.locale, category, key, replacements);\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ERROR_CODE_MAP, type ErrorCode } from \"@firebase-oss/ui-translations\";\nimport { FirebaseError } from \"firebase/app\";\nimport { type AuthCredential, getMultiFactorResolver, type MultiFactorError } from \"firebase/auth\";\nimport { type FirebaseUI } from \"./config\";\nimport { getTranslation } from \"./translations\";\n\n/**\n * A custom error class that extends FirebaseError and provides a translated error message based on the configured locale.\n */\nexport class FirebaseUIError extends FirebaseError {\n constructor(ui: FirebaseUI, error: FirebaseError) {\n const message = getTranslation(ui, \"errors\", ERROR_CODE_MAP[error.code as ErrorCode]);\n super(error.code, message || error.message);\n\n // Ensures that `instanceof FirebaseUIError` works, alongside `instanceof FirebaseError`\n Object.setPrototypeOf(this, FirebaseUIError.prototype);\n }\n}\n\n/**\n * Handles a Firebase error and throws a FirebaseUIError if it is a Firebase error.\n *\n * Addtionally, handles the following error codes:\n * - auth/account-exists-with-different-credential - stores the credential in sessionStorage.\n * - auth/multi-factor-auth-required - updates the UI instance with the multi-factor resolver.\n *\n * @param ui - The FirebaseUI instance.\n * @param error - The error to handle.\n * @returns {never} A never type.\n */\nexport function handleFirebaseError(ui: FirebaseUI, error: unknown): never {\n // If it's not a Firebase error, then we just throw it and preserve the original error.\n if (!isFirebaseError(error)) {\n throw error;\n }\n\n // TODO(ehesp): Type error as unknown, check instance of FirebaseError\n // TODO(ehesp): Support via behavior\n if (error.code === \"auth/account-exists-with-different-credential\" && errorContainsCredential(error)) {\n window.sessionStorage.setItem(\"pendingCred\", JSON.stringify(error.credential.toJSON()));\n }\n\n // Update the UI with the multi-factor resolver if the error is thrown.\n if (error.code === \"auth/multi-factor-auth-required\") {\n const resolver = getMultiFactorResolver(ui.auth, error as MultiFactorError);\n ui.setMultiFactorResolver(resolver);\n }\n\n throw new FirebaseUIError(ui, error);\n}\n\n// Utility to obtain whether something is a FirebaseError\nfunction isFirebaseError(error: unknown): error is FirebaseError {\n // Calling instanceof FirebaseError is not working - not sure why yet.\n return !!error && typeof error === \"object\" && \"code\" in error && \"message\" in error;\n}\n\n// Utility to obtain whether something is a FirebaseError that contains a credential - doesn't seemed to be typed?\nfunction errorContainsCredential(error: FirebaseError): error is FirebaseError & { credential: AuthCredential } {\n return \"credential\" in error;\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { type AuthCredential, type AuthProvider, linkWithCredential, type UserCredential } from \"firebase/auth\";\nimport { type FirebaseUI } from \"~/config\";\nimport { getBehavior } from \"~/behaviors\";\n\nexport type OnUpgradeCallback = (ui: FirebaseUI, oldUserId: string, credential: UserCredential) => Promise<void> | void;\n\nexport const autoUpgradeAnonymousCredentialHandler = async (\n ui: FirebaseUI,\n credential: AuthCredential,\n onUpgrade?: OnUpgradeCallback\n) => {\n const currentUser = ui.auth.currentUser;\n\n if (!currentUser?.isAnonymous) {\n return;\n }\n\n const oldUserId = currentUser.uid;\n\n const result = await linkWithCredential(currentUser, credential);\n\n if (onUpgrade) {\n await onUpgrade(ui, oldUserId, result);\n }\n\n return result;\n};\n\nexport const autoUpgradeAnonymousProviderHandler = async (\n ui: FirebaseUI,\n provider: AuthProvider,\n onUpgrade?: OnUpgradeCallback\n) => {\n const currentUser = ui.auth.currentUser;\n\n if (!currentUser?.isAnonymous) {\n return;\n }\n\n const oldUserId = currentUser.uid;\n\n window.localStorage.setItem(\"fbui:upgrade:oldUserId\", oldUserId);\n\n const result = await getBehavior(ui, \"providerLinkStrategy\")(ui, currentUser, provider);\n\n // If we got here, the user has been linked via a popup, so we need to call the onUpgrade callback\n // and delete the oldUserId from localStorage.\n // If we didn't get here, they'll be redirected and we'll handle the result inside of the autoUpgradeAnonymousUserRedirectHandler.\n\n window.localStorage.removeItem(\"fbui:upgrade:oldUserId\");\n\n if (onUpgrade) {\n await onUpgrade(ui, oldUserId, result);\n }\n\n return result;\n};\n\nexport const autoUpgradeAnonymousUserRedirectHandler = async (\n ui: FirebaseUI,\n credential: UserCredential | null,\n onUpgrade?: OnUpgradeCallback\n) => {\n const oldUserId = window.localStorage.getItem(\"fbui:upgrade:oldUserId\");\n\n // Always clean up localStorage once we've retrieved the oldUserId\n if (oldUserId) {\n window.localStorage.removeItem(\"fbui:upgrade:oldUserId\");\n }\n\n if (!onUpgrade || !oldUserId || !credential) {\n return;\n }\n\n await onUpgrade(ui, oldUserId, credential);\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { signInAnonymously } from \"firebase/auth\";\nimport { type InitHandler } from \"./utils\";\n\nexport const autoAnonymousLoginHandler: InitHandler = async (ui) => {\n const auth = ui.auth;\n\n if (!auth.currentUser) {\n await signInAnonymously(auth);\n }\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RecaptchaVerifier } from \"firebase/auth\";\nimport { type FirebaseUI } from \"~/config\";\n\nexport type RecaptchaVerificationOptions = {\n size?: \"normal\" | \"invisible\" | \"compact\";\n theme?: \"light\" | \"dark\";\n tabindex?: number;\n};\n\nexport const recaptchaVerificationHandler = (\n ui: FirebaseUI,\n element: HTMLElement,\n options?: RecaptchaVerificationOptions\n) => {\n return new RecaptchaVerifier(ui.auth, element, {\n size: options?.size ?? \"invisible\",\n theme: options?.theme ?? \"light\",\n tabindex: options?.tabindex ?? 0,\n });\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n type AuthProvider,\n linkWithPopup,\n linkWithRedirect,\n signInWithPopup,\n signInWithRedirect,\n type User,\n type UserCredential,\n} from \"firebase/auth\";\nimport { type FirebaseUI } from \"~/config\";\n\nexport type ProviderSignInStrategyHandler = (ui: FirebaseUI, provider: AuthProvider) => Promise<never | UserCredential>;\nexport type ProviderLinkStrategyHandler = (\n ui: FirebaseUI,\n user: User,\n provider: AuthProvider\n) => Promise<never | UserCredential>;\n\nexport const signInWithRediectHandler: ProviderSignInStrategyHandler = async (ui, provider) => {\n return signInWithRedirect(ui.auth, provider);\n};\n\nexport const signInWithPopupHandler: ProviderSignInStrategyHandler = async (ui, provider) => {\n return signInWithPopup(ui.auth, provider);\n};\n\nexport const linkWithRedirectHandler: ProviderLinkStrategyHandler = async (_ui, user, provider) => {\n return linkWithRedirect(user, provider);\n};\n\nexport const linkWithPopupHandler: ProviderLinkStrategyHandler = async (_ui, user, provider) => {\n return linkWithPopup(user, provider);\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GoogleAuthProvider } from \"firebase/auth\";\nimport type { IdConfiguration } from \"google-one-tap\";\nimport type { FirebaseUI } from \"~/config\";\nimport { signInWithCredential } from \"~/auth\";\n\nexport type OneTapSignInOptions = {\n clientId: IdConfiguration[\"client_id\"];\n autoSelect?: IdConfiguration[\"auto_select\"];\n cancelOnTapOutside?: IdConfiguration[\"cancel_on_tap_outside\"];\n context?: IdConfiguration[\"context\"];\n uxMode?: IdConfiguration[\"ux_mode\"];\n logLevel?: IdConfiguration[\"log_level\"];\n};\n\nexport const oneTapSignInHandler = async (ui: FirebaseUI, options: OneTapSignInOptions) => {\n // Only show one-tap if user is not signed in OR if they are anonymous.\n // Don't show if user is already signed in with a real account.\n if (ui.auth.currentUser && !ui.auth.currentUser.isAnonymous) {\n return;\n }\n\n // Prevent multiple instances of the script from being loaded, e.g. hot reload.\n if (document.querySelector(\"script[data-one-tap-sign-in]\")) {\n return;\n }\n\n const script = document.createElement(\"script\");\n script.setAttribute(\"data-one-tap-sign-in\", \"true\");\n script.src = \"https://accounts.google.com/gsi/client\";\n script.async = true;\n\n script.onload = () => {\n window.google.accounts.id.initialize({\n client_id: options.clientId,\n auto_select: options.autoSelect,\n cancel_on_tap_outside: options.cancelOnTapOutside,\n context: options.context,\n ux_mode: options.uxMode,\n log_level: options.logLevel,\n callback: async (response) => {\n const credential = GoogleAuthProvider.credential(response.credential);\n await signInWithCredential(ui, credential);\n },\n });\n\n window.google.accounts.id.prompt();\n };\n\n document.body.appendChild(script);\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { updateProfile, type User } from \"firebase/auth\";\nimport { type FirebaseUI } from \"~/config\";\n\nexport const requireDisplayNameHandler = async (_: FirebaseUI, user: User, displayName: string) => {\n await updateProfile(user, { displayName });\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { formatIncompletePhoneNumber, parsePhoneNumberWithError, type CountryCode } from \"libphonenumber-js\";\n\n/**\n * An array of country data objects containing name, dial code, country code, and emoji for all supported countries.\n */\nexport const countryData = [\n { name: \"Afghanistan\", dialCode: \"+93\", code: \"AF\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ซ\" },\n { name: \"Albania\", dialCode: \"+355\", code: \"AL\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฑ\" },\n { name: \"Algeria\", dialCode: \"+213\", code: \"DZ\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ฟ\" },\n { name: \"American Samoa\", dialCode: \"+1\", code: \"AS\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ธ\" },\n { name: \"Andorra\", dialCode: \"+376\", code: \"AD\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฉ\" },\n { name: \"Angola\", dialCode: \"+244\", code: \"AO\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ด\" },\n { name: \"Anguilla\", dialCode: \"+1\", code: \"AI\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฎ\" },\n { name: \"Antigua and Barbuda\", dialCode: \"+1\", code: \"AG\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฌ\" },\n { name: \"Argentina\", dialCode: \"+54\", code: \"AR\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ท\" },\n { name: \"Armenia\", dialCode: \"+374\", code: \"AM\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฒ\" },\n { name: \"Aruba\", dialCode: \"+297\", code: \"AW\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ผ\" },\n { name: \"Ascension Island\", dialCode: \"+247\", code: \"AC\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡จ\" },\n { name: \"Australia\", dialCode: \"+61\", code: \"AU\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡บ\" },\n { name: \"Austria\", dialCode: \"+43\", code: \"AT\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡น\" },\n { name: \"Azerbaijan\", dialCode: \"+994\", code: \"AZ\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฟ\" },\n { name: \"Bahamas\", dialCode: \"+1\", code: \"BS\", emoji: \"๐Ÿ‡ง๐Ÿ‡ธ\" },\n { name: \"Bahrain\", dialCode: \"+973\", code: \"BH\", emoji: \"๐Ÿ‡ง๐Ÿ‡ญ\" },\n { name: \"Bangladesh\", dialCode: \"+880\", code: \"BD\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฉ\" },\n { name: \"Barbados\", dialCode: \"+1\", code: \"BB\", emoji: \"๐Ÿ‡ง๐Ÿ‡ง\" },\n { name: \"Belarus\", dialCode: \"+375\", code: \"BY\", emoji: \"๐Ÿ‡ง๐Ÿ‡พ\" },\n { name: \"Belgium\", dialCode: \"+32\", code: \"BE\", emoji: \"๐Ÿ‡ง๐Ÿ‡ช\" },\n { name: \"Belize\", dialCode: \"+501\", code: \"BZ\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฟ\" },\n { name: \"Benin\", dialCode: \"+229\", code: \"BJ\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฏ\" },\n { name: \"Bermuda\", dialCode: \"+1\", code: \"BM\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฒ\" },\n { name: \"Bhutan\", dialCode: \"+975\", code: \"BT\", emoji: \"๐Ÿ‡ง๐Ÿ‡น\" },\n { name: \"Bolivia\", dialCode: \"+591\", code: \"BO\", emoji: \"๐Ÿ‡ง๐Ÿ‡ด\" },\n { name: \"Bosnia and Herzegovina\", dialCode: \"+387\", code: \"BA\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฆ\" },\n { name: \"Botswana\", dialCode: \"+267\", code: \"BW\", emoji: \"๐Ÿ‡ง๐Ÿ‡ผ\" },\n { name: \"Brazil\", dialCode: \"+55\", code: \"BR\", emoji: \"๐Ÿ‡ง๐Ÿ‡ท\" },\n { name: \"British Indian Ocean Territory\", dialCode: \"+246\", code: \"IO\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ด\" },\n { name: \"British Virgin Islands\", dialCode: \"+1\", code: \"VG\", emoji: \"๐Ÿ‡ป๐Ÿ‡ฌ\" },\n { name: \"Brunei\", dialCode: \"+673\", code: \"BN\", emoji: \"๐Ÿ‡ง๐Ÿ‡ณ\" },\n { name: \"Bulgaria\", dialCode: \"+359\", code: \"BG\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฌ\" },\n { name: \"Burkina Faso\", dialCode: \"+226\", code: \"BF\", emoji: \"๐Ÿ‡ง๐Ÿ‡ซ\" },\n { name: \"Burundi\", dialCode: \"+257\", code: \"BI\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฎ\" },\n { name: \"Cambodia\", dialCode: \"+855\", code: \"KH\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ญ\" },\n { name: \"Cameroon\", dialCode: \"+237\", code: \"CM\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฒ\" },\n { name: \"Canada\", dialCode: \"+1\", code: \"CA\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฆ\" },\n { name: \"Cape Verde\", dialCode: \"+238\", code: \"CV\", emoji: \"๐Ÿ‡จ๐Ÿ‡ป\" },\n { name: \"Caribbean Netherlands\", dialCode: \"+599\", code: \"BQ\", emoji: \"๐Ÿ‡ง๐Ÿ‡ถ\" },\n { name: \"Cayman Islands\", dialCode: \"+1\", code: \"KY\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡พ\" },\n { name: \"Central African Republic\", dialCode: \"+236\", code: \"CF\", emoji: \"๐Ÿ‡จ๐Ÿ‡ซ\" },\n { name: \"Chad\", dialCode: \"+235\", code: \"TD\", emoji: \"๐Ÿ‡น๐Ÿ‡ฉ\" },\n { name: \"Chile\", dialCode: \"+56\", code: \"CL\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฑ\" },\n { name: \"China\", dialCode: \"+86\", code: \"CN\", emoji: \"๐Ÿ‡จ๐Ÿ‡ณ\" },\n { name: \"Christmas Island\", dialCode: \"+61\", code: \"CX\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฝ\" },\n { name: \"Cocos [Keeling] Islands\", dialCode: \"+61\", code: \"CC\", emoji: \"๐Ÿ‡จ๐Ÿ‡จ\" },\n { name: \"Colombia\", dialCode: \"+57\", code: \"CO\", emoji: \"๐Ÿ‡จ๐Ÿ‡ด\" },\n { name: \"Comoros\", dialCode: \"+269\", code: \"KM\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ฒ\" },\n { name: \"Democratic Republic Congo\", dialCode: \"+243\", code: \"CD\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฉ\" },\n { name: \"Republic of Congo\", dialCode: \"+242\", code: \"CG\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฌ\" },\n { name: \"Cook Islands\", dialCode: \"+682\", code: \"CK\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฐ\" },\n { name: \"Costa Rica\", dialCode: \"+506\", code: \"CR\", emoji: \"๐Ÿ‡จ๐Ÿ‡ท\" },\n { name: \"Cรดte d'Ivoire\", dialCode: \"+225\", code: \"CI\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฎ\" },\n { name: \"Croatia\", dialCode: \"+385\", code: \"HR\", emoji: \"๐Ÿ‡ญ๐Ÿ‡ท\" },\n { name: \"Cuba\", dialCode: \"+53\", code: \"CU\", emoji: \"๐Ÿ‡จ๐Ÿ‡บ\" },\n { name: \"Curaรงao\", dialCode: \"+599\", code: \"CW\", emoji: \"๐Ÿ‡จ๐Ÿ‡ผ\" },\n { name: \"Cyprus\", dialCode: \"+357\", code: \"CY\", emoji: \"๐Ÿ‡จ๐Ÿ‡พ\" },\n { name: \"Czech Republic\", dialCode: \"+420\", code: \"CZ\", emoji: \"๐Ÿ‡จ๐Ÿ‡ฟ\" },\n { name: \"Denmark\", dialCode: \"+45\", code: \"DK\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ฐ\" },\n { name: \"Djibouti\", dialCode: \"+253\", code: \"DJ\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ฏ\" },\n { name: \"Dominica\", dialCode: \"+1\", code: \"DM\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ฒ\" },\n { name: \"Dominican Republic\", dialCode: \"+1\", code: \"DO\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ด\" },\n { name: \"East Timor\", dialCode: \"+670\", code: \"TL\", emoji: \"๐Ÿ‡น๐Ÿ‡ฑ\" },\n { name: \"Ecuador\", dialCode: \"+593\", code: \"EC\", emoji: \"๐Ÿ‡ช๐Ÿ‡จ\" },\n { name: \"Egypt\", dialCode: \"+20\", code: \"EG\", emoji: \"๐Ÿ‡ช๐Ÿ‡ฌ\" },\n { name: \"El Salvador\", dialCode: \"+503\", code: \"SV\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ป\" },\n { name: \"Equatorial Guinea\", dialCode: \"+240\", code: \"GQ\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ถ\" },\n { name: \"Eritrea\", dialCode: \"+291\", code: \"ER\", emoji: \"๐Ÿ‡ช๐Ÿ‡ท\" },\n { name: \"Estonia\", dialCode: \"+372\", code: \"EE\", emoji: \"๐Ÿ‡ช๐Ÿ‡ช\" },\n { name: \"Ethiopia\", dialCode: \"+251\", code: \"ET\", emoji: \"๐Ÿ‡ช๐Ÿ‡น\" },\n { name: \"Falkland Islands [Islas Malvinas]\", dialCode: \"+500\", code: \"FK\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ฐ\" },\n { name: \"Faroe Islands\", dialCode: \"+298\", code: \"FO\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ด\" },\n { name: \"Fiji\", dialCode: \"+679\", code: \"FJ\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ฏ\" },\n { name: \"Finland\", dialCode: \"+358\", code: \"FI\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ฎ\" },\n { name: \"France\", dialCode: \"+33\", code: \"FR\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ท\" },\n { name: \"French Guiana\", dialCode: \"+594\", code: \"GF\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ซ\" },\n { name: \"French Polynesia\", dialCode: \"+689\", code: \"PF\", emoji: \"๐Ÿ‡ต๐Ÿ‡ซ\" },\n { name: \"Gabon\", dialCode: \"+241\", code: \"GA\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฆ\" },\n { name: \"Gambia\", dialCode: \"+220\", code: \"GM\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฒ\" },\n { name: \"Georgia\", dialCode: \"+995\", code: \"GE\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ช\" },\n { name: \"Germany\", dialCode: \"+49\", code: \"DE\", emoji: \"๐Ÿ‡ฉ๐Ÿ‡ช\" },\n { name: \"Ghana\", dialCode: \"+233\", code: \"GH\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ญ\" },\n { name: \"Gibraltar\", dialCode: \"+350\", code: \"GI\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฎ\" },\n { name: \"Greece\", dialCode: \"+30\", code: \"GR\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ท\" },\n { name: \"Greenland\", dialCode: \"+299\", code: \"GL\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฑ\" },\n { name: \"Grenada\", dialCode: \"+1\", code: \"GD\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฉ\" },\n { name: \"Guadeloupe\", dialCode: \"+590\", code: \"GP\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ต\" },\n { name: \"Guam\", dialCode: \"+1\", code: \"GU\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡บ\" },\n { name: \"Guatemala\", dialCode: \"+502\", code: \"GT\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡น\" },\n { name: \"Guernsey\", dialCode: \"+44\", code: \"GG\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ฌ\" },\n { name: \"Guinea Conakry\", dialCode: \"+224\", code: \"GN\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ณ\" },\n { name: \"Guinea-Bissau\", dialCode: \"+245\", code: \"GW\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ผ\" },\n { name: \"Guyana\", dialCode: \"+592\", code: \"GY\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡พ\" },\n { name: \"Haiti\", dialCode: \"+509\", code: \"HT\", emoji: \"๐Ÿ‡ญ๐Ÿ‡น\" },\n { name: \"Honduras\", dialCode: \"+504\", code: \"HN\", emoji: \"๐Ÿ‡ญ๐Ÿ‡ณ\" },\n { name: \"Hong Kong\", dialCode: \"+852\", code: \"HK\", emoji: \"๐Ÿ‡ญ๐Ÿ‡ฐ\" },\n { name: \"Hungary\", dialCode: \"+36\", code: \"HU\", emoji: \"๐Ÿ‡ญ๐Ÿ‡บ\" },\n { name: \"Iceland\", dialCode: \"+354\", code: \"IS\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ธ\" },\n { name: \"India\", dialCode: \"+91\", code: \"IN\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ณ\" },\n { name: \"Indonesia\", dialCode: \"+62\", code: \"ID\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ฉ\" },\n { name: \"Iran\", dialCode: \"+98\", code: \"IR\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ท\" },\n { name: \"Iraq\", dialCode: \"+964\", code: \"IQ\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ถ\" },\n { name: \"Ireland\", dialCode: \"+353\", code: \"IE\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ช\" },\n { name: \"Isle of Man\", dialCode: \"+44\", code: \"IM\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ฒ\" },\n { name: \"Israel\", dialCode: \"+972\", code: \"IL\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡ฑ\" },\n { name: \"Italy\", dialCode: \"+39\", code: \"IT\", emoji: \"๐Ÿ‡ฎ๐Ÿ‡น\" },\n { name: \"Jamaica\", dialCode: \"+1\", code: \"JM\", emoji: \"๐Ÿ‡ฏ๐Ÿ‡ฒ\" },\n { name: \"Japan\", dialCode: \"+81\", code: \"JP\", emoji: \"๐Ÿ‡ฏ๐Ÿ‡ต\" },\n { name: \"Jersey\", dialCode: \"+44\", code: \"JE\", emoji: \"๐Ÿ‡ฏ๐Ÿ‡ช\" },\n { name: \"Jordan\", dialCode: \"+962\", code: \"JO\", emoji: \"๐Ÿ‡ฏ๐Ÿ‡ด\" },\n { name: \"Kazakhstan\", dialCode: \"+7\", code: \"KZ\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ฟ\" },\n { name: \"Kenya\", dialCode: \"+254\", code: \"KE\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ช\" },\n { name: \"Kiribati\", dialCode: \"+686\", code: \"KI\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ฎ\" },\n { name: \"Kosovo\", dialCode: \"+377\", code: \"XK\", emoji: \"๐Ÿ‡ฝ๐Ÿ‡ฐ\" },\n { name: \"Kosovo\", dialCode: \"+381\", code: \"XK\", emoji: \"๐Ÿ‡ฝ๐Ÿ‡ฐ\" },\n { name: \"Kosovo\", dialCode: \"+386\", code: \"XK\", emoji: \"๐Ÿ‡ฝ๐Ÿ‡ฐ\" },\n { name: \"Kuwait\", dialCode: \"+965\", code: \"KW\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ผ\" },\n { name: \"Kyrgyzstan\", dialCode: \"+996\", code: \"KG\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ฌ\" },\n { name: \"Laos\", dialCode: \"+856\", code: \"LA\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ฆ\" },\n { name: \"Latvia\", dialCode: \"+371\", code: \"LV\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ป\" },\n { name: \"Lebanon\", dialCode: \"+961\", code: \"LB\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ง\" },\n { name: \"Lesotho\", dialCode: \"+266\", code: \"LS\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ธ\" },\n { name: \"Liberia\", dialCode: \"+231\", code: \"LR\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ท\" },\n { name: \"Libya\", dialCode: \"+218\", code: \"LY\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡พ\" },\n { name: \"Liechtenstein\", dialCode: \"+423\", code: \"LI\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ฎ\" },\n { name: \"Lithuania\", dialCode: \"+370\", code: \"LT\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡น\" },\n { name: \"Luxembourg\", dialCode: \"+352\", code: \"LU\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡บ\" },\n { name: \"Macau\", dialCode: \"+853\", code: \"MO\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ด\" },\n { name: \"Macedonia\", dialCode: \"+389\", code: \"MK\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฐ\" },\n { name: \"Madagascar\", dialCode: \"+261\", code: \"MG\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฌ\" },\n { name: \"Malawi\", dialCode: \"+265\", code: \"MW\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ผ\" },\n { name: \"Malaysia\", dialCode: \"+60\", code: \"MY\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡พ\" },\n { name: \"Maldives\", dialCode: \"+960\", code: \"MV\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ป\" },\n { name: \"Mali\", dialCode: \"+223\", code: \"ML\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฑ\" },\n { name: \"Malta\", dialCode: \"+356\", code: \"MT\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡น\" },\n { name: \"Marshall Islands\", dialCode: \"+692\", code: \"MH\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ญ\" },\n { name: \"Martinique\", dialCode: \"+596\", code: \"MQ\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ถ\" },\n { name: \"Mauritania\", dialCode: \"+222\", code: \"MR\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ท\" },\n { name: \"Mauritius\", dialCode: \"+230\", code: \"MU\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡บ\" },\n { name: \"Mayotte\", dialCode: \"+262\", code: \"YT\", emoji: \"๐Ÿ‡พ๐Ÿ‡น\" },\n { name: \"Mexico\", dialCode: \"+52\", code: \"MX\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฝ\" },\n { name: \"Micronesia\", dialCode: \"+691\", code: \"FM\", emoji: \"๐Ÿ‡ซ๐Ÿ‡ฒ\" },\n { name: \"Moldova\", dialCode: \"+373\", code: \"MD\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฉ\" },\n { name: \"Monaco\", dialCode: \"+377\", code: \"MC\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡จ\" },\n { name: \"Mongolia\", dialCode: \"+976\", code: \"MN\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ณ\" },\n { name: \"Montenegro\", dialCode: \"+382\", code: \"ME\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ช\" },\n { name: \"Montserrat\", dialCode: \"+1\", code: \"MS\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ธ\" },\n { name: \"Morocco\", dialCode: \"+212\", code: \"MA\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฆ\" },\n { name: \"Mozambique\", dialCode: \"+258\", code: \"MZ\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฟ\" },\n { name: \"Myanmar [Burma]\", dialCode: \"+95\", code: \"MM\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ฒ\" },\n { name: \"Namibia\", dialCode: \"+264\", code: \"NA\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฆ\" },\n { name: \"Nauru\", dialCode: \"+674\", code: \"NR\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ท\" },\n { name: \"Nepal\", dialCode: \"+977\", code: \"NP\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ต\" },\n { name: \"Netherlands\", dialCode: \"+31\", code: \"NL\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฑ\" },\n { name: \"New Caledonia\", dialCode: \"+687\", code: \"NC\", emoji: \"๐Ÿ‡ณ๐Ÿ‡จ\" },\n { name: \"New Zealand\", dialCode: \"+64\", code: \"NZ\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฟ\" },\n { name: \"Nicaragua\", dialCode: \"+505\", code: \"NI\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฎ\" },\n { name: \"Niger\", dialCode: \"+227\", code: \"NE\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ช\" },\n { name: \"Nigeria\", dialCode: \"+234\", code: \"NG\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ฌ\" },\n { name: \"Niue\", dialCode: \"+683\", code: \"NU\", emoji: \"๐Ÿ‡ณ๐Ÿ‡บ\" },\n { name: \"Norfolk Island\", dialCode: \"+672\", code: \"NF\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ซ\" },\n { name: \"North Korea\", dialCode: \"+850\", code: \"KP\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ต\" },\n { name: \"Northern Mariana Islands\", dialCode: \"+1\", code: \"MP\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ต\" },\n { name: \"Norway\", dialCode: \"+47\", code: \"NO\", emoji: \"๐Ÿ‡ณ๐Ÿ‡ด\" },\n { name: \"Oman\", dialCode: \"+968\", code: \"OM\", emoji: \"๐Ÿ‡ด๐Ÿ‡ฒ\" },\n { name: \"Pakistan\", dialCode: \"+92\", code: \"PK\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฐ\" },\n { name: \"Palau\", dialCode: \"+680\", code: \"PW\", emoji: \"๐Ÿ‡ต๐Ÿ‡ผ\" },\n { name: \"Palestinian Territories\", dialCode: \"+970\", code: \"PS\", emoji: \"๐Ÿ‡ต๐Ÿ‡ธ\" },\n { name: \"Panama\", dialCode: \"+507\", code: \"PA\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฆ\" },\n { name: \"Papua New Guinea\", dialCode: \"+675\", code: \"PG\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฌ\" },\n { name: \"Paraguay\", dialCode: \"+595\", code: \"PY\", emoji: \"๐Ÿ‡ต๐Ÿ‡พ\" },\n { name: \"Peru\", dialCode: \"+51\", code: \"PE\", emoji: \"๐Ÿ‡ต๐Ÿ‡ช\" },\n { name: \"Philippines\", dialCode: \"+63\", code: \"PH\", emoji: \"๐Ÿ‡ต๐Ÿ‡ญ\" },\n { name: \"Poland\", dialCode: \"+48\", code: \"PL\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฑ\" },\n { name: \"Portugal\", dialCode: \"+351\", code: \"PT\", emoji: \"๐Ÿ‡ต๐Ÿ‡น\" },\n { name: \"Puerto Rico\", dialCode: \"+1\", code: \"PR\", emoji: \"๐Ÿ‡ต๐Ÿ‡ท\" },\n { name: \"Qatar\", dialCode: \"+974\", code: \"QA\", emoji: \"๐Ÿ‡ถ๐Ÿ‡ฆ\" },\n { name: \"Rรฉunion\", dialCode: \"+262\", code: \"RE\", emoji: \"๐Ÿ‡ท๐Ÿ‡ช\" },\n { name: \"Romania\", dialCode: \"+40\", code: \"RO\", emoji: \"๐Ÿ‡ท๐Ÿ‡ด\" },\n { name: \"Russia\", dialCode: \"+7\", code: \"RU\", emoji: \"๐Ÿ‡ท๐Ÿ‡บ\" },\n { name: \"Rwanda\", dialCode: \"+250\", code: \"RW\", emoji: \"๐Ÿ‡ท๐Ÿ‡ผ\" },\n { name: \"Saint Barthรฉlemy\", dialCode: \"+590\", code: \"BL\", emoji: \"๐Ÿ‡ง๐Ÿ‡ฑ\" },\n { name: \"Saint Helena\", dialCode: \"+290\", code: \"SH\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ญ\" },\n { name: \"St. Kitts\", dialCode: \"+1\", code: \"KN\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ณ\" },\n { name: \"St. Lucia\", dialCode: \"+1\", code: \"LC\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡จ\" },\n { name: \"Saint Martin\", dialCode: \"+590\", code: \"MF\", emoji: \"๐Ÿ‡ฒ๐Ÿ‡ซ\" },\n { name: \"Saint Pierre and Miquelon\", dialCode: \"+508\", code: \"PM\", emoji: \"๐Ÿ‡ต๐Ÿ‡ฒ\" },\n { name: \"St. Vincent\", dialCode: \"+1\", code: \"VC\", emoji: \"๐Ÿ‡ป๐Ÿ‡จ\" },\n { name: \"Samoa\", dialCode: \"+685\", code: \"WS\", emoji: \"๐Ÿ‡ผ๐Ÿ‡ธ\" },\n { name: \"San Marino\", dialCode: \"+378\", code: \"SM\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฒ\" },\n { name: \"Sรฃo Tomรฉ and Prรญncipe\", dialCode: \"+239\", code: \"ST\", emoji: \"๐Ÿ‡ธ๐Ÿ‡น\" },\n { name: \"Saudi Arabia\", dialCode: \"+966\", code: \"SA\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฆ\" },\n { name: \"Senegal\", dialCode: \"+221\", code: \"SN\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ณ\" },\n { name: \"Serbia\", dialCode: \"+381\", code: \"RS\", emoji: \"๐Ÿ‡ท๐Ÿ‡ธ\" },\n { name: \"Seychelles\", dialCode: \"+248\", code: \"SC\", emoji: \"๐Ÿ‡ธ๐Ÿ‡จ\" },\n { name: \"Sierra Leone\", dialCode: \"+232\", code: \"SL\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฑ\" },\n { name: \"Singapore\", dialCode: \"+65\", code: \"SG\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฌ\" },\n { name: \"Sint Maarten\", dialCode: \"+1\", code: \"SX\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฝ\" },\n { name: \"Slovakia\", dialCode: \"+421\", code: \"SK\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฐ\" },\n { name: \"Slovenia\", dialCode: \"+386\", code: \"SI\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฎ\" },\n { name: \"Solomon Islands\", dialCode: \"+677\", code: \"SB\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ง\" },\n { name: \"Somalia\", dialCode: \"+252\", code: \"SO\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ด\" },\n { name: \"South Africa\", dialCode: \"+27\", code: \"ZA\", emoji: \"๐Ÿ‡ฟ๐Ÿ‡ฆ\" },\n { name: \"South Korea\", dialCode: \"+82\", code: \"KR\", emoji: \"๐Ÿ‡ฐ๐Ÿ‡ท\" },\n { name: \"South Sudan\", dialCode: \"+211\", code: \"SS\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ธ\" },\n { name: \"Spain\", dialCode: \"+34\", code: \"ES\", emoji: \"๐Ÿ‡ช๐Ÿ‡ธ\" },\n { name: \"Sri Lanka\", dialCode: \"+94\", code: \"LK\", emoji: \"๐Ÿ‡ฑ๐Ÿ‡ฐ\" },\n { name: \"Sudan\", dialCode: \"+249\", code: \"SD\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฉ\" },\n { name: \"Suriname\", dialCode: \"+597\", code: \"SR\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ท\" },\n { name: \"Svalbard and Jan Mayen\", dialCode: \"+47\", code: \"SJ\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฏ\" },\n { name: \"Swaziland\", dialCode: \"+268\", code: \"SZ\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ฟ\" },\n { name: \"Sweden\", dialCode: \"+46\", code: \"SE\", emoji: \"๐Ÿ‡ธ๐Ÿ‡ช\" },\n { name: \"Switzerland\", dialCode: \"+41\", code: \"CH\", emoji: \"๐Ÿ‡จ๐Ÿ‡ญ\" },\n { name: \"Syria\", dialCode: \"+963\", code: \"SY\", emoji: \"๐Ÿ‡ธ๐Ÿ‡พ\" },\n { name: \"Taiwan\", dialCode: \"+886\", code: \"TW\", emoji: \"๐Ÿ‡น๐Ÿ‡ผ\" },\n { name: \"Tajikistan\", dialCode: \"+992\", code: \"TJ\", emoji: \"๐Ÿ‡น๐Ÿ‡ฏ\" },\n { name: \"Tanzania\", dialCode: \"+255\", code: \"TZ\", emoji: \"๐Ÿ‡น๐Ÿ‡ฟ\" },\n { name: \"Thailand\", dialCode: \"+66\", code: \"TH\", emoji: \"๐Ÿ‡น๐Ÿ‡ญ\" },\n { name: \"Togo\", dialCode: \"+228\", code: \"TG\", emoji: \"๐Ÿ‡น๐Ÿ‡ฌ\" },\n { name: \"Tokelau\", dialCode: \"+690\", code: \"TK\", emoji: \"๐Ÿ‡น๐Ÿ‡ฐ\" },\n { name: \"Tonga\", dialCode: \"+676\", code: \"TO\", emoji: \"๐Ÿ‡น๐Ÿ‡ด\" },\n { name: \"Trinidad/Tobago\", dialCode: \"+1\", code: \"TT\", emoji: \"๐Ÿ‡น๐Ÿ‡น\" },\n { name: \"Tunisia\", dialCode: \"+216\", code: \"TN\", emoji: \"๐Ÿ‡น๐Ÿ‡ณ\" },\n { name: \"Turkey\", dialCode: \"+90\", code: \"TR\", emoji: \"๐Ÿ‡น๐Ÿ‡ท\" },\n { name: \"Turkmenistan\", dialCode: \"+993\", code: \"TM\", emoji: \"๐Ÿ‡น๐Ÿ‡ฒ\" },\n { name: \"Turks and Caicos Islands\", dialCode: \"+1\", code: \"TC\", emoji: \"๐Ÿ‡น๐Ÿ‡จ\" },\n { name: \"Tuvalu\", dialCode: \"+688\", code: \"TV\", emoji: \"๐Ÿ‡น๐Ÿ‡ป\" },\n { name: \"U.S. Virgin Islands\", dialCode: \"+1\", code: \"VI\", emoji: \"๐Ÿ‡ป๐Ÿ‡ฎ\" },\n { name: \"Uganda\", dialCode: \"+256\", code: \"UG\", emoji: \"๐Ÿ‡บ๐Ÿ‡ฌ\" },\n { name: \"Ukraine\", dialCode: \"+380\", code: \"UA\", emoji: \"๐Ÿ‡บ๐Ÿ‡ฆ\" },\n { name: \"United Arab Emirates\", dialCode: \"+971\", code: \"AE\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ช\" },\n { name: \"United Kingdom\", dialCode: \"+44\", code: \"GB\", emoji: \"๐Ÿ‡ฌ๐Ÿ‡ง\" },\n { name: \"United States\", dialCode: \"+1\", code: \"US\", emoji: \"๐Ÿ‡บ๐Ÿ‡ธ\" },\n { name: \"Uruguay\", dialCode: \"+598\", code: \"UY\", emoji: \"๐Ÿ‡บ๐Ÿ‡พ\" },\n { name: \"Uzbekistan\", dialCode: \"+998\", code: \"UZ\", emoji: \"๐Ÿ‡บ๐Ÿ‡ฟ\" },\n { name: \"Vanuatu\", dialCode: \"+678\", code: \"VU\", emoji: \"๐Ÿ‡ป๐Ÿ‡บ\" },\n { name: \"Vatican City\", dialCode: \"+379\", code: \"VA\", emoji: \"๐Ÿ‡ป๐Ÿ‡ฆ\" },\n { name: \"Venezuela\", dialCode: \"+58\", code: \"VE\", emoji: \"๐Ÿ‡ป๐Ÿ‡ช\" },\n { name: \"Vietnam\", dialCode: \"+84\", code: \"VN\", emoji: \"๐Ÿ‡ป๐Ÿ‡ณ\" },\n { name: \"Wallis and Futuna\", dialCode: \"+681\", code: \"WF\", emoji: \"๐Ÿ‡ผ๐Ÿ‡ซ\" },\n { name: \"Western Sahara\", dialCode: \"+212\", code: \"EH\", emoji: \"๐Ÿ‡ช๐Ÿ‡ญ\" },\n { name: \"Yemen\", dialCode: \"+967\", code: \"YE\", emoji: \"๐Ÿ‡พ๐Ÿ‡ช\" },\n { name: \"Zambia\", dialCode: \"+260\", code: \"ZM\", emoji: \"๐Ÿ‡ฟ๐Ÿ‡ฒ\" },\n { name: \"Zimbabwe\", dialCode: \"+263\", code: \"ZW\", emoji: \"๐Ÿ‡ฟ๐Ÿ‡ผ\" },\n { name: \"ร…land Islands\", dialCode: \"+358\", code: \"AX\", emoji: \"๐Ÿ‡ฆ๐Ÿ‡ฝ\" },\n] as const satisfies CountryData[];\n\n/**\n * A country data object containing name, dial code, country code, and emoji for a supported country.\n */\nexport type CountryData = {\n /** The name of the country. */\n name: string;\n /** The dial code of the country. */\n dialCode: string;\n /** The country code of the country. */\n code: CountryCode;\n /** The emoji of the country. */\n emoji: string;\n};\n\nexport type { CountryCode };\n\n/**\n * Formats a phone number according to the specified country data.\n *\n * @param phoneNumber - The phone number to format.\n * @param countryData - The country data to use for formatting.\n * @returns {string} The formatted phone number in E164 format.\n */\nexport function formatPhoneNumber(phoneNumber: string, countryData: CountryData): string {\n try {\n const parsedNumber = parsePhoneNumberWithError(phoneNumber, countryData.code);\n\n if (parsedNumber && parsedNumber.isValid()) {\n // Return the E164 format.\n return parsedNumber.number;\n }\n } catch {\n // If parsing fails, try to format as incomplete number\n }\n\n try {\n // Try to format as incomplete number with country\n const formatted = formatIncompletePhoneNumber(phoneNumber, countryData.code);\n // Remove spaces from the formatted result.\n return formatted.replace(/\\s/g, \"\");\n } catch {\n // If all else fails, just clean the number and prepend country code\n const cleaned = phoneNumber.replace(/[^\\d+]/g, \"\").trim();\n if (cleaned.startsWith(\"+\")) {\n return cleaned;\n }\n\n return `${countryData.dialCode}${cleaned}`;\n }\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { type CountryCode, countryData } from \"../country-data\";\n\nexport type CountryCodesOptions = {\n // The allowed countries are the countries that will be shown in the country selector\n // or `getCountries` is called.\n allowedCountries?: CountryCode[];\n // The default country is the country that will be selected by default when\n // the country selector is rendered, or `getDefaultCountry` is called.\n defaultCountry?: CountryCode;\n};\n\nexport const countryCodesHandler = (options?: CountryCodesOptions) => {\n // Determine allowed countries\n let allowedCountries = options?.allowedCountries?.length\n ? countryData.filter((country) => options.allowedCountries!.includes(country.code))\n : countryData;\n\n // If no countries match, fall back to all countries\n if (options?.allowedCountries?.length && allowedCountries.length === 0) {\n console.warn(`No countries matched the \"allowedCountries\" list, falling back to all countries`);\n allowedCountries = countryData;\n }\n\n // Determine default country\n let defaultCountry = options?.defaultCountry\n ? countryData.find((country) => country.code === options.defaultCountry)!\n : countryData.find((country) => country.code === \"US\")!;\n\n // If default country is not in allowed countries, use first allowed country\n if (!allowedCountries.some((country) => country.code === defaultCountry.code)) {\n defaultCountry = allowedCountries[0]!;\n console.warn(\n `The \"defaultCountry\" option is not in the \"allowedCountries\" list, the default country has been set to ${defaultCountry.code}`\n );\n }\n\n return {\n allowedCountries,\n defaultCountry,\n };\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { UserCredential } from \"firebase/auth\";\nimport type { FirebaseUI } from \"~/config\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CallableHandler<T extends (...args: any[]) => any = (...args: any[]) => any> = T;\nexport type InitHandler = (ui: FirebaseUI) => Promise<void> | void;\nexport type RedirectHandler = (ui: FirebaseUI, result: UserCredential | null) => Promise<void> | void;\n\nexport type CallableBehavior<T extends CallableHandler = CallableHandler> = {\n type: \"callable\";\n handler: T;\n};\n\nexport type RedirectBehavior<T extends RedirectHandler = RedirectHandler> = {\n type: \"redirect\";\n handler: T;\n};\n\nexport type InitBehavior<T extends InitHandler = InitHandler> = {\n type: \"init\";\n handler: T;\n};\n\nexport function callableBehavior<T extends CallableHandler>(handler: T): CallableBehavior<T> {\n return { type: \"callable\" as const, handler };\n}\n\nexport function redirectBehavior<T extends RedirectHandler = RedirectHandler>(handler: T): RedirectBehavior<T> {\n return { type: \"redirect\" as const, handler };\n}\n\nexport function initBehavior<T extends InitHandler = InitHandler>(handler: T): InitBehavior<T> {\n return { type: \"init\" as const, handler };\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FirebaseUI } from \"~/config\";\nimport type { RecaptchaVerifier, UserCredential } from \"firebase/auth\";\nimport * as anonymousUpgradeHandlers from \"./anonymous-upgrade\";\nimport * as autoAnonymousLoginHandlers from \"./auto-anonymous-login\";\nimport * as recaptchaHandlers from \"./recaptcha\";\nimport * as providerStrategyHandlers from \"./provider-strategy\";\nimport * as oneTapSignInHandlers from \"./one-tap\";\nimport * as requireDisplayNameHandlers from \"./require-display-name\";\nimport * as countryCodesHandlers from \"./country-codes\";\nimport {\n callableBehavior,\n initBehavior,\n redirectBehavior,\n type CallableBehavior,\n type InitBehavior,\n type RedirectBehavior,\n} from \"./utils\";\n\ntype Registry = {\n autoAnonymousLogin: InitBehavior<typeof autoAnonymousLoginHandlers.autoAnonymousLoginHandler>;\n autoUpgradeAnonymousCredential: CallableBehavior<\n typeof anonymousUpgradeHandlers.autoUpgradeAnonymousCredentialHandler\n >;\n autoUpgradeAnonymousProvider: CallableBehavior<typeof anonymousUpgradeHandlers.autoUpgradeAnonymousProviderHandler>;\n autoUpgradeAnonymousUserRedirectHandler: RedirectBehavior<\n (\n ui: FirebaseUI,\n credential: UserCredential | null,\n onUpgrade?: anonymousUpgradeHandlers.OnUpgradeCallback\n ) => ReturnType<typeof anonymousUpgradeHandlers.autoUpgradeAnonymousUserRedirectHandler>\n >;\n recaptchaVerification: CallableBehavior<(ui: FirebaseUI, element: HTMLElement) => RecaptchaVerifier>;\n providerSignInStrategy: CallableBehavior<providerStrategyHandlers.ProviderSignInStrategyHandler>;\n providerLinkStrategy: CallableBehavior<providerStrategyHandlers.ProviderLinkStrategyHandler>;\n oneTapSignIn: InitBehavior<(ui: FirebaseUI) => ReturnType<typeof oneTapSignInHandlers.oneTapSignInHandler>>;\n requireDisplayName: CallableBehavior<typeof requireDisplayNameHandlers.requireDisplayNameHandler>;\n countryCodes: CallableBehavior<typeof countryCodesHandlers.countryCodesHandler>;\n};\n\n/** A behavior or set of behaviors from the registry. */\nexport type Behavior<T extends keyof Registry = keyof Registry> = Pick<Registry, T>;\n/** All available behaviors, with each behavior being optional. */\nexport type Behaviors = Partial<Registry>;\n\n/**\n * Enables automatic anonymous login when the app initializes.\n *\n * @returns A behavior that automatically signs in users anonymously on app initialization.\n */\nexport function autoAnonymousLogin(): Behavior<\"autoAnonymousLogin\"> {\n return {\n autoAnonymousLogin: initBehavior(autoAnonymousLoginHandlers.autoAnonymousLoginHandler),\n };\n}\n\n/** Options for the auto-upgrade anonymous users behavior. */\nexport type AutoUpgradeAnonymousUsersOptions = {\n /** Optional callback function that is called when an anonymous user is upgraded. */\n onUpgrade?: anonymousUpgradeHandlers.OnUpgradeCallback;\n};\n\n/**\n * Automatically upgrades anonymous users to regular users when they sign in with a credential or provider.\n *\n * This behavior handles upgrading anonymous users for credential-based sign-ins, provider-based sign-ins,\n * and redirect-based authentication flows.\n *\n * @param options - Optional configuration including an upgrade callback.\n * @returns Behaviors for automatically upgrading anonymous users.\n */\nexport function autoUpgradeAnonymousUsers(\n options?: AutoUpgradeAnonymousUsersOptions\n): Behavior<\n \"autoUpgradeAnonymousCredential\" | \"autoUpgradeAnonymousProvider\" | \"autoUpgradeAnonymousUserRedirectHandler\"\n> {\n return {\n autoUpgradeAnonymousCredential: callableBehavior((ui, credential) =>\n anonymousUpgradeHandlers.autoUpgradeAnonymousCredentialHandler(ui, credential, options?.onUpgrade)\n ),\n autoUpgradeAnonymousProvider: callableBehavior((ui, provider) =>\n anonymousUpgradeHandlers.autoUpgradeAnonymousProviderHandler(ui, provider, options?.onUpgrade)\n ),\n autoUpgradeAnonymousUserRedirectHandler: redirectBehavior((ui, credential) =>\n anonymousUpgradeHandlers.autoUpgradeAnonymousUserRedirectHandler(ui, credential, options?.onUpgrade)\n ),\n };\n}\n\n/** Options for reCAPTCHA verification behavior. */\nexport type RecaptchaVerificationOptions = recaptchaHandlers.RecaptchaVerificationOptions;\n\n/**\n * Configures reCAPTCHA verification for phone authentication.\n *\n * @param options - Optional reCAPTCHA verification options.\n * @returns A behavior that handles reCAPTCHA verification for phone authentication.\n */\nexport function recaptchaVerification(options?: RecaptchaVerificationOptions): Behavior<\"recaptchaVerification\"> {\n return {\n recaptchaVerification: callableBehavior((ui, element) =>\n recaptchaHandlers.recaptchaVerificationHandler(ui, element, options)\n ),\n };\n}\n\n/**\n * Configures provider authentication to use redirect strategy instead of popup.\n *\n * @returns Behaviors for provider sign-in and linking using redirect strategy.\n */\nexport function providerRedirectStrategy(): Behavior<\"providerSignInStrategy\" | \"providerLinkStrategy\"> {\n return {\n providerSignInStrategy: callableBehavior(providerStrategyHandlers.signInWithRediectHandler),\n providerLinkStrategy: callableBehavior(providerStrategyHandlers.linkWithRedirectHandler),\n };\n}\n\n/**\n * Configures provider authentication to use popup strategy instead of redirect.\n *\n * This is the default strategy for provider authentication.\n *\n * @returns Behaviors for provider sign-in and linking using popup strategy.\n */\nexport function providerPopupStrategy(): Behavior<\"providerSignInStrategy\" | \"providerLinkStrategy\"> {\n return {\n providerSignInStrategy: callableBehavior(providerStrategyHandlers.signInWithPopupHandler),\n providerLinkStrategy: callableBehavior(providerStrategyHandlers.linkWithPopupHandler),\n };\n}\n\n/** Options for Google One Tap sign-in behavior. */\nexport type OneTapSignInOptions = oneTapSignInHandlers.OneTapSignInOptions;\n\n/**\n * Enables Google One Tap sign-in functionality.\n *\n * @param options - Configuration options for Google One Tap sign-in.\n * @returns A behavior that handles Google One Tap sign-in initialization.\n */\nexport function oneTapSignIn(options: OneTapSignInOptions): Behavior<\"oneTapSignIn\"> {\n return {\n oneTapSignIn: initBehavior((ui) => oneTapSignInHandlers.oneTapSignInHandler(ui, options)),\n };\n}\n\n/**\n * Requires users to provide a display name when creating an account.\n *\n * @returns A behavior that enforces display name requirement during user registration.\n */\nexport function requireDisplayName(): Behavior<\"requireDisplayName\"> {\n return {\n requireDisplayName: callableBehavior(requireDisplayNameHandlers.requireDisplayNameHandler),\n };\n}\n\n/**\n * Configures country code selection for phone number input.\n *\n * @param options - Optional configuration for country code behavior.\n * @returns A behavior that provides country code functionality for phone authentication.\n */\nexport function countryCodes(options?: countryCodesHandlers.CountryCodesOptions): Behavior<\"countryCodes\"> {\n return {\n countryCodes: callableBehavior(() => countryCodesHandlers.countryCodesHandler(options)),\n };\n}\n\n/**\n * Checks if a specific behavior is enabled for the given FirebaseUI instance.\n *\n * @param ui - The FirebaseUI instance.\n * @param key - The behavior key to check.\n * @returns True if the behavior is enabled, false otherwise.\n */\nexport function hasBehavior<T extends keyof Registry>(ui: FirebaseUI, key: T): boolean {\n return !!ui.behaviors[key];\n}\n\n/**\n * Gets the handler function for a specific behavior.\n *\n * @param ui - The FirebaseUI instance.\n * @param key - The behavior key to retrieve.\n * @returns The handler function for the specified behavior.\n * @throws {Error} Throws an error if the behavior is not found.\n */\nexport function getBehavior<T extends keyof Registry>(ui: FirebaseUI, key: T): Registry[T][\"handler\"] {\n if (!hasBehavior(ui, key)) {\n throw new Error(`Behavior ${key} not found`);\n }\n\n return (ui.behaviors[key] as Registry[T]).handler;\n}\n\n/** Default behaviors that are enabled by default for all FirebaseUI instances. */\nexport const defaultBehaviors: Behavior<\"recaptchaVerification\"> = {\n ...recaptchaVerification(),\n ...providerPopupStrategy(),\n ...countryCodes(),\n};\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createUserWithEmailAndPassword as _createUserWithEmailAndPassword,\n isSignInWithEmailLink as _isSignInWithEmailLink,\n sendPasswordResetEmail as _sendPasswordResetEmail,\n sendSignInLinkToEmail as _sendSignInLinkToEmail,\n signInAnonymously as _signInAnonymously,\n signInWithCredential as _signInWithCredential,\n signInWithCustomToken as _signInWithCustomToken,\n EmailAuthProvider,\n linkWithCredential,\n PhoneAuthProvider,\n TotpMultiFactorGenerator,\n multiFactor,\n type ActionCodeSettings,\n type ApplicationVerifier,\n type AuthProvider,\n type UserCredential,\n type AuthCredential,\n type TotpSecret,\n type MultiFactorAssertion,\n type MultiFactorUser,\n type MultiFactorInfo,\n} from \"firebase/auth\";\nimport QRCode from \"qrcode-generator\";\nimport { type FirebaseUI } from \"./config\";\nimport { handleFirebaseError } from \"./errors\";\nimport { hasBehavior, getBehavior } from \"./behaviors/index\";\nimport { FirebaseError } from \"firebase/app\";\nimport { getTranslation } from \"./translations\";\n\nasync function handlePendingCredential(_ui: FirebaseUI, user: UserCredential): Promise<UserCredential> {\n const pendingCredString = window.sessionStorage.getItem(\"pendingCred\");\n if (!pendingCredString) return user;\n\n try {\n const pendingCred = JSON.parse(pendingCredString);\n const result = await linkWithCredential(user.user, pendingCred);\n window.sessionStorage.removeItem(\"pendingCred\");\n return result;\n } catch {\n window.sessionStorage.removeItem(\"pendingCred\");\n return user;\n }\n}\n\nfunction setPendingState(ui: FirebaseUI) {\n ui.setRedirectError(undefined);\n ui.setState(\"pending\");\n}\n\n/**\n * Signs in with an email and password.\n *\n * If the `autoUpgradeAnonymousUsers` behavior is enabled, it will attempt to upgrade an anonymous user to a regular user.\n *\n * @param ui - The FirebaseUI instance.\n * @param email - The email to sign in with.\n * @param password - The password to sign in with.\n * @returns {Promise<UserCredential>} A promise containing the user credential.\n */\nexport async function signInWithEmailAndPassword(\n ui: FirebaseUI,\n email: string,\n password: string\n): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const credential = EmailAuthProvider.credential(email, password);\n\n if (hasBehavior(ui, \"autoUpgradeAnonymousCredential\")) {\n const result = await getBehavior(ui, \"autoUpgradeAnonymousCredential\")(ui, credential);\n\n if (result) {\n return handlePendingCredential(ui, result);\n }\n }\n\n const result = await _signInWithCredential(ui.auth, credential);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Creates a new user account with an email and password.\n *\n * If the `requireDisplayName` behavior is enabled, a display name must be provided.\n * If the `autoUpgradeAnonymousUsers` behavior is enabled, it will attempt to upgrade an anonymous user to a regular user.\n *\n * @param ui - The FirebaseUI instance.\n * @param email - The email address for the new account.\n * @param password - The password for the new account.\n * @param displayName - Optional display name for the user.\n * @returns {Promise<UserCredential>} A promise containing the user credential.\n */\nexport async function createUserWithEmailAndPassword(\n ui: FirebaseUI,\n email: string,\n password: string,\n displayName?: string\n): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const credential = EmailAuthProvider.credential(email, password);\n\n if (hasBehavior(ui, \"requireDisplayName\") && !displayName) {\n throw new FirebaseError(\"auth/display-name-required\", getTranslation(ui, \"errors\", \"displayNameRequired\"));\n }\n\n if (hasBehavior(ui, \"autoUpgradeAnonymousCredential\")) {\n const result = await getBehavior(ui, \"autoUpgradeAnonymousCredential\")(ui, credential);\n\n if (result) {\n if (hasBehavior(ui, \"requireDisplayName\")) {\n await getBehavior(ui, \"requireDisplayName\")(ui, result.user, displayName!);\n }\n\n return handlePendingCredential(ui, result);\n }\n }\n\n const result = await _createUserWithEmailAndPassword(ui.auth, email, password);\n\n if (hasBehavior(ui, \"requireDisplayName\")) {\n await getBehavior(ui, \"requireDisplayName\")(ui, result.user, displayName!);\n }\n\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Verifies a phone number for authentication.\n *\n * Supports regular phone authentication, MFA enrollment, and MFA assertion flows.\n *\n * @param ui - The FirebaseUI instance.\n * @param phoneNumber - The phone number to verify.\n * @param appVerifier - The application verifier (reCAPTCHA).\n * @param mfaUser - Optional multi-factor user for MFA enrollment flow.\n * @param mfaHint - Optional multi-factor info hint for MFA assertion flow.\n * @returns {Promise<string>} A promise containing the verification ID.\n */\nexport async function verifyPhoneNumber(\n ui: FirebaseUI,\n phoneNumber: string,\n appVerifier: ApplicationVerifier,\n mfaUser?: MultiFactorUser,\n mfaHint?: MultiFactorInfo\n): Promise<string> {\n try {\n setPendingState(ui);\n const provider = new PhoneAuthProvider(ui.auth);\n\n if (mfaHint && ui.multiFactorResolver) {\n // MFA assertion flow\n return await provider.verifyPhoneNumber(\n {\n multiFactorHint: mfaHint,\n session: ui.multiFactorResolver.session,\n },\n appVerifier\n );\n } else if (mfaUser) {\n // MFA enrollment flow\n const session = await mfaUser.getSession();\n return await provider.verifyPhoneNumber(\n {\n phoneNumber,\n session,\n },\n appVerifier\n );\n } else {\n // Regular phone auth flow\n return await provider.verifyPhoneNumber(phoneNumber, appVerifier);\n }\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Confirms a phone number verification code and signs in the user.\n *\n * If the `autoUpgradeAnonymousUsers` behavior is enabled and the current user is anonymous, it will attempt to upgrade the anonymous user to a regular user.\n *\n * @param ui - The FirebaseUI instance.\n * @param verificationId - The verification ID from the phone verification process.\n * @param verificationCode - The verification code sent to the phone.\n * @returns {Promise<UserCredential>} A promise containing the user credential.\n */\nexport async function confirmPhoneNumber(\n ui: FirebaseUI,\n verificationId: string,\n verificationCode: string\n): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const currentUser = ui.auth.currentUser;\n const credential = PhoneAuthProvider.credential(verificationId, verificationCode);\n\n if (currentUser?.isAnonymous && hasBehavior(ui, \"autoUpgradeAnonymousCredential\")) {\n const result = await getBehavior(ui, \"autoUpgradeAnonymousCredential\")(ui, credential);\n\n if (result) {\n return handlePendingCredential(ui, result);\n }\n }\n\n const result = await _signInWithCredential(ui.auth, credential);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Sends a password reset email to the specified email address.\n *\n * @param ui - The FirebaseUI instance.\n * @param email - The email address to send the password reset email to.\n * @returns {Promise<void>} A promise that resolves when the email is sent.\n */\nexport async function sendPasswordResetEmail(ui: FirebaseUI, email: string): Promise<void> {\n try {\n setPendingState(ui);\n await _sendPasswordResetEmail(ui.auth, email);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Sends a sign-in link to the specified email address.\n *\n * The email address is stored in localStorage for later use during the sign-in process.\n *\n * @param ui - The FirebaseUI instance.\n * @param email - The email address to send the sign-in link to.\n * @returns {Promise<void>} A promise that resolves when the email is sent.\n */\nexport async function sendSignInLinkToEmail(ui: FirebaseUI, email: string): Promise<void> {\n try {\n setPendingState(ui);\n const actionCodeSettings = {\n url: window.location.href,\n // TODO(ehesp): Check this...\n handleCodeInApp: true,\n } satisfies ActionCodeSettings;\n\n await _sendSignInLinkToEmail(ui.auth, email, actionCodeSettings);\n // TODO: Should this be a behavior (\"storageStrategy\")?\n window.localStorage.setItem(\"emailForSignIn\", email);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Signs in a user using an email link.\n *\n * @param ui - The FirebaseUI instance.\n * @param email - The email address associated with the sign-in link.\n * @param link - The sign-in link from the email.\n * @returns {Promise<UserCredential>} A promise containing the user credential.\n */\nexport async function signInWithEmailLink(ui: FirebaseUI, email: string, link: string): Promise<UserCredential> {\n const credential = EmailAuthProvider.credentialWithLink(email, link);\n return signInWithCredential(ui, credential);\n}\n\n/**\n * Signs in a user with an authentication credential.\n *\n * If the `autoUpgradeAnonymousUsers` behavior is enabled, it will attempt to upgrade an anonymous user to a regular user.\n *\n * @param ui - The FirebaseUI instance.\n * @param credential - The authentication credential to sign in with.\n * @returns {Promise<UserCredential>} A promise containing the user credential.\n */\nexport async function signInWithCredential(ui: FirebaseUI, credential: AuthCredential): Promise<UserCredential> {\n try {\n setPendingState(ui);\n if (hasBehavior(ui, \"autoUpgradeAnonymousCredential\")) {\n const userCredential = await getBehavior(ui, \"autoUpgradeAnonymousCredential\")(ui, credential);\n\n // If they got here, they're either not anonymous or they've been linked.\n // If the credential has been linked, we don't need to sign them in, so return early.\n if (userCredential) {\n return handlePendingCredential(ui, userCredential);\n }\n }\n\n const result = await _signInWithCredential(ui.auth, credential);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Signs in a user with a custom token.\n *\n * @param ui - The FirebaseUI instance.\n * @param customToken - The custom token to sign in with.\n * @returns {Promise<UserCredential>} A promise containing the user credential.\n */\nexport async function signInWithCustomToken(ui: FirebaseUI, customToken: string): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const result = await _signInWithCustomToken(ui.auth, customToken);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Signs in a user anonymously.\n *\n * @param ui - The FirebaseUI instance.\n * @returns {Promise<UserCredential>} A promise containing the user credential.\n */\nexport async function signInAnonymously(ui: FirebaseUI): Promise<UserCredential> {\n try {\n setPendingState(ui);\n const result = await _signInAnonymously(ui.auth);\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Signs in a user with an authentication provider (e.g., Google, Facebook, etc.).\n *\n * If the `autoUpgradeAnonymousProvider` behavior is enabled, it will attempt to upgrade an anonymous user to a regular user.\n * The sign-in strategy (popup or redirect) is determined by the `providerSignInStrategy` behavior.\n *\n * @param ui - The FirebaseUI instance.\n * @param provider - The authentication provider to sign in with.\n * @returns {Promise<UserCredential | never>} A promise containing the user credential, or never if using redirect strategy.\n */\nexport async function signInWithProvider(ui: FirebaseUI, provider: AuthProvider): Promise<UserCredential | never> {\n try {\n setPendingState(ui);\n if (hasBehavior(ui, \"autoUpgradeAnonymousProvider\")) {\n const credential = await getBehavior(ui, \"autoUpgradeAnonymousProvider\")(ui, provider);\n\n // If we got here, the user is either not anonymous, or they have been linked\n // via a popup, and the credential has been created.\n if (credential) {\n return handlePendingCredential(ui, credential);\n }\n }\n\n const strategy = getBehavior(ui, \"providerSignInStrategy\");\n const result = await strategy(ui, provider);\n\n // If we got here, the user has been signed in via a popup.\n // Otherwise, they will have been redirected.\n return handlePendingCredential(ui, result);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Completes the email link sign-in process using the current URL.\n *\n * Checks if the current URL is a valid email link sign-in URL and retrieves the email from localStorage.\n * Returns null if the URL is not a valid email link or if no email is found in localStorage.\n *\n * @param ui - The FirebaseUI instance.\n * @param currentUrl - The current URL to check for email link sign-in.\n * @returns {Promise<UserCredential | null>} A promise containing the user credential, or null if the sign-in cannot be completed.\n */\nexport async function completeEmailLinkSignIn(ui: FirebaseUI, currentUrl: string): Promise<UserCredential | null> {\n try {\n if (!_isSignInWithEmailLink(ui.auth, currentUrl)) {\n return null;\n }\n\n const email = window.localStorage.getItem(\"emailForSignIn\");\n if (!email) return null;\n\n // signInWithEmailLink handles behavior checks, credential creation, and error handling\n const result = await signInWithEmailLink(ui, email, currentUrl);\n return handlePendingCredential(ui, result);\n } finally {\n window.localStorage.removeItem(\"emailForSignIn\");\n }\n}\n\n/**\n * Generates a QR code data URL for TOTP (Time-based One-Time Password) multi-factor authentication.\n *\n * The QR code can be scanned by an authenticator app to set up TOTP MFA for the user.\n *\n * @param ui - The FirebaseUI instance.\n * @param secret - The TOTP secret to generate the QR code for.\n * @param accountName - Optional account name for the QR code. Defaults to the user's email if not provided.\n * @param issuer - Optional issuer name for the QR code.\n * @returns {string} A data URL containing the QR code image.\n * @throws {Error} Throws an error if the user is not authenticated.\n */\nexport function generateTotpQrCode(ui: FirebaseUI, secret: TotpSecret, accountName?: string, issuer?: string): string {\n const currentUser = ui.auth.currentUser;\n\n if (!currentUser) {\n throw new Error(\"User must be authenticated to generate a TOTP QR code\");\n }\n\n const uri = secret.generateQrCodeUrl(accountName || currentUser.email || \"\", issuer);\n\n const qr = QRCode(0, \"L\");\n qr.addData(uri);\n qr.make();\n return qr.createDataURL();\n}\n\n/**\n * Signs in a user using a multi-factor assertion.\n *\n * Resolves the multi-factor challenge using the provided assertion and clears the multi-factor resolver from the UI state.\n *\n * @param ui - The FirebaseUI instance.\n * @param assertion - The multi-factor assertion to use for sign-in.\n * @returns {Promise<UserCredential>} A promise containing the user credential.\n */\nexport async function signInWithMultiFactorAssertion(ui: FirebaseUI, assertion: MultiFactorAssertion) {\n try {\n setPendingState(ui);\n const result = await ui.multiFactorResolver!.resolveSignIn(assertion);\n ui.setMultiFactorResolver(undefined);\n return result;\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Enrolls a multi-factor authentication method for the current user.\n *\n * @param ui - The FirebaseUI instance.\n * @param assertion - The multi-factor assertion to enroll.\n * @param displayName - Optional display name for the enrolled MFA method.\n * @returns {Promise<void>} A promise that resolves when the enrollment is complete.\n */\nexport async function enrollWithMultiFactorAssertion(\n ui: FirebaseUI,\n assertion: MultiFactorAssertion,\n displayName?: string\n): Promise<void> {\n try {\n setPendingState(ui);\n await multiFactor(ui.auth.currentUser!).enroll(assertion, displayName);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n\n/**\n * Generates a TOTP (Time-based One-Time Password) secret for multi-factor authentication enrollment.\n *\n * @param ui - The FirebaseUI instance.\n * @returns {Promise<TotpSecret>} A promise containing the TOTP secret.\n */\nexport async function generateTotpSecret(ui: FirebaseUI): Promise<TotpSecret> {\n try {\n setPendingState(ui);\n const mfaUser = multiFactor(ui.auth.currentUser!);\n const session = await mfaUser.getSession();\n return await TotpMultiFactorGenerator.generateSecret(session);\n } catch (error) {\n handleFirebaseError(ui, error);\n } finally {\n ui.setState(\"idle\");\n }\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { enUs, type RegisteredLocale } from \"@firebase-oss/ui-translations\";\nimport type { FirebaseApp } from \"firebase/app\";\nimport { type Auth, getAuth, getRedirectResult, type MultiFactorResolver } from \"firebase/auth\";\nimport { deepMap, type DeepMapStore, map } from \"nanostores\";\nimport { type Behavior, type Behaviors, defaultBehaviors } from \"./behaviors\";\nimport type { InitBehavior, RedirectBehavior } from \"./behaviors/utils\";\nimport { type FirebaseUIState } from \"./state\";\nimport { handleFirebaseError } from \"./errors\";\n\n/**\n * Configuration options for initializing FirebaseUI.\n */\nexport type FirebaseUIOptions = {\n /** A required Firebase App instance, e.g. from `initializeApp`. */\n app: FirebaseApp;\n /** An optional Firebase Auth instance, e.g. from `getAuth`. If not provided, it will be created using the app instance. */\n auth?: Auth;\n /** A default locale to use. Defaults to `enUs`. */\n locale?: RegisteredLocale;\n /** An optional array of behaviors, e.g. from `requireDisplayName`. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n behaviors?: Behavior<any>[];\n};\n\n/**\n * The main FirebaseUI instance that provides access to Firebase Auth and UI state management.\n *\n * This type encapsulates all the necessary components for managing authentication UI state,\n * including Firebase app and auth instances, locale settings, behaviors, and multi-factor\n * authentication state.\n */\nexport type FirebaseUI = {\n /** The Firebase App instance. */\n app: FirebaseApp;\n /** The Firebase Auth instance. */\n auth: Auth;\n /** Sets the locale for translations. */\n setLocale: (locale: RegisteredLocale) => void;\n /** The current UI state (e.g., \"idle\", \"pending\", \"loading\"). */\n state: FirebaseUIState;\n /** Sets the UI state. */\n setState: (state: FirebaseUIState) => void;\n /** The current locale for translations. */\n locale: RegisteredLocale;\n /** The configured behaviors that customize authentication flows. */\n behaviors: Behaviors;\n /** The multi-factor resolver, if a multi-factor challenge is in progress. */\n multiFactorResolver?: MultiFactorResolver;\n /** Sets the multi-factor resolver. */\n setMultiFactorResolver: (multiFactorResolver?: MultiFactorResolver) => void;\n /** Any error that occurred during a redirect-based authentication flow. */\n redirectError?: Error;\n /** Sets the redirect error. */\n setRedirectError: (error?: Error) => void;\n};\n\nexport const $config = map<Record<string, DeepMapStore<FirebaseUI>>>({});\n\n/**\n * A reactive store containing a FirebaseUI instance.\n *\n * This store allows for reactive updates to the FirebaseUI state, enabling UI components\n * to automatically update when the authentication state or configuration changes.\n */\nexport type FirebaseUIStore = DeepMapStore<FirebaseUI>;\n\n/**\n * Initializes a FirebaseUI instance with the provided configuration.\n *\n * Creates a reactive store containing the FirebaseUI instance, sets up behaviors,\n * and handles initialization and redirect flows if running client-side.\n *\n * Example:\n * ```typescript\n * const ui = initializeUI({\n * app: firebaseApp,\n * locale: enUs,\n * behaviors: [requireDisplayName()],\n * });\n * ```\n *\n * @param config - The configuration options for FirebaseUI.\n * @param name - Optional name for the FirebaseUI instance. Defaults to \"[DEFAULT]\".\n * @returns {FirebaseUIStore} A reactive store containing the initialized FirebaseUI instance.\n */\nexport function initializeUI(config: FirebaseUIOptions, name: string = \"[DEFAULT]\"): FirebaseUIStore {\n // Reduce the behaviors to a single object.\n const behaviors = config.behaviors?.reduce<Behavior>((acc, behavior) => {\n return {\n ...acc,\n ...behavior,\n };\n }, defaultBehaviors as Behavior);\n\n $config.setKey(\n name,\n deepMap<FirebaseUI>({\n app: config.app,\n auth: config.auth || getAuth(config.app),\n locale: config.locale ?? enUs,\n setLocale: (locale: RegisteredLocale) => {\n const current = $config.get()[name]!;\n current.setKey(`locale`, locale);\n },\n state: \"idle\",\n setState: (state: FirebaseUIState) => {\n const current = $config.get()[name]!;\n current.setKey(`state`, state);\n },\n // Since we've got config.behaviors?.reduce above, we need to default to defaultBehaviors\n // if no behaviors are provided, as they wont be in the reducer.\n behaviors: behaviors ?? (defaultBehaviors as Behavior),\n multiFactorResolver: undefined,\n setMultiFactorResolver: (resolver?: MultiFactorResolver) => {\n const current = $config.get()[name]!;\n current.setKey(`multiFactorResolver`, resolver);\n },\n redirectError: undefined,\n setRedirectError: (error?: Error) => {\n const current = $config.get()[name]!;\n current.setKey(`redirectError`, error);\n },\n })\n );\n\n const store = $config.get()[name]!;\n const ui = store.get();\n\n // If we're client-side, execute the init and redirect behaviors.\n if (typeof window !== \"undefined\") {\n const initBehaviors: InitBehavior[] = [];\n const redirectBehaviors: RedirectBehavior[] = [];\n\n for (const behavior of Object.values(ui.behaviors)) {\n if (behavior.type === \"redirect\") {\n redirectBehaviors.push(behavior);\n } else if (behavior.type === \"init\") {\n initBehaviors.push(behavior);\n }\n }\n\n if (initBehaviors.length > 0) {\n store.setKey(\"state\", \"loading\");\n ui.auth.authStateReady().then(() => {\n Promise.all(initBehaviors.map((behavior) => behavior.handler(ui))).then(() => {\n store.setKey(\"state\", \"idle\");\n });\n });\n }\n\n getRedirectResult(ui.auth)\n .then((result) => {\n return Promise.all(redirectBehaviors.map((behavior) => behavior.handler(ui, result)));\n })\n .catch((error) => {\n try {\n handleFirebaseError(ui, error);\n } catch (error) {\n ui.setRedirectError(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n\n return store;\n}\n","/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as z from \"zod\";\nimport { getTranslation } from \"./translations\";\nimport { type FirebaseUI } from \"./config\";\nimport { hasBehavior } from \"./behaviors\";\n\n/**\n * Creates a Zod schema for sign-in form validation.\n *\n * Validates email format and password minimum length (6 characters).\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for sign-in form validation.\n */\nexport function createSignInAuthFormSchema(ui: FirebaseUI) {\n return z.object({\n email: z.email(getTranslation(ui, \"errors\", \"invalidEmail\")),\n password: z.string().min(6, getTranslation(ui, \"errors\", \"weakPassword\")),\n });\n}\n\n/**\n * Creates a Zod schema for sign-up form validation.\n *\n * Validates email format, password minimum length (6 characters), and optionally requires a display name\n * if the `requireDisplayName` behavior is enabled.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for sign-up form validation.\n */\nexport function createSignUpAuthFormSchema(ui: FirebaseUI) {\n const requireDisplayName = hasBehavior(ui, \"requireDisplayName\");\n const displayNameRequiredMessage = getTranslation(ui, \"errors\", \"displayNameRequired\");\n\n return z.object({\n email: z.email(getTranslation(ui, \"errors\", \"invalidEmail\")),\n password: z.string().min(6, getTranslation(ui, \"errors\", \"weakPassword\")),\n displayName: requireDisplayName\n ? z.string().min(1, displayNameRequiredMessage)\n : z.string().min(1, displayNameRequiredMessage).optional(),\n });\n}\n\n/**\n * Creates a Zod schema for forgot password form validation.\n *\n * Validates email format.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for forgot password form validation.\n */\nexport function createForgotPasswordAuthFormSchema(ui: FirebaseUI) {\n return z.object({\n email: z.email(getTranslation(ui, \"errors\", \"invalidEmail\")),\n });\n}\n\n/**\n * Creates a Zod schema for email link authentication form validation.\n *\n * Validates email format.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for email link authentication form validation.\n */\nexport function createEmailLinkAuthFormSchema(ui: FirebaseUI) {\n return z.object({\n email: z.email(getTranslation(ui, \"errors\", \"invalidEmail\")),\n });\n}\n\n/**\n * Creates a Zod schema for phone number form validation.\n *\n * Validates that the phone number is provided and has a maximum length of 10 characters.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for phone number form validation.\n */\nexport function createPhoneAuthNumberFormSchema(ui: FirebaseUI) {\n return z.object({\n phoneNumber: z\n .string()\n .min(1, getTranslation(ui, \"errors\", \"missingPhoneNumber\"))\n .max(10, getTranslation(ui, \"errors\", \"invalidPhoneNumber\")),\n });\n}\n\n/**\n * Creates a Zod schema for phone verification code form validation.\n *\n * Validates that the verification ID is provided and the verification code is at least 6 characters long.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for phone verification form validation.\n */\nexport function createPhoneAuthVerifyFormSchema(ui: FirebaseUI) {\n return z.object({\n verificationId: z.string().min(1, getTranslation(ui, \"errors\", \"missingVerificationId\")),\n verificationCode: z.string().refine((val) => !val || val.length >= 6, {\n error: getTranslation(ui, \"errors\", \"invalidVerificationCode\"),\n }),\n });\n}\n\n/**\n * Creates a Zod schema for multi-factor phone authentication number form validation.\n *\n * Extends the phone number schema with a required display name field.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for multi-factor phone authentication number form validation.\n */\nexport function createMultiFactorPhoneAuthNumberFormSchema(ui: FirebaseUI) {\n const base = createPhoneAuthNumberFormSchema(ui);\n return base.extend({\n displayName: z.string().min(1, getTranslation(ui, \"errors\", \"displayNameRequired\")),\n });\n}\n\n/**\n * Creates a Zod schema for multi-factor phone authentication assertion form validation.\n *\n * Uses the same validation as the phone number form schema.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for multi-factor phone authentication assertion form validation.\n */\nexport function createMultiFactorPhoneAuthAssertionFormSchema(ui: FirebaseUI) {\n return createPhoneAuthNumberFormSchema(ui);\n}\n\n/**\n * Creates a Zod schema for multi-factor phone authentication verification form validation.\n *\n * Uses the same validation as the phone verification form schema.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for multi-factor phone authentication verification form validation.\n */\nexport function createMultiFactorPhoneAuthVerifyFormSchema(ui: FirebaseUI) {\n return createPhoneAuthVerifyFormSchema(ui);\n}\n\n/**\n * Creates a Zod schema for multi-factor TOTP authentication number form validation.\n *\n * Validates that a display name is provided.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for multi-factor TOTP authentication number form validation.\n */\nexport function createMultiFactorTotpAuthNumberFormSchema(ui: FirebaseUI) {\n return z.object({\n displayName: z.string().min(1, getTranslation(ui, \"errors\", \"displayNameRequired\")),\n });\n}\n\n/**\n * Creates a Zod schema for multi-factor TOTP authentication verification form validation.\n *\n * Validates that the verification code is exactly 6 characters long.\n *\n * @param ui - The FirebaseUI instance.\n * @returns A Zod schema for multi-factor TOTP authentication verification form validation.\n */\nexport function createMultiFactorTotpAuthVerifyFormSchema(ui: FirebaseUI) {\n return z.object({\n verificationCode: z.string().refine((val) => val.length === 6, {\n error: getTranslation(ui, \"errors\", \"invalidVerificationCode\"),\n }),\n });\n}\n\n/** The inferred type for the sign-in authentication form schema. */\nexport type SignInAuthFormSchema = z.infer<ReturnType<typeof createSignInAuthFormSchema>>;\n/** The inferred type for the sign-up authentication form schema. */\nexport type SignUpAuthFormSchema = z.infer<ReturnType<typeof createSignUpAuthFormSchema>>;\n/** The inferred type for the forgot password authentication form schema. */\nexport type ForgotPasswordAuthFormSchema = z.infer<ReturnType<typeof createForgotPasswordAuthFormSchema>>;\n/** The inferred type for the email link authentication form schema. */\nexport type EmailLinkAuthFormSchema = z.infer<ReturnType<typeof createEmailLinkAuthFormSchema>>;\n/** The inferred type for the phone authentication number form schema. */\nexport type PhoneAuthNumberFormSchema = z.infer<ReturnType<typeof createPhoneAuthNumberFormSchema>>;\n/** The inferred type for the phone authentication verification form schema. */\nexport type PhoneAuthVerifyFormSchema = z.infer<ReturnType<typeof createPhoneAuthVerifyFormSchema>>;\n/** The inferred type for the multi-factor phone authentication number form schema. */\nexport type MultiFactorPhoneAuthNumberFormSchema = z.infer<\n ReturnType<typeof createMultiFactorPhoneAuthNumberFormSchema>\n>;\n/** The inferred type for the multi-factor TOTP authentication number form schema. */\nexport type MultiFactorTotpAuthNumberFormSchema = z.infer<ReturnType<typeof createMultiFactorTotpAuthNumberFormSchema>>;\n/** The inferred type for the multi-factor TOTP authentication verification form schema. */\nexport type MultiFactorTotpAuthVerifyFormSchema = z.infer<ReturnType<typeof createMultiFactorTotpAuthVerifyFormSchema>>;\n","/// <reference types=\"vite/client\" />\n/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport pkgJson from \"../package.json\";\nimport { registerFramework } from \"./register-framework\";\n\nexport * from \"./auth\";\nexport * from \"./behaviors\";\nexport * from \"./config\";\nexport * from \"./country-data\";\nexport * from \"./errors\";\nexport * from \"./register-framework\";\nexport * from \"./schemas\";\nexport * from \"./translations\";\n\nif (import.meta.env?.PROD) {\n registerFramework(\"core\", pkgJson.version);\n}\n"]}