@@ -55,7 +55,7 @@ class HeadstartRunner {
5555 }
5656
5757 async run ( ) {
58- this . checkBrowserVersion ( ) ;
58+ this . checkIsSupportedBrowser ( ) ;
5959 this . renderReact ( ) ;
6060 this . addBackButtonListener ( ) ;
6161 this . backendData = await this . fetchData ( ) ;
@@ -65,16 +65,29 @@ class HeadstartRunner {
6565 this . addWindowResizeListener ( ) ;
6666 }
6767
68- checkBrowserVersion ( ) {
68+ private checkIsSupportedBrowser ( ) {
69+ const SUPPORTED = [
70+ "Chrome" ,
71+ "Firefox" ,
72+ "Safari" ,
73+ "Microsoft Edge" ,
74+ "Opera" ,
75+ ] as const ;
76+
6977 const browser = Bowser . getParser ( window . navigator . userAgent ) ;
70- // TODO use proper browser filtering https://www.npmjs.com/package/bowser#filtering-browsers
71- if (
72- ! [ "chrome" , "firefox" , "safari" ] . includes ( browser . getBrowserName ( true ) )
73- ) {
78+ const browserName = browser . getBrowserName ( true ) ;
79+
80+ const isSupportedBrowser = SUPPORTED . map ( ( browserName ) =>
81+ browserName . toLowerCase ( )
82+ ) . includes ( browserName ) ;
83+
84+ if ( ! isSupportedBrowser || ! browserName ) {
7485 alert (
7586 "You are using an unsupported browser. " +
7687 "This visualization was successfully tested " +
77- "with the latest versions of Chrome, Firefox and Safari."
88+ "with the latest versions of " +
89+ "Chrome, Firefox, Safari, Edge and Opera. " +
90+ "We strongly recommend using one of these browsers."
7891 ) ;
7992 }
8093 }
@@ -160,10 +173,7 @@ class HeadstartRunner {
160173 addWindowResizeListener ( ) {
161174 window . addEventListener ( "resize" , ( ) => {
162175 const chart = getChartSize ( this . config ) ;
163- const list = getListSize (
164- this . config ,
165- chart . size
166- ) ;
176+ const list = getListSize ( this . config , chart . size ) ;
167177 this . store . dispatch ( updateDimensions ( chart , list ) ) ;
168178 } ) ;
169179 }
@@ -195,7 +205,12 @@ class HeadstartRunner {
195205 elem ?. dispatchEvent ( event ) ;
196206 }
197207
198- rescaleMap ( scaleBy : string , baseUnit : string , isContentBased : boolean , initialSort : string ) {
208+ rescaleMap (
209+ scaleBy : string ,
210+ baseUnit : string ,
211+ isContentBased : boolean ,
212+ initialSort : string
213+ ) {
199214 this . config . scale_by = scaleBy ;
200215 this . config . base_unit = baseUnit ;
201216 this . config . content_based = isContentBased ;
0 commit comments