{"version":3,"sources":["../../Areas/Consumer/Static/Core.ts"],"names":[],"mappings":"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","file":"Core.min.js","sourcesContent":["import{ Metrics } from './Metrics'\r\n\r\n\r\ndeclare const GLOBAL_Environment:Environment\r\ndeclare const GLOBAL_BaseURL:string\r\ndeclare const GLOBAL_BaseApiURL:string\r\n// declare const GLOBAL_BaseApiURL_Direct:string\r\ndeclare const GLOBAL_AppClipsCapability:string\r\ndeclare const GLOBAL_ShouldLaunchApp:boolean\r\ndeclare const GLOBAL_ShouldLaunchAppClip:boolean\r\ndeclare const GLOBAL_ShouldAppClipsLaunchViaAppleLinks:boolean\r\ndeclare const GLOBAL_AppURL:string|null\r\ndeclare const GLOBAL_AppClipURL:string|null\r\n\r\n//\r\n// region constants\r\n//\r\n\r\nexport const environment:Environment = GLOBAL_Environment\r\nexport const BaseURL:string = GLOBAL_BaseURL\r\nexport const BaseApiURL:string = GLOBAL_BaseApiURL\r\nexport const appClipsCapability:AppClipsCapability = GLOBAL_AppClipsCapability as AppClipsCapability\r\nexport const ShouldLaunchApp:boolean = GLOBAL_ShouldLaunchApp\r\nexport const ShouldLaunchAppClip:boolean = GLOBAL_ShouldLaunchAppClip\r\nexport const ShouldAppClipsLaunchViaAppleLinks:boolean = GLOBAL_ShouldAppClipsLaunchViaAppleLinks\r\n\r\n// endregion\r\n\r\n\r\n//\r\n// region operations\r\n//\r\n\r\nexport function getCookie( name:string ):string {\r\n\tconst name_:string = `${name}=`\r\n\tconst allCookies:string[] = decodeURIComponent( document.cookie ).split( ';' )\r\n\tlet cval:string[] = []\r\n\tfor( let i = 0; i < allCookies.length; i++ )\r\n\t\tif( allCookies[i].trim().indexOf( name_ ) == 0 )\r\n\t\t\tcval = allCookies[i].trim().split( '=' )\r\n\r\n\treturn (0 < cval.length) ? cval[1] : ''\r\n}\r\n\r\n\r\nexport async function launchApp() : Promise {\r\n\tif( GLOBAL_AppURL == null ){\r\n\t\tconsole.error( `Unspecified app URL` )\r\n\t\treturn\r\n\t}\r\n\tconsole.debug( `Launching app at ${GLOBAL_AppURL}...` )\r\n\tawait Metrics.flush() // NOTE: ensures on-load metrics are sent up (needed for attribution of customer journey)\r\n\t// A2\r\n\twindow.location.href = GLOBAL_AppURL\r\n\t// A1\r\n\t// window.location.assign( GLOBAL_AppURL )\r\n}\r\nexport async function launchAppClip() : Promise {\r\n\tif( GLOBAL_AppClipURL == null ){\r\n\t\tconsole.error( `Unspecified App Clip URL` )\r\n\t\treturn\r\n\t}\r\n\tconsole.debug( `Launching App Clip at ${GLOBAL_AppClipURL}...` )\r\n\tawait Metrics.flush() // NOTE: ensures on-load metrics are sent up (needed for attribution of customer journey)\r\n\t// A2\r\n\twindow.location.href = GLOBAL_AppClipURL\r\n\t// A1\r\n\t// window.location.assign( GLOBAL_AppClipURL )\r\n}\r\n\r\nexport function debounce) => ReturnType>(\r\n\tfn:F, delayMs:number,\r\n): (...args: Parameters) => void {\r\n\tlet timeout: ReturnType\r\n\r\n\treturn (...args: Parameters): void => {\r\n\t\tif( timeout )\r\n\t\t\tclearTimeout( timeout )\r\n\t\ttimeout = setTimeout( () => fn( ...args ), delayMs )\r\n\t}\r\n}\r\n\r\nexport const DEBUG_delay = (ms:number) =>\r\n\tnew Promise( res => setTimeout( res, ms ))\r\n\r\n\r\n// TODO(arch): can we group this into a helper (ie: ViewUtils)\r\nexport class ViewUtils {\r\n\r\n\tpublic static observeElements = ({\r\n\t\t\telements,\r\n\t\t\tonIntersect = () => {},\r\n\t\t\tonLeave = () => {},\r\n\t\t}: {\r\n\t\t\telements:HTMLElement[]\r\n\t\t\tonIntersect?:(entry:IntersectionObserverEntry ) => void,\r\n\t\t\tonLeave?:(entry:IntersectionObserverEntry) => void,\r\n\t\t},\r\n\t\toptions:IntersectionObserverInit = {\r\n\t\t\troot: null,\r\n\t\t\trootMargin: '0px',\r\n\t\t\tthreshold: 0.1\r\n\t\t}\r\n\t) => {\r\n\t\tconst observer = new IntersectionObserver(\r\n\t\t\t(entries:IntersectionObserverEntry[]) => {\r\n\t\t\t\tif( 1 < entries.length )\r\n\t\t\t\t\tconsole.debug( `WARNING: Expected a single entry to be intersected but got ${entries.length} instead` )\r\n\t\t\t\t\r\n\t\t\t\tentries.forEach( (entry:IntersectionObserverEntry) => {\r\n\t\t\t\t\tif( entry.isIntersecting ){\r\n\t\t\t\t\t\tonIntersect( entry ) // Trigger the callback when the element intersects\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tonLeave( entry )\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\toptions\r\n\t\t)\r\n\r\n\t\t// observe each element\r\n\t\telements.forEach( (element:HTMLElement) => observer.observe( element ))\r\n\r\n\t\t// return a cleanup function to disconnect the observer\r\n\t\treturn () => observer.disconnect()\r\n\t}\r\n\t\r\n\t\r\n\tpublic static performWhenScrollingIntoView( elementOrElements:HTMLElement|HTMLElement[], callback:() => void,\r\n\t\toptions:IntersectionObserverInit = {}\r\n\t){\r\n\t\tthis.performWhenScrollingWithinView( elementOrElements, true, callback, options )\r\n\t}\r\n\tpublic static performWhenScrollingOutOfView( elementOrElements:HTMLElement|HTMLElement[], callback:() => void,\r\n\t\toptions:IntersectionObserverInit = {}\r\n\t){\r\n\t\tthis.performWhenScrollingWithinView( elementOrElements, false, callback, options )\r\n\t}\r\n\tpublic static performWhenScrollingWithinView( elementOrElements:HTMLElement|HTMLElement[], uponBecomingVisible:boolean = true,\r\n\t\tcallback:(observerEntry?: IntersectionObserverEntry) => void, options:IntersectionObserverInit = {}\r\n\t){\r\n\t\tthis.observeElements({\r\n\t\t\telements: (elementOrElements instanceof HTMLElement) ? [elementOrElements] : elementOrElements,\r\n\t\t\tonIntersect: uponBecomingVisible ? callback : undefined,\r\n\t\t\tonLeave: uponBecomingVisible ? undefined : callback,\r\n\t\t}, options )\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n\r\n//\r\n// region outer structures\r\n//\r\nexport enum Environment {\r\n\tProduction = 'Production',\r\n\tStaging = 'Staging',\r\n\tDevelopment = 'Development',\r\n}\r\n\r\n\r\nexport enum AppClipsCapability {\r\n\tNone = 'None',\r\n\tPartial = 'Partial',\r\n\tFull = 'Full',\r\n}\r\n\r\n\r\nexport interface CoreError {\r\n\tErrorCode:string\r\n\tMessage:string\r\n}\r\n\r\n// endregion\r\n"]}