valtech-components 4.0.993 → 4.0.994

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.
@@ -67,11 +67,41 @@ export class OrgSwitchService {
67
67
  notifyOrgDataUpdated(org) {
68
68
  this._orgDataUpdated.next(org);
69
69
  }
70
+ /**
71
+ * Registra la función que lleva a "home" tras un cambio de org (FE-7,
72
+ * `TODO.md`). Llamar UNA vez en el constructor del shell raíz de la app
73
+ * (ej. `AppLayoutPage`), reemplazando cualquier `orgChanged$.subscribe(() =>
74
+ * router.navigateByUrl(...))` manual que la app tuviera antes — ese patrón
75
+ * es exactamente el bug: `navigateByUrl` sin `await` deja que otro
76
+ * subscriber del mismo evento (`connectPageRefresh` de una página de
77
+ * detalle) dispare su refetch ANTES de que la navegación reemplace el
78
+ * componente, y por un instante se ve el estado vacío de la org anterior.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * constructor() {
83
+ * this.orgSwitch.registerHomeNavigator(() =>
84
+ * this.router.navigateByUrl('/app/home', { replaceUrl: true }).then(() => {})
85
+ * );
86
+ * }
87
+ * ```
88
+ */
89
+ registerHomeNavigator(fn) {
90
+ this.homeNavigator = fn;
91
+ }
70
92
  constructor(auth) {
71
93
  this.auth = auth;
72
94
  this._switching = signal(false);
73
95
  this._orgChanged = new Subject();
74
96
  this._orgDataUpdated = new Subject();
97
+ /**
98
+ * Navegador a "home" registrado por el shell de la app (opcional — ver
99
+ * `registerHomeNavigator`). Si existe, `switchTo` lo AWAIT-ea antes de
100
+ * emitir `orgChanged$`, así el shell termina de navegar (y destruye la
101
+ * vista de detalle vieja) antes de que cualquier página con
102
+ * `connectPageRefresh` reaccione al cambio de org.
103
+ */
104
+ this.homeNavigator = null;
75
105
  /**
76
106
  * `true` while a switch is in flight. UI should disable interactions
77
107
  * with org-scoped data and show a loading indicator.
@@ -116,6 +146,13 @@ export class OrgSwitchService {
116
146
  this._switching.set(true);
117
147
  try {
118
148
  await firstValueFrom(this.auth.switchOrg(orgId));
149
+ // FE-7: si el shell registró un navegador a home, esperarlo ANTES de
150
+ // avisar a las páginas — así la vista de detalle vieja ya fue
151
+ // destruida (o nunca llega a refetchear con la org anterior) cuando
152
+ // `connectPageRefresh` reacciona.
153
+ if (this.homeNavigator) {
154
+ await this.homeNavigator();
155
+ }
119
156
  this._orgChanged.next({ previousOrg, newOrg: orgId });
120
157
  if (options.reload && typeof window !== 'undefined') {
121
158
  window.location.reload();
@@ -144,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
144
181
  type: Injectable,
145
182
  args: [{ providedIn: 'root' }]
146
183
  }], ctorParameters: () => [{ type: i1.AuthService }] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXN3aXRjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL29yZy1zd2l0Y2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBK0IzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyREc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBMEIzQixpRUFBaUU7SUFDakUsb0JBQW9CLENBQUMsR0FBaUI7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQW9CLElBQWlCO1FBQWpCLFNBQUksR0FBSixJQUFJLENBQWE7UUE5QnBCLGVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBbUIsQ0FBQztRQUM3QyxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBRS9EOzs7V0FHRztRQUNNLGNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxEOzs7Ozs7V0FNRztRQUNNLGdCQUFXLEdBQWdDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEY7OztXQUdHO1FBQ00sb0JBQWUsR0FBNkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQU9qRCxDQUFDO0lBRXpDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYSxFQUFFLFVBQTRCLEVBQUU7UUFDMUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVDLElBQUksV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFCLCtCQUErQjtZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQztZQUNILE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFdEQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLHFFQUFxRTtRQUNyRSxtQ0FBbUM7UUFDbkMsT0FBTyxDQUNKLElBQTRELEVBQUUsV0FBVztZQUN6RSxJQUE0RCxFQUFFLFNBQVM7WUFDeEUsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDOytHQW5GVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4uL29yZy90eXBlcyc7XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhY3RpdmUgb3JnYW5pemF0aW9uIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnQ2hhbmdlZEV2ZW50IHtcbiAgLyoqIE9yZyB0aGUgdXNlciB3YXMgb24gYmVmb3JlIHRoZSBzd2l0Y2guIE1heSBiZSBlbXB0eSBvbiBmaXJzdCBzaWduLWluLiAqL1xuICBwcmV2aW91c09yZzogc3RyaW5nO1xuICAvKiogT3JnIHRoZSB1c2VyIGp1c3Qgc3dpdGNoZWQgdG8uICovXG4gIG5ld09yZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBPcmdTd2l0Y2hTZXJ2aWNlLnN3aXRjaFRvYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hPcmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYWZ0ZXIgdGhlIHN3aXRjaCBzdWNjZWVkcyB0aGUgcGFnZSBpcyBmdWxseSByZWxvYWRlZCB2aWFcbiAgICogYHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKWAuIFVzZWZ1bCBmb3IgYXBwcyB3aXRoIHNpZ25pZmljYW50IGluLW1lbW9yeVxuICAgKiBzdGF0ZSB0aWVkIHRvIHRoZSBwcmV2aW91cyBvcmcgdGhhdCdzIGhhcmQgdG8gaW52YWxpZGF0ZSBwaWVjZSBieSBwaWVjZS5cbiAgICpcbiAgICogVHJhZGUtb2ZmOiByZWxvYWQgbG9zZXMgYWxsIGluLW1lbW9yeSBzdGF0ZSAoZm9ybXMsIHNjcm9sbCBwb3NpdGlvbikuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAg4oCUIHJlbGllcyBvbiBgb3JnQ2hhbmdlZCRgIGFuZCBgYXV0aC51c2VyKClgIHNpZ25hbFxuICAgKiBwcm9wYWdhdGlvbiBmb3IgY29tcG9uZW50cyB0byByZWFjdC5cbiAgICovXG4gIHJlbG9hZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3JnU3dpdGNoU2VydmljZSDigJQgb3JjaGVzdHJhdGVzIGFjdGl2ZSBvcmdhbml6YXRpb24gY2hhbmdlcyBhY3Jvc3MgdGhlIGFwcC5cbiAqXG4gKiBCdWlsdCBvbiB0b3Agb2YgYEF1dGhTZXJ2aWNlLnN3aXRjaE9yZ2AsIHdoaWNoIGFscmVhZHk6XG4gKiAtIEhpdHMgYFBPU1QgL3YyL2F1dGgvc3dpdGNoLW9yZ2AgYW5kIHJlY2VpdmVzIGEgbmV3IEZpcmViYXNlIGN1c3RvbSB0b2tlbi5cbiAqIC0gUmUtYXV0aGVudGljYXRlcyBGaXJlYmFzZSBBdXRoIHdpdGggdGhlIG5ldyB0b2tlbiAoUkJBQyBjbGFpbXMgdXBkYXRlKS5cbiAqIC0gQnJvYWRjYXN0cyBgT1JHX1NXSVRDSGAgdG8gb3RoZXIgdGFicyB2aWEgYEF1dGhTeW5jU2VydmljZWAgKG11bHRpLXRhYiBzeW5jKS5cbiAqXG4gKiBXaGF0IHRoaXMgc2VydmljZSBhZGRzIG9uIHRvcDpcbiAqIC0gQSBgc3dpdGNoaW5nYCBzaWduYWwgc28gdGhlIFVJIGNhbiBzaG93IGEgbG9hZGluZyBpbmRpY2F0b3IgKDEtMnMgc3dpdGNoKS5cbiAqIC0gQW4gYG9yZ0NoYW5nZWQkYCBPYnNlcnZhYmxlIHRoYXQgY29tcG9uZW50cyBzdWJzY3JpYmUgdG8gaW4gb3JkZXIgdG9cbiAqICAgaW52YWxpZGF0ZSB0aGVpciBvcmctc2NvcGVkIGNhY2hlcyAoZS5nLiBkcm9wIG9sZCBxdWVyeSByZXN1bHRzLCByZXNldFxuICogICBwYWdlIHN0YXRlKSB3aXRob3V0IGEgZnVsbCBwYWdlIHJlbG9hZC5cbiAqIC0gT3B0aW9uYWwgYHJlbG9hZDogdHJ1ZWAgZm9yIGFwcHMgd2hlcmUgaW52YWxpZGF0aW5nIGluLW1lbW9yeSBzdGF0ZSBwaWVjZVxuICogICBieSBwaWVjZSBpcyBpbXByYWN0aWNhbC5cbiAqXG4gKiAqKldoYXQgdGhpcyBzZXJ2aWNlIGRvZXMgTk9UIGRvIGF1dG9tYXRpY2FsbHk6KipcbiAqXG4gKiAxLiAqKlRlYXJkb3duIEZpcmVzdG9yZSBsaXN0ZW5lcnMuKiogTGlzdGVuZXJzIGFyZSBvd25lZCBieSB0aGVpciBzdWJzY3JpYmluZ1xuICogICAgY29tcG9uZW50cyAodHlwaWNhbGx5IHZpYSBgdGFrZVVudGlsRGVzdHJveWVkYCBvciBhc3luYyBwaXBlKS4gV2hlbiB0aGVcbiAqICAgIGNvbXBvbmVudCByZS1yZW5kZXJzIG9yIHVuc3Vic2NyaWJlcywgdGhlIGxpc3RlbmVyIGRpc3Bvc2VzLiBJZiBhXG4gKiAgICBjb21wb25lbnQgZG9lcyBOT1QgdW5zdWJzY3JpYmUgb24gb3JnIGNoYW5nZSwgaXRzIGxpc3RlbmVyIHdpbGwga2VlcFxuICogICAgcG9pbnRpbmcgYXQgdGhlIHByZXZpb3VzIG9yZydzIHBhdGggYW5kIG1heSBzdGFydCBmYWlsaW5nIHJ1bGVzLiBUaGUgZml4XG4gKiAgICBpcyBjb21wb25lbnQtbGV2ZWw6IHN1YnNjcmliZSB0byBgb3JnQ2hhbmdlZCRgIGFuZCByZXNldCBzdGF0ZSwgb3IgdXNlXG4gKiAgICB0aGUgYHJlbG9hZDogdHJ1ZWAgb3B0aW9uLlxuICpcbiAqIDIuICoqUmUtaW5zdGFudGlhdGUgcm91dGVkIGNvbXBvbmVudHMuKiogQW5ndWxhciBrZWVwcyBtb3VudGVkIGNvbXBvbmVudHNcbiAqICAgIGFsaXZlIGFjcm9zcyBuYXZpZ2F0aW9ucy4gSWYgeW91IG5lZWQgZnJlc2ggc3RhdGUsIGVpdGhlciBzdWJzY3JpYmUgdG9cbiAqICAgIGBvcmdDaGFuZ2VkJGAgaW4gdGhlIGNvbXBvbmVudCwgb3IgdXNlIGByZWxvYWQ6IHRydWVgLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHN3aXRjaCB3aXRoIGxvYWRpbmcgc3RhdGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByaXZhdGUgb3JnU3dpdGNoID0gaW5qZWN0KE9yZ1N3aXRjaFNlcnZpY2UpO1xuICpcbiAqIGFzeW5jIG9uU3dpdGNoT3JnKG9yZ0lkOiBzdHJpbmcpIHtcbiAqICAgYXdhaXQgdGhpcy5vcmdTd2l0Y2guc3dpdGNoVG8ob3JnSWQpO1xuICogICAvLyBDb21wb25lbnRzIHN1YnNjcmliZWQgdG8gb3JnQ2hhbmdlZCQgaGF2ZSBhbHJlYWR5IHJlc2V0IHRoZWlyIHN0YXRlLlxuICogfVxuICpcbiAqIC8vIEluIHRlbXBsYXRlOlxuICogQGlmIChvcmdTd2l0Y2guc3dpdGNoaW5nKCkpIHsgPHZhbC1sb2FkaW5nIC8+IH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbXBvbmVudCByZWFjdGluZyB0byBvcmcgY2hhbmdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwcml2YXRlIG9yZ1N3aXRjaCA9IGluamVjdChPcmdTd2l0Y2hTZXJ2aWNlKTtcbiAqXG4gKiBjb25zdHJ1Y3RvcigpIHtcbiAqICAgdGhpcy5vcmdTd2l0Y2gub3JnQ2hhbmdlZCRcbiAqICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAqICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzZXRTdGF0ZSgpKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEJydXRhbCByZWxvYWQgbW9kZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgdGhpcy5vcmdTd2l0Y2guc3dpdGNoVG8ob3JnSWQsIHsgcmVsb2FkOiB0cnVlIH0pO1xuICogLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpIOKAlCBjbGVhbiBzbGF0ZSwgbG9zZXMgc2Nyb2xsIHBvc2l0aW9uXG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBPcmdTd2l0Y2hTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3dpdGNoaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3JnQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PE9yZ0NoYW5nZWRFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3JnRGF0YVVwZGF0ZWQgPSBuZXcgU3ViamVjdDxPcmdhbml6YXRpb24+KCk7XG5cbiAgLyoqXG4gICAqIGB0cnVlYCB3aGlsZSBhIHN3aXRjaCBpcyBpbiBmbGlnaHQuIFVJIHNob3VsZCBkaXNhYmxlIGludGVyYWN0aW9uc1xuICAgKiB3aXRoIG9yZy1zY29wZWQgZGF0YSBhbmQgc2hvdyBhIGxvYWRpbmcgaW5kaWNhdG9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc3dpdGNoaW5nID0gdGhpcy5fc3dpdGNoaW5nLmFzUmVhZG9ubHkoKTtcblxuICAvKipcbiAgICogRmlyZXMgYWZ0ZXIgYSBzdWNjZXNzZnVsIHN3aXRjaCwgd2l0aCB0aGUgcHJldmlvdXMgYW5kIG5ldyBvcmcgaWRzLlxuICAgKiBDb21wb25lbnRzIHN1YnNjcmliZSB0byBpbnZhbGlkYXRlIGNhY2hlcyAvIHJlc2V0IHN0YXRlLlxuICAgKlxuICAgKiBGaXJlcyBBRlRFUiB0aGUgRmlyZWJhc2UgcmUtYXV0aCBjb21wbGV0ZXMg4oCUIGxpc3RlbmVycyBhdHRhY2hlZCBoZXJlXG4gICAqIHNlZSB0aGUgdXBkYXRlZCBGaXJlYmFzZSB1c2VyIC8gYWN0aXZlT3JnIGNsYWltLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JnQ2hhbmdlZCQ6IE9ic2VydmFibGU8T3JnQ2hhbmdlZEV2ZW50PiA9IHRoaXMuX29yZ0NoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gb3JnIGRhdGEgKG5hbWUsIGxvZ29VcmwsIGV0Yy4pIGNoYW5nZXMgd2l0aG91dCBhIGZ1bGwgb3JnIHN3aXRjaC5cbiAgICogU3Vic2NyaWJlIGluIHRoZSBhcHAgc2hlbGwgdG8ga2VlcCB0aGUgaGVhZGVyIG9yZyBhdmF0YXIgdXAgdG8gZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IG9yZ0RhdGFVcGRhdGVkJDogT2JzZXJ2YWJsZTxPcmdhbml6YXRpb24+ID0gdGhpcy5fb3JnRGF0YVVwZGF0ZWQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqIE5vdGlmeSBzdWJzY3JpYmVycyB0aGF0IHRoZSBhY3RpdmUgb3JnJ3MgZGF0YSB3YXMgdXBkYXRlZC4gKi9cbiAgbm90aWZ5T3JnRGF0YVVwZGF0ZWQob3JnOiBPcmdhbml6YXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9vcmdEYXRhVXBkYXRlZC5uZXh0KG9yZyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBTd2l0Y2ggdGhlIHVzZXIncyBhY3RpdmUgb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBSZS1lbnRyYW50IHNhZmU6IHdoaWxlIGEgc3dpdGNoIGlzIGluIGZsaWdodCwgYWRkaXRpb25hbCBjYWxscyBhcmVcbiAgICogcmVqZWN0ZWQgc2lsZW50bHkgKHJldHVybnMgaW1tZWRpYXRlbHkpLiBJbnNwZWN0IGBzd2l0Y2hpbmcoKWAgdG8gZ2F0ZSBVSS5cbiAgICpcbiAgICogQHBhcmFtIG9yZ0lkIFRhcmdldCBvcmdhbml6YXRpb24gaWQuIE11c3QgYmUgb25lIHRoZSB1c2VyIGhhcyBhIHJvbGUgaW5cbiAgICogICAgICAgICAgICAgIOKAlCBiYWNrZW5kIHJlamVjdHMgb3RoZXJ3aXNlIHdpdGggYFBFUk1JU1NJT05fREVOSUVEYC5cbiAgICogQHBhcmFtIG9wdGlvbnMgU2VlIGBTd2l0Y2hPcmdPcHRpb25zYC5cbiAgICpcbiAgICogQHRocm93cyBUaGUgZXJyb3IgZnJvbSBgYXV0aC5zd2l0Y2hPcmdgIGlmIHRoZSBiYWNrZW5kIGNhbGwgZmFpbHMuXG4gICAqICAgICAgICAgYHN3aXRjaGluZ2AgcmV0dXJucyB0byBgZmFsc2VgIGJlZm9yZSB0aGUgZXJyb3IgcHJvcGFnYXRlcy5cbiAgICovXG4gIGFzeW5jIHN3aXRjaFRvKG9yZ0lkOiBzdHJpbmcsIG9wdGlvbnM6IFN3aXRjaE9yZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zd2l0Y2hpbmcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzT3JnID0gdGhpcy5jdXJyZW50QWN0aXZlT3JnKCk7XG4gICAgaWYgKHByZXZpb3VzT3JnID09PSBvcmdJZCkge1xuICAgICAgLy8gTm8tb3Ag4oCUIGFscmVhZHkgb24gdGhpcyBvcmcuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3dpdGNoaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLnN3aXRjaE9yZyhvcmdJZCkpO1xuICAgICAgdGhpcy5fb3JnQ2hhbmdlZC5uZXh0KHsgcHJldmlvdXNPcmcsIG5ld09yZzogb3JnSWQgfSk7XG5cbiAgICAgIGlmIChvcHRpb25zLnJlbG9hZCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N3aXRjaGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIHRoZSBjdXJyZW50IGBhY3RpdmVPcmdgIGZyb20gdGhlIGF1dGggdXNlciBzaWduYWwuXG4gICAqIEZhbGxzIGJhY2sgdG8gZW1wdHkgc3RyaW5nIGlmIHRoZSB1c2VyIGlzbid0IGxvYWRlZCB5ZXQuXG4gICAqL1xuICBwcml2YXRlIGN1cnJlbnRBY3RpdmVPcmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoLnVzZXIoKTtcbiAgICAvLyBBdXRoVXNlciBtYXkgZXhwb3NlIGFjdGl2ZU9yZ0lkIHVuZGVyIGRpZmZlcmVudCBuYW1lcyBkZXBlbmRpbmcgb25cbiAgICAvLyBiYWNrZW5kIHZlcnNpb24g4oCUIGtlZXAgdG9sZXJhbnQuXG4gICAgcmV0dXJuIChcbiAgICAgICh1c2VyIGFzIHsgYWN0aXZlT3JnSWQ/OiBzdHJpbmc7IGFjdGl2ZU9yZz86IHN0cmluZyB9IHwgbnVsbCk/LmFjdGl2ZU9yZ0lkID8/XG4gICAgICAodXNlciBhcyB7IGFjdGl2ZU9yZ0lkPzogc3RyaW5nOyBhY3RpdmVPcmc/OiBzdHJpbmcgfSB8IG51bGwpPy5hY3RpdmVPcmcgPz9cbiAgICAgICcnXG4gICAgKTtcbiAgfVxufVxuIl19
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXN3aXRjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL29yZy1zd2l0Y2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBK0IzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyREc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBbUMzQixpRUFBaUU7SUFDakUsb0JBQW9CLENBQUMsR0FBaUI7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSCxxQkFBcUIsQ0FBQyxFQUF1QjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQTlEcEIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFFL0Q7Ozs7OztXQU1HO1FBQ0ssa0JBQWEsR0FBaUMsSUFBSSxDQUFDO1FBRTNEOzs7V0FHRztRQUNNLGNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxEOzs7Ozs7V0FNRztRQUNNLGdCQUFXLEdBQWdDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEY7OztXQUdHO1FBQ00sb0JBQWUsR0FBNkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQThCakQsQ0FBQztJQUV6Qzs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWEsRUFBRSxVQUE0QixFQUFFO1FBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQiwrQkFBK0I7WUFDL0IsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUM7WUFDSCxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRWpELHFFQUFxRTtZQUNyRSw4REFBOEQ7WUFDOUQsb0VBQW9FO1lBQ3BFLGtDQUFrQztZQUNsQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsQ0FBQztZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRXRELElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0I7UUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixxRUFBcUU7UUFDckUsbUNBQW1DO1FBQ25DLE9BQU8sQ0FDSixJQUE0RCxFQUFFLFdBQVc7WUFDekUsSUFBNEQsRUFBRSxTQUFTO1lBQ3hFLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0E1SFUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb24gfSBmcm9tICcuLi9vcmcvdHlwZXMnO1xuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYWN0aXZlIG9yZ2FuaXphdGlvbiBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZ0NoYW5nZWRFdmVudCB7XG4gIC8qKiBPcmcgdGhlIHVzZXIgd2FzIG9uIGJlZm9yZSB0aGUgc3dpdGNoLiBNYXkgYmUgZW1wdHkgb24gZmlyc3Qgc2lnbi1pbi4gKi9cbiAgcHJldmlvdXNPcmc6IHN0cmluZztcbiAgLyoqIE9yZyB0aGUgdXNlciBqdXN0IHN3aXRjaGVkIHRvLiAqL1xuICBuZXdPcmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgT3JnU3dpdGNoU2VydmljZS5zd2l0Y2hUb2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoT3JnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGFmdGVyIHRoZSBzd2l0Y2ggc3VjY2VlZHMgdGhlIHBhZ2UgaXMgZnVsbHkgcmVsb2FkZWQgdmlhXG4gICAqIGB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClgLiBVc2VmdWwgZm9yIGFwcHMgd2l0aCBzaWduaWZpY2FudCBpbi1tZW1vcnlcbiAgICogc3RhdGUgdGllZCB0byB0aGUgcHJldmlvdXMgb3JnIHRoYXQncyBoYXJkIHRvIGludmFsaWRhdGUgcGllY2UgYnkgcGllY2UuXG4gICAqXG4gICAqIFRyYWRlLW9mZjogcmVsb2FkIGxvc2VzIGFsbCBpbi1tZW1vcnkgc3RhdGUgKGZvcm1zLCBzY3JvbGwgcG9zaXRpb24pLlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgIOKAlCByZWxpZXMgb24gYG9yZ0NoYW5nZWQkYCBhbmQgYGF1dGgudXNlcigpYCBzaWduYWxcbiAgICogcHJvcGFnYXRpb24gZm9yIGNvbXBvbmVudHMgdG8gcmVhY3QuXG4gICAqL1xuICByZWxvYWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9yZ1N3aXRjaFNlcnZpY2Ug4oCUIG9yY2hlc3RyYXRlcyBhY3RpdmUgb3JnYW5pemF0aW9uIGNoYW5nZXMgYWNyb3NzIHRoZSBhcHAuXG4gKlxuICogQnVpbHQgb24gdG9wIG9mIGBBdXRoU2VydmljZS5zd2l0Y2hPcmdgLCB3aGljaCBhbHJlYWR5OlxuICogLSBIaXRzIGBQT1NUIC92Mi9hdXRoL3N3aXRjaC1vcmdgIGFuZCByZWNlaXZlcyBhIG5ldyBGaXJlYmFzZSBjdXN0b20gdG9rZW4uXG4gKiAtIFJlLWF1dGhlbnRpY2F0ZXMgRmlyZWJhc2UgQXV0aCB3aXRoIHRoZSBuZXcgdG9rZW4gKFJCQUMgY2xhaW1zIHVwZGF0ZSkuXG4gKiAtIEJyb2FkY2FzdHMgYE9SR19TV0lUQ0hgIHRvIG90aGVyIHRhYnMgdmlhIGBBdXRoU3luY1NlcnZpY2VgIChtdWx0aS10YWIgc3luYykuXG4gKlxuICogV2hhdCB0aGlzIHNlcnZpY2UgYWRkcyBvbiB0b3A6XG4gKiAtIEEgYHN3aXRjaGluZ2Agc2lnbmFsIHNvIHRoZSBVSSBjYW4gc2hvdyBhIGxvYWRpbmcgaW5kaWNhdG9yICgxLTJzIHN3aXRjaCkuXG4gKiAtIEFuIGBvcmdDaGFuZ2VkJGAgT2JzZXJ2YWJsZSB0aGF0IGNvbXBvbmVudHMgc3Vic2NyaWJlIHRvIGluIG9yZGVyIHRvXG4gKiAgIGludmFsaWRhdGUgdGhlaXIgb3JnLXNjb3BlZCBjYWNoZXMgKGUuZy4gZHJvcCBvbGQgcXVlcnkgcmVzdWx0cywgcmVzZXRcbiAqICAgcGFnZSBzdGF0ZSkgd2l0aG91dCBhIGZ1bGwgcGFnZSByZWxvYWQuXG4gKiAtIE9wdGlvbmFsIGByZWxvYWQ6IHRydWVgIGZvciBhcHBzIHdoZXJlIGludmFsaWRhdGluZyBpbi1tZW1vcnkgc3RhdGUgcGllY2VcbiAqICAgYnkgcGllY2UgaXMgaW1wcmFjdGljYWwuXG4gKlxuICogKipXaGF0IHRoaXMgc2VydmljZSBkb2VzIE5PVCBkbyBhdXRvbWF0aWNhbGx5OioqXG4gKlxuICogMS4gKipUZWFyZG93biBGaXJlc3RvcmUgbGlzdGVuZXJzLioqIExpc3RlbmVycyBhcmUgb3duZWQgYnkgdGhlaXIgc3Vic2NyaWJpbmdcbiAqICAgIGNvbXBvbmVudHMgKHR5cGljYWxseSB2aWEgYHRha2VVbnRpbERlc3Ryb3llZGAgb3IgYXN5bmMgcGlwZSkuIFdoZW4gdGhlXG4gKiAgICBjb21wb25lbnQgcmUtcmVuZGVycyBvciB1bnN1YnNjcmliZXMsIHRoZSBsaXN0ZW5lciBkaXNwb3Nlcy4gSWYgYVxuICogICAgY29tcG9uZW50IGRvZXMgTk9UIHVuc3Vic2NyaWJlIG9uIG9yZyBjaGFuZ2UsIGl0cyBsaXN0ZW5lciB3aWxsIGtlZXBcbiAqICAgIHBvaW50aW5nIGF0IHRoZSBwcmV2aW91cyBvcmcncyBwYXRoIGFuZCBtYXkgc3RhcnQgZmFpbGluZyBydWxlcy4gVGhlIGZpeFxuICogICAgaXMgY29tcG9uZW50LWxldmVsOiBzdWJzY3JpYmUgdG8gYG9yZ0NoYW5nZWQkYCBhbmQgcmVzZXQgc3RhdGUsIG9yIHVzZVxuICogICAgdGhlIGByZWxvYWQ6IHRydWVgIG9wdGlvbi5cbiAqXG4gKiAyLiAqKlJlLWluc3RhbnRpYXRlIHJvdXRlZCBjb21wb25lbnRzLioqIEFuZ3VsYXIga2VlcHMgbW91bnRlZCBjb21wb25lbnRzXG4gKiAgICBhbGl2ZSBhY3Jvc3MgbmF2aWdhdGlvbnMuIElmIHlvdSBuZWVkIGZyZXNoIHN0YXRlLCBlaXRoZXIgc3Vic2NyaWJlIHRvXG4gKiAgICBgb3JnQ2hhbmdlZCRgIGluIHRoZSBjb21wb25lbnQsIG9yIHVzZSBgcmVsb2FkOiB0cnVlYC5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyBzd2l0Y2ggd2l0aCBsb2FkaW5nIHN0YXRlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwcml2YXRlIG9yZ1N3aXRjaCA9IGluamVjdChPcmdTd2l0Y2hTZXJ2aWNlKTtcbiAqXG4gKiBhc3luYyBvblN3aXRjaE9yZyhvcmdJZDogc3RyaW5nKSB7XG4gKiAgIGF3YWl0IHRoaXMub3JnU3dpdGNoLnN3aXRjaFRvKG9yZ0lkKTtcbiAqICAgLy8gQ29tcG9uZW50cyBzdWJzY3JpYmVkIHRvIG9yZ0NoYW5nZWQkIGhhdmUgYWxyZWFkeSByZXNldCB0aGVpciBzdGF0ZS5cbiAqIH1cbiAqXG4gKiAvLyBJbiB0ZW1wbGF0ZTpcbiAqIEBpZiAob3JnU3dpdGNoLnN3aXRjaGluZygpKSB7IDx2YWwtbG9hZGluZyAvPiB9XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBDb21wb25lbnQgcmVhY3RpbmcgdG8gb3JnIGNoYW5nZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJpdmF0ZSBvcmdTd2l0Y2ggPSBpbmplY3QoT3JnU3dpdGNoU2VydmljZSk7XG4gKlxuICogY29uc3RydWN0b3IoKSB7XG4gKiAgIHRoaXMub3JnU3dpdGNoLm9yZ0NoYW5nZWQkXG4gKiAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gKiAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlc2V0U3RhdGUoKSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBCcnV0YWwgcmVsb2FkIG1vZGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGF3YWl0IHRoaXMub3JnU3dpdGNoLnN3aXRjaFRvKG9yZ0lkLCB7IHJlbG9hZDogdHJ1ZSB9KTtcbiAqIC8vIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKSDigJQgY2xlYW4gc2xhdGUsIGxvc2VzIHNjcm9sbCBwb3NpdGlvblxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgT3JnU3dpdGNoU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N3aXRjaGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29yZ0NoYW5nZWQgPSBuZXcgU3ViamVjdDxPcmdDaGFuZ2VkRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29yZ0RhdGFVcGRhdGVkID0gbmV3IFN1YmplY3Q8T3JnYW5pemF0aW9uPigpO1xuXG4gIC8qKlxuICAgKiBOYXZlZ2Fkb3IgYSBcImhvbWVcIiByZWdpc3RyYWRvIHBvciBlbCBzaGVsbCBkZSBsYSBhcHAgKG9wY2lvbmFsIOKAlCB2ZXJcbiAgICogYHJlZ2lzdGVySG9tZU5hdmlnYXRvcmApLiBTaSBleGlzdGUsIGBzd2l0Y2hUb2AgbG8gQVdBSVQtZWEgYW50ZXMgZGVcbiAgICogZW1pdGlyIGBvcmdDaGFuZ2VkJGAsIGFzw60gZWwgc2hlbGwgdGVybWluYSBkZSBuYXZlZ2FyICh5IGRlc3RydXllIGxhXG4gICAqIHZpc3RhIGRlIGRldGFsbGUgdmllamEpIGFudGVzIGRlIHF1ZSBjdWFscXVpZXIgcMOhZ2luYSBjb25cbiAgICogYGNvbm5lY3RQYWdlUmVmcmVzaGAgcmVhY2Npb25lIGFsIGNhbWJpbyBkZSBvcmcuXG4gICAqL1xuICBwcml2YXRlIGhvbWVOYXZpZ2F0b3I6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgd2hpbGUgYSBzd2l0Y2ggaXMgaW4gZmxpZ2h0LiBVSSBzaG91bGQgZGlzYWJsZSBpbnRlcmFjdGlvbnNcbiAgICogd2l0aCBvcmctc2NvcGVkIGRhdGEgYW5kIHNob3cgYSBsb2FkaW5nIGluZGljYXRvci5cbiAgICovXG4gIHJlYWRvbmx5IHN3aXRjaGluZyA9IHRoaXMuX3N3aXRjaGluZy5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIGEgc3VjY2Vzc2Z1bCBzd2l0Y2gsIHdpdGggdGhlIHByZXZpb3VzIGFuZCBuZXcgb3JnIGlkcy5cbiAgICogQ29tcG9uZW50cyBzdWJzY3JpYmUgdG8gaW52YWxpZGF0ZSBjYWNoZXMgLyByZXNldCBzdGF0ZS5cbiAgICpcbiAgICogRmlyZXMgQUZURVIgdGhlIEZpcmViYXNlIHJlLWF1dGggY29tcGxldGVzIOKAlCBsaXN0ZW5lcnMgYXR0YWNoZWQgaGVyZVxuICAgKiBzZWUgdGhlIHVwZGF0ZWQgRmlyZWJhc2UgdXNlciAvIGFjdGl2ZU9yZyBjbGFpbS5cbiAgICovXG4gIHJlYWRvbmx5IG9yZ0NoYW5nZWQkOiBPYnNlcnZhYmxlPE9yZ0NoYW5nZWRFdmVudD4gPSB0aGlzLl9vcmdDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIG9yZyBkYXRhIChuYW1lLCBsb2dvVXJsLCBldGMuKSBjaGFuZ2VzIHdpdGhvdXQgYSBmdWxsIG9yZyBzd2l0Y2guXG4gICAqIFN1YnNjcmliZSBpbiB0aGUgYXBwIHNoZWxsIHRvIGtlZXAgdGhlIGhlYWRlciBvcmcgYXZhdGFyIHVwIHRvIGRhdGUuXG4gICAqL1xuICByZWFkb25seSBvcmdEYXRhVXBkYXRlZCQ6IE9ic2VydmFibGU8T3JnYW5pemF0aW9uPiA9IHRoaXMuX29yZ0RhdGFVcGRhdGVkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8qKiBOb3RpZnkgc3Vic2NyaWJlcnMgdGhhdCB0aGUgYWN0aXZlIG9yZydzIGRhdGEgd2FzIHVwZGF0ZWQuICovXG4gIG5vdGlmeU9yZ0RhdGFVcGRhdGVkKG9yZzogT3JnYW5pemF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fb3JnRGF0YVVwZGF0ZWQubmV4dChvcmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGxhIGZ1bmNpw7NuIHF1ZSBsbGV2YSBhIFwiaG9tZVwiIHRyYXMgdW4gY2FtYmlvIGRlIG9yZyAoRkUtNyxcbiAgICogYFRPRE8ubWRgKS4gTGxhbWFyIFVOQSB2ZXogZW4gZWwgY29uc3RydWN0b3IgZGVsIHNoZWxsIHJhw616IGRlIGxhIGFwcFxuICAgKiAoZWouIGBBcHBMYXlvdXRQYWdlYCksIHJlZW1wbGF6YW5kbyBjdWFscXVpZXIgYG9yZ0NoYW5nZWQkLnN1YnNjcmliZSgoKSA9PlxuICAgKiByb3V0ZXIubmF2aWdhdGVCeVVybCguLi4pKWAgbWFudWFsIHF1ZSBsYSBhcHAgdHV2aWVyYSBhbnRlcyDigJQgZXNlIHBhdHLDs25cbiAgICogZXMgZXhhY3RhbWVudGUgZWwgYnVnOiBgbmF2aWdhdGVCeVVybGAgc2luIGBhd2FpdGAgZGVqYSBxdWUgb3Ryb1xuICAgKiBzdWJzY3JpYmVyIGRlbCBtaXNtbyBldmVudG8gKGBjb25uZWN0UGFnZVJlZnJlc2hgIGRlIHVuYSBww6FnaW5hIGRlXG4gICAqIGRldGFsbGUpIGRpc3BhcmUgc3UgcmVmZXRjaCBBTlRFUyBkZSBxdWUgbGEgbmF2ZWdhY2nDs24gcmVlbXBsYWNlIGVsXG4gICAqIGNvbXBvbmVudGUsIHkgcG9yIHVuIGluc3RhbnRlIHNlIHZlIGVsIGVzdGFkbyB2YWPDrW8gZGUgbGEgb3JnIGFudGVyaW9yLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBjb25zdHJ1Y3RvcigpIHtcbiAgICogICB0aGlzLm9yZ1N3aXRjaC5yZWdpc3RlckhvbWVOYXZpZ2F0b3IoKCkgPT5cbiAgICogICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9hcHAvaG9tZScsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KS50aGVuKCgpID0+IHt9KVxuICAgKiAgICk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICByZWdpc3RlckhvbWVOYXZpZ2F0b3IoZm46ICgpID0+IFByb21pc2U8dm9pZD4pOiB2b2lkIHtcbiAgICB0aGlzLmhvbWVOYXZpZ2F0b3IgPSBmbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIFN3aXRjaCB0aGUgdXNlcidzIGFjdGl2ZSBvcmdhbml6YXRpb24uXG4gICAqXG4gICAqIFJlLWVudHJhbnQgc2FmZTogd2hpbGUgYSBzd2l0Y2ggaXMgaW4gZmxpZ2h0LCBhZGRpdGlvbmFsIGNhbGxzIGFyZVxuICAgKiByZWplY3RlZCBzaWxlbnRseSAocmV0dXJucyBpbW1lZGlhdGVseSkuIEluc3BlY3QgYHN3aXRjaGluZygpYCB0byBnYXRlIFVJLlxuICAgKlxuICAgKiBAcGFyYW0gb3JnSWQgVGFyZ2V0IG9yZ2FuaXphdGlvbiBpZC4gTXVzdCBiZSBvbmUgdGhlIHVzZXIgaGFzIGEgcm9sZSBpblxuICAgKiAgICAgICAgICAgICAg4oCUIGJhY2tlbmQgcmVqZWN0cyBvdGhlcndpc2Ugd2l0aCBgUEVSTUlTU0lPTl9ERU5JRURgLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBTZWUgYFN3aXRjaE9yZ09wdGlvbnNgLlxuICAgKlxuICAgKiBAdGhyb3dzIFRoZSBlcnJvciBmcm9tIGBhdXRoLnN3aXRjaE9yZ2AgaWYgdGhlIGJhY2tlbmQgY2FsbCBmYWlscy5cbiAgICogICAgICAgICBgc3dpdGNoaW5nYCByZXR1cm5zIHRvIGBmYWxzZWAgYmVmb3JlIHRoZSBlcnJvciBwcm9wYWdhdGVzLlxuICAgKi9cbiAgYXN5bmMgc3dpdGNoVG8ob3JnSWQ6IHN0cmluZywgb3B0aW9uczogU3dpdGNoT3JnT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N3aXRjaGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNPcmcgPSB0aGlzLmN1cnJlbnRBY3RpdmVPcmcoKTtcbiAgICBpZiAocHJldmlvdXNPcmcgPT09IG9yZ0lkKSB7XG4gICAgICAvLyBOby1vcCDigJQgYWxyZWFkeSBvbiB0aGlzIG9yZy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zd2l0Y2hpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGguc3dpdGNoT3JnKG9yZ0lkKSk7XG5cbiAgICAgIC8vIEZFLTc6IHNpIGVsIHNoZWxsIHJlZ2lzdHLDsyB1biBuYXZlZ2Fkb3IgYSBob21lLCBlc3BlcmFybG8gQU5URVMgZGVcbiAgICAgIC8vIGF2aXNhciBhIGxhcyBww6FnaW5hcyDigJQgYXPDrSBsYSB2aXN0YSBkZSBkZXRhbGxlIHZpZWphIHlhIGZ1ZVxuICAgICAgLy8gZGVzdHJ1aWRhIChvIG51bmNhIGxsZWdhIGEgcmVmZXRjaGVhciBjb24gbGEgb3JnIGFudGVyaW9yKSBjdWFuZG9cbiAgICAgIC8vIGBjb25uZWN0UGFnZVJlZnJlc2hgIHJlYWNjaW9uYS5cbiAgICAgIGlmICh0aGlzLmhvbWVOYXZpZ2F0b3IpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5ob21lTmF2aWdhdG9yKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX29yZ0NoYW5nZWQubmV4dCh7IHByZXZpb3VzT3JnLCBuZXdPcmc6IG9yZ0lkIH0pO1xuXG4gICAgICBpZiAob3B0aW9ucy5yZWxvYWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zd2l0Y2hpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZCB0aGUgY3VycmVudCBgYWN0aXZlT3JnYCBmcm9tIHRoZSBhdXRoIHVzZXIgc2lnbmFsLlxuICAgKiBGYWxscyBiYWNrIHRvIGVtcHR5IHN0cmluZyBpZiB0aGUgdXNlciBpc24ndCBsb2FkZWQgeWV0LlxuICAgKi9cbiAgcHJpdmF0ZSBjdXJyZW50QWN0aXZlT3JnKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aC51c2VyKCk7XG4gICAgLy8gQXV0aFVzZXIgbWF5IGV4cG9zZSBhY3RpdmVPcmdJZCB1bmRlciBkaWZmZXJlbnQgbmFtZXMgZGVwZW5kaW5nIG9uXG4gICAgLy8gYmFja2VuZCB2ZXJzaW9uIOKAlCBrZWVwIHRvbGVyYW50LlxuICAgIHJldHVybiAoXG4gICAgICAodXNlciBhcyB7IGFjdGl2ZU9yZ0lkPzogc3RyaW5nOyBhY3RpdmVPcmc/OiBzdHJpbmcgfSB8IG51bGwpPy5hY3RpdmVPcmdJZCA/P1xuICAgICAgKHVzZXIgYXMgeyBhY3RpdmVPcmdJZD86IHN0cmluZzsgYWN0aXZlT3JnPzogc3RyaW5nIH0gfCBudWxsKT8uYWN0aXZlT3JnID8/XG4gICAgICAnJ1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.993';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC45OTMnO1xuIl19
5
+ export const VERSION = '4.0.994';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC45OTQnO1xuIl19
@@ -70,7 +70,7 @@ import fixWebmDuration from 'fix-webm-duration';
70
70
  * Current version of valtech-components.
71
71
  * This is automatically updated during the publish process.
72
72
  */
73
- const VERSION = '4.0.993';
73
+ const VERSION = '4.0.994';
74
74
 
75
75
  function evaluateValtechAccess(rule, context, features = {}, visitedFeatures = new Set()) {
76
76
  if (rule == null)
@@ -43992,11 +43992,41 @@ class OrgSwitchService {
43992
43992
  notifyOrgDataUpdated(org) {
43993
43993
  this._orgDataUpdated.next(org);
43994
43994
  }
43995
+ /**
43996
+ * Registra la función que lleva a "home" tras un cambio de org (FE-7,
43997
+ * `TODO.md`). Llamar UNA vez en el constructor del shell raíz de la app
43998
+ * (ej. `AppLayoutPage`), reemplazando cualquier `orgChanged$.subscribe(() =>
43999
+ * router.navigateByUrl(...))` manual que la app tuviera antes — ese patrón
44000
+ * es exactamente el bug: `navigateByUrl` sin `await` deja que otro
44001
+ * subscriber del mismo evento (`connectPageRefresh` de una página de
44002
+ * detalle) dispare su refetch ANTES de que la navegación reemplace el
44003
+ * componente, y por un instante se ve el estado vacío de la org anterior.
44004
+ *
44005
+ * @example
44006
+ * ```ts
44007
+ * constructor() {
44008
+ * this.orgSwitch.registerHomeNavigator(() =>
44009
+ * this.router.navigateByUrl('/app/home', { replaceUrl: true }).then(() => {})
44010
+ * );
44011
+ * }
44012
+ * ```
44013
+ */
44014
+ registerHomeNavigator(fn) {
44015
+ this.homeNavigator = fn;
44016
+ }
43995
44017
  constructor(auth) {
43996
44018
  this.auth = auth;
43997
44019
  this._switching = signal(false);
43998
44020
  this._orgChanged = new Subject();
43999
44021
  this._orgDataUpdated = new Subject();
44022
+ /**
44023
+ * Navegador a "home" registrado por el shell de la app (opcional — ver
44024
+ * `registerHomeNavigator`). Si existe, `switchTo` lo AWAIT-ea antes de
44025
+ * emitir `orgChanged$`, así el shell termina de navegar (y destruye la
44026
+ * vista de detalle vieja) antes de que cualquier página con
44027
+ * `connectPageRefresh` reaccione al cambio de org.
44028
+ */
44029
+ this.homeNavigator = null;
44000
44030
  /**
44001
44031
  * `true` while a switch is in flight. UI should disable interactions
44002
44032
  * with org-scoped data and show a loading indicator.
@@ -44041,6 +44071,13 @@ class OrgSwitchService {
44041
44071
  this._switching.set(true);
44042
44072
  try {
44043
44073
  await firstValueFrom(this.auth.switchOrg(orgId));
44074
+ // FE-7: si el shell registró un navegador a home, esperarlo ANTES de
44075
+ // avisar a las páginas — así la vista de detalle vieja ya fue
44076
+ // destruida (o nunca llega a refetchear con la org anterior) cuando
44077
+ // `connectPageRefresh` reacciona.
44078
+ if (this.homeNavigator) {
44079
+ await this.homeNavigator();
44080
+ }
44044
44081
  this._orgChanged.next({ previousOrg, newOrg: orgId });
44045
44082
  if (options.reload && typeof window !== 'undefined') {
44046
44083
  window.location.reload();