{"version":3,"sources":["../node_modules/@ionic/core/dist/esm-es5 lazy /^/.//.*/.entry/.js$/ groupOptions: {} namespace object","../node_modules/ionicons/dist/esm-es5 lazy /^/.//.*/.entry/.js$/ groupOptions: {} namespace object","img/SVG/google-play.svg","img/SVG/app-store.svg","screens/Home/components/AppBanner.tsx","shared/contexts/HomeContext.ts","screens/Home/components/Map.tsx","screens/Home/components/Menu.tsx","shared/constants/app.ts","screens/Home/components/ModalAbstract.tsx","screens/Home/components/FiberModal.tsx","screens/Home/components/LocationModal.tsx","screens/Home/components/SatelliteModal.tsx","screens/Home/components/LoadingScreen.tsx","screens/Home/index.tsx","App.tsx","serviceWorkerRegistration.ts","reportWebVitals.ts","index.tsx"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","os","getMobileOS","ua","navigator","userAgent","test","platform","maxTouchPoints","console","log","AppBanner","showBanner","setShowBanner","useState","bannerPopup","keyframes","_templateObject","_taggedTemplateLiteral","ButtonContainer","styled","div","_templateObject2","BannerContainer","_templateObject3","ContinueButton","IonButton","_templateObject4","BannerHeader","_templateObject5","BannerHeaderTitle","_templateObject6","GooglePlayLogo","img","_templateObject7","AppStore","_templateObject8","_jsxs","children","_jsx","href","target","src","app_store_image","google_play_image","onClick","color","HomeContext","React","createContext","detailedMaps","fibers","filters","handleLoadFiber","handleLoadLocation","handleLoadRegion","handleLoadSatellite","loadedFiber","loadedLocation","loadedRegion","loadedSatellite","locations","menuRef","menuState","filterViewState","satellites","setFilters","setMenuState","setFilterViewState","sortedSatellites","Container","Countries","g","Country","path","Regions","Region","props","isActive","css","Equator","Fibers","Fiber","_templateObject9","isIntelsat","Satellites","_templateObject10","Satellite","circle","_templateObject11","isFuture","isInclined","Locations","_templateObject12","Location","_templateObject13","isEmpty","_templateObject14","width","height","window","matchMedia","matches","innerWidth","innerHeight","countries","topojson","worldWithRegionsTopo","objects","world","features","regions","Map","mapRef","useRef","threedRef","showInstruction","setInstruction","useHistory","useLocation","useEffect","zoom","d3","scaleExtent","translateExtent","on","_ref2","transform","gsap","to","current","duration","x","y","scale","k","call","geoPath","projection","_ref","useMemo","translate","useProjection","useContext","countriesInfo","feature","shape","regionsInfo","equator","extent","FiltersInstruction","svg","_templateObject15","SatsInstruction","_templateObject16","InstructionTitle","_templateObject17","InstructionBackdrop","_templateObject18","GetStartedButton","_templateObject19","style","display","xmlns","viewBox","d","fill","ref","concat","info","undefined","Tippy","theme","content","followCursor","plugins","region","String","dataLayer","push","event","category","action","label","fiber","owner","intelsatFiber","thirdPartyFiber","arc","lon_1","endpoint_lon_1","lat_1","endpoint_lat_1","lon_2","endpoint_lon_2","lat_2","endpoint_lat_2","start","finish","dx","dy","dr","Math","sqrt","getFiberArc","name","_id","satellite","status","isStationKept","satellitesInclinedOrbit","satellitesStationKept","satellitesFutureDeployment","cx","cy","lat","offset","long","orbital_location","hemi","coords","getSatelliteCoordinates","r","location","satelliteGtm","pointsOfInterest","lon","getLocationCoordinates","length","teleports","data","FilterDisplayToggle","IonToggle","FilterDisplayTitle","IonTitle","FilterMenu","IonMenu","FilterMenuHeader","IonHeader","RegionToolbar","IonToolbar","FilterMenuContent","IonContent","FilterList","IonList","RegionList","FilterItem","IonItem","FilterToolbar","Menu","forwardRef","_Fragment","side","menuId","contentId","className","type","onIonWillClose","onIonWillOpen","IonButtons","slot","stroke","marginTop","icon","marginRight","marginBottom","marginLeft","strokeWidth","filterInfo","button","detail","filter","prevFilters","IonLabel","checked","includes","text","API_URL","ModalWrap","IonModal","ModalWrapSmall","ModalContent","ModalMobileHeader","ModalMobileToolbar","ModalMobileStatusBar","ModalMobileStatusText","MobileModalMenu","IonSegment","MobileModalMenuButton","IonSegmentButton","MobileModalMenuButtonLabel","MobileCloseIcon","IonIcon","ModalButton","ModalCloseButton","ModalScrollWrap","ModalScrollList","ModalListItem","ModalCategoryHeader","FiberTitle","IonCol","FiberModal","hideModal","isOpen","Boolean","onDidDismiss","swipeToClose","IonRow","IonGrid","Link","LocationTitle","NotFound","LocationModal","teleport","tabs","SatelliteTitle","SatelliteStatus","SatelliteStatusIcon","FootprintsGrid","FootprintsImageCol","FootprintsBandName","FootprintsDetailsCol","FootprintsDetailsCaption","FootprintsAntenna","KeyParamGrid","KeyParamBandName","KeyParamRow","KeyParamName","KeyParamValue","KeyParamSubRow","KeyParamSubName","KeyParamSubValue","DetailedBandName","DetailedGrid","_templateObject20","DetailedPdfCol","_templateObject21","DetailedPdf","_templateObject22","DetailedPdfIframe","iframe","_templateObject23","DetailedColWrapper","_templateObject24","DetailedMapContainer","_templateObject25","DetailedDetailsCol","_templateObject26","DetailedTitle","_templateObject27","SatelliteModal","currentTab","setCurrentTab","currentMap","setCurrentMap","currentPdf","setCurrentPdf","useIonViewDidEnter","searchParams","queryString","parse","search","details","sessionStorage","setItem","isDetailedAvailable","getItem","detailedMap","find","item","detmap_id","groupedAntennas","groupBy","antennas","band_name","groupedPlatforms","platforms","onIonChange","value","tab","tabsGtm","imagefile","maps","alt","satelliteImageGtm","entries","mapDetails","caption","key","antenna","index","size","band","uplinkfrom","key_parameters","keyParam","params","param","paramData","Array","isArray","link","map_files","title","frameBorder","download","rel","LoadingContainer","Spinner","IonSpinner","LoadingWrapper","LoadingTitle","LoadingSub","ErrorText","LoadingScreen","fetchError","defaultMapFilters","API_HEADERS","headers","process","IsTitle","SearchItem","SearchItemMobile","SatSelect","IonSelect","MobileSatSelect","SatSelectOption","IonSelectOption","CopyLabel","CacheImageContainer","SatItem","RateLimit","Home","setDetailedMaps","setFibers","setLoadedFiber","setLoadedLocation","setLoadedRegion","setLoadedSatellite","setLocations","setSatellites","isLoading","setIsLoading","isOnline","setIsOnline","setFetchError","cacheSatelliteImages","setCacheSatelliteImages","isMobile","isPlatform","urlParams","useParams","history","async","checkNetwork","Network","getStatus","connected","getInititalData","isInital","rawData","fetch","ok","json","localStorage","JSON","stringify","dataJson","getFibers","getLocations","getDetailedMaps","i","hidden","getSatellites","document","fiberId","foundFiber","locationId","foundLocation","satelliteId","foundSatellite","addListener","cacheSatelliteImagesWithComponents","imageUrls","flatMap","sort","a","b","localeCompare","numeric","appState","_menuRef$current","open","Provider","IonPage","fontSize","interface","mode","placeholder","fullscreen","IonFooter","Date","getFullYear","IonMenuButton","URLSearchParams","get","redirect","redirects","App","IonApp","IonReactRouter","basename","IonRouterOutlet","Switch","Route","exact","isLocalhost","hostname","match","registerValidSW","swUrl","config","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","onUpdate","onSuccess","catch","error","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","TagManager","initialize","gtmId","ReactDOM","render","StrictMode","getElementById","URL","origin","addEventListener","response","contentType","indexOf","ready","unregister","reload","checkValidServiceWorker","serviceWorkerRegistration"],"mappings":"yFAAA,IAAIA,EAAM,CACT,8BAA+B,CAC9B,IACA,GAED,uBAAwB,CACvB,IACA,GAED,uBAAwB,CACvB,IACA,GAED,0BAA2B,CAC1B,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,wBAAyB,CACxB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,sBAAuB,CACtB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,4BAA6B,CAC5B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,mCAAoC,CACnC,IACA,IAED,uBAAwB,CACvB,IACA,IAED,+BAAgC,CAC/B,IACA,IAED,wBAAyB,CACxB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,uBAAwB,CACvB,IACA,GAED,uBAAwB,CACvB,IACA,IAED,yBAA0B,CACzB,IACA,GAED,8BAA+B,CAC9B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,+BAAgC,CAC/B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,4BAA6B,CAC5B,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,sBAAuB,CACtB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,gCAAiC,CAChC,IACA,KAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,WAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,CACP,IAGD,IAAIG,EAAMX,EAAIE,GAAMU,EAAKD,EAAI,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","file":"static/js/main.fd248166.chunk.js","sourcesContent":["var map = {\n\t\"./ion-action-sheet.entry.js\": [\n\t\t152,\n\t\t5\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t153,\n\t\t6\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t154,\n\t\t7\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t155,\n\t\t17\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t156,\n\t\t18\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t157,\n\t\t44\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t158,\n\t\t19\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t159,\n\t\t20\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t160,\n\t\t21\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t161,\n\t\t22\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t162,\n\t\t45\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t163,\n\t\t10\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t164,\n\t\t23\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t165,\n\t\t46\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t166,\n\t\t47\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t167,\n\t\t24\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t168,\n\t\t25\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t169,\n\t\t26\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t170,\n\t\t27\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t171,\n\t\t28\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t172,\n\t\t8\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t173,\n\t\t14\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t174,\n\t\t9\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t175,\n\t\t29\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t176,\n\t\t30\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t177,\n\t\t31\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t178,\n\t\t11\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t179,\n\t\t16\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t180,\n\t\t48\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t181,\n\t\t32\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t182,\n\t\t33\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t183,\n\t\t34\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t184,\n\t\t35\n\t],\n\t\"./ion-slide_2.entry.js\": [\n\t\t185,\n\t\t49\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t186,\n\t\t13\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t187,\n\t\t50\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t188,\n\t\t36\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t189,\n\t\t15\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t190,\n\t\t37\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t191,\n\t\t38\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t192,\n\t\t39\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t193,\n\t\t12\n\t],\n\t\"./ion-virtual-scroll.entry.js\": [\n\t\t194,\n\t\t51\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 116;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./ion-icon.entry.js\": [\n\t\t195,\n\t\t58\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 118;\nmodule.exports = webpackAsyncContext;","export default __webpack_public_path__ + \"static/media/google-play.f4734b1f.svg\";","export default __webpack_public_path__ + \"static/media/app-store.8c4986ee.svg\";","import { useState } from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { IonButton } from '@ionic/react';\n\nimport google_play_image from '../../../img/SVG/google-play.svg';\nimport app_store_image from '../../../img/SVG/app-store.svg';\n\nconst getMobileOS = () => {\n const ua = navigator.userAgent;\n if (/android/i.test(ua)) {\n return 'Android';\n } else if (\n /iPad|iPhone|iPod/.test(ua) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n ) {\n return 'iOS';\n }\n return 'Other';\n};\nconst os = getMobileOS();\n\nconsole.log(os);\n\nconst googlePlayUrl =\n 'https://play.google.com/store/apps/details?id=com.intelsat.com.intelsat';\nconst appStoreUrl =\n 'https://apps.apple.com/us/app/intelsat/id430008374?platform=iphone';\n\nconst AppBanner: React.FC = () => {\n const [showBanner, setShowBanner] = useState(true);\n\n const bannerPopup = keyframes`\n from {\n transform: translateY(220px);\n }\n to {\n transform: translateY(0);\n }\n `;\n\n const ButtonContainer = styled.div`\n margin: 0 auto;\n display: flex;\n `;\n\n const BannerContainer = styled.div`\n background: #00a7b5;\n height: 272px;\n width: 100%;\n position: fixed;\n bottom: 0;\n left: 0;\n transform: ${showBanner ? 'translateY(0)' : 'translateY(-200)'};\n visibility: ${showBanner ? 'visible' : 'hidden'};\n animation-delay: 5s;\n animation: ${bannerPopup} 2s forwards;\n `;\n\n const ContinueButton = styled(IonButton)`\n background: #fff;\n margin: 0 auto;\n margin-top: 5px;\n border-radius: 20px;\n width: 240px;\n `;\n\n const BannerHeader = styled.div`\n color: #fff;\n font-family: 'GalanoGrotesque-Medium';\n text-align: center;\n margin: 20px;\n `;\n\n const BannerHeaderTitle = styled.div`\n margin-bottom: 10px;\n `;\n\n const GooglePlayLogo = styled.img`\n height: 70px;\n width: 100%;\n margin-top: -15px;\n `;\n\n const AppStore = styled.img`\n height: 40px;\n width: 100%;\n margin-top: -5px;\n margin-bottom: 10px;\n `;\n\n return os !== 'Other' ? (\n \n \n \n Welcome to Intelsat’s Global Ground and Satellite Coverage Maps\n \n A new version of our mobile application is now available on the iOS and\n Android app stores!\n \n {os === 'iOS' ? (\n \n \n \n ) : os === 'Android' ? (\n \n \n \n ) : null}\n \n {\n setShowBanner(false);\n }}\n color=\"light\"\n >\n Continue to use the site\n \n \n \n ) : null;\n};\n\nexport default AppBanner;\n","import React from 'react';\nimport {\n DetailedMapType,\n FiberType,\n LocationType,\n MapFiltersType,\n SatelliteType,\n} from '../types';\n\nexport type AppContextType = {\n detailedMaps: DetailedMapType[];\n fibers: FiberType[];\n filters: MapFiltersType | null;\n handleLoadFiber: (fiber: FiberType | null) => void;\n handleLoadLocation: (location: LocationType | null) => void;\n handleLoadRegion: (region: string | null) => void;\n handleLoadSatellite: (sattelite: SatelliteType | null) => void;\n loadedFiber: FiberType | null;\n loadedLocation: LocationType | null;\n loadedRegion: string | null;\n loadedSatellite: SatelliteType | null;\n locations: LocationType[];\n menuRef: any;\n menuState: 'open' | 'closed';\n filterViewState: 'open' | 'closed';\n satellites: SatelliteType[];\n setFilters: any;\n setMenuState: any;\n setFilterViewState: any;\n sortedSatellites: SatelliteType[];\n};\n\nconst HomeContext = React.createContext({\n detailedMaps: [],\n fibers: [],\n filters: null,\n handleLoadFiber: () => {},\n handleLoadLocation: () => {},\n handleLoadRegion: () => {},\n handleLoadSatellite: () => {},\n loadedFiber: null,\n loadedLocation: null,\n loadedRegion: null,\n loadedSatellite: null,\n locations: [],\n menuRef: null,\n menuState: 'closed',\n filterViewState: 'open',\n satellites: [],\n setFilters: () => {},\n setMenuState: () => {},\n setFilterViewState: () => {},\n sortedSatellites: [],\n});\n\nexport default HomeContext;\n","import { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport * as d3 from 'd3';\nimport * as topojson from 'topojson';\nimport { GeometryCollection, Topology } from 'topojson-specification';\nimport styled, { css } from 'styled-components';\nimport Tippy from '@tippyjs/react';\nimport { followCursor } from 'tippy.js';\nimport { gsap } from 'gsap';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { IonBackdrop, IonButton } from '@ionic/react';\n\nimport worldWithRegionsTopo from '../../../json/world-with-regions.topo.json';\n\nimport HomeContext from '../../../shared/contexts/HomeContext';\nimport { FiberType, LocationType, SatelliteType } from '../../../shared/types';\n\nconst Container = styled.div`\n text-align: center;\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n background: white;\n`;\nconst Countries = styled.g``;\nconst Country = styled.path`\n fill: rgba(239, 240, 240, 1);\n stroke: rgba(220, 220, 221, 1);\n stroke-width: 1px;\n`;\nconst Regions = styled.g``;\nconst Region = styled.path<{ isActive?: boolean }>`\n fill: rgba(0, 0, 0, 0);\n stroke: rgba(205, 205, 205, 1);\n stroke-width: 2px;\n cursor: pointer;\n\n &:hover {\n stroke: rgba(168, 208, 232, 1);\n stroke-width: 5px;\n }\n\n ${(props) =>\n props.isActive &&\n css`\n stroke: rgba(168, 208, 232, 1);\n stroke-width: 5px;\n `};\n\n &:focus {\n outline: none;\n }\n`;\nconst Equator = styled.path`\n stroke: red;\n stroke-dasharray: 10px;\n stroke-width: 1px;\n`;\nconst Fibers = styled.g``;\nconst Fiber = styled.path<{ isIntelsat: boolean }>`\n fill: none;\n stroke: ${(props) => (props.isIntelsat ? '#40b1e5' : '#8ac164')};\n stroke-width: 1.3px;\n cursor: pointer;\n`;\nconst Satellites = styled.g``;\nexport const Satellite = styled.circle<{\n isFuture?: boolean;\n isInclined?: boolean;\n}>`\n fill: ${(props) =>\n props.isFuture ? '#8ac164' : props.isInclined ? 'white' : '#264272'};\n stroke: ${(props) => (props.isFuture ? '#8ac164' : '#264272')};\n stroke-width: 1px;\n cursor: pointer;\n`;\nconst Locations = styled.g``;\nconst Location = styled.g<{ isEmpty?: boolean }>`\n fill: #1e4276;\n ${(props) =>\n !props.isEmpty &&\n css`\n cursor: pointer;\n `};\n`;\n\ninterface ContainerProps {}\n\nlet width = 0;\nlet height = 0;\n\nif (window.matchMedia('(max-width: 700px)').matches) {\n width = window.innerWidth + 700;\n height = window.innerHeight + 300;\n} else {\n width = window.innerWidth;\n height = window.innerHeight;\n}\n\nfunction regionGtm(region: string) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Location Click',\n label: '' + region + 'Satellites', //location name\n });\n}\n\nfunction satelliteGtm(name: string, location: number, hemi: string) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Satellite Click',\n label: '' + name + ' at ' + location + '° ' + hemi + '', //satellite name\n });\n}\n\nfunction locationGtm(data: any) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Link Click',\n label: data,\n });\n}\n\nfunction useProjection({ width, height }: { width: number; height: number }) {\n return useMemo(() => {\n const projection = d3\n .geoMercator()\n .translate([width / 2, height / 1.6])\n .scale(220);\n\n const geoPath = d3.geoPath().projection(projection);\n\n return { geoPath, projection };\n }, [width, height]);\n}\n\nfunction getSatelliteCoordinates(\n satellite: SatelliteType,\n projection: d3.GeoProjection,\n) {\n let lat = satellite.offset;\n let long = satellite.orbital_location;\n\n if (satellite.hemi === 'E') {\n if (satellite.orbital_location > 179) {\n long = long - 360;\n }\n } else {\n if (satellite.orbital_location > 179) {\n long = long - 360;\n }\n long = -long;\n }\n\n const coords = projection([long, lat]);\n const x = coords ? coords[0] : 0;\n const y = coords ? coords[1] : 0;\n\n return [x, y];\n}\n\nfunction hideInstruction() {}\n\nfunction getFiberArc(fiber: FiberType, projection: d3.GeoProjection) {\n const lon_1 = fiber.endpoint_lon_1;\n const lat_1 = fiber.endpoint_lat_1;\n const lon_2 = fiber.endpoint_lon_2;\n const lat_2 = fiber.endpoint_lat_2;\n\n const start = projection([lon_1, lat_1]) || [0, 0];\n const finish = projection([lon_2, lat_2]) || [0, 0];\n\n const dx = finish[0] - start[0];\n const dy = finish[1] - start[1];\n const dr = Math.sqrt(dx * dx + dy * dy) / 1.45;\n\n return `M${start[0]},${start[1]}A${dr},${dr},0 0,1 ${finish[0]},${finish[1]}`;\n}\n\nfunction getLocationCoordinates(\n location: LocationType,\n projection: d3.GeoProjection,\n) {\n const coords = projection([location.lon, location.lat]);\n const x = coords ? coords[0] : 0;\n const y = coords ? coords[1] : 0;\n\n // Need some better logic here - this is too hacky, just for demo to position the pop icons pointing to lat/long coord\n return [x - 11, y - 20];\n}\n\nconst countries = topojson.feature(\n worldWithRegionsTopo as unknown as Topology,\n worldWithRegionsTopo.objects.world as GeometryCollection,\n).features;\n\nconst regions = topojson.feature(\n worldWithRegionsTopo as unknown as Topology,\n worldWithRegionsTopo.objects.regions as GeometryCollection,\n).features;\n\nconst Map: React.FC = () => {\n const mapRef = useRef(null);\n const threedRef = useRef(null);\n\n const history = useHistory();\n const location = useLocation();\n\n const [showInstruction, setInstruction] = useState(true);\n\n useEffect(() => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 4])\n .translateExtent([\n [-200, -100],\n [width + 200, height + 100],\n ])\n .on('zoom', ({ transform }) => {\n gsap.to(threedRef.current, {\n duration: '.1s',\n x: transform.x,\n y: transform.y,\n scale: transform.k,\n });\n });\n\n // @ts-expect-error\n d3.select(mapRef.current).call(zoom);\n }, []);\n\n const { geoPath, projection } = useProjection({\n width,\n height,\n });\n\n const {\n fibers,\n filters,\n handleLoadFiber,\n handleLoadLocation,\n handleLoadRegion,\n handleLoadSatellite,\n loadedRegion,\n locations,\n menuState,\n satellites,\n } = useContext(HomeContext);\n\n const countriesInfo = useMemo(\n () => countries.map((feature) => ({ feature, shape: geoPath(feature) })),\n [countries],\n );\n\n const regionsInfo = useMemo(\n () => regions.map((feature) => ({ feature, shape: geoPath(feature) })),\n [regions],\n );\n\n const equator = d3.geoGraticule().extent([\n [-180, -0.05],\n [180, 0.05],\n ])();\n\n const FiltersInstruction = styled.svg`\n position: absolute;\n bottom: 270px;\n right: 10px;\n width: 40%;\n `;\n\n const SatsInstruction = styled.svg`\n position: absolute;\n top: 270px;\n right: 20px;\n width: 40%;\n `;\n\n const InstructionTitle = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 1.6em;\n width: 80%;\n font-weight: 300;\n font-size: 2em;\n `;\n\n const InstructionBackdrop = styled.div`\n background: rgba(30, 66, 118, 0.79);\n font-weight: 500;\n font-size: 15px;\n width: 100%;\n height: 100%;\n z-index: 2;\n position: absolute;\n left: 0;\n top: 0;\n color: #fff;\n padding: 0;\n @media (min-width: 544px) {\n display: none !important;\n }\n `;\n\n const GetStartedButton = styled(IonButton)`\n margin-top: 20px;\n `;\n\n return (\n \n \n \n Welcome to the Intelsat Coverage Maps App\n {\n setInstruction(false);\n }}\n color=\"light\"\n >\n Click here to get started\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n {countriesInfo.map((info) => (\n \n ))}\n \n\n \n {regionsInfo.map((info) => (\n \n {\n handleLoadRegion(String(info.feature.id) || null);\n regionGtm(String(info.feature.id));\n }}\n isActive={\n loadedRegion === info.feature.id && menuState === 'open'\n }\n />\n \n ))}\n \n\n \n\n \n {fibers.map((fiber) => {\n const isIntelsat = fiber.owner === 'Intelsat';\n\n if (!filters?.display.intelsatFiber && isIntelsat) {\n return null;\n }\n\n if (!filters?.display.thirdPartyFiber && !isIntelsat) {\n return null;\n }\n\n const arc = getFiberArc(fiber, projection);\n\n return (\n \n {\n handleLoadFiber(fiber);\n }}\n />\n \n );\n })}\n \n\n \n {satellites.map((satellite) => {\n const isInclined = satellite.status === 'Inclined Orbit';\n const isStationKept = satellite.status === 'Station Kept';\n const isFuture =\n satellite.status === 'Future Deployment' ||\n satellite.status === 'Future Relocation';\n\n if (!filters?.display.satellitesInclinedOrbit && isInclined) {\n return null;\n }\n\n if (!filters?.display.satellitesStationKept && isStationKept) {\n return null;\n }\n\n if (!filters?.display.satellitesFutureDeployment && isFuture) {\n return null;\n }\n\n const [cx, cy] = getSatelliteCoordinates(satellite, projection);\n\n return (\n \n {\n handleLoadSatellite(satellite);\n satelliteGtm(\n satellite.name,\n satellite.orbital_location,\n satellite.hemi,\n );\n }}\n />\n \n );\n })}\n \n\n \n {locations.map((location) => {\n if (!filters?.display.pointsOfInterest) {\n return null;\n }\n\n const [x, y] = getLocationCoordinates(location, projection);\n\n const isEmpty =\n location.fibers.length === 0 &&\n location.teleports.length === 0;\n\n return (\n \n {\n if (!isEmpty) {\n handleLoadLocation(location);\n locationGtm(location.name);\n }\n }}\n isEmpty={isEmpty}\n >\n \n \n \n \n );\n })}\n \n \n \n
\n
\n );\n};\n\nexport default Map;\n","import { forwardRef, useContext } from 'react';\nimport HomeContext from '../../../shared/contexts/HomeContext';\nimport {\n IonMenu,\n IonHeader,\n IonToolbar,\n IonToggle,\n IonTitle,\n IonContent,\n IonList,\n IonItem,\n IonLabel,\n IonIcon,\n IonButtons,\n IonButton,\n} from '@ionic/react';\nimport styled, { css } from 'styled-components';\n\nimport { MapFiltersType } from '../../../shared/types';\n\nimport { menuController } from '@ionic/core';\n\nimport { Satellite } from './../components/Map';\n\nexport const defaultMapFilters = {\n display: {\n satellitesFutureDeployment: true,\n satellitesInclinedOrbit: true,\n satellitesStationKept: true,\n pointsOfInterest: true,\n thirdPartyFiber: true,\n intelsatFiber: true,\n },\n};\n\nconst FilterDisplayToggle = styled(IonToggle)`\n --background: #a3a4a6;\n --background-checked: #4baff2;\n --handle-background: #eff3f6;\n --handle-background-checked: #eff3f6;\n @media (min-width: 768px) {\n --handle-height: 12px;\n --handle-width: 12px;\n --handle-spacing: 2px;\n }\n // @media (max-width: 544px) {\n // --handle-height: 14px;\n // --handle-width: 14px;\n // }\n`;\n\nconst FilterDisplayTitle = styled(IonTitle)`\n --background: rgba(30, 66, 118, 1);\n --background-checked: rgba(30, 66, 118, 1);\n --handle-background: rgba(30, 66, 118, 1);\n --handle-background-checked: rgba(30, 66, 118, 1);\n --handle-height: 12px;\n --handle-width: 12px;\n --handle-spacing: 2px;\n font-family: 'GalanoGrotesque-Bold';\n @media (max-width: 544px) {\n --handle-height: 14px;\n --handle-width: 14px;\n padding-left: 20px;\n padding-right: 20px;\n }\n`;\n\nconst FilterMenu = styled(IonMenu)`\n --width: 380px;\n overflow: hidden;\n --background: rgba(30, 66, 118, 1);\n @media (max-width: 544px) {\n --width: 300px;\n }\n`;\n\nconst FilterMenuHeader = styled(IonHeader)`\n --background: rgba(30, 66, 118, 1) !important;\n padding: 68px 0 0 0;\n background: rgba(30, 66, 118, 1) !important;\n @media (max-width: 544px) {\n padding: 0 !important;\n }\n`;\nconst RegionToolbar = styled(IonToolbar)``;\nconst RegionMenuHeader = styled(IonHeader)`\n --background: rgba(30, 66, 118, 1) !important;\n background: rgba(30, 66, 118, 1) !important;\n @media (max-width: 544px) {\n }\n`;\n\nconst FilterMenuContent = styled(IonContent)`\n --background: rgba(30, 66, 118, 1);\n @media (max-width: 544px) {\n }\n`;\n\nconst FilterList = styled(IonList)`\n --background: rgba(30, 66, 118, 1);\n background: rgba(30, 66, 118, 1);\n padding: 8px 20px;\n border: 0;\n @media (max-width: 544px) {\n }\n`;\n\nconst RegionList = styled(IonList)`\n --background: rgba(30, 66, 118, 1);\n background: rgba(30, 66, 118, 1);\n padding: 8px 20px 60px 20px;\n border: 0;\n @media (max-width: 544px) {\n }\n`;\n\nconst FilterItem = styled(IonItem)`\n background: #fff;\n font-weight: 500;\n font-size: 15px;\n color: rgba(30, 66, 118, 1);\n padding: 0;\n margin-bottom: 10px;\n border-radius: 10px;\n border: 0;\n --border-radius: 10px;\n @media (max-width: 544px) {\n margin-bottom: 8px;\n --min-height: 55px;\n }\n`;\n\nconst FilterToolbar = styled(IonToolbar)`\n @media (max-width: 544px) {\n padding: 5px;\n }\n`;\nconst Menu = forwardRef((props, ref) => {\n const {\n filters,\n handleLoadRegion,\n handleLoadSatellite,\n loadedRegion,\n setFilters,\n setMenuState,\n filterViewState,\n setFilterViewState,\n sortedSatellites,\n } = useContext(HomeContext);\n\n function filterGtm(filter: any) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Map Filter Click',\n label: '' + filter + '', //filter name\n });\n }\n\n function defaultGtm(text: string) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Link Click',\n label: '' + text + '', //click text\n });\n }\n\n return (\n <>\n {\n setMenuState('closed');\n handleLoadRegion(null);\n }}\n onIonWillOpen={() => setMenuState('open')}\n >\n {\n if (filterViewState == 'closed') {\n setFilterViewState('open');\n } else {\n setFilterViewState('closed');\n }\n }}\n >\n \n Map Filters\n \n \n {filterViewState == 'open' ? (\n \n \n \n ) : (\n \n \n \n )}\n \n \n \n \n \n \n {[\n {\n id: 'satellitesInclinedOrbit',\n name: 'Satellites (Inclined Orbit)',\n icon: (\n \n \n \n ),\n },\n {\n id: 'satellitesStationKept',\n name: 'Satellites (Station Kept)',\n icon: (\n \n \n \n ),\n },\n {\n id: 'satellitesFutureDeployment',\n name: 'Satellites (Future Deployment)',\n icon: (\n \n \n \n ),\n },\n {\n id: 'pointsOfInterest',\n name: 'Points of Presence',\n icon: (\n \n \n \n \n \n \n ),\n },\n {\n id: 'thirdPartyFiber',\n name: '3rd Party Fiber',\n icon: (\n \n \n \n ),\n },\n {\n id: 'intelsatFiber',\n name: 'Intelsat Fiber',\n icon: (\n \n \n \n ),\n },\n ].map((filterInfo) => (\n {\n setFilters((prevFilters: any) => ({\n ...prevFilters,\n display: {\n ...prevFilters.display,\n [filterInfo.id]: !prevFilters.display[filterInfo.id],\n },\n }));\n filterGtm(filterInfo.name);\n }}\n >\n \n {filterInfo.icon || null}\n {filterInfo.name}\n \n \n \n ))}\n \n \n {loadedRegion ? (\n <>\n \n {loadedRegion} Satellites\n \n\n \n \n {sortedSatellites\n .filter((satellite) =>\n satellite.regions\n .map((region) => region.name)\n .includes(loadedRegion),\n )\n .map((satellite) => (\n {\n handleLoadSatellite(satellite);\n defaultGtm(satellite.name);\n }}\n >\n \n \n \n \n {satellite.name}\n \n \n ))}\n \n \n \n ) : null}\n \n \n );\n});\n\nexport default Menu;\n","export const API_URL = 'https://fleetmapsapi.intelsat.com';\n","import styled from 'styled-components';\nimport {\n IonButton,\n IonContent,\n IonModal,\n IonToolbar,\n IonTitle,\n IonIcon,\n IonHeader,\n IonSegment,\n IonSegmentButton,\n IonLabel,\n IonItem,\n IonList,\n} from '@ionic/react';\n\nexport const ModalWrap = styled(IonModal)`\n --min-width: 75%;\n --max-width: 1100px;\n --min-height: 80%;\n --border-radius: 0;\n background: rgba(30, 66, 118, 0.5);\n`;\nexport const ModalWrapSmall = styled(IonModal)`\n --min-width: 60%;\n --max-width: 1100px;\n --min-height: 65%;\n --border-radius: 0;\n background: rgba(30, 66, 118, 0.5);\n`;\nexport const ModalContent = styled(IonContent)`\n background: rgba(30, 66, 118, 1);\n --background: rgba(30, 66, 118, 1);\n --padding-bottom: 20px;\n --padding-start: 30px;\n --padding-end: 30px;\n --padding-top: 20px;\n overflow: hidden;\n @media (max-width: 544px) {\n --padding-bottom: 0;\n --padding-start: 0;\n --padding-end: 0;\n --padding-top: 0;\n }\n`;\nexport const ModalMobileHeader = styled(IonHeader)`\n background: rgba(30, 66, 118, 1);\n --background: rgba(30, 66, 118, 1);\n display: none;\n font-size: 60px;\n text-align: left;\n @media (max-width: 544px) {\n display: block;\n }\n`;\nexport const ModalMobileToolbar = styled(IonToolbar)`\n background: rgba(30, 66, 118, 1);\n --background: rgba(30, 66, 118, 1);\n color: #fff;\n display: none;\n margin-top: 30px;\n @media (max-width: 544px) {\n display: block;\n }\n`;\nexport const ModalMobileStatusBar = styled(IonToolbar)`\n --background: #8ac164;\n background: #8ac164;\n color: #fff;\n display: none;\n padding: 0 !important;\n margin: 0;\n height: 30px;\n @media (max-width: 544px) {\n display: block;\n }\n`;\nexport const ModalMobileStatusText = styled(IonTitle)`\n color: #fff;\n font-size: 14px !important;\n margin-top: -8px;\n`;\nexport const MobileModalMenu = styled(IonSegment)`\n color: #000;\n font-size: 16px;\n margin-top: -2px;\n border-radius: 0;\n visibility: hidden;\n height: 0 !important;\n @media (max-width: 544px) {\n visibility: visible;\n height: auto !important;\n }\n`;\nexport const MobileModalMenuButton = styled(IonSegmentButton)`\n background: #ddd;\n border-radius: 0;\n --background-checked: #40b1e5;\n --color-checked: white;\n --indicator-color: transparent !important; /* this solution */\n --indicator-box-shadow: transparent !important;\n &:active {\n --background: #40b1e5;\n background-color: #40b1e5;\n color: #fff;\n border-radius: 0;\n }\n &:hover {\n --background: #40b1e5;\n background-color: #40b1e5;\n color: #fff;\n border-radius: 0;\n }\n`;\nexport const MobileModalMenuButtonLabel = styled(IonLabel)`\n &:active {\n color: #fff;\n border-radius: 0;\n }\n &:hover {\n color: #fff;\n border-radius: 0;\n }\n`;\nexport const MobileCloseIcon = styled(IonIcon)`\n color: #fff;\n height: 40px;\n margin: 5px 0;\n stroke-width: 0px;\n --ionicon-stroke-width: 8px;\n`;\nexport const ModalButton = styled(IonButton)`\n --background: #fff;\n color: rgba(30, 66, 118, 1);\n --padding-start: 40px;\n --padding-end: 40px;\n --padding-top: 0;\n --padding-bottom: 0;\n height: 30px;\n margin-right: 10px;\n margin-bottom: 20px;\n transition: transform 0.2s;\n --background-hover: #40b1e5;\n --color-hover: #fff;\n &:hover {\n transform: scale(0.95);\n --background: #40b1e5;\n color: #fff;\n }\n &:active {\n --background: #40b1e5;\n color: #fff;\n }\n &:focus {\n --background: #40b1e5;\n color: #fff;\n }\n @media (max-width: 544px) {\n display: none;\n width: 100%;\n --border-radius: 0 !important;\n margin-bottom: 0;\n margin-left: -1px;\n\n &:hover {\n transform: scale(1);\n --background: #40b1e5;\n color: #fff;\n }\n }\n`;\nexport const ModalCloseButton = styled(IonButton)`\n --background: #fff;\n color: rgba(30, 66, 118, 1);\n transition: 0.2s all;\n &:hover {\n transform: scale(0.95);\n --background: #40b1e5;\n color: #fff;\n }\n @media (max-width: 544px) {\n display: none;\n }\n`;\n\nexport const ModalScrollWrap = styled(IonContent)`\n --background: rgba(30, 66, 118, 1);\n min-height: 80px;\n @media (max-width: 544px) {\n }\n`;\n\nexport const ModalScrollList = styled(IonList)`\n --background: rgba(30, 66, 118, 1);\n background: rgba(30, 66, 118, 1);\n padding: 8px 0;\n border: 0;\n @media (max-width: 544px) {\n }\n`;\n\nexport const ModalListItem = styled(IonItem)`\n background: #fff;\n font-weight: 500;\n font-size: 15px;\n width: 400px;\n color: rgba(30, 66, 118, 1);\n padding: 0;\n margin-bottom: 10px;\n border-radius: 10px;\n border: 0;\n @media (max-width: 544px) {\n }\n ${({ button }) =>\n !button &&\n `\n --background: #ddd;\n `}\n`;\n\nexport const ModalCategoryHeader = styled(IonHeader)`\n --background: #40b1e5;\n background: #40b1e5;\n --background-checked: #40b1e5;\n --handle-background: #40b1e5;\n --handle-background-checked: rgba(30, 66, 118, 1);\n --handle-height: 12px;\n --handle-width: 12px;\n --handle-spacing: 2px;\n color: #fff;\n padding: 12px;\n border-bottom: 0;\n justify-content: left;\n margin-left: -4px;\n font-family: 'GalanoGrotesque-Bold';\n\n @media (max-width: 544px) {\n --handle-height: 14px;\n --handle-width: 14px;\n }\n`;\n","import { useContext } from 'react';\nimport {\n IonButtons,\n IonCol,\n IonGrid,\n IonRow,\n IonTitle,\n IonLabel,\n} from '@ionic/react';\nimport { Link } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport HomeContext from '../../../shared/contexts/HomeContext';\n\nimport {\n ModalWrapSmall,\n ModalContent,\n ModalMobileHeader,\n ModalMobileToolbar,\n MobileCloseIcon,\n ModalCloseButton,\n ModalScrollList,\n ModalScrollWrap,\n ModalCategoryHeader,\n ModalListItem,\n} from './ModalAbstract';\n\nconst FiberTitle = styled(IonCol)`\n color: #fff;\n font-size: 32px;\n font-family: 'GalanoGrotesque-Bold';\n font-weight: 500;\n @media (max-width: 544px) {\n display: none;\n }\n`;\nconst LocationName = styled.div`\n color: white;\n`;\n\nexport const FiberModal: React.FC = () => {\n function hideModal() {\n handleLoadFiber(null);\n }\n\n const { handleLoadFiber, loadedFiber } = useContext(HomeContext);\n\n const fiber = loadedFiber;\n\n if (!fiber) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n {fiber.name} by {fiber.owner}\n \n \n \n \n \n \n\n \n \n {fiber.name} by {fiber.owner}\n \n Close\n \n\n {fiber.locations.length > 0 ? (\n <>\n \n \n \n \n Locations\n \n \n \n {fiber.locations.map((location) => {\n return (\n \n \n \n \n \n \n \n {location.name}\n \n \n \n \n );\n })}\n ;\n \n \n \n \n \n \n ) : null}\n \n \n \n );\n};\n","import { useContext } from 'react';\nimport {\n IonButtons,\n IonCol,\n IonGrid,\n IonLabel,\n IonRow,\n IonTitle,\n IonItem,\n IonList,\n} from '@ionic/react';\nimport { Link } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport HomeContext from '../../../shared/contexts/HomeContext';\n\nimport {\n ModalWrapSmall,\n ModalContent,\n ModalMobileHeader,\n ModalMobileToolbar,\n MobileCloseIcon,\n ModalCloseButton,\n ModalScrollList,\n ModalScrollWrap,\n ModalCategoryHeader,\n ModalListItem,\n} from './ModalAbstract';\n\nconst LocationTitle = styled(IonCol)`\n color: #fff;\n font-size: 32px;\n font-weight: 500;\n font-family: 'GalanoGrotesque-Bold';\n @media (max-width: 544px) {\n display: none;\n }\n`;\nconst FiberName = styled.div`\n color: white;\n`;\nconst TeleportName = styled.div`\n color: white;\n`;\nconst NotFound = styled.div`\n color: white;\n`;\n\nexport const LocationModal: React.FC = () => {\n function hideModal() {\n handleLoadLocation(null);\n }\n\n const { handleLoadLocation, loadedLocation } = useContext(HomeContext);\n\n const location = loadedLocation;\n\n if (!location) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n

{location.name}

\n
\n \n \n \n
\n
\n\n \n \n

{location.name}

\n
\n Close\n
\n\n {location.fibers.length > 0 ? (\n <>\n \n \n \n \n Fibers\n \n \n \n {location.fibers.map((fiber) => {\n const isIntelsat = fiber.owner === 'Intelsat';\n if (isIntelsat) {\n return (\n \n \n \n \n \n \n \n {fiber.name}\n \n \n \n \n );\n } else {\n return (\n \n \n \n \n \n \n \n {fiber.name}\n \n \n \n \n );\n }\n })}\n \n \n \n \n \n \n ) : null}\n {location.teleports.length > 0 ? (\n <>\n \n \n \n \n Teleports\n \n \n {location.teleports.map((teleport) => (\n \n \n {teleport.name}\n \n \n ))}\n \n \n \n \n \n ) : null}\n\n {location.fibers.length === 0 && location.teleports.length === 0 ? (\n No data found\n ) : null}\n
\n \n \n );\n};\n","import { useContext, useState } from 'react';\nimport {\n IonCol,\n IonGrid,\n IonTitle,\n IonButtons,\n IonRow,\n useIonViewDidEnter,\n} from '@ionic/react';\nimport styled, { css } from 'styled-components';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { groupBy } from 'lodash';\nimport queryString from 'query-string';\n\nimport HomeContext from '../../../shared/contexts/HomeContext';\nimport { MapType } from '../../../shared/types';\n\nimport {\n ModalWrap,\n ModalContent,\n ModalMobileHeader,\n ModalMobileToolbar,\n ModalMobileStatusBar,\n ModalMobileStatusText,\n MobileModalMenu,\n MobileModalMenuButton,\n MobileModalMenuButtonLabel,\n MobileCloseIcon,\n ModalButton,\n ModalCloseButton,\n} from './ModalAbstract';\n\ntype TabIdType = 'footprints' | 'key' | 'detailed';\n\nconst tabs: { id: TabIdType; name: string }[] = [\n { id: 'footprints', name: 'Footprints' },\n { id: 'key', name: 'Key parameters' },\n { id: 'detailed', name: 'Detailed maps' },\n];\n\nconst SatelliteTitle = styled(IonCol)`\n color: #fff;\n font-size: 32px;\n font-weight: 500;\n font-family: 'GalanoGrotesque-Bold';\n @media (max-width: 544px) {\n display: none;\n }\n`;\nconst SatelliteStatus = styled(IonCol)`\n padding: 10px 0 30px 0;\n @media (max-width: 544px) {\n display: none;\n }\n`;\nconst SatelliteStatusIcon = styled(IonCol)`\n background-color: #8ac164;\n color: #fff;\n font-size: 14px;\n padding: 8px 25px;\n border-radius: 20px;\n font-weight: bold;\n width: 100px;\n @media (max-width: 544px) {\n display: none;\n }\n`;\n\nconst FootprintsGrid = styled(IonGrid)``;\nconst FootprintsImageCol = styled(IonCol)`\n @media (max-width: 544px) {\n min-width: 100%;\n padding: 0;\n margin: 20px 0;\n }\n`;\nconst FootprintsBandName = styled(IonRow)`\n padding: 12px;\n font-weight: bold;\n color: #fff;\n border-bottom: 0;\n justify-content: left;\n background-color: #40b1e5;\n margin-bottom: 12px;\n &:not(:first-of-type) {\n margin-top: 30px;\n }\n @media (max-width: 544px) {\n margin-left: -10px;\n width: 100vw;\n }\n`;\nconst FootprintsDetailsCol = styled(IonCol)``;\nconst FootprintsDetailsCaption = styled(IonRow)<{ isActive?: boolean }>`\n cursor: pointer;\n background: #fff;\n font-weight: 500;\n color: rgba(30, 66, 118, 1);\n padding: 8px 40px 8px 20px;\n margin: 8px 0;\n font-size: 15px;\n width: 90%;\n border-radius: 6px;\n transition: 0.2s all;\n @media (max-width: 544px) {\n width: 100%;\n }\n\n ${(props) =>\n props.isActive &&\n css`\n background: #40b1e5;\n color: #fff;\n `};\n\n &:hover {\n background-color: #40b1e5;\n color: #fff;\n }\n`;\n\nconst FootprintsAntenna = styled(IonRow)`\n background: #ddd;\n font-weight: 500;\n color: rgba(30, 66, 118, 1);\n padding: 4px 40px 4px 20px;\n font-size: 14px;\n margin: 8px 0;\n width: 90%;\n border-radius: 6px;\n transition: 0.2s all;\n`;\n\nconst KeyParamGrid = styled(IonGrid)`\n --ion-grid-column-padding-top: 4px;\n --ion-grid-column-padding-bottom: 4px;\n border-collapse: collapse;\n border-style: hidden;\n @media (max-width: 544px) {\n min-width: 100%;\n margin: 20px 0;\n padding: 0;\n }\n`;\nconst KeyParamBandName = styled(IonRow)`\n background-color: #40b1e5;\n padding: 12px;\n font-weight: bold;\n color: #fff;\n border-bottom: 0;\n justify-content: center;\n`;\nconst KeyParamRow = styled(IonRow)`\n background-color: #fff;\n`;\nconst KeyParamName = styled(IonCol)`\n font-weight: 400;\n background: #f5f5f5;\n padding: 8px 20px;\n`;\nconst KeyParamValue = styled(IonCol)`\n padding: 8px 20px;\n`;\nconst KeyParamSubRow = styled(IonRow)`\n padding: 0;\n`;\nconst KeyParamSubName = styled(IonCol)`\n font-weight: 400;\n padding: 8px 20px;\n background: #f5f5f5;\n margin-left: -20px;\n`;\nconst KeyParamSubValue = styled(IonCol)`\n padding: 8px 20px;\n`;\n\nconst DetailedBandName = styled(IonRow)`\n padding: 12px;\n font-weight: bold;\n color: #fff;\n border-bottom: 0;\n justify-content: left;\n background-color: #40b1e5;\n width: 100%;\n margin-bottom: 12px;\n &:not(:first-of-type) {\n margin-top: 30px;\n }\n`;\nconst DetailedGrid = styled(IonGrid)``;\nconst DetailedPdfCol = styled(IonCol)`\n @media (max-width: 544px) {\n min-width: 100%;\n }\n`;\nconst DetailedPdf = styled.div`\n @media (max-width: 544px) {\n min-width: 100%;\n }\n`;\nconst DetailedPdfIframe = styled.iframe`\n width: 100%;\n height: 520px;\n @media (max-width: 544px) {\n min-width: 100%;\n //min-width: 80vw;\n margin: 20px 0;\n padding: 0;\n height: 300px;\n }\n`;\nconst DetailedColWrapper = styled(IonCol)`\n padding: 5px 5px 5px 0;\n &:nth-of-type(even) {\n padding: 5px 0 5px 5px;\n }\n`;\nconst DetailedMapContainer = styled(IonRow)`\n :not(:first-of-type) {\n margin-top: 30px;\n }\n`;\nconst DetailedDetailsCol = styled(IonCol)`\n cursor: pointer;\n background: #fff;\n font-weight: 500;\n font-size: 15px;\n color: rgba(30, 66, 118, 1);\n padding: 0;\n padding: 8px 40px 8px 20px;\n border-radius: 6px;\n transition: 0.2s all;\n &:hover {\n background-color: #40b1e5;\n color: #fff;\n }\n`;\nconst DetailedTitle = styled(IonRow)`\n cursor: pointer;\n`;\n\nexport const SatelliteModal: React.FC = () => {\n const [currentTab, setCurrentTab] = useState(tabs[0].id);\n const [currentMap, setCurrentMap] = useState(null);\n const [currentPdf, setCurrentPdf] = useState<{\n title: string;\n link: string;\n band: string;\n } | null>(null);\n\n const { detailedMaps, handleLoadSatellite, loadedSatellite } =\n useContext(HomeContext);\n\n const history = useHistory();\n const location = useLocation();\n\n useIonViewDidEnter(() => {\n const searchParams: { details?: string; detail?: string; d?: string } =\n queryString.parse(location.search);\n\n const isDetailedAvailable = Boolean(\n searchParams.details || searchParams.detail || searchParams.d,\n );\n\n if (isDetailedAvailable) {\n try {\n window.sessionStorage.setItem('isDetailedAvailable', 'true');\n } catch {\n // no actions\n }\n }\n }, [location]);\n\n function hideModal() {\n handleLoadSatellite(null);\n setCurrentMap(null);\n setCurrentPdf(null);\n setCurrentTab(tabs[0].id);\n }\n\n function tabsGtm(tab: string, name: string, location: number, hemi: string) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Satellite Tab Click - ' + tab + '', //static action name + tab name\n label: '' + name + ' at ' + location + '° ' + hemi + '', //satellite name\n });\n }\n\n function satelliteImageGtm(name: string, location: number, hemi: string) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Satellite Image Click',\n label: '' + name + ' at ' + location + '° ' + hemi + '', //satellite name\n });\n }\n\n function defaultGtm(text: string) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Link Click',\n label: '' + text + '', //click text\n });\n }\n\n const satellite = loadedSatellite;\n\n if (!satellite) {\n return null;\n }\n\n let isDetailedAvailable = false;\n\n try {\n isDetailedAvailable =\n window.sessionStorage.getItem('isDetailedAvailable') === 'true';\n } catch {\n // no actions\n }\n\n const detailedMap = detailedMaps.find(\n (item) => item._id === satellite.detmap_id,\n );\n\n const groupedAntennas = groupBy(satellite.antennas, (item) => item.band_name);\n const groupedPlatforms = groupBy(\n satellite.platforms,\n (item) => item.band_name,\n );\n\n return (\n <>\n \n \n \n \n \n {satellite.name} at {satellite.orbital_location}°{' '}\n {satellite.hemi}\n \n \n \n \n \n\n \n \n {satellite.status}\n \n \n \n\n {\n if (e.detail.value === '0') {\n setCurrentTab(tabs[0].id);\n } else if (e.detail.value === '1') {\n setCurrentTab(tabs[1].id);\n } else if (e.detail.value === '2') {\n setCurrentTab(tabs[2].id);\n }\n }}\n >\n \n \n Footprints\n \n \n \n \n Key Parameters\n \n \n \n\n \n \n

\n {satellite.name} at {satellite.orbital_location}°{' '}\n {satellite.hemi}\n

\n
\n Close\n
\n\n \n \n {satellite.status}\n \n \n\n {tabs.map((tab) => {\n if (tab.id === 'detailed' && !isDetailedAvailable) {\n return null;\n }\n\n return (\n {\n setCurrentTab(tab.id);\n tabsGtm(\n tab.name,\n satellite.name,\n satellite.orbital_location,\n satellite.hemi,\n );\n }}\n key={tab.id}\n >\n {tab.name}\n \n );\n })}\n\n {currentTab === 'footprints' ? (\n \n \n \n \n satelliteImageGtm(\n satellite.name,\n satellite.orbital_location,\n satellite.hemi,\n )\n }\n />\n \n \n {Object.entries(\n groupBy(satellite.maps, (item) => item.band_name),\n ).map((map) => (\n <>\n {map[0]} Band\n {map[1].map((mapDetails) => (\n {\n setCurrentMap(mapDetails);\n defaultGtm(mapDetails.caption);\n }}\n isActive={mapDetails.caption === currentMap?.caption}\n >\n {mapDetails.caption}\n \n ))}\n {groupedAntennas\n ? Object.keys(groupedAntennas).map((key) =>\n groupedAntennas[key].map((antenna, index) =>\n antenna.band_name === map[0] ? (\n <>\n {antenna.teleports.map((teleport) => (\n \n {teleport.name}: {antenna.size}m\n \n ))}\n \n ) : null,\n ),\n )\n : null}\n {groupedPlatforms\n ? Object.keys(groupedPlatforms).map((key) =>\n groupedPlatforms[key].map((platform, index) =>\n map[0] === platform.band_name ? (\n <>\n \n {platform.type} Platform: {platform.band} /\n Uplink from {platform.uplinkfrom}\n \n \n ) : null,\n ),\n )\n : null}\n \n ))}\n \n \n \n ) : null}\n\n {currentTab === 'key' ? (\n \n {satellite.key_parameters.map((keyParam) => (\n <>\n \n {keyParam.band_name} Key Parameters\n \n\n {keyParam.params.map((param) => (\n \n {param.param}\n \n {param.data.map((paramData: string | string[]) =>\n Array.isArray(paramData) ? (\n \n {paramData[0]}\n \n {paramData[1]}\n \n \n ) : (\n {paramData}\n ),\n )}\n \n \n ))}\n \n ))}\n \n ) : null}\n\n {currentTab === 'detailed' && detailedMap ? (\n \n \n \n \n \n \n \n \n \n {Object.entries(\n groupBy(detailedMap.map_files, (item) => item.band),\n ).map((map) => (\n <>\n \n {map[0]}\n {map[1].map((mapDetails) => (\n \n \n \n setCurrentPdf(mapDetails)}\n >\n {mapDetails.title} ({mapDetails.band})\n \n \n \n Download\n \n \n \n \n \n ))}\n \n \n ))}\n \n \n \n \n ) : null}\n
\n \n \n );\n};\n","import styled from 'styled-components';\nimport { IonSpinner, IonContent } from '@ionic/react';\n\nconst LoadingContainer = styled.div`\n background: var(--ion-color-primary);\n height: 100%;\n width: 100%;\n position: relative;\n`;\n\nconst Spinner = styled(IonSpinner)`\n margin-top: 30px;\n width: 35px;\n height: 35px;\n`;\n\nconst LoadingWrapper = styled.div`\n position: absolute;\n top: 40%;\n left: 50%;\n transform: translate(-50%, -50%);\n flex-direction: column;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst LoadingTitle = styled.div`\n color: #fff;\n text-align: center;\n font-weight: 300;\n font-size: 2em;\n`;\n\nconst LoadingSub = styled.div`\n color: #fff;\n text-align: center;\n font-size: 0.8em;\n margin-top: 20px;\n`;\n\nconst ErrorText = styled.div`\n color: #fff;\n text-align: center;\n margin-top: 30px;\n`;\n\ninterface IProps {\n fetchError: String;\n}\n\nconst LoadingScreen: React.FC = ({ fetchError }) => {\n return (\n \n \n Loading\n {fetchError ? (\n {fetchError}\n ) : (\n \n )}\n Downloading app data for offline use\n \n \n );\n};\n\nexport default LoadingScreen;\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n IonContent,\n IonHeader,\n IonFooter,\n IonPage,\n IonButton,\n IonSelect,\n IonSelectOption,\n IonTitle,\n IonToolbar,\n useIonViewDidEnter,\n IonLabel,\n IonItem,\n IonButtons,\n IonMenuButton,\n IonIcon,\n} from '@ionic/react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { RateLimit } from 'async-sema';\nimport { menuController } from '@ionic/core';\nimport styled, { css } from 'styled-components';\n\nimport Map from './components/Map';\nimport Menu from './components/Menu';\n\nimport {\n DetailedMapType,\n FiberType,\n LocationType,\n SatelliteType,\n MapFiltersType,\n} from '../../shared/types';\n\nimport { Satellite } from './components/Map';\n\nimport { API_URL } from '../../shared/constants/app';\n\nimport HomeContext from '../../shared/contexts/HomeContext';\n\nimport { FiberModal } from './components/FiberModal';\nimport { LocationModal } from './components/LocationModal';\nimport { SatelliteModal } from './components/SatelliteModal';\nimport LoadingScreen from './components/LoadingScreen';\nimport { Network } from '@capacitor/network';\nimport { isPlatform } from '@ionic/react';\nimport { search } from 'ionicons/icons';\nconst defaultMapFilters = {\n display: {\n satellitesFutureDeployment: true,\n satellitesInclinedOrbit: true,\n satellitesStationKept: true,\n pointsOfInterest: true,\n thirdPartyFiber: true,\n intelsatFiber: true,\n },\n};\n\nconst API_HEADERS = {\n headers: {\n 'x-api-key': process.env.REACT_APP_API_KEY || '',\n },\n};\n\nconst IsTitle = styled(IonTitle)`\n font-family: 'GalanoGrotesque-Medium';\n`;\n\nconst SearchItem = styled(IonItem)`\n margin: 12px;\n`;\n\nconst SearchItemMobile = styled(IonItem)`\n --background: transparent\n margin: 12px;\n --inner-border-width: 0;\n`;\n\nconst SatSelect = styled(IonSelect)`\n --background: #fff;\n color: rgba(30, 66, 118, 1);\n opacity: 1;\n color: #000;\n transition: 0.2s all;\n width: 100%;\n min-width: 240px;\n padding: 0 60px 0 20px;\n &:hover {\n --background: #4l0b1e5;\n color: #000;\n }\n`;\n\nconst MobileSatSelect = styled(IonSelect)`\n background: transparent;\n padding: 0;\n border: 0;\n &::part(icon) {\n display: none !important;\n }\n &::part(text) {\n display: none !important;\n }\n`;\n\nconst LogoLabel = styled(IonLabel)`\n --margin-top: 20px;\n`;\n\nconst SatSelectOption = styled(IonSelectOption)`\n transition: 0.2s all;\n margin: 5px 0 5px 0;\n font-weight: 500;\n font-size: 15px;\n background: #fff;\n --background: #fff;\n color: rgba(30, 66, 118, 1);\n border-radius: 10px;\n // &:hover {\n // transform: scale(0.95);\n // --background: #40b1e5;\n // color: #fff;\n // }\n`;\n\nconst CopyLabel = styled(IonLabel)`\n font-size: 14px;\n margin-left: 20px;\n`;\n\nconst CacheImageContainer = styled.div`\n display: none;\n`;\nconst SatItem = styled(IonLabel)``;\n\nconst apiRequestLimit = RateLimit(5);\n\nconst Home: React.FC = (props) => {\n const [detailedMaps, setDetailedMaps] = useState([]);\n const [fibers, setFibers] = useState([]);\n const [filters, setFilters] = useState(defaultMapFilters);\n const [loadedFiber, setLoadedFiber] = useState(null);\n const [loadedLocation, setLoadedLocation] =\n useState(null);\n const [loadedRegion, setLoadedRegion] = useState(null);\n const [loadedSatellite, setLoadedSatellite] =\n useState(null);\n const [locations, setLocations] = useState([]);\n const [menuState, setMenuState] = useState<'open' | 'closed'>('closed');\n const [filterViewState, setFilterViewState] =\n useState<'open' | 'closed'>('open');\n const [satellites, setSatellites] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isOnline, setIsOnline] = useState(true);\n const [fetchError, setFetchError] = useState('');\n const [cacheSatelliteImages, setCacheSatelliteImages] = useState(\n [],\n );\n const menuRef = useRef(null);\n let isMobile = isPlatform('ios') || isPlatform('android');\n\n const urlParams =\n useParams<{\n fiberId?: string;\n locationId?: string;\n satelliteId?: string;\n }>();\n const history = useHistory();\n\n useEffect(() => {\n if (urlParams.fiberId && !loadedFiber) {\n const foundFiber = fibers.find((item) => item._id === urlParams.fiberId);\n\n if (foundFiber) {\n handleLoadFiber(foundFiber);\n }\n }\n }, [urlParams.fiberId, fibers]); // no check for loadedFiber to prevent double modal window rendering\n\n useEffect(() => {\n if (urlParams.locationId && !loadedLocation) {\n const foundLocation = locations.find(\n (item) => item._id === urlParams.locationId,\n );\n\n if (foundLocation) {\n handleLoadLocation(foundLocation);\n }\n }\n }, [urlParams.locationId, locations]); // no check for loadedLocation to prevent double modal window rendering\n\n useEffect(() => {\n if (urlParams.satelliteId && !loadedSatellite) {\n const foundSatellite = satellites.find(\n (item) => item._id === urlParams.satelliteId,\n );\n\n if (foundSatellite) {\n handleLoadSatellite(foundSatellite);\n }\n }\n }, [urlParams.satelliteId, satellites]); // no check for loadedSatellite to prevent double modal window rendering\n\n useEffect(() => {\n checkNetwork();\n Network.addListener('networkStatusChange', (status) => {\n setIsOnline(status.connected);\n if (status.connected) {\n getInititalData(false);\n }\n });\n }, []);\n\n async function checkNetwork() {\n const status = await Network.getStatus();\n setIsOnline(status.connected);\n return status.connected;\n }\n\n // useIonViewDidEnter(() => {\n // getInititalData();\n // }, []);\n\n useEffect(() => {\n getInititalData(true);\n }, []);\n\n useEffect(() => {\n cacheSatelliteImagesWithComponents();\n }, [satellites]);\n\n async function getInititalData(isInital?: boolean) {\n let isOnline = await checkNetwork();\n\n if (isInital) {\n setIsLoading(true);\n }\n await getFibers(isOnline);\n await getLocations(isOnline);\n await getDetailedMaps(isOnline);\n await getSatellites(isOnline);\n setIsLoading(false);\n }\n\n async function getSatellites(isOnline?: boolean) {\n try {\n if (isOnline) {\n const rawData = await fetch(\n `${API_URL}/satellites?isGetAll=true`,\n API_HEADERS,\n );\n\n if (rawData.ok) {\n const data = await rawData.json();\n localStorage.setItem('satelites', JSON.stringify(data?.data));\n setSatellites(data?.data);\n setFetchError('');\n \n for (var i=0; i < data.data.length; i++) {\n if(data.data[i].hidden == true) {\n delete data.data[i];\n }\n }\n }\n } else {\n let data = localStorage.getItem('satelites');\n if (data) {\n let dataJson: SatelliteType[] = JSON.parse(data);\n setSatellites(dataJson || []);\n } else {\n throw '';\n }\n }\n\n } catch (e) {\n setFetchError('Server error. Please try again later');\n }\n }\n\n async function getFibers(isOnline?: boolean) {\n try {\n if (isOnline) {\n const rawData = await fetch(\n `${API_URL}/fibers?isGetAll=true`,\n API_HEADERS,\n );\n\n if (rawData.ok) {\n const data = await rawData.json();\n localStorage.setItem('fibers', JSON.stringify(data?.data));\n setFibers(data.data);\n setFetchError('');\n }\n } else {\n let data = localStorage.getItem('fibers');\n if (data) {\n let dataJson: SatelliteType[] = JSON.parse(data);\n setSatellites(dataJson || []);\n } else {\n throw '';\n }\n }\n } catch (e) {\n setFetchError('Server error. Please try again later');\n }\n }\n\n async function getLocations(isOnline?: boolean) {\n try {\n if (isOnline) {\n const rawData = await fetch(\n `${API_URL}/locations?isGetAll=true`,\n API_HEADERS,\n );\n\n if (rawData.ok) {\n const data = await rawData.json();\n localStorage.setItem('locations', JSON.stringify(data?.data));\n setLocations(data.data);\n setFetchError('');\n }\n } else {\n let data = localStorage.getItem('locations');\n if (data) {\n let dataJson: SatelliteType[] = JSON.parse(data);\n setSatellites(dataJson || []);\n } else {\n throw '';\n }\n }\n } catch (e) {\n setFetchError('Server error. Please try again later');\n }\n }\n\n async function getDetailedMaps(isOnline?: boolean) {\n try {\n if (isOnline) {\n const rawData = await fetch(\n `${API_URL}/detmaps?isGetAll=true`,\n API_HEADERS,\n );\n if (rawData.ok) {\n const data = await rawData.json();\n localStorage.setItem('detmaps', JSON.stringify(data?.data));\n setDetailedMaps(data.data);\n setFetchError('');\n }\n } else {\n let data = localStorage.getItem('detmaps');\n if (data) {\n let dataJson: SatelliteType[] = JSON.parse(data);\n setSatellites(dataJson || []);\n } else {\n throw '';\n }\n }\n } catch (e) {\n setFetchError('Server error. Please try again later');\n }\n }\n\n function handleLoadFiber(fiber: FiberType | null) {\n if (fiber) {\n setLoadedFiber(fiber);\n history.push(`/fibers/${fiber._id}/`);\n } else {\n setLoadedFiber(null);\n history.push('/');\n }\n }\n\n function handleLoadLocation(location: LocationType | null) {\n if (location) {\n setLoadedLocation(location);\n history.push(`/locations/${location._id}/`);\n document.title = '' + location.name + ' | Intelsat';\n } else {\n setLoadedLocation(null);\n history.push('/');\n document.title = 'Satellite Coverage Maps | Intelsat';\n }\n }\n\n function handleLoadSatellite(satellite: SatelliteType | null) {\n if (satellite) {\n setLoadedSatellite(satellite);\n document.title =\n '' +\n satellite.name +\n ' at ' +\n satellite.orbital_location +\n '° ' +\n satellite.hemi +\n ' | Intelsat';\n history.push(`/satellites/${satellite._id}/`);\n } else {\n setLoadedSatellite(null);\n history.push('/');\n document.title = 'Satellite Coverage Maps | Intelsat';\n }\n }\n\n function handleLoadRegion(region: string | null) {\n if (region) {\n console.log('region', region);\n menuRef.current?.open();\n setLoadedRegion(region);\n setFilterViewState('closed');\n } else {\n setLoadedRegion(null);\n setFilterViewState('open');\n }\n }\n\n //Work only on web\n async function cacheSatelliteImagesWithFetch() {\n console.log('satellites', satellites);\n\n const imageUrls = satellites.flatMap((satellite: SatelliteType) =>\n satellite.maps.map((item) => item.imagefile),\n );\n\n imageUrls.length = 1;\n\n console.log('imageUrls', imageUrls);\n\n const fetchImage = (url: string) => {\n const response = fetch(url)\n .then((x) => console.log('x', x))\n .catch((error) => console.log(error));\n return response;\n };\n\n for (const url of imageUrls) {\n await apiRequestLimit();\n fetchImage(url).then((result) => console.log(result));\n }\n }\n\n //Work only on web\n async function cacheSatelliteImagesWithSrc() {\n console.log('satellites', satellites);\n\n const imageUrls = satellites.flatMap((satellite: SatelliteType) =>\n satellite.maps.map((item) => item.imagefile),\n );\n\n imageUrls.length = 800;\n\n console.log('imageUrls', imageUrls);\n\n const containerNode = document.createElement('div');\n\n const appendImage = (url: string) => {\n const imageNode = document.createElement('img');\n imageNode.setAttribute('src', url);\n containerNode.appendChild(imageNode);\n };\n\n for (const url of imageUrls) {\n await apiRequestLimit();\n appendImage(url);\n }\n\n containerNode.remove();\n }\n\n const cacheSatelliteImagesWithComponents = () => {\n const imageUrls = satellites.flatMap((satellite: SatelliteType) =>\n satellite.maps.map((item) => item.imagefile),\n );\n setCacheSatelliteImages(imageUrls);\n };\n\n async function openMenu() {\n // await menuController.open();\n /* console.log('openMenu');\n menuController.enable(true).then(() => {\n menuController.open();\n }); */\n menuRef.current?.toggle();\n }\n\n const sortedSatellites = useMemo(\n () =>\n satellites.sort((a, b) =>\n a.name.localeCompare(b.name, undefined, { numeric: true }),\n ),\n [satellites],\n );\n\n const appState = {\n detailedMaps,\n fibers,\n filters,\n handleLoadFiber,\n handleLoadLocation,\n handleLoadRegion,\n handleLoadSatellite,\n loadedFiber,\n loadedLocation,\n loadedRegion,\n loadedSatellite,\n locations,\n menuRef,\n menuState,\n filterViewState,\n satellites,\n setFilters,\n setMenuState,\n setFilterViewState,\n sortedSatellites,\n };\n\n function defaultGtm(data: any) {\n window.dataLayer.push({\n event: 'mapEvent',\n category: 'Fleetmaps',\n action: 'Link Click',\n label: '' + data.name + ' at ' + data.orbital_location + '° ' + data.hemi,\n });\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

\n \n {isMobile ? '' : 'Coverage Maps'}\n

\n {(isLoading || fetchError) && isMobile ? (\n ''\n ) : (\n <>\n {isMobile ? (\n \n \n \n \n handleLoadSatellite(e.detail.value)}\n interface=\"popover\"\n >\n {sortedSatellites.map((satellite) => (\n \n \n \n \n \n {satellite.name} at {satellite.orbital_location}°{' '}\n {satellite.hemi}\n \n \n ))}\n \n \n ) : (\n \n {\n handleLoadSatellite(e.detail.value);\n defaultGtm(e.detail.value);\n }}\n interface=\"popover\"\n placeholder=\"Select by satellite\"\n >\n {sortedSatellites.map((satellite) => (\n \n \n \n \n \n {satellite.name} at {satellite.orbital_location}°{' '}\n {satellite.hemi}\n \n \n ))}\n \n \n )}\n \n )}\n
\n
\n \n \n {/* \n \n Intelsat Fleetmaps\n \n */}\n {(isLoading || fetchError) && isMobile ? (\n \n ) : (\n \n )}\n \n \n \n \n {cacheSatelliteImages.map((item, index) => (\n \"img\"\n ))}\n \n \n \n \n {isMobile ? : ''}\n {isMobile ? (\n Coverage Maps\n ) : (\n © Intelsat {new Date().getFullYear()}. All Rights Reserved.\n )}\n {\n isMobile ? '' : ''\n // <>\n // openMenu()}>Open Filters\n\n // cacheSatelliteImagesWithFetch()}>\n // Cache with fetch\n // \n // cacheSatelliteImagesWithSrc()}>\n // Cache with src\n // \n // \n }\n {(isLoading || fetchError) && isMobile ? (\n ''\n ) : (\n \n \n \n )}\n \n \n \n \n );\n};\n\nexport default Home;\n","import { Route, Switch } from 'react-router-dom';\nimport { IonApp, IonRouterOutlet, IonSplitPane } from '@ionic/react';\nimport { IonReactRouter } from '@ionic/react-router';\nimport AppBanner from './screens/Home/components/AppBanner';\nimport Home from './screens/Home';\nimport Menu from './screens/Home/components/Menu';\n\n// eslint-disable-next-line\nimport * as types from 'styled-components/cssprop'; // used for css prop and ts\n\n/* Core CSS required for Ionic components to work properly */\nimport '@ionic/react/css/core.css';\n\n/* Basic CSS for apps built with Ionic */\nimport '@ionic/react/css/normalize.css';\nimport '@ionic/react/css/structure.css';\nimport '@ionic/react/css/typography.css';\n\n/* Optional CSS utils that can be commented out */\nimport '@ionic/react/css/padding.css';\nimport '@ionic/react/css/float-elements.css';\nimport '@ionic/react/css/text-alignment.css';\nimport '@ionic/react/css/text-transformation.css';\nimport '@ionic/react/css/flex-utils.css';\nimport '@ionic/react/css/display.css';\n\nimport 'tippy.js/dist/tippy.css';\nimport 'tippy.js/themes/light-border.css';\nimport redirects from './json/redirects.json';\n\n/* Theme variables */\nimport './theme/variables.css';\n\nif (document.location.search) {\n const urlParams = new URLSearchParams(window.location.search);\n var search = urlParams.get('s');\n const redirect: { [key: string]: any } = redirects;\n if (search) {\n if (redirect['' + search + '']['new']) {\n document.location.href = redirect['' + search + '']['new'];\n }\n }\n}\n\nconst App: React.FC = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport reportWebVitals from './reportWebVitals';\nimport TagManager from 'react-gtm-module';\n\nconst tagManagerArgs = {\n gtmId: 'GTM-K926XN',\n};\n\nTagManager.initialize(tagManagerArgs);\n\nif (process.env.NODE_ENV === 'development') {\n // const { worker } = require('./mocks/browser');\n // worker.start();\n}\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.register();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}