@geosdi/ngx-leaflet-minimap-plugin 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,69 +12,83 @@ Service to wrap Leaflet.MiniMap see documentation to https://github.com/Norkart/
12
12
 
13
13
  It depends on :
14
14
 
15
- "@angular/common": ">=13.0.0",
16
- "@angular/core": ">=13.0.0",
17
- "typescript": ">=4.4.4",
18
- "leaflet": ">=1.7.1",
19
- "rxjs": "^7.4.0",
20
- "leaflet-minimap": "^3.6.1"
15
+ "@angular/common": ">=20.0.0",
16
+ "@angular/core": ">=20.0.0",
17
+ "typescript": ">=5.0.0",
18
+ "leaflet": ">=1.9.3",
19
+ "rxjs": ">=7.8.2",
20
+ "leaflet-minimap": ">=3.6.1"
21
+
22
+ ## The base layer
23
+
24
+ `withLayer` is optional: without it the minimap shows OpenStreetMap, requested the way their
25
+ [tile usage policy](https://operations.osmfoundation.org/policies/tiles/) asks — the single host
26
+ `tile.openstreetmap.org`, a visible credit linking to `openstreetmap.org/copyright`, and tiles
27
+ downloaded no deeper than zoom 13 (above that Leaflet scales them up, so the minimap never goes
28
+ blank). A client that does not attribute and keeps asking for tiles it does not need is the one OSM
29
+ answers with a 403 "Access blocked" tile.
30
+
31
+ That default is a courtesy, not a plan: those servers are run by volunteers and their policy
32
+ forbids relying on them for an application you distribute. Pass your own layer — for example
33
+ `NgxLeafletLayersPluginService.createLayer(...)`, which builds the same layers as the main map — and
34
+ the default is never used.
21
35
 
22
36
  ## Usage
23
37
 
24
- ```typescript
38
+ ```typescript
25
39
 
26
40
  @Injectable({
27
- providedIn: 'root'
41
+ providedIn: 'root'
28
42
  })
29
43
  export class BootstrapService {
30
44
 
31
45
 
32
- constructor(private ngxLeafletPrintPluginService: NgxLeafletPrintPluginService) {
33
- }
34
-
35
- public initMiniMap() {
36
- this.ngxLeafletMinimapPluginService
37
- .withMap(this.map)
38
- .withLayer(this.ngxLeafletLayersPluginService.createLayer(BaseLayerEnum.OPEN_STREET_MAP))
39
- .withZoomLevelOffset(-3)
40
- .withAutoToogleDisplay(false)
41
- .withToogleDisplay(true)
42
- .withPosition('bottomright')
43
- .withHeight(150)
44
- .withWidth(150)
45
- .withCollapsedWidth(9)
46
- .withCollapsedWidth(9)
47
- .withCenterFixed([lat, lng])
48
- .withMinimized(true)
49
- .withStrings(strings: { hideText: 'Hide', showText: 'Show' }
50
- .withZoomAnimation()
51
- .withZoomLevelFixed(3)
52
- .withZoomLevelOffset(3)
53
- .applyMiniMapPlugin();
54
- }
46
+ constructor(private ngxLeafletPrintPluginService: NgxLeafletPrintPluginService) {
47
+ }
48
+
49
+ public initMiniMap() {
50
+ this.ngxLeafletMinimapPluginService
51
+ .withMap(this.map)
52
+ .withLayer(this.ngxLeafletLayersPluginService.createLayer(BaseLayerEnum.OPEN_STREET_MAP))
53
+ .withZoomLevelOffset(-3)
54
+ .withAutoToogleDisplay(false)
55
+ .withToogleDisplay(true)
56
+ .withPosition('bottomright')
57
+ .withHeight(150)
58
+ .withWidth(150)
59
+ .withCollapsedWidth(9)
60
+ .withCollapsedWidth(9)
61
+ .withCenterFixed([lat, lng])
62
+ .withMinimized(true)
63
+ .withStrings(strings: { hideText: 'Hide', showText: 'Show' }
64
+ .withZoomAnimation()
65
+ .withZoomLevelFixed(3)
66
+ .withZoomLevelOffset(3)
67
+ .applyMiniMapPlugin();
68
+ }
55
69
 
56
70
  }
57
71
 
58
- ```
72
+ ```
59
73
 
60
74
  ## Methods
61
75
 
62
- | Method | action
63
- | ------------- | ------------- |
64
- | withMap(map: any): NgxLeafletMinimapPluginService | the leaflet map |
65
- | withLayer(layer: any): NgxLeafletMinimapPluginService | base layer to display|
66
- | withToogleDisplay(toogle: boolean): NgxLeafletMinimapPluginService | Sets whether the minimap should have a button to minimise it. Defaults to false.|
67
- | withAutoToogleDisplay(autoToogleDislay: boolean): NgxLeafletMinimapPluginService| Sets whether the minimap should hide automatically if the parent map bounds does not fit within the minimap bounds. Especially useful when 'zoomLevelFixed' is set.|
68
- | withPosition(position: 'topleft' | 'topright' | 'bottomleft' | 'bottomright'): NgxLeafletMinimapPluginService| position of the button|
69
- | withHeight(height: number): NgxLeafletMinimapPluginService| The height of the minimap in pixels. Defaults to 150|
70
- | withWidth(width: number): NgxLeafletMinimapPluginService| The width of the minimap in pixels. Defaults to 150|
71
- | withCollapseHeight(collapseHeight: number): NgxLeafletMinimapPluginService| The width of the toggle marker and the minimap when collapsed, in pixels. Defaults to 19.|
72
- | withCollapseWidth(collapseWidth: number): NgxLeafletMinimapPluginService| The height of the toggle marker and the minimap when collapsed, in pixels. Defaults to 19.|
73
- | withZoomLevelOffset(zoomLevelOffset: number): NgxLeafletMinimapPluginService| The offset applied to the zoom in the minimap compared to the zoom of the main map. Can be positive or negative, defaults to -5.|
74
- | withZoomLevelFixed(zoomLevelFixed: number): NgxLeafletMinimapPluginService| Overrides the offset to apply a fixed zoom level to the minimap regardless of the main map zoom. Set it to any valid zoom level, if unset zoomLevelOffset is used instead.|
75
- | withCenterFixed(centerFixed: number[]): NgxLeafletMinimapPluginService| Applies a fixed position to the minimap regardless of the main map's view / position. Prevents panning the minimap, but does allow zooming (both in the minimap and the main map). If the minimap is zoomed, it will always zoom around the centerFixed point. You can pass in a LatLng-equivalent object. Defaults to false.|
76
- | withZoomAnimation(zoomAnimation: any): NgxLeafletMinimapPluginService| Sets whether the minimap should have an animated zoom. (Will cause it to lag a bit after the movement of the main map.) Defaults to false.|
77
- | withMimimized(minimized: boolean): NgxLeafletMinimapPluginService| Sets whether the minimap should start in a minimized position.|
78
- | withStrings(strings: {hideText: string, showText: string}): NgxLeafletMinimapPluginService| Overrides the default strings allowing for translation. |
79
- | applyMiniMapPlugin(): void| add plugin to map|
80
- | changeLayer(layer: any): void| change base layer to map|
76
+ | Method | action |
77
+ | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
78
+ | withMap(map: any): NgxLeafletMinimapPluginService | the leaflet map |
79
+ | withLayer(layer: any): NgxLeafletMinimapPluginService | base layer to display |
80
+ | withToogleDisplay(toogle: boolean): NgxLeafletMinimapPluginService | Sets whether the minimap should have a button to minimise it. Defaults to false. |
81
+ | withAutoToogleDisplay(autoToogleDislay: boolean): NgxLeafletMinimapPluginService | Sets whether the minimap should hide automatically if the parent map bounds does not fit within the minimap bounds. Especially useful when 'zoomLevelFixed' is set. |
82
+ | withPosition(position: 'topleft' | 'topright' | 'bottomleft' | 'bottomright'): NgxLeafletMinimapPluginService | position of the button |
83
+ | withHeight(height: number): NgxLeafletMinimapPluginService | The height of the minimap in pixels. Defaults to 150 |
84
+ | withWidth(width: number): NgxLeafletMinimapPluginService | The width of the minimap in pixels. Defaults to 150 |
85
+ | withCollapseHeight(collapseHeight: number): NgxLeafletMinimapPluginService | The width of the toggle marker and the minimap when collapsed, in pixels. Defaults to 19. |
86
+ | withCollapseWidth(collapseWidth: number): NgxLeafletMinimapPluginService | The height of the toggle marker and the minimap when collapsed, in pixels. Defaults to 19. |
87
+ | withZoomLevelOffset(zoomLevelOffset: number): NgxLeafletMinimapPluginService | The offset applied to the zoom in the minimap compared to the zoom of the main map. Can be positive or negative, defaults to -5. |
88
+ | withZoomLevelFixed(zoomLevelFixed: number): NgxLeafletMinimapPluginService | Overrides the offset to apply a fixed zoom level to the minimap regardless of the main map zoom. Set it to any valid zoom level, if unset zoomLevelOffset is used instead. |
89
+ | withCenterFixed(centerFixed: number[]): NgxLeafletMinimapPluginService | Applies a fixed position to the minimap regardless of the main map's view / position. Prevents panning the minimap, but does allow zooming (both in the minimap and the main map). If the minimap is zoomed, it will always zoom around the centerFixed point. You can pass in a LatLng-equivalent object. Defaults to false. |
90
+ | withZoomAnimation(zoomAnimation: any): NgxLeafletMinimapPluginService | Sets whether the minimap should have an animated zoom. (Will cause it to lag a bit after the movement of the main map.) Defaults to false. |
91
+ | withMimimized(minimized: boolean): NgxLeafletMinimapPluginService | Sets whether the minimap should start in a minimized position. |
92
+ | withStrings(strings: {hideText: string, showText: string}): NgxLeafletMinimapPluginService | Overrides the default strings allowing for translation. |
93
+ | applyMiniMapPlugin(): void | add plugin to map |
94
+ | changeLayer(layer: any): void | change base layer to map |
@@ -9,7 +9,40 @@ class NgxLeafletMinimapPluginService {
9
9
  constructor() {
10
10
  this.subjectMiniMapEvent$ = new Subject();
11
11
  this.subjectChangeLayer$ = new Subject();
12
- this.layer = new L.TileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { minZoom: 0, maxZoom: 13 });
12
+ /**
13
+ * Lo sfondo di ripiego, per chi non passa `withLayer`.
14
+ *
15
+ * Chiede i tile di OSM come la loro
16
+ * {@link https://operations.osmfoundation.org/policies/tiles/ usage policy}
17
+ * pretende, che è la stessa regola del basemap in
18
+ * `ngx-leaflet-layers-plugin` — e chi non la rispetta si vede rispondere
19
+ * **403 con il tile «Access blocked»**, che a video non è un errore ma un
20
+ * riquadro grigio, quindi si cerca il guasto nel codice che disegna :
21
+ *
22
+ * - **host singolo**, niente sottodomini `{s}` : quelli servivano a
23
+ * moltiplicare le connessioni parallele di HTTP/1.1 verso server tenuti da
24
+ * volontari, sono deprecati e oggi sono solo carico in più;
25
+ * - **attribuzione cliccabile**, verso `openstreetmap.org/copyright`;
26
+ * - **fin dove si vuole chiedere**, che è la coppia qui sotto.
27
+ *
28
+ * `maxNativeZoom` a 13 **non** è un limite di quanto si può zoomare : è fin
29
+ * dove i tile si scaricano, e sopra Leaflet ingrandisce quelli che ha. Tenuto
30
+ * basso di proposito — la minimappa è un riquadro da 150px, dove un tile z13
31
+ * ingrandito non si distingue da uno z18 nuovo, e ogni livello in più sarebbe
32
+ * un'altra griglia di richieste a quei server per niente. È il risparmio che
33
+ * il vecchio `maxZoom: 13` otteneva, ma quello **nascondeva il layer** oltre
34
+ * il 13 : su una mappa che zooma più in là — maplite in Agitec arriva a 30 —
35
+ * la minimappa restava **bianca**, senza che niente lo dicesse.
36
+ *
37
+ * La minimappa raddoppia le richieste di una pagina, perché mostra lo stesso
38
+ * sfondo della mappa grande : è il motivo per cui qui conta più che altrove.
39
+ */
40
+ this.layer = new L.TileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
41
+ minZoom: 0,
42
+ maxNativeZoom: 13,
43
+ maxZoom: 22,
44
+ attribution: '&copy; <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener">OpenStreetMap</a> contributors',
45
+ });
13
46
  this.position = "bottomright";
14
47
  this.toogle = true;
15
48
  this.autoToogleDisplay = true;
@@ -172,10 +205,10 @@ class NgxLeafletMinimapPluginService {
172
205
  });
173
206
  }
174
207
  }
175
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: NgxLeafletMinimapPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
176
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: NgxLeafletMinimapPluginService, providedIn: "root" }); }
208
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgxLeafletMinimapPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
209
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgxLeafletMinimapPluginService, providedIn: "root" }); }
177
210
  }
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: NgxLeafletMinimapPluginService, decorators: [{
211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgxLeafletMinimapPluginService, decorators: [{
179
212
  type: Injectable,
180
213
  args: [{
181
214
  providedIn: "root",
@@ -1 +1 @@
1
- {"version":3,"file":"geosdi-ngx-leaflet-minimap-plugin.mjs","sources":["../tmp-esm2022/lib/ngx-leaflet-minimap-plugin.service.js","../tmp-esm2022/index.js","../tmp-esm2022/geosdi-ngx-leaflet-minimap-plugin.js"],"sourcesContent":["//@ts-ignore\nimport * as L from \"leaflet\";\nimport { Injectable } from \"@angular/core\";\n//@ts-ignore\nimport MiniMap from \"leaflet-minimap\";\nimport { Subject } from \"rxjs\";\nimport * as i0 from \"@angular/core\";\nexport class NgxLeafletMinimapPluginService {\n constructor() {\n this.subjectMiniMapEvent$ = new Subject();\n this.subjectChangeLayer$ = new Subject();\n this.layer = new L.TileLayer(\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\", { minZoom: 0, maxZoom: 13 });\n this.position = \"bottomright\";\n this.toogle = true;\n this.autoToogleDisplay = true;\n this.height = 150;\n this.width = 150;\n this.collapsedHeight = 19;\n this.collapsedWidth = 19;\n this.minimized = false;\n this.strings = {\n hideText: \"Nascondi\",\n showText: \"Mostra\",\n };\n this.zoomLevelOffset = -5;\n this.subjectChangeLayer$.subscribe((theLayer) => (this.layer = theLayer));\n }\n /**\n * @param map\n */\n withMap(map) {\n this.map = map;\n return this;\n }\n withToogleDisplay(toogle) {\n this.toogle = toogle;\n return this;\n }\n /**\n * @param autoToogleDislay\n */\n withAutoToogleDisplay(autoToogleDislay) {\n this.autoToogleDisplay = autoToogleDislay;\n return this;\n }\n /**\n * @param layer\n */\n withLayer(layer) {\n this.layer = layer;\n return this;\n }\n /**\n * @param position\n */\n withPosition(position) {\n this.position = position;\n return this;\n }\n /**\n * @param height\n */\n withHeight(height) {\n this.height = height;\n return this;\n }\n /**\n * @param width\n */\n withWidth(width) {\n this.width = width;\n return this;\n }\n /**\n * @param centerFixed\n */\n withCenterFixed(centerFixed) {\n this.centerFixed = centerFixed;\n return this;\n }\n /**\n * @param collapseHeight\n */\n withCollapseHeight(collapseHeight) {\n this.collapsedHeight = collapseHeight;\n return this;\n }\n /**\n * @param collapseWidth\n */\n withCollapseWidth(collapseWidth) {\n this.collapsedWidth = collapseWidth;\n return this;\n }\n /**\n * @param minimized\n */\n withMimimized(minimized) {\n this.minimized = minimized;\n return this;\n }\n withStrings(strings) {\n this.strings = strings;\n return this;\n }\n /**\n * @param zoomAnimation\n */\n withZoomAnimation(zoomAnimation) {\n this.zoomAnimation = zoomAnimation;\n return this;\n }\n /**\n * @param zoomLevelFixed\n */\n withZoomLevelFixed(zoomLevelFixed) {\n this.zoomLevelFixed = zoomLevelFixed;\n return this;\n }\n /**\n * @param zoomLevelOffset\n */\n withZoomLevelOffset(zoomLevelOffset) {\n this.zoomLevelOffset = zoomLevelOffset;\n return this;\n }\n /**\n * @param theMapOptions\n */\n withMapOptions(theMapOptions) {\n this.mapOptions = theMapOptions;\n return this;\n }\n /**\n * @param layer\n */\n changeLayer(layer) {\n this.layer = layer;\n this._miniMap?.changeLayer(this.layer);\n }\n /**\n *\n */\n get minimap() {\n return this._miniMap;\n }\n /**\n */\n applyMiniMapPlugin() {\n if (this.map) {\n this._miniMap = new MiniMap(this.layer, {\n position: this.position,\n width: this.width,\n height: this.height,\n collapsedWidth: this.collapsedWidth,\n collapsedHeight: this.collapsedHeight,\n zoomLevelOffset: this.zoomLevelOffset,\n zoomLevelFixed: this.zoomLevelFixed,\n centerFixed: this.centerFixed,\n zoomAnimation: this.zoomAnimation,\n toggleDisplay: this.toogle,\n autoToggleDisplay: this.autoToogleDisplay,\n minimized: this.minimized,\n strings: this.strings,\n //mapOptions: this.mapOptions\n }).addTo(this.map);\n this._miniMap.on(\"minimize\", () => {\n this.subjectMiniMapEvent$.next(false);\n });\n this._miniMap.on(\"restore\", () => {\n this.subjectMiniMapEvent$.next(true);\n });\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.6\", ngImport: i0, type: NgxLeafletMinimapPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.6\", ngImport: i0, type: NgxLeafletMinimapPluginService, providedIn: \"root\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.6\", ngImport: i0, type: NgxLeafletMinimapPluginService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: \"root\",\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxlYWZsZXQtbWluaW1hcC1wbHVnaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlb3NkaS9sZWFmbGV0L25neC1sZWFmbGV0LW1pbmltYXAtcGx1Z2luL3NyYy9saWIvbmd4LWxlYWZsZXQtbWluaW1hcC1wbHVnaW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osT0FBTyxLQUFLLENBQUMsTUFBTSxTQUFTLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxZQUFZO0FBQ1osT0FBTyxPQUFPLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUE2Ry9CLE1BQU0sT0FBTyw4QkFBOEI7SUE2QnZDO1FBMUJBLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDOUMsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUVqQyxVQUFLLEdBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUNoQyxvREFBb0QsRUFDcEQsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FDOUIsQ0FBQztRQUVNLGFBQVEsR0FBVyxhQUFhLENBQUM7UUFDakMsV0FBTSxHQUFZLElBQUksQ0FBQztRQUN2QixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsV0FBTSxHQUFXLEdBQUcsQ0FBQztRQUNyQixVQUFLLEdBQVcsR0FBRyxDQUFDO1FBQ3BCLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQzdCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRTVCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsWUFBTyxHQUEyQztZQUN0RCxRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsUUFBUTtTQUNyQixDQUFDO1FBR00s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QUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO2lJQWhOUSw4QkFBOEI7cUlBQTlCLDhCQUE4QixjQUYzQixNQUFNOzsyRkFFVCw4QkFBOEI7a0JBSDFDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLy9AdHMtaWdub3JlXG5pbXBvcnQgKiBhcyBMIGZyb20gXCJsZWFmbGV0XCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbi8vQHRzLWlnbm9yZVxuaW1wb3J0IE1pbmlNYXAgZnJvbSBcImxlYWZsZXQtbWluaW1hcFwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5cbi8qKlxuICogQGF1dGhvciBWaXRvIFNhbHZpYSAtIENOUiBJTUFBIGdlb1NESSBHcm91cFxuICogQGVtYWlsIHZpdG8uc2FsdmlhQGdtYWlsLmNvbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtYXBcbiAgICAgKi9cbiAgICB3aXRoTWFwKG1hcDogYW55KTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGxheWVyXG4gICAgICovXG4gICAgd2l0aExheWVyKGxheWVyOiBhbnkpOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gdG9vZ2xlXG4gICAgICovXG4gICAgd2l0aFRvb2dsZURpc3BsYXkodG9vZ2xlOiBib29sZWFuKTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGF1dG9Ub29nbGVEaXNsYXlcbiAgICAgKi9cbiAgICB3aXRoQXV0b1Rvb2dsZURpc3BsYXkoXG4gICAgICAgIGF1dG9Ub29nbGVEaXNsYXk6IGJvb2xlYW4sXG4gICAgKTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBvc2l0aW9uXG4gICAgICovXG4gICAgd2l0aFBvc2l0aW9uKFxuICAgICAgICBwb3NpdGlvbjogXCJ0b3BsZWZ0XCIgfCBcInRvcHJpZ2h0XCIgfCBcImJvdHRvbWxlZnRcIiB8IFwiYm90dG9tcmlnaHRcIixcbiAgICApOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gaGVpZ2h0XG4gICAgICovXG4gICAgd2l0aEhlaWdodChoZWlnaHQ6IG51bWJlcik6IE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB3aWR0aFxuICAgICAqL1xuICAgIHdpdGhXaWR0aCh3aWR0aDogbnVtYmVyKTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGNvbGxhcHNlSGVpZ2h0XG4gICAgICovXG4gICAgd2l0aENvbGxhcHNlSGVpZ2h0KGNvbGxhcHNlSGVpZ2h0OiBudW1iZXIpOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY29sbGFwc2VXaWR0aFxuICAgICAqL1xuICAgIHdpdGhDb2xsYXBzZVdpZHRoKGNvbGxhcHNlV2lkdGg6IG51bWJlcik6IE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB6b29tTGV2ZWxPZmZzZXRcbiAgICAgKi9cbiAgICB3aXRoWm9vbUxldmVsT2Zmc2V0KFxuICAgICAgICB6b29tTGV2ZWxPZmZzZXQ6IG51bWJlcixcbiAgICApOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gem9vbUxldmVsT2Zmc2V0XG4gICAgICovXG4gICAgd2l0aFpvb21MZXZlbEZpeGVkKHpvb21MZXZlbEZpeGVkOiBudW1iZXIpOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY2VudGVyRml4ZWRcbiAgICAgKi9cbiAgICB3aXRoQ2VudGVyRml4ZWQoY2VudGVyRml4ZWQ6IG51bWJlcltdKTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHpvb21BbmltYXRpb25cbiAgICAgKi9cbiAgICB3aXRoWm9vbUFuaW1hdGlvbih6b29tQW5pbWF0aW9uOiBhbnkpOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWluaW1pemVkXG4gICAgICovXG4gICAgd2l0aE1pbWltaXplZChtaW5pbWl6ZWQ6IGJvb2xlYW4pOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RyaW5nc1xuICAgICAqL1xuICAgIHdpdGhTdHJpbmdzKHN0cmluZ3M6IHtcbiAgICAgICAgaGlkZVRleHQ6IHN0cmluZztcbiAgICAgICAgc2hvd1RleHQ6IHN0cmluZztcbiAgICB9KTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHRoZU1hcE9wdGlvbnNcbiAgICAgKi9cbiAgICB3aXRoTWFwT3B0aW9ucyh0aGVNYXBPcHRpb25zOiBhbnkpOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKi9cbiAgICBhcHBseU1pbmlNYXBQbHVnaW4oKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBsYXllclxuICAgICAqL1xuICAgIGNoYW5nZUxheWVyKGxheWVyOiBhbnkpOiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZVxuICAgIGltcGxlbWVudHMgSU5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZVxue1xuICAgIHN1YmplY3RNaW5pTWFwRXZlbnQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBzdWJqZWN0Q2hhbmdlTGF5ZXIkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgbWFwOiBhbnk7XG4gICAgcHJpdmF0ZSBsYXllcjogYW55ID0gbmV3IEwuVGlsZUxheWVyKFxuICAgICAgICBcImh0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nXCIsXG4gICAgICAgIHsgbWluWm9vbTogMCwgbWF4Wm9vbTogMTMgfSxcbiAgICApO1xuICAgIHByaXZhdGUgX21pbmlNYXA6IGFueTtcbiAgICBwcml2YXRlIHBvc2l0aW9uOiBzdHJpbmcgPSBcImJvdHRvbXJpZ2h0XCI7XG4gICAgcHJpdmF0ZSB0b29nbGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgYXV0b1Rvb2dsZURpc3BsYXk6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgaGVpZ2h0OiBudW1iZXIgPSAxNTA7XG4gICAgcHJpdmF0ZSB3aWR0aDogbnVtYmVyID0gMTUwO1xuICAgIHByaXZhdGUgY29sbGFwc2VkSGVpZ2h0OiBudW1iZXIgPSAxOTtcbiAgICBwcml2YXRlIGNvbGxhcHNlZFdpZHRoOiBudW1iZXIgPSAxOTtcbiAgICBwcml2YXRlIGNlbnRlckZpeGVkOiBudW1iZXJbXTtcbiAgICBwcml2YXRlIG1pbmltaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3RyaW5nczogeyBoaWRlVGV4dDogc3RyaW5nOyBzaG93VGV4dDogc3RyaW5nIH0gPSB7XG4gICAgICAgIGhpZGVUZXh0OiBcIk5hc2NvbmRpXCIsXG4gICAgICAgIHNob3dUZXh0OiBcIk1vc3RyYVwiLFxuICAgIH07XG4gICAgcHJpdmF0ZSB6b29tQW5pbWF0aW9uOiBhbnk7XG4gICAgcHJpdmF0ZSB6b29tTGV2ZWxGaXhlZDogbnVtYmVyO1xuICAgIHByaXZhdGUgem9vbUxldmVsT2Zmc2V0OiBudW1iZXIgPSAtNTtcbiAgICBwcml2YXRlIG1hcE9wdGlvbnM6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN1YmplY3RDaGFuZ2VMYXllciQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHRoZUxheWVyOiBhbnkpID0+ICh0aGlzLmxheWVyID0gdGhlTGF5ZXIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtYXBcbiAgICAgKi9cbiAgICB3aXRoTWFwKG1hcDogYW55KTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlIHtcbiAgICAgICAgdGhpcy5tYXAgPSBtYXA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhUb29nbGVEaXNwbGF5KHRvb2dsZTogYm9vbGVhbik6IE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZSB7XG4gICAgICAgIHRoaXMudG9vZ2xlID0gdG9vZ2xlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYXV0b1Rvb2dsZURpc2xheVxuICAgICAqL1xuICAgIHdpdGhBdXRvVG9vZ2xlRGlzcGxheShcbiAgICAgICAgYXV0b1Rvb2dsZURpc2xheTogYm9vbGVhbixcbiAgICApOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2Uge1xuICAgICAgICB0aGlzLmF1dG9Ub29nbGVEaXNwbGF5ID0gYXV0b1Rvb2dsZURpc2xheTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGxheWVyXG4gICAgICovXG4gICAgd2l0aExheWVyKGxheWVyOiBhbnkpOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2Uge1xuICAgICAgICB0aGlzLmxheWVyID0gbGF5ZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwb3NpdGlvblxuICAgICAqL1xuICAgIHdpdGhQb3NpdGlvbihcbiAgICAgICAgcG9zaXRpb246IFwidG9wbGVmdFwiIHwgXCJ0b3ByaWdodFwiIHwgXCJib3R0b21sZWZ0XCIgfCBcImJvdHRvbXJpZ2h0XCIsXG4gICAgKTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gaGVpZ2h0XG4gICAgICovXG4gICAgd2l0aEhlaWdodChoZWlnaHQ6IG51bWJlcik6IE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gd2lkdGhcbiAgICAgKi9cbiAgICB3aXRoV2lkdGgod2lkdGg6IG51bWJlcik6IE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZSB7XG4gICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGNlbnRlckZpeGVkXG4gICAgICovXG4gICAgd2l0aENlbnRlckZpeGVkKGNlbnRlckZpeGVkOiBudW1iZXJbXSk6IE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZSB7XG4gICAgICAgIHRoaXMuY2VudGVyRml4ZWQgPSBjZW50ZXJGaXhlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGNvbGxhcHNlSGVpZ2h0XG4gICAgICovXG4gICAgd2l0aENvbGxhcHNlSGVpZ2h0KGNvbGxhcHNlSGVpZ2h0OiBudW1iZXIpOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2Uge1xuICAgICAgICB0aGlzLmNvbGxhcHNlZEhlaWdodCA9IGNvbGxhcHNlSGVpZ2h0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY29sbGFwc2VXaWR0aFxuICAgICAqL1xuICAgIHdpdGhDb2xsYXBzZVdpZHRoKGNvbGxhcHNlV2lkdGg6IG51bWJlcik6IE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkV2lkdGggPSBjb2xsYXBzZVdpZHRoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWluaW1pemVkXG4gICAgICovXG4gICAgd2l0aE1pbWltaXplZChtaW5pbWl6ZWQ6IGJvb2xlYW4pOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2Uge1xuICAgICAgICB0aGlzLm1pbmltaXplZCA9IG1pbmltaXplZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFN0cmluZ3Moc3RyaW5nczoge1xuICAgICAgICBoaWRlVGV4dDogc3RyaW5nO1xuICAgICAgICBzaG93VGV4dDogc3RyaW5nO1xuICAgIH0pOiBOZ3hMZWFmbGV0TWluaW1hcFBsdWdpblNlcnZpY2Uge1xuICAgICAgICB0aGlzLnN0cmluZ3MgPSBzdHJpbmdzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gem9vbUFuaW1hdGlvblxuICAgICAqL1xuICAgIHdpdGhab29tQW5pbWF0aW9uKHpvb21BbmltYXRpb246IGFueSk6IE5neExlYWZsZXRNaW5pbWFwUGx1Z2luU2VydmljZSB7XG4gICAgICAgIHRoaXMuem9vbUFuaW1hdGlvbiA9IHpvb21BbmltYXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB6b29tTGV2ZWxGaXhlZFxuICAgICAqL1xuICAgIHdpdGhab29tTGV2ZWxGaXhlZCh6b29tTGV2ZWxGaXhlZDogbnVtYmVyKTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlIHtcbiAgICAgICAgdGhpcy56b29tTGV2ZWxGaXhlZCA9IHpvb21MZXZlbEZpeGVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gem9vbUxldmVsT2Zmc2V0XG4gICAgICovXG4gICAgd2l0aFpvb21MZXZlbE9mZnNldChcbiAgICAgICAgem9vbUxldmVsT2Zmc2V0OiBudW1iZXIsXG4gICAgKTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlIHtcbiAgICAgICAgdGhpcy56b29tTGV2ZWxPZmZzZXQgPSB6b29tTGV2ZWxPZmZzZXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB0aGVNYXBPcHRpb25zXG4gICAgICovXG4gICAgd2l0aE1hcE9wdGlvbnModGhlTWFwT3B0aW9uczogYW55KTogTmd4TGVhZmxldE1pbmltYXBQbHVnaW5TZXJ2aWNlIHtcbiAgICAgICAgdGhpcy5tYXBPcHRpb25zID0gdGhlTWFwT3B0aW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGxheWVyXG4gICAgICovXG4gICAgY2hhbmdlTGF5ZXIobGF5ZXI6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmxheWVyID0gbGF5ZXI7XG4gICAgICAgIHRoaXMuX21pbmlNYXA/LmNoYW5nZUxheWVyKHRoaXMubGF5ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgZ2V0IG1pbmltYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5pTWFwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqL1xuICAgIGFwcGx5TWluaU1hcFBsdWdpbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWFwKSB7XG4gICAgICAgICAgICB0aGlzLl9taW5pTWFwID0gbmV3IE1pbmlNYXAodGhpcy5sYXllciwge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICAgICAgICAgICAgY29sbGFwc2VkV2lkdGg6IHRoaXMuY29sbGFwc2VkV2lkdGgsXG4gICAgICAgICAgICAgICAgY29sbGFwc2VkSGVpZ2h0OiB0aGlzLmNvbGxhcHNlZEhlaWdodCxcbiAgICAgICAgICAgICAgICB6b29tTGV2ZWxPZmZzZXQ6IHRoaXMuem9vbUxldmVsT2Zmc2V0LFxuICAgICAgICAgICAgICAgIHpvb21MZXZlbEZpeGVkOiB0aGlzLnpvb21MZXZlbEZpeGVkLFxuICAgICAgICAgICAgICAgIGNlbnRlckZpeGVkOiB0aGlzLmNlbnRlckZpeGVkLFxuICAgICAgICAgICAgICAgIHpvb21BbmltYXRpb246IHRoaXMuem9vbUFuaW1hdGlvbixcbiAgICAgICAgICAgICAgICB0b2dnbGVEaXNwbGF5OiB0aGlzLnRvb2dsZSxcbiAgICAgICAgICAgICAgICBhdXRvVG9nZ2xlRGlzcGxheTogdGhpcy5hdXRvVG9vZ2xlRGlzcGxheSxcbiAgICAgICAgICAgICAgICBtaW5pbWl6ZWQ6IHRoaXMubWluaW1pemVkLFxuICAgICAgICAgICAgICAgIHN0cmluZ3M6IHRoaXMuc3RyaW5ncyxcbiAgICAgICAgICAgICAgICAvL21hcE9wdGlvbnM6IHRoaXMubWFwT3B0aW9uc1xuICAgICAgICAgICAgfSkuYWRkVG8odGhpcy5tYXApO1xuICAgICAgICAgICAgdGhpcy5fbWluaU1hcC5vbihcIm1pbmltaXplXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YmplY3RNaW5pTWFwRXZlbnQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9taW5pTWFwLm9uKFwicmVzdG9yZVwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJqZWN0TWluaU1hcEV2ZW50JC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=","/*\n * Public API Surface of ngx-leaflet-minimap-plugin\n */\nexport * from \"./lib/ngx-leaflet-minimap-plugin.service\";\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW9zZGkvbGVhZmxldC9uZ3gtbGVhZmxldC1taW5pbWFwLXBsdWdpbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDBDQUEwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtbGVhZmxldC1taW5pbWFwLXBsdWdpblxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9uZ3gtbGVhZmxldC1taW5pbWFwLXBsdWdpbi5zZXJ2aWNlXCI7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2Vvc2RpLW5neC1sZWFmbGV0LW1pbmltYXAtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2Vvc2RpL2xlYWZsZXQvbmd4LWxlYWZsZXQtbWluaW1hcC1wbHVnaW4vc3JjL2dlb3NkaS1uZ3gtbGVhZmxldC1taW5pbWFwLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geosdi-ngx-leaflet-minimap-plugin.mjs","sources":["../../../../projects/geosdi/leaflet/ngx-leaflet-minimap-plugin/src/lib/ngx-leaflet-minimap-plugin.service.ts","../../../../projects/geosdi/leaflet/ngx-leaflet-minimap-plugin/src/index.ts","../../../../projects/geosdi/leaflet/ngx-leaflet-minimap-plugin/src/geosdi-ngx-leaflet-minimap-plugin.ts"],"sourcesContent":["//@ts-ignore\nimport * as L from \"leaflet\";\nimport { Injectable } from \"@angular/core\";\n//@ts-ignore\nimport MiniMap from \"leaflet-minimap\";\nimport { Subject } from \"rxjs\";\n\n/**\n * @author Vito Salvia - CNR IMAA geoSDI Group\n * @email vito.salvia@gmail.com\n */\nexport interface INgxLeafletMinimapPluginService {\n /**\n * @param map\n */\n withMap(map: any): NgxLeafletMinimapPluginService;\n\n /**\n * @param layer\n */\n withLayer(layer: any): NgxLeafletMinimapPluginService;\n\n /**\n * @param toogle\n */\n withToogleDisplay(toogle: boolean): NgxLeafletMinimapPluginService;\n\n /**\n * @param autoToogleDislay\n */\n withAutoToogleDisplay(\n autoToogleDislay: boolean,\n ): NgxLeafletMinimapPluginService;\n\n /**\n * @param position\n */\n withPosition(\n position: \"topleft\" | \"topright\" | \"bottomleft\" | \"bottomright\",\n ): NgxLeafletMinimapPluginService;\n\n /**\n * @param height\n */\n withHeight(height: number): NgxLeafletMinimapPluginService;\n\n /**\n * @param width\n */\n withWidth(width: number): NgxLeafletMinimapPluginService;\n\n /**\n * @param collapseHeight\n */\n withCollapseHeight(collapseHeight: number): NgxLeafletMinimapPluginService;\n\n /**\n * @param collapseWidth\n */\n withCollapseWidth(collapseWidth: number): NgxLeafletMinimapPluginService;\n\n /**\n * @param zoomLevelOffset\n */\n withZoomLevelOffset(\n zoomLevelOffset: number,\n ): NgxLeafletMinimapPluginService;\n\n /**\n * @param zoomLevelOffset\n */\n withZoomLevelFixed(zoomLevelFixed: number): NgxLeafletMinimapPluginService;\n\n /**\n * @param centerFixed\n */\n withCenterFixed(centerFixed: number[]): NgxLeafletMinimapPluginService;\n\n /**\n * @param zoomAnimation\n */\n withZoomAnimation(zoomAnimation: any): NgxLeafletMinimapPluginService;\n\n /**\n * @param minimized\n */\n withMimimized(minimized: boolean): NgxLeafletMinimapPluginService;\n\n /**\n * @param strings\n */\n withStrings(strings: {\n hideText: string;\n showText: string;\n }): NgxLeafletMinimapPluginService;\n\n /**\n * @param theMapOptions\n */\n withMapOptions(theMapOptions: any): NgxLeafletMinimapPluginService;\n\n /**\n */\n applyMiniMapPlugin(): void;\n\n /**\n * @param layer\n */\n changeLayer(layer: any): void;\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class NgxLeafletMinimapPluginService implements INgxLeafletMinimapPluginService {\n subjectMiniMapEvent$ = new Subject<boolean>();\n subjectChangeLayer$ = new Subject<any>();\n private map: any;\n /**\n * Lo sfondo di ripiego, per chi non passa `withLayer`.\n *\n * Chiede i tile di OSM come la loro\n * {@link https://operations.osmfoundation.org/policies/tiles/ usage policy}\n * pretende, che è la stessa regola del basemap in\n * `ngx-leaflet-layers-plugin` — e chi non la rispetta si vede rispondere\n * **403 con il tile «Access blocked»**, che a video non è un errore ma un\n * riquadro grigio, quindi si cerca il guasto nel codice che disegna :\n *\n * - **host singolo**, niente sottodomini `{s}` : quelli servivano a\n * moltiplicare le connessioni parallele di HTTP/1.1 verso server tenuti da\n * volontari, sono deprecati e oggi sono solo carico in più;\n * - **attribuzione cliccabile**, verso `openstreetmap.org/copyright`;\n * - **fin dove si vuole chiedere**, che è la coppia qui sotto.\n *\n * `maxNativeZoom` a 13 **non** è un limite di quanto si può zoomare : è fin\n * dove i tile si scaricano, e sopra Leaflet ingrandisce quelli che ha. Tenuto\n * basso di proposito — la minimappa è un riquadro da 150px, dove un tile z13\n * ingrandito non si distingue da uno z18 nuovo, e ogni livello in più sarebbe\n * un'altra griglia di richieste a quei server per niente. È il risparmio che\n * il vecchio `maxZoom: 13` otteneva, ma quello **nascondeva il layer** oltre\n * il 13 : su una mappa che zooma più in là — maplite in Agitec arriva a 30 —\n * la minimappa restava **bianca**, senza che niente lo dicesse.\n *\n * La minimappa raddoppia le richieste di una pagina, perché mostra lo stesso\n * sfondo della mappa grande : è il motivo per cui qui conta più che altrove.\n */\n private layer: any = new L.TileLayer(\n \"https://tile.openstreetmap.org/{z}/{x}/{y}.png\",\n {\n minZoom: 0,\n maxNativeZoom: 13,\n maxZoom: 22,\n attribution:\n '&copy; <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\" rel=\"noopener\">OpenStreetMap</a> contributors',\n },\n );\n private _miniMap: any;\n private position: string = \"bottomright\";\n private toogle: boolean = true;\n private autoToogleDisplay: boolean = true;\n private height: number = 150;\n private width: number = 150;\n private collapsedHeight: number = 19;\n private collapsedWidth: number = 19;\n private centerFixed: number[];\n private minimized: boolean = false;\n private strings: { hideText: string; showText: string } = {\n hideText: \"Nascondi\",\n showText: \"Mostra\",\n };\n private zoomAnimation: any;\n private zoomLevelFixed: number;\n private zoomLevelOffset: number = -5;\n private mapOptions: any;\n\n constructor() {\n this.subjectChangeLayer$.subscribe(\n (theLayer: any) => (this.layer = theLayer),\n );\n }\n\n /**\n * @param map\n */\n withMap(map: any): NgxLeafletMinimapPluginService {\n this.map = map;\n return this;\n }\n\n withToogleDisplay(toogle: boolean): NgxLeafletMinimapPluginService {\n this.toogle = toogle;\n return this;\n }\n\n /**\n * @param autoToogleDislay\n */\n withAutoToogleDisplay(\n autoToogleDislay: boolean,\n ): NgxLeafletMinimapPluginService {\n this.autoToogleDisplay = autoToogleDislay;\n return this;\n }\n\n /**\n * @param layer\n */\n withLayer(layer: any): NgxLeafletMinimapPluginService {\n this.layer = layer;\n return this;\n }\n\n /**\n * @param position\n */\n withPosition(\n position: \"topleft\" | \"topright\" | \"bottomleft\" | \"bottomright\",\n ): NgxLeafletMinimapPluginService {\n this.position = position;\n return this;\n }\n\n /**\n * @param height\n */\n withHeight(height: number): NgxLeafletMinimapPluginService {\n this.height = height;\n return this;\n }\n\n /**\n * @param width\n */\n withWidth(width: number): NgxLeafletMinimapPluginService {\n this.width = width;\n return this;\n }\n\n /**\n * @param centerFixed\n */\n withCenterFixed(centerFixed: number[]): NgxLeafletMinimapPluginService {\n this.centerFixed = centerFixed;\n return this;\n }\n\n /**\n * @param collapseHeight\n */\n withCollapseHeight(collapseHeight: number): NgxLeafletMinimapPluginService {\n this.collapsedHeight = collapseHeight;\n return this;\n }\n\n /**\n * @param collapseWidth\n */\n withCollapseWidth(collapseWidth: number): NgxLeafletMinimapPluginService {\n this.collapsedWidth = collapseWidth;\n return this;\n }\n\n /**\n * @param minimized\n */\n withMimimized(minimized: boolean): NgxLeafletMinimapPluginService {\n this.minimized = minimized;\n return this;\n }\n\n withStrings(strings: {\n hideText: string;\n showText: string;\n }): NgxLeafletMinimapPluginService {\n this.strings = strings;\n return this;\n }\n\n /**\n * @param zoomAnimation\n */\n withZoomAnimation(zoomAnimation: any): NgxLeafletMinimapPluginService {\n this.zoomAnimation = zoomAnimation;\n return this;\n }\n\n /**\n * @param zoomLevelFixed\n */\n withZoomLevelFixed(zoomLevelFixed: number): NgxLeafletMinimapPluginService {\n this.zoomLevelFixed = zoomLevelFixed;\n return this;\n }\n\n /**\n * @param zoomLevelOffset\n */\n withZoomLevelOffset(\n zoomLevelOffset: number,\n ): NgxLeafletMinimapPluginService {\n this.zoomLevelOffset = zoomLevelOffset;\n return this;\n }\n\n /**\n * @param theMapOptions\n */\n withMapOptions(theMapOptions: any): NgxLeafletMinimapPluginService {\n this.mapOptions = theMapOptions;\n return this;\n }\n\n /**\n * @param layer\n */\n changeLayer(layer: any): void {\n this.layer = layer;\n this._miniMap?.changeLayer(this.layer);\n }\n\n /**\n *\n */\n get minimap() {\n return this._miniMap;\n }\n\n /**\n */\n applyMiniMapPlugin(): void {\n if (this.map) {\n this._miniMap = new MiniMap(this.layer, {\n position: this.position,\n width: this.width,\n height: this.height,\n collapsedWidth: this.collapsedWidth,\n collapsedHeight: this.collapsedHeight,\n zoomLevelOffset: this.zoomLevelOffset,\n zoomLevelFixed: this.zoomLevelFixed,\n centerFixed: this.centerFixed,\n zoomAnimation: this.zoomAnimation,\n toggleDisplay: this.toogle,\n autoToggleDisplay: this.autoToogleDisplay,\n minimized: this.minimized,\n strings: this.strings,\n //mapOptions: this.mapOptions\n }).addTo(this.map);\n this._miniMap.on(\"minimize\", () => {\n this.subjectMiniMapEvent$.next(false);\n });\n this._miniMap.on(\"restore\", () => {\n this.subjectMiniMapEvent$.next(true);\n });\n }\n }\n}\n","/*\n * Public API Surface of ngx-leaflet-minimap-plugin\n */\n\nexport * from \"./lib/ngx-leaflet-minimap-plugin.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geosdi/ngx-leaflet-minimap-plugin",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "Service to add minimap for Leaflet Map",
5
5
  "author": "Salvia Vito (vito.salvia@gmail.com)",
6
6
  "keywords": [
@@ -24,15 +24,16 @@
24
24
  "leaflet-minimap": ">=3.6.1"
25
25
  },
26
26
  "module": "fesm2022/geosdi-ngx-leaflet-minimap-plugin.mjs",
27
- "typings": "index.d.ts",
27
+ "typings": "types/geosdi-ngx-leaflet-minimap-plugin.d.ts",
28
28
  "exports": {
29
29
  "./package.json": {
30
30
  "default": "./package.json"
31
31
  },
32
32
  ".": {
33
- "types": "./index.d.ts",
33
+ "types": "./types/geosdi-ngx-leaflet-minimap-plugin.d.ts",
34
34
  "default": "./fesm2022/geosdi-ngx-leaflet-minimap-plugin.mjs"
35
35
  }
36
36
  },
37
- "sideEffects": false
37
+ "sideEffects": false,
38
+ "type": "module"
38
39
  }
@@ -85,6 +85,34 @@ declare class NgxLeafletMinimapPluginService implements INgxLeafletMinimapPlugin
85
85
  subjectMiniMapEvent$: Subject<boolean>;
86
86
  subjectChangeLayer$: Subject<any>;
87
87
  private map;
88
+ /**
89
+ * Lo sfondo di ripiego, per chi non passa `withLayer`.
90
+ *
91
+ * Chiede i tile di OSM come la loro
92
+ * {@link https://operations.osmfoundation.org/policies/tiles/ usage policy}
93
+ * pretende, che è la stessa regola del basemap in
94
+ * `ngx-leaflet-layers-plugin` — e chi non la rispetta si vede rispondere
95
+ * **403 con il tile «Access blocked»**, che a video non è un errore ma un
96
+ * riquadro grigio, quindi si cerca il guasto nel codice che disegna :
97
+ *
98
+ * - **host singolo**, niente sottodomini `{s}` : quelli servivano a
99
+ * moltiplicare le connessioni parallele di HTTP/1.1 verso server tenuti da
100
+ * volontari, sono deprecati e oggi sono solo carico in più;
101
+ * - **attribuzione cliccabile**, verso `openstreetmap.org/copyright`;
102
+ * - **fin dove si vuole chiedere**, che è la coppia qui sotto.
103
+ *
104
+ * `maxNativeZoom` a 13 **non** è un limite di quanto si può zoomare : è fin
105
+ * dove i tile si scaricano, e sopra Leaflet ingrandisce quelli che ha. Tenuto
106
+ * basso di proposito — la minimappa è un riquadro da 150px, dove un tile z13
107
+ * ingrandito non si distingue da uno z18 nuovo, e ogni livello in più sarebbe
108
+ * un'altra griglia di richieste a quei server per niente. È il risparmio che
109
+ * il vecchio `maxZoom: 13` otteneva, ma quello **nascondeva il layer** oltre
110
+ * il 13 : su una mappa che zooma più in là — maplite in Agitec arriva a 30 —
111
+ * la minimappa restava **bianca**, senza che niente lo dicesse.
112
+ *
113
+ * La minimappa raddoppia le richieste di una pagina, perché mostra lo stesso
114
+ * sfondo della mappa grande : è il motivo per cui qui conta più che altrove.
115
+ */
88
116
  private layer;
89
117
  private _miniMap;
90
118
  private position;