{ "version": 3, "sources": ["../../../../projects/user_pages/app/javascript/lander/cf_utils.ts"], "sourcesContent": ["/**\n * Generate a Universally Unique Identifier (UUID)\n * @see https: //stackoverflow.com/a/2117523/38375\n * @returns {string} the generated UUID\n */\nexport function uuidv4(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\nlet IntlTel_UtilsLoadPromise = null\nexport function IntlTel_loadUtils(): Promise {\n // NOTE(Zara): This loadUtils API is awful. It Should always return a promise.\n // To circumvent this, we are storing the promise in a global variable\n // and returning it when loadUtils returns null (which it does after the first time we call it)\n const promise = (window as any).intlTelInputGlobals.loadUtils(\n 'https://cdn.jsdelivr.net/npm/intl-tel-input@17.0.16/build/js/utils.js'\n )\n if (promise) {\n IntlTel_UtilsLoadPromise = promise.then((data) => {\n // NOTE(Zara): We should always see this message only once in the console.\n // Indenpendent of how many times we call IntlTel_loadUtils\n console.log('Phone utils loaded!!')\n return data\n })\n }\n return IntlTel_UtilsLoadPromise\n}\n\nexport function IntlTel_initPhoneInput(inputElement: HTMLInputElement, options: any = {}): Promise {\n // NOTE: We don't need to wait for load utils to complete because internally\n // the intlTelInput library will call 'handleLoadUtils' on all instances created\n // if the caller function needs to await for the input to be fully loaded it can use\n // the returned promise that will be resolved when the input is fully loaded\n IntlTel_loadUtils()\n\n const iti = (window as any).intlTelInput(inputElement, {\n autoPlaceholder: 'aggressive',\n preferredCountries: ['us', 'ca', 'gb', 'ie', 'ai', 'nz'],\n // TODO: I think the intialCountry logic should be placed in here\n // - First try to get the country from garlic\n // - Second from cfVisitorData\n // - Third from the browser\n // - Fourth falls back to US\n initialCountry: 'us',\n ...options,\n })\n\n ;(inputElement as any).iti = iti\n return iti.promise\n}\n\nexport function isEventInside(event: MouseEvent, element: Element): boolean {\n return event.target === element || element.contains(event.target as Element)\n}\n\nexport function closeOnClickOutside(element: Element, cb: () => void): void {\n document.addEventListener(\n 'click',\n (evt) => {\n if (evt.target !== element && !element.contains(evt.target as Element)) {\n cb()\n }\n },\n { capture: true }\n )\n}\n\nexport function range(min: number, max: number, step = 1): number[] {\n let arraySize = Math.floor((max - min) / step)\n if (arraySize < 0) arraySize = 0\n return new Array(arraySize).fill(0).map((_, index) => index * step + min)\n}\n\nexport function removePageScroll(): void {\n document.body.classList.add('remove-page-scroll')\n}\n\nexport function addPageScroll(): void {\n document.body.classList.remove('remove-page-scroll')\n}\n"], "mappings": ";;;;;;AAKO,SAAS,SAAiB;AAC/B,SAAO,uCAAuC,QAAQ,SAAS,SAAU,GAAG;AAC1E,UAAM,IAAK,KAAK,OAAO,IAAI,KAAM,GAC/B,IAAI,KAAK,MAAM,IAAK,IAAI,IAAO;AACjC,WAAO,EAAE,SAAS,EAAE;AAAA,EACtB,CAAC;AACH;AAGO,SAAS,oBAAsC;AAIpD,QAAM,UAAW,OAAe,oBAAoB;AAAA,IAClD;AAAA,EACF;AACA,MAAI,SAAS;AACX,+BAA2B,QAAQ,KAAK,CAAC,SAAS;AAGhD,cAAQ,IAAI,sBAAsB;AAClC,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEO,SAAS,uBAAuB,cAAgC,UAAe,CAAC,GAAiB;AAKtG,oBAAkB;AAElB,QAAM,MAAO,OAAe,aAAa,cAAc;AAAA,IACrD,iBAAiB;AAAA,IACjB,oBAAoB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMvD,gBAAgB;AAAA,IAChB,GAAG;AAAA,EACL,CAAC;AAEA,EAAC,aAAqB,MAAM;AAC7B,SAAO,IAAI;AACb;AAEO,SAAS,cAAc,OAAmB,SAA2B;AAC1E,SAAO,MAAM,WAAW,WAAW,QAAQ,SAAS,MAAM,MAAiB;AAC7E;AAEO,SAAS,oBAAoB,SAAkB,IAAsB;AAC1E,WAAS;AAAA,IACP;AAAA,IACA,CAAC,QAAQ;AACP,UAAI,IAAI,WAAW,WAAW,CAAC,QAAQ,SAAS,IAAI,MAAiB,GAAG;AACtE,WAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,EAAE,SAAS,KAAK;AAAA,EAClB;AACF;AAEO,SAAS,MAAM,KAAa,KAAa,OAAO,GAAa;AAClE,MAAI,YAAY,KAAK,OAAO,MAAM,OAAO,IAAI;AAC7C,MAAI,YAAY,EAAG,aAAY;AAC/B,SAAO,IAAI,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU,QAAQ,OAAO,GAAG;AAC1E;AAEO,SAAS,mBAAyB;AACvC,WAAS,KAAK,UAAU,IAAI,oBAAoB;AAClD;AAEO,SAAS,gBAAsB;AACpC,WAAS,KAAK,UAAU,OAAO,oBAAoB;AACrD;AAnFA,IAaI;AAbJ;AAAA;AAAA;AAaA,IAAI,2BAA2B;AAAA;AAAA;", "names": [] }