@alfresco/aca-shared 5.2.0 → 5.3.0-11955434723

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.
@@ -22,13 +22,13 @@
22
22
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
23
  */
24
24
  import { inject, Injectable } from '@angular/core';
25
- import { AuthenticationService, AppConfigService, PageTitleService, UserPreferencesService, NotificationService } from '@alfresco/adf-core';
25
+ import { AppConfigService, AuthenticationService, NotificationService, PageTitleService, UserPreferencesService } from '@alfresco/adf-core';
26
26
  import { BehaviorSubject, Subject } from 'rxjs';
27
27
  import { AlfrescoApiService, SearchQueryBuilderService, SharedLinksApiService, UploadService } from '@alfresco/adf-content-services';
28
28
  import { OverlayContainer } from '@angular/cdk/overlay';
29
29
  import { ActivatedRoute, ActivationEnd, NavigationStart, Router } from '@angular/router';
30
30
  import { filter, map } from 'rxjs/operators';
31
- import { SetCurrentUrlAction, SetRepositoryInfoAction, SetUserProfileAction, ResetSelectionAction } from '@alfresco/aca-shared/store';
31
+ import { ResetSelectionAction, SetCurrentUrlAction, SetRepositoryInfoAction, SetUserProfileAction } from '@alfresco/aca-shared/store';
32
32
  import { ContentApiService } from './content-api.service';
33
33
  import { RouterExtensionService } from './router.extension.service';
34
34
  import { Store } from '@ngrx/store';
@@ -75,7 +75,6 @@ class AppService {
75
75
  toggleAppNavBar$ = new Subject();
76
76
  hideSidenavConditions = ['/preview/'];
77
77
  minimizeSidenavConditions = ['/search'];
78
- onDestroy$ = new Subject();
79
78
  /**
80
79
  * Whether `withCredentials` mode is enabled.
81
80
  * Usually means that `Kerberos` mode is used.
@@ -118,10 +117,6 @@ class AppService {
118
117
  this.pageTitle.setTitle(title);
119
118
  });
120
119
  }
121
- ngOnDestroy() {
122
- this.onDestroy$.next(true);
123
- this.onDestroy$.complete();
124
- }
125
120
  init() {
126
121
  this.alfrescoApiService.getInstance().on('error', (error) => {
127
122
  if (error.status === 401 && !this.alfrescoApiService.isExcludedErrorListener(error?.response?.req?.url)) {
@@ -236,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
236
231
  providedIn: 'root'
237
232
  }]
238
233
  }], ctorParameters: function () { return [{ type: i1.UserPreferencesService }, { type: i1.AuthenticationService }, { type: i2.Store }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i1.AppConfigService }, { type: i1.PageTitleService }, { type: i4.AlfrescoApiService }, { type: i4.UploadService }, { type: i5.RouterExtensionService }, { type: i6.ContentApiService }, { type: i4.SharedLinksApiService }, { type: i7.OverlayContainer }, { type: i4.SearchQueryBuilderService }, { type: i8.AcaMobileAppSwitcherService }, { type: i9.AppSettingsService }, { type: i10.UserProfileService }]; } });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvc2VydmljZXMvYXBwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1SSxPQUFPLEVBQWMsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsYUFBYSxFQUVkLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFZLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVo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O1NBQzdEO2FBQU07WUFDTCxJQUFJLENBQUMsMkJBQTJCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUMzRDtJQUNILENBQUM7dUdBM01VLFVBQVU7MkdBQVYsVUFBVSxjQUhULE1BQU07O1NBR1AsVUFBVTsyRkFBVixVQUFVO2tCQUp0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlLCBBcHBDb25maWdTZXJ2aWNlLCBQYWdlVGl0bGVTZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQWxmcmVzY29BcGlTZXJ2aWNlLFxuICBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlLFxuICBTaGFyZWRMaW5rc0FwaVNlcnZpY2UsXG4gIFVwbG9hZFNlcnZpY2UsXG4gIEZpbGVVcGxvYWRFcnJvckV2ZW50XG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU3RvcmUsIFNldEN1cnJlbnRVcmxBY3Rpb24sIFNldFJlcG9zaXRvcnlJbmZvQWN0aW9uLCBTZXRVc2VyUHJvZmlsZUFjdGlvbiwgUmVzZXRTZWxlY3Rpb25BY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBDb250ZW50QXBpU2VydmljZSB9IGZyb20gJy4vY29udGVudC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXJFeHRlbnNpb25TZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZXIuZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBEaXNjb3ZlcnlFbnRyeSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQWNhTW9iaWxlQXBwU3dpdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi9hY2EtbW9iaWxlLWFwcC1zd2l0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNoZWxsQXBwU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZS9zaGVsbCc7XG5pbXBvcnQgeyBBcHBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL2FwcC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4vdXNlci1wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG4vLyBBZnRlciBtb3Zpbmcgc2hlbGwgdG8gQURGIHRvIGNvcmUsIEFwcFNlcnZpY2Ugd2lsbCBpbXBsZW1lbnQgU2hlbGxBcHBTZXJ2aWNlXG5leHBvcnQgY2xhc3MgQXBwU2VydmljZSBpbXBsZW1lbnRzIFNoZWxsQXBwU2VydmljZSwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIG1hdERpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBwcml2YXRlIHJlYWR5OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgcmVhZHkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgcGFnZUhlYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgLyoqIEBkZXByZWNhdGVkIHBhZ2UgdGl0bGUgaXMgdXBkYXRlZCBhdXRvbWF0aWNhbGx5ICovXG4gIHBhZ2VIZWFkaW5nJCA9IHRoaXMucGFnZUhlYWRpbmcuYXNPYnNlcnZhYmxlKCk7XG5cbiAgYXBwTmF2TmFyTW9kZSQ6IFN1YmplY3Q8J2NvbGxhcHNlZCcgfCAnZXhwYW5kZWQnPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJ2V4cGFuZGVkJyk7XG4gIHRvZ2dsZUFwcE5hdkJhciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGhpZGVTaWRlbmF2Q29uZGl0aW9ucyA9IFsnL3ByZXZpZXcvJ107XG4gIG1pbmltaXplU2lkZW5hdkNvbmRpdGlvbnMgPSBbJy9zZWFyY2gnXTtcblxuICBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogV2hldGhlciBgd2l0aENyZWRlbnRpYWxzYCBtb2RlIGlzIGVuYWJsZWQuXG4gICAqIFVzdWFsbHkgbWVhbnMgdGhhdCBgS2VyYmVyb3NgIG1vZGUgaXMgdXNlZC5cbiAgICovXG4gIGdldCB3aXRoQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldDxib29sZWFuPignYXV0aC53aXRoQ3JlZGVudGlhbHMnLCBmYWxzZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcHJlZmVyZW5jZXNTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWdlVGl0bGU6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGZyZXNjb0FwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHVwbG9hZFNlcnZpY2U6IFVwbG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXJFeHRlbnNpb25TZXJ2aWNlOiBSb3V0ZXJFeHRlbnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGVudEFwaTogQ29udGVudEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaGFyZWRMaW5rc0FwaVNlcnZpY2U6IFNoYXJlZExpbmtzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG92ZXJsYXlDb250YWluZXI6IE92ZXJsYXlDb250YWluZXIsXG4gICAgc2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZTogU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGFjYU1vYmlsZUFwcFN3aXRjaGVyU2VydmljZTogQWNhTW9iaWxlQXBwU3dpdGNoZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU2V0dGluZ3NTZXJ2aWNlOiBBcHBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyUHJvZmlsZVNlcnZpY2U6IFVzZXJQcm9maWxlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnJlYWR5ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5pc0xvZ2dlZEluKCkgfHwgdGhpcy53aXRoQ3JlZGVudGlhbHMpO1xuICAgIHRoaXMucmVhZHkkID0gdGhpcy5yZWFkeS5hc09ic2VydmFibGUoKTtcblxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLm9uTG9naW4uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVhZHkubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMucHJlZmVyZW5jZXNTZXJ2aWNlLnNldFN0b3JhZ2VQcmVmaXgodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXNlcm5hbWUoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5vbkxvZ291dC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgc2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZS5yZXNldFRvRGVmYXVsdHMoKTtcbiAgICAgIGFjYU1vYmlsZUFwcFN3aXRjaGVyU2VydmljZS5jbGVhclNlc3Npb25FeHBpcmVUaW1lKCk7XG4gICAgICBhY2FNb2JpbGVBcHBTd2l0Y2hlclNlcnZpY2UuY2xvc2VEaWFsb2coKTtcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgQWN0aXZhdGlvbkVuZCAmJiBldmVudC5zbmFwc2hvdC5jaGlsZHJlbi5sZW5ndGggPT09IDApLFxuICAgICAgICBtYXAoKGV2ZW50OiBBY3RpdmF0aW9uRW5kKSA9PiBldmVudC5zbmFwc2hvdD8uZGF0YT8udGl0bGUgPz8gJycpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh0aXRsZSkgPT4ge1xuICAgICAgICB0aGlzLnBhZ2VIZWFkaW5nLm5leHQodGl0bGUpO1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZS5zZXRUaXRsZSh0aXRsZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFsZnJlc2NvQXBpU2VydmljZS5nZXRJbnN0YW5jZSgpLm9uKCdlcnJvcicsIChlcnJvcjogeyBzdGF0dXM6IG51bWJlcjsgcmVzcG9uc2U6IGFueSB9KSA9PiB7XG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEgJiYgIXRoaXMuYWxmcmVzY29BcGlTZXJ2aWNlLmlzRXhjbHVkZWRFcnJvckxpc3RlbmVyKGVycm9yPy5yZXNwb25zZT8ucmVxPy51cmwpKSB7XG4gICAgICAgIGlmICghdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuaXNMb2dnZWRJbigpKSB7XG4gICAgICAgICAgdGhpcy5tYXREaWFsb2cuY2xvc2VBbGwoKTtcblxuICAgICAgICAgIGxldCByZWRpcmVjdFVybCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3JlZGlyZWN0VXJsJ107XG4gICAgICAgICAgaWYgKCFyZWRpcmVjdFVybCkge1xuICAgICAgICAgICAgcmVkaXJlY3RVcmwgPSB0aGlzLnJvdXRlci51cmw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSwge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgcmVkaXJlY3RVcmwgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmxvYWRDdXN0b21Dc3MoKTtcbiAgICB0aGlzLmxvYWRDdXN0b21XZWJGb250KCk7XG5cbiAgICBjb25zdCB7IHJvdXRlciB9ID0gdGhpcztcblxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgQWN0aXZhdGlvbkVuZCAmJiBldmVudC5zbmFwc2hvdC5jaGlsZHJlbi5sZW5ndGggPT09IDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudFVybEFjdGlvbihyb3V0ZXIudXJsKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZXNldFNlbGVjdGlvbkFjdGlvbigpKTtcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyRXh0ZW5zaW9uU2VydmljZS5tYXBFeHRlbnNpb25Sb3V0ZXMoKTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkRXJyb3Iuc3Vic2NyaWJlKChlcnJvcikgPT4gdGhpcy5vbkZpbGVVcGxvYWRlZEVycm9yKGVycm9yKSk7XG5cbiAgICB0aGlzLnNoYXJlZExpbmtzQXBpU2VydmljZS5lcnJvci5zdWJzY3JpYmUoKGVycjogeyBtZXNzYWdlOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgaWYgKGVycj8ubWVzc2FnZSkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKGVyci5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucmVhZHkkLnN1YnNjcmliZSgoaXNSZWFkeSkgPT4ge1xuICAgICAgaWYgKGlzUmVhZHkpIHtcbiAgICAgICAgdGhpcy5sb2FkUmVwb3NpdG9yeVN0YXR1cygpO1xuICAgICAgICB0aGlzLmxvYWRVc2VyUHJvZmlsZSgpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW5Nb2JpbGVBcHBEaWFsb2coKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm92ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpLnNldEF0dHJpYnV0ZSgncm9sZScsICdyZWdpb24nKTtcbiAgfVxuXG4gIHNldEFwcE5hdmJhck1vZGUobW9kZTogJ2V4cGFuZGVkJyB8ICdjb2xsYXBzZWQnKTogdm9pZCB7XG4gICAgdGhpcy5hcHBOYXZOYXJNb2RlJC5uZXh0KG1vZGUpO1xuICAgIHRoaXMucHJlZmVyZW5jZXNTZXJ2aWNlLnNldCgnZXhwYW5kZWRTaWRlbmF2JywgbW9kZSA9PT0gJ2V4cGFuZGVkJyk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRSZXBvc2l0b3J5U3RhdHVzKCkge1xuICAgIHRoaXMuY29udGVudEFwaS5nZXRSZXBvc2l0b3J5SW5mb3JtYXRpb24oKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBEaXNjb3ZlcnlFbnRyeSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlPy5lbnRyeT8ucmVwb3NpdG9yeSkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRSZXBvc2l0b3J5SW5mb0FjdGlvbihyZXNwb25zZS5lbnRyeS5yZXBvc2l0b3J5KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRVc2VyUHJvZmlsZSgpIHtcbiAgICBjb25zdCBwcm9maWxlID0gYXdhaXQgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UubG9hZFVzZXJQcm9maWxlKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0VXNlclByb2ZpbGVBY3Rpb24ocHJvZmlsZSkpO1xuICB9XG5cbiAgb25GaWxlVXBsb2FkZWRFcnJvcihlcnJvcjogRmlsZVVwbG9hZEVycm9yRXZlbnQpIHtcbiAgICBsZXQgbWVzc2FnZSA9ICdBUFAuTUVTU0FHRVMuVVBMT0FELkVSUk9SLkdFTkVSSUMnO1xuXG4gICAgaWYgKGVycm9yPy5lcnJvcj8uc3RhdHVzID09PSA0MDMpIHtcbiAgICAgIG1lc3NhZ2UgPSAnQVBQLk1FU1NBR0VTLlVQTE9BRC5FUlJPUi40MDMnO1xuICAgIH1cblxuICAgIGlmIChlcnJvcj8uZXJyb3I/LnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICBtZXNzYWdlID0gJ0FQUC5NRVNTQUdFUy5VUExPQUQuRVJST1IuNDA0JztcbiAgICB9XG5cbiAgICBpZiAoZXJyb3I/LmVycm9yPy5zdGF0dXMgPT09IDQwOSkge1xuICAgICAgbWVzc2FnZSA9ICdBUFAuTUVTU0FHRVMuVVBMT0FELkVSUk9SLkNPTkZMSUNUJztcbiAgICB9XG5cbiAgICBpZiAoZXJyb3I/LmVycm9yPy5zdGF0dXMgPT09IDUwMCkge1xuICAgICAgbWVzc2FnZSA9ICdBUFAuTUVTU0FHRVMuVVBMT0FELkVSUk9SLjUwMCc7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yPy5lcnJvcj8uc3RhdHVzID09PSA1MDQpIHtcbiAgICAgIG1lc3NhZ2UgPSAnQVBQLk1FU1NBR0VTLlVQTE9BRC5FUlJPUi41MDQnO1xuICAgIH1cblxuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IobWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDdXN0b21Dc3MoKTogdm9pZCB7XG4gICAgY29uc3QgY3VzdG9tQ3NzUGF0aCA9IHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmN1c3RvbUNzc1BhdGg7XG4gICAgaWYgKGN1c3RvbUNzc1BhdGgpIHtcbiAgICAgIHRoaXMuY3JlYXRlTGluayhjdXN0b21Dc3NQYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRDdXN0b21XZWJGb250KCk6IHZvaWQge1xuICAgIGNvbnN0IHdlYkZvbnRQYXRoID0gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2Uud2ViRm9udFBhdGg7XG4gICAgaWYgKHdlYkZvbnRQYXRoKSB7XG4gICAgICB0aGlzLmNyZWF0ZUxpbmsod2ViRm9udFBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNzc0xpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgIGNzc0xpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgncmVsJywgJ3N0eWxlc2hlZXQnKTtcbiAgICBjc3NMaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTtcbiAgICBjc3NMaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoY3NzTGlua0VsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIG9wZW5Nb2JpbGVBcHBEaWFsb2coKTogdm9pZCB7XG4gICAgY29uc3QgaXNNb2JpbGVTd2l0Y2hFbmFibGVkOiBib29sZWFuID0gdGhpcy5jb25maWcuZ2V0PGJvb2xlYW4+KCdtb2JpbGVBcHBTd2l0Y2guZW5hYmxlZCcsIGZhbHNlKTtcbiAgICBpZiAoaXNNb2JpbGVTd2l0Y2hFbmFibGVkKSB7XG4gICAgICB0aGlzLmFjYU1vYmlsZUFwcFN3aXRjaGVyU2VydmljZS5yZXNvbHZlRXhpc3RlbmNlT2ZEaWFsb2coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY2FNb2JpbGVBcHBTd2l0Y2hlclNlcnZpY2UuY2xlYXJTZXNzaW9uRXhwaXJlVGltZSgpO1xuICAgIH1cbiAgfVxufVxuIl19
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvc2VydmljZXMvYXBwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1SSxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQ0wsa0JBQWtCLEVBRWxCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsYUFBYSxFQUNkLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFZLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVo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Q1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgQXV0aGVudGljYXRpb25TZXJ2aWNlLCBOb3RpZmljYXRpb25TZXJ2aWNlLCBQYWdlVGl0bGVTZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQWxmcmVzY29BcGlTZXJ2aWNlLFxuICBGaWxlVXBsb2FkRXJyb3JFdmVudCxcbiAgU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgU2hhcmVkTGlua3NBcGlTZXJ2aWNlLFxuICBVcGxvYWRTZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU3RvcmUsIFJlc2V0U2VsZWN0aW9uQWN0aW9uLCBTZXRDdXJyZW50VXJsQWN0aW9uLCBTZXRSZXBvc2l0b3J5SW5mb0FjdGlvbiwgU2V0VXNlclByb2ZpbGVBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBDb250ZW50QXBpU2VydmljZSB9IGZyb20gJy4vY29udGVudC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXJFeHRlbnNpb25TZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZXIuZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBEaXNjb3ZlcnlFbnRyeSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQWNhTW9iaWxlQXBwU3dpdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi9hY2EtbW9iaWxlLWFwcC1zd2l0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNoZWxsQXBwU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZS9zaGVsbCc7XG5pbXBvcnQgeyBBcHBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL2FwcC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4vdXNlci1wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG4vLyBBZnRlciBtb3Zpbmcgc2hlbGwgdG8gQURGIHRvIGNvcmUsIEFwcFNlcnZpY2Ugd2lsbCBpbXBsZW1lbnQgU2hlbGxBcHBTZXJ2aWNlXG5leHBvcnQgY2xhc3MgQXBwU2VydmljZSBpbXBsZW1lbnRzIFNoZWxsQXBwU2VydmljZSB7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZSA9IGluamVjdChOb3RpZmljYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBtYXREaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgcHJpdmF0ZSByZWFkeTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIHJlYWR5JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwcml2YXRlIHBhZ2VIZWFkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIC8qKiBAZGVwcmVjYXRlZCBwYWdlIHRpdGxlIGlzIHVwZGF0ZWQgYXV0b21hdGljYWxseSAqL1xuICBwYWdlSGVhZGluZyQgPSB0aGlzLnBhZ2VIZWFkaW5nLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGFwcE5hdk5hck1vZGUkOiBTdWJqZWN0PCdjb2xsYXBzZWQnIHwgJ2V4cGFuZGVkJz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCdleHBhbmRlZCcpO1xuICB0b2dnbGVBcHBOYXZCYXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBoaWRlU2lkZW5hdkNvbmRpdGlvbnMgPSBbJy9wcmV2aWV3LyddO1xuICBtaW5pbWl6ZVNpZGVuYXZDb25kaXRpb25zID0gWycvc2VhcmNoJ107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYHdpdGhDcmVkZW50aWFsc2AgbW9kZSBpcyBlbmFibGVkLlxuICAgKiBVc3VhbGx5IG1lYW5zIHRoYXQgYEtlcmJlcm9zYCBtb2RlIGlzIHVzZWQuXG4gICAqL1xuICBnZXQgd2l0aENyZWRlbnRpYWxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXQ8Ym9vbGVhbj4oJ2F1dGgud2l0aENyZWRlbnRpYWxzJywgZmFsc2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEFwcFN0b3JlPixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgY29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFnZVRpdGxlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxmcmVzY29BcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyRXh0ZW5zaW9uU2VydmljZTogUm91dGVyRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2hhcmVkTGlua3NBcGlTZXJ2aWNlOiBTaGFyZWRMaW5rc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5Q29udGFpbmVyOiBPdmVybGF5Q29udGFpbmVyLFxuICAgIHNlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2U6IFNlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2FNb2JpbGVBcHBTd2l0Y2hlclNlcnZpY2U6IEFjYU1vYmlsZUFwcFN3aXRjaGVyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFNldHRpbmdzU2VydmljZTogQXBwU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclByb2ZpbGVTZXJ2aWNlOiBVc2VyUHJvZmlsZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5yZWFkeSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuaXNMb2dnZWRJbigpIHx8IHRoaXMud2l0aENyZWRlbnRpYWxzKTtcbiAgICB0aGlzLnJlYWR5JCA9IHRoaXMucmVhZHkuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5vbkxvZ2luLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlYWR5Lm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnByZWZlcmVuY2VzU2VydmljZS5zZXRTdG9yYWdlUHJlZml4KHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVzZXJuYW1lKCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2Uub25Mb2dvdXQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHNlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2UucmVzZXRUb0RlZmF1bHRzKCk7XG4gICAgICBhY2FNb2JpbGVBcHBTd2l0Y2hlclNlcnZpY2UuY2xlYXJTZXNzaW9uRXhwaXJlVGltZSgpO1xuICAgICAgYWNhTW9iaWxlQXBwU3dpdGNoZXJTZXJ2aWNlLmNsb3NlRGlhbG9nKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQgJiYgZXZlbnQuc25hcHNob3QuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSxcbiAgICAgICAgbWFwKChldmVudDogQWN0aXZhdGlvbkVuZCkgPT4gZXZlbnQuc25hcHNob3Q/LmRhdGE/LnRpdGxlID8/ICcnKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodGl0bGUpID0+IHtcbiAgICAgICAgdGhpcy5wYWdlSGVhZGluZy5uZXh0KHRpdGxlKTtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGUuc2V0VGl0bGUodGl0bGUpO1xuICAgICAgfSk7XG4gIH1cblxuICBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWxmcmVzY29BcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkub24oJ2Vycm9yJywgKGVycm9yOiB7IHN0YXR1czogbnVtYmVyOyByZXNwb25zZTogYW55IH0pID0+IHtcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSAmJiAhdGhpcy5hbGZyZXNjb0FwaVNlcnZpY2UuaXNFeGNsdWRlZEVycm9yTGlzdGVuZXIoZXJyb3I/LnJlc3BvbnNlPy5yZXE/LnVybCkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5pc0xvZ2dlZEluKCkpIHtcbiAgICAgICAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xuXG4gICAgICAgICAgbGV0IHJlZGlyZWN0VXJsID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sncmVkaXJlY3RVcmwnXTtcbiAgICAgICAgICBpZiAoIXJlZGlyZWN0VXJsKSB7XG4gICAgICAgICAgICByZWRpcmVjdFVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddLCB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtczogeyByZWRpcmVjdFVybCB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMubG9hZEN1c3RvbUNzcygpO1xuICAgIHRoaXMubG9hZEN1c3RvbVdlYkZvbnQoKTtcblxuICAgIGNvbnN0IHsgcm91dGVyIH0gPSB0aGlzO1xuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kICYmIGV2ZW50LnNuYXBzaG90LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50VXJsQWN0aW9uKHJvdXRlci51cmwpKTtcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlc2V0U2VsZWN0aW9uQWN0aW9uKCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZXJFeHRlbnNpb25TZXJ2aWNlLm1hcEV4dGVuc2lvblJvdXRlcygpO1xuXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWRFcnJvci5zdWJzY3JpYmUoKGVycm9yKSA9PiB0aGlzLm9uRmlsZVVwbG9hZGVkRXJyb3IoZXJyb3IpKTtcblxuICAgIHRoaXMuc2hhcmVkTGlua3NBcGlTZXJ2aWNlLmVycm9yLnN1YnNjcmliZSgoZXJyOiB7IG1lc3NhZ2U6IHN0cmluZyB9KSA9PiB7XG4gICAgICBpZiAoZXJyPy5tZXNzYWdlKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWFkeSQuc3Vic2NyaWJlKChpc1JlYWR5KSA9PiB7XG4gICAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgICB0aGlzLmxvYWRSZXBvc2l0b3J5U3RhdHVzKCk7XG4gICAgICAgIHRoaXMubG9hZFVzZXJQcm9maWxlKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3Blbk1vYmlsZUFwcERpYWxvZygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCkuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3JlZ2lvbicpO1xuICB9XG5cbiAgc2V0QXBwTmF2YmFyTW9kZShtb2RlOiAnZXhwYW5kZWQnIHwgJ2NvbGxhcHNlZCcpOiB2b2lkIHtcbiAgICB0aGlzLmFwcE5hdk5hck1vZGUkLm5leHQobW9kZSk7XG4gICAgdGhpcy5wcmVmZXJlbmNlc1NlcnZpY2Uuc2V0KCdleHBhbmRlZFNpZGVuYXYnLCBtb2RlID09PSAnZXhwYW5kZWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFJlcG9zaXRvcnlTdGF0dXMoKSB7XG4gICAgdGhpcy5jb250ZW50QXBpLmdldFJlcG9zaXRvcnlJbmZvcm1hdGlvbigpLnN1YnNjcmliZSgocmVzcG9uc2U6IERpc2NvdmVyeUVudHJ5KSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2U/LmVudHJ5Py5yZXBvc2l0b3J5KSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFJlcG9zaXRvcnlJbmZvQWN0aW9uKHJlc3BvbnNlLmVudHJ5LnJlcG9zaXRvcnkpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFVzZXJQcm9maWxlKCkge1xuICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5sb2FkVXNlclByb2ZpbGUoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRVc2VyUHJvZmlsZUFjdGlvbihwcm9maWxlKSk7XG4gIH1cblxuICBvbkZpbGVVcGxvYWRlZEVycm9yKGVycm9yOiBGaWxlVXBsb2FkRXJyb3JFdmVudCkge1xuICAgIGxldCBtZXNzYWdlID0gJ0FQUC5NRVNTQUdFUy5VUExPQUQuRVJST1IuR0VORVJJQyc7XG5cbiAgICBpZiAoZXJyb3I/LmVycm9yPy5zdGF0dXMgPT09IDQwMykge1xuICAgICAgbWVzc2FnZSA9ICdBUFAuTUVTU0FHRVMuVVBMT0FELkVSUk9SLjQwMyc7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yPy5lcnJvcj8uc3RhdHVzID09PSA0MDQpIHtcbiAgICAgIG1lc3NhZ2UgPSAnQVBQLk1FU1NBR0VTLlVQTE9BRC5FUlJPUi40MDQnO1xuICAgIH1cblxuICAgIGlmIChlcnJvcj8uZXJyb3I/LnN0YXR1cyA9PT0gNDA5KSB7XG4gICAgICBtZXNzYWdlID0gJ0FQUC5NRVNTQUdFUy5VUExPQUQuRVJST1IuQ09ORkxJQ1QnO1xuICAgIH1cblxuICAgIGlmIChlcnJvcj8uZXJyb3I/LnN0YXR1cyA9PT0gNTAwKSB7XG4gICAgICBtZXNzYWdlID0gJ0FQUC5NRVNTQUdFUy5VUExPQUQuRVJST1IuNTAwJztcbiAgICB9XG5cbiAgICBpZiAoZXJyb3I/LmVycm9yPy5zdGF0dXMgPT09IDUwNCkge1xuICAgICAgbWVzc2FnZSA9ICdBUFAuTUVTU0FHRVMuVVBMT0FELkVSUk9SLjUwNCc7XG4gICAgfVxuXG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcihtZXNzYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEN1c3RvbUNzcygpOiB2b2lkIHtcbiAgICBjb25zdCBjdXN0b21Dc3NQYXRoID0gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuY3VzdG9tQ3NzUGF0aDtcbiAgICBpZiAoY3VzdG9tQ3NzUGF0aCkge1xuICAgICAgdGhpcy5jcmVhdGVMaW5rKGN1c3RvbUNzc1BhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEN1c3RvbVdlYkZvbnQoKTogdm9pZCB7XG4gICAgY29uc3Qgd2ViRm9udFBhdGggPSB0aGlzLmFwcFNldHRpbmdzU2VydmljZS53ZWJGb250UGF0aDtcbiAgICBpZiAod2ViRm9udFBhdGgpIHtcbiAgICAgIHRoaXMuY3JlYXRlTGluayh3ZWJGb250UGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVMaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3NzTGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgY3NzTGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWwnLCAnc3R5bGVzaGVldCcpO1xuICAgIGNzc0xpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpO1xuICAgIGNzc0xpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChjc3NMaW5rRWxlbWVudCk7XG4gIH1cblxuICBwdWJsaWMgb3Blbk1vYmlsZUFwcERpYWxvZygpOiB2b2lkIHtcbiAgICBjb25zdCBpc01vYmlsZVN3aXRjaEVuYWJsZWQ6IGJvb2xlYW4gPSB0aGlzLmNvbmZpZy5nZXQ8Ym9vbGVhbj4oJ21vYmlsZUFwcFN3aXRjaC5lbmFibGVkJywgZmFsc2UpO1xuICAgIGlmIChpc01vYmlsZVN3aXRjaEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuYWNhTW9iaWxlQXBwU3dpdGNoZXJTZXJ2aWNlLnJlc29sdmVFeGlzdGVuY2VPZkRpYWxvZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjYU1vYmlsZUFwcFN3aXRjaGVyU2VydmljZS5jbGVhclNlc3Npb25FeHBpcmVUaW1lKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, HostBinding, Injectable, Inject, NgModule, ViewChild, QueryList, ViewChildren, HostListener, Directive } from '@angular/core';
2
+ import { InjectionToken, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, HostBinding, Injectable, Inject, NgModule, ViewChild, QueryList, ViewChildren, HostListener, DestroyRef, Directive } from '@angular/core';
3
3
  import { of, forkJoin, from, BehaviorSubject, Subject } from 'rxjs';
4
- import { map, tap, catchError, filter, takeUntil, startWith, debounceTime } from 'rxjs/operators';
4
+ import { map, tap, catchError, filter, startWith, debounceTime } from 'rxjs/operators';
5
5
  import * as i1 from '@alfresco/adf-core';
6
6
  import { AppConfigService, CloseButtonPosition, NotificationService, IconComponent, IconModule, InfoDrawerModule, ShowHeaderMode, UserPreferencesService, TranslationService, TranslationMock, TranslateLoaderService } from '@alfresco/adf-core';
7
7
  import * as i4 from '@alfresco/adf-content-services';
@@ -27,6 +27,7 @@ import { MatButtonModule } from '@angular/material/button';
27
27
  import * as i5 from '@angular/material/icon';
28
28
  import { MatIconModule } from '@angular/material/icon';
29
29
  import { A11yModule } from '@angular/cdk/a11y';
30
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
30
31
  import * as i6 from '@angular/platform-browser';
31
32
  import * as i4$2 from '@angular/material/menu';
32
33
  import { MatMenuItem, MatMenuModule, MatMenu } from '@angular/material/menu';
@@ -1267,7 +1268,6 @@ class AppService {
1267
1268
  toggleAppNavBar$ = new Subject();
1268
1269
  hideSidenavConditions = ['/preview/'];
1269
1270
  minimizeSidenavConditions = ['/search'];
1270
- onDestroy$ = new Subject();
1271
1271
  /**
1272
1272
  * Whether `withCredentials` mode is enabled.
1273
1273
  * Usually means that `Kerberos` mode is used.
@@ -1310,10 +1310,6 @@ class AppService {
1310
1310
  this.pageTitle.setTitle(title);
1311
1311
  });
1312
1312
  }
1313
- ngOnDestroy() {
1314
- this.onDestroy$.next(true);
1315
- this.onDestroy$.complete();
1316
- }
1317
1313
  init() {
1318
1314
  this.alfrescoApiService.getInstance().on('error', (error) => {
1319
1315
  if (error.status === 401 && !this.alfrescoApiService.isExcludedErrorListener(error?.response?.req?.url)) {
@@ -1454,19 +1450,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
1454
1450
  class PageLayoutComponent {
1455
1451
  appService;
1456
1452
  hasError = false;
1457
- onDestroy$ = new Subject();
1458
1453
  appNavNarMode$;
1459
1454
  constructor(appService) {
1460
1455
  this.appService = appService;
1461
- this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntil(this.onDestroy$));
1456
+ this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntilDestroyed());
1462
1457
  }
1463
1458
  toggleClick() {
1464
1459
  this.appService.toggleAppNavBar$.next();
1465
1460
  }
1466
- ngOnDestroy() {
1467
- this.onDestroy$.next(true);
1468
- this.onDestroy$.complete();
1469
- }
1470
1461
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PageLayoutComponent, deps: [{ token: AppService }], target: i0.ɵɵFactoryTarget.Component });
1471
1462
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PageLayoutComponent, isStandalone: true, selector: "aca-page-layout", inputs: { hasError: "hasError" }, host: { classAttribute: "aca-page-layout" }, ngImport: i0, template: "<div class=\"aca-content-header\">\n <button *ngIf=\"(appNavNarMode$ | async) === 'collapsed'\"\n mat-icon-button\n class=\"aca-content-header-button\"\n (click)=\"toggleClick()\"\n title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\">\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n <ng-content select=\".aca-page-layout-header, aca-page-layout-header\"></ng-content>\n</div>\n\n<ng-container *ngIf=\"hasError\">\n <ng-content select=\".aca-page-layout-error, aca-page-layout-error\"></ng-content>\n</ng-container>\n\n<ng-container *ngIf=\"!hasError\">\n <ng-content select=\".aca-page-layout-content, aca-page-layout-content\"></ng-content>\n</ng-container>\n", styles: [".aca-page-layout{display:flex;flex-direction:column;flex:1;height:100%;overflow:hidden;min-height:0}.aca-page-layout .aca-content-header{background:var(--theme-page-layout-header-background-color);height:96px;padding:0 24px;display:flex;align-items:center}.aca-page-layout .aca-content-header-button{margin-top:-1px}.aca-page-layout .aca-page-layout-header{display:flex;align-items:center;flex:auto;width:100%}.aca-page-layout .aca-page-layout-header .adf-breadcrumb-item{font-size:20px;font-weight:400;letter-spacing:.15px}.aca-page-layout .aca-page-layout-header .aca-toolbar-action button{border-radius:6px}.aca-page-layout .aca-page-layout-content{display:flex;flex-direction:row;flex:1;height:100%;overflow:hidden;border-top:1px solid var(--theme-metadata-property-panel-border-color)}.aca-page-layout .aca-page-layout-error{display:flex;flex-direction:row;flex:1;height:100%;overflow:hidden}.aca-page-layout .aca-main-content{display:flex;flex-direction:column;flex:1;height:100%;overflow:hidden;min-height:0}.aca-page-layout .aca-scrollable,.aca-page-layout .aca-scrollable .aca-main-content{overflow:auto}[dir=rtl] .aca-page-layout .aca-main-content{border-left:1px solid var(--theme-border-color, rgba(0, 0, 0, .07))}[dir=ltr] .aca-page-layout .aca-main-content{border-right:1px solid var(--theme-border-color, rgba(0, 0, 0, .07))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
1472
1463
  }
@@ -2477,12 +2468,12 @@ class InfoDrawerComponent {
2477
2468
  displayNode;
2478
2469
  tabs = [];
2479
2470
  actions = [];
2480
- onDestroy$ = new Subject();
2481
2471
  preventFromClosing = false;
2482
2472
  icon = null;
2483
2473
  onEscapeKeyboardEvent() {
2484
2474
  this.close();
2485
2475
  }
2476
+ destroyRef = inject(DestroyRef);
2486
2477
  constructor(store, contentApi, extensions, nodesService, contentService) {
2487
2478
  this.store = store;
2488
2479
  this.contentApi = contentApi;
@@ -2494,23 +2485,21 @@ class InfoDrawerComponent {
2494
2485
  this.tabs = this.extensions.getSidebarTabs();
2495
2486
  this.extensions
2496
2487
  .getAllowedSidebarActions()
2497
- .pipe(takeUntil(this.onDestroy$))
2488
+ .pipe(takeUntilDestroyed(this.destroyRef))
2498
2489
  .subscribe((actions) => {
2499
2490
  this.actions = actions;
2500
2491
  });
2501
2492
  this.store
2502
2493
  .select(infoDrawerPreview)
2503
- .pipe(takeUntil(this.onDestroy$))
2494
+ .pipe(takeUntilDestroyed(this.destroyRef))
2504
2495
  .subscribe((isInfoDrawerPreviewOpened) => {
2505
2496
  this.preventFromClosing = isInfoDrawerPreviewOpened;
2506
2497
  });
2507
- this.nodesService.nodeUpdated.pipe(takeUntil(this.onDestroy$)).subscribe((node) => {
2498
+ this.nodesService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {
2508
2499
  this.node.entry = node;
2509
2500
  });
2510
2501
  }
2511
2502
  ngOnDestroy() {
2512
- this.onDestroy$.next(true);
2513
- this.onDestroy$.complete();
2514
2503
  if (!this.preventFromClosing) {
2515
2504
  this.store.dispatch(new SetInfoDrawerStateAction(false));
2516
2505
  }
@@ -2753,7 +2742,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
2753
2742
  */
2754
2743
  /* eslint-disable @angular-eslint/directive-class-suffix */
2755
2744
  class PageComponent {
2756
- onDestroy$ = new Subject();
2757
2745
  documentList;
2758
2746
  title = 'Page';
2759
2747
  infoDrawerOpened$;
@@ -2781,6 +2769,7 @@ class PageComponent {
2781
2769
  router = inject(Router);
2782
2770
  userPreferencesService = inject(UserPreferencesService);
2783
2771
  searchAiService = inject(SearchAiService);
2772
+ destroyRef = inject(DestroyRef);
2784
2773
  autoDownloadService = inject(AutoDownloadService, { optional: true });
2785
2774
  navigationHistoryService = inject(NavigationHistoryService);
2786
2775
  subscriptions = [];
@@ -2793,50 +2782,50 @@ class PageComponent {
2793
2782
  ngOnInit() {
2794
2783
  this.extensions
2795
2784
  .getCreateActions()
2796
- .pipe(takeUntil(this.onDestroy$))
2785
+ .pipe(takeUntilDestroyed(this.destroyRef))
2797
2786
  .subscribe((actions) => {
2798
2787
  this.createActions = actions;
2799
2788
  });
2800
2789
  this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);
2801
2790
  this.store
2802
2791
  .select(getAppSelection)
2803
- .pipe(takeUntil(this.onDestroy$))
2792
+ .pipe(takeUntilDestroyed(this.destroyRef))
2804
2793
  .subscribe((selection) => {
2805
2794
  this.selection = selection;
2806
2795
  this.canUpdateNode = this.selection.count === 1 && this.content.canUpdateNode(selection.first);
2807
2796
  });
2808
2797
  this.extensions
2809
2798
  .getAllowedToolbarActions()
2810
- .pipe(takeUntil(this.onDestroy$))
2799
+ .pipe(takeUntilDestroyed(this.destroyRef))
2811
2800
  .subscribe((actions) => {
2812
2801
  this.actions = actions;
2813
2802
  });
2814
2803
  this.extensions
2815
2804
  .getBulkActions()
2816
- .pipe(takeUntil(this.onDestroy$))
2805
+ .pipe(takeUntilDestroyed(this.destroyRef))
2817
2806
  .subscribe((actions) => {
2818
2807
  this.bulkActions = actions;
2819
2808
  });
2820
2809
  this.extensions
2821
2810
  .getViewerToolbarActions()
2822
- .pipe(takeUntil(this.onDestroy$))
2811
+ .pipe(takeUntilDestroyed(this.destroyRef))
2823
2812
  .subscribe((actions) => {
2824
2813
  this.viewerToolbarActions = actions;
2825
2814
  });
2826
2815
  this.store
2827
2816
  .select(getCurrentFolder)
2828
- .pipe(takeUntil(this.onDestroy$))
2817
+ .pipe(takeUntilDestroyed(this.destroyRef))
2829
2818
  .subscribe((node) => {
2830
2819
  this.canUpload = node && this.content.canUploadContent(node);
2831
2820
  });
2832
2821
  this.breakpointObserver
2833
2822
  .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])
2834
- .pipe(takeUntil(this.onDestroy$))
2823
+ .pipe(takeUntilDestroyed(this.destroyRef))
2835
2824
  .subscribe((result) => {
2836
2825
  this.isSmallScreen = result.matches;
2837
2826
  });
2838
2827
  this.searchAiService.toggleSearchAiInput$
2839
- .pipe(takeUntil(this.onDestroy$))
2828
+ .pipe(takeUntilDestroyed(this.destroyRef))
2840
2829
  .subscribe((searchAiInputState) => (this._searchAiInputState = searchAiInputState));
2841
2830
  this.setKnowledgeRetrievalState();
2842
2831
  }
@@ -2848,8 +2837,6 @@ class PageComponent {
2848
2837
  ngOnDestroy() {
2849
2838
  this.subscriptions.forEach((subscription) => subscription.unsubscribe());
2850
2839
  this.subscriptions = [];
2851
- this.onDestroy$.next();
2852
- this.onDestroy$.complete();
2853
2840
  this.store.dispatch(new SetSelectedNodesAction([]));
2854
2841
  }
2855
2842
  showPreview(node, extras) {
@@ -2986,8 +2973,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
2986
2973
  */
2987
2974
  class ContextActionsDirective {
2988
2975
  store;
2989
- execute$ = new Subject();
2990
- onDestroy$ = new Subject();
2991
2976
  // eslint-disable-next-line
2992
2977
  enabled = true;
2993
2978
  customActions = [];
@@ -3002,11 +2987,13 @@ class ContextActionsDirective {
3002
2987
  }
3003
2988
  }
3004
2989
  }
2990
+ execute$ = new Subject();
2991
+ destroyRef = inject(DestroyRef);
3005
2992
  constructor(store) {
3006
2993
  this.store = store;
3007
2994
  }
3008
2995
  ngOnInit() {
3009
- this.execute$.pipe(debounceTime(300), takeUntil(this.onDestroy$)).subscribe((event) => {
2996
+ this.execute$.pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef)).subscribe((event) => {
3010
2997
  if (this.customActions?.length) {
3011
2998
  this.store.dispatch(new CustomContextMenu(event, this.customActions));
3012
2999
  }
@@ -3015,10 +3002,6 @@ class ContextActionsDirective {
3015
3002
  }
3016
3003
  });
3017
3004
  }
3018
- ngOnDestroy() {
3019
- this.onDestroy$.next(true);
3020
- this.onDestroy$.complete();
3021
- }
3022
3005
  execute(event, target) {
3023
3006
  if (!this.isSelected(target)) {
3024
3007
  target.dispatchEvent(new MouseEvent('click'));
@@ -3094,7 +3077,7 @@ class PaginationDirective {
3094
3077
  pagination;
3095
3078
  preferences;
3096
3079
  config;
3097
- subscriptions = [];
3080
+ destroyRef = inject(DestroyRef);
3098
3081
  constructor(pagination, preferences, config) {
3099
3082
  this.pagination = pagination;
3100
3083
  this.preferences = preferences;
@@ -3102,13 +3085,9 @@ class PaginationDirective {
3102
3085
  }
3103
3086
  ngOnInit() {
3104
3087
  this.pagination.supportedPageSizes = this.config.get('pagination.supportedPageSizes');
3105
- this.subscriptions.push(this.pagination.changePageSize.subscribe((event) => {
3088
+ this.pagination.changePageSize.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {
3106
3089
  this.preferences.paginationSize = event.maxItems;
3107
- }));
3108
- }
3109
- ngOnDestroy() {
3110
- this.subscriptions.forEach((subscription) => subscription.unsubscribe());
3111
- this.subscriptions = [];
3090
+ });
3112
3091
  }
3113
3092
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PaginationDirective, deps: [{ token: i1.PaginationComponent }, { token: i1.UserPreferencesService }, { token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Directive });
3114
3093
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: PaginationDirective, isStandalone: true, selector: "[acaPagination]", ngImport: i0 });