ngx-histaff-alpha 4.3.0 → 4.3.2

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.
@@ -0,0 +1,40 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { AppConfigService } from '../services/app-config.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/app-config.service";
5
+ export class AppTypeInterceptor {
6
+ constructor(appConfigService) {
7
+ this.appConfigService = appConfigService;
8
+ }
9
+ intercept(req, next) {
10
+ const appType = this.appConfigService.APP_TYPE;
11
+ if (appType === undefined) {
12
+ return next.handle(req);
13
+ }
14
+ const cloneReq = req.clone({
15
+ headers: req.headers.set('App-Type', appType)
16
+ });
17
+ return next.handle(cloneReq);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppTypeInterceptor, deps: [{ token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
20
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppTypeInterceptor, providedIn: 'root' }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppTypeInterceptor, decorators: [{
23
+ type: Injectable,
24
+ args: [{
25
+ providedIn: 'root'
26
+ }]
27
+ }], ctorParameters: () => [{ type: i1.AppConfigService }] });
28
+ // Fn style
29
+ export function appTypeInterceptor(req, next) {
30
+ const appConfigService = inject(AppConfigService);
31
+ const appType = appConfigService.APP_TYPE;
32
+ if (appType === undefined) {
33
+ return next(req);
34
+ }
35
+ const cloneReq = req.clone({
36
+ headers: req.headers.set('App-Type', appType)
37
+ });
38
+ return next(cloneReq);
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXR5cGUtaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy9hcHAtdHlwZS1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVFuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBS2xFLE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsWUFDWSxnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUMxQyxDQUFDO0lBRUwsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFFOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztRQUUvQyxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO1FBRUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUN2QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztTQUNoRCxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQzs4R0FuQlEsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGZixNQUFNOzsyRkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQXVCRCxXQUFXO0FBQ1gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQXFCLEVBQUUsSUFBbUI7SUFFekUsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVsRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7SUFFMUMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BCO0lBRUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN2QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztLQUNoRCxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCxcclxuICAgIEh0dHBIYW5kbGVyRm4sXHJcbiAgICBIdHRwRXZlbnRcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBUeXBlSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xyXG5cclxuICAgICAgICBjb25zdCBhcHBUeXBlID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFO1xyXG5cclxuICAgICAgICBpZiAoYXBwVHlwZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2xvbmVSZXEgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVycy5zZXQoJ0FwcC1UeXBlJywgYXBwVHlwZSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGNsb25lUmVxKTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gRm4gc3R5bGVcclxuZXhwb3J0IGZ1bmN0aW9uIGFwcFR5cGVJbnRlcmNlcHRvcihyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xyXG5cclxuICAgIGNvbnN0IGFwcENvbmZpZ1NlcnZpY2UgPSBpbmplY3QoQXBwQ29uZmlnU2VydmljZSk7XHJcblxyXG4gICAgY29uc3QgYXBwVHlwZSA9IGFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEU7XHJcblxyXG4gICAgaWYgKGFwcFR5cGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBuZXh0KHJlcSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2xvbmVSZXEgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldCgnQXBwLVR5cGUnLCBhcHBUeXBlKVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG5leHQoY2xvbmVSZXEpO1xyXG59Il19
@@ -9,8 +9,10 @@ import { ResponseInterceptor, responseInterceptor } from './response-interceptor
9
9
  import { TimeZoneInterceptor, timeZoneInterceptor } from './time-zone-interceptor';
10
10
  import { CachingInterceptor, cachingInterceptor } from './caching-interceptor';
11
11
  import { LangInterceptor, langInterceptor } from './lang-interceptor';
12
+ import { AppTypeInterceptor, appTypeInterceptor } from './app-type-interceptor';
12
13
  /** Http interceptor providers in outside-in order */
13
14
  export const httpInterceptorProviders = [
15
+ { provide: HTTP_INTERCEPTORS, useClass: AppTypeInterceptor, multi: true },
14
16
  { provide: HTTP_INTERCEPTORS, useClass: BaseUrlInterceptor, multi: true },
15
17
  { provide: HTTP_INTERCEPTORS, useClass: LoggingInterceptor, multi: true },
16
18
  { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },
@@ -21,5 +23,5 @@ export const httpInterceptorProviders = [
21
23
  { provide: HTTP_INTERCEPTORS, useClass: CachingInterceptor, multi: true },
22
24
  { provide: HTTP_INTERCEPTORS, useClass: LangInterceptor, multi: true },
23
25
  ];
24
- export { InterceptorSkipHeader, baseUrlInterceptor, authInterceptor, graphInterceptor, tokenInterceptor, responseInterceptor, timeZoneInterceptor, cachingInterceptor, langInterceptor };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXJFLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDMUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDMUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDekUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0NBQ3ZFLENBQUM7QUFFRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogXCJCYXJyZWxcIiBvZiBIdHRwIEludGVyY2VwdG9ycyAqL1xyXG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IEJhc2VVcmxJbnRlcmNlcHRvciwgSW50ZXJjZXB0b3JTa2lwSGVhZGVyLCBiYXNlVXJsSW50ZXJjZXB0b3IgfSBmcm9tICcuL2Jhc2UtdXJsLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTG9nZ2luZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi9sb2dnaW5nLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQXV0aEludGVyY2VwdG9yLCBhdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2F1dGgtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBHcmFwaEludGVyY2VwdG9yLCBncmFwaEludGVyY2VwdG9yIH0gZnJvbSAnLi9ncmFwaC1pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFRva2VuSW50ZXJjZXB0b3IsIHRva2VuSW50ZXJjZXB0b3IgfSBmcm9tICcuL3Rva2VuLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgUmVzcG9uc2VJbnRlcmNlcHRvciwgcmVzcG9uc2VJbnRlcmNlcHRvciB9IGZyb20gJy4vcmVzcG9uc2UtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBUaW1lWm9uZUludGVyY2VwdG9yLCB0aW1lWm9uZUludGVyY2VwdG9yIH0gZnJvbSAnLi90aW1lLXpvbmUtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBDYWNoaW5nSW50ZXJjZXB0b3IsIGNhY2hpbmdJbnRlcmNlcHRvciB9IGZyb20gJy4vY2FjaGluZy1pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IExhbmdJbnRlcmNlcHRvciwgbGFuZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi9sYW5nLWludGVyY2VwdG9yJ1xyXG5cclxuLyoqIEh0dHAgaW50ZXJjZXB0b3IgcHJvdmlkZXJzIGluIG91dHNpZGUtaW4gb3JkZXIgKi9cclxuZXhwb3J0IGNvbnN0IGh0dHBJbnRlcmNlcHRvclByb3ZpZGVycyA9IFtcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQmFzZVVybEludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBMb2dnaW5nSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IEF1dGhJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogR3JhcGhJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogVG9rZW5JbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogUmVzcG9uc2VJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogVGltZVpvbmVJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQ2FjaGluZ0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBMYW5nSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbl07XHJcblxyXG5leHBvcnQgeyBJbnRlcmNlcHRvclNraXBIZWFkZXIsIGJhc2VVcmxJbnRlcmNlcHRvciwgYXV0aEludGVyY2VwdG9yLCBncmFwaEludGVyY2VwdG9yLCB0b2tlbkludGVyY2VwdG9yLCByZXNwb25zZUludGVyY2VwdG9yLCB0aW1lWm9uZUludGVyY2VwdG9yLCBjYWNoaW5nSW50ZXJjZXB0b3IsIGxhbmdJbnRlcmNlcHRvciB9OyJdfQ==
26
+ export { InterceptorSkipHeader, appTypeInterceptor, baseUrlInterceptor, authInterceptor, graphInterceptor, tokenInterceptor, responseInterceptor, timeZoneInterceptor, cachingInterceptor, langInterceptor };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWhGLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDMUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDMUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDekUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0NBQ3ZFLENBQUM7QUFFRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogXCJCYXJyZWxcIiBvZiBIdHRwIEludGVyY2VwdG9ycyAqL1xyXG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IEJhc2VVcmxJbnRlcmNlcHRvciwgSW50ZXJjZXB0b3JTa2lwSGVhZGVyLCBiYXNlVXJsSW50ZXJjZXB0b3IgfSBmcm9tICcuL2Jhc2UtdXJsLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTG9nZ2luZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi9sb2dnaW5nLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQXV0aEludGVyY2VwdG9yLCBhdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2F1dGgtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBHcmFwaEludGVyY2VwdG9yLCBncmFwaEludGVyY2VwdG9yIH0gZnJvbSAnLi9ncmFwaC1pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFRva2VuSW50ZXJjZXB0b3IsIHRva2VuSW50ZXJjZXB0b3IgfSBmcm9tICcuL3Rva2VuLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgUmVzcG9uc2VJbnRlcmNlcHRvciwgcmVzcG9uc2VJbnRlcmNlcHRvciB9IGZyb20gJy4vcmVzcG9uc2UtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBUaW1lWm9uZUludGVyY2VwdG9yLCB0aW1lWm9uZUludGVyY2VwdG9yIH0gZnJvbSAnLi90aW1lLXpvbmUtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBDYWNoaW5nSW50ZXJjZXB0b3IsIGNhY2hpbmdJbnRlcmNlcHRvciB9IGZyb20gJy4vY2FjaGluZy1pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IExhbmdJbnRlcmNlcHRvciwgbGFuZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi9sYW5nLWludGVyY2VwdG9yJ1xyXG5pbXBvcnQgeyBBcHBUeXBlSW50ZXJjZXB0b3IsIGFwcFR5cGVJbnRlcmNlcHRvciB9IGZyb20gJy4vYXBwLXR5cGUtaW50ZXJjZXB0b3InO1xyXG5cclxuLyoqIEh0dHAgaW50ZXJjZXB0b3IgcHJvdmlkZXJzIGluIG91dHNpZGUtaW4gb3JkZXIgKi9cclxuZXhwb3J0IGNvbnN0IGh0dHBJbnRlcmNlcHRvclByb3ZpZGVycyA9IFtcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQXBwVHlwZUludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBCYXNlVXJsSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IExvZ2dpbmdJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQXV0aEludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBHcmFwaEludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBUb2tlbkludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBSZXNwb25zZUludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBUaW1lWm9uZUludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBDYWNoaW5nSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IExhbmdJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuXTtcclxuXHJcbmV4cG9ydCB7IEludGVyY2VwdG9yU2tpcEhlYWRlciwgYXBwVHlwZUludGVyY2VwdG9yLCBiYXNlVXJsSW50ZXJjZXB0b3IsIGF1dGhJbnRlcmNlcHRvciwgZ3JhcGhJbnRlcmNlcHRvciwgdG9rZW5JbnRlcmNlcHRvciwgcmVzcG9uc2VJbnRlcmNlcHRvciwgdGltZVpvbmVJbnRlcmNlcHRvciwgY2FjaGluZ0ludGVyY2VwdG9yLCBsYW5nSW50ZXJjZXB0b3IgfTsiXX0=
@@ -1,102 +1,92 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
1
+ import { NgStyle, NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, input, Output, signal, viewChild } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
4
  export class CoreOrgchartflexComponent {
6
5
  startDragging(e, flag) {
7
- this.mouseDown = true;
8
- this.startX = e.pageX - this.parent?.nativeElement.offsetLeft;
9
- this.scrollLeft = this.parent?.nativeElement.scrollLeft;
10
- this.startY = e.pageY - this.parent?.nativeElement.offsetTop;
11
- this.scrollTop = this.parent?.nativeElement.scrollTop;
6
+ this.$mouseDown.set(true);
7
+ this.$startX.set(e.pageX - this.$parent()?.nativeElement.offsetLeft);
8
+ this.$scrollLeft.set(this.$parent()?.nativeElement.scrollLeft);
9
+ this.$startY.set(e.pageY - this.$parent()?.nativeElement.offsetTop);
10
+ this.$scrollTop.set(this.$parent()?.nativeElement.scrollTop);
12
11
  }
13
12
  stopDragging(e, flag) {
14
- this.mouseDown = false;
13
+ this.$mouseDown.set(false);
15
14
  }
16
15
  moveEvent(e) {
17
16
  e.preventDefault();
18
- if (!this.mouseDown) {
17
+ if (!this.$mouseDown()) {
19
18
  return;
20
19
  }
21
- const x = e.pageX - this.parent?.nativeElement.offsetLeft;
22
- const scrollX = x - this.startX;
23
- this.parent.nativeElement.scrollLeft = this.scrollLeft - scrollX;
24
- const y = e.pageY - this.parent?.nativeElement.offsetTop;
25
- const scrollY = y - this.startY;
26
- this.parent.nativeElement.scrollTop = this.scrollTop - scrollY;
20
+ const x = e.pageX - this.$parent()?.nativeElement.offsetLeft;
21
+ const scrollX = x - this.$startX();
22
+ this.$parent().nativeElement.scrollLeft = this.$scrollLeft() - scrollX;
23
+ const y = e.pageY - this.$parent()?.nativeElement.offsetTop;
24
+ const scrollY = y - this.$startY();
25
+ this.$parent().nativeElement.scrollTop = this.$scrollTop() - scrollY;
27
26
  }
28
27
  constructor() {
28
+ this.$data = input.required();
29
+ this.$itemTemplate = input.required();
30
+ this.$compactMode = input();
31
+ this.$showDissolved = input();
32
+ this.$width = input();
33
+ this.$height = input();
34
+ this.$connectionColor = input();
35
+ this.$connectionSize = input(); // in pixel
36
+ this.$fromChildrenToTopLine = input(); // in pixel
37
+ this.$fromParentToChildrenTopLine = input(); // in pixel
38
+ this.$childrenHorizontalMargin = input(); // in pixel
39
+ this.$childrenBorderSize = input(); // in pixel
40
+ this.$childrenBorderColor = input(); // in pixel
29
41
  this.onPrintAreaRendered = new EventEmitter();
30
- this.mouseDown = false;
31
- this.scale = 1;
32
- }
33
- ngOnChanges(changes) {
34
- if (changes['width'] || changes['height']) {
35
- this.setGeometricRect();
36
- }
37
- }
38
- ngOnInit() {
39
- }
40
- setGeometricRect() {
41
- const style = this.container?.nativeElement.style;
42
- if (!!!style)
43
- return;
44
- if (!!this.width)
45
- style.setProperty('--width', this.width + 'px');
46
- if (!!this.height)
47
- style.setProperty('--height', this.height + 'px');
48
- }
49
- ngAfterViewInit() {
50
- setTimeout(() => {
51
- this.setGeometricRect();
52
- this.onPrintAreaRendered.emit(this.printArea);
53
- });
42
+ this.$container = viewChild('container');
43
+ this.$parent = viewChild('parent');
44
+ this.$printArea = viewChild('printArea');
45
+ this.$mouseDown = signal(false);
46
+ this.$startX = signal(undefined);
47
+ this.$scrollLeft = signal(undefined);
48
+ this.$startY = signal(undefined);
49
+ this.$scrollTop = signal(undefined);
50
+ this.$scale = signal(1);
51
+ this.cdr = inject(ChangeDetectorRef);
54
52
  }
55
53
  toggleExpand(e) {
56
54
  e.tree$Expanded = !!!e.tree$Expanded;
57
55
  }
58
56
  zoonIn() {
59
- this.scale = this.scale * 1.1;
60
- this.container.nativeElement.style.setProperty('--print-area-scale', this.scale);
57
+ this.$scale.set(this.$scale() * 1.1);
58
+ this.$container().nativeElement.style.setProperty('--print-area-scale', this.$scale());
61
59
  }
62
60
  zoonOut() {
63
- this.scale = this.scale / 1.1;
64
- this.container.nativeElement.style.setProperty('--print-area-scale', this.scale);
61
+ this.$scale.set(this.$scale() / 1.1);
62
+ this.$container().nativeElement.style.setProperty('--print-area-scale', this.$scale());
65
63
  }
66
64
  zoonFeat() {
67
- this.scale = 1;
68
- this.container.nativeElement.style.setProperty('--print-area-scale', this.scale);
65
+ this.$scale.set(1);
66
+ this.$container().nativeElement.style.setProperty('--print-area-scale', this.$scale());
67
+ }
68
+ ngAfterViewInit() {
69
+ setTimeout(() => {
70
+ var style = this.$container()?.nativeElement.style;
71
+ style.setProperty('--connection-color', this.$connectionColor());
72
+ style.setProperty('--connection-size', this.$connectionSize() + 'px');
73
+ style.setProperty('--from-children-to-top-line', this.$fromChildrenToTopLine() + 'px');
74
+ style.setProperty('--from-parent-to-children-top-line', this.$fromParentToChildrenTopLine() + 'px');
75
+ style.setProperty('--children-horizontal-margin', this.$childrenHorizontalMargin() + 'px');
76
+ style.setProperty('--children-border-size', this.$childrenBorderSize() + 'px');
77
+ style.setProperty('--children-border-color', this.$childrenBorderColor());
78
+ });
69
79
  }
70
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreOrgchartflexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreOrgchartflexComponent, isStandalone: true, selector: "core-orgchartflex", inputs: { data: "data", itemTemplate: "itemTemplate", compactMode: "compactMode", showDissolved: "showDissolved", width: "width", height: "height" }, outputs: { onPrintAreaRendered: "onPrintAreaRendered" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "parent", first: true, predicate: ["parent"], descendants: true }, { propertyName: "printArea", first: true, predicate: ["printArea"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-orgchartflex-container\" (mousedown)=\"startDragging($event, false)\"\r\n (mouseup)=\"stopDragging($event, false)\" (mouseleave)=\"stopDragging($event, false)\" (mousemove)=\"moveEvent($event)\">\r\n\r\n <div class=\"scroll-container\" #parent [ngStyle]=\"{ cursor: mouseDown ? 'all-scroll' : 'unset'}\">\r\n\r\n <div class=\"zoom-control p-absolute\">\r\n <div class=\"p-relative d-flex d-flex-start\">\r\n <i class=\"feather-minus-circle pointer\" (click)=\"zoonOut()\"></i>\r\n <i class=\"feather-plus-circle pointer\" (click)=\"zoonIn()\"></i>\r\n <i class=\"feather-monitor pointer\" (click)=\"zoonFeat()\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"print-area\" #printArea>\r\n\r\n <ul class=\"tree\" *ngFor=\"let root of data\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: root}\"></ng-container>\r\n </ul>\r\n\r\n </div>\r\n\r\n <ng-template #item let-context=\"context\" let-title=\"context.tree$Title\" let-expanded=\"context.tree$Expanded\"\r\n let-children=\"context.tree$Children\" let-tier=\"context.tree$Tier\" let-isActive=\"context.isActive\">\r\n <li *ngIf=\"(!showDissolved && !!isActive) || (!!showDissolved)\">\r\n <span *ngIf=\"!!compactMode\" (click)=\"toggleExpand(context)\" class=\"pointer\" [class.compact]=\"tier !== 1\">\r\n {{ title }}\r\n </span>\r\n\r\n <!-- When passing item template and compactMode=false-->\r\n <span *ngIf=\"!!!compactMode && !!itemTemplate\" (click)=\"toggleExpand(context)\" class=\"pointer\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: context } \"></ng-container>\r\n </span>\r\n <!-- ------------------------- -->\r\n\r\n <ul *ngIf=\"!!expanded && !!children.length \">\r\n <ng-container *ngFor=\"let child of children\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: child}\"></ng-container>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n</div>", styles: [".core-orgchartflex-container{--width: 100px;--height: 100px;--link-color: cadetblue;--print-area-scale: 1}@keyframes fadeIn{0%{transform:scale(0)}to{transform:scale(1)}}.core-orgchartflex-container *{animation:fadeIn .5s ease-in-out}.core-orgchartflex-container .scroll-container{display:block;width:var(--width);height:var(--height);overflow-x:auto}.core-orgchartflex-container .scroll-container .zoom-control{top:var(--size-layout-block-cell-spacing);right:var(--size-layout-block-cell-spacing);z-index:3}.core-orgchartflex-container .scroll-container .zoom-control i{font-size:16px;color:#848484}.core-orgchartflex-container .scroll-container .print-area{transform:scale(var(--print-area-scale));transition:.5s linear;width:6000px!important;height:3000px!important}.core-orgchartflex-container .scroll-container .tree,.core-orgchartflex-container .scroll-container .tree ul,.core-orgchartflex-container .scroll-container .tree li{list-style:none;margin:0;padding:0;position:relative}.core-orgchartflex-container .scroll-container .tree{margin:0 0 1em;text-align:center}.core-orgchartflex-container .scroll-container .tree,.core-orgchartflex-container .scroll-container .tree ul{display:table}.core-orgchartflex-container .scroll-container .tree ul{width:100%}.core-orgchartflex-container .scroll-container .tree li{display:table-cell;padding:.5em 0;vertical-align:top!important}.core-orgchartflex-container .scroll-container .tree li:before{outline:solid 1px #666;content:\"\";left:0;position:absolute;right:0;top:0}.core-orgchartflex-container .scroll-container .tree li:first-child:before{left:50%}.core-orgchartflex-container .scroll-container .tree li:last-child:before{right:50%}.core-orgchartflex-container .scroll-container .tree code,.core-orgchartflex-container .scroll-container .tree span{border:solid .1em lightgrey;display:inline-block;margin:0 .2em .5em;padding:.2em .5em;position:relative}.core-orgchartflex-container .scroll-container .tree span.compact{max-width:75px}.core-orgchartflex-container .scroll-container .tree ul:before,.core-orgchartflex-container .scroll-container .tree code:before,.core-orgchartflex-container .scroll-container .tree span:before{outline:solid 1px #666;content:\"\";height:.5em;left:50%;position:absolute}.core-orgchartflex-container .scroll-container .tree ul:before{top:-.5em}.core-orgchartflex-container .scroll-container .tree code:before,.core-orgchartflex-container .scroll-container .tree span:before{top:-.55em}.core-orgchartflex-container .scroll-container .tree>li{margin-top:0}.core-orgchartflex-container .scroll-container .tree>li:before,.core-orgchartflex-container .scroll-container .tree>li:after,.core-orgchartflex-container .scroll-container .tree>li>code:before,.core-orgchartflex-container .scroll-container .tree>li>span:before{outline:none}.core-orgchartflex-container .scroll-container a{text-decoration:unset;color:var(--link-color)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreOrgchartflexComponent, isStandalone: true, selector: "core-orgchartflex", inputs: { $data: { classPropertyName: "$data", publicName: "$data", isSignal: true, isRequired: true, transformFunction: null }, $itemTemplate: { classPropertyName: "$itemTemplate", publicName: "$itemTemplate", isSignal: true, isRequired: true, transformFunction: null }, $compactMode: { classPropertyName: "$compactMode", publicName: "$compactMode", isSignal: true, isRequired: false, transformFunction: null }, $showDissolved: { classPropertyName: "$showDissolved", publicName: "$showDissolved", isSignal: true, isRequired: false, transformFunction: null }, $width: { classPropertyName: "$width", publicName: "$width", isSignal: true, isRequired: false, transformFunction: null }, $height: { classPropertyName: "$height", publicName: "$height", isSignal: true, isRequired: false, transformFunction: null }, $connectionColor: { classPropertyName: "$connectionColor", publicName: "$connectionColor", isSignal: true, isRequired: false, transformFunction: null }, $connectionSize: { classPropertyName: "$connectionSize", publicName: "$connectionSize", isSignal: true, isRequired: false, transformFunction: null }, $fromChildrenToTopLine: { classPropertyName: "$fromChildrenToTopLine", publicName: "$fromChildrenToTopLine", isSignal: true, isRequired: false, transformFunction: null }, $fromParentToChildrenTopLine: { classPropertyName: "$fromParentToChildrenTopLine", publicName: "$fromParentToChildrenTopLine", isSignal: true, isRequired: false, transformFunction: null }, $childrenHorizontalMargin: { classPropertyName: "$childrenHorizontalMargin", publicName: "$childrenHorizontalMargin", isSignal: true, isRequired: false, transformFunction: null }, $childrenBorderSize: { classPropertyName: "$childrenBorderSize", publicName: "$childrenBorderSize", isSignal: true, isRequired: false, transformFunction: null }, $childrenBorderColor: { classPropertyName: "$childrenBorderColor", publicName: "$childrenBorderColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPrintAreaRendered: "onPrintAreaRendered" }, viewQueries: [{ propertyName: "$container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "$parent", first: true, predicate: ["parent"], descendants: true, isSignal: true }, { propertyName: "$printArea", first: true, predicate: ["printArea"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container class=\"core-orgchartflex-container\" (mousedown)=\"startDragging($event, false)\"\r\n (mouseup)=\"stopDragging($event, false)\" (mouseleave)=\"stopDragging($event, false)\" (mousemove)=\"moveEvent($event)\">\r\n\r\n <div class=\"scroll-container\" #parent [ngStyle]=\"{ cursor: $mouseDown() ? 'all-scroll' : 'unset', width: $width() + 'px', height: $height() + 'px' }\">\r\n\r\n <div class=\"zoom-control p-absolute\">\r\n <div class=\"p-relative d-flex d-flex-start\">\r\n <i class=\"feather-minus-circle pointer\" (click)=\"zoonOut()\"></i>\r\n <i class=\"feather-plus-circle pointer\" (click)=\"zoonIn()\"></i>\r\n <i class=\"feather-monitor pointer\" (click)=\"zoonFeat()\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"print-area\" #printArea>\r\n\r\n @for (root of $data(); track $index) {\r\n <ul class=\"tree\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: root}\"></ng-container>\r\n </ul>\r\n }\r\n\r\n </div>\r\n\r\n <ng-template #item let-context=\"context\" let-title=\"context.tree$Title\" let-expanded=\"context.tree$Expanded\"\r\n let-children=\"context.tree$Children\" let-tier=\"context.tree$Tier\" let-isActive=\"context.isActive\">\r\n @if ((!$showDissolved() && !!isActive) || (!!$showDissolved())) {\r\n <li>\r\n @if ($compactMode()) {\r\n <span (click)=\"toggleExpand(context)\" class=\"pointer\" [class.compact]=\"tier !== 1\" [class.expanded]=\"expanded\">\r\n {{ title }}\r\n </span>\r\n }\r\n \r\n <!-- When passing item template and compactMode=false-->\r\n @if (!$compactMode() && !!$itemTemplate()) {\r\n <span (click)=\"toggleExpand(context)\" class=\"pointer\" [class.expanded]=\"expanded\">\r\n <ng-container *ngTemplateOutlet=\"$itemTemplate(); context: { item: context } \"></ng-container>\r\n </span>\r\n }\r\n <!-- ------------------------- -->\r\n \r\n @if (!!expanded && !!children.length) {\r\n <ul>\r\n @for (child of children; track $index) {\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: child}\"></ng-container>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n </div>\r\n\r\n</div>", styles: [".core-orgchartflex-container{--width: 100px;--height: 100px;--link-color: cadetblue;--print-area-scale: 1;--connection-color: gray;--connection-size: 1px;--from-children-to-top-line: 100px;--from-parent-to-children-top-line: 100px;--children-horizontal-margin: 5px;--children-border-size: 1px;--children-border-color: gray}@keyframes fadeIn{0%{transform:scale(0)}to{transform:scale(1)}}.core-orgchartflex-container *{animation:fadeIn .5s ease-in-out}.core-orgchartflex-container .scroll-container{display:block;width:var(--width);height:var(--height);overflow-x:auto}.core-orgchartflex-container .scroll-container .zoom-control{top:var(--size-layout-block-cell-spacing);right:var(--size-layout-block-cell-spacing);z-index:3}.core-orgchartflex-container .scroll-container .zoom-control i{font-size:16px;color:#848484}.core-orgchartflex-container .scroll-container .print-area{transform:scale(var(--print-area-scale));transition:.5s linear;width:6000px!important;height:3000px!important}.core-orgchartflex-container .scroll-container .tree *{box-sizing:border-box}.core-orgchartflex-container .scroll-container .tree,.core-orgchartflex-container .scroll-container .tree ul,.core-orgchartflex-container .scroll-container .tree li{list-style:none;margin:0;padding:0;position:relative}.core-orgchartflex-container .scroll-container .tree{margin:0 0 1em;text-align:center}.core-orgchartflex-container .scroll-container .tree,.core-orgchartflex-container .scroll-container .tree ul{display:table}.core-orgchartflex-container .scroll-container .tree ul{width:100%}.core-orgchartflex-container .scroll-container .tree li{display:table-cell;padding:var(--from-children-to-top-line) 0;vertical-align:top!important}.core-orgchartflex-container .scroll-container .tree li:before{outline:solid calc(var(--connection-size) / 2) var(--connection-color);content:\"\";left:0;position:absolute;right:0;top:0}.core-orgchartflex-container .scroll-container .tree li:first-child:before{left:50%}.core-orgchartflex-container .scroll-container .tree li:last-child:before{right:50%}.core-orgchartflex-container .scroll-container .tree code,.core-orgchartflex-container .scroll-container .tree span{border:solid var(--children-border-size) var(--children-border-color);display:inline-block;margin:0 var(--children-horizontal-margin) var(--from-parent-to-children-top-line);position:relative}.core-orgchartflex-container .scroll-container .tree span.compact{max-width:75px}.core-orgchartflex-container .scroll-container .tree ul:before,.core-orgchartflex-container .scroll-container .tree code:before,.core-orgchartflex-container .scroll-container .tree span:before{outline:solid calc(var(--connection-size) / 2) var(--connection-color);content:\"\";height:calc(var(--from-children-to-top-line) - var(--connection-size));left:50%;position:absolute}.core-orgchartflex-container .scroll-container .tree ul:before{top:calc(var(--from-parent-to-children-top-line) * -1 + var(--connection-size) / 2);height:calc(var(--from-parent-to-children-top-line) - var(--connection-size) * 1.5 + 1px)}.core-orgchartflex-container .scroll-container .tree code:before,.core-orgchartflex-container .scroll-container .tree span:before{top:calc(var(--from-children-to-top-line) * -1 + var(--connection-size) / 2 - var(--children-border-size))}.core-orgchartflex-container .scroll-container .tree>li{margin-top:0}.core-orgchartflex-container .scroll-container .tree>li:before,.core-orgchartflex-container .scroll-container .tree>li:after,.core-orgchartflex-container .scroll-container .tree>li>code:before,.core-orgchartflex-container .scroll-container .tree>li>span:before{outline:none}.core-orgchartflex-container .scroll-container a{text-decoration:unset;color:var(--link-color)!important}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
72
82
  }
73
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreOrgchartflexComponent, decorators: [{
74
84
  type: Component,
75
- args: [{ selector: 'core-orgchartflex', standalone: true, imports: [
76
- CommonModule
77
- ], template: "<div #container class=\"core-orgchartflex-container\" (mousedown)=\"startDragging($event, false)\"\r\n (mouseup)=\"stopDragging($event, false)\" (mouseleave)=\"stopDragging($event, false)\" (mousemove)=\"moveEvent($event)\">\r\n\r\n <div class=\"scroll-container\" #parent [ngStyle]=\"{ cursor: mouseDown ? 'all-scroll' : 'unset'}\">\r\n\r\n <div class=\"zoom-control p-absolute\">\r\n <div class=\"p-relative d-flex d-flex-start\">\r\n <i class=\"feather-minus-circle pointer\" (click)=\"zoonOut()\"></i>\r\n <i class=\"feather-plus-circle pointer\" (click)=\"zoonIn()\"></i>\r\n <i class=\"feather-monitor pointer\" (click)=\"zoonFeat()\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"print-area\" #printArea>\r\n\r\n <ul class=\"tree\" *ngFor=\"let root of data\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: root}\"></ng-container>\r\n </ul>\r\n\r\n </div>\r\n\r\n <ng-template #item let-context=\"context\" let-title=\"context.tree$Title\" let-expanded=\"context.tree$Expanded\"\r\n let-children=\"context.tree$Children\" let-tier=\"context.tree$Tier\" let-isActive=\"context.isActive\">\r\n <li *ngIf=\"(!showDissolved && !!isActive) || (!!showDissolved)\">\r\n <span *ngIf=\"!!compactMode\" (click)=\"toggleExpand(context)\" class=\"pointer\" [class.compact]=\"tier !== 1\">\r\n {{ title }}\r\n </span>\r\n\r\n <!-- When passing item template and compactMode=false-->\r\n <span *ngIf=\"!!!compactMode && !!itemTemplate\" (click)=\"toggleExpand(context)\" class=\"pointer\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: context } \"></ng-container>\r\n </span>\r\n <!-- ------------------------- -->\r\n\r\n <ul *ngIf=\"!!expanded && !!children.length \">\r\n <ng-container *ngFor=\"let child of children\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: child}\"></ng-container>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n</div>", styles: [".core-orgchartflex-container{--width: 100px;--height: 100px;--link-color: cadetblue;--print-area-scale: 1}@keyframes fadeIn{0%{transform:scale(0)}to{transform:scale(1)}}.core-orgchartflex-container *{animation:fadeIn .5s ease-in-out}.core-orgchartflex-container .scroll-container{display:block;width:var(--width);height:var(--height);overflow-x:auto}.core-orgchartflex-container .scroll-container .zoom-control{top:var(--size-layout-block-cell-spacing);right:var(--size-layout-block-cell-spacing);z-index:3}.core-orgchartflex-container .scroll-container .zoom-control i{font-size:16px;color:#848484}.core-orgchartflex-container .scroll-container .print-area{transform:scale(var(--print-area-scale));transition:.5s linear;width:6000px!important;height:3000px!important}.core-orgchartflex-container .scroll-container .tree,.core-orgchartflex-container .scroll-container .tree ul,.core-orgchartflex-container .scroll-container .tree li{list-style:none;margin:0;padding:0;position:relative}.core-orgchartflex-container .scroll-container .tree{margin:0 0 1em;text-align:center}.core-orgchartflex-container .scroll-container .tree,.core-orgchartflex-container .scroll-container .tree ul{display:table}.core-orgchartflex-container .scroll-container .tree ul{width:100%}.core-orgchartflex-container .scroll-container .tree li{display:table-cell;padding:.5em 0;vertical-align:top!important}.core-orgchartflex-container .scroll-container .tree li:before{outline:solid 1px #666;content:\"\";left:0;position:absolute;right:0;top:0}.core-orgchartflex-container .scroll-container .tree li:first-child:before{left:50%}.core-orgchartflex-container .scroll-container .tree li:last-child:before{right:50%}.core-orgchartflex-container .scroll-container .tree code,.core-orgchartflex-container .scroll-container .tree span{border:solid .1em lightgrey;display:inline-block;margin:0 .2em .5em;padding:.2em .5em;position:relative}.core-orgchartflex-container .scroll-container .tree span.compact{max-width:75px}.core-orgchartflex-container .scroll-container .tree ul:before,.core-orgchartflex-container .scroll-container .tree code:before,.core-orgchartflex-container .scroll-container .tree span:before{outline:solid 1px #666;content:\"\";height:.5em;left:50%;position:absolute}.core-orgchartflex-container .scroll-container .tree ul:before{top:-.5em}.core-orgchartflex-container .scroll-container .tree code:before,.core-orgchartflex-container .scroll-container .tree span:before{top:-.55em}.core-orgchartflex-container .scroll-container .tree>li{margin-top:0}.core-orgchartflex-container .scroll-container .tree>li:before,.core-orgchartflex-container .scroll-container .tree>li:after,.core-orgchartflex-container .scroll-container .tree>li>code:before,.core-orgchartflex-container .scroll-container .tree>li>span:before{outline:none}.core-orgchartflex-container .scroll-container a{text-decoration:unset;color:var(--link-color)!important}\n"] }]
78
- }], ctorParameters: () => [], propDecorators: { data: [{
79
- type: Input
80
- }], itemTemplate: [{
81
- type: Input
82
- }], compactMode: [{
83
- type: Input
84
- }], showDissolved: [{
85
- type: Input
86
- }], width: [{
87
- type: Input
88
- }], height: [{
89
- type: Input
90
- }], onPrintAreaRendered: [{
85
+ args: [{ selector: 'core-orgchartflex', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
86
+ NgStyle,
87
+ NgTemplateOutlet,
88
+ ], template: "<div #container class=\"core-orgchartflex-container\" (mousedown)=\"startDragging($event, false)\"\r\n (mouseup)=\"stopDragging($event, false)\" (mouseleave)=\"stopDragging($event, false)\" (mousemove)=\"moveEvent($event)\">\r\n\r\n <div class=\"scroll-container\" #parent [ngStyle]=\"{ cursor: $mouseDown() ? 'all-scroll' : 'unset', width: $width() + 'px', height: $height() + 'px' }\">\r\n\r\n <div class=\"zoom-control p-absolute\">\r\n <div class=\"p-relative d-flex d-flex-start\">\r\n <i class=\"feather-minus-circle pointer\" (click)=\"zoonOut()\"></i>\r\n <i class=\"feather-plus-circle pointer\" (click)=\"zoonIn()\"></i>\r\n <i class=\"feather-monitor pointer\" (click)=\"zoonFeat()\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"print-area\" #printArea>\r\n\r\n @for (root of $data(); track $index) {\r\n <ul class=\"tree\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: root}\"></ng-container>\r\n </ul>\r\n }\r\n\r\n </div>\r\n\r\n <ng-template #item let-context=\"context\" let-title=\"context.tree$Title\" let-expanded=\"context.tree$Expanded\"\r\n let-children=\"context.tree$Children\" let-tier=\"context.tree$Tier\" let-isActive=\"context.isActive\">\r\n @if ((!$showDissolved() && !!isActive) || (!!$showDissolved())) {\r\n <li>\r\n @if ($compactMode()) {\r\n <span (click)=\"toggleExpand(context)\" class=\"pointer\" [class.compact]=\"tier !== 1\" [class.expanded]=\"expanded\">\r\n {{ title }}\r\n </span>\r\n }\r\n \r\n <!-- When passing item template and compactMode=false-->\r\n @if (!$compactMode() && !!$itemTemplate()) {\r\n <span (click)=\"toggleExpand(context)\" class=\"pointer\" [class.expanded]=\"expanded\">\r\n <ng-container *ngTemplateOutlet=\"$itemTemplate(); context: { item: context } \"></ng-container>\r\n </span>\r\n }\r\n <!-- ------------------------- -->\r\n \r\n @if (!!expanded && !!children.length) {\r\n <ul>\r\n @for (child of children; track $index) {\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: child}\"></ng-container>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n </div>\r\n\r\n</div>", styles: [".core-orgchartflex-container{--width: 100px;--height: 100px;--link-color: cadetblue;--print-area-scale: 1;--connection-color: gray;--connection-size: 1px;--from-children-to-top-line: 100px;--from-parent-to-children-top-line: 100px;--children-horizontal-margin: 5px;--children-border-size: 1px;--children-border-color: gray}@keyframes fadeIn{0%{transform:scale(0)}to{transform:scale(1)}}.core-orgchartflex-container *{animation:fadeIn .5s ease-in-out}.core-orgchartflex-container .scroll-container{display:block;width:var(--width);height:var(--height);overflow-x:auto}.core-orgchartflex-container .scroll-container .zoom-control{top:var(--size-layout-block-cell-spacing);right:var(--size-layout-block-cell-spacing);z-index:3}.core-orgchartflex-container .scroll-container .zoom-control i{font-size:16px;color:#848484}.core-orgchartflex-container .scroll-container .print-area{transform:scale(var(--print-area-scale));transition:.5s linear;width:6000px!important;height:3000px!important}.core-orgchartflex-container .scroll-container .tree *{box-sizing:border-box}.core-orgchartflex-container .scroll-container .tree,.core-orgchartflex-container .scroll-container .tree ul,.core-orgchartflex-container .scroll-container .tree li{list-style:none;margin:0;padding:0;position:relative}.core-orgchartflex-container .scroll-container .tree{margin:0 0 1em;text-align:center}.core-orgchartflex-container .scroll-container .tree,.core-orgchartflex-container .scroll-container .tree ul{display:table}.core-orgchartflex-container .scroll-container .tree ul{width:100%}.core-orgchartflex-container .scroll-container .tree li{display:table-cell;padding:var(--from-children-to-top-line) 0;vertical-align:top!important}.core-orgchartflex-container .scroll-container .tree li:before{outline:solid calc(var(--connection-size) / 2) var(--connection-color);content:\"\";left:0;position:absolute;right:0;top:0}.core-orgchartflex-container .scroll-container .tree li:first-child:before{left:50%}.core-orgchartflex-container .scroll-container .tree li:last-child:before{right:50%}.core-orgchartflex-container .scroll-container .tree code,.core-orgchartflex-container .scroll-container .tree span{border:solid var(--children-border-size) var(--children-border-color);display:inline-block;margin:0 var(--children-horizontal-margin) var(--from-parent-to-children-top-line);position:relative}.core-orgchartflex-container .scroll-container .tree span.compact{max-width:75px}.core-orgchartflex-container .scroll-container .tree ul:before,.core-orgchartflex-container .scroll-container .tree code:before,.core-orgchartflex-container .scroll-container .tree span:before{outline:solid calc(var(--connection-size) / 2) var(--connection-color);content:\"\";height:calc(var(--from-children-to-top-line) - var(--connection-size));left:50%;position:absolute}.core-orgchartflex-container .scroll-container .tree ul:before{top:calc(var(--from-parent-to-children-top-line) * -1 + var(--connection-size) / 2);height:calc(var(--from-parent-to-children-top-line) - var(--connection-size) * 1.5 + 1px)}.core-orgchartflex-container .scroll-container .tree code:before,.core-orgchartflex-container .scroll-container .tree span:before{top:calc(var(--from-children-to-top-line) * -1 + var(--connection-size) / 2 - var(--children-border-size))}.core-orgchartflex-container .scroll-container .tree>li{margin-top:0}.core-orgchartflex-container .scroll-container .tree>li:before,.core-orgchartflex-container .scroll-container .tree>li:after,.core-orgchartflex-container .scroll-container .tree>li>code:before,.core-orgchartflex-container .scroll-container .tree>li>span:before{outline:none}.core-orgchartflex-container .scroll-container a{text-decoration:unset;color:var(--link-color)!important}\n"] }]
89
+ }], ctorParameters: () => [], propDecorators: { onPrintAreaRendered: [{
91
90
  type: Output
92
- }], container: [{
93
- type: ViewChild,
94
- args: ['container']
95
- }], parent: [{
96
- type: ViewChild,
97
- args: ['parent']
98
- }], printArea: [{
99
- type: ViewChild,
100
- args: ['printArea']
101
91
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmdjaGFydGZsZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnY2hhcnRmbGV4L2NvcmUtb3JnY2hhcnRmbGV4L2NvcmUtb3JnY2hhcnRmbGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW9yZ2NoYXJ0ZmxleC9jb3JlLW9yZ2NoYXJ0ZmxleC9jb3JlLW9yZ2NoYXJ0ZmxleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUE4QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVc1SixNQUFNLE9BQU8seUJBQXlCO0lBc0JwQyxhQUFhLENBQUMsQ0FBTSxFQUFFLElBQVM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENB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QUE7SUFDbEYsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xGLENBQUM7OEdBMUZVLHlCQUF5QjtrR0FBekIseUJBQXlCLHFrQkNadEMsMHlFQTRDTSxpNkZEckNGLFlBQVk7OzJGQUtILHlCQUF5QjtrQkFUckMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7cUJBQ2I7d0RBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0QsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNLLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLW9yZ2NoYXJ0ZmxleCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLW9yZ2NoYXJ0ZmxleC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1vcmdjaGFydGZsZXguY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZU9yZ2NoYXJ0ZmxleENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgZGF0YSE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGl0ZW1UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgY29tcGFjdE1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dEaXNzb2x2ZWQhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHdpZHRoITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgb25QcmludEFyZWFSZW5kZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFyZW50JykgcGFyZW50ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdwcmludEFyZWEnKSBwcmludEFyZWEhOiBFbGVtZW50UmVmO1xyXG5cclxuICBtb3VzZURvd24gPSBmYWxzZTtcclxuICBzdGFydFg6IGFueTtcclxuICBzY3JvbGxMZWZ0OiBhbnk7XHJcbiAgc3RhcnRZOiBhbnk7XHJcbiAgc2Nyb2xsVG9wOiBhbnk7XHJcblxyXG4gIHNjYWxlOiBudW1iZXIgPSAxO1xyXG5cclxuICBzdGFydERyYWdnaW5nKGU6IGFueSwgZmxhZzogYW55KSB7XHJcbiAgICB0aGlzLm1vdXNlRG93biA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXJ0WCA9IGUucGFnZVggLSB0aGlzLnBhcmVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgdGhpcy5zY3JvbGxMZWZ0ID0gdGhpcy5wYXJlbnQ/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcclxuICAgIHRoaXMuc3RhcnRZID0gZS5wYWdlWSAtIHRoaXMucGFyZW50Py5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgIHRoaXMuc2Nyb2xsVG9wID0gdGhpcy5wYXJlbnQ/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgZmxhZzogYW55KSB7XHJcbiAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbW92ZUV2ZW50KGU6IGFueSkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKCF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB4ID0gZS5wYWdlWCAtIHRoaXMucGFyZW50Py5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICBjb25zdCBzY3JvbGxYID0geCAtIHRoaXMuc3RhcnRYO1xyXG4gICAgdGhpcy5wYXJlbnQhLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuc2Nyb2xsTGVmdCAtIHNjcm9sbFg7XHJcbiAgICBjb25zdCB5ID0gZS5wYWdlWSAtIHRoaXMucGFyZW50Py5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgIGNvbnN0IHNjcm9sbFkgPSB5IC0gdGhpcy5zdGFydFk7XHJcbiAgICB0aGlzLnBhcmVudCEubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnNjcm9sbFRvcCAtIHNjcm9sbFk7XHJcblxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3dpZHRoJ10gfHwgY2hhbmdlc1snaGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5zZXRHZW9tZXRyaWNSZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHNldEdlb21ldHJpY1JlY3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnN0eWxlO1xyXG4gICAgaWYgKCEhIXN0eWxlKSByZXR1cm47XHJcbiAgICBpZiAoISF0aGlzLndpZHRoKSBzdHlsZS5zZXRQcm9wZXJ0eSgnLS13aWR0aCcsIHRoaXMud2lkdGggKyAncHgnKVxyXG4gICAgaWYgKCEhdGhpcy5oZWlnaHQpIHN0eWxlLnNldFByb3BlcnR5KCctLWhlaWdodCcsIHRoaXMuaGVpZ2h0ICsgJ3B4JylcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldEdlb21ldHJpY1JlY3QoKTtcclxuICAgICAgdGhpcy5vblByaW50QXJlYVJlbmRlcmVkLmVtaXQodGhpcy5wcmludEFyZWEpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRXhwYW5kKGU6IGFueSk6IHZvaWQge1xyXG4gICAgZS50cmVlJEV4cGFuZGVkID0gISEhZS50cmVlJEV4cGFuZGVkXHJcbiAgfVxyXG5cclxuICB6b29uSW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjYWxlID0gdGhpcy5zY2FsZSAqIDEuMTtcclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcHJpbnQtYXJlYS1zY2FsZScsIHRoaXMuc2NhbGUpXHJcbiAgfVxyXG5cclxuICB6b29uT3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY2FsZSA9IHRoaXMuc2NhbGUgLyAxLjE7XHJcbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXByaW50LWFyZWEtc2NhbGUnLCB0aGlzLnNjYWxlKVxyXG4gIH1cclxuXHJcbiAgem9vbkZlYXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjYWxlID0gMTtcclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcHJpbnQtYXJlYS1zY2FsZScsIHRoaXMuc2NhbGUpXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLW9yZ2NoYXJ0ZmxleC1jb250YWluZXJcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZ2dpbmcoJGV2ZW50LCBmYWxzZSlcIlxyXG4gICAgKG1vdXNldXApPVwic3RvcERyYWdnaW5nKCRldmVudCwgZmFsc2UpXCIgKG1vdXNlbGVhdmUpPVwic3RvcERyYWdnaW5nKCRldmVudCwgZmFsc2UpXCIgKG1vdXNlbW92ZSk9XCJtb3ZlRXZlbnQoJGV2ZW50KVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCIgI3BhcmVudCBbbmdTdHlsZV09XCJ7IGN1cnNvcjogbW91c2VEb3duID8gJ2FsbC1zY3JvbGwnIDogJ3Vuc2V0J31cIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInpvb20tY29udHJvbCBwLWFic29sdXRlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXJlbGF0aXZlIGQtZmxleCBkLWZsZXgtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1taW51cy1jaXJjbGUgcG9pbnRlclwiIChjbGljayk9XCJ6b29uT3V0KClcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItcGx1cy1jaXJjbGUgcG9pbnRlclwiIChjbGljayk9XCJ6b29uSW4oKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1tb25pdG9yIHBvaW50ZXJcIiAoY2xpY2spPVwiem9vbkZlYXQoKVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmludC1hcmVhXCIgI3ByaW50QXJlYT5cclxuXHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInRyZWVcIiAqbmdGb3I9XCJsZXQgcm9vdCBvZiBkYXRhXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbTsgY29udGV4dDogeyBjb250ZXh0OiByb290fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtIGxldC1jb250ZXh0PVwiY29udGV4dFwiIGxldC10aXRsZT1cImNvbnRleHQudHJlZSRUaXRsZVwiIGxldC1leHBhbmRlZD1cImNvbnRleHQudHJlZSRFeHBhbmRlZFwiXHJcbiAgICAgICAgICAgIGxldC1jaGlsZHJlbj1cImNvbnRleHQudHJlZSRDaGlsZHJlblwiIGxldC10aWVyPVwiY29udGV4dC50cmVlJFRpZXJcIiBsZXQtaXNBY3RpdmU9XCJjb250ZXh0LmlzQWN0aXZlXCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cIighc2hvd0Rpc3NvbHZlZCAmJiAhIWlzQWN0aXZlKSB8fCAoISFzaG93RGlzc29sdmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhIWNvbXBhY3RNb2RlXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChjb250ZXh0KVwiIGNsYXNzPVwicG9pbnRlclwiIFtjbGFzcy5jb21wYWN0XT1cInRpZXIgIT09IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyB0aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gV2hlbiBwYXNzaW5nIGl0ZW0gdGVtcGxhdGUgYW5kIGNvbXBhY3RNb2RlPWZhbHNlLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiEhIWNvbXBhY3RNb2RlICYmICEhaXRlbVRlbXBsYXRlXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChjb250ZXh0KVwiIGNsYXNzPVwicG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgaXRlbTogY29udGV4dCB9IFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8dWwgKm5nSWY9XCIhIWV4cGFuZGVkICYmICEhY2hpbGRyZW4ubGVuZ3RoIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtOyBjb250ZXh0OiB7IGNvbnRleHQ6IGNoaWxkfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmdjaGFydGZsZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnY2hhcnRmbGV4L2NvcmUtb3JnY2hhcnRmbGV4L2NvcmUtb3JnY2hhcnRmbGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW9yZ2NoYXJ0ZmxleC9jb3JlLW9yZ2NoYXJ0ZmxleC9jb3JlLW9yZ2NoYXJ0ZmxleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDOztBQWF0TSxNQUFNLE9BQU8seUJBQXlCO0lBaUNwQyxhQUFhLENBQUMsQ0FBTSxFQUFFLElBQVM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFH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QUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDckUsS0FBSyxDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtZQUN0RixLQUFLLENBQUMsV0FBVyxDQUFDLG9DQUFvQyxFQUFFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO1lBQ25HLEtBQUssQ0FBQyxXQUFXLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDMUYsS0FBSyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtZQUM5RSxLQUFLLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUE7UUFDM0UsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQTNGVSx5QkFBeUI7a0dBQXpCLHlCQUF5QiwwNEVDZHRDLG11RkFzRE0sMnRIRDlDRixPQUFPLDJFQUNQLGdCQUFnQjs7MkZBS1AseUJBQXlCO2tCQVhyQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7cUJBQ2pCO3dEQXFCUyxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtb3JnY2hhcnRmbGV4JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nU3R5bGUsXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtb3JnY2hhcnRmbGV4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW9yZ2NoYXJ0ZmxleC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlT3JnY2hhcnRmbGV4Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICRkYXRhID0gaW5wdXQucmVxdWlyZWQ8YW55W10+KCk7XHJcbiAgJGl0ZW1UZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPFRlbXBsYXRlUmVmPGFueT4+KCk7XHJcbiAgJGNvbXBhY3RNb2RlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcclxuICAkc2hvd0Rpc3NvbHZlZCA9IGlucHV0PGJvb2xlYW4+KCk7XHJcbiAgJHdpZHRoID0gaW5wdXQ8bnVtYmVyPigpO1xyXG4gICRoZWlnaHQgPSBpbnB1dDxudW1iZXI+KCk7XHJcblxyXG4gICRjb25uZWN0aW9uQ29sb3IgPSBpbnB1dDxzdHJpbmc+KCk7XHJcbiAgJGNvbm5lY3Rpb25TaXplID0gaW5wdXQ8bnVtYmVyPigpOyAvLyBpbiBwaXhlbFxyXG4gICRmcm9tQ2hpbGRyZW5Ub1RvcExpbmUgPSBpbnB1dDxudW1iZXI+KCk7IC8vIGluIHBpeGVsXHJcbiAgJGZyb21QYXJlbnRUb0NoaWxkcmVuVG9wTGluZSA9IGlucHV0PG51bWJlcj4oKTsgLy8gaW4gcGl4ZWxcclxuICAkY2hpbGRyZW5Ib3Jpem9udGFsTWFyZ2luID0gaW5wdXQ8bnVtYmVyPigpOyAvLyBpbiBwaXhlbFxyXG4gICRjaGlsZHJlbkJvcmRlclNpemUgPSBpbnB1dDxudW1iZXI+KCk7IC8vIGluIHBpeGVsXHJcbiAgJGNoaWxkcmVuQm9yZGVyQ29sb3IgPSBpbnB1dDxzdHJpbmc+KCk7IC8vIGluIHBpeGVsXHJcblxyXG4gIEBPdXRwdXQoKSBvblByaW50QXJlYVJlbmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcigpOyBcclxuXHJcbiAgJGNvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignY29udGFpbmVyJyk7XHJcbiAgJHBhcmVudCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigncGFyZW50Jyk7XHJcbiAgJHByaW50QXJlYSA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigncHJpbnRBcmVhJyk7XHJcblxyXG4gICRtb3VzZURvd24gPSBzaWduYWwoZmFsc2UpO1xyXG4gICRzdGFydFg6IFdyaXRhYmxlU2lnbmFsPGFueT4gPSBzaWduYWwodW5kZWZpbmVkKTtcclxuICAkc2Nyb2xsTGVmdDogV3JpdGFibGVTaWduYWw8YW55PiA9IHNpZ25hbCh1bmRlZmluZWQpO1xyXG4gICRzdGFydFk6IFdyaXRhYmxlU2lnbmFsPGFueT4gPSBzaWduYWwodW5kZWZpbmVkKTtcclxuICAkc2Nyb2xsVG9wOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsKHVuZGVmaW5lZCk7XHJcblxyXG4gICRzY2FsZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgxKTtcclxuXHJcbiAgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgc3RhcnREcmFnZ2luZyhlOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdGhpcy4kbW91c2VEb3duLnNldCh0cnVlKTtcclxuICAgIHRoaXMuJHN0YXJ0WC5zZXQoZS5wYWdlWCAtIHRoaXMuJHBhcmVudCgpPy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQpO1xyXG4gICAgdGhpcy4kc2Nyb2xsTGVmdC5zZXQodGhpcy4kcGFyZW50KCk/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCk7XHJcbiAgICB0aGlzLiRzdGFydFkuc2V0KGUucGFnZVkgLSB0aGlzLiRwYXJlbnQoKT8ubmF0aXZlRWxlbWVudC5vZmZzZXRUb3ApO1xyXG4gICAgdGhpcy4kc2Nyb2xsVG9wLnNldCh0aGlzLiRwYXJlbnQoKT8ubmF0aXZlRWxlbWVudC5zY3JvbGxUb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgZmxhZzogYW55KSB7XHJcbiAgICB0aGlzLiRtb3VzZURvd24uc2V0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG1vdmVFdmVudChlOiBhbnkpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICghdGhpcy4kbW91c2VEb3duKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeCA9IGUucGFnZVggLSB0aGlzLiRwYXJlbnQoKT8ubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgY29uc3Qgc2Nyb2xsWCA9IHggLSB0aGlzLiRzdGFydFgoKTtcclxuICAgIHRoaXMuJHBhcmVudCgpIS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLiRzY3JvbGxMZWZ0KCkgLSBzY3JvbGxYO1xyXG4gICAgY29uc3QgeSA9IGUucGFnZVkgLSB0aGlzLiRwYXJlbnQoKT8ubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICBjb25zdCBzY3JvbGxZID0geSAtIHRoaXMuJHN0YXJ0WSgpO1xyXG4gICAgdGhpcy4kcGFyZW50KCkhLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy4kc2Nyb2xsVG9wKCkgLSBzY3JvbGxZO1xyXG5cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHRvZ2dsZUV4cGFuZChlOiBhbnkpOiB2b2lkIHtcclxuICAgIGUudHJlZSRFeHBhbmRlZCA9ICEhIWUudHJlZSRFeHBhbmRlZFxyXG4gIH1cclxuXHJcbiAgem9vbkluKCk6IHZvaWQge1xyXG4gICAgdGhpcy4kc2NhbGUuc2V0KHRoaXMuJHNjYWxlKCkgKiAxLjEpO1xyXG4gICAgdGhpcy4kY29udGFpbmVyKCkhLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcHJpbnQtYXJlYS1zY2FsZScsIHRoaXMuJHNjYWxlKCkpXHJcbiAgfVxyXG5cclxuICB6b29uT3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy4kc2NhbGUuc2V0KHRoaXMuJHNjYWxlKCkgLyAxLjEpO1xyXG4gICAgdGhpcy4kY29udGFpbmVyKCkhLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcHJpbnQtYXJlYS1zY2FsZScsIHRoaXMuJHNjYWxlKCkpXHJcbiAgfVxyXG5cclxuICB6b29uRmVhdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuJHNjYWxlLnNldCgxKTtcclxuICAgIHRoaXMuJGNvbnRhaW5lcigpIS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXByaW50LWFyZWEtc2NhbGUnLCB0aGlzLiRzY2FsZSgpKVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHZhciBzdHlsZSA9IHRoaXMuJGNvbnRhaW5lcigpPy5uYXRpdmVFbGVtZW50LnN0eWxlO1xyXG4gICAgICBzdHlsZS5zZXRQcm9wZXJ0eSgnLS1jb25uZWN0aW9uLWNvbG9yJywgdGhpcy4kY29ubmVjdGlvbkNvbG9yKCkpXHJcbiAgICAgIHN0eWxlLnNldFByb3BlcnR5KCctLWNvbm5lY3Rpb24tc2l6ZScsIHRoaXMuJGNvbm5lY3Rpb25TaXplKCkgKyAncHgnKVxyXG4gICAgICBzdHlsZS5zZXRQcm9wZXJ0eSgnLS1mcm9tLWNoaWxkcmVuLXRvLXRvcC1saW5lJywgdGhpcy4kZnJvbUNoaWxkcmVuVG9Ub3BMaW5lKCkgKyAncHgnKVxyXG4gICAgICBzdHlsZS5zZXRQcm9wZXJ0eSgnLS1mcm9tLXBhcmVudC10by1jaGlsZHJlbi10b3AtbGluZScsIHRoaXMuJGZyb21QYXJlbnRUb0NoaWxkcmVuVG9wTGluZSgpICsgJ3B4JylcclxuICAgICAgc3R5bGUuc2V0UHJvcGVydHkoJy0tY2hpbGRyZW4taG9yaXpvbnRhbC1tYXJnaW4nLCB0aGlzLiRjaGlsZHJlbkhvcml6b250YWxNYXJnaW4oKSArICdweCcpXHJcbiAgICAgIHN0eWxlLnNldFByb3BlcnR5KCctLWNoaWxkcmVuLWJvcmRlci1zaXplJywgdGhpcy4kY2hpbGRyZW5Cb3JkZXJTaXplKCkgKyAncHgnKVxyXG4gICAgICBzdHlsZS5zZXRQcm9wZXJ0eSgnLS1jaGlsZHJlbi1ib3JkZXItY29sb3InLCB0aGlzLiRjaGlsZHJlbkJvcmRlckNvbG9yKCkpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1vcmdjaGFydGZsZXgtY29udGFpbmVyXCIgKG1vdXNlZG93bik9XCJzdGFydERyYWdnaW5nKCRldmVudCwgZmFsc2UpXCJcclxuICAgIChtb3VzZXVwKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGZhbHNlKVwiIChtb3VzZWxlYXZlKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGZhbHNlKVwiIChtb3VzZW1vdmUpPVwibW92ZUV2ZW50KCRldmVudClcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiICNwYXJlbnQgW25nU3R5bGVdPVwieyBjdXJzb3I6ICRtb3VzZURvd24oKSA/ICdhbGwtc2Nyb2xsJyA6ICd1bnNldCcsIHdpZHRoOiAkd2lkdGgoKSArICdweCcsIGhlaWdodDogJGhlaWdodCgpICsgJ3B4JyB9XCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ6b29tLWNvbnRyb2wgcC1hYnNvbHV0ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1yZWxhdGl2ZSBkLWZsZXggZC1mbGV4LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItbWludXMtY2lyY2xlIHBvaW50ZXJcIiAoY2xpY2spPVwiem9vbk91dCgpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXBsdXMtY2lyY2xlIHBvaW50ZXJcIiAoY2xpY2spPVwiem9vbkluKClcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItbW9uaXRvciBwb2ludGVyXCIgKGNsaWNrKT1cInpvb25GZWF0KClcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbnQtYXJlYVwiICNwcmludEFyZWE+XHJcblxyXG4gICAgICAgICAgICBAZm9yIChyb290IG9mICRkYXRhKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidHJlZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvb3R9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW0gbGV0LWNvbnRleHQ9XCJjb250ZXh0XCIgbGV0LXRpdGxlPVwiY29udGV4dC50cmVlJFRpdGxlXCIgbGV0LWV4cGFuZGVkPVwiY29udGV4dC50cmVlJEV4cGFuZGVkXCJcclxuICAgICAgICAgICAgbGV0LWNoaWxkcmVuPVwiY29udGV4dC50cmVlJENoaWxkcmVuXCIgbGV0LXRpZXI9XCJjb250ZXh0LnRyZWUkVGllclwiIGxldC1pc0FjdGl2ZT1cImNvbnRleHQuaXNBY3RpdmVcIj5cclxuICAgICAgICAgICAgQGlmICgoISRzaG93RGlzc29sdmVkKCkgJiYgISFpc0FjdGl2ZSkgfHwgKCEhJHNob3dEaXNzb2x2ZWQoKSkpIHtcclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKCRjb21wYWN0TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ0b2dnbGVFeHBhbmQoY29udGV4dClcIiBjbGFzcz1cInBvaW50ZXJcIiBbY2xhc3MuY29tcGFjdF09XCJ0aWVyICE9PSAxXCIgW2NsYXNzLmV4cGFuZGVkXT1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHBhc3NpbmcgaXRlbSB0ZW1wbGF0ZSBhbmQgY29tcGFjdE1vZGU9ZmFsc2UtLT5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKCEkY29tcGFjdE1vZGUoKSAmJiAhISRpdGVtVGVtcGxhdGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKGNvbnRleHQpXCIgY2xhc3M9XCJwb2ludGVyXCIgW2NsYXNzLmV4cGFuZGVkXT1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiJGl0ZW1UZW1wbGF0ZSgpOyBjb250ZXh0OiB7IGl0ZW06IGNvbnRleHQgfSBcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmICghIWV4cGFuZGVkICYmICEhY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGNoaWxkcmVuOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbTsgY29udGV4dDogeyBjb250ZXh0OiBjaGlsZH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==