@esfaenza/extensions 15.2.32 → 15.2.34

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.
@@ -5,25 +5,34 @@ import { Subject } from "rxjs";
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "./extensions.messages.service";
7
7
  import * as i2 from "@angular/router";
8
+ import * as i3 from "@angular/common";
8
9
  /* Classe che contiene tutte le informazioni sull'embedding in un unico contenitore per semplicità */
9
10
  export class AppEmbeddingExtensions {
10
- constructor(msgService, router) {
11
+ constructor(msgService, router, location) {
11
12
  this.msgService = msgService;
12
13
  this.router = router;
14
+ this.location = location;
13
15
  this.sidebarWidth = 230;
14
16
  this.Embedded = false;
15
17
  this.EmbeddingLevel = 0;
16
18
  this.MessageObserver = new Subject();
19
+ this._reloadAllowed = true;
17
20
  this.MainWindow = window;
18
21
  while (this.MainWindow.parent != this.MainWindow) {
19
22
  this.MainWindow = this.MainWindow.parent;
20
23
  this.EmbeddingLevel++;
21
24
  this.Embedded = true;
25
+ this.EmbeddedModule = this.location.path().match(/module=([a-zA-Z_]+)/)[1];
22
26
  }
23
27
  this.configureEmbeddability();
24
28
  if (this.Embedded)
25
29
  this.msgService.configureEmbeddability(this.MainWindow, this.MessageObserver);
26
30
  }
31
+ IsReloadAllowed() {
32
+ let ret = this._reloadAllowed;
33
+ this._reloadAllowed = true;
34
+ return ret;
35
+ }
27
36
  configureEmbeddability() {
28
37
  window.onmessage = (event) => {
29
38
  // Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
@@ -47,6 +56,9 @@ export class AppEmbeddingExtensions {
47
56
  break;
48
57
  }
49
58
  }
59
+ else if (event?.data?.type == "replace-state") {
60
+ this.location.replaceState(event?.data?.url);
61
+ }
50
62
  else if (event?.data?.type == "confirm") {
51
63
  console.log(`Window message - confirm -> Level: ${event?.data?.level}, Message: ${event?.data?.text}, Title: ${event?.data?.title}, ID: ${event?.data?.guid}`);
52
64
  var sourceWindow = event.source;
@@ -86,8 +98,10 @@ export class AppEmbeddingExtensions {
86
98
  }
87
99
  else if (event?.data?.type == "navigate-back") {
88
100
  console.log(`Window message - navigate-back -> ${event?.data?.url}`);
89
- if (history.state._pushed)
101
+ if (history.state._pushed) {
102
+ this._reloadAllowed = false;
90
103
  history.back();
104
+ }
91
105
  }
92
106
  else if (event?.data?.type == "redirect") {
93
107
  console.log(`Window message - redirect -> ${event?.data?.url}`);
@@ -142,6 +156,15 @@ export class AppEmbeddingExtensions {
142
156
  if (this.Embedded)
143
157
  document.body.style.setProperty("overflow-y", "auto", "important");
144
158
  }
159
+ replaceState(basePath, url) {
160
+ // Esempio basePath: pages
161
+ // Esempio url: parties/leads_search
162
+ // Normalizzazione senza slash prima o dopo
163
+ basePath = basePath.endsWith("/") ? basePath.substring(0, basePath.length - 2) : basePath;
164
+ url = url.startsWith("/") ? url.substring(1) : url;
165
+ this.location.replaceState(`${basePath}/${url}`);
166
+ this.MainWindow.postMessage({ type: "replace-state", url: `pages/embed/${this.EmbeddedModule}/${url}` }, "*");
167
+ }
145
168
  refreshBoundariesOnMenuCollapse() {
146
169
  const wrapper = document.body.getElementsByClassName("main-wrapper")[0];
147
170
  let wrapperStyles = window.getComputedStyle(wrapper);
@@ -157,10 +180,10 @@ export class AppEmbeddingExtensions {
157
180
  left.style.setProperty("width", leftSpace + "px");
158
181
  }
159
182
  }
160
- AppEmbeddingExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, deps: [{ token: i1.MessageService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
183
+ AppEmbeddingExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, deps: [{ token: i1.MessageService }, { token: i2.Router }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Injectable });
161
184
  AppEmbeddingExtensions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, providedIn: "root" });
162
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, decorators: [{
163
186
  type: Injectable,
164
187
  args: [{ providedIn: "root" }]
165
- }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.Router }]; } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBRS9CLHFHQUFxRztBQUVyRyxNQUFNLE9BQU8sc0JBQXNCO0lBVS9CLFlBQW9CLFVBQTBCLEVBQVUsTUFBYztRQUFsRCxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSL0QsaUJBQVksR0FBVyxHQUFHLENBQUM7UUFFM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQixvQkFBZSxHQUF1QyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztRQUdsRyxJQUFJLENBQUMsVUFBVSxHQUEyQyxNQUFNLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7SUFD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Q0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxJQUFJO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDOzttSEE5S1Esc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy8gU2VydmljZXNcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi9leHRlbnNpb25zLm1lc3NhZ2VzLnNlcnZpY2VcIjtcclxuXHJcbi8vIExpYnJhcmllc1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbi8qIENsYXNzZSBjaGUgY29udGllbmUgdHV0dGUgbGUgaW5mb3JtYXppb25pIHN1bGwnZW1iZWRkaW5nIGluIHVuIHVuaWNvIGNvbnRlbml0b3JlIHBlciBzZW1wbGljaXTDoCAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXHJcbmV4cG9ydCBjbGFzcyBBcHBFbWJlZGRpbmdFeHRlbnNpb25zIHtcclxuXHJcbiAgICBwdWJsaWMgc2lkZWJhcldpZHRoOiBudW1iZXIgPSAyMzA7XHJcblxyXG4gICAgcHVibGljIEVtYmVkZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgRW1iZWRkaW5nTGV2ZWw6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgTWFpbldpbmRvdzogYW55O1xyXG5cclxuICAgIHB1YmxpYyBNZXNzYWdlT2JzZXJ2ZXI6IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4gPSBuZXcgU3ViamVjdDx7IGV2ZW50OiBhbnksIGRhdGE6IGFueSB9PigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgICAgICB0aGlzLk1haW5XaW5kb3cgPSA8eyBwYXJlbnQ6IGFueSwgcG9zdE1lc3NhZ2U6IEZ1bmN0aW9uIH0+d2luZG93O1xyXG4gICAgICAgIHdoaWxlICh0aGlzLk1haW5XaW5kb3cucGFyZW50ICE9IHRoaXMuTWFpbldpbmRvdykge1xyXG4gICAgICAgICAgICB0aGlzLk1haW5XaW5kb3cgPSB0aGlzLk1haW5XaW5kb3cucGFyZW50O1xyXG4gICAgICAgICAgICB0aGlzLkVtYmVkZGluZ0xldmVsKys7XHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVFbWJlZGRhYmlsaXR5KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKVxyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY29uZmlndXJlRW1iZWRkYWJpbGl0eSh0aGlzLk1haW5XaW5kb3csIHRoaXMuTWVzc2FnZU9ic2VydmVyKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkoKSB7XHJcbiAgICAgICAgd2luZG93Lm9ubWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIElnbm9ybyBpIG1pZWkgbWVzc2FnZ2kgZGF0byBjaGUgbWkgaW50ZXJlc3Nhbm8gc29sbyBxdWVsbGkgZGVnbGkgYWx0cmkgaWZyYW1lXHJcbiAgICAgICAgICAgIGlmIChldmVudC5zb3VyY2UgPT0gd2luZG93ICYmIGV2ZW50Py5kYXRhPy50eXBlICE9IFwibW9kYWwtb3BlblwiKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIubmV4dCh7IGV2ZW50OiBcIndpbmRvdy1tZXNzYWdlXCIsIGRhdGE6IGV2ZW50Py5kYXRhIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwiYWxlcnRcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gYWxlcnQgLT4gTGV2ZWw6ICR7ZXZlbnQ/LmRhdGE/LmxldmVsfSwgTWVzc2FnZTogJHtldmVudD8uZGF0YT8ubXNnfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQ/LmRhdGE/LmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVN1Y2Nlc3MoZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3YXJuaW5nXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVXYXJuaW5nKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiaW5mb1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlSW5mbyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJjb25maXJtXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGNvbmZpcm0gLT4gTGV2ZWw6ICR7ZXZlbnQ/LmRhdGE/LmxldmVsfSwgTWVzc2FnZTogJHtldmVudD8uZGF0YT8udGV4dH0sIFRpdGxlOiAke2V2ZW50Py5kYXRhPy50aXRsZX0sIElEOiAke2V2ZW50Py5kYXRhPy5ndWlkfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBzb3VyY2VXaW5kb3cgPSAoZXZlbnQuc291cmNlIGFzIFdpbmRvdyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmFzZVJlc3BvbnNlID0geyB0eXBlOiBcImNvbmZpcm0tcmVzcG9uc2VcIiwgZ3VpZDogZXZlbnQ/LmRhdGE/Lmd1aWQgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IHRydWUsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiBmYWxzZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIndhcm5pbmdcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKGV2ZW50Py5kYXRhPy50aXRsZSwgZXZlbnQ/LmRhdGE/LnRleHQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogdHJ1ZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGZhbHNlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJuYXZpZ2F0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBuYXZpZ2F0ZSAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3VGFiID0gZXZlbnQ/LmRhdGE/Lm5ld1RhYjtcclxuICAgICAgICAgICAgICAgIHZhciByZXBsYWNlU3RhdGUgPSBldmVudD8uZGF0YT8ucmVwbGFjZVN0YXRlXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRG9wcGlhIGNoaWFtYXRhIGRpIG5hdmlnYXppb25lLCBpZ25vcm8gaWwgc2Vjb25kbyBldmVudG8gc2Nvb3JkaW5hdG8gZGFsIHJvdXRlclwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1JlbGF0aXZlVXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbZXZlbnQ/LmRhdGE/LnVybF0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2VVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKHRoaXMucm91dGVyLnVybCwgJycpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1VybCA9IGJhc2VVcmwgKyBkZWNvZGVVUklDb21wb25lbnQobmV3UmVsYXRpdmVVcmwudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VTdGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7IF9wdXNoZWQ6IHRydWUgfSwgXCJcIiwgbmV3VXJsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld1RhYilcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihuZXdVcmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlLWJhY2tcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gbmF2aWdhdGUtYmFjayAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlzdG9yeS5zdGF0ZS5fcHVzaGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVkaXJlY3RcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gcmVkaXJlY3QgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZXZlbnQ/LmRhdGE/LnVybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRpb25cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTmF2aWdhdGlvbiAtPiAke2V2ZW50Py5kYXRhPy5pbnRlcm5hbE5hdmlnYXRpb24gPyBcIltpbnRlcm5hbF1cIiA6IFwiXCJ9ICR7ZXZlbnQ/LmRhdGE/LnRpdGxlfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJuYXZpZ2F0aW9uXCIsIGRhdGE6IGV2ZW50Py5kYXRhIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtb3BlblwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwZXJTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh3cmFwcGVyKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ1JpZ2h0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1yaWdodFwiKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgT3BlbiAtPiBCYWNrZHJvcCBIZWlnaHQ6ICR7ZXZlbnQ/LmRhdGE/LmJhY2tkcm9wSGVpZ2h0fWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciB0b3BIZWlnaHQ6IG51bWJlciA9IDExNjsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgaWwgdG9wIGUgbCdpbml6aW8gZGVsbCdpZnJhbWUsIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIHJpZ2h0U3BhY2U6IG51bWJlciA9IHdyYXBwZXJQYWRkaW5nUmlnaHQ7IC8vIHZhbG9yZSBmaXNzbywgZGlzdGFuemEgZnJhIGxhIGZpbmUgZGVsbCdpZnJhbWUgZSBpbCBsYXRvIHNpbmlzdHJvIGRlbGxvIHNjaGVybW8sIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gdGhpcy5zaWRlYmFyV2lkdGggKyB3cmFwcGVyUGFkZGluZ0xlZnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbW1vblN0eWxlcyA9IFwicG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyBvcGFjaXR5OiAwLjU7IFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvd1wiLCBcImhpZGRlblwiLCBcImltcG9ydGFudFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgdG9wLmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtdG9wXCI7XHJcbiAgICAgICAgICAgICAgICB0b3Auc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6ICR7dG9wSGVpZ2h0fXB4OyB0b3A6IDA7IHdpZHRoOiBjYWxjKDEwMCUgLSAke2xlZnRTcGFjZX1weCk7IGxlZnQ6ICR7bGVmdFNwYWNlfXB4YDtcclxuICAgICAgICAgICAgICAgIHRvcC5pZCA9IFwidG9wXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtbGVmdFwiO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogMTAwJTsgdG9wOiAwOyB3aWR0aDogJHtsZWZ0U3BhY2V9cHg7YDtcclxuICAgICAgICAgICAgICAgIGxlZnQuaWQgPSBcImxlZnRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICByaWdodC5jbGFzc05hbWUgPSBcImVtYmVkZGVkLW1vZGFsLXJpZ2h0XCI7XHJcbiAgICAgICAgICAgICAgICByaWdodC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogY2FsYygxMDAlIC0gJHt0b3BIZWlnaHR9cHgpOyB0b3A6ICR7dG9wSGVpZ2h0fXB4OyByaWdodDogMDsgd2lkdGg6ICR7cmlnaHRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQuaWQgPSBcInJpZ2h0XCI7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3ApO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtY2xvc2VcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgQ2xvc2VgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJvdmVyZmxvd1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRvcFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRvcClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxlZnQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJpZ2h0KVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvdy15XCIsIFwiYXV0b1wiLCBcImltcG9ydGFudFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVmcmVzaEJvdW5kYXJpZXNPbk1lbnVDb2xsYXBzZSgpIHtcclxuICAgICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGxldCB3cmFwcGVyU3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUod3JhcHBlcik7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1sZWZ0XCIpKTtcclxuICAgICAgICB2YXIgbGVmdFNwYWNlOiBudW1iZXIgPSAyMzAgKyB3cmFwcGVyUGFkZGluZ0xlZnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxlZnRcIik7XHJcbiAgICAgICAgY29uc3QgdG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0b3BcIik7XHJcblxyXG4gICAgICAgIGlmICh0b3ApIHtcclxuICAgICAgICAgICAgdG9wLnN0eWxlLnNldFByb3BlcnR5KFwibGVmdFwiLCAobGVmdFNwYWNlKSArIFwicHhcIik7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGBjYWxjKDEwMCUgLSAke2xlZnRTcGFjZX1weClgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChsZWZ0KVxyXG4gICAgICAgICAgICBsZWZ0LnN0eWxlLnNldFByb3BlcnR5KFwid2lkdGhcIiwgbGVmdFNwYWNlICsgXCJweFwiKTtcclxuICAgIH1cclxufSJdfQ==
188
+ }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.Router }, { type: i3.Location }]; } });
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUUvQixxR0FBcUc7QUFFckcsTUFBTSxPQUFPLHNCQUFzQjtJQWMvQixZQUFvQixVQUEwQixFQUFVLE1BQWMsRUFBVSxRQUFrQjtRQUE5RSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWjNGLGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBRTNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFHM0Isb0JBQWUsR0FBdUMsSUFBSSxPQUFPLEVBQTZCLENBQUM7UUFFOUYsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFLbkMsSUFBSSxDQUFDLFVBQVUsR0FBMkMsTUFBTSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENB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LE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxlQUFlLFNBQVMsS0FBSyxDQUFDLENBQUM7U0FDakU7UUFFRCxJQUFJLElBQUk7WUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7O21IQTNNUSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQURULE1BQU07MkZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy8gU2VydmljZXNcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi9leHRlbnNpb25zLm1lc3NhZ2VzLnNlcnZpY2VcIjtcclxuXHJcbi8vIExpYnJhcmllc1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbi8qIENsYXNzZSBjaGUgY29udGllbmUgdHV0dGUgbGUgaW5mb3JtYXppb25pIHN1bGwnZW1iZWRkaW5nIGluIHVuIHVuaWNvIGNvbnRlbml0b3JlIHBlciBzZW1wbGljaXTDoCAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXHJcbmV4cG9ydCBjbGFzcyBBcHBFbWJlZGRpbmdFeHRlbnNpb25zIHtcclxuXHJcbiAgICBwdWJsaWMgc2lkZWJhcldpZHRoOiBudW1iZXIgPSAyMzA7XHJcblxyXG4gICAgcHVibGljIEVtYmVkZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgRW1iZWRkaW5nTGV2ZWw6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgTWFpbldpbmRvdzogYW55O1xyXG5cclxuICAgIHB1YmxpYyBNZXNzYWdlT2JzZXJ2ZXI6IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4gPSBuZXcgU3ViamVjdDx7IGV2ZW50OiBhbnksIGRhdGE6IGFueSB9PigpO1xyXG5cclxuICAgIHByaXZhdGUgX3JlbG9hZEFsbG93ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHB1YmxpYyBFbWJlZGRlZE1vZHVsZTogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93ID0gPHsgcGFyZW50OiBhbnksIHBvc3RNZXNzYWdlOiBGdW5jdGlvbiB9PndpbmRvdztcclxuICAgICAgICB3aGlsZSAodGhpcy5NYWluV2luZG93LnBhcmVudCAhPSB0aGlzLk1haW5XaW5kb3cpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93ID0gdGhpcy5NYWluV2luZG93LnBhcmVudDtcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRpbmdMZXZlbCsrO1xyXG4gICAgICAgICAgICB0aGlzLkVtYmVkZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkZWRNb2R1bGUgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKS5tYXRjaCgvbW9kdWxlPShbYS16QS1aX10rKS8pWzFdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVFbWJlZGRhYmlsaXR5KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKVxyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY29uZmlndXJlRW1iZWRkYWJpbGl0eSh0aGlzLk1haW5XaW5kb3csIHRoaXMuTWVzc2FnZU9ic2VydmVyKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBJc1JlbG9hZEFsbG93ZWQoKSB7XHJcbiAgICAgICAgbGV0IHJldCA9IHRoaXMuX3JlbG9hZEFsbG93ZWQ7XHJcbiAgICAgICAgdGhpcy5fcmVsb2FkQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBjb25maWd1cmVFbWJlZGRhYmlsaXR5KCkge1xyXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBJZ25vcm8gaSBtaWVpIG1lc3NhZ2dpIGRhdG8gY2hlIG1pIGludGVyZXNzYW5vIHNvbG8gcXVlbGxpIGRlZ2xpIGFsdHJpIGlmcmFtZVxyXG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09IHdpbmRvdyAmJiBldmVudD8uZGF0YT8udHlwZSAhPSBcIm1vZGFsLW9wZW5cIilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJ3aW5kb3ctbWVzc2FnZVwiLCBkYXRhOiBldmVudD8uZGF0YSB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImFsZXJ0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGFsZXJ0IC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/Lm1zZ31gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcihldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZm9cIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUluZm8oZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVwbGFjZS1zdGF0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShldmVudD8uZGF0YT8udXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImNvbmZpcm1cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gY29uZmlybSAtPiBMZXZlbDogJHtldmVudD8uZGF0YT8ubGV2ZWx9LCBNZXNzYWdlOiAke2V2ZW50Py5kYXRhPy50ZXh0fSwgVGl0bGU6ICR7ZXZlbnQ/LmRhdGE/LnRpdGxlfSwgSUQ6ICR7ZXZlbnQ/LmRhdGE/Lmd1aWR9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHNvdXJjZVdpbmRvdyA9IChldmVudC5zb3VyY2UgYXMgV2luZG93KTtcclxuICAgICAgICAgICAgICAgIHZhciBiYXNlUmVzcG9uc2UgPSB7IHR5cGU6IFwiY29uZmlybS1yZXNwb25zZVwiLCBndWlkOiBldmVudD8uZGF0YT8uZ3VpZCB9O1xyXG5cclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQ/LmRhdGE/LmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKGV2ZW50Py5kYXRhPy50aXRsZSwgZXZlbnQ/LmRhdGE/LnRleHQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogdHJ1ZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGZhbHNlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZ1dpdGhDaG9pY2UoZXZlbnQ/LmRhdGE/LnRpdGxlLCBldmVudD8uZGF0YT8udGV4dCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiB0cnVlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogZmFsc2UsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIG5hdmlnYXRlIC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuICAgICAgICAgICAgICAgIHZhciBuZXdUYWIgPSBldmVudD8uZGF0YT8ubmV3VGFiO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlcGxhY2VTdGF0ZSA9IGV2ZW50Py5kYXRhPy5yZXBsYWNlU3RhdGVcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKHRoaXMucm91dGVyLnVybCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJEb3BwaWEgY2hpYW1hdGEgZGkgbmF2aWdhemlvbmUsIGlnbm9ybyBpbCBzZWNvbmRvIGV2ZW50byBzY29vcmRpbmF0byBkYWwgcm91dGVyXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3UmVsYXRpdmVVcmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtldmVudD8uZGF0YT8udXJsXSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmFzZVVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnJlcGxhY2UodGhpcy5yb3V0ZXIudXJsLCAnJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXJsID0gYmFzZVVybCArIGRlY29kZVVSSUNvbXBvbmVudChuZXdSZWxhdGl2ZVVybC50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZVN0YXRlKVxyXG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHsgX3B1c2hlZDogdHJ1ZSB9LCBcIlwiLCBuZXdVcmwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3VGFiKVxyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKG5ld1VybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibmF2aWdhdGUtYmFja1wiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBuYXZpZ2F0ZS1iYWNrIC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuICAgICAgICAgICAgICAgIGlmIChoaXN0b3J5LnN0YXRlLl9wdXNoZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWxvYWRBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5iYWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJyZWRpcmVjdFwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSByZWRpcmVjdCAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBldmVudD8uZGF0YT8udXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibmF2aWdhdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBOYXZpZ2F0aW9uIC0+ICR7ZXZlbnQ/LmRhdGE/LmludGVybmFsTmF2aWdhdGlvbiA/IFwiW2ludGVybmFsXVwiIDogXCJcIn0gJHtldmVudD8uZGF0YT8udGl0bGV9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIubmV4dCh7IGV2ZW50OiBcIm5hdmlnYXRpb25cIiwgZGF0YTogZXZlbnQ/LmRhdGEgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJtb2RhbC1vcGVuXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJtYWluLXdyYXBwZXJcIilbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1sZWZ0XCIpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nUmlnaHQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLXJpZ2h0XCIpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBNb2RhbCBPcGVuIC0+IEJhY2tkcm9wIEhlaWdodDogJHtldmVudD8uZGF0YT8uYmFja2Ryb3BIZWlnaHR9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHRvcEhlaWdodDogbnVtYmVyID0gMTE2OyAvLyB2YWxvcmUgZmlzc28sIGRpc3RhbnphIGZyYSBpbCB0b3AgZSBsJ2luaXppbyBkZWxsJ2lmcmFtZSwgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgcmlnaHRTcGFjZTogbnVtYmVyID0gd3JhcHBlclBhZGRpbmdSaWdodDsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgbGEgZmluZSBkZWxsJ2lmcmFtZSBlIGlsIGxhdG8gc2luaXN0cm8gZGVsbG8gc2NoZXJtbywgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgbGVmdFNwYWNlOiBudW1iZXIgPSB0aGlzLnNpZGViYXJXaWR0aCArIHdyYXBwZXJQYWRkaW5nTGVmdDtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY29tbW9uU3R5bGVzID0gXCJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDk5OTk7IGJhY2tncm91bmQtY29sb3I6ICMwMDA7IG9wYWNpdHk6IDAuNTsgXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93XCIsIFwiaGlkZGVuXCIsIFwiaW1wb3J0YW50XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICB0b3AuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC10b3BcIjtcclxuICAgICAgICAgICAgICAgIHRvcC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogJHt0b3BIZWlnaHR9cHg7IHRvcDogMDsgd2lkdGg6IGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlfXB4KTsgbGVmdDogJHtsZWZ0U3BhY2V9cHhgO1xyXG4gICAgICAgICAgICAgICAgdG9wLmlkID0gXCJ0b3BcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIGxlZnQuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC1sZWZ0XCI7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7IHdpZHRoOiAke2xlZnRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5pZCA9IFwibGVmdFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtcmlnaHRcIjtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiBjYWxjKDEwMCUgLSAke3RvcEhlaWdodH1weCk7IHRvcDogJHt0b3BIZWlnaHR9cHg7IHJpZ2h0OiAwOyB3aWR0aDogJHtyaWdodFNwYWNlfXB4O2A7XHJcbiAgICAgICAgICAgICAgICByaWdodC5pZCA9IFwicmlnaHRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxlZnQpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyaWdodCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJtb2RhbC1jbG9zZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBNb2RhbCBDbG9zZWApO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIm92ZXJmbG93XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGVmdFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyaWdodFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodG9wKVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodG9wKTtcclxuICAgICAgICAgICAgICAgIGlmIChsZWZ0KVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGVmdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmlnaHQpXHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyaWdodCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZClcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93LXlcIiwgXCJhdXRvXCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXBsYWNlU3RhdGUoYmFzZVBhdGg6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcclxuICAgICAgICAvLyBFc2VtcGlvIGJhc2VQYXRoOiBwYWdlc1xyXG4gICAgICAgIC8vIEVzZW1waW8gdXJsOiBwYXJ0aWVzL2xlYWRzX3NlYXJjaFxyXG5cclxuICAgICAgICAvLyBOb3JtYWxpenphemlvbmUgc2VuemEgc2xhc2ggcHJpbWEgbyBkb3BvXHJcbiAgICAgICAgYmFzZVBhdGggPSBiYXNlUGF0aC5lbmRzV2l0aChcIi9cIikgPyBiYXNlUGF0aC5zdWJzdHJpbmcoMCwgYmFzZVBhdGgubGVuZ3RoIC0yKSA6IGJhc2VQYXRoO1xyXG4gICAgICAgIHVybCA9IHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IHVybC5zdWJzdHJpbmcoMSkgOiB1cmw7XHJcblxyXG4gICAgICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGAke2Jhc2VQYXRofS8ke3VybH1gKTtcclxuICAgICAgICB0aGlzLk1haW5XaW5kb3cucG9zdE1lc3NhZ2UoeyB0eXBlOiBcInJlcGxhY2Utc3RhdGVcIiwgdXJsOiBgcGFnZXMvZW1iZWQvJHt0aGlzLkVtYmVkZGVkTW9kdWxlfS8ke3VybH1gIH0sIFwiKlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVmcmVzaEJvdW5kYXJpZXNPbk1lbnVDb2xsYXBzZSgpIHtcclxuICAgICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGxldCB3cmFwcGVyU3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUod3JhcHBlcik7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1sZWZ0XCIpKTtcclxuICAgICAgICB2YXIgbGVmdFNwYWNlOiBudW1iZXIgPSAyMzAgKyB3cmFwcGVyUGFkZGluZ0xlZnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxlZnRcIik7XHJcbiAgICAgICAgY29uc3QgdG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0b3BcIik7XHJcblxyXG4gICAgICAgIGlmICh0b3ApIHtcclxuICAgICAgICAgICAgdG9wLnN0eWxlLnNldFByb3BlcnR5KFwibGVmdFwiLCAobGVmdFNwYWNlKSArIFwicHhcIik7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGBjYWxjKDEwMCUgLSAke2xlZnRTcGFjZX1weClgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChsZWZ0KVxyXG4gICAgICAgICAgICBsZWZ0LnN0eWxlLnNldFByb3BlcnR5KFwid2lkdGhcIiwgbGVmdFNwYWNlICsgXCJweFwiKTtcclxuICAgIH1cclxufSJdfQ==
@@ -8,6 +8,7 @@ import { of, Subject } from 'rxjs';
8
8
  import { ToastrService } from 'ngx-toastr';
9
9
  import swal from 'sweetalert2';
10
10
  import * as i2 from '@angular/router';
11
+ import * as i3 from '@angular/common';
11
12
 
12
13
  /**
13
14
  * Token che indica il prefisso delle searchView che serve per storicizzarle evitando di tirarsi in memoria anche tutti gli oggetti. Se vuoto viene supposto 'Hot'
@@ -1045,26 +1046,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1045
1046
  // Angular
1046
1047
  /* Classe che contiene tutte le informazioni sull'embedding in un unico contenitore per semplicità */
1047
1048
  class AppEmbeddingExtensions {
1048
- constructor(msgService, router) {
1049
+ constructor(msgService, router, location) {
1049
1050
  this.msgService = msgService;
1050
1051
  this.router = router;
1052
+ this.location = location;
1051
1053
  this.sidebarWidth = 230;
1052
1054
  this.Embedded = false;
1053
1055
  this.EmbeddingLevel = 0;
1054
1056
  this.MessageObserver = new Subject();
1057
+ this._reloadAllowed = true;
1055
1058
  this.MainWindow = window;
1056
1059
  while (this.MainWindow.parent != this.MainWindow) {
1057
1060
  this.MainWindow = this.MainWindow.parent;
1058
1061
  this.EmbeddingLevel++;
1059
1062
  this.Embedded = true;
1063
+ this.EmbeddedModule = this.location.path().match(/module=([a-zA-Z_]+)/)[1];
1060
1064
  }
1061
1065
  this.configureEmbeddability();
1062
1066
  if (this.Embedded)
1063
1067
  this.msgService.configureEmbeddability(this.MainWindow, this.MessageObserver);
1064
1068
  }
1069
+ IsReloadAllowed() {
1070
+ let ret = this._reloadAllowed;
1071
+ this._reloadAllowed = true;
1072
+ return ret;
1073
+ }
1065
1074
  configureEmbeddability() {
1066
1075
  window.onmessage = (event) => {
1067
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11;
1076
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13;
1068
1077
  // Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
1069
1078
  if (event.source == window && ((_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.type) != "modal-open")
1070
1079
  return;
@@ -1086,20 +1095,23 @@ class AppEmbeddingExtensions {
1086
1095
  break;
1087
1096
  }
1088
1097
  }
1089
- else if (((_k = event === null || event === void 0 ? void 0 : event.data) === null || _k === void 0 ? void 0 : _k.type) == "confirm") {
1090
- console.log(`Window message - confirm -> Level: ${(_l = event === null || event === void 0 ? void 0 : event.data) === null || _l === void 0 ? void 0 : _l.level}, Message: ${(_m = event === null || event === void 0 ? void 0 : event.data) === null || _m === void 0 ? void 0 : _m.text}, Title: ${(_o = event === null || event === void 0 ? void 0 : event.data) === null || _o === void 0 ? void 0 : _o.title}, ID: ${(_p = event === null || event === void 0 ? void 0 : event.data) === null || _p === void 0 ? void 0 : _p.guid}`);
1098
+ else if (((_k = event === null || event === void 0 ? void 0 : event.data) === null || _k === void 0 ? void 0 : _k.type) == "replace-state") {
1099
+ this.location.replaceState((_l = event === null || event === void 0 ? void 0 : event.data) === null || _l === void 0 ? void 0 : _l.url);
1100
+ }
1101
+ else if (((_m = event === null || event === void 0 ? void 0 : event.data) === null || _m === void 0 ? void 0 : _m.type) == "confirm") {
1102
+ console.log(`Window message - confirm -> Level: ${(_o = event === null || event === void 0 ? void 0 : event.data) === null || _o === void 0 ? void 0 : _o.level}, Message: ${(_p = event === null || event === void 0 ? void 0 : event.data) === null || _p === void 0 ? void 0 : _p.text}, Title: ${(_q = event === null || event === void 0 ? void 0 : event.data) === null || _q === void 0 ? void 0 : _q.title}, ID: ${(_r = event === null || event === void 0 ? void 0 : event.data) === null || _r === void 0 ? void 0 : _r.guid}`);
1091
1103
  var sourceWindow = event.source;
1092
- var baseResponse = { type: "confirm-response", guid: (_q = event === null || event === void 0 ? void 0 : event.data) === null || _q === void 0 ? void 0 : _q.guid };
1093
- switch ((_r = event === null || event === void 0 ? void 0 : event.data) === null || _r === void 0 ? void 0 : _r.level) {
1104
+ var baseResponse = { type: "confirm-response", guid: (_s = event === null || event === void 0 ? void 0 : event.data) === null || _s === void 0 ? void 0 : _s.guid };
1105
+ switch ((_t = event === null || event === void 0 ? void 0 : event.data) === null || _t === void 0 ? void 0 : _t.level) {
1094
1106
  case "success":
1095
- this.msgService.simpleSuccessWithChoice((_s = event === null || event === void 0 ? void 0 : event.data) === null || _s === void 0 ? void 0 : _s.title, (_t = event === null || event === void 0 ? void 0 : event.data) === null || _t === void 0 ? void 0 : _t.text, () => {
1107
+ this.msgService.simpleSuccessWithChoice((_u = event === null || event === void 0 ? void 0 : event.data) === null || _u === void 0 ? void 0 : _u.title, (_v = event === null || event === void 0 ? void 0 : event.data) === null || _v === void 0 ? void 0 : _v.text, () => {
1096
1108
  sourceWindow.postMessage(Object.assign({ result: true }, baseResponse), "*");
1097
1109
  }, () => {
1098
1110
  sourceWindow.postMessage(Object.assign({ result: false }, baseResponse), "*");
1099
1111
  });
1100
1112
  break;
1101
1113
  case "warning":
1102
- this.msgService.simpleWarningWithChoice((_u = event === null || event === void 0 ? void 0 : event.data) === null || _u === void 0 ? void 0 : _u.title, (_v = event === null || event === void 0 ? void 0 : event.data) === null || _v === void 0 ? void 0 : _v.text, () => {
1114
+ this.msgService.simpleWarningWithChoice((_w = event === null || event === void 0 ? void 0 : event.data) === null || _w === void 0 ? void 0 : _w.title, (_x = event === null || event === void 0 ? void 0 : event.data) === null || _x === void 0 ? void 0 : _x.text, () => {
1103
1115
  sourceWindow.postMessage(Object.assign({ result: true }, baseResponse), "*");
1104
1116
  }, () => {
1105
1117
  sourceWindow.postMessage(Object.assign({ result: false }, baseResponse), "*");
@@ -1107,15 +1119,15 @@ class AppEmbeddingExtensions {
1107
1119
  break;
1108
1120
  }
1109
1121
  }
1110
- else if (((_w = event === null || event === void 0 ? void 0 : event.data) === null || _w === void 0 ? void 0 : _w.type) == "navigate") {
1111
- console.log(`Window message - navigate -> ${(_x = event === null || event === void 0 ? void 0 : event.data) === null || _x === void 0 ? void 0 : _x.url}`);
1112
- var newTab = (_y = event === null || event === void 0 ? void 0 : event.data) === null || _y === void 0 ? void 0 : _y.newTab;
1113
- var replaceState = (_z = event === null || event === void 0 ? void 0 : event.data) === null || _z === void 0 ? void 0 : _z.replaceState;
1122
+ else if (((_y = event === null || event === void 0 ? void 0 : event.data) === null || _y === void 0 ? void 0 : _y.type) == "navigate") {
1123
+ console.log(`Window message - navigate -> ${(_z = event === null || event === void 0 ? void 0 : event.data) === null || _z === void 0 ? void 0 : _z.url}`);
1124
+ var newTab = (_0 = event === null || event === void 0 ? void 0 : event.data) === null || _0 === void 0 ? void 0 : _0.newTab;
1125
+ var replaceState = (_1 = event === null || event === void 0 ? void 0 : event.data) === null || _1 === void 0 ? void 0 : _1.replaceState;
1114
1126
  if (!window.location.href.includes(this.router.url)) {
1115
1127
  console.warn("Doppia chiamata di navigazione, ignoro il secondo evento scoordinato dal router");
1116
1128
  return;
1117
1129
  }
1118
- let newRelativeUrl = this.router.createUrlTree([(_0 = event === null || event === void 0 ? void 0 : event.data) === null || _0 === void 0 ? void 0 : _0.url]);
1130
+ let newRelativeUrl = this.router.createUrlTree([(_2 = event === null || event === void 0 ? void 0 : event.data) === null || _2 === void 0 ? void 0 : _2.url]);
1119
1131
  let baseUrl = window.location.href.replace(this.router.url, '');
1120
1132
  let newUrl = baseUrl + decodeURIComponent(newRelativeUrl.toString());
1121
1133
  if (replaceState)
@@ -1123,25 +1135,27 @@ class AppEmbeddingExtensions {
1123
1135
  else if (newTab)
1124
1136
  window.open(newUrl, '_blank');
1125
1137
  }
1126
- else if (((_1 = event === null || event === void 0 ? void 0 : event.data) === null || _1 === void 0 ? void 0 : _1.type) == "navigate-back") {
1127
- console.log(`Window message - navigate-back -> ${(_2 = event === null || event === void 0 ? void 0 : event.data) === null || _2 === void 0 ? void 0 : _2.url}`);
1128
- if (history.state._pushed)
1138
+ else if (((_3 = event === null || event === void 0 ? void 0 : event.data) === null || _3 === void 0 ? void 0 : _3.type) == "navigate-back") {
1139
+ console.log(`Window message - navigate-back -> ${(_4 = event === null || event === void 0 ? void 0 : event.data) === null || _4 === void 0 ? void 0 : _4.url}`);
1140
+ if (history.state._pushed) {
1141
+ this._reloadAllowed = false;
1129
1142
  history.back();
1143
+ }
1130
1144
  }
1131
- else if (((_3 = event === null || event === void 0 ? void 0 : event.data) === null || _3 === void 0 ? void 0 : _3.type) == "redirect") {
1132
- console.log(`Window message - redirect -> ${(_4 = event === null || event === void 0 ? void 0 : event.data) === null || _4 === void 0 ? void 0 : _4.url}`);
1133
- window.location.href = (_5 = event === null || event === void 0 ? void 0 : event.data) === null || _5 === void 0 ? void 0 : _5.url;
1145
+ else if (((_5 = event === null || event === void 0 ? void 0 : event.data) === null || _5 === void 0 ? void 0 : _5.type) == "redirect") {
1146
+ console.log(`Window message - redirect -> ${(_6 = event === null || event === void 0 ? void 0 : event.data) === null || _6 === void 0 ? void 0 : _6.url}`);
1147
+ window.location.href = (_7 = event === null || event === void 0 ? void 0 : event.data) === null || _7 === void 0 ? void 0 : _7.url;
1134
1148
  }
1135
- else if (((_6 = event === null || event === void 0 ? void 0 : event.data) === null || _6 === void 0 ? void 0 : _6.type) == "navigation") {
1136
- console.log(`Window message - Navigation -> ${((_7 = event === null || event === void 0 ? void 0 : event.data) === null || _7 === void 0 ? void 0 : _7.internalNavigation) ? "[internal]" : ""} ${(_8 = event === null || event === void 0 ? void 0 : event.data) === null || _8 === void 0 ? void 0 : _8.title}`);
1149
+ else if (((_8 = event === null || event === void 0 ? void 0 : event.data) === null || _8 === void 0 ? void 0 : _8.type) == "navigation") {
1150
+ console.log(`Window message - Navigation -> ${((_9 = event === null || event === void 0 ? void 0 : event.data) === null || _9 === void 0 ? void 0 : _9.internalNavigation) ? "[internal]" : ""} ${(_10 = event === null || event === void 0 ? void 0 : event.data) === null || _10 === void 0 ? void 0 : _10.title}`);
1137
1151
  this.MessageObserver.next({ event: "navigation", data: event === null || event === void 0 ? void 0 : event.data });
1138
1152
  }
1139
- else if (((_9 = event === null || event === void 0 ? void 0 : event.data) === null || _9 === void 0 ? void 0 : _9.type) == "modal-open") {
1153
+ else if (((_11 = event === null || event === void 0 ? void 0 : event.data) === null || _11 === void 0 ? void 0 : _11.type) == "modal-open") {
1140
1154
  const wrapper = document.body.getElementsByClassName("main-wrapper")[0];
1141
1155
  let wrapperStyles = window.getComputedStyle(wrapper);
1142
1156
  const wrapperPaddingLeft = parseInt(wrapperStyles.getPropertyValue("padding-left"));
1143
1157
  const wrapperPaddingRight = parseInt(wrapperStyles.getPropertyValue("padding-right"));
1144
- console.log(`Window message - Modal Open -> Backdrop Height: ${(_10 = event === null || event === void 0 ? void 0 : event.data) === null || _10 === void 0 ? void 0 : _10.backdropHeight}`);
1158
+ console.log(`Window message - Modal Open -> Backdrop Height: ${(_12 = event === null || event === void 0 ? void 0 : event.data) === null || _12 === void 0 ? void 0 : _12.backdropHeight}`);
1145
1159
  var topHeight = 116; // valore fisso, distanza fra il top e l'inizio dell'iframe, non sarà mai diverso
1146
1160
  var rightSpace = wrapperPaddingRight; // valore fisso, distanza fra la fine dell'iframe e il lato sinistro dello schermo, non sarà mai diverso
1147
1161
  var leftSpace = this.sidebarWidth + wrapperPaddingLeft;
@@ -1163,7 +1177,7 @@ class AppEmbeddingExtensions {
1163
1177
  document.body.appendChild(left);
1164
1178
  document.body.appendChild(right);
1165
1179
  }
1166
- else if (((_11 = event === null || event === void 0 ? void 0 : event.data) === null || _11 === void 0 ? void 0 : _11.type) == "modal-close") {
1180
+ else if (((_13 = event === null || event === void 0 ? void 0 : event.data) === null || _13 === void 0 ? void 0 : _13.type) == "modal-close") {
1167
1181
  console.log(`Window message - Modal Close`);
1168
1182
  let wrapper = document.body.getElementsByClassName("main-wrapper")[0];
1169
1183
  wrapper.style.removeProperty("overflow");
@@ -1181,6 +1195,15 @@ class AppEmbeddingExtensions {
1181
1195
  if (this.Embedded)
1182
1196
  document.body.style.setProperty("overflow-y", "auto", "important");
1183
1197
  }
1198
+ replaceState(basePath, url) {
1199
+ // Esempio basePath: pages
1200
+ // Esempio url: parties/leads_search
1201
+ // Normalizzazione senza slash prima o dopo
1202
+ basePath = basePath.endsWith("/") ? basePath.substring(0, basePath.length - 2) : basePath;
1203
+ url = url.startsWith("/") ? url.substring(1) : url;
1204
+ this.location.replaceState(`${basePath}/${url}`);
1205
+ this.MainWindow.postMessage({ type: "replace-state", url: `pages/embed/${this.EmbeddedModule}/${url}` }, "*");
1206
+ }
1184
1207
  refreshBoundariesOnMenuCollapse() {
1185
1208
  const wrapper = document.body.getElementsByClassName("main-wrapper")[0];
1186
1209
  let wrapperStyles = window.getComputedStyle(wrapper);
@@ -1196,12 +1219,12 @@ class AppEmbeddingExtensions {
1196
1219
  left.style.setProperty("width", leftSpace + "px");
1197
1220
  }
1198
1221
  }
1199
- AppEmbeddingExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, deps: [{ token: MessageService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1222
+ AppEmbeddingExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, deps: [{ token: MessageService }, { token: i2.Router }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Injectable });
1200
1223
  AppEmbeddingExtensions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, providedIn: "root" });
1201
1224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, decorators: [{
1202
1225
  type: Injectable,
1203
1226
  args: [{ providedIn: "root" }]
1204
- }], ctorParameters: function () { return [{ type: MessageService }, { type: i2.Router }]; } });
1227
+ }], ctorParameters: function () { return [{ type: MessageService }, { type: i2.Router }, { type: i3.Location }]; } });
1205
1228
 
1206
1229
  // Angular
1207
1230
  /**