{"version":3,"sources":["../../Areas/Consumer/Static/LocalityPage.ts"],"names":[],"mappings":"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","file":"LocalityPage.min.js","sourcesContent":["// export {} // NOTE: makes the file a module\r\n// import{ PlaceResult, PlacesServiceStatus } from 'google.maps.places';\r\n// import * as GMaps from 'google.maps';\r\n// import PlaceResult = google.maps.places.PlaceResult\r\n// import PlacesServiceStatus = google.maps.places.PlacesServiceStatus\r\nimport {\r\n\tAppClipsCapability,\r\n\tappClipsCapability,\r\n\tBaseURL,\r\n\tlaunchApp as GLOBAL_launchApp,\r\n\tlaunchAppClip, ShouldAppClipsLaunchViaAppleLinks,\r\n\tShouldLaunchApp,\r\n\tShouldLaunchAppClip,\r\n\tViewUtils,\r\n\tdebounce,\r\n} from './Core'\r\nimport { Loader } from '@googlemaps/js-api-loader'\r\nimport { AppType, GLOBAL_AppPlatform, Metrics, Page, PitchType, Platform, RegionsType, TriggerPoint } from './Metrics'\r\nimport { RegionVM } from './Models/RegionVM'\r\nimport { Experiments } from './Experiments'\r\nimport LatLng = google.maps.LatLng\r\n\r\n\r\ndeclare const GLOBAL_GoogleMapsAPIKey:string\r\ndeclare const _region:RegionVM\r\ndeclare const DEBUG_IncludePreviewData:boolean|undefined\r\ndeclare const DEBUG_shouldLoadImages:boolean\r\ndeclare const DEBUG_DebugMode:boolean|undefined\r\n\r\nlet DEBUG_includePreviewData:boolean = (typeof(DEBUG_IncludePreviewData) !== 'undefined') && DEBUG_IncludePreviewData\r\nlet DEBUG_debugMode:boolean = (typeof(DEBUG_DebugMode) !== 'undefined') && DEBUG_DebugMode\r\n\r\n\r\n// services\r\nlet placesService:google.maps.places.PlacesService\r\n\r\n// views\r\nlet HACK_map:google.maps.Map\r\n\r\n// data\r\n\r\nlet metrics_regionBarViewed:boolean = false\r\nlet metrics_mapCTAViewed:boolean = false\r\nlet metrics_topSightsViewed:boolean = false\r\nlet metrics_appPitch1Viewed:boolean = false\r\nlet metrics_appPitch2Viewed:boolean = false\r\nlet metrics_otherSightsViewed:boolean = false\r\nlet metrics_otherSightsCTAViewed:boolean = false\r\nlet metrics_nearbyRegionsViewed:boolean = false\r\nlet metrics_primaryCTAViewed:boolean = false\r\n// let metrics_secondaryCTAViewed:boolean = false // TODO(arch): should we keep ignoring these after the first view?\r\nlet metrics_preFooterPitchViewed:boolean = false\r\nlet metrics_preRegistrationViewed:boolean = false\r\n\r\n\r\n//\r\n// init\r\n//\r\n\r\n// REF: https://developers.google.com/maps/documentation/javascript/overview#js_api_loader_package\r\nnew Loader({\r\n\tapiKey: GLOBAL_GoogleMapsAPIKey,\r\n\tversion: 'weekly',\r\n\tlibraries: ['places']\r\n}).load().then( () => {\r\n\tinitMap()\r\n})\r\n\r\n\r\nfunction initMap() {\r\n\t// A1 – NOTE: we do not use the map in any way\r\n\tconst sydney:LatLng = new google.maps.LatLng( -33.867, 151.195 )\r\n\tHACK_map = new google.maps.Map( // NOTE: map is unused\r\n\t\tdocument.getElementById( 'map' ), { center: sydney, zoom: 15 })\r\n\tplacesService = new google.maps.places.PlacesService( HACK_map )\r\n}\r\n\r\n\r\nconst handleParallaxEffect = ({ container, element, multiplier = 10, direction = 1 }: {\r\n\tcontainer:HTMLElement,\r\n\telement:HTMLElement,\r\n\t/**\r\n\t * Control movement speed and range\r\n\t */\r\n\tmultiplier?:number,\r\n\tdirection?:number\r\n}) => {\r\n\tif( !element ) \r\n\t\treturn\r\n\t\r\n\tconst rect:DOMRect = container.getBoundingClientRect()\r\n\tconst scrollAmount:number = (rect.top / window.innerHeight) * multiplier * direction\r\n\telement.style.transform = `translateY(${scrollAmount}px)`\r\n}\r\n\r\n\r\nfunction initPlaceCardParallax() {\r\n\tconst cards:NodeListOf = document.querySelectorAll( '.place-container' )\r\n\tconst visibleCards = new Set()\r\n\t\r\n\t\r\n\tconst handleScroll = () => {\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tvisibleCards.forEach(( card:HTMLElement ) => {\r\n\t\t\t\thandleParallaxEffect({\r\n\t\t\t\t\tcontainer: card,\r\n\t\t\t\t\telement: card.querySelector( '.showcase-container' ),\r\n\t\t\t\t\tmultiplier: 40,\r\n\t\t\t\t\tdirection: -1\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\t\r\n\t\r\n\t// IntersectionObserver to track visible cards\r\n\tconst observer = new IntersectionObserver(\r\n\t\t(entries:IntersectionObserverEntry[]) => {\r\n\t\t\tentries.forEach(( entry ) => {\r\n\t\t\t\tif( entry.isIntersecting ){\r\n\t\t\t\t\tvisibleCards.add( entry.target as HTMLElement )\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCards.delete( entry.target as HTMLElement )\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t)\r\n\r\n\t\r\n\tcards.forEach(( card ) => observer.observe( card ))\r\n\twindow.addEventListener( \"scroll\", handleScroll )\r\n\t// Initial call on load\r\n\thandleScroll()\r\n}\r\n\r\n\r\n$( () => {\r\n\tif( Experiments.isUI_RegionPageParallaxItemsEnabled() ){\r\n\t\t$('#topSights').addClass( 'parallax' )\r\n\t\tinitPlaceCardParallax()\r\n\t}\r\n\tif( Experiments.isUI_RegionPagePlaceRatingsEnabled() )\r\n\t\t$('.rating-container').removeClass( 'd-none' );\r\n\tif( Experiments.isUI_RegionPagePrimaryCTAIconEnabled() )\r\n\t\t$('.actionBarCTAImage').addClass( 'dashed' ) \r\n\t\r\n\tconst text:string = Experiments.getUI_RegionPagePrimaryCTAText()\r\n\t// TODO: don't need if check here? It's a string\r\n\tif( text ){\r\n\t\t$('#__actionBar #actionBarCTALabel').text( () => {\r\n\t\t\treturn `${text} in Happ`\r\n\t\t});\r\n\t}\r\n\t\r\n\ttrackActivePlace({ isHighlightingEnabled: Experiments.isUI_RegionPageItemHighlightingEnabled() })\r\n})\r\n$( function() {\r\n\t// init\r\n\t$('#__regionBarButtons > #marketsPicker').on( 'show.bs.dropdown', async event => {\r\n\t\tMetrics.logUI_regionPickerListViewed( Page.RegionPage, RegionsType.Markets )\r\n\t})\r\n\t$('#__regionBarButtons > #regionsPicker').on( 'show.bs.dropdown', async event => {\r\n\t\tMetrics.logUI_regionPickerListViewed( Page.RegionPage, RegionsType.Regions )\r\n\t})\r\n\t$('.region-button').on( 'click', async event => {\r\n\t\tlet marketButton:JQuery = $(event.currentTarget)\r\n\t\tlet regionIdentifier:string = marketButton.attr( 'data-region' )\r\n\t\t\r\n\t\t// navigate\r\n\t\tawait showRegion( regionIdentifier, TriggerPoint.RegionBar )\r\n\t})\r\n\t$('.action-button').on( 'click', async event => {\r\n\t\tlet ctaButton:JQuery = $(event.currentTarget)\r\n\t\tlet href:string = ctaButton.attr( 'data-href' )\r\n\r\n\t\tawait launchApp( href, TriggerPoint.SecondaryCTA )\r\n\t})\r\n\t$('.place-container').on( 'click', async event => {\r\n\t\tlet placeContainer:JQuery = $(event.currentTarget)\r\n\t\tlet href:string = placeContainer.attr( 'data-href' )\r\n\t\t\r\n\t\tawait launchApp( href, TriggerPoint.ListItem )\r\n\t})\r\n\t$('.destination-card').on( 'click', async event => {\r\n\t\tlet destinationCard:JQuery = $(event.currentTarget)\r\n\t\tlet regionIdentifier:string = destinationCard.attr( 'data-id' )\r\n\t\tlet href:string = destinationCard.attr( 'data-href' )\r\n\t\t\r\n\t\tawait showRegion( regionIdentifier, TriggerPoint.ListItem )\r\n\t})\r\n\t\r\n\t\r\n\tasync function showRegion( identifier:string, triggerPoint:TriggerPoint ){\r\n\t\tMetrics.logNAV_viewRegion( identifier, Page.RegionPage, triggerPoint )\r\n\r\n\t\t// navigate\r\n\t\tlet params:Record = { trigger: triggerPoint }\r\n\t\tif( DEBUG_includePreviewData )\r\n\t\t\tparams['preview'] = true\r\n\t\tif( DEBUG_debugMode == true )\r\n\t\t\tparams['dbg'] = true\r\n\t\tconst queryParams:string = (0 < Object.keys( params ).length) ? `?${jQuery.param( params )}` : ''\r\n\t\tconsole.debug( `Navigating to region '${identifier} (trigger: ${triggerPoint})...` )\r\n\t\tawait Metrics.flush() // NOTE: ensure metrics are pushed before navigating away\r\n\t\twindow.location.href = `${BaseURL}/explore/${identifier}${queryParams}`\r\n\t}\r\n\t// TODO(DRY)\r\n\tasync function launchApp( href:string, triggerPoint:TriggerPoint ){\r\n\t\tlet appType:AppType = (appClipsCapability == AppClipsCapability.Full) ? AppType.Transient : AppType.Permanent\r\n\t\tif( GLOBAL_AppPlatform == Platform.iOS ) // TEMP: workaround for Amplitude bug where filters are not respected when synching\r\n\t\t\tawait Metrics.logNAV_launchApp( appType, Page.RegionPage, triggerPoint )\r\n\r\n\t\t// navigate\r\n\t\tconsole.debug( `Launching app (HREF: ${href}, trigger: ${triggerPoint})...` )\r\n\t\tawait Metrics.flush() // NOTE: ensure metrics are pushed before navigating away\r\n\t\twindow.location.href = href\r\n\t}\r\n\t\r\n\t\r\n\t//\r\n\t// scroll triggers\r\n\t//\r\n\t// const regionBarContainer:HTMLElement = $('#regionBarContainer')[0]\r\n\tconst titleLabel:HTMLElement = $('#titleLabel')[0]\r\n\tconst quickFactsView:HTMLElement = $('#quickFacts')[0]\r\n\tconst mapCTA:HTMLElement = $('#mapCTA')[0]\r\n\tconst topSightsSection:HTMLElement = $('#topSights')[0]\r\n\tconst appPitch1Header:HTMLElement|null = $('#appPitch1 > h4')[0]\r\n\tconst appPitch2Header:HTMLElement|null = $('#appPitch2 > h4')[0]\r\n\tconst otherSightsSection:HTMLElement = $('#otherSights')[0]\r\n\tconst otherSightsCTA:HTMLElement = $('#otherSightsCTA')[0]\r\n\tconst nearbyRegionsSection:HTMLElement = $('#nearbyRegions')[0]\r\n\tconst preFooterView:HTMLElement = $('#__preFooter')[0]\r\n\tconst preRegistrationView:HTMLElement = $('#__preRegistration')[0]\r\n\tconst footerView:HTMLElement = $('footer')[0]\r\n\t\r\n\tconst CTAPlacementRanks = {\r\n\t\tMapView: 1,\r\n\t\tAppPitch1: 2,\r\n\t\tAppPitch2: 3,\r\n\t\tOtherSights: 4,\r\n\t\tFooter: 5,\r\n\t}\r\n\t\r\n\t// CTAs (top)\r\n\t// TODO: revive when Quick Facts is revived/introduced \r\n\t// ViewUtils.performWhenScrollingOutOfView( quickFactsView, () => {\r\n\tViewUtils.performWhenScrollingOutOfView( titleLabel, () => {\r\n\t\t// console.debug( 'Show action bar (top)' )\r\n\t\tshowRegionBar()\r\n\t\tshowActionBar()\r\n\t\tshowSideBar()\r\n\r\n\t\tif( !metrics_regionBarViewed ){\r\n\t\t\tmetrics_regionBarViewed = true\r\n\t\t\tMetrics.logUI_regionPickerViewed( Page.RegionPage )\r\n\t\t}\r\n\t\tif( !metrics_primaryCTAViewed ){\r\n\t\t\tmetrics_primaryCTAViewed = true\r\n\t\t\tMetrics.logUI_CTAViewed( Page.RegionPage, TriggerPoint.PrimaryCTA )\r\n\t\t}\r\n\t})\r\n\t// performWhenScrollingOutOfView( quickFactsView, () => {\r\n\t// \t// console.debug( 'Show side bar (top)' )\r\n\t// \tshowSideBar()\r\n\t// })\r\n\t// ViewUtils.performWhenScrollingIntoView( quickFactsView, () => {\r\n\tViewUtils.performWhenScrollingIntoView( titleLabel, () => {\r\n\t\t// console.debug( 'Hide action bar (top)' )\r\n\t\thideRegionBar()\r\n\t\thideActionBar()\r\n\t\t// hideSideBar()\r\n\t})\r\n\tViewUtils.performWhenScrollingIntoView( quickFactsView, () => {\r\n\t\t// console.debug( 'Hide side bar (top)' )\r\n\t\thideSideBar()\r\n\t})\r\n\tViewUtils.performWhenScrollingIntoView( mapCTA, () => {\r\n\t\tif( metrics_mapCTAViewed )\r\n\t\t\treturn;\r\n\r\n\t\tMetrics.logUI_CTAViewed( Page.RegionPage, TriggerPoint.SecondaryCTA, CTAPlacementRanks.MapView )\r\n\t\tmetrics_mapCTAViewed = true\r\n\t}, {\r\n\t\tthreshold: 0.5,\r\n\t})\r\n\t\r\n\t// sections\r\n\tViewUtils.performWhenScrollingIntoView( topSightsSection, () => {\r\n\t\tif( metrics_topSightsViewed ){\r\n\t\t\t// TODO(POLISH): un-wire this, since it's a one-time execution\r\n\t\t\treturn\r\n\t\t}\r\n\t\t\r\n\t\tmetrics_topSightsViewed = true\r\n\t\tMetrics.logUI_regionPage_topSightsSectionViewed( _region.Identifier )\r\n\t})\r\n\tViewUtils.performWhenScrollingIntoView( otherSightsSection, () => {\r\n\t\tif( metrics_otherSightsViewed ){\r\n\t\t\t// TODO(POLISH): un-wire this, since it's a one-time execution\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tmetrics_otherSightsViewed = true\r\n\t\tMetrics.logUI_regionPage_otherSightsSectionViewed( _region.Identifier )\r\n\t})\r\n\tViewUtils.performWhenScrollingIntoView( otherSightsCTA, () => {\r\n\t\tif( metrics_otherSightsCTAViewed ){\r\n\t\t\t// TODO(POLISH): un-wire this, since it's a one-time execution\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tmetrics_otherSightsCTAViewed = true\r\n\t\tMetrics.logUI_CTAViewed( Page.RegionPage, TriggerPoint.SecondaryCTA, CTAPlacementRanks.OtherSights )\r\n\t})\r\n\tViewUtils.performWhenScrollingIntoView( nearbyRegionsSection, () => {\r\n\t\tif( metrics_nearbyRegionsViewed ){\r\n\t\t\t// TODO(PERF): un-wire this, since it's a one-time execution\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tmetrics_nearbyRegionsViewed = true\r\n\t\tMetrics.logUI_regionPage_nearbyRegionsSectionViewed( _region.Identifier )\r\n\t})\r\n\t\r\n\t// pitches\r\n\tif( appPitch1Header != null ){\r\n\t\tViewUtils.performWhenScrollingIntoView( appPitch1Header, () => {\r\n\t\t\tif( metrics_appPitch1Viewed ){\r\n\t\t\t\t// TODO(PERF): un-wire this, since it's a one-time execution\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tmetrics_appPitch1Viewed = true\r\n\t\t\tMetrics.logUI_pitchViewed( PitchType.Expertise, Page.RegionPage, 1 )\r\n\t\t\tMetrics.logUI_CTAViewed( Page.RegionPage, TriggerPoint.SecondaryCTA, CTAPlacementRanks.AppPitch1 )\r\n\t\t})\r\n\t}\r\n\tif( appPitch2Header != null ){\r\n\t\tViewUtils.performWhenScrollingIntoView( appPitch2Header, () => {\r\n\t\t\tif( metrics_appPitch2Viewed ){\r\n\t\t\t\t// TODO(PERF): un-wire this, since it's a one-time execution\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tmetrics_appPitch2Viewed = true\r\n\t\t\tMetrics.logUI_pitchViewed( PitchType.Logistics, Page.RegionPage, 2 )\r\n\t\t\tMetrics.logUI_CTAViewed( Page.RegionPage, TriggerPoint.SecondaryCTA, CTAPlacementRanks.AppPitch2 )\r\n\t\t})\r\n\t}\r\n\tViewUtils.performWhenScrollingIntoView( preFooterView, () => {\r\n\t\tif( metrics_preFooterPitchViewed ){\r\n\t\t\t// TODO(PERF): un-wire this, since it's a one-time execution\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tmetrics_preFooterPitchViewed = true\r\n\t\tMetrics.logUI_pitchViewed( PitchType.App, Page.RegionPage, 3 )\r\n\t\tMetrics.logUI_CTAViewed( Page.RegionPage, TriggerPoint.FooterCTA, CTAPlacementRanks.Footer )\r\n\t})\r\n\r\n\t// pre-registration\r\n\t// ViewUtils.performWhenScrollingIntoView( preRegistrationView, () => {\r\n\t// \tif( metrics_preRegistrationViewed ){\r\n\t// \t\t// TODO(PERF): un-wire this, since it's a one-time execution\r\n\t// \t\treturn\r\n\t// \t}\r\n\t//\r\n\t// \tmetrics_preRegistrationViewed = true\r\n\t// \tMetrics.logUI_preRegistrationViewed( Page.RegionPage )\r\n\t// })\r\n\t\r\n\t\r\n\t// CTAs (bottom)\r\n\tViewUtils.performWhenScrollingIntoView( [preFooterView, footerView], () => {\r\n\t\t// console.debug( 'Hide action bar (bottom)' )\r\n\t\thideRegionBar()\r\n\t\thideActionBar()\r\n\t\thideSideBar()\r\n\t})\r\n\tViewUtils.performWhenScrollingOutOfView( [preFooterView, footerView], () => {\r\n\t\t// NOTE: prevent conflict with top/bottom triggers\r\n\t\tif( /*not scrolled past top CTA*/0 < titleLabel.getBoundingClientRect().top\r\n\t\t\t///*not scrolled past top CTA*/0 < quickFactsView.getBoundingClientRect().top\r\n\t\t\t|| /*scrolled past pre-footer*/preFooterView.getBoundingClientRect().top < 0\r\n\t\t) return\r\n\r\n\t\t// console.debug( 'Show action bar (bottom)' )\r\n\t\tshowRegionBar()\r\n\t\tshowActionBar()\r\n\t\tshowSideBar()\r\n\r\n\t\tif( !metrics_regionBarViewed ){\r\n\t\t\tmetrics_regionBarViewed = true\r\n\t\t\tMetrics.logUI_regionPickerViewed( Page.RegionPage )\r\n\t\t}\r\n\t\tif( !metrics_primaryCTAViewed ){\r\n\t\t\tmetrics_primaryCTAViewed = true\r\n\t\t\tMetrics.logUI_CTAViewed( Page.RegionPage, TriggerPoint.PrimaryCTA )\r\n\t\t}\r\n\t})\r\n\r\n\tfunction showRegionBar() {\r\n\t\t$('#regionBarContainer').addClass( 'is-active' )\r\n\t}\r\n\tfunction hideRegionBar() {\r\n\t\t$('#regionBarContainer').removeClass( 'is-active' )\r\n\t}\r\n\tfunction showActionBar() {\r\n\t\t$('#__actionBar').addClass( 'is-active' )\r\n\t}\r\n\tfunction hideActionBar() {\r\n\t\t$('#__actionBar').removeClass( 'is-active' )\r\n\t}\r\n\tfunction showSideBar() {\r\n\t\t$('#sideBar > .phone').addClass( 'is-active' )\r\n\t}\r\n\tfunction hideSideBar() {\r\n\t\t$('#sideBar > .phone').removeClass( 'is-active' )\r\n\t}\r\n\t\r\n\t// image loading\r\n\tfor( const placeContainerElement of $('.place-container') ){\r\n\t\tlet placeContainer:JQuery = $(placeContainerElement)\r\n\t\tconst placeID:string = placeContainer.attr( 'data-id' )\r\n\t\tViewUtils.performWhenScrollingIntoView( placeContainerElement, async() => {\r\n\t\t\tif( !DEBUG_shouldLoadImages )\r\n\t\t\t\treturn\r\n\t\t\t\r\n\t\t\tconst loadingState:LoadingState = placeContainer.attr( 'data-loading-state' ) as LoadingState\r\n\t\t\t\t?? LoadingState.NotLoaded\r\n\t\t\tif( /*already tried loading before*/loadingState != LoadingState.NotLoaded )\r\n\t\t\t\t// NOTE: do nothing if already tried to previously load (irrespective of success/failure outcome)\r\n\t\t\t\treturn\r\n\r\n\t\t\t// load place\r\n\t\t\tplaceContainer.attr( 'data-loading-state', LoadingState.Loading )\r\n\t\t\tconst place:google.maps.places.PlaceResult = await getPlaceDetails( placeID )\r\n\t\t\tplaceContainer.attr( 'data-loading-state', LoadingState.Loaded )\r\n\t\t\t\r\n\t\t\t// hydrate\r\n\t\t\tif( place.photos.length == 0 )\r\n\t\t\t\treturn\r\n\t\t\tconst photo:google.maps.places.PlacePhoto = place.photos[0]\r\n\t\t\t// NOTE: There are multiple image views because we have left/right views on desktop/tablet\r\n\t\t\tconst imageViews = $(placeContainer).children( 'img' )\r\n\t\t\tfor( const imageView of imageViews ){\r\n\t\t\t\t// NOTE: we use height here to support landscape image containers (ie: on mobile)\r\n\t\t\t\tconst isImageViewInPortraitOrientation:boolean = imageView.width < imageView.height\r\n\t\t\t\t// const maxImageViewDimension:number = Math.max( imageView.width, imageView.height )\r\n\t\t\t\timageView.setAttribute( 'src', photo.getUrl({\r\n\t\t\t\t\tmaxWidth: (!isImageViewInPortraitOrientation) ? imageView.width : null,\r\n\t\t\t\t\tmaxHeight: (isImageViewInPortraitOrientation) ? imageView.width : null,\r\n\t\t\t\t}))\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\t\r\n\t// metrics\r\n\t// A1\r\n\tMetrics.logRegionPageViewed( _region.Identifier )\r\n\t// A2\r\n\t// Metrics.logRegionPageViewed( _Region )\r\n\r\n\t// app launch\r\n\t// TODO(DRY): generalize across pages?\r\n\tMetrics.logAppClipsCapability()\r\n\t// console.debug( `ShouldLaunchApp: ${ShouldLaunchApp}` )\r\n\t// console.debug( `ShouldLaunchAppClip: ${ShouldLaunchAppClip}` )\r\n\t// A1: on-scroll (doesn't work consistently)\r\n\tif( ShouldLaunchAppClip ){\r\n\t\tif( ShouldAppClipsLaunchViaAppleLinks ){\r\n\t\t\t/*NOTE: ignore async*/launchAppClip()\r\n\t\t} else { /*do nothing – handled via param*/ }\r\n\t} else if( ShouldLaunchApp ){\r\n\t\t// TODO: wire up scroll launch hook\r\n\t\t/*NOTE: ignore async*/GLOBAL_launchApp()\r\n\t}\r\n})\r\n\r\n\r\nasync function getPlaceDetails( id:string ): /*image URL*//*Promise*/Promise {\r\n\tconsole.info( `Fetching place #${id}...` )\r\n\treturn await new Promise( (resolve, reject) => {\r\n\t\tplacesService.getDetails(/*request:*/{\r\n\t\t\tplaceId: id,\r\n\t\t\tfields: ['place_id', 'name', 'photos']\r\n\t\t\t// }, function( place:PlaceResult|null, status:PlacesServiceStatus ){\r\n\t\t}, function( place, status ){\r\n\t\t\tif( status != google.maps.places.PlacesServiceStatus.OK ){\r\n\t\t\t\tconsole.warn( `Could not fetch '${place.name}'` )\r\n\t\t\t\treturn reject()\r\n\t\t\t}\r\n\r\n\t\t\t// hydrate\r\n\t\t\tconsole.info( `Fetched '${place.name}'` )\r\n\t\t\treturn resolve( place )\r\n\t\t})\r\n\t})\r\n}\r\n\r\n\r\nfunction trackActivePlace({ isHighlightingEnabled }: { isHighlightingEnabled:boolean }) {\r\n\tconst blurbElements:HTMLElement[] = $('#topSights .blurb').get()\r\n\tif( !blurbElements.length ) \r\n\t\treturn\r\n\t\r\n\tconst highlightClass = 'highlight' as const\r\n\tconst rankSets = new Set()\r\n\tlet highlightedRank:number|null = null\r\n\t\r\n\tconst getPlaceAttributes:(blurbEntry:IntersectionObserverEntry) => { placeID:string; rank:number } = blurbEntry => {\r\n\t\tconst placeContainer = $(blurbEntry.target).closest( '.place-container' )\r\n\t\tconst placeID:string = placeContainer.attr( 'data-id' ) ?? ''\r\n\t\tconst rank:number = Number( placeContainer.attr( 'data-rank' ) ?? 0 )\r\n\r\n\t\treturn {\r\n\t\t\trank,\r\n\t\t\tplaceID,\r\n\t\t}\r\n\t}\r\n\r\n\tconst logPlaceSeen = debounce( (placeID:string, rank:number) => {\r\n\t\tMetrics.logPlaceSeen( placeID, rank )\r\n\t}, 500 )\r\n\t\r\n\tconst findPlaceBlurbByRank = (rank:number) => {\r\n\t\treturn $(`[data-rank='${rank}'] .blurb`)\r\n\t}\r\n\tconst highlightPlace = () => {\r\n\t\tif( !isHighlightingEnabled || !rankSets.size ) \r\n\t\t\treturn\r\n\t\t\r\n\t\tconst smallestRank:number = Math.min( ...rankSets )\r\n\t\tif( highlightedRank === smallestRank ) \r\n\t\t\treturn\r\n\t\t\r\n\t\tconst activeBlurb:JQuery = findPlaceBlurbByRank( smallestRank )\r\n\t\t$(`#topSights .${highlightClass}`).removeClass( highlightClass )\r\n\t\t$(activeBlurb).addClass( highlightClass )\r\n\t\thighlightedRank = smallestRank\r\n\t}\r\n\t\r\n\t\r\n\tViewUtils.observeElements({\r\n\t\telements: blurbElements,\r\n\t\tonIntersect:(entry:IntersectionObserverEntry ) => {\r\n\t\t\tconst { rank, placeID } = getPlaceAttributes( entry )\r\n\t\t\trankSets.add( rank )\r\n\t\t\thighlightPlace()\r\n\t\t\t\r\n\t\t\t// log event\r\n\t\t\tlogPlaceSeen( placeID, rank )\r\n\t\t},\r\n\t\t\r\n\t}, {\r\n\t\tthreshold: 1,\r\n\t})\r\n\r\n\tViewUtils.observeElements({\r\n\t\telements: blurbElements,\r\n\t\tonLeave:(entry:IntersectionObserverEntry) => {\r\n\t\t\tconst { rank } = getPlaceAttributes( entry )\r\n\t\t\trankSets.delete( rank )\r\n\t\t\thighlightPlace()\r\n\t\t}\r\n\t}, {\r\n\t\tthreshold: 0.6,\r\n\t})\r\n}\r\n\r\n\r\n// TODO: globalize\r\nenum LoadingState {\r\n\tNotLoaded= \"NotLoaded\",\r\n\tLoading = \"Loading\",\r\n\tLoaded = \"Loaded\",\r\n\tErrored = \"Errored\",\r\n}\r\n"]}