@artstesh/maps 5.2.4 → 5.2.6

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.
Files changed (68) hide show
  1. package/dist/esm2022/map/map-plate/layers/image-layer/image-layer-factory.mjs +26 -0
  2. package/dist/esm2022/map/map-plate/layers/image-layer/image-layer.component.mjs +52 -0
  3. package/dist/esm2022/map/map-plate/layers/image-layer/image-layer.settings.mjs +134 -0
  4. package/dist/esm2022/map/map-plate/layers/index.mjs +5 -1
  5. package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.component.mjs +52 -0
  6. package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.factory.mjs +74 -0
  7. package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.settings.mjs +149 -0
  8. package/dist/esm2022/map/map.module.mjs +13 -3
  9. package/dist/esm2022/map/messages/commands/add-image-layer.command.mjs +10 -0
  10. package/dist/esm2022/map/messages/commands/add-raster-tile-command.mjs +10 -0
  11. package/dist/esm2022/map/messages/commands/remove-image-layer.command.mjs +10 -0
  12. package/dist/esm2022/map/messages/commands/remove-raster-tile.command.mjs +10 -0
  13. package/dist/esm2022/map/ol-proxy.mjs +3 -0
  14. package/dist/esm2022/map/public-api.mjs +2 -2
  15. package/dist/esm2022/map/services/map-management.service.mjs +32 -8
  16. package/dist/esm2022/map/services/message-registrator.service.mjs +9 -1
  17. package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer-factory.mjs +26 -0
  18. package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer.component.mjs +52 -0
  19. package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer.settings.mjs +134 -0
  20. package/dist/esm2022/src/map/map-plate/layers/index.mjs +5 -1
  21. package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.component.mjs +52 -0
  22. package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.factory.mjs +74 -0
  23. package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.settings.mjs +149 -0
  24. package/dist/esm2022/src/map/map.module.mjs +13 -3
  25. package/dist/esm2022/src/map/messages/commands/add-image-layer.command.mjs +10 -0
  26. package/dist/esm2022/src/map/messages/commands/add-raster-tile-command.mjs +10 -0
  27. package/dist/esm2022/src/map/messages/commands/remove-image-layer.command.mjs +10 -0
  28. package/dist/esm2022/src/map/messages/commands/remove-raster-tile.command.mjs +10 -0
  29. package/dist/esm2022/src/map/ol-proxy.mjs +3 -0
  30. package/dist/esm2022/src/map/public-api.mjs +2 -2
  31. package/dist/esm2022/src/map/services/map-management.service.mjs +32 -8
  32. package/dist/esm2022/src/map/services/message-registrator.service.mjs +9 -1
  33. package/dist/fesm2022/maps-components-src-map.mjs +538 -10
  34. package/dist/fesm2022/maps-components-src-map.mjs.map +1 -1
  35. package/dist/fesm2022/maps-components.mjs +538 -10
  36. package/dist/fesm2022/maps-components.mjs.map +1 -1
  37. package/dist/map/map-plate/layers/image-layer/image-layer-factory.d.ts +9 -0
  38. package/dist/map/map-plate/layers/image-layer/image-layer.component.d.ts +22 -0
  39. package/dist/map/map-plate/layers/image-layer/image-layer.settings.d.ts +97 -0
  40. package/dist/map/map-plate/layers/index.d.ts +4 -0
  41. package/dist/map/map-plate/layers/raster-tile/raster-tile-layer.component.d.ts +21 -0
  42. package/dist/map/map-plate/layers/raster-tile/raster-tile-layer.factory.d.ts +12 -0
  43. package/dist/map/map-plate/layers/raster-tile/raster-tile-layer.settings.d.ts +108 -0
  44. package/dist/map/map.module.d.ts +4 -2
  45. package/dist/map/messages/commands/add-image-layer.command.d.ts +8 -0
  46. package/dist/map/messages/commands/add-raster-tile-command.d.ts +8 -0
  47. package/dist/map/messages/commands/remove-image-layer.command.d.ts +8 -0
  48. package/dist/map/messages/commands/remove-raster-tile.command.d.ts +8 -0
  49. package/dist/map/ol-proxy.d.ts +3 -0
  50. package/dist/map/public-api.d.ts +1 -1
  51. package/dist/map/services/map-management.service.d.ts +1 -1
  52. package/dist/package.json +1 -1
  53. package/dist/src/map/map-plate/layers/image-layer/image-layer-factory.d.ts +9 -0
  54. package/dist/src/map/map-plate/layers/image-layer/image-layer.component.d.ts +22 -0
  55. package/dist/src/map/map-plate/layers/image-layer/image-layer.settings.d.ts +97 -0
  56. package/dist/src/map/map-plate/layers/index.d.ts +4 -0
  57. package/dist/src/map/map-plate/layers/raster-tile/raster-tile-layer.component.d.ts +21 -0
  58. package/dist/src/map/map-plate/layers/raster-tile/raster-tile-layer.factory.d.ts +12 -0
  59. package/dist/src/map/map-plate/layers/raster-tile/raster-tile-layer.settings.d.ts +108 -0
  60. package/dist/src/map/map.module.d.ts +4 -2
  61. package/dist/src/map/messages/commands/add-image-layer.command.d.ts +8 -0
  62. package/dist/src/map/messages/commands/add-raster-tile-command.d.ts +8 -0
  63. package/dist/src/map/messages/commands/remove-image-layer.command.d.ts +8 -0
  64. package/dist/src/map/messages/commands/remove-raster-tile.command.d.ts +8 -0
  65. package/dist/src/map/ol-proxy.d.ts +3 -0
  66. package/dist/src/map/public-api.d.ts +1 -1
  67. package/dist/src/map/services/map-management.service.d.ts +1 -1
  68. package/package.json +2 -2
@@ -0,0 +1,26 @@
1
+ import { Injectable } from '@angular/core';
2
+ import Static from 'ol/source/ImageStatic';
3
+ import ImageLayer from 'ol/layer/Image';
4
+ import { get } from 'ol/proj';
5
+ import * as i0 from "@angular/core";
6
+ export class ImageLayerFactory {
7
+ build(settings) {
8
+ const source = new Static({
9
+ url: settings.url,
10
+ interpolate: settings.interpolate,
11
+ crossOrigin: 'Anonymous',
12
+ projection: get(settings.projection),
13
+ imageExtent: settings.extent,
14
+ });
15
+ return new ImageLayer({ source });
16
+ }
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageLayerFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
18
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageLayerFactory, providedIn: 'root' });
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageLayerFactory, decorators: [{
21
+ type: Injectable,
22
+ args: [{
23
+ providedIn: 'root',
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtbGF5ZXItZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL21hcC1wbGF0ZS9sYXllcnMvaW1hZ2UtbGF5ZXIvaW1hZ2UtbGF5ZXItZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sTUFBTSxNQUFNLHVCQUF1QixDQUFDO0FBRTNDLE9BQU8sVUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxTQUFTLENBQUM7O0FBSzFDLE1BQU0sT0FBTyxpQkFBaUI7SUFDckIsS0FBSyxDQUFDLFFBQTRCO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDO1lBQ3hCLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRztZQUNqQixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7WUFDakMsV0FBVyxFQUFFLFdBQVc7WUFDeEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFO1lBQ3JDLFdBQVcsRUFBRSxRQUFRLENBQUMsTUFBTTtTQUM3QixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO3dHQVZVLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgU3RhdGljIGZyb20gJ29sL3NvdXJjZS9JbWFnZVN0YXRpYyc7XG5pbXBvcnQgeyBJbWFnZUxheWVyU2V0dGluZ3MgfSBmcm9tICcuL2ltYWdlLWxheWVyLnNldHRpbmdzJztcbmltcG9ydCBJbWFnZUxheWVyIGZyb20gJ29sL2xheWVyL0ltYWdlJztcbmltcG9ydCB7IGdldCwgUHJvamVjdGlvbiB9IGZyb20gJ29sL3Byb2onO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VMYXllckZhY3Rvcnkge1xuICBwdWJsaWMgYnVpbGQoc2V0dGluZ3M6IEltYWdlTGF5ZXJTZXR0aW5ncyk6IEltYWdlTGF5ZXI8U3RhdGljPiB7XG4gICAgY29uc3Qgc291cmNlID0gbmV3IFN0YXRpYyh7XG4gICAgICB1cmw6IHNldHRpbmdzLnVybCxcbiAgICAgIGludGVycG9sYXRlOiBzZXR0aW5ncy5pbnRlcnBvbGF0ZSxcbiAgICAgIGNyb3NzT3JpZ2luOiAnQW5vbnltb3VzJyxcbiAgICAgIHByb2plY3Rpb246IGdldChzZXR0aW5ncy5wcm9qZWN0aW9uKSEsXG4gICAgICBpbWFnZUV4dGVudDogc2V0dGluZ3MuZXh0ZW50LFxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgSW1hZ2VMYXllcih7IHNvdXJjZSB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,52 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { DestructibleComponent } from '../../../common/destructible.component';
3
+ import { MapRenderedEvent } from '../../../messages';
4
+ import { filter, first } from 'rxjs/operators';
5
+ import { ImageLayerSettings } from './image-layer.settings';
6
+ import { AddImageLayerCommand } from '../../../messages/commands/add-image-layer.command';
7
+ import { RemoveImageLayerCommand } from '../../../messages/commands/remove-image-layer.command';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../../services/map-postboy.service";
10
+ import * as i2 from "./image-layer-factory";
11
+ export class ImageLayerComponent extends DestructibleComponent {
12
+ postboy;
13
+ factory;
14
+ layer;
15
+ constructor(postboy, factory) {
16
+ super();
17
+ this.postboy = postboy;
18
+ this.factory = factory;
19
+ }
20
+ _settings = new ImageLayerSettings();
21
+ set settings(value) {
22
+ if (!value || this._settings.isSame(value))
23
+ return;
24
+ this._settings = value;
25
+ this.initLayer();
26
+ }
27
+ ngOnInit() {
28
+ this.postboy
29
+ .sub(MapRenderedEvent)
30
+ .pipe(filter((m) => !!m), first())
31
+ .subscribe((m) => this.initLayer());
32
+ }
33
+ onDestroy = () => this.removeLayer();
34
+ initLayer() {
35
+ this.removeLayer();
36
+ this.layer = this.factory.build(this._settings);
37
+ this.postboy.fire(new AddImageLayerCommand(this.layer));
38
+ }
39
+ removeLayer() {
40
+ if (this.layer)
41
+ this.postboy.fire(new RemoveImageLayerCommand(this.layer));
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageLayerComponent, deps: [{ token: i1.MapPostboyService }, { token: i2.ImageLayerFactory }], target: i0.ɵɵFactoryTarget.Component });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImageLayerComponent, selector: "art-image-layer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageLayerComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'art-image-layer', template: '', changeDetection: ChangeDetectionStrategy.OnPush }]
49
+ }], ctorParameters: function () { return [{ type: i1.MapPostboyService }, { type: i2.ImageLayerFactory }]; }, propDecorators: { settings: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvbWFwLXBsYXRlL2xheWVycy9pbWFnZS1sYXllci9pbWFnZS1sYXllci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFNL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU0vQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7OztBQVFoRyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEscUJBQXFCO0lBR3hDO0lBQW9DO0lBRmpELEtBQUssQ0FBc0I7SUFFbEMsWUFBb0IsT0FBMEIsRUFBVSxPQUEwQjtRQUNoRixLQUFLLEVBQUUsQ0FBQztRQURVLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7SUFFbEYsQ0FBQztJQUVELFNBQVMsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBRXpELElBQWEsUUFBUSxDQUFDLEtBQXFDO1FBQ3pELElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTzthQUNULEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNyQixJQUFJLENBQ0gsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2xCLEtBQUssRUFBRSxDQUNSO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU3QixTQUFTO1FBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQzt3R0FuQ1UsbUJBQW1COzRGQUFuQixtQkFBbUIsZ0hBSnBCLEVBQUU7OzRGQUlELG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxpQkFBaUIsWUFDakIsRUFBRSxtQkFFSyx1QkFBdUIsQ0FBQyxNQUFNO3dJQVdsQyxRQUFRO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJ1Y3RpYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2Rlc3RydWN0aWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IFRpbGVMYXllciBmcm9tICdvbC9sYXllci9UaWxlJztcbmltcG9ydCB7IFhZWiB9IGZyb20gJ29sL3NvdXJjZSc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGlsZUxheWVyRmFjdG9yeSB9IGZyb20gJy4uL3RpbGUtbGF5ZXIvdGlsZS1sYXllci5mYWN0b3J5JztcbmltcG9ydCB7IFRpbGVMYXllclNldHRpbmdzIH0gZnJvbSAnLi4vdGlsZS1sYXllci90aWxlLWxheWVyLnNldHRpbmdzJztcbmltcG9ydCB7IE1hcFJlbmRlcmVkRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9tZXNzYWdlcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWRkVGlsZUNvbW1hbmQgfSBmcm9tICcuLi8uLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9hZGQtdGlsZS5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZVRpbGVDb21tYW5kIH0gZnJvbSAnLi4vLi4vLi4vbWVzc2FnZXMvY29tbWFuZHMvcmVtb3ZlLXRpbGUuY29tbWFuZCc7XG5pbXBvcnQgeyBJbWFnZUxheWVyRmFjdG9yeSB9IGZyb20gJy4vaW1hZ2UtbGF5ZXItZmFjdG9yeSc7XG5pbXBvcnQgSW1hZ2VMYXllciBmcm9tICdvbC9sYXllci9JbWFnZSc7XG5pbXBvcnQgU3RhdGljIGZyb20gJ29sL3NvdXJjZS9JbWFnZVN0YXRpYyc7XG5pbXBvcnQgeyBJbWFnZUxheWVyU2V0dGluZ3MgfSBmcm9tICcuL2ltYWdlLWxheWVyLnNldHRpbmdzJztcbmltcG9ydCB7IEFkZEltYWdlTGF5ZXJDb21tYW5kIH0gZnJvbSAnLi4vLi4vLi4vbWVzc2FnZXMvY29tbWFuZHMvYWRkLWltYWdlLWxheWVyLmNvbW1hbmQnO1xuaW1wb3J0IHsgUmVtb3ZlSW1hZ2VMYXllckNvbW1hbmQgfSBmcm9tICcuLi8uLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9yZW1vdmUtaW1hZ2UtbGF5ZXIuY29tbWFuZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FydC1pbWFnZS1sYXllcicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlTGF5ZXJDb21wb25lbnQgZXh0ZW5kcyBEZXN0cnVjdGlibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgbGF5ZXI/OiBJbWFnZUxheWVyPFN0YXRpYz47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3N0Ym95OiBNYXBQb3N0Ym95U2VydmljZSwgcHJpdmF0ZSBmYWN0b3J5OiBJbWFnZUxheWVyRmFjdG9yeSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBfc2V0dGluZ3M6IEltYWdlTGF5ZXJTZXR0aW5ncyA9IG5ldyBJbWFnZUxheWVyU2V0dGluZ3MoKTtcblxuICBASW5wdXQoKSBzZXQgc2V0dGluZ3ModmFsdWU6IEltYWdlTGF5ZXJTZXR0aW5ncyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdmFsdWUgfHwgdGhpcy5fc2V0dGluZ3MuaXNTYW1lKHZhbHVlKSkgcmV0dXJuO1xuICAgIHRoaXMuX3NldHRpbmdzID0gdmFsdWU7XG4gICAgdGhpcy5pbml0TGF5ZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucG9zdGJveVxuICAgICAgLnN1YihNYXBSZW5kZXJlZEV2ZW50KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigobSkgPT4gISFtKSxcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG0pID0+IHRoaXMuaW5pdExheWVyKCkpO1xuICB9XG5cbiAgb25EZXN0cm95ID0gKCkgPT4gdGhpcy5yZW1vdmVMYXllcigpO1xuXG4gIHByaXZhdGUgaW5pdExheWVyKCkge1xuICAgIHRoaXMucmVtb3ZlTGF5ZXIoKTtcbiAgICB0aGlzLmxheWVyID0gdGhpcy5mYWN0b3J5LmJ1aWxkKHRoaXMuX3NldHRpbmdzKTtcbiAgICB0aGlzLnBvc3Rib3kuZmlyZShuZXcgQWRkSW1hZ2VMYXllckNvbW1hbmQodGhpcy5sYXllcikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMYXllcigpIHtcbiAgICBpZiAodGhpcy5sYXllcikgdGhpcy5wb3N0Ym95LmZpcmUobmV3IFJlbW92ZUltYWdlTGF5ZXJDb21tYW5kKHRoaXMubGF5ZXIpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,134 @@
1
+ export class ImageLayerSettings {
2
+ /**
3
+ * Represents the tiles URL.
4
+ * @typedef {string} url
5
+ *
6
+ * @example
7
+ * 'https://example.ex/{z}/{x}/{y}.png'
8
+ */
9
+ url = '';
10
+ /**
11
+ * Use interpolated values when resampling.
12
+ * By default, linear interpolation is used when resampling.
13
+ * Set to false to use the nearest neighbor instead.
14
+ */
15
+ interpolate = undefined;
16
+ /**
17
+ * The projection of the coordinate system.
18
+ *
19
+ * @type {string}
20
+ * @default 'EPSG:3857'
21
+ */
22
+ projection = 'EPSG:3857';
23
+ extent = [0, 0, 0, 0];
24
+ /**
25
+ * Additional headers that should be added to each tile request
26
+ *
27
+ * @type {Record<string, string>}
28
+ * @default An empty array
29
+ */
30
+ requestHeaders = null;
31
+ /**
32
+ * Creates a copy of the given tile layer settings.
33
+ *
34
+ * @param {ImageLayerSettings} model - The tile layer settings to be copied.
35
+ * @return {ImageLayerSettings} - A new instance of ImageLayerSettings with the same properties as the model.
36
+ */
37
+ static copy(model) {
38
+ const result = new ImageLayerSettings();
39
+ result.interpolate = model.interpolate;
40
+ result.projection = model.projection;
41
+ result.extent = model.extent;
42
+ result.url = model.url;
43
+ result.requestHeaders = model.requestHeaders;
44
+ return result;
45
+ }
46
+ /**
47
+ * Sets the URL of the ImageLayerSettings object.
48
+ *
49
+ * @param {string} url - The URL to be set.
50
+ * @return {ImageLayerSettings} - The updated ImageLayerSettings object.
51
+ */
52
+ setUrl(url) {
53
+ return ImageLayerSettings.copy({ ...this, url });
54
+ }
55
+ /**
56
+ * Sets the interpolation state for the image layer settings.
57
+ *
58
+ * @param {boolean} [interpolate] - Use interpolated values when resampling.
59
+ * By default, linear interpolation is used when resampling.
60
+ * Set to false to use the nearest neighbor instead.
61
+ * @return {ImageLayerSettings} A new instance of ImageLayerSettings with the updated interpolation setting.
62
+ */
63
+ setInterpolate(interpolate) {
64
+ return ImageLayerSettings.copy({ ...this, interpolate });
65
+ }
66
+ setExtent(extent) {
67
+ return ImageLayerSettings.copy({ ...this, extent });
68
+ }
69
+ /**
70
+ * Sets the requestHeaders of the ImageLayerSettings object.
71
+ *
72
+ * @param {Record<string, string>} requestHeaders - The headers which should be provided.
73
+ * @return {ImageLayerSettings} - The updated ImageLayerSettings object.
74
+ */
75
+ setRequestHeaders(requestHeaders) {
76
+ return ImageLayerSettings.copy({ ...this, requestHeaders });
77
+ }
78
+ /**
79
+ * Sets the maximum zoom level for the tile layer.
80
+ *
81
+ * @param {number} maxZoom - The maximum zoom level.
82
+ * @returns {ImageLayerSettings} - The updated tile layer settings object.
83
+ */
84
+ setMaxZoom(maxZoom) {
85
+ return ImageLayerSettings.copy({ ...this, maxZoom });
86
+ }
87
+ /**
88
+ * Sets the minimum zoom level for the Tile Layer.
89
+ *
90
+ * @param {number} minZoom - The minimum zoom level to be set.
91
+ * @return {ImageLayerSettings} The modified ImageLayerSettings object with the updated minimum zoom level.
92
+ */
93
+ setMinZoom(minZoom) {
94
+ return ImageLayerSettings.copy({ ...this, minZoom });
95
+ }
96
+ /**
97
+ * Sets the opacity of the ImageLayerSettings.
98
+ *
99
+ * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.
100
+ * @return {ImageLayerSettings} - A new instance of ImageLayerSettings with the opacity set.
101
+ */
102
+ setOpacity(opacity) {
103
+ return ImageLayerSettings.copy({ ...this, opacity });
104
+ }
105
+ /**
106
+ * Sets the projection for the tile layer settings.
107
+ *
108
+ * @param {string} projection - The desired projection for the tile layer settings.
109
+ * @return {ImageLayerSettings} - The updated tile layer settings with the new projection.
110
+ */
111
+ setProjection(projection) {
112
+ return ImageLayerSettings.copy({ ...this, projection });
113
+ }
114
+ /**
115
+ * Checks if the current instance of ImageLayerSettings is equal to the given model.
116
+ * @param {ImageLayerSettings} model - The model to compare against.
117
+ * @return {boolean} - True if all properties of the current instance matches the properties of the model;
118
+ * otherwise, false.
119
+ */
120
+ isSame(model) {
121
+ if (this.url !== model.url)
122
+ return false;
123
+ if (this.projection !== model.projection)
124
+ return false;
125
+ if (this.extent !== model.extent)
126
+ return false;
127
+ if (this.interpolate !== model.interpolate)
128
+ return false;
129
+ if (this.requestHeaders !== model.requestHeaders)
130
+ return false;
131
+ return true;
132
+ }
133
+ }
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtbGF5ZXIuc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9tYXAtcGxhdGUvbGF5ZXJzL2ltYWdlLWxheWVyL2ltYWdlLWxheWVyLnNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7OztPQU1HO0lBQ0gsR0FBRyxHQUFXLEVBQUUsQ0FBQztJQUNqQjs7OztPQUlHO0lBQ0gsV0FBVyxHQUFhLFNBQVMsQ0FBQztJQUNsQzs7Ozs7T0FLRztJQUNILFVBQVUsR0FBVyxXQUFXLENBQUM7SUFDakMsTUFBTSxHQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEM7Ozs7O09BS0c7SUFDSCxjQUFjLEdBQWtDLElBQUksQ0FBQztJQUNyRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBeUI7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxNQUFNLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDckMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN2QixNQUFNLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDN0MsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDaEIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsY0FBYyxDQUFDLFdBQXFCO1FBQ2xDLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWdCO1FBQ3hCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxjQUFzQztRQUN0RCxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLE9BQWU7UUFDeEIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxPQUFlO1FBQ3hCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN4QixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLFVBQWtCO1FBQzlCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsS0FBeUI7UUFDckMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxVQUFVO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxXQUFXO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQyxjQUFjO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSW1hZ2VMYXllclNldHRpbmdzIHtcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHRpbGVzIFVSTC5cbiAgICogQHR5cGVkZWYge3N0cmluZ30gdXJsXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqICdodHRwczovL2V4YW1wbGUuZXgve3p9L3t4fS97eX0ucG5nJ1xuICAgKi9cbiAgdXJsOiBzdHJpbmcgPSAnJztcbiAgLyoqXG4gICAqIFVzZSBpbnRlcnBvbGF0ZWQgdmFsdWVzIHdoZW4gcmVzYW1wbGluZy5cbiAgICogQnkgZGVmYXVsdCwgbGluZWFyIGludGVycG9sYXRpb24gaXMgdXNlZCB3aGVuIHJlc2FtcGxpbmcuXG4gICAqIFNldCB0byBmYWxzZSB0byB1c2UgdGhlIG5lYXJlc3QgbmVpZ2hib3IgaW5zdGVhZC5cbiAgICovXG4gIGludGVycG9sYXRlPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0aW9uIG9mIHRoZSBjb29yZGluYXRlIHN5c3RlbS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJ0VQU0c6Mzg1NydcbiAgICovXG4gIHByb2plY3Rpb246IHN0cmluZyA9ICdFUFNHOjM4NTcnO1xuICBleHRlbnQ6IG51bWJlcltdID0gWzAsIDAsIDAsIDBdO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBoZWFkZXJzIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIGVhY2ggdGlsZSByZXF1ZXN0XG4gICAqXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fVxuICAgKiBAZGVmYXVsdCBBbiBlbXB0eSBhcnJheVxuICAgKi9cbiAgcmVxdWVzdEhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBnaXZlbiB0aWxlIGxheWVyIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0ge0ltYWdlTGF5ZXJTZXR0aW5nc30gbW9kZWwgLSBUaGUgdGlsZSBsYXllciBzZXR0aW5ncyB0byBiZSBjb3BpZWQuXG4gICAqIEByZXR1cm4ge0ltYWdlTGF5ZXJTZXR0aW5nc30gLSBBIG5ldyBpbnN0YW5jZSBvZiBJbWFnZUxheWVyU2V0dGluZ3Mgd2l0aCB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBtb2RlbC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29weShtb2RlbDogSW1hZ2VMYXllclNldHRpbmdzKTogSW1hZ2VMYXllclNldHRpbmdzIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgSW1hZ2VMYXllclNldHRpbmdzKCk7XG4gICAgcmVzdWx0LmludGVycG9sYXRlID0gbW9kZWwuaW50ZXJwb2xhdGU7XG4gICAgcmVzdWx0LnByb2plY3Rpb24gPSBtb2RlbC5wcm9qZWN0aW9uO1xuICAgIHJlc3VsdC5leHRlbnQgPSBtb2RlbC5leHRlbnQ7XG4gICAgcmVzdWx0LnVybCA9IG1vZGVsLnVybDtcbiAgICByZXN1bHQucmVxdWVzdEhlYWRlcnMgPSBtb2RlbC5yZXF1ZXN0SGVhZGVycztcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIFVSTCBvZiB0aGUgSW1hZ2VMYXllclNldHRpbmdzIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgdG8gYmUgc2V0LlxuICAgKiBAcmV0dXJuIHtJbWFnZUxheWVyU2V0dGluZ3N9IC0gVGhlIHVwZGF0ZWQgSW1hZ2VMYXllclNldHRpbmdzIG9iamVjdC5cbiAgICovXG4gIHNldFVybCh1cmw6IHN0cmluZyk6IEltYWdlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIEltYWdlTGF5ZXJTZXR0aW5ncy5jb3B5KHsgLi4udGhpcywgdXJsIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGludGVycG9sYXRpb24gc3RhdGUgZm9yIHRoZSBpbWFnZSBsYXllciBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBbaW50ZXJwb2xhdGVdIC0gVXNlIGludGVycG9sYXRlZCB2YWx1ZXMgd2hlbiByZXNhbXBsaW5nLlxuICAgKiBCeSBkZWZhdWx0LCBsaW5lYXIgaW50ZXJwb2xhdGlvbiBpcyB1c2VkIHdoZW4gcmVzYW1wbGluZy5cbiAgICogU2V0IHRvIGZhbHNlIHRvIHVzZSB0aGUgbmVhcmVzdCBuZWlnaGJvciBpbnN0ZWFkLlxuICAgKiBAcmV0dXJuIHtJbWFnZUxheWVyU2V0dGluZ3N9IEEgbmV3IGluc3RhbmNlIG9mIEltYWdlTGF5ZXJTZXR0aW5ncyB3aXRoIHRoZSB1cGRhdGVkIGludGVycG9sYXRpb24gc2V0dGluZy5cbiAgICovXG4gIHNldEludGVycG9sYXRlKGludGVycG9sYXRlPzogYm9vbGVhbik6IEltYWdlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIEltYWdlTGF5ZXJTZXR0aW5ncy5jb3B5KHsgLi4udGhpcywgaW50ZXJwb2xhdGUgfSk7XG4gIH1cblxuICBzZXRFeHRlbnQoZXh0ZW50OiBudW1iZXJbXSk6IEltYWdlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIEltYWdlTGF5ZXJTZXR0aW5ncy5jb3B5KHsgLi4udGhpcywgZXh0ZW50IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlcXVlc3RIZWFkZXJzIG9mIHRoZSBJbWFnZUxheWVyU2V0dGluZ3Mgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IHJlcXVlc3RIZWFkZXJzIC0gVGhlIGhlYWRlcnMgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkLlxuICAgKiBAcmV0dXJuIHtJbWFnZUxheWVyU2V0dGluZ3N9IC0gVGhlIHVwZGF0ZWQgSW1hZ2VMYXllclNldHRpbmdzIG9iamVjdC5cbiAgICovXG4gIHNldFJlcXVlc3RIZWFkZXJzKHJlcXVlc3RIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogSW1hZ2VMYXllclNldHRpbmdzIHtcbiAgICByZXR1cm4gSW1hZ2VMYXllclNldHRpbmdzLmNvcHkoeyAuLi50aGlzLCByZXF1ZXN0SGVhZGVycyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtYXhpbXVtIHpvb20gbGV2ZWwgZm9yIHRoZSB0aWxlIGxheWVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4Wm9vbSAtIFRoZSBtYXhpbXVtIHpvb20gbGV2ZWwuXG4gICAqIEByZXR1cm5zIHtJbWFnZUxheWVyU2V0dGluZ3N9IC0gVGhlIHVwZGF0ZWQgdGlsZSBsYXllciBzZXR0aW5ncyBvYmplY3QuXG4gICAqL1xuICBzZXRNYXhab29tKG1heFpvb206IG51bWJlcik6IEltYWdlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIEltYWdlTGF5ZXJTZXR0aW5ncy5jb3B5KHsgLi4udGhpcywgbWF4Wm9vbSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtaW5pbXVtIHpvb20gbGV2ZWwgZm9yIHRoZSBUaWxlIExheWVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWluWm9vbSAtIFRoZSBtaW5pbXVtIHpvb20gbGV2ZWwgdG8gYmUgc2V0LlxuICAgKiBAcmV0dXJuIHtJbWFnZUxheWVyU2V0dGluZ3N9IFRoZSBtb2RpZmllZCBJbWFnZUxheWVyU2V0dGluZ3Mgb2JqZWN0IHdpdGggdGhlIHVwZGF0ZWQgbWluaW11bSB6b29tIGxldmVsLlxuICAgKi9cbiAgc2V0TWluWm9vbShtaW5ab29tOiBudW1iZXIpOiBJbWFnZUxheWVyU2V0dGluZ3Mge1xuICAgIHJldHVybiBJbWFnZUxheWVyU2V0dGluZ3MuY29weSh7IC4uLnRoaXMsIG1pblpvb20gfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb3BhY2l0eSBvZiB0aGUgSW1hZ2VMYXllclNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3BhY2l0eSAtIFRoZSBvcGFjaXR5IHZhbHVlIHRvIHNldC4gTXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEuXG4gICAqIEByZXR1cm4ge0ltYWdlTGF5ZXJTZXR0aW5nc30gLSBBIG5ldyBpbnN0YW5jZSBvZiBJbWFnZUxheWVyU2V0dGluZ3Mgd2l0aCB0aGUgb3BhY2l0eSBzZXQuXG4gICAqL1xuICBzZXRPcGFjaXR5KG9wYWNpdHk6IG51bWJlcik6IEltYWdlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIEltYWdlTGF5ZXJTZXR0aW5ncy5jb3B5KHsgLi4udGhpcywgb3BhY2l0eSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwcm9qZWN0aW9uIGZvciB0aGUgdGlsZSBsYXllciBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb2plY3Rpb24gLSBUaGUgZGVzaXJlZCBwcm9qZWN0aW9uIGZvciB0aGUgdGlsZSBsYXllciBzZXR0aW5ncy5cbiAgICogQHJldHVybiB7SW1hZ2VMYXllclNldHRpbmdzfSAtIFRoZSB1cGRhdGVkIHRpbGUgbGF5ZXIgc2V0dGluZ3Mgd2l0aCB0aGUgbmV3IHByb2plY3Rpb24uXG4gICAqL1xuICBzZXRQcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZyk6IEltYWdlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIEltYWdlTGF5ZXJTZXR0aW5ncy5jb3B5KHsgLi4udGhpcywgcHJvamVjdGlvbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgSW1hZ2VMYXllclNldHRpbmdzIGlzIGVxdWFsIHRvIHRoZSBnaXZlbiBtb2RlbC5cbiAgICogQHBhcmFtIHtJbWFnZUxheWVyU2V0dGluZ3N9IG1vZGVsIC0gVGhlIG1vZGVsIHRvIGNvbXBhcmUgYWdhaW5zdC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBUcnVlIGlmIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlIG1hdGNoZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIG1vZGVsO1xuICAgKiAgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlLCBmYWxzZS5cbiAgICovXG4gIHB1YmxpYyBpc1NhbWUobW9kZWw6IEltYWdlTGF5ZXJTZXR0aW5ncyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnVybCAhPT0gbW9kZWwudXJsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbiAhPT0gbW9kZWwucHJvamVjdGlvbikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLmV4dGVudCAhPT0gbW9kZWwuZXh0ZW50KSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMuaW50ZXJwb2xhdGUgIT09IG1vZGVsLmludGVycG9sYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMucmVxdWVzdEhlYWRlcnMgIT09IG1vZGVsLnJlcXVlc3RIZWFkZXJzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
@@ -5,4 +5,8 @@ export * from './feature-layer/feature-layer.settings';
5
5
  export * from './feature-layer/feature-layer.component';
6
6
  export * from './cluster-layer/cluster-layer.component';
7
7
  export * from './cluster-layer/cluster-layer.settings';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9tYXAtcGxhdGUvbGF5ZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RpbGUtbGF5ZXIvdGlsZS1sYXllci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90aWxlLWxheWVyL3RpbGUtbGF5ZXIuc2V0dGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9vc20tdGlsZS1sYXllci9vc20tdGlsZS1sYXllci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mZWF0dXJlLWxheWVyL2ZlYXR1cmUtbGF5ZXIuc2V0dGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9mZWF0dXJlLWxheWVyL2ZlYXR1cmUtbGF5ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2x1c3Rlci1sYXllci9jbHVzdGVyLWxheWVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NsdXN0ZXItbGF5ZXIvY2x1c3Rlci1sYXllci5zZXR0aW5ncyc7XG4iXX0=
8
+ export * from './image-layer/image-layer.component';
9
+ export * from './image-layer/image-layer.settings';
10
+ export * from './raster-tile/raster-tile-layer.component';
11
+ export * from './raster-tile/raster-tile-layer.settings';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9tYXAtcGxhdGUvbGF5ZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGlsZS1sYXllci90aWxlLWxheWVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RpbGUtbGF5ZXIvdGlsZS1sYXllci5zZXR0aW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL29zbS10aWxlLWxheWVyL29zbS10aWxlLWxheWVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtbGF5ZXIvZmVhdHVyZS1sYXllci5zZXR0aW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtbGF5ZXIvZmVhdHVyZS1sYXllci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2x1c3Rlci1sYXllci9jbHVzdGVyLWxheWVyLnNldHRpbmdzJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UtbGF5ZXIvaW1hZ2UtbGF5ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UtbGF5ZXIvaW1hZ2UtbGF5ZXIuc2V0dGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9yYXN0ZXItdGlsZS9yYXN0ZXItdGlsZS1sYXllci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yYXN0ZXItdGlsZS9yYXN0ZXItdGlsZS1sYXllci5zZXR0aW5ncyc7XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { DestructibleComponent } from '../../../common/destructible.component';
3
+ import { MapRenderedEvent } from '../../../messages';
4
+ import { filter, first } from 'rxjs/operators';
5
+ import { RasterTileLayerSettings } from './raster-tile-layer.settings';
6
+ import { AddRasterTileCommand } from '../../../messages/commands/add-raster-tile-command';
7
+ import { RemoveRasterTileCommand } from '../../../messages/commands/remove-raster-tile.command';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../../services/map-postboy.service";
10
+ import * as i2 from "./raster-tile-layer.factory";
11
+ export class RasterTileLayerComponent extends DestructibleComponent {
12
+ postboy;
13
+ factory;
14
+ layer;
15
+ constructor(postboy, factory) {
16
+ super();
17
+ this.postboy = postboy;
18
+ this.factory = factory;
19
+ }
20
+ _settings = new RasterTileLayerSettings();
21
+ set settings(value) {
22
+ if (!value || this._settings.isSame(value))
23
+ return;
24
+ this._settings = value;
25
+ this.initLayer();
26
+ }
27
+ ngOnInit() {
28
+ this.postboy
29
+ .sub(MapRenderedEvent)
30
+ .pipe(filter((m) => !!m), first())
31
+ .subscribe((m) => this.initLayer());
32
+ }
33
+ onDestroy = () => this.removeLayer();
34
+ initLayer() {
35
+ this.removeLayer();
36
+ this.layer = this.factory.build(this._settings);
37
+ this.postboy.fire(new AddRasterTileCommand(this.layer));
38
+ }
39
+ removeLayer() {
40
+ if (this.layer)
41
+ this.postboy.fire(new RemoveRasterTileCommand(this.layer));
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RasterTileLayerComponent, deps: [{ token: i1.MapPostboyService }, { token: i2.RasterTileLayerFactory }], target: i0.ɵɵFactoryTarget.Component });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RasterTileLayerComponent, selector: "art-raster-tile-layer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RasterTileLayerComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'art-raster-tile-layer', template: '', changeDetection: ChangeDetectionStrategy.OnPush }]
49
+ }], ctorParameters: function () { return [{ type: i1.MapPostboyService }, { type: i2.RasterTileLayerFactory }]; }, propDecorators: { settings: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFzdGVyLXRpbGUtbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvbWFwLXBsYXRlL2xheWVycy9yYXN0ZXItdGlsZS9yYXN0ZXItdGlsZS1sYXllci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFNL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUsvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7OztBQVFoRyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEscUJBQXFCO0lBRzdDO0lBQW9DO0lBRmpELEtBQUssQ0FBc0I7SUFFbEMsWUFBb0IsT0FBMEIsRUFBVSxPQUErQjtRQUNyRixLQUFLLEVBQUUsQ0FBQztRQURVLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7SUFFdkYsQ0FBQztJQUVELFNBQVMsR0FBNEIsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBRW5FLElBQWEsUUFBUSxDQUFDLEtBQTBDO1FBQzlELElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTzthQUNULEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNyQixJQUFJLENBQ0gsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2xCLEtBQUssRUFBRSxDQUNSO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU3QixTQUFTO1FBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQzt3R0FuQ1Usd0JBQXdCOzRGQUF4Qix3QkFBd0Isc0hBSnpCLEVBQUU7OzRGQUlELHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSx1QkFBdUIsWUFDdkIsRUFBRSxtQkFFSyx1QkFBdUIsQ0FBQyxNQUFNOzZJQVdsQyxRQUFRO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJ1Y3RpYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2Rlc3RydWN0aWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IFRpbGVMYXllciBmcm9tICdvbC9sYXllci9UaWxlJztcbmltcG9ydCB7IFJhc3RlciwgWFlaIH0gZnJvbSAnb2wvc291cmNlJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFwLXBvc3Rib3kuc2VydmljZSc7XG5pbXBvcnQgeyBUaWxlTGF5ZXJGYWN0b3J5IH0gZnJvbSAnLi4vdGlsZS1sYXllci90aWxlLWxheWVyLmZhY3RvcnknO1xuaW1wb3J0IHsgVGlsZUxheWVyU2V0dGluZ3MgfSBmcm9tICcuLi90aWxlLWxheWVyL3RpbGUtbGF5ZXIuc2V0dGluZ3MnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBZGRUaWxlQ29tbWFuZCB9IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzL2NvbW1hbmRzL2FkZC10aWxlLmNvbW1hbmQnO1xuaW1wb3J0IHsgUmVtb3ZlVGlsZUNvbW1hbmQgfSBmcm9tICcuLi8uLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9yZW1vdmUtdGlsZS5jb21tYW5kJztcbmltcG9ydCBJbWFnZUxheWVyIGZyb20gJ29sL2xheWVyL0ltYWdlJztcbmltcG9ydCB7IFJhc3RlclRpbGVMYXllckZhY3RvcnkgfSBmcm9tICcuL3Jhc3Rlci10aWxlLWxheWVyLmZhY3RvcnknO1xuaW1wb3J0IHsgUmFzdGVyVGlsZUxheWVyU2V0dGluZ3MgfSBmcm9tICcuL3Jhc3Rlci10aWxlLWxheWVyLnNldHRpbmdzJztcbmltcG9ydCB7IEFkZFJhc3RlclRpbGVDb21tYW5kIH0gZnJvbSAnLi4vLi4vLi4vbWVzc2FnZXMvY29tbWFuZHMvYWRkLXJhc3Rlci10aWxlLWNvbW1hbmQnO1xuaW1wb3J0IHsgUmVtb3ZlUmFzdGVyVGlsZUNvbW1hbmQgfSBmcm9tICcuLi8uLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9yZW1vdmUtcmFzdGVyLXRpbGUuY29tbWFuZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FydC1yYXN0ZXItdGlsZS1sYXllcicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJhc3RlclRpbGVMYXllckNvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZUNvbXBvbmVudCB7XG4gIHB1YmxpYyBsYXllcj86IEltYWdlTGF5ZXI8UmFzdGVyPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvc3Rib3k6IE1hcFBvc3Rib3lTZXJ2aWNlLCBwcml2YXRlIGZhY3Rvcnk6IFJhc3RlclRpbGVMYXllckZhY3RvcnkpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgX3NldHRpbmdzOiBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyA9IG5ldyBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncygpO1xuXG4gIEBJbnB1dCgpIHNldCBzZXR0aW5ncyh2YWx1ZTogUmFzdGVyVGlsZUxheWVyU2V0dGluZ3MgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXZhbHVlIHx8IHRoaXMuX3NldHRpbmdzLmlzU2FtZSh2YWx1ZSkpIHJldHVybjtcbiAgICB0aGlzLl9zZXR0aW5ncyA9IHZhbHVlO1xuICAgIHRoaXMuaW5pdExheWVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBvc3Rib3lcbiAgICAgIC5zdWIoTWFwUmVuZGVyZWRFdmVudClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKG0pID0+ICEhbSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChtKSA9PiB0aGlzLmluaXRMYXllcigpKTtcbiAgfVxuXG4gIG9uRGVzdHJveSA9ICgpID0+IHRoaXMucmVtb3ZlTGF5ZXIoKTtcblxuICBwcml2YXRlIGluaXRMYXllcigpIHtcbiAgICB0aGlzLnJlbW92ZUxheWVyKCk7XG4gICAgdGhpcy5sYXllciA9IHRoaXMuZmFjdG9yeS5idWlsZCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgdGhpcy5wb3N0Ym95LmZpcmUobmV3IEFkZFJhc3RlclRpbGVDb21tYW5kKHRoaXMubGF5ZXIpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTGF5ZXIoKSB7XG4gICAgaWYgKHRoaXMubGF5ZXIpIHRoaXMucG9zdGJveS5maXJlKG5ldyBSZW1vdmVSYXN0ZXJUaWxlQ29tbWFuZCh0aGlzLmxheWVyKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,74 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { XYZ } from 'ol/source';
3
+ import { get } from 'ol/proj';
4
+ import ImageLayer from 'ol/layer/Image';
5
+ import RasterSource from 'ol/source/Raster';
6
+ import * as i0 from "@angular/core";
7
+ export class RasterTileLayerFactory {
8
+ build(settings) {
9
+ const source = new XYZ({
10
+ tileSize: 256,
11
+ maxZoom: settings.maxZoom || 14,
12
+ minZoom: settings.minZoom || 1,
13
+ projection: get(settings.projection),
14
+ tileUrlFunction: this.getTileFunc(settings),
15
+ crossOrigin: 'Anonymous',
16
+ tileLoadFunction: !!settings.requestHeaders
17
+ ? (tile, src) => this.tileLoader(tile, src, settings.requestHeaders)
18
+ : undefined,
19
+ });
20
+ const raster = new RasterSource({
21
+ sources: [source],
22
+ operationType: 'image',
23
+ operation: settings.operation,
24
+ });
25
+ return new ImageLayer({ source: raster, opacity: settings.opacity });
26
+ }
27
+ getTileFunc(settings) {
28
+ return (tileCoord) => {
29
+ const zoom = tileCoord[0];
30
+ const x = tileCoord[1];
31
+ const y = tileCoord[2];
32
+ const normalizedCoord = this.getNormalizedCoord({ x: x, y: y }, zoom);
33
+ const bound = 1 << zoom;
34
+ return settings.url
35
+ .replace('{x}', String(normalizedCoord?.x || x))
36
+ .replace('{z}', String(zoom))
37
+ .replace('{y}', String(bound - (normalizedCoord?.y || y) - 1));
38
+ };
39
+ }
40
+ tileLoader(tile, src, headers) {
41
+ const client = new XMLHttpRequest();
42
+ client.open('GET', src);
43
+ client.responseType = 'arraybuffer';
44
+ Object.keys(headers).forEach((k) => client.setRequestHeader(k, headers[k]));
45
+ client.onload = function () {
46
+ if (this.response !== undefined) {
47
+ const arrayBufferView = new Uint8Array(this.response);
48
+ const blob = new Blob([arrayBufferView], { type: 'image/png' });
49
+ const urlCreator = window.URL || window.webkitURL;
50
+ tile.getImage().src = urlCreator.createObjectURL(blob);
51
+ }
52
+ };
53
+ client.send();
54
+ }
55
+ getNormalizedCoord(coord, zoom) {
56
+ const y = coord.y;
57
+ let x = coord.x;
58
+ const tileRange = 1 << zoom;
59
+ if (y < 0 || y >= tileRange)
60
+ return null;
61
+ if (x < 0 || x >= tileRange)
62
+ x = ((x % tileRange) + tileRange) % tileRange;
63
+ return { x: x, y: y };
64
+ }
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RasterTileLayerFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
66
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RasterTileLayerFactory, providedIn: 'root' });
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RasterTileLayerFactory, decorators: [{
69
+ type: Injectable,
70
+ args: [{
71
+ providedIn: 'root',
72
+ }]
73
+ }] });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFzdGVyLXRpbGUtbGF5ZXIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL21hcC1wbGF0ZS9sYXllcnMvcmFzdGVyLXRpbGUvcmFzdGVyLXRpbGUtbGF5ZXIuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUc5QixPQUFPLFVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQzs7QUFLNUMsTUFBTSxPQUFPLHNCQUFzQjtJQUMxQixLQUFLLENBQUMsUUFBaUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDckIsUUFBUSxFQUFFLEdBQUc7WUFDYixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQy9CLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLENBQUM7WUFDOUIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFO1lBQ3JDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztZQUMzQyxXQUFXLEVBQUUsV0FBVztZQUN4QixnQkFBZ0IsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsY0FBZSxDQUFDO2dCQUM3RSxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDO1lBQzlCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixhQUFhLEVBQUUsT0FBTztZQUN0QixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7U0FDOUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxXQUFXLENBQUMsUUFBaUM7UUFDbkQsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDeEIsT0FBTyxRQUFRLENBQUMsR0FBRztpQkFDaEIsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDL0MsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzVCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVUsRUFBRSxHQUFXLEVBQUUsT0FBK0I7UUFDekUsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQztRQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUMvQixNQUFNLGVBQWUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDaEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSyxNQUFjLENBQUMsU0FBUyxDQUFDO2dCQUMxRCxJQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakU7UUFDSCxDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQStCLEVBQUUsSUFBWTtRQUN0RSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVM7WUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDM0UsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7d0dBMURVLHNCQUFzQjs0R0FBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSYXN0ZXIsIFhZWiB9IGZyb20gJ29sL3NvdXJjZSc7XG5pbXBvcnQgeyBUaWxlQ29vcmQgfSBmcm9tICdvbC90aWxlY29vcmQnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgeyBUaWxlIH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgUmFzdGVyVGlsZUxheWVyU2V0dGluZ3MgfSBmcm9tICcuL3Jhc3Rlci10aWxlLWxheWVyLnNldHRpbmdzJztcbmltcG9ydCBJbWFnZUxheWVyIGZyb20gJ29sL2xheWVyL0ltYWdlJztcbmltcG9ydCBSYXN0ZXJTb3VyY2UgZnJvbSAnb2wvc291cmNlL1Jhc3Rlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSYXN0ZXJUaWxlTGF5ZXJGYWN0b3J5IHtcbiAgcHVibGljIGJ1aWxkKHNldHRpbmdzOiBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyk6IEltYWdlTGF5ZXI8UmFzdGVyPiB7XG4gICAgY29uc3Qgc291cmNlID0gbmV3IFhZWih7XG4gICAgICB0aWxlU2l6ZTogMjU2LFxuICAgICAgbWF4Wm9vbTogc2V0dGluZ3MubWF4Wm9vbSB8fCAxNCxcbiAgICAgIG1pblpvb206IHNldHRpbmdzLm1pblpvb20gfHwgMSxcbiAgICAgIHByb2plY3Rpb246IGdldChzZXR0aW5ncy5wcm9qZWN0aW9uKSEsXG4gICAgICB0aWxlVXJsRnVuY3Rpb246IHRoaXMuZ2V0VGlsZUZ1bmMoc2V0dGluZ3MpLFxuICAgICAgY3Jvc3NPcmlnaW46ICdBbm9ueW1vdXMnLFxuICAgICAgdGlsZUxvYWRGdW5jdGlvbjogISFzZXR0aW5ncy5yZXF1ZXN0SGVhZGVyc1xuICAgICAgICA/ICh0aWxlLCBzcmM6IHN0cmluZykgPT4gdGhpcy50aWxlTG9hZGVyKHRpbGUsIHNyYywgc2V0dGluZ3MucmVxdWVzdEhlYWRlcnMhKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBjb25zdCByYXN0ZXIgPSBuZXcgUmFzdGVyU291cmNlKHtcbiAgICAgIHNvdXJjZXM6IFtzb3VyY2VdLFxuICAgICAgb3BlcmF0aW9uVHlwZTogJ2ltYWdlJyxcbiAgICAgIG9wZXJhdGlvbjogc2V0dGluZ3Mub3BlcmF0aW9uLFxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgSW1hZ2VMYXllcih7IHNvdXJjZTogcmFzdGVyLCBvcGFjaXR5OiBzZXR0aW5ncy5vcGFjaXR5IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUaWxlRnVuYyhzZXR0aW5nczogUmFzdGVyVGlsZUxheWVyU2V0dGluZ3MpOiAodGlsZUNvb3JkOiBUaWxlQ29vcmQpID0+IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aWxlQ29vcmQpID0+IHtcbiAgICAgIGNvbnN0IHpvb20gPSB0aWxlQ29vcmRbMF07XG4gICAgICBjb25zdCB4ID0gdGlsZUNvb3JkWzFdO1xuICAgICAgY29uc3QgeSA9IHRpbGVDb29yZFsyXTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDb29yZCA9IHRoaXMuZ2V0Tm9ybWFsaXplZENvb3JkKHsgeDogeCwgeTogeSB9LCB6b29tKTtcbiAgICAgIGNvbnN0IGJvdW5kID0gMSA8PCB6b29tO1xuICAgICAgcmV0dXJuIHNldHRpbmdzLnVybFxuICAgICAgICAucmVwbGFjZSgne3h9JywgU3RyaW5nKG5vcm1hbGl6ZWRDb29yZD8ueCB8fCB4KSlcbiAgICAgICAgLnJlcGxhY2UoJ3t6fScsIFN0cmluZyh6b29tKSlcbiAgICAgICAgLnJlcGxhY2UoJ3t5fScsIFN0cmluZyhib3VuZCAtIChub3JtYWxpemVkQ29vcmQ/LnkgfHwgeSkgLSAxKSk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdGlsZUxvYWRlcih0aWxlOiBUaWxlLCBzcmM6IHN0cmluZywgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIGNsaWVudC5vcGVuKCdHRVQnLCBzcmMpO1xuICAgIGNsaWVudC5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInO1xuICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKGs6IHN0cmluZykgPT4gY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoaywgaGVhZGVyc1trXSkpO1xuICAgIGNsaWVudC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcy5yZXNwb25zZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGFycmF5QnVmZmVyVmlldyA9IG5ldyBVaW50OEFycmF5KHRoaXMucmVzcG9uc2UpO1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2FycmF5QnVmZmVyVmlld10sIHsgdHlwZTogJ2ltYWdlL3BuZycgfSk7XG4gICAgICAgIGNvbnN0IHVybENyZWF0b3IgPSB3aW5kb3cuVVJMIHx8ICh3aW5kb3cgYXMgYW55KS53ZWJraXRVUkw7XG4gICAgICAgICh0aWxlIGFzIGFueSkuZ2V0SW1hZ2UoKS5zcmMgPSB1cmxDcmVhdG9yLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNsaWVudC5zZW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGdldE5vcm1hbGl6ZWRDb29yZChjb29yZDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9LCB6b29tOiBudW1iZXIpIHtcbiAgICBjb25zdCB5ID0gY29vcmQueTtcbiAgICBsZXQgeCA9IGNvb3JkLng7XG4gICAgY29uc3QgdGlsZVJhbmdlID0gMSA8PCB6b29tO1xuICAgIGlmICh5IDwgMCB8fCB5ID49IHRpbGVSYW5nZSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKHggPCAwIHx8IHggPj0gdGlsZVJhbmdlKSB4ID0gKCh4ICUgdGlsZVJhbmdlKSArIHRpbGVSYW5nZSkgJSB0aWxlUmFuZ2U7XG4gICAgcmV0dXJuIHsgeDogeCwgeTogeSB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,149 @@
1
+ export class RasterTileLayerSettings {
2
+ /**
3
+ * The maximum zoom level for a map view.
4
+ *
5
+ * @type {number}
6
+ * @default 19
7
+ */
8
+ maxZoom = 19;
9
+ /**
10
+ * The minimum zoom level allowed.
11
+ *
12
+ * @type {number}
13
+ */
14
+ minZoom = 0;
15
+ /**
16
+ * The opacity of an element.
17
+ *
18
+ * @type {number}
19
+ * @default 0.6
20
+ */
21
+ opacity = 0.6;
22
+ /**
23
+ * Represents the tiles URL.
24
+ * @typedef {string} url
25
+ *
26
+ * @example
27
+ * 'https://example.ex/{z}/{x}/{y}.png'
28
+ */
29
+ url = '';
30
+ /**
31
+ * The projection of the coordinate system.
32
+ *
33
+ * @type {string}
34
+ * @default 'EPSG:3857'
35
+ */
36
+ projection = 'EPSG:3857';
37
+ /**
38
+ * Additional headers that should be added to each tile request
39
+ *
40
+ * @type {Record<string, string>}
41
+ * @default An empty array
42
+ */
43
+ requestHeaders = null;
44
+ operation = (d) => d[0] ?? [];
45
+ /**
46
+ * Creates a copy of the given tile layer settings.
47
+ *
48
+ * @param {RasterTileLayerSettings} model - The tile layer settings to be copied.
49
+ * @return {RasterTileLayerSettings} - A new instance of RasterTileLayerSettings with the same properties as the model.
50
+ */
51
+ static copy(model) {
52
+ const result = new RasterTileLayerSettings();
53
+ result.maxZoom = model.maxZoom;
54
+ result.minZoom = model.minZoom;
55
+ result.projection = model.projection;
56
+ result.opacity = model.opacity;
57
+ result.url = model.url;
58
+ result.requestHeaders = model.requestHeaders;
59
+ result.operation = model.operation;
60
+ return result;
61
+ }
62
+ /**
63
+ * Sets the URL of the RasterTileLayerSettings object.
64
+ *
65
+ * @param {string} url - The URL to be set.
66
+ * @return {RasterTileLayerSettings} - The updated RasterTileLayerSettings object.
67
+ */
68
+ setUrl(url) {
69
+ return RasterTileLayerSettings.copy({ ...this, url });
70
+ }
71
+ /**
72
+ * Sets the operation to apply on raster tile data.
73
+ *
74
+ * @param {function} operation - A function that takes an input of either a two-dimensional array of numbers or an array of ImageData objects and returns either a one-dimensional array of numbers or an ImageData object.
75
+ * @return {RasterTileLayerSettings} A new instance of RasterTileLayerSettings with the updated operation.
76
+ */
77
+ setOperation(operation) {
78
+ return RasterTileLayerSettings.copy({ ...this, operation });
79
+ }
80
+ /**
81
+ * Sets the requestHeaders of the RasterTileLayerSettings object.
82
+ *
83
+ * @param {Record<string, string>} requestHeaders - The headers which should be provided.
84
+ * @return {RasterTileLayerSettings} - The updated RasterTileLayerSettings object.
85
+ */
86
+ setRequestHeaders(requestHeaders) {
87
+ return RasterTileLayerSettings.copy({ ...this, requestHeaders });
88
+ }
89
+ /**
90
+ * Sets the maximum zoom level for the tile layer.
91
+ *
92
+ * @param {number} maxZoom - The maximum zoom level.
93
+ * @returns {RasterTileLayerSettings} - The updated tile layer settings object.
94
+ */
95
+ setMaxZoom(maxZoom) {
96
+ return RasterTileLayerSettings.copy({ ...this, maxZoom });
97
+ }
98
+ /**
99
+ * Sets the minimum zoom level for the Tile Layer.
100
+ *
101
+ * @param {number} minZoom - The minimum zoom level to be set.
102
+ * @return {RasterTileLayerSettings} The modified RasterTileLayerSettings object with the updated minimum zoom level.
103
+ */
104
+ setMinZoom(minZoom) {
105
+ return RasterTileLayerSettings.copy({ ...this, minZoom });
106
+ }
107
+ /**
108
+ * Sets the opacity of the RasterTileLayerSettings.
109
+ *
110
+ * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.
111
+ * @return {RasterTileLayerSettings} - A new instance of RasterTileLayerSettings with the opacity set.
112
+ */
113
+ setOpacity(opacity) {
114
+ return RasterTileLayerSettings.copy({ ...this, opacity });
115
+ }
116
+ /**
117
+ * Sets the projection for the tile layer settings.
118
+ *
119
+ * @param {string} projection - The desired projection for the tile layer settings.
120
+ * @return {RasterTileLayerSettings} - The updated tile layer settings with the new projection.
121
+ */
122
+ setProjection(projection) {
123
+ return RasterTileLayerSettings.copy({ ...this, projection });
124
+ }
125
+ /**
126
+ * Checks if the current instance of RasterTileLayerSettings is equal to the given model.
127
+ * @param {RasterTileLayerSettings} model - The model to compare against.
128
+ * @return {boolean} - True if all properties of the current instance matches the properties of the model;
129
+ * otherwise, false.
130
+ */
131
+ isSame(model) {
132
+ if (this.maxZoom !== model.maxZoom)
133
+ return false;
134
+ if (this.minZoom !== model.minZoom)
135
+ return false;
136
+ if (this.url !== model.url)
137
+ return false;
138
+ if (this.projection !== model.projection)
139
+ return false;
140
+ if (this.opacity !== model.opacity)
141
+ return false;
142
+ if (this.requestHeaders !== model.requestHeaders)
143
+ return false;
144
+ if (this.operation !== model.operation)
145
+ return false;
146
+ return true;
147
+ }
148
+ }
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFzdGVyLXRpbGUtbGF5ZXIuc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9tYXAtcGxhdGUvbGF5ZXJzL3Jhc3Rlci10aWxlL3Jhc3Rlci10aWxlLWxheWVyLnNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEM7Ozs7O09BS0c7SUFDSCxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQ3JCOzs7O09BSUc7SUFDSCxPQUFPLEdBQVcsQ0FBQyxDQUFDO0lBQ3BCOzs7OztPQUtHO0lBQ0gsT0FBTyxHQUFXLEdBQUcsQ0FBQztJQUN0Qjs7Ozs7O09BTUc7SUFDSCxHQUFHLEdBQVcsRUFBRSxDQUFDO0lBQ2pCOzs7OztPQUtHO0lBQ0gsVUFBVSxHQUFXLFdBQVcsQ0FBQztJQUNqQzs7Ozs7T0FLRztJQUNILGNBQWMsR0FBa0MsSUFBSSxDQUFDO0lBRXJELFNBQVMsR0FBNkQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEY7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQThCO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDL0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNyQyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDL0IsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxNQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDbkMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDaEIsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxTQUFtRTtRQUM5RSxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsY0FBc0M7UUFDdEQsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxPQUFlO1FBQ3hCLE9BQU8sdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN4QixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLE9BQWU7UUFDeEIsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxVQUFrQjtRQUM5QixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEtBQThCO1FBQzFDLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsVUFBVTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLENBQUMsY0FBYztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9ELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsU0FBUztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFJhc3RlclRpbGVMYXllclNldHRpbmdzIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHpvb20gbGV2ZWwgZm9yIGEgbWFwIHZpZXcuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBkZWZhdWx0IDE5XG4gICAqL1xuICBtYXhab29tOiBudW1iZXIgPSAxOTtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHpvb20gbGV2ZWwgYWxsb3dlZC5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG1pblpvb206IG51bWJlciA9IDA7XG4gIC8qKlxuICAgKiBUaGUgb3BhY2l0eSBvZiBhbiBlbGVtZW50LlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAZGVmYXVsdCAwLjZcbiAgICovXG4gIG9wYWNpdHk6IG51bWJlciA9IDAuNjtcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHRpbGVzIFVSTC5cbiAgICogQHR5cGVkZWYge3N0cmluZ30gdXJsXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqICdodHRwczovL2V4YW1wbGUuZXgve3p9L3t4fS97eX0ucG5nJ1xuICAgKi9cbiAgdXJsOiBzdHJpbmcgPSAnJztcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0aW9uIG9mIHRoZSBjb29yZGluYXRlIHN5c3RlbS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJ0VQU0c6Mzg1NydcbiAgICovXG4gIHByb2plY3Rpb246IHN0cmluZyA9ICdFUFNHOjM4NTcnO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBoZWFkZXJzIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIGVhY2ggdGlsZSByZXF1ZXN0XG4gICAqXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fVxuICAgKiBAZGVmYXVsdCBBbiBlbXB0eSBhcnJheVxuICAgKi9cbiAgcmVxdWVzdEhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsID0gbnVsbDtcblxuICBvcGVyYXRpb246IChkYXRhOiBudW1iZXJbXVtdIHwgSW1hZ2VEYXRhW10pID0+IG51bWJlcltdIHwgSW1hZ2VEYXRhID0gKGQpID0+IGRbMF0gPz8gW107XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGUgZ2l2ZW4gdGlsZSBsYXllciBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHtSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5nc30gbW9kZWwgLSBUaGUgdGlsZSBsYXllciBzZXR0aW5ncyB0byBiZSBjb3BpZWQuXG4gICAqIEByZXR1cm4ge1Jhc3RlclRpbGVMYXllclNldHRpbmdzfSAtIEEgbmV3IGluc3RhbmNlIG9mIFJhc3RlclRpbGVMYXllclNldHRpbmdzIHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgbW9kZWwuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvcHkobW9kZWw6IFJhc3RlclRpbGVMYXllclNldHRpbmdzKTogUmFzdGVyVGlsZUxheWVyU2V0dGluZ3Mge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncygpO1xuICAgIHJlc3VsdC5tYXhab29tID0gbW9kZWwubWF4Wm9vbTtcbiAgICByZXN1bHQubWluWm9vbSA9IG1vZGVsLm1pblpvb207XG4gICAgcmVzdWx0LnByb2plY3Rpb24gPSBtb2RlbC5wcm9qZWN0aW9uO1xuICAgIHJlc3VsdC5vcGFjaXR5ID0gbW9kZWwub3BhY2l0eTtcbiAgICByZXN1bHQudXJsID0gbW9kZWwudXJsO1xuICAgIHJlc3VsdC5yZXF1ZXN0SGVhZGVycyA9IG1vZGVsLnJlcXVlc3RIZWFkZXJzO1xuICAgIHJlc3VsdC5vcGVyYXRpb24gPSBtb2RlbC5vcGVyYXRpb247XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBVUkwgb2YgdGhlIFJhc3RlclRpbGVMYXllclNldHRpbmdzIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgdG8gYmUgc2V0LlxuICAgKiBAcmV0dXJuIHtSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5nc30gLSBUaGUgdXBkYXRlZCBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyBvYmplY3QuXG4gICAqL1xuICBzZXRVcmwodXJsOiBzdHJpbmcpOiBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIFJhc3RlclRpbGVMYXllclNldHRpbmdzLmNvcHkoeyAuLi50aGlzLCB1cmwgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb3BlcmF0aW9uIHRvIGFwcGx5IG9uIHJhc3RlciB0aWxlIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wZXJhdGlvbiAtIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBpbnB1dCBvZiBlaXRoZXIgYSB0d28tZGltZW5zaW9uYWwgYXJyYXkgb2YgbnVtYmVycyBvciBhbiBhcnJheSBvZiBJbWFnZURhdGEgb2JqZWN0cyBhbmQgcmV0dXJucyBlaXRoZXIgYSBvbmUtZGltZW5zaW9uYWwgYXJyYXkgb2YgbnVtYmVycyBvciBhbiBJbWFnZURhdGEgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5nc30gQSBuZXcgaW5zdGFuY2Ugb2YgUmFzdGVyVGlsZUxheWVyU2V0dGluZ3Mgd2l0aCB0aGUgdXBkYXRlZCBvcGVyYXRpb24uXG4gICAqL1xuICBzZXRPcGVyYXRpb24ob3BlcmF0aW9uOiAoZGF0YTogbnVtYmVyW11bXSB8IEltYWdlRGF0YVtdKSA9PiBudW1iZXJbXSB8IEltYWdlRGF0YSk6IFJhc3RlclRpbGVMYXllclNldHRpbmdzIHtcbiAgICByZXR1cm4gUmFzdGVyVGlsZUxheWVyU2V0dGluZ3MuY29weSh7IC4uLnRoaXMsIG9wZXJhdGlvbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZXF1ZXN0SGVhZGVycyBvZiB0aGUgUmFzdGVyVGlsZUxheWVyU2V0dGluZ3Mgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IHJlcXVlc3RIZWFkZXJzIC0gVGhlIGhlYWRlcnMgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkLlxuICAgKiBAcmV0dXJuIHtSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5nc30gLSBUaGUgdXBkYXRlZCBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyBvYmplY3QuXG4gICAqL1xuICBzZXRSZXF1ZXN0SGVhZGVycyhyZXF1ZXN0SGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFJhc3RlclRpbGVMYXllclNldHRpbmdzIHtcbiAgICByZXR1cm4gUmFzdGVyVGlsZUxheWVyU2V0dGluZ3MuY29weSh7IC4uLnRoaXMsIHJlcXVlc3RIZWFkZXJzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1heGltdW0gem9vbSBsZXZlbCBmb3IgdGhlIHRpbGUgbGF5ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhab29tIC0gVGhlIG1heGltdW0gem9vbSBsZXZlbC5cbiAgICogQHJldHVybnMge1Jhc3RlclRpbGVMYXllclNldHRpbmdzfSAtIFRoZSB1cGRhdGVkIHRpbGUgbGF5ZXIgc2V0dGluZ3Mgb2JqZWN0LlxuICAgKi9cbiAgc2V0TWF4Wm9vbShtYXhab29tOiBudW1iZXIpOiBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIFJhc3RlclRpbGVMYXllclNldHRpbmdzLmNvcHkoeyAuLi50aGlzLCBtYXhab29tIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1pbmltdW0gem9vbSBsZXZlbCBmb3IgdGhlIFRpbGUgTGF5ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5ab29tIC0gVGhlIG1pbmltdW0gem9vbSBsZXZlbCB0byBiZSBzZXQuXG4gICAqIEByZXR1cm4ge1Jhc3RlclRpbGVMYXllclNldHRpbmdzfSBUaGUgbW9kaWZpZWQgUmFzdGVyVGlsZUxheWVyU2V0dGluZ3Mgb2JqZWN0IHdpdGggdGhlIHVwZGF0ZWQgbWluaW11bSB6b29tIGxldmVsLlxuICAgKi9cbiAgc2V0TWluWm9vbShtaW5ab29tOiBudW1iZXIpOiBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIFJhc3RlclRpbGVMYXllclNldHRpbmdzLmNvcHkoeyAuLi50aGlzLCBtaW5ab29tIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wYWNpdHkgb2YgdGhlIFJhc3RlclRpbGVMYXllclNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3BhY2l0eSAtIFRoZSBvcGFjaXR5IHZhbHVlIHRvIHNldC4gTXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEuXG4gICAqIEByZXR1cm4ge1Jhc3RlclRpbGVMYXllclNldHRpbmdzfSAtIEEgbmV3IGluc3RhbmNlIG9mIFJhc3RlclRpbGVMYXllclNldHRpbmdzIHdpdGggdGhlIG9wYWNpdHkgc2V0LlxuICAgKi9cbiAgc2V0T3BhY2l0eShvcGFjaXR5OiBudW1iZXIpOiBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIFJhc3RlclRpbGVMYXllclNldHRpbmdzLmNvcHkoeyAuLi50aGlzLCBvcGFjaXR5IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHByb2plY3Rpb24gZm9yIHRoZSB0aWxlIGxheWVyIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvamVjdGlvbiAtIFRoZSBkZXNpcmVkIHByb2plY3Rpb24gZm9yIHRoZSB0aWxlIGxheWVyIHNldHRpbmdzLlxuICAgKiBAcmV0dXJuIHtSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5nc30gLSBUaGUgdXBkYXRlZCB0aWxlIGxheWVyIHNldHRpbmdzIHdpdGggdGhlIG5ldyBwcm9qZWN0aW9uLlxuICAgKi9cbiAgc2V0UHJvamVjdGlvbihwcm9qZWN0aW9uOiBzdHJpbmcpOiBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyB7XG4gICAgcmV0dXJuIFJhc3RlclRpbGVMYXllclNldHRpbmdzLmNvcHkoeyAuLi50aGlzLCBwcm9qZWN0aW9uIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiBSYXN0ZXJUaWxlTGF5ZXJTZXR0aW5ncyBpcyBlcXVhbCB0byB0aGUgZ2l2ZW4gbW9kZWwuXG4gICAqIEBwYXJhbSB7UmFzdGVyVGlsZUxheWVyU2V0dGluZ3N9IG1vZGVsIC0gVGhlIG1vZGVsIHRvIGNvbXBhcmUgYWdhaW5zdC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBUcnVlIGlmIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlIG1hdGNoZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIG1vZGVsO1xuICAgKiAgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlLCBmYWxzZS5cbiAgICovXG4gIHB1YmxpYyBpc1NhbWUobW9kZWw6IFJhc3RlclRpbGVMYXllclNldHRpbmdzKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubWF4Wm9vbSAhPT0gbW9kZWwubWF4Wm9vbSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLm1pblpvb20gIT09IG1vZGVsLm1pblpvb20pIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy51cmwgIT09IG1vZGVsLnVybCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLnByb2plY3Rpb24gIT09IG1vZGVsLnByb2plY3Rpb24pIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy5vcGFjaXR5ICE9PSBtb2RlbC5vcGFjaXR5KSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMucmVxdWVzdEhlYWRlcnMgIT09IG1vZGVsLnJlcXVlc3RIZWFkZXJzKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uICE9PSBtb2RlbC5vcGVyYXRpb24pIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19