@firebase-oss/ui-core 0.0.1
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.
- package/brands/apple/logo.svg +1 -0
- package/brands/facebook/logo.svg +1 -0
- package/brands/github/logo.svg +1 -0
- package/brands/google/logo.svg +1 -0
- package/brands/line/logo.svg +1 -0
- package/brands/microsoft/logo.svg +1 -0
- package/brands/snapchat/logo.svg +1 -0
- package/brands/twitter/logo.svg +1 -0
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3996 -0
- package/dist/index.d.ts +3996 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="48px" height="48px"><path fill="currentColor" d="M 44.527344 34.75 C 43.449219 37.144531 42.929688 38.214844 41.542969 40.328125 C 39.601563 43.28125 36.863281 46.96875 33.480469 46.992188 C 30.46875 47.019531 29.691406 45.027344 25.601563 45.0625 C 21.515625 45.082031 20.664063 47.03125 17.648438 47 C 14.261719 46.96875 11.671875 43.648438 9.730469 40.699219 C 4.300781 32.429688 3.726563 22.734375 7.082031 17.578125 C 9.457031 13.921875 13.210938 11.773438 16.738281 11.773438 C 20.332031 11.773438 22.589844 13.746094 25.558594 13.746094 C 28.441406 13.746094 30.195313 11.769531 34.351563 11.769531 C 37.492188 11.769531 40.8125 13.480469 43.1875 16.433594 C 35.421875 20.691406 36.683594 31.78125 44.527344 34.75 Z M 31.195313 8.46875 C 32.707031 6.527344 33.855469 3.789063 33.4375 1 C 30.972656 1.167969 28.089844 2.742188 26.40625 4.78125 C 24.878906 6.640625 23.613281 9.398438 24.105469 12.066406 C 26.796875 12.152344 29.582031 10.546875 31.195313 8.46875 Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="48px" height="48px"><path fill="currentColor" d="M25,3C12.85,3,3,12.85,3,25c0,11.03,8.125,20.137,18.712,21.728V30.831h-5.443v-5.783h5.443v-3.848 c0-6.371,3.104-9.168,8.399-9.168c2.536,0,3.877,0.188,4.512,0.274v5.048h-3.612c-2.248,0-3.033,2.131-3.033,4.533v3.161h6.588 l-0.894,5.783h-5.694v15.944C38.716,45.318,47,36.137,47,25C47,12.85,37.15,3,25,3z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="48px" height="48px" fill="currentColor"><path d="M15,3C8.373,3,3,8.373,3,15c0,5.623,3.872,10.328,9.092,11.63C12.036,26.468,12,26.28,12,26.047v-2.051 c-0.487,0-1.303,0-1.508,0c-0.821,0-1.551-0.353-1.905-1.009c-0.393-0.729-0.461-1.844-1.435-2.526 c-0.289-0.227-0.069-0.486,0.264-0.451c0.615,0.174,1.125,0.596,1.605,1.222c0.478,0.627,0.703,0.769,1.596,0.769 c0.433,0,1.081-0.025,1.691-0.121c0.328-0.833,0.895-1.6,1.588-1.962c-3.996-0.411-5.903-2.399-5.903-5.098 c0-1.162,0.495-2.286,1.336-3.233C9.053,10.647,8.706,8.73,9.435,8c1.798,0,2.885,1.166,3.146,1.481C13.477,9.174,14.461,9,15.495,9 c1.036,0,2.024,0.174,2.922,0.483C18.675,9.17,19.763,8,21.565,8c0.732,0.731,0.381,2.656,0.102,3.594 c0.836,0.945,1.328,2.066,1.328,3.226c0,2.697-1.904,4.684-5.894,5.097C18.199,20.49,19,22.1,19,23.313v2.734 c0,0.104-0.023,0.179-0.035,0.268C23.641,24.676,27,20.236,27,15C27,8.373,21.627,3,15,3z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#FFC107" d="M43.611,20.083H42V20H24v8h11.303c-1.649,4.657-6.08,8-11.303,8c-6.627,0-12-5.373-12-12c0-6.627,5.373-12,12-12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C12.955,4,4,12.955,4,24c0,11.045,8.955,20,20,20c11.045,0,20-8.955,20-20C44,22.659,43.862,21.35,43.611,20.083z"/><path fill="#FF3D00" d="M6.306,14.691l6.571,4.819C14.655,15.108,18.961,12,24,12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C16.318,4,9.656,8.337,6.306,14.691z"/><path fill="#4CAF50" d="M24,44c5.166,0,9.86-1.977,13.409-5.192l-6.19-5.238C29.211,35.091,26.715,36,24,36c-5.202,0-9.619-3.317-11.283-7.946l-6.522,5.025C9.505,39.556,16.227,44,24,44z"/><path fill="#1976D2" d="M43.611,20.083H42V20H24v8h11.303c-0.792,2.237-2.231,4.166-4.087,5.571c0.001-0.001,0.002-0.001,0.003-0.002l6.19,5.238C36.971,39.205,44,34,44,24C44,22.659,43.862,21.35,43.611,20.083z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#00c300" d="M12.5,42h23c3.59,0,6.5-2.91,6.5-6.5v-23C42,8.91,39.09,6,35.5,6h-23C8.91,6,6,8.91,6,12.5v23C6,39.09,8.91,42,12.5,42z"/><path fill="#fff" d="M37.113,22.417c0-5.865-5.88-10.637-13.107-10.637s-13.108,4.772-13.108,10.637c0,5.258,4.663,9.662,10.962,10.495c0.427,0.092,1.008,0.282,1.155,0.646c0.132,0.331,0.086,0.85,0.042,1.185c0,0-0.153,0.925-0.187,1.122c-0.057,0.331-0.263,1.296,1.135,0.707c1.399-0.589,7.548-4.445,10.298-7.611h-0.001C36.203,26.879,37.113,24.764,37.113,22.417z M18.875,25.907h-2.604c-0.379,0-0.687-0.308-0.687-0.688V20.01c0-0.379,0.308-0.687,0.687-0.687c0.379,0,0.687,0.308,0.687,0.687v4.521h1.917c0.379,0,0.687,0.308,0.687,0.687C19.562,25.598,19.254,25.907,18.875,25.907z M21.568,25.219c0,0.379-0.308,0.688-0.687,0.688s-0.687-0.308-0.687-0.688V20.01c0-0.379,0.308-0.687,0.687-0.687s0.687,0.308,0.687,0.687V25.219z M27.838,25.219c0,0.297-0.188,0.559-0.47,0.652c-0.071,0.024-0.145,0.036-0.218,0.036c-0.215,0-0.42-0.103-0.549-0.275l-2.669-3.635v3.222c0,0.379-0.308,0.688-0.688,0.688c-0.379,0-0.688-0.308-0.688-0.688V20.01c0-0.296,0.189-0.558,0.47-0.652c0.071-0.024,0.144-0.035,0.218-0.035c0.214,0,0.42,0.103,0.549,0.275l2.67,3.635V20.01c0-0.379,0.309-0.687,0.688-0.687c0.379,0,0.687,0.308,0.687,0.687V25.219z M32.052,21.927c0.379,0,0.688,0.308,0.688,0.688c0,0.379-0.308,0.687-0.688,0.687h-1.917v1.23h1.917c0.379,0,0.688,0.308,0.688,0.687c0,0.379-0.309,0.688-0.688,0.688h-2.604c-0.378,0-0.687-0.308-0.687-0.688v-2.603c0-0.001,0-0.001,0-0.001c0,0,0-0.001,0-0.001v-2.601c0-0.001,0-0.001,0-0.002c0-0.379,0.308-0.687,0.687-0.687h2.604c0.379,0,0.688,0.308,0.688,0.687s-0.308,0.687-0.688,0.687h-1.917v1.23H32.052z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#ff5722" d="M6 6H22V22H6z" transform="rotate(-180 14 14)"/><path fill="#4caf50" d="M26 6H42V22H26z" transform="rotate(-180 34 14)"/><path fill="#ffc107" d="M26 26H42V42H26z" transform="rotate(-180 34 34)"/><path fill="#03a9f4" d="M6 26H22V42H6z" transform="rotate(-180 14 34)"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="48px" height="48px"><path fill="currentColor" d="M 46.773438 35.078125 C 40.96875 34.121094 38.316406 28.109375 38.230469 27.914063 C 38.21875 27.878906 38.191406 27.816406 38.175781 27.78125 C 38 27.429688 37.824219 26.933594 37.972656 26.582031 C 38.226563 25.980469 39.433594 25.597656 40.15625 25.367188 C 40.410156 25.285156 40.652344 25.210938 40.839844 25.136719 C 42.59375 24.441406 43.46875 23.535156 43.449219 22.433594 C 43.433594 21.546875 42.753906 20.734375 41.753906 20.382813 C 41.40625 20.234375 41.007813 20.160156 40.605469 20.160156 C 40.332031 20.160156 39.917969 20.199219 39.519531 20.382813 C 38.851563 20.695313 38.265625 20.863281 37.847656 20.882813 C 37.757813 20.878906 37.679688 20.871094 37.613281 20.859375 L 37.65625 20.171875 C 37.851563 17.0625 38.097656 13.1875 37.046875 10.832031 C 33.945313 3.890625 27.375 3.351563 25.433594 3.351563 L 24.550781 3.359375 C 22.613281 3.359375 16.054688 3.898438 12.960938 10.835938 C 11.910156 13.191406 12.152344 17.0625 12.351563 20.175781 L 12.359375 20.292969 C 12.371094 20.484375 12.382813 20.675781 12.394531 20.859375 C 11.960938 20.9375 11.113281 20.792969 10.234375 20.382813 C 9.039063 19.824219 6.886719 20.5625 6.589844 22.125 C 6.457031 22.816406 6.617188 24.128906 9.164063 25.132813 C 9.355469 25.210938 9.59375 25.285156 9.851563 25.367188 C 10.570313 25.597656 11.777344 25.976563 12.03125 26.582031 C 12.179688 26.933594 12.003906 27.429688 11.796875 27.855469 C 11.6875 28.109375 9.050781 34.121094 3.234375 35.078125 C 2.492188 35.199219 1.964844 35.855469 2.003906 36.613281 C 2.015625 36.8125 2.066406 37.011719 2.148438 37.207031 C 2.675781 38.445313 4.59375 39.296875 8.171875 39.878906 C 8.234375 40.089844 8.304688 40.402344 8.34375 40.574219 C 8.417969 40.929688 8.5 41.289063 8.609375 41.664063 C 8.714844 42.019531 9.078125 42.84375 10.210938 42.84375 C 10.554688 42.84375 10.929688 42.769531 11.332031 42.691406 C 11.925781 42.574219 12.667969 42.429688 13.621094 42.429688 C 14.152344 42.429688 14.699219 42.476563 15.25 42.566406 C 16.265625 42.734375 17.183594 43.386719 18.25 44.136719 C 19.914063 45.316406 21.800781 46.648438 24.726563 46.648438 C 24.804688 46.648438 24.882813 46.644531 24.957031 46.640625 C 25.0625 46.644531 25.171875 46.648438 25.28125 46.648438 C 28.207031 46.648438 30.09375 45.3125 31.761719 44.136719 C 32.777344 43.414063 33.738281 42.738281 34.757813 42.566406 C 35.308594 42.476563 35.855469 42.429688 36.386719 42.429688 C 37.304688 42.429688 38.03125 42.546875 38.679688 42.675781 C 39.140625 42.765625 39.507813 42.808594 39.847656 42.808594 C 40.605469 42.808594 41.1875 42.375 41.398438 41.648438 C 41.507813 41.28125 41.585938 40.925781 41.664063 40.566406 C 41.695313 40.433594 41.769531 40.097656 41.835938 39.875 C 45.414063 39.292969 47.332031 38.441406 47.855469 37.214844 C 47.941406 37.019531 47.988281 36.816406 48.003906 36.605469 C 48.042969 35.859375 47.515625 35.203125 46.773438 35.078125 Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="48px" height="48px" fill="currentColor"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z"/></svg>
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var app=require('firebase/app'),auth=require('firebase/auth'),Fe=require('qrcode-generator'),uiTranslations=require('@firebase-oss/ui-translations'),libphonenumberJs=require('libphonenumber-js'),nanostores=require('nanostores'),n=require('zod');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Fe__default=/*#__PURE__*/_interopDefault(Fe);var n__namespace=/*#__PURE__*/_interopNamespace(n);function F(e,o){app.registerVersion("firebase-ui-web",o,e);}var A={version:"0.0.1"};function s(e,o,a){return uiTranslations.getTranslation(e.locale,o,a)}var j=class e extends app.FirebaseError{constructor(o,a){let r=s(o,"errors",uiTranslations.ERROR_CODE_MAP[a.code]);super(a.code,r||a.message),Object.setPrototypeOf(this,e.prototype);}};function l(e,o){if(!J(o))throw o;if(o.code==="auth/account-exists-with-different-credential"&&Z(o)&&window.sessionStorage.setItem("pendingCred",JSON.stringify(o.credential.toJSON())),o.code==="auth/multi-factor-auth-required"){let a=auth.getMultiFactorResolver(e.auth,o);e.setMultiFactorResolver(a);}throw new j(e,o)}function J(e){return !!e&&typeof e=="object"&&"code"in e&&"message"in e}function Z(e){return "credential"in e}var T=async(e,o,a)=>{let r=e.auth.currentUser;if(!r?.isAnonymous)return;let t=r.uid,i=await auth.linkWithCredential(r,o);return a&&await a(e,t,i),i},x=async(e,o,a)=>{let r=e.auth.currentUser;if(!r?.isAnonymous)return;let t=r.uid;window.localStorage.setItem("fbui:upgrade:oldUserId",t);let i=await p(e,"providerLinkStrategy")(e,r,o);return window.localStorage.removeItem("fbui:upgrade:oldUserId"),a&&await a(e,t,i),i},P=async(e,o,a)=>{let r=window.localStorage.getItem("fbui:upgrade:oldUserId");r&&window.localStorage.removeItem("fbui:upgrade:oldUserId"),!(!a||!r||!o)&&await a(e,r,o);};var R=async e=>{let o=e.auth;o.currentUser||await auth.signInAnonymously(o);};var w=(e,o,a)=>new auth.RecaptchaVerifier(e.auth,o,{size:a?.size??"invisible",theme:a?.theme??"light",tabindex:a?.tabindex??0});var H=async(e,o)=>auth.signInWithRedirect(e.auth,o),M=async(e,o)=>auth.signInWithPopup(e.auth,o),B=async(e,o,a)=>auth.linkWithRedirect(o,a),E=async(e,o,a)=>auth.linkWithPopup(o,a);var N=async(e,o)=>{if(e.auth.currentUser&&!e.auth.currentUser.isAnonymous||document.querySelector("script[data-one-tap-sign-in]"))return;let a=document.createElement("script");a.setAttribute("data-one-tap-sign-in","true"),a.src="https://accounts.google.com/gsi/client",a.async=true,a.onload=()=>{window.google.accounts.id.initialize({client_id:o.clientId,auto_select:o.autoSelect,cancel_on_tap_outside:o.cancelOnTapOutside,context:o.context,ux_mode:o.uxMode,log_level:o.logLevel,callback:async r=>{let t=auth.GoogleAuthProvider.credential(r.credential);await I(e,t);}}),window.google.accounts.id.prompt();},document.body.appendChild(a);};var L=async(e,o,a)=>{await auth.updateProfile(o,{displayName:a});};var g=[{name:"Afghanistan",dialCode:"+93",code:"AF",emoji:"\u{1F1E6}\u{1F1EB}"},{name:"Albania",dialCode:"+355",code:"AL",emoji:"\u{1F1E6}\u{1F1F1}"},{name:"Algeria",dialCode:"+213",code:"DZ",emoji:"\u{1F1E9}\u{1F1FF}"},{name:"American Samoa",dialCode:"+1",code:"AS",emoji:"\u{1F1E6}\u{1F1F8}"},{name:"Andorra",dialCode:"+376",code:"AD",emoji:"\u{1F1E6}\u{1F1E9}"},{name:"Angola",dialCode:"+244",code:"AO",emoji:"\u{1F1E6}\u{1F1F4}"},{name:"Anguilla",dialCode:"+1",code:"AI",emoji:"\u{1F1E6}\u{1F1EE}"},{name:"Antigua and Barbuda",dialCode:"+1",code:"AG",emoji:"\u{1F1E6}\u{1F1EC}"},{name:"Argentina",dialCode:"+54",code:"AR",emoji:"\u{1F1E6}\u{1F1F7}"},{name:"Armenia",dialCode:"+374",code:"AM",emoji:"\u{1F1E6}\u{1F1F2}"},{name:"Aruba",dialCode:"+297",code:"AW",emoji:"\u{1F1E6}\u{1F1FC}"},{name:"Ascension Island",dialCode:"+247",code:"AC",emoji:"\u{1F1E6}\u{1F1E8}"},{name:"Australia",dialCode:"+61",code:"AU",emoji:"\u{1F1E6}\u{1F1FA}"},{name:"Austria",dialCode:"+43",code:"AT",emoji:"\u{1F1E6}\u{1F1F9}"},{name:"Azerbaijan",dialCode:"+994",code:"AZ",emoji:"\u{1F1E6}\u{1F1FF}"},{name:"Bahamas",dialCode:"+1",code:"BS",emoji:"\u{1F1E7}\u{1F1F8}"},{name:"Bahrain",dialCode:"+973",code:"BH",emoji:"\u{1F1E7}\u{1F1ED}"},{name:"Bangladesh",dialCode:"+880",code:"BD",emoji:"\u{1F1E7}\u{1F1E9}"},{name:"Barbados",dialCode:"+1",code:"BB",emoji:"\u{1F1E7}\u{1F1E7}"},{name:"Belarus",dialCode:"+375",code:"BY",emoji:"\u{1F1E7}\u{1F1FE}"},{name:"Belgium",dialCode:"+32",code:"BE",emoji:"\u{1F1E7}\u{1F1EA}"},{name:"Belize",dialCode:"+501",code:"BZ",emoji:"\u{1F1E7}\u{1F1FF}"},{name:"Benin",dialCode:"+229",code:"BJ",emoji:"\u{1F1E7}\u{1F1EF}"},{name:"Bermuda",dialCode:"+1",code:"BM",emoji:"\u{1F1E7}\u{1F1F2}"},{name:"Bhutan",dialCode:"+975",code:"BT",emoji:"\u{1F1E7}\u{1F1F9}"},{name:"Bolivia",dialCode:"+591",code:"BO",emoji:"\u{1F1E7}\u{1F1F4}"},{name:"Bosnia and Herzegovina",dialCode:"+387",code:"BA",emoji:"\u{1F1E7}\u{1F1E6}"},{name:"Botswana",dialCode:"+267",code:"BW",emoji:"\u{1F1E7}\u{1F1FC}"},{name:"Brazil",dialCode:"+55",code:"BR",emoji:"\u{1F1E7}\u{1F1F7}"},{name:"British Indian Ocean Territory",dialCode:"+246",code:"IO",emoji:"\u{1F1EE}\u{1F1F4}"},{name:"British Virgin Islands",dialCode:"+1",code:"VG",emoji:"\u{1F1FB}\u{1F1EC}"},{name:"Brunei",dialCode:"+673",code:"BN",emoji:"\u{1F1E7}\u{1F1F3}"},{name:"Bulgaria",dialCode:"+359",code:"BG",emoji:"\u{1F1E7}\u{1F1EC}"},{name:"Burkina Faso",dialCode:"+226",code:"BF",emoji:"\u{1F1E7}\u{1F1EB}"},{name:"Burundi",dialCode:"+257",code:"BI",emoji:"\u{1F1E7}\u{1F1EE}"},{name:"Cambodia",dialCode:"+855",code:"KH",emoji:"\u{1F1F0}\u{1F1ED}"},{name:"Cameroon",dialCode:"+237",code:"CM",emoji:"\u{1F1E8}\u{1F1F2}"},{name:"Canada",dialCode:"+1",code:"CA",emoji:"\u{1F1E8}\u{1F1E6}"},{name:"Cape Verde",dialCode:"+238",code:"CV",emoji:"\u{1F1E8}\u{1F1FB}"},{name:"Caribbean Netherlands",dialCode:"+599",code:"BQ",emoji:"\u{1F1E7}\u{1F1F6}"},{name:"Cayman Islands",dialCode:"+1",code:"KY",emoji:"\u{1F1F0}\u{1F1FE}"},{name:"Central African Republic",dialCode:"+236",code:"CF",emoji:"\u{1F1E8}\u{1F1EB}"},{name:"Chad",dialCode:"+235",code:"TD",emoji:"\u{1F1F9}\u{1F1E9}"},{name:"Chile",dialCode:"+56",code:"CL",emoji:"\u{1F1E8}\u{1F1F1}"},{name:"China",dialCode:"+86",code:"CN",emoji:"\u{1F1E8}\u{1F1F3}"},{name:"Christmas Island",dialCode:"+61",code:"CX",emoji:"\u{1F1E8}\u{1F1FD}"},{name:"Cocos [Keeling] Islands",dialCode:"+61",code:"CC",emoji:"\u{1F1E8}\u{1F1E8}"},{name:"Colombia",dialCode:"+57",code:"CO",emoji:"\u{1F1E8}\u{1F1F4}"},{name:"Comoros",dialCode:"+269",code:"KM",emoji:"\u{1F1F0}\u{1F1F2}"},{name:"Democratic Republic Congo",dialCode:"+243",code:"CD",emoji:"\u{1F1E8}\u{1F1E9}"},{name:"Republic of Congo",dialCode:"+242",code:"CG",emoji:"\u{1F1E8}\u{1F1EC}"},{name:"Cook Islands",dialCode:"+682",code:"CK",emoji:"\u{1F1E8}\u{1F1F0}"},{name:"Costa Rica",dialCode:"+506",code:"CR",emoji:"\u{1F1E8}\u{1F1F7}"},{name:"C\xF4te d'Ivoire",dialCode:"+225",code:"CI",emoji:"\u{1F1E8}\u{1F1EE}"},{name:"Croatia",dialCode:"+385",code:"HR",emoji:"\u{1F1ED}\u{1F1F7}"},{name:"Cuba",dialCode:"+53",code:"CU",emoji:"\u{1F1E8}\u{1F1FA}"},{name:"Cura\xE7ao",dialCode:"+599",code:"CW",emoji:"\u{1F1E8}\u{1F1FC}"},{name:"Cyprus",dialCode:"+357",code:"CY",emoji:"\u{1F1E8}\u{1F1FE}"},{name:"Czech Republic",dialCode:"+420",code:"CZ",emoji:"\u{1F1E8}\u{1F1FF}"},{name:"Denmark",dialCode:"+45",code:"DK",emoji:"\u{1F1E9}\u{1F1F0}"},{name:"Djibouti",dialCode:"+253",code:"DJ",emoji:"\u{1F1E9}\u{1F1EF}"},{name:"Dominica",dialCode:"+1",code:"DM",emoji:"\u{1F1E9}\u{1F1F2}"},{name:"Dominican Republic",dialCode:"+1",code:"DO",emoji:"\u{1F1E9}\u{1F1F4}"},{name:"East Timor",dialCode:"+670",code:"TL",emoji:"\u{1F1F9}\u{1F1F1}"},{name:"Ecuador",dialCode:"+593",code:"EC",emoji:"\u{1F1EA}\u{1F1E8}"},{name:"Egypt",dialCode:"+20",code:"EG",emoji:"\u{1F1EA}\u{1F1EC}"},{name:"El Salvador",dialCode:"+503",code:"SV",emoji:"\u{1F1F8}\u{1F1FB}"},{name:"Equatorial Guinea",dialCode:"+240",code:"GQ",emoji:"\u{1F1EC}\u{1F1F6}"},{name:"Eritrea",dialCode:"+291",code:"ER",emoji:"\u{1F1EA}\u{1F1F7}"},{name:"Estonia",dialCode:"+372",code:"EE",emoji:"\u{1F1EA}\u{1F1EA}"},{name:"Ethiopia",dialCode:"+251",code:"ET",emoji:"\u{1F1EA}\u{1F1F9}"},{name:"Falkland Islands [Islas Malvinas]",dialCode:"+500",code:"FK",emoji:"\u{1F1EB}\u{1F1F0}"},{name:"Faroe Islands",dialCode:"+298",code:"FO",emoji:"\u{1F1EB}\u{1F1F4}"},{name:"Fiji",dialCode:"+679",code:"FJ",emoji:"\u{1F1EB}\u{1F1EF}"},{name:"Finland",dialCode:"+358",code:"FI",emoji:"\u{1F1EB}\u{1F1EE}"},{name:"France",dialCode:"+33",code:"FR",emoji:"\u{1F1EB}\u{1F1F7}"},{name:"French Guiana",dialCode:"+594",code:"GF",emoji:"\u{1F1EC}\u{1F1EB}"},{name:"French Polynesia",dialCode:"+689",code:"PF",emoji:"\u{1F1F5}\u{1F1EB}"},{name:"Gabon",dialCode:"+241",code:"GA",emoji:"\u{1F1EC}\u{1F1E6}"},{name:"Gambia",dialCode:"+220",code:"GM",emoji:"\u{1F1EC}\u{1F1F2}"},{name:"Georgia",dialCode:"+995",code:"GE",emoji:"\u{1F1EC}\u{1F1EA}"},{name:"Germany",dialCode:"+49",code:"DE",emoji:"\u{1F1E9}\u{1F1EA}"},{name:"Ghana",dialCode:"+233",code:"GH",emoji:"\u{1F1EC}\u{1F1ED}"},{name:"Gibraltar",dialCode:"+350",code:"GI",emoji:"\u{1F1EC}\u{1F1EE}"},{name:"Greece",dialCode:"+30",code:"GR",emoji:"\u{1F1EC}\u{1F1F7}"},{name:"Greenland",dialCode:"+299",code:"GL",emoji:"\u{1F1EC}\u{1F1F1}"},{name:"Grenada",dialCode:"+1",code:"GD",emoji:"\u{1F1EC}\u{1F1E9}"},{name:"Guadeloupe",dialCode:"+590",code:"GP",emoji:"\u{1F1EC}\u{1F1F5}"},{name:"Guam",dialCode:"+1",code:"GU",emoji:"\u{1F1EC}\u{1F1FA}"},{name:"Guatemala",dialCode:"+502",code:"GT",emoji:"\u{1F1EC}\u{1F1F9}"},{name:"Guernsey",dialCode:"+44",code:"GG",emoji:"\u{1F1EC}\u{1F1EC}"},{name:"Guinea Conakry",dialCode:"+224",code:"GN",emoji:"\u{1F1EC}\u{1F1F3}"},{name:"Guinea-Bissau",dialCode:"+245",code:"GW",emoji:"\u{1F1EC}\u{1F1FC}"},{name:"Guyana",dialCode:"+592",code:"GY",emoji:"\u{1F1EC}\u{1F1FE}"},{name:"Haiti",dialCode:"+509",code:"HT",emoji:"\u{1F1ED}\u{1F1F9}"},{name:"Honduras",dialCode:"+504",code:"HN",emoji:"\u{1F1ED}\u{1F1F3}"},{name:"Hong Kong",dialCode:"+852",code:"HK",emoji:"\u{1F1ED}\u{1F1F0}"},{name:"Hungary",dialCode:"+36",code:"HU",emoji:"\u{1F1ED}\u{1F1FA}"},{name:"Iceland",dialCode:"+354",code:"IS",emoji:"\u{1F1EE}\u{1F1F8}"},{name:"India",dialCode:"+91",code:"IN",emoji:"\u{1F1EE}\u{1F1F3}"},{name:"Indonesia",dialCode:"+62",code:"ID",emoji:"\u{1F1EE}\u{1F1E9}"},{name:"Iran",dialCode:"+98",code:"IR",emoji:"\u{1F1EE}\u{1F1F7}"},{name:"Iraq",dialCode:"+964",code:"IQ",emoji:"\u{1F1EE}\u{1F1F6}"},{name:"Ireland",dialCode:"+353",code:"IE",emoji:"\u{1F1EE}\u{1F1EA}"},{name:"Isle of Man",dialCode:"+44",code:"IM",emoji:"\u{1F1EE}\u{1F1F2}"},{name:"Israel",dialCode:"+972",code:"IL",emoji:"\u{1F1EE}\u{1F1F1}"},{name:"Italy",dialCode:"+39",code:"IT",emoji:"\u{1F1EE}\u{1F1F9}"},{name:"Jamaica",dialCode:"+1",code:"JM",emoji:"\u{1F1EF}\u{1F1F2}"},{name:"Japan",dialCode:"+81",code:"JP",emoji:"\u{1F1EF}\u{1F1F5}"},{name:"Jersey",dialCode:"+44",code:"JE",emoji:"\u{1F1EF}\u{1F1EA}"},{name:"Jordan",dialCode:"+962",code:"JO",emoji:"\u{1F1EF}\u{1F1F4}"},{name:"Kazakhstan",dialCode:"+7",code:"KZ",emoji:"\u{1F1F0}\u{1F1FF}"},{name:"Kenya",dialCode:"+254",code:"KE",emoji:"\u{1F1F0}\u{1F1EA}"},{name:"Kiribati",dialCode:"+686",code:"KI",emoji:"\u{1F1F0}\u{1F1EE}"},{name:"Kosovo",dialCode:"+377",code:"XK",emoji:"\u{1F1FD}\u{1F1F0}"},{name:"Kosovo",dialCode:"+381",code:"XK",emoji:"\u{1F1FD}\u{1F1F0}"},{name:"Kosovo",dialCode:"+386",code:"XK",emoji:"\u{1F1FD}\u{1F1F0}"},{name:"Kuwait",dialCode:"+965",code:"KW",emoji:"\u{1F1F0}\u{1F1FC}"},{name:"Kyrgyzstan",dialCode:"+996",code:"KG",emoji:"\u{1F1F0}\u{1F1EC}"},{name:"Laos",dialCode:"+856",code:"LA",emoji:"\u{1F1F1}\u{1F1E6}"},{name:"Latvia",dialCode:"+371",code:"LV",emoji:"\u{1F1F1}\u{1F1FB}"},{name:"Lebanon",dialCode:"+961",code:"LB",emoji:"\u{1F1F1}\u{1F1E7}"},{name:"Lesotho",dialCode:"+266",code:"LS",emoji:"\u{1F1F1}\u{1F1F8}"},{name:"Liberia",dialCode:"+231",code:"LR",emoji:"\u{1F1F1}\u{1F1F7}"},{name:"Libya",dialCode:"+218",code:"LY",emoji:"\u{1F1F1}\u{1F1FE}"},{name:"Liechtenstein",dialCode:"+423",code:"LI",emoji:"\u{1F1F1}\u{1F1EE}"},{name:"Lithuania",dialCode:"+370",code:"LT",emoji:"\u{1F1F1}\u{1F1F9}"},{name:"Luxembourg",dialCode:"+352",code:"LU",emoji:"\u{1F1F1}\u{1F1FA}"},{name:"Macau",dialCode:"+853",code:"MO",emoji:"\u{1F1F2}\u{1F1F4}"},{name:"Macedonia",dialCode:"+389",code:"MK",emoji:"\u{1F1F2}\u{1F1F0}"},{name:"Madagascar",dialCode:"+261",code:"MG",emoji:"\u{1F1F2}\u{1F1EC}"},{name:"Malawi",dialCode:"+265",code:"MW",emoji:"\u{1F1F2}\u{1F1FC}"},{name:"Malaysia",dialCode:"+60",code:"MY",emoji:"\u{1F1F2}\u{1F1FE}"},{name:"Maldives",dialCode:"+960",code:"MV",emoji:"\u{1F1F2}\u{1F1FB}"},{name:"Mali",dialCode:"+223",code:"ML",emoji:"\u{1F1F2}\u{1F1F1}"},{name:"Malta",dialCode:"+356",code:"MT",emoji:"\u{1F1F2}\u{1F1F9}"},{name:"Marshall Islands",dialCode:"+692",code:"MH",emoji:"\u{1F1F2}\u{1F1ED}"},{name:"Martinique",dialCode:"+596",code:"MQ",emoji:"\u{1F1F2}\u{1F1F6}"},{name:"Mauritania",dialCode:"+222",code:"MR",emoji:"\u{1F1F2}\u{1F1F7}"},{name:"Mauritius",dialCode:"+230",code:"MU",emoji:"\u{1F1F2}\u{1F1FA}"},{name:"Mayotte",dialCode:"+262",code:"YT",emoji:"\u{1F1FE}\u{1F1F9}"},{name:"Mexico",dialCode:"+52",code:"MX",emoji:"\u{1F1F2}\u{1F1FD}"},{name:"Micronesia",dialCode:"+691",code:"FM",emoji:"\u{1F1EB}\u{1F1F2}"},{name:"Moldova",dialCode:"+373",code:"MD",emoji:"\u{1F1F2}\u{1F1E9}"},{name:"Monaco",dialCode:"+377",code:"MC",emoji:"\u{1F1F2}\u{1F1E8}"},{name:"Mongolia",dialCode:"+976",code:"MN",emoji:"\u{1F1F2}\u{1F1F3}"},{name:"Montenegro",dialCode:"+382",code:"ME",emoji:"\u{1F1F2}\u{1F1EA}"},{name:"Montserrat",dialCode:"+1",code:"MS",emoji:"\u{1F1F2}\u{1F1F8}"},{name:"Morocco",dialCode:"+212",code:"MA",emoji:"\u{1F1F2}\u{1F1E6}"},{name:"Mozambique",dialCode:"+258",code:"MZ",emoji:"\u{1F1F2}\u{1F1FF}"},{name:"Myanmar [Burma]",dialCode:"+95",code:"MM",emoji:"\u{1F1F2}\u{1F1F2}"},{name:"Namibia",dialCode:"+264",code:"NA",emoji:"\u{1F1F3}\u{1F1E6}"},{name:"Nauru",dialCode:"+674",code:"NR",emoji:"\u{1F1F3}\u{1F1F7}"},{name:"Nepal",dialCode:"+977",code:"NP",emoji:"\u{1F1F3}\u{1F1F5}"},{name:"Netherlands",dialCode:"+31",code:"NL",emoji:"\u{1F1F3}\u{1F1F1}"},{name:"New Caledonia",dialCode:"+687",code:"NC",emoji:"\u{1F1F3}\u{1F1E8}"},{name:"New Zealand",dialCode:"+64",code:"NZ",emoji:"\u{1F1F3}\u{1F1FF}"},{name:"Nicaragua",dialCode:"+505",code:"NI",emoji:"\u{1F1F3}\u{1F1EE}"},{name:"Niger",dialCode:"+227",code:"NE",emoji:"\u{1F1F3}\u{1F1EA}"},{name:"Nigeria",dialCode:"+234",code:"NG",emoji:"\u{1F1F3}\u{1F1EC}"},{name:"Niue",dialCode:"+683",code:"NU",emoji:"\u{1F1F3}\u{1F1FA}"},{name:"Norfolk Island",dialCode:"+672",code:"NF",emoji:"\u{1F1F3}\u{1F1EB}"},{name:"North Korea",dialCode:"+850",code:"KP",emoji:"\u{1F1F0}\u{1F1F5}"},{name:"Northern Mariana Islands",dialCode:"+1",code:"MP",emoji:"\u{1F1F2}\u{1F1F5}"},{name:"Norway",dialCode:"+47",code:"NO",emoji:"\u{1F1F3}\u{1F1F4}"},{name:"Oman",dialCode:"+968",code:"OM",emoji:"\u{1F1F4}\u{1F1F2}"},{name:"Pakistan",dialCode:"+92",code:"PK",emoji:"\u{1F1F5}\u{1F1F0}"},{name:"Palau",dialCode:"+680",code:"PW",emoji:"\u{1F1F5}\u{1F1FC}"},{name:"Palestinian Territories",dialCode:"+970",code:"PS",emoji:"\u{1F1F5}\u{1F1F8}"},{name:"Panama",dialCode:"+507",code:"PA",emoji:"\u{1F1F5}\u{1F1E6}"},{name:"Papua New Guinea",dialCode:"+675",code:"PG",emoji:"\u{1F1F5}\u{1F1EC}"},{name:"Paraguay",dialCode:"+595",code:"PY",emoji:"\u{1F1F5}\u{1F1FE}"},{name:"Peru",dialCode:"+51",code:"PE",emoji:"\u{1F1F5}\u{1F1EA}"},{name:"Philippines",dialCode:"+63",code:"PH",emoji:"\u{1F1F5}\u{1F1ED}"},{name:"Poland",dialCode:"+48",code:"PL",emoji:"\u{1F1F5}\u{1F1F1}"},{name:"Portugal",dialCode:"+351",code:"PT",emoji:"\u{1F1F5}\u{1F1F9}"},{name:"Puerto Rico",dialCode:"+1",code:"PR",emoji:"\u{1F1F5}\u{1F1F7}"},{name:"Qatar",dialCode:"+974",code:"QA",emoji:"\u{1F1F6}\u{1F1E6}"},{name:"R\xE9union",dialCode:"+262",code:"RE",emoji:"\u{1F1F7}\u{1F1EA}"},{name:"Romania",dialCode:"+40",code:"RO",emoji:"\u{1F1F7}\u{1F1F4}"},{name:"Russia",dialCode:"+7",code:"RU",emoji:"\u{1F1F7}\u{1F1FA}"},{name:"Rwanda",dialCode:"+250",code:"RW",emoji:"\u{1F1F7}\u{1F1FC}"},{name:"Saint Barth\xE9lemy",dialCode:"+590",code:"BL",emoji:"\u{1F1E7}\u{1F1F1}"},{name:"Saint Helena",dialCode:"+290",code:"SH",emoji:"\u{1F1F8}\u{1F1ED}"},{name:"St. Kitts",dialCode:"+1",code:"KN",emoji:"\u{1F1F0}\u{1F1F3}"},{name:"St. Lucia",dialCode:"+1",code:"LC",emoji:"\u{1F1F1}\u{1F1E8}"},{name:"Saint Martin",dialCode:"+590",code:"MF",emoji:"\u{1F1F2}\u{1F1EB}"},{name:"Saint Pierre and Miquelon",dialCode:"+508",code:"PM",emoji:"\u{1F1F5}\u{1F1F2}"},{name:"St. Vincent",dialCode:"+1",code:"VC",emoji:"\u{1F1FB}\u{1F1E8}"},{name:"Samoa",dialCode:"+685",code:"WS",emoji:"\u{1F1FC}\u{1F1F8}"},{name:"San Marino",dialCode:"+378",code:"SM",emoji:"\u{1F1F8}\u{1F1F2}"},{name:"S\xE3o Tom\xE9 and Pr\xEDncipe",dialCode:"+239",code:"ST",emoji:"\u{1F1F8}\u{1F1F9}"},{name:"Saudi Arabia",dialCode:"+966",code:"SA",emoji:"\u{1F1F8}\u{1F1E6}"},{name:"Senegal",dialCode:"+221",code:"SN",emoji:"\u{1F1F8}\u{1F1F3}"},{name:"Serbia",dialCode:"+381",code:"RS",emoji:"\u{1F1F7}\u{1F1F8}"},{name:"Seychelles",dialCode:"+248",code:"SC",emoji:"\u{1F1F8}\u{1F1E8}"},{name:"Sierra Leone",dialCode:"+232",code:"SL",emoji:"\u{1F1F8}\u{1F1F1}"},{name:"Singapore",dialCode:"+65",code:"SG",emoji:"\u{1F1F8}\u{1F1EC}"},{name:"Sint Maarten",dialCode:"+1",code:"SX",emoji:"\u{1F1F8}\u{1F1FD}"},{name:"Slovakia",dialCode:"+421",code:"SK",emoji:"\u{1F1F8}\u{1F1F0}"},{name:"Slovenia",dialCode:"+386",code:"SI",emoji:"\u{1F1F8}\u{1F1EE}"},{name:"Solomon Islands",dialCode:"+677",code:"SB",emoji:"\u{1F1F8}\u{1F1E7}"},{name:"Somalia",dialCode:"+252",code:"SO",emoji:"\u{1F1F8}\u{1F1F4}"},{name:"South Africa",dialCode:"+27",code:"ZA",emoji:"\u{1F1FF}\u{1F1E6}"},{name:"South Korea",dialCode:"+82",code:"KR",emoji:"\u{1F1F0}\u{1F1F7}"},{name:"South Sudan",dialCode:"+211",code:"SS",emoji:"\u{1F1F8}\u{1F1F8}"},{name:"Spain",dialCode:"+34",code:"ES",emoji:"\u{1F1EA}\u{1F1F8}"},{name:"Sri Lanka",dialCode:"+94",code:"LK",emoji:"\u{1F1F1}\u{1F1F0}"},{name:"Sudan",dialCode:"+249",code:"SD",emoji:"\u{1F1F8}\u{1F1E9}"},{name:"Suriname",dialCode:"+597",code:"SR",emoji:"\u{1F1F8}\u{1F1F7}"},{name:"Svalbard and Jan Mayen",dialCode:"+47",code:"SJ",emoji:"\u{1F1F8}\u{1F1EF}"},{name:"Swaziland",dialCode:"+268",code:"SZ",emoji:"\u{1F1F8}\u{1F1FF}"},{name:"Sweden",dialCode:"+46",code:"SE",emoji:"\u{1F1F8}\u{1F1EA}"},{name:"Switzerland",dialCode:"+41",code:"CH",emoji:"\u{1F1E8}\u{1F1ED}"},{name:"Syria",dialCode:"+963",code:"SY",emoji:"\u{1F1F8}\u{1F1FE}"},{name:"Taiwan",dialCode:"+886",code:"TW",emoji:"\u{1F1F9}\u{1F1FC}"},{name:"Tajikistan",dialCode:"+992",code:"TJ",emoji:"\u{1F1F9}\u{1F1EF}"},{name:"Tanzania",dialCode:"+255",code:"TZ",emoji:"\u{1F1F9}\u{1F1FF}"},{name:"Thailand",dialCode:"+66",code:"TH",emoji:"\u{1F1F9}\u{1F1ED}"},{name:"Togo",dialCode:"+228",code:"TG",emoji:"\u{1F1F9}\u{1F1EC}"},{name:"Tokelau",dialCode:"+690",code:"TK",emoji:"\u{1F1F9}\u{1F1F0}"},{name:"Tonga",dialCode:"+676",code:"TO",emoji:"\u{1F1F9}\u{1F1F4}"},{name:"Trinidad/Tobago",dialCode:"+1",code:"TT",emoji:"\u{1F1F9}\u{1F1F9}"},{name:"Tunisia",dialCode:"+216",code:"TN",emoji:"\u{1F1F9}\u{1F1F3}"},{name:"Turkey",dialCode:"+90",code:"TR",emoji:"\u{1F1F9}\u{1F1F7}"},{name:"Turkmenistan",dialCode:"+993",code:"TM",emoji:"\u{1F1F9}\u{1F1F2}"},{name:"Turks and Caicos Islands",dialCode:"+1",code:"TC",emoji:"\u{1F1F9}\u{1F1E8}"},{name:"Tuvalu",dialCode:"+688",code:"TV",emoji:"\u{1F1F9}\u{1F1FB}"},{name:"U.S. Virgin Islands",dialCode:"+1",code:"VI",emoji:"\u{1F1FB}\u{1F1EE}"},{name:"Uganda",dialCode:"+256",code:"UG",emoji:"\u{1F1FA}\u{1F1EC}"},{name:"Ukraine",dialCode:"+380",code:"UA",emoji:"\u{1F1FA}\u{1F1E6}"},{name:"United Arab Emirates",dialCode:"+971",code:"AE",emoji:"\u{1F1E6}\u{1F1EA}"},{name:"United Kingdom",dialCode:"+44",code:"GB",emoji:"\u{1F1EC}\u{1F1E7}"},{name:"United States",dialCode:"+1",code:"US",emoji:"\u{1F1FA}\u{1F1F8}"},{name:"Uruguay",dialCode:"+598",code:"UY",emoji:"\u{1F1FA}\u{1F1FE}"},{name:"Uzbekistan",dialCode:"+998",code:"UZ",emoji:"\u{1F1FA}\u{1F1FF}"},{name:"Vanuatu",dialCode:"+678",code:"VU",emoji:"\u{1F1FB}\u{1F1FA}"},{name:"Vatican City",dialCode:"+379",code:"VA",emoji:"\u{1F1FB}\u{1F1E6}"},{name:"Venezuela",dialCode:"+58",code:"VE",emoji:"\u{1F1FB}\u{1F1EA}"},{name:"Vietnam",dialCode:"+84",code:"VN",emoji:"\u{1F1FB}\u{1F1F3}"},{name:"Wallis and Futuna",dialCode:"+681",code:"WF",emoji:"\u{1F1FC}\u{1F1EB}"},{name:"Western Sahara",dialCode:"+212",code:"EH",emoji:"\u{1F1EA}\u{1F1ED}"},{name:"Yemen",dialCode:"+967",code:"YE",emoji:"\u{1F1FE}\u{1F1EA}"},{name:"Zambia",dialCode:"+260",code:"ZM",emoji:"\u{1F1FF}\u{1F1F2}"},{name:"Zimbabwe",dialCode:"+263",code:"ZW",emoji:"\u{1F1FF}\u{1F1FC}"},{name:"\xC5land Islands",dialCode:"+358",code:"AX",emoji:"\u{1F1E6}\u{1F1FD}"}];function eo(e,o){try{let a=libphonenumberJs.parsePhoneNumberWithError(e,o.code);if(a&&a.isValid())return a.number}catch{}try{return libphonenumberJs.formatIncompletePhoneNumber(e,o.code).replace(/\s/g,"")}catch{let a=e.replace(/[^\d+]/g,"").trim();return a.startsWith("+")?a:`${o.dialCode}${a}`}}var k=e=>{let o=e?.allowedCountries?.length?g.filter(r=>e.allowedCountries.includes(r.code)):g;e?.allowedCountries?.length&&o.length===0&&(console.warn('No countries matched the "allowedCountries" list, falling back to all countries'),o=g);let a=e?.defaultCountry?g.find(r=>r.code===e.defaultCountry):g.find(r=>r.code==="US");return o.some(r=>r.code===a.code)||(a=o[0],console.warn(`The "defaultCountry" option is not in the "allowedCountries" list, the default country has been set to ${a.code}`)),{allowedCountries:o,defaultCountry:a}};function y(e){return {type:"callable",handler:e}}function O(e){return {type:"redirect",handler:e}}function S(e){return {type:"init",handler:e}}function to(){return {autoAnonymousLogin:S(R)}}function no(e){return {autoUpgradeAnonymousCredential:y((o,a)=>T(o,a,e?.onUpgrade)),autoUpgradeAnonymousProvider:y((o,a)=>x(o,a,e?.onUpgrade)),autoUpgradeAnonymousUserRedirectHandler:O((o,a)=>P(o,a,e?.onUpgrade))}}function Ce(e){return {recaptchaVerification:y((o,a)=>w(o,a,e))}}function ye(){return {providerSignInStrategy:y(H),providerLinkStrategy:y(B)}}function so(){return {providerSignInStrategy:y(M),providerLinkStrategy:y(E)}}function lo(e){return {oneTapSignIn:S(o=>N(o,e))}}function mo(){return {requireDisplayName:y(L)}}function ge(e){return {countryCodes:y(()=>k(e))}}function u(e,o){return !!e.behaviors[o]}function p(e,o){if(!u(e,o))throw new Error(`Behavior ${o} not found`);return e.behaviors[o].handler}var b={...Ce(),...ye(),...ge()};async function c(e,o){let a=window.sessionStorage.getItem("pendingCred");if(!a)return o;try{let r=JSON.parse(a),t=await auth.linkWithCredential(o.user,r);return window.sessionStorage.removeItem("pendingCred"),t}catch{return window.sessionStorage.removeItem("pendingCred"),o}}function m(e){e.setRedirectError(void 0),e.setState("pending");}async function fo(e,o,a){try{m(e);let r=auth.EmailAuthProvider.credential(o,a);if(u(e,"autoUpgradeAnonymousCredential")){let i=await p(e,"autoUpgradeAnonymousCredential")(e,r);if(i)return c(e,i)}let t=await auth.signInWithCredential(e.auth,r);return c(e,t)}catch(r){l(e,r);}finally{e.setState("idle");}}async function jo(e,o,a,r){try{m(e);let t=auth.EmailAuthProvider.credential(o,a);if(u(e,"requireDisplayName")&&!r)throw new app.FirebaseError("auth/display-name-required",s(e,"errors","displayNameRequired"));if(u(e,"autoUpgradeAnonymousCredential")){let d=await p(e,"autoUpgradeAnonymousCredential")(e,t);if(d)return u(e,"requireDisplayName")&&await p(e,"requireDisplayName")(e,d.user,r),c(e,d)}let i=await auth.createUserWithEmailAndPassword(e.auth,o,a);return u(e,"requireDisplayName")&&await p(e,"requireDisplayName")(e,i.user,r),c(e,i)}catch(t){l(e,t);}finally{e.setState("idle");}}async function Io(e,o,a,r,t){try{m(e);let i=new auth.PhoneAuthProvider(e.auth);if(t&&e.multiFactorResolver)return await i.verifyPhoneNumber({multiFactorHint:t,session:e.multiFactorResolver.session},a);if(r){let d=await r.getSession();return await i.verifyPhoneNumber({phoneNumber:o,session:d},a)}else return await i.verifyPhoneNumber(o,a)}catch(i){l(e,i);}finally{e.setState("idle");}}async function So(e,o,a){try{m(e);let r=e.auth.currentUser,t=auth.PhoneAuthProvider.credential(o,a);if(r?.isAnonymous&&u(e,"autoUpgradeAnonymousCredential")){let d=await p(e,"autoUpgradeAnonymousCredential")(e,t);if(d)return c(e,d)}let i=await auth.signInWithCredential(e.auth,t);return c(e,i)}catch(r){l(e,r);}finally{e.setState("idle");}}async function bo(e,o){try{m(e),await auth.sendPasswordResetEmail(e.auth,o);}catch(a){l(e,a);}finally{e.setState("idle");}}async function Uo(e,o){try{m(e);let a={url:window.location.href,handleCodeInApp:!0};await auth.sendSignInLinkToEmail(e.auth,o,a),window.localStorage.setItem("emailForSignIn",o);}catch(a){l(e,a);}finally{e.setState("idle");}}async function Te(e,o,a){let r=auth.EmailAuthProvider.credentialWithLink(o,a);return I(e,r)}async function I(e,o){try{if(m(e),u(e,"autoUpgradeAnonymousCredential")){let r=await p(e,"autoUpgradeAnonymousCredential")(e,o);if(r)return c(e,r)}let a=await auth.signInWithCredential(e.auth,o);return c(e,a)}catch(a){l(e,a);}finally{e.setState("idle");}}async function vo(e,o){try{m(e);let a=await auth.signInWithCustomToken(e.auth,o);return c(e,a)}catch(a){l(e,a);}finally{e.setState("idle");}}async function Fo(e){try{m(e);let o=await auth.signInAnonymously(e.auth);return c(e,o)}catch(o){l(e,o);}finally{e.setState("idle");}}async function Ao(e,o){try{if(m(e),u(e,"autoUpgradeAnonymousProvider")){let t=await p(e,"autoUpgradeAnonymousProvider")(e,o);if(t)return c(e,t)}let r=await p(e,"providerSignInStrategy")(e,o);return c(e,r)}catch(a){l(e,a);}finally{e.setState("idle");}}async function To(e,o){try{if(!auth.isSignInWithEmailLink(e.auth,o))return null;let a=window.localStorage.getItem("emailForSignIn");if(!a)return null;m(e);let r=await Te(e,a,o);return c(e,r)}catch(a){l(e,a);}finally{e.setState("idle"),window.localStorage.removeItem("emailForSignIn");}}function xo(e,o,a,r){let t=e.auth.currentUser;if(!t)throw new Error("User must be authenticated to generate a TOTP QR code");let i=o.generateQrCodeUrl(a||t.email||"",r),d=Fe__default.default(0,"L");return d.addData(i),d.make(),d.createDataURL()}async function Po(e,o){try{m(e);let a=await e.multiFactorResolver?.resolveSignIn(o);return e.setMultiFactorResolver(void 0),a}catch(a){l(e,a);}finally{e.setState("idle");}}async function Ro(e,o,a){try{m(e),await auth.multiFactor(e.auth.currentUser).enroll(o,a);}catch(r){l(e,r);}finally{e.setState("idle");}}async function wo(e){try{m(e);let a=await auth.multiFactor(e.auth.currentUser).getSession();return await auth.TotpMultiFactorGenerator.generateSecret(a)}catch(o){l(e,o);}finally{e.setState("idle");}}var h=nanostores.map({});function ko(e,o="[DEFAULT]"){let a=e.behaviors?.reduce((i,d)=>({...i,...d}),b);h.setKey(o,nanostores.deepMap({app:e.app,auth:e.auth||auth.getAuth(e.app),locale:e.locale??uiTranslations.enUs,setLocale:i=>{h.get()[o].setKey("locale",i);},state:"idle",setState:i=>{h.get()[o].setKey("state",i);},behaviors:a??b,multiFactorResolver:void 0,setMultiFactorResolver:i=>{h.get()[o].setKey("multiFactorResolver",i);},redirectError:void 0,setRedirectError:i=>{h.get()[o].setKey("redirectError",i);}}));let r=h.get()[o],t=r.get();if(typeof window<"u"){let i=[],d=[];for(let C of Object.values(t.behaviors))C.type==="redirect"?d.push(C):C.type==="init"&&i.push(C);i.length>0&&(r.setKey("state","loading"),t.auth.authStateReady().then(()=>{Promise.all(i.map(C=>C.handler(t))).then(()=>{r.setKey("state","idle");});})),auth.getRedirectResult(t.auth).then(C=>Promise.all(d.map(f=>f.handler(t,C)))).catch(C=>{try{l(t,C);}catch(f){t.setRedirectError(f instanceof Error?f:new Error(String(f)));}});}return r}var Do=["email","phone","anonymous","emailLink","google"];function Wo(e){return n__namespace.object({email:n__namespace.email(s(e,"errors","invalidEmail")),password:n__namespace.string().min(6,s(e,"errors","weakPassword"))})}function Vo(e){let o=u(e,"requireDisplayName"),a=s(e,"errors","displayNameRequired");return n__namespace.object({email:n__namespace.email(s(e,"errors","invalidEmail")),password:n__namespace.string().min(6,s(e,"errors","weakPassword")),displayName:o?n__namespace.string().min(1,a):n__namespace.string().min(1,a).optional()})}function Ko(e){return n__namespace.object({email:n__namespace.email(s(e,"errors","invalidEmail"))})}function qo(e){return n__namespace.object({email:n__namespace.email(s(e,"errors","invalidEmail"))})}function Me(e){return n__namespace.object({phoneNumber:n__namespace.string().min(1,s(e,"errors","missingPhoneNumber")).max(10,s(e,"errors","invalidPhoneNumber"))})}function Be(e){return n__namespace.object({verificationId:n__namespace.string().min(1,s(e,"errors","missingVerificationId")),verificationCode:n__namespace.string().refine(o=>!o||o.length>=6,{error:s(e,"errors","invalidVerificationCode")})})}function _o(e){return Me(e).extend({displayName:n__namespace.string().min(1,s(e,"errors","displayNameRequired"))})}function Jo(e){return Be(e)}function Zo(e){return n__namespace.object({displayName:n__namespace.string().min(1,s(e,"errors","displayNameRequired"))})}function Yo(e){return n__namespace.object({verificationCode:n__namespace.string().refine(o=>o.length===6,{error:s(e,"errors","invalidVerificationCode")})})}undefined.PROD&&F("core",A.version);
|
|
2
|
+
exports.$config=h;exports.FirebaseUIError=j;exports.LoginTypes=Do;exports.autoAnonymousLogin=to;exports.autoUpgradeAnonymousUsers=no;exports.completeEmailLinkSignIn=To;exports.confirmPhoneNumber=So;exports.countryCodes=ge;exports.countryData=g;exports.createEmailLinkAuthFormSchema=qo;exports.createForgotPasswordAuthFormSchema=Ko;exports.createMultiFactorPhoneAuthNumberFormSchema=_o;exports.createMultiFactorPhoneAuthVerifyFormSchema=Jo;exports.createMultiFactorTotpAuthNumberFormSchema=Zo;exports.createMultiFactorTotpAuthVerifyFormSchema=Yo;exports.createPhoneAuthNumberFormSchema=Me;exports.createPhoneAuthVerifyFormSchema=Be;exports.createSignInAuthFormSchema=Wo;exports.createSignUpAuthFormSchema=Vo;exports.createUserWithEmailAndPassword=jo;exports.defaultBehaviors=b;exports.enrollWithMultiFactorAssertion=Ro;exports.formatPhoneNumber=eo;exports.generateTotpQrCode=xo;exports.generateTotpSecret=wo;exports.getBehavior=p;exports.getTranslation=s;exports.handleFirebaseError=l;exports.hasBehavior=u;exports.initializeUI=ko;exports.oneTapSignIn=lo;exports.providerPopupStrategy=so;exports.providerRedirectStrategy=ye;exports.recaptchaVerification=Ce;exports.registerFramework=F;exports.requireDisplayName=mo;exports.sendPasswordResetEmail=bo;exports.sendSignInLinkToEmail=Uo;exports.signInAnonymously=Fo;exports.signInWithCredential=I;exports.signInWithCustomToken=vo;exports.signInWithEmailAndPassword=fo;exports.signInWithEmailLink=Te;exports.signInWithMultiFactorAssertion=Po;exports.signInWithProvider=Ao;exports.verifyPhoneNumber=Io;//# sourceMappingURL=index.cjs.map
|
|
3
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +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"]}
|