forked from MapComplete/MapComplete
		
	Better typing of the basemap class
This commit is contained in:
		
							parent
							
								
									e731640e5f
								
							
						
					
					
						commit
						62cc392cfd
					
				
					 7 changed files with 108 additions and 75 deletions
				
			
		| 
						 | 
					@ -4,38 +4,16 @@ import {GeoOperations} from "./GeoOperations";
 | 
				
			||||||
import {State} from "../State";
 | 
					import {State} from "../State";
 | 
				
			||||||
import {Basemap} from "./Leaflet/Basemap";
 | 
					import {Basemap} from "./Leaflet/Basemap";
 | 
				
			||||||
import {QueryParameters} from "./Web/QueryParameters";
 | 
					import {QueryParameters} from "./Web/QueryParameters";
 | 
				
			||||||
 | 
					import {BaseLayer} from "./BaseLayer";
 | 
				
			||||||
export interface BaseLayer {
 | 
					 | 
				
			||||||
    id: string,
 | 
					 | 
				
			||||||
    name: string,
 | 
					 | 
				
			||||||
    attribution_url: string,
 | 
					 | 
				
			||||||
    layer: any,
 | 
					 | 
				
			||||||
    max_zoom: number,
 | 
					 | 
				
			||||||
    min_zoom: number;
 | 
					 | 
				
			||||||
    feature: any
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Calculates which layers are available at the current location
 | 
					 * Calculates which layers are available at the current location
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export default class AvailableBaseLayers {
 | 
					export default class AvailableBaseLayers {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static osmCarto: BaseLayer =
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            id: "osm",
 | 
					 | 
				
			||||||
            //max_zoom: 19, 
 | 
					 | 
				
			||||||
            attribution_url: "https://openStreetMap.org/copyright",
 | 
					 | 
				
			||||||
            name: "OpenStreetMap",
 | 
					 | 
				
			||||||
            layer: Basemap.CreateBackgroundLayer("osm", "OpenStreetMap",
 | 
					 | 
				
			||||||
                "https://tile.openstreetmap.org/{z}/{x}/{y}.png", "OpenStreetMap",  "https://openStreetMap.org/copyright",
 | 
					 | 
				
			||||||
                19, 
 | 
					 | 
				
			||||||
                false, false),
 | 
					 | 
				
			||||||
            feature: null,
 | 
					 | 
				
			||||||
            max_zoom: 19,
 | 
					 | 
				
			||||||
            min_zoom: 0
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public static layerOverview = AvailableBaseLayers.LoadRasterIndex();
 | 
					
 | 
				
			||||||
 | 
					    public static layerOverview = AvailableBaseLayers.LoadRasterIndex()//.concat(AvailableBaseLayers.LoadStamenIndex());
 | 
				
			||||||
    public availableEditorLayers: UIEventSource<BaseLayer[]>;
 | 
					    public availableEditorLayers: UIEventSource<BaseLayer[]>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    constructor(state: State) {
 | 
					    constructor(state: State) {
 | 
				
			||||||
| 
						 | 
					@ -82,19 +60,19 @@ export default class AvailableBaseLayers {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // Oops, we panned out of range for this layer!
 | 
					            // Oops, we panned out of range for this layer!
 | 
				
			||||||
            console.log("AvailableBaseLayers-actor: detected that the current bounds aren't sufficient anymore - reverting to OSM standard")
 | 
					            console.log("AvailableBaseLayers-actor: detected that the current bounds aren't sufficient anymore - reverting to OSM standard")
 | 
				
			||||||
            layerControl.setData(AvailableBaseLayers.osmCarto.layer);
 | 
					            layerControl.setData(Basemap.osmCarto);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const queryParam = QueryParameters.GetQueryParameter("background", State.state.layoutToUse.data.defaultBackground);
 | 
					        const queryParam = QueryParameters.GetQueryParameter("background", State.state.layoutToUse.data.defaultBackground);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        queryParam.addCallbackAndRun(selectedId => {
 | 
					        queryParam.addCallbackAndRun((selectedId:string) => {
 | 
				
			||||||
            console.log("Selected layer is ", selectedId)
 | 
					            console.log("Selected layer is ", selectedId)
 | 
				
			||||||
            const available = self.availableEditorLayers.data;
 | 
					            const available = self.availableEditorLayers.data;
 | 
				
			||||||
            for (const layer of available) {
 | 
					            for (const layer of available) {
 | 
				
			||||||
                if (layer.id === selectedId) {
 | 
					                if (layer.id === selectedId) {
 | 
				
			||||||
                    state.bm.CurrentLayer.setData(layer.layer);
 | 
					                    state.bm.CurrentLayer.setData(layer);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
| 
						 | 
					@ -106,7 +84,7 @@ export default class AvailableBaseLayers {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static AvailableLayersAt(lon: number, lat: number): BaseLayer[] {
 | 
					    public static AvailableLayersAt(lon: number, lat: number): BaseLayer[] {
 | 
				
			||||||
        const availableLayers = [AvailableBaseLayers.osmCarto as any]
 | 
					        const availableLayers = [Basemap.osmCarto]
 | 
				
			||||||
        const globalLayers = [];
 | 
					        const globalLayers = [];
 | 
				
			||||||
        for (const i in AvailableBaseLayers.layerOverview) {
 | 
					        for (const i in AvailableBaseLayers.layerOverview) {
 | 
				
			||||||
            const layer = AvailableBaseLayers.layerOverview[i];
 | 
					            const layer = AvailableBaseLayers.layerOverview[i];
 | 
				
			||||||
| 
						 | 
					@ -187,6 +165,22 @@ export default class AvailableBaseLayers {
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return layers;
 | 
					        return layers;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private static LoadStamenIndex(): BaseLayer[]{
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                attribution: "Map tiles by <a href=\"http://stamen.com\">Stamen Design</a>, under <a href=\"http://creativecommons.org/licenses/by/3.0\">CC BY 3.0</a>. Data by <a href=\"http://openstreetmap.org\">OpenStreetMap</a>, under <a href=\"http://www.openstreetmap.org/copyright\">ODbL</a>.",
 | 
				
			||||||
 | 
					                attribution_url: undefined, // already in the attribution string
 | 
				
			||||||
 | 
					                feature: null,
 | 
				
			||||||
 | 
					                id: "toner",
 | 
				
			||||||
 | 
					                layer:Basemap.ProvidedLayer("toner"),
 | 
				
			||||||
 | 
					                max_zoom: 20,
 | 
				
			||||||
 | 
					                min_zoom:1,
 | 
				
			||||||
 | 
					                name: "Toner"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										12
									
								
								Logic/BaseLayer.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Logic/BaseLayer.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					import {TileLayer} from "leaflet";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface BaseLayer {
 | 
				
			||||||
 | 
					    id: string,
 | 
				
			||||||
 | 
					    name: string,
 | 
				
			||||||
 | 
					    attribution_url: string,
 | 
				
			||||||
 | 
					    layer: TileLayer,
 | 
				
			||||||
 | 
					    max_zoom: number,
 | 
				
			||||||
 | 
					    min_zoom: number;
 | 
				
			||||||
 | 
					    feature: any,
 | 
				
			||||||
 | 
					    attribution?: string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,34 +1,41 @@
 | 
				
			||||||
import L from "leaflet"
 | 
					import * as L from "leaflet"
 | 
				
			||||||
 | 
					import {TileLayer} from "leaflet"
 | 
				
			||||||
import {UIEventSource} from "../UIEventSource";
 | 
					import {UIEventSource} from "../UIEventSource";
 | 
				
			||||||
import {UIElement} from "../../UI/UIElement";
 | 
					import {UIElement} from "../../UI/UIElement";
 | 
				
			||||||
 | 
					import {BaseLayer} from "../BaseLayer";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Contains all setup and baselayers for Leaflet stuff
 | 
					// Contains all setup and baselayers for Leaflet stuff
 | 
				
			||||||
export class Basemap {
 | 
					export class Basemap {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static readonly defaultLayer: { name: string, layer: any, id: string } =
 | 
					    public static osmCarto: BaseLayer =
 | 
				
			||||||
        Basemap.CreateBackgroundLayer("osm", "OpenStreetMap", "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
 | 
					        {
 | 
				
			||||||
            "OpenStreetMap (ODBL)", 'https://openstreetmap.org/copyright',
 | 
					            id: "osm",
 | 
				
			||||||
            22, false);
 | 
					            //max_zoom: 19, 
 | 
				
			||||||
 | 
					            attribution_url: "https://openStreetMap.org/copyright",
 | 
				
			||||||
 | 
					            name: "OpenStreetMap",
 | 
				
			||||||
 | 
					            layer: Basemap.CreateBackgroundLayer("osm", "OpenStreetMap",
 | 
				
			||||||
 | 
					                "https://tile.openstreetmap.org/{z}/{x}/{y}.png", "OpenStreetMap", "https://openStreetMap.org/copyright",
 | 
				
			||||||
 | 
					                19,
 | 
				
			||||||
 | 
					                false, false),
 | 
				
			||||||
 | 
					            feature: null,
 | 
				
			||||||
 | 
					            max_zoom: 19,
 | 
				
			||||||
 | 
					            min_zoom: 0
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // @ts-ignore
 | 
					    // @ts-ignore
 | 
				
			||||||
    public readonly map: Map;
 | 
					    public readonly map: Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public readonly Location: UIEventSource<{ zoom: number, lat: number, lon: number }>;
 | 
					    public readonly Location: UIEventSource<{ zoom: number, lat: number, lon: number }>;
 | 
				
			||||||
    public readonly LastClickLocation: UIEventSource<{ lat: number, lon: number }> = new UIEventSource<{ lat: number, lon: number }>(undefined)
 | 
					    public readonly LastClickLocation: UIEventSource<{ lat: number, lon: number }> = new UIEventSource<{ lat: number, lon: number }>(undefined)
 | 
				
			||||||
    private _previousLayer: L.tileLayer = undefined;
 | 
					    private _previousLayer: TileLayer = undefined;
 | 
				
			||||||
    public readonly CurrentLayer: UIEventSource<{
 | 
					    public readonly CurrentLayer: UIEventSource<BaseLayer> = new UIEventSource(Basemap.osmCarto);
 | 
				
			||||||
        id: string,
 | 
					 | 
				
			||||||
        name: string,
 | 
					 | 
				
			||||||
        layer: L.tileLayer
 | 
					 | 
				
			||||||
    }> = new UIEventSource<L.tileLayer>(Basemap.defaultLayer);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    constructor(leafletElementId: string,
 | 
					    constructor(leafletElementId: string,
 | 
				
			||||||
                location: UIEventSource<{ zoom: number, lat: number, lon: number }>,
 | 
					                location: UIEventSource<{ zoom: number, lat: number, lon: number }>,
 | 
				
			||||||
                extraAttribution: UIElement) {
 | 
					                extraAttribution: UIElement) {
 | 
				
			||||||
        this._previousLayer = Basemap.defaultLayer.layer;
 | 
					        this._previousLayer = Basemap.osmCarto.layer;
 | 
				
			||||||
        this.map = L.map(leafletElementId, {
 | 
					        this.map = L.map(leafletElementId, {
 | 
				
			||||||
            center: [location.data.lat ?? 0, location.data.lon ?? 0],
 | 
					            center: [location.data.lat ?? 0, location.data.lon ?? 0],
 | 
				
			||||||
            zoom: location.data.zoom ?? 2,
 | 
					            zoom: location.data.zoom ?? 2,
 | 
				
			||||||
| 
						 | 
					@ -57,7 +64,7 @@ export class Basemap {
 | 
				
			||||||
            location.ping();
 | 
					            location.ping();
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.CurrentLayer.addCallback((layer:{layer: L.tileLayer}) => {
 | 
					        this.CurrentLayer.addCallback((layer: BaseLayer) => {
 | 
				
			||||||
            if (self._previousLayer !== undefined) {
 | 
					            if (self._previousLayer !== undefined) {
 | 
				
			||||||
                self.map.removeLayer(self._previousLayer);
 | 
					                self.map.removeLayer(self._previousLayer);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -76,7 +83,7 @@ export class Basemap {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static CreateBackgroundLayer(id: string, name: string, url: string, attribution: string, attributionUrl: string,
 | 
					    public static CreateBackgroundLayer(id: string, name: string, url: string, attribution: string, attributionUrl: string,
 | 
				
			||||||
                                        maxZoom: number, isWms: boolean, isWMTS?: boolean) {
 | 
					                                        maxZoom: number, isWms: boolean, isWMTS?: boolean): TileLayer {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        url = url.replace("{zoom}", "{z}")
 | 
					        url = url.replace("{zoom}", "{z}")
 | 
				
			||||||
            .replace("&BBOX={bbox}", "")
 | 
					            .replace("&BBOX={bbox}", "")
 | 
				
			||||||
| 
						 | 
					@ -120,31 +127,26 @@ export class Basemap {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return {
 | 
					            return L.tileLayer.wms(urlObj.protocol + "//" + urlObj.host + urlObj.pathname, options);
 | 
				
			||||||
                id: id,
 | 
					 | 
				
			||||||
                name: name,
 | 
					 | 
				
			||||||
                layer: L.tileLayer.wms(urlObj.protocol+"//"+urlObj.host+urlObj.pathname,
 | 
					 | 
				
			||||||
                    options
 | 
					 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (attributionUrl) {
 | 
					        if (attributionUrl) {
 | 
				
			||||||
            attribution = `<a href='${attributionUrl}' target='_blank'>${attribution}</a>`;
 | 
					            attribution = `<a href='${attributionUrl}' target='_blank'>${attribution}</a>`;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return {
 | 
					        return L.tileLayer(url,
 | 
				
			||||||
            id: id,
 | 
					 | 
				
			||||||
            name: name,
 | 
					 | 
				
			||||||
            layer: L.tileLayer(url,
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                attribution: attribution,
 | 
					                attribution: attribution,
 | 
				
			||||||
                maxZoom: maxZoom,
 | 
					                maxZoom: maxZoom,
 | 
				
			||||||
                minZoom: 1,
 | 
					                minZoom: 1,
 | 
				
			||||||
 | 
					                // @ts-ignore
 | 
				
			||||||
                wmts: isWMTS ?? false,
 | 
					                wmts: isWMTS ?? false,
 | 
				
			||||||
                subdomains: domains
 | 
					                subdomains: domains
 | 
				
			||||||
                })
 | 
					            });
 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static ProvidedLayer(name: string, options?: any): any {
 | 
				
			||||||
 | 
					        // return new L.tileLayer.provider(name, options);
 | 
				
			||||||
 | 
					        return undefined;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								State.ts
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								State.ts
									
										
									
									
									
								
							| 
						 | 
					@ -131,7 +131,7 @@ export class State {
 | 
				
			||||||
                if (fl === undefined || isNaN(fl)) {
 | 
					                if (fl === undefined || isNaN(fl)) {
 | 
				
			||||||
                    return undefined;
 | 
					                    return undefined;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                return ("" + fl).substr(0, 6);
 | 
					                return ("" + fl).substr(0, 8);
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,10 @@
 | 
				
			||||||
import {UIElement} from "./UIElement";
 | 
					import {UIElement} from "./UIElement";
 | 
				
			||||||
import AvailableBaseLayers, {BaseLayer} from "../Logic/AvailableBaseLayers";
 | 
					import AvailableBaseLayers from "../Logic/AvailableBaseLayers";
 | 
				
			||||||
import {DropDown} from "./Input/DropDown";
 | 
					import {DropDown} from "./Input/DropDown";
 | 
				
			||||||
import Translations from "./i18n/Translations";
 | 
					import Translations from "./i18n/Translations";
 | 
				
			||||||
import {State} from "../State";
 | 
					import {State} from "../State";
 | 
				
			||||||
import {UIEventSource} from "../Logic/UIEventSource";
 | 
					import {UIEventSource} from "../Logic/UIEventSource";
 | 
				
			||||||
 | 
					import {BaseLayer} from "../Logic/BaseLayer";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class BackgroundSelector extends UIElement {
 | 
					export default class BackgroundSelector extends UIElement {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										38
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										38
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -1011,8 +1011,23 @@
 | 
				
			||||||
    "@types/geojson": {
 | 
					    "@types/geojson": {
 | 
				
			||||||
      "version": "1.0.6",
 | 
					      "version": "1.0.6",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-1.0.6.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-1.0.6.tgz",
 | 
				
			||||||
      "integrity": "sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w==",
 | 
					      "integrity": "sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w=="
 | 
				
			||||||
      "optional": true
 | 
					    },
 | 
				
			||||||
 | 
					    "@types/leaflet": {
 | 
				
			||||||
 | 
					      "version": "1.5.17",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.5.17.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-2XYq9k6kNjhNI7PaTz8Rdxcc8Vzwu97OaS9CtcrTxnTSxFUGwjlGjTDvhTLJU+JRSfZ4lBwGcl0SjZHALdVr6g==",
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@types/geojson": "*"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "@types/leaflet-providers": {
 | 
				
			||||||
 | 
					      "version": "1.2.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@types/leaflet-providers/-/leaflet-providers-1.2.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-xuIUo0rEtuKdKIWwtLH0mD+dgSy/CRspVPa0nI/SuPLS29H7q+GPO4Qluxzkk+u9qvMtTjxqkrJjtnsx96+aPQ==",
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@types/leaflet": "*"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@types/node": {
 | 
					    "@types/node": {
 | 
				
			||||||
      "version": "7.10.11",
 | 
					      "version": "7.10.11",
 | 
				
			||||||
| 
						 | 
					@ -4182,6 +4197,11 @@
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw=="
 | 
					      "integrity": "sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "leaflet-providers": {
 | 
				
			||||||
 | 
					      "version": "1.10.2",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/leaflet-providers/-/leaflet-providers-1.10.2.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-1l867LObxwuFBeyPeBewip8PAXKOnvEoujq4/9y2TKTiZNHH76ksBD6dfktGjgUrOF+IdjsGHkpASPE+v2DQLw=="
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "leven": {
 | 
					    "leven": {
 | 
				
			||||||
      "version": "3.1.0",
 | 
					      "version": "3.1.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
 | 
				
			||||||
| 
						 | 
					@ -4635,12 +4655,6 @@
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ=="
 | 
					      "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node-forge": {
 | 
					 | 
				
			||||||
      "version": "0.10.0",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "node-libs-browser": {
 | 
					    "node-libs-browser": {
 | 
				
			||||||
      "version": "2.2.1",
 | 
					      "version": "2.2.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
 | 
				
			||||||
| 
						 | 
					@ -5219,6 +5233,7 @@
 | 
				
			||||||
        "json5": "^1.0.1",
 | 
					        "json5": "^1.0.1",
 | 
				
			||||||
        "micromatch": "^3.0.4",
 | 
					        "micromatch": "^3.0.4",
 | 
				
			||||||
        "mkdirp": "^0.5.1",
 | 
					        "mkdirp": "^0.5.1",
 | 
				
			||||||
 | 
					        "node-forge": "^0.7.1",
 | 
				
			||||||
        "node-libs-browser": "^2.0.0",
 | 
					        "node-libs-browser": "^2.0.0",
 | 
				
			||||||
        "opn": "^5.1.0",
 | 
					        "opn": "^5.1.0",
 | 
				
			||||||
        "postcss": "^7.0.11",
 | 
					        "postcss": "^7.0.11",
 | 
				
			||||||
| 
						 | 
					@ -5234,6 +5249,13 @@
 | 
				
			||||||
        "terser": "^3.7.3",
 | 
					        "terser": "^3.7.3",
 | 
				
			||||||
        "v8-compile-cache": "^2.0.0",
 | 
					        "v8-compile-cache": "^2.0.0",
 | 
				
			||||||
        "ws": "^5.1.1"
 | 
					        "ws": "^5.1.1"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "node-forge": {
 | 
				
			||||||
 | 
					          "version": "0.7.6",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw=="
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "parcel-plugin-static-files-copy": {
 | 
					    "parcel-plugin-static-files-copy": {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,10 +25,12 @@
 | 
				
			||||||
  "author": "pietervdvn",
 | 
					  "author": "pietervdvn",
 | 
				
			||||||
  "license": "MIT",
 | 
					  "license": "MIT",
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "@types/leaflet-providers": "^1.2.0",
 | 
				
			||||||
    "codegrid-js": "git://github.com/hlaw/codegrid-js.git",
 | 
					    "codegrid-js": "git://github.com/hlaw/codegrid-js.git",
 | 
				
			||||||
    "email-validator": "^2.0.4",
 | 
					    "email-validator": "^2.0.4",
 | 
				
			||||||
    "jquery": "latest",
 | 
					    "jquery": "latest",
 | 
				
			||||||
    "leaflet": "^1.7.1",
 | 
					    "leaflet": "^1.7.1",
 | 
				
			||||||
 | 
					    "leaflet-providers": "^1.10.2",
 | 
				
			||||||
    "libphonenumber": "0.0.10",
 | 
					    "libphonenumber": "0.0.10",
 | 
				
			||||||
    "libphonenumber-js": "^1.7.55",
 | 
					    "libphonenumber-js": "^1.7.55",
 | 
				
			||||||
    "osm-auth": "^1.0.2",
 | 
					    "osm-auth": "^1.0.2",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue