2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  Utils  }  from  "../Utils"  
						 
					
						
							
								
									
										
										
										
											2022-06-02 03:02:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-02 16:04:16 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								export  default  class  Constants  {  
						 
					
						
							
								
									
										
										
										
											2023-01-22 03:02:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  vNumber  =  "0.26.0" 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-09 00:05:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  ImgurApiKey  =  "7070e7167f0a25a" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  static  readonly  mapillary_client_token_v4  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85" 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-13 16:12:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  API  key  for  Maproulette 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-13 16:12:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Currently  there  is  no  user - friendly  way  to  get  the  user ' s  API  key . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  See  https : //github.com/maproulette/maproulette2/issues/476 for more information.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Using  an  empty  string  however  does  work  for  most  actions ,  but  will  attribute  all  actions  to  the  Superuser . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  readonly  MaprouletteApiKey  =  "" 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-29 23:56:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-29 16:55:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  defaultOverpassUrls  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // The official instance, 10000 queries per day per project allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "https://overpass-api.de/api/interpreter" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // 'Fair usage'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "https://overpass.kumi.systems/api/interpreter" , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 02:11:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Offline: "https://overpass.nchc.org.tw/api/interpreter",
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-29 16:55:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        "https://overpass.openstreetmap.ru/cgi/interpreter" , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 03:12:42 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Doesn't support nwr: "https://overpass.openstreetmap.fr/api/interpreter"
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-29 16:55:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-02 16:04:16 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  readonly  added_by_default : string [ ]  =  [ 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-09 13:58:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        "selected_element" , 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        "gps_location" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "gps_location_history" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "home_location" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "gps_track" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  static  readonly  no_include : string [ ]  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "conflation" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "left_right_style" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "split_point" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "current_view" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "matchpoint" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-21 18:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Layer  IDs  of  layers  which  have  special  properties  through  built - in  hooks 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  readonly  priviliged_layers : string [ ]  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . . . Constants . added_by_default , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "type_node" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "note" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "import_candidate" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "direction" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . . . Constants . no_include , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-21 18:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-02 16:04:16 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // The user journey states thresholds when a new feature gets unlocked
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  static  userJourney  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-16 19:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        moreScreenUnlock : 1 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-28 18:06:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        personalLayoutUnlock : 5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        historyLinkVisible : 10 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-01 02:26:45 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        deletePointsOfOthersUnlock : 20 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-17 14:35:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        tagsVisibleAt : 25 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-16 19:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        tagsVisibleAndWikiLinked : 30 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-09 00:05:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-28 18:06:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        mapCompleteHelpUnlock : 50 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 01:25:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        themeGeneratorReadOnlyUnlock : 50 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-02 16:04:16 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        themeGeneratorFullUnlock : 500 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        addNewPointWithUnreadMessagesUnlock : 500 , 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        minZoomLevelToAddNewPoints : Constants.isRetina ( )  ?  18  : 19 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-09 00:05:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        importHelperUnlock : 5000 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-20 22:18:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Used  by  'PendingChangesUploader' ,  which  waits  this  amount  of  seconds  to  upload  changes . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  ( Note  that  pendingChanges  might  upload  sooner  if  the  popup  is  closed  or  similar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  updateTimeoutSec : number  =  30 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-09 01:49:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  the  contributor  has  their  GPS  location  enabled  and  makes  a  change , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  the  points  visited  less  then  ` nearbyVisitTime ` - seconds  ago  will  be  inspected . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  The  point  closest  to  the  changed  feature  will  be  considered  and  this  distance  will  be  tracked . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  ALl  these  distances  are  used  to  calculate  a  nearby - score 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  nearbyVisitTime : number  =  30  *  60 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-09 01:49:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  a  user  makes  a  change ,  the  distance  to  the  changed  object  is  calculated . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  a  user  makes  multiple  changes ,  all  these  distances  are  put  into  multiple  bins ,  depending  on  this  distance . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  For  every  bin ,  the  totals  are  uploaded  as  metadata 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-26 21:40:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  distanceToChangeObjectBins  =  [ 25 ,  50 ,  100 ,  500 ,  1000 ,  5000 ,  Number . MAX_VALUE ] 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  themeOrder  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "personal" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "cyclofix" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "waste" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "etymology" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "food" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "cafes_and_pubs" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "playgrounds" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "hailhydrant" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "toilets" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "aed" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "bookcases" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-09 19:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Upon  initialization ,  the  GPS  will  search  the  location . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  the  location  is  found  within  the  given  timout ,  it ' ll  automatically  fly  to  it . 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-09 19:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  In  seconds 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  zoomToLocationTimeout  =  60 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  countryCoderEndpoint : string  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/latlon2country" 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 03:53:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  readonly  OsmPreferenceKeyPicturesLicense  =  "pictures-license" 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-06 02:21:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    private  static  isRetina ( ) :  boolean  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( Utils . runningFromConsole )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-02 03:02:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-06 02:21:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // The cause for this line of code: https://github.com/pietervdvn/MapComplete/issues/115
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // See https://stackoverflow.com/questions/19689715/what-is-the-best-way-to-detect-retina-support-on-a-device-using-javascript
 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-08 21:40:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( window . matchMedia  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ( window . matchMedia ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) . matches  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    window . matchMedia ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        "only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ) . matches ) )  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( window . devicePixelRatio  &&  window . devicePixelRatio  >=  2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-06 02:21:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-31 11:39:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}