@unipin/angular-applet 17.0.5 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/esm2022/lib/components/approval/detail/approval-detail.component.mjs +79 -0
  2. package/esm2022/lib/components/approval/form/approval-form.component.mjs +109 -0
  3. package/esm2022/lib/components/approval/index.mjs +3 -0
  4. package/esm2022/lib/components/approval/list/approval-list.component.mjs +92 -0
  5. package/esm2022/lib/components/approval/services/approval.service.mjs +46 -0
  6. package/esm2022/lib/components/audit/detail/audit-detail.component.mjs +5 -5
  7. package/esm2022/lib/components/audit/list/audit-list.component.mjs +3 -3
  8. package/esm2022/lib/components/audit/service/audit.service.mjs +3 -3
  9. package/esm2022/lib/components/buttons/group/btn-group.component.mjs +4 -4
  10. package/esm2022/lib/components/buttons/loading/btn-loading.component.mjs +3 -3
  11. package/esm2022/lib/components/containers/applet-container/applet-container.component.mjs +5 -5
  12. package/esm2022/lib/components/containers/colum-header-container/column-header-container.component.mjs +6 -6
  13. package/esm2022/lib/components/containers/column-container/column-container.component.mjs +4 -4
  14. package/esm2022/lib/components/containers/column-container/directives/lazyr-route.directive.mjs +3 -3
  15. package/esm2022/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.mjs +10 -11
  16. package/esm2022/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.mjs +10 -11
  17. package/esm2022/lib/components/containers/modal-container/modal-container.component.mjs +12 -13
  18. package/esm2022/lib/components/filter/filter.component.mjs +14 -7
  19. package/esm2022/lib/components/filter/interfaces/filter-field.interface.mjs +1 -1
  20. package/esm2022/lib/components/forms/date/form-date.component.mjs +6 -6
  21. package/esm2022/lib/components/forms/input/form-input.component.mjs +6 -5
  22. package/esm2022/lib/components/forms/password/form-password.component.mjs +4 -4
  23. package/esm2022/lib/components/forms/searchable-select/form-searchable-select.component.mjs +7 -6
  24. package/esm2022/lib/components/forms/select/form-select.component.mjs +6 -6
  25. package/esm2022/lib/components/forms/textarea/form-textarea.component.mjs +4 -4
  26. package/esm2022/lib/components/grids/grid-pagination/grid-pagination.component.mjs +9 -5
  27. package/esm2022/lib/components/grids/grid-snapshot/grid-snapshot.component.mjs +9 -5
  28. package/esm2022/lib/components/grids/services/grid.service.mjs +3 -3
  29. package/esm2022/lib/components/index.mjs +2 -1
  30. package/esm2022/lib/components/tabs/tab-content/tab-content.component.mjs +9 -10
  31. package/esm2022/lib/components/tabs/tab-group/tab-group.component.mjs +6 -6
  32. package/esm2022/lib/components/tabs/tabs.component.module.mjs +4 -4
  33. package/esm2022/lib/interceptors/header/header.interceptor.mjs +3 -3
  34. package/esm2022/lib/interceptors/refresh-token/refresh-token.interceptor.mjs +4 -4
  35. package/esm2022/lib/modules/micro-frontend/utils/mf-bootstrap.util.mjs +1 -1
  36. package/esm2022/lib/modules/permission/directive/permission.directive.mjs +4 -4
  37. package/esm2022/lib/modules/permission/guards/permission.guard.mjs +1 -1
  38. package/esm2022/lib/modules/permission/pages/401/unauthorized.page.mjs +3 -3
  39. package/esm2022/lib/modules/permission/pages/loading/loading.page.mjs +3 -3
  40. package/esm2022/lib/modules/permission/permission.module.mjs +4 -4
  41. package/esm2022/lib/modules/permission/services/permission.service.mjs +3 -3
  42. package/esm2022/lib/resolvers/auth/auth.resolver.mjs +4 -4
  43. package/esm2022/lib/services/auth/auth.service.mjs +6 -6
  44. package/esm2022/lib/services/country/country.service.mjs +3 -3
  45. package/esm2022/lib/services/currency/currency.service.mjs +44 -0
  46. package/esm2022/lib/services/index.mjs +2 -1
  47. package/esm2022/lib/services/profile/profile.service.mjs +22 -11
  48. package/esm2022/public-api.mjs +3 -3
  49. package/fesm2022/unipin-angular-applet.mjs +515 -165
  50. package/fesm2022/unipin-angular-applet.mjs.map +1 -1
  51. package/lib/components/approval/detail/approval-detail.component.d.ts +24 -0
  52. package/lib/components/approval/form/approval-form.component.d.ts +32 -0
  53. package/lib/components/approval/index.d.ts +2 -0
  54. package/lib/components/approval/list/approval-list.component.d.ts +31 -0
  55. package/lib/components/approval/services/approval.service.d.ts +18 -0
  56. package/lib/components/containers/colum-header-container/column-header-container.component.d.ts +2 -2
  57. package/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.d.ts +4 -4
  58. package/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.d.ts +4 -4
  59. package/lib/components/containers/modal-container/modal-container.component.d.ts +4 -4
  60. package/lib/components/filter/filter.component.d.ts +2 -1
  61. package/lib/components/filter/interfaces/filter-field.interface.d.ts +1 -0
  62. package/lib/components/forms/input/form-input.component.d.ts +2 -2
  63. package/lib/components/grids/grid-pagination/grid-pagination.component.d.ts +2 -1
  64. package/lib/components/grids/grid-snapshot/grid-snapshot.component.d.ts +2 -1
  65. package/lib/components/index.d.ts +1 -0
  66. package/lib/components/tabs/tab-content/tab-content.component.d.ts +4 -4
  67. package/lib/services/auth/auth.service.d.ts +1 -1
  68. package/lib/services/currency/currency.service.d.ts +16 -0
  69. package/lib/services/index.d.ts +1 -0
  70. package/lib/services/profile/profile.service.d.ts +1 -1
  71. package/package.json +1 -1
  72. package/public-api.d.ts +2 -2
  73. package/src/assets/scss/select.scss +1 -1
@@ -0,0 +1,79 @@
1
+ import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NavigationEnd } from '@angular/router';
4
+ import { filter } from 'rxjs';
5
+ import { IonicModule } from '@ionic/angular';
6
+ import { ApprovalFormComponent } from '../form/approval-form.component';
7
+ import { ButtonGroupComponent } from '../../buttons/group/btn-group.component';
8
+ import { ColumnHeaderContainerComponent } from '../../containers/colum-header-container/column-header-container.component';
9
+ import { TabsComponentModule } from '../../tabs/tabs.component.module';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/router";
12
+ import * as i2 from "@ionic/angular";
13
+ import * as i3 from "@angular/common";
14
+ import * as i4 from "../../tabs/tab-group/tab-group.component";
15
+ import * as i5 from "../../tabs/tab-content/tab-content.component";
16
+ export class ApprovalDetailComponent {
17
+ constructor(router, activatedRoute) {
18
+ this.router = router;
19
+ this.activatedRoute = activatedRoute;
20
+ this.btnConfig = [];
21
+ this.guid = '';
22
+ }
23
+ ngOnInit() {
24
+ this.sub = this.activatedRoute.queryParams.subscribe((params) => {
25
+ if (params) {
26
+ this.guids = params['guids'];
27
+ this.isApprove = params['isApprove'] === 'true';
28
+ }
29
+ });
30
+ }
31
+ ngAfterViewInit() {
32
+ if (this.guids) {
33
+ this.setChildGuid('');
34
+ this.changeTab(this.activatedRoute.snapshot.fragment);
35
+ }
36
+ else {
37
+ this.setChildGuid(this.activatedRoute.children[0].snapshot.params['guid']);
38
+ this.changeTab(this.activatedRoute.snapshot.fragment);
39
+ this.sub = this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe({
40
+ next: () => {
41
+ const newGuid = this.activatedRoute.children[0].snapshot.params['guid'];
42
+ if (this.guid !== newGuid) {
43
+ this.guid = newGuid;
44
+ this.setChildGuid(this.guid);
45
+ }
46
+ }
47
+ });
48
+ }
49
+ }
50
+ ngOnDestroy() { this.sub.unsubscribe(); }
51
+ changeTab(f) {
52
+ switch (f) {
53
+ default:
54
+ this.btnConfig = this.formComponent?.btnConfig ?? [];
55
+ }
56
+ }
57
+ setChildGuid(guid) {
58
+ this.formComponent?.setGuid(this.guids ?? [guid], this.isApprove);
59
+ }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalDetailComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ApprovalDetailComponent, isStandalone: true, selector: "up-approval-detail", host: { classAttribute: "d-block h-100" }, viewQueries: [{ propertyName: "formComponent", first: true, predicate: ApprovalFormComponent, descendants: true }], ngImport: i0, template: "<up-column-header-container header=\"Approval Detail\" prevUrl=\"/approval\" class=\"bg-white\">\n <up-btn-group id=\"button\" *ngIf=\"!formComponent?.isLoading; else loading\" [config]=\"btnConfig\" />\n\n <ng-template #loading>\n <ion-skeleton-text id=\"button\" class=\"m-0 sk-btn\" />\n </ng-template>\n\n <up-tab-group class=\"h-100\" (onChange)=\"changeTab($event)\">\n <up-tab-content header=\"Detail\" fragment=\"detail\">\n <up-approval-form />\n </up-tab-content>\n </up-tab-group>\n</up-column-header-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TabsComponentModule }, { kind: "component", type: i4.TabGroupComponent, selector: "up-tab-group", outputs: ["onChange"] }, { kind: "component", type: i5.TabContentComponent, selector: "up-tab-content", inputs: ["header"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: ColumnHeaderContainerComponent, selector: "up-column-header-container", inputs: ["header", "prevUrl"] }, { kind: "component", type: ApprovalFormComponent, selector: "up-approval-form", inputs: ["isLoading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalDetailComponent, decorators: [{
64
+ type: Component,
65
+ args: [{ standalone: true, selector: 'up-approval-detail', changeDetection: ChangeDetectionStrategy.OnPush, host: {
66
+ class: 'd-block h-100'
67
+ }, imports: [
68
+ IonicModule,
69
+ CommonModule,
70
+ TabsComponentModule,
71
+ ButtonGroupComponent,
72
+ ColumnHeaderContainerComponent,
73
+ ApprovalFormComponent
74
+ ], template: "<up-column-header-container header=\"Approval Detail\" prevUrl=\"/approval\" class=\"bg-white\">\n <up-btn-group id=\"button\" *ngIf=\"!formComponent?.isLoading; else loading\" [config]=\"btnConfig\" />\n\n <ng-template #loading>\n <ion-skeleton-text id=\"button\" class=\"m-0 sk-btn\" />\n </ng-template>\n\n <up-tab-group class=\"h-100\" (onChange)=\"changeTab($event)\">\n <up-tab-content header=\"Detail\" fragment=\"detail\">\n <up-approval-form />\n </up-tab-content>\n </up-tab-group>\n</up-column-header-container>\n" }]
75
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }], propDecorators: { formComponent: [{
76
+ type: ViewChild,
77
+ args: [ApprovalFormComponent]
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9kZXRhaWwvYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9kZXRhaWwvYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBa0IsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQzNILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBb0J2RSxNQUFNLE9BQU8sdUJBQXVCO0lBU2xDLFlBQ3FCLE1BQWMsRUFDZCxjQUE4QjtRQUQ5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUjVDLGNBQVMsR0FBd0IsRUFBRSxDQUFDO1FBQ2pDLFNBQUksR0FBVyxFQUFF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dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb25maWcgfSBmcm9tICcuLi8uLi9idXR0b25zL2dyb3VwL2ludGVyZmFjZXMvYnRuLWdyb3VwLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwcm92YWxGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbnMvZ3JvdXAvYnRuLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2x1bW5IZWFkZXJDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250YWluZXJzL2NvbHVtLWhlYWRlci1jb250YWluZXIvY29sdW1uLWhlYWRlci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYnNDb21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi90YWJzL3RhYnMuY29tcG9uZW50Lm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWFwcHJvdmFsLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHByb3ZhbC1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2QtYmxvY2sgaC0xMDAnXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBJb25pY01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVGFic0NvbXBvbmVudE1vZHVsZSxcbiAgICBCdXR0b25Hcm91cENvbXBvbmVudCxcbiAgICBDb2x1bW5IZWFkZXJDb250YWluZXJDb21wb25lbnQsXG4gICAgQXBwcm92YWxGb3JtQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxEZXRhaWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZChBcHByb3ZhbEZvcm1Db21wb25lbnQpIHB1YmxpYyBmb3JtQ29tcG9uZW50PzogQXBwcm92YWxGb3JtQ29tcG9uZW50O1xuICBwdWJsaWMgYnRuQ29uZmlnOiBCdXR0b25Hcm91cENvbmZpZ1tdID0gW107XG4gIHByb3RlY3RlZCBndWlkOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIGd1aWRzPzogc3RyaW5nW107XG4gIHByb3RlY3RlZCBpc0FwcHJvdmU/OiBib29sZWFuO1xuICBwcm90ZWN0ZWQgc3ViITogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICB0aGlzLmd1aWRzID0gcGFyYW1zWydndWlkcyddO1xuICAgICAgICB0aGlzLmlzQXBwcm92ZSA9IHBhcmFtc1snaXNBcHByb3ZlJ10gPT09ICd0cnVlJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZHtcbiAgICBpZiAodGhpcy5ndWlkcykge1xuICAgICAgdGhpcy5zZXRDaGlsZEd1aWQoJycpO1xuICAgICAgdGhpcy5jaGFuZ2VUYWIodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5mcmFnbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Q2hpbGRHdWlkKHRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW5bMF0uc25hcHNob3QucGFyYW1zWydndWlkJ10pO1xuICAgICAgdGhpcy5jaGFuZ2VUYWIodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5mcmFnbWVudCk7XG5cbiAgICAgIHRoaXMuc3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdHdWlkOiBzdHJpbmcgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuWzBdLnNuYXBzaG90LnBhcmFtc1snZ3VpZCddO1xuXG4gICAgICAgICAgaWYgKHRoaXMuZ3VpZCAhPT0gbmV3R3VpZCkge1xuICAgICAgICAgICAgdGhpcy5ndWlkID0gbmV3R3VpZDtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2hpbGRHdWlkKHRoaXMuZ3VpZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZHsgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTsgfVxuXG4gIHB1YmxpYyBjaGFuZ2VUYWIoZjogc3RyaW5nIHwgbnVsbCk6IHZvaWR7XG4gICAgc3dpdGNoIChmKSB7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmJ0bkNvbmZpZyA9IHRoaXMuZm9ybUNvbXBvbmVudD8uYnRuQ29uZmlnPz8gW107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldENoaWxkR3VpZChndWlkOiBzdHJpbmcpOiB2b2lke1xuICAgIHRoaXMuZm9ybUNvbXBvbmVudD8uc2V0R3VpZCh0aGlzLmd1aWRzPz8gWyBndWlkIF0sIHRoaXMuaXNBcHByb3ZlKTtcbiAgfVxufVxuIiwiPHVwLWNvbHVtbi1oZWFkZXItY29udGFpbmVyIGhlYWRlcj1cIkFwcHJvdmFsIERldGFpbFwiIHByZXZVcmw9XCIvYXBwcm92YWxcIiBjbGFzcz1cImJnLXdoaXRlXCI+XG4gICAgPHVwLWJ0bi1ncm91cCBpZD1cImJ1dHRvblwiICpuZ0lmPVwiIWZvcm1Db21wb25lbnQ/LmlzTG9hZGluZzsgZWxzZSBsb2FkaW5nXCIgW2NvbmZpZ109XCJidG5Db25maWdcIiAvPlxuXG4gICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgICAgICA8aW9uLXNrZWxldG9uLXRleHQgaWQ9XCJidXR0b25cIiBjbGFzcz1cIm0tMCBzay1idG5cIiAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8dXAtdGFiLWdyb3VwIGNsYXNzPVwiaC0xMDBcIiAob25DaGFuZ2UpPVwiY2hhbmdlVGFiKCRldmVudClcIj5cbiAgICAgICAgPHVwLXRhYi1jb250ZW50IGhlYWRlcj1cIkRldGFpbFwiIGZyYWdtZW50PVwiZGV0YWlsXCI+XG4gICAgICAgICAgICA8dXAtYXBwcm92YWwtZm9ybSAvPlxuICAgICAgICA8L3VwLXRhYi1jb250ZW50PlxuICAgIDwvdXAtdGFiLWdyb3VwPlxuPC91cC1jb2x1bW4taGVhZGVyLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,109 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { IonicModule } from '@ionic/angular';
4
+ import { FormInputComponent } from '../../forms/input/form-input.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ import * as i2 from "../services/approval.service";
8
+ import * as i3 from "../../grids/services/grid.service";
9
+ import * as i4 from "@ionic/angular";
10
+ import * as i5 from "../../../modules/permission/services/permission.service";
11
+ import * as i6 from "@angular/common";
12
+ export class ApprovalFormComponent {
13
+ constructor(router, ch, service, gridService, alertCtrl, permService) {
14
+ this.router = router;
15
+ this.ch = ch;
16
+ this.service = service;
17
+ this.gridService = gridService;
18
+ this.alertCtrl = alertCtrl;
19
+ this.permService = permService;
20
+ this.isLoading = true;
21
+ this.btnConfig = [];
22
+ this.data = [];
23
+ }
24
+ ngOnDestroy() { this.sub?.unsubscribe(); }
25
+ setGuid(guids, isApprove) {
26
+ if (guids.length === 1)
27
+ this.guid = guids[0];
28
+ this.btnConfig.length = 0;
29
+ this.setLoading(true);
30
+ this.sub = this.service.query({ guids }, 'permission').subscribe({
31
+ next: ({ data: { approvalMsApprovals: { data } } }) => {
32
+ if (!data || data.length === 0) {
33
+ this.router.navigateByUrl('approval');
34
+ return;
35
+ }
36
+ this.data = data;
37
+ if (data.length > 1) {
38
+ let dataCount = 0;
39
+ data.map(({ permission }) => {
40
+ const perm = permission.split('.');
41
+ if (this.permService.checkPermission(perm[0], perm[1], perm[2]))
42
+ dataCount++;
43
+ if (dataCount === data.length)
44
+ isApprove ? this.btnConfig.push({ label: 'Approve', icon: 'checkmark', description: 'Approve the approval', disabled: false, onClick: this.request.bind(this) }) : this.btnConfig.push({ label: 'Decline', icon: 'close', description: 'Decline the approval', color: 'danger', disabled: false, onClick: this.request.bind(this) });
45
+ });
46
+ }
47
+ else {
48
+ const perm = data[0].permission.split('.');
49
+ if (this.permService.checkPermission(perm[0], perm[1], perm[2])) {
50
+ this.btnConfig.push({ label: 'Approve', icon: 'checkmark', description: 'Approve the approval', disabled: false, onClick: this.request.bind(this) }, { label: 'Decline', icon: 'close', description: 'Decline the approval', color: 'danger', disabled: false, onClick: this.request.bind(this) });
51
+ }
52
+ }
53
+ this.setLoading(false);
54
+ },
55
+ error: ({ message }) => {
56
+ this.showAlert('Error', message);
57
+ this.router.navigateByUrl('approval');
58
+ }
59
+ });
60
+ }
61
+ request(btn) {
62
+ const isApprove = btn.color !== 'danger';
63
+ this.showAlert('Confirm', `Are you sure want to ${isApprove ? 'approve the approval?' : 'decline the approval? Please input the reason if you want to decline.'}`, [
64
+ { text: 'Cancel', handler: () => btn.toggleLoading() },
65
+ {
66
+ text: `${isApprove ? 'Approve' : 'Decline'}`,
67
+ handler: ({ reason }) => {
68
+ this.sub?.unsubscribe();
69
+ const variables = {
70
+ ...(this.guid ? { guid: this.guid } : { approvalGroupGuid: '' }),
71
+ isApprove,
72
+ reason
73
+ };
74
+ this.sub = this.service.request(variables).subscribe({
75
+ next: () => {
76
+ this.showAlert('Success', `Approval ${isApprove ? 'approved' : 'declined'}`);
77
+ this.router.navigateByUrl('approval');
78
+ this.gridService.refreshGridCache('grid-approval-list');
79
+ },
80
+ error: ({ message }) => {
81
+ btn.toggleLoading();
82
+ this.showAlert('Error', message);
83
+ }
84
+ });
85
+ }
86
+ }
87
+ ], [{ name: 'reason', type: 'textarea', placeholder: 'Reason' }]);
88
+ }
89
+ setLoading(b) {
90
+ this.isLoading = b;
91
+ this.ch.markForCheck();
92
+ }
93
+ async showAlert(header, message, buttons = ['OK'], inputs = []) { (await this.alertCtrl.create({ header, message, buttons, inputs })).present(); }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalFormComponent, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }, { token: i2.ApprovalService }, { token: i3.GridService }, { token: i4.AlertController }, { token: i5.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ApprovalFormComponent, isStandalone: true, selector: "up-approval-form", inputs: { isLoading: "isLoading" }, host: { classAttribute: "px-4 d-block" }, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading; else loading\">\n <div *ngFor=\"let d of data, let i = index\">\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\" *ngIf=\"data.length > 1\">\n <ion-icon name=\"document\" />\n <h5 class=\"m-0\">Approval {{ i + 1 }}</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Entity\" [disabled]=\"true\" [value]=\"d.entity\" />\n <up-input class=\"mb-4\" label=\"Remark\" [disabled]=\"true\" [value]=\"d.remark\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Created At\" [disabled]=\"true\" [value]=\"d.createdAt | date:'dd MMM yyyy HH:mm'\" />\n <up-input class=\"mb-4\" label=\"Status\" [disabled]=\"true\" [value]=\"d.status\" />\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "component", type: FormInputComponent, selector: "up-input", inputs: ["label", "value", "required", "disabled"], outputs: ["onInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalFormComponent, decorators: [{
98
+ type: Component,
99
+ args: [{ standalone: true, selector: 'up-approval-form', changeDetection: ChangeDetectionStrategy.OnPush, host: {
100
+ class: 'px-4 d-block'
101
+ }, imports: [
102
+ IonicModule,
103
+ CommonModule,
104
+ FormInputComponent
105
+ ], template: "<ng-container *ngIf=\"!isLoading; else loading\">\n <div *ngFor=\"let d of data, let i = index\">\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\" *ngIf=\"data.length > 1\">\n <ion-icon name=\"document\" />\n <h5 class=\"m-0\">Approval {{ i + 1 }}</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Entity\" [disabled]=\"true\" [value]=\"d.entity\" />\n <up-input class=\"mb-4\" label=\"Remark\" [disabled]=\"true\" [value]=\"d.remark\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Created At\" [disabled]=\"true\" [value]=\"d.createdAt | date:'dd MMM yyyy HH:mm'\" />\n <up-input class=\"mb-4\" label=\"Status\" [disabled]=\"true\" [value]=\"d.status\" />\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n </div>\n</ng-template>\n" }]
106
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.ApprovalService }, { type: i3.GridService }, { type: i4.AlertController }, { type: i5.PermissionService }], propDecorators: { isLoading: [{
107
+ type: Input
108
+ }] } });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvZm9ybS9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9mb3JtL2FwcHJvdmFsLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQWdDLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTTNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQWtCNUUsTUFBTSxPQUFPLHFCQUFxQjtJQVFoQyxZQUNxQixNQUFjLEVBQ2QsRUFBcUIsRUFDckIsT0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsU0FBMEIsRUFDMUIsV0FBOEI7UUFMOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQVpuQyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGNBQVMsR0FBd0IsRUFBRSxDQUFDO1FBQzdDLFNBQUksR0FBZSxFQUFFLENBQUM7SUFXekIsQ0FBQztJQUVFLFdBQVcsS0FBVSxJQUFJLENBQUMsR0FBRyxF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QUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxVQUFvQyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQWdCLEVBQUUsSUFBa0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzs4R0FwR2hOLHFCQUFxQjtrR0FBckIscUJBQXFCLDBKQzVCbEMseTdDQWtDQSx5RERYSSxXQUFXLHlTQUNYLFlBQVksbVRBQ1osa0JBQWtCOzsyRkFHVCxxQkFBcUI7a0JBZmpDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSxjQUFjO3FCQUN0QixXQUNRO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixrQkFBa0I7cUJBQ25CO2lPQUllLFNBQVM7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFsZXJ0QnV0dG9uLCBBbGVydENvbnRyb2xsZXIsIElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQXBwcm92YWwsIE11dGF0aW9uQXBwcm92YWxNc0FwcHJvdmVPckRlY2xpbmVSZXF1ZXN0QXJncyB9IGZyb20gJy4uLy4uLy4uLy4uL2dyYXBocWwvZ2VuZXJhdGVkJztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnV0dG9ucy9ncm91cC9pbnRlcmZhY2VzL2J0bi1ncm91cC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcHJvdmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcHJvdmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9ncmlkcy9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL3Blcm1pc3Npb24vc2VydmljZXMvcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Zvcm1zL2lucHV0L2Zvcm0taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkxvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9idXR0b25zL2xvYWRpbmcvYnRuLWxvYWRpbmcuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtYXBwcm92YWwtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwcm92YWwtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAncHgtNCBkLWJsb2NrJ1xuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1JbnB1dENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBidG5Db25maWc6IEJ1dHRvbkdyb3VwQ29uZmlnW10gPSBbXTtcbiAgcHVibGljIGRhdGE6IEFwcHJvdmFsW10gPSBbXTtcbiAgcHJvdGVjdGVkIGd1aWQ/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBzdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBjaDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlcnZpY2U6IEFwcHJvdmFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGVybVNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWR7IHRoaXMuc3ViPy51bnN1YnNjcmliZSgpOyB9XG5cbiAgcHVibGljIHNldEd1aWQoZ3VpZHM6IHN0cmluZ1tdLCBpc0FwcHJvdmU/OiBib29sZWFuKTogdm9pZHtcbiAgICBpZiAoZ3VpZHMubGVuZ3RoID09PSAxKSB0aGlzLmd1aWQgPSBndWlkc1swXTtcbiAgICBcbiAgICB0aGlzLmJ0bkNvbmZpZy5sZW5ndGggPSAwO1xuICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcblxuICAgIHRoaXMuc3ViID0gdGhpcy5zZXJ2aWNlLnF1ZXJ5KHsgZ3VpZHMgfSwgJ3Blcm1pc3Npb24nKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHsgZGF0YTogeyBhcHByb3ZhbE1zQXBwcm92YWxzOiB7IGRhdGEgfX19KSA9PiB7XG4gICAgICAgIGlmICghZGF0YSB8fCBkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ2FwcHJvdmFsJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YSBhcyBhbnk7XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBsZXQgZGF0YUNvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgICAgICAgZGF0YS5tYXAoKHsgcGVybWlzc2lvbiB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBlcm06IHN0cmluZ1tdID0gcGVybWlzc2lvbi5zcGxpdCgnLicpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wZXJtU2VydmljZS5jaGVja1Blcm1pc3Npb24ocGVybVswXSwgcGVybVsxXSwgcGVybVsyXSkpIGRhdGFDb3VudCsrO1xuICAgICAgICAgICAgaWYgKGRhdGFDb3VudCA9PT0gZGF0YS5sZW5ndGgpIGlzQXBwcm92ZT8gdGhpcy5idG5Db25maWcucHVzaCh7IGxhYmVsOiAnQXBwcm92ZScsIGljb246ICdjaGVja21hcmsnLCBkZXNjcmlwdGlvbjogJ0FwcHJvdmUgdGhlIGFwcHJvdmFsJyAsIGRpc2FibGVkOiBmYWxzZSwgb25DbGljazogdGhpcy5yZXF1ZXN0LmJpbmQodGhpcykgfSkgOiB0aGlzLmJ0bkNvbmZpZy5wdXNoKHsgbGFiZWw6ICdEZWNsaW5lJywgaWNvbjogJ2Nsb3NlJywgZGVzY3JpcHRpb246ICdEZWNsaW5lIHRoZSBhcHByb3ZhbCcsIGNvbG9yOiAnZGFuZ2VyJywgZGlzYWJsZWQ6IGZhbHNlLCBvbkNsaWNrOiB0aGlzLnJlcXVlc3QuYmluZCh0aGlzKSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwZXJtOiBzdHJpbmdbXSA9IGRhdGFbMF0hLnBlcm1pc3Npb24hLnNwbGl0KCcuJyk7XG5cbiAgICAgICAgICBpZiAodGhpcy5wZXJtU2VydmljZS5jaGVja1Blcm1pc3Npb24ocGVybVswXSwgcGVybVsxXSwgcGVybVsyXSkpIHtcbiAgICAgICAgICAgIHRoaXMuYnRuQ29uZmlnLnB1c2goXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdBcHByb3ZlJywgaWNvbjogJ2NoZWNrbWFyaycsIGRlc2NyaXB0aW9uOiAnQXBwcm92ZSB0aGUgYXBwcm92YWwnICwgZGlzYWJsZWQ6IGZhbHNlLCBvbkNsaWNrOiB0aGlzLnJlcXVlc3QuYmluZCh0aGlzKSB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnRGVjbGluZScsIGljb246ICdjbG9zZScsIGRlc2NyaXB0aW9uOiAnRGVjbGluZSB0aGUgYXBwcm92YWwnLCBjb2xvcjogJ2RhbmdlcicsIGRpc2FibGVkOiBmYWxzZSwgb25DbGljazogdGhpcy5yZXF1ZXN0LmJpbmQodGhpcykgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKHsgbWVzc2FnZSB9KSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0FsZXJ0KCdFcnJvcicsIG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdhcHByb3ZhbCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlcXVlc3QoYnRuOiBCdXR0b25Mb2FkaW5nQ29tcG9uZW50KTogdm9pZHtcbiAgICBjb25zdCBpc0FwcHJvdmU6IGJvb2xlYW4gPSBidG4uY29sb3IgIT09ICdkYW5nZXInO1xuXG4gICAgdGhpcy5zaG93QWxlcnQoJ0NvbmZpcm0nLCBgQXJlIHlvdSBzdXJlIHdhbnQgdG8gJHsgaXNBcHByb3ZlPyAnYXBwcm92ZSB0aGUgYXBwcm92YWw/JyA6ICdkZWNsaW5lIHRoZSBhcHByb3ZhbD8gUGxlYXNlIGlucHV0IHRoZSByZWFzb24gaWYgeW91IHdhbnQgdG8gZGVjbGluZS4nIH1gLCBbXG4gICAgICB7IHRleHQ6ICdDYW5jZWwnLCBoYW5kbGVyOiAoKSA9PiBidG4udG9nZ2xlTG9hZGluZygpIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6IGAkeyBpc0FwcHJvdmU/ICdBcHByb3ZlJyA6ICdEZWNsaW5lJyB9YCxcbiAgICAgICAgaGFuZGxlcjogKHsgcmVhc29uIH0pID0+IHtcbiAgICAgICAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIC8vIFRPRE86IFdhaXRpbmcgZm9yIGFwcHJvdmFsR3JvdXBHdWlkXG4gICAgICAgICAgY29uc3QgdmFyaWFibGVzOiBNdXRhdGlvbkFwcHJvdmFsTXNBcHByb3ZlT3JEZWNsaW5lUmVxdWVzdEFyZ3MgPSB7XG4gICAgICAgICAgICAuLi4odGhpcy5ndWlkPyB7IGd1aWQ6IHRoaXMuZ3VpZCB9IDogeyBhcHByb3ZhbEdyb3VwR3VpZDogJycgfSksXG4gICAgICAgICAgICBpc0FwcHJvdmUsXG4gICAgICAgICAgICByZWFzb25cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnN1YiA9IHRoaXMuc2VydmljZS5yZXF1ZXN0KHZhcmlhYmxlcykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnQoJ1N1Y2Nlc3MnLCBgQXBwcm92YWwgJHsgaXNBcHByb3ZlPyAnYXBwcm92ZWQnIDogJ2RlY2xpbmVkJyB9YCk7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ2FwcHJvdmFsJyk7XG5cbiAgICAgICAgICAgICAgdGhpcy5ncmlkU2VydmljZS5yZWZyZXNoR3JpZENhY2hlKCdncmlkLWFwcHJvdmFsLWxpc3QnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKHsgbWVzc2FnZSB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgYnRuLnRvZ2dsZUxvYWRpbmcoKTtcbiAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnQoJ0Vycm9yJywgbWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLCBbeyBuYW1lOiAncmVhc29uJywgdHlwZTogJ3RleHRhcmVhJywgcGxhY2Vob2xkZXI6ICdSZWFzb24nIH1dKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRMb2FkaW5nKGI6IGJvb2xlYW4pOiB2b2lke1xuICAgIHRoaXMuaXNMb2FkaW5nID0gYjtcbiAgICB0aGlzLmNoLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNob3dBbGVydChoZWFkZXI6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBidXR0b25zOiAoQWxlcnRCdXR0b24gfCBzdHJpbmcpW10gPSBbJ09LJ10sIGlucHV0czogYW55W10gPSBbXSk6IFByb21pc2U8dm9pZD57IChhd2FpdCB0aGlzLmFsZXJ0Q3RybC5jcmVhdGUoeyBoZWFkZXIsIG1lc3NhZ2UsIGJ1dHRvbnMsIGlucHV0cyB9KSkucHJlc2VudCgpOyB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZzsgZWxzZSBsb2FkaW5nXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZCBvZiBkYXRhLCBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBiLTMgcHQtMlwiICpuZ0lmPVwiZGF0YS5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvY3VtZW50XCIgLz5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm0tMFwiPkFwcHJvdmFsIHt7IGkgKyAxIH19PC9oNT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICAgICAgPHVwLWlucHV0IGNsYXNzPVwibWItNFwiIGxhYmVsPVwiRW50aXR5XCIgW2Rpc2FibGVkXT1cInRydWVcIiBbdmFsdWVdPVwiZC5lbnRpdHlcIiAvPlxuICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlJlbWFya1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3ZhbHVlXT1cImQucmVtYXJrXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi00XCIgbGFiZWw9XCJDcmVhdGVkIEF0XCIgW2Rpc2FibGVkXT1cInRydWVcIiBbdmFsdWVdPVwiZC5jcmVhdGVkQXQgfCBkYXRlOidkZCBNTU0geXl5eSBISDptbSdcIiAvPlxuICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlN0YXR1c1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3ZhbHVlXT1cImQuc3RhdHVzXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBjbGFzcz1cIm0tMCBtYi00IHNrLWlucHV0XCIgLz5cbiAgICAgICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBjbGFzcz1cIm0tMCBtYi00IHNrLWlucHV0XCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICA8aW9uLXNrZWxldG9uLXRleHQgY2xhc3M9XCJtLTAgbWItNCBzay1pbnB1dFwiIC8+XG4gICAgICAgICAgICA8aW9uLXNrZWxldG9uLXRleHQgY2xhc3M9XCJtLTAgbWItNCBzay1pbnB1dFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { ApprovalListComponent } from './list/approval-list.component';
2
+ export { ApprovalDetailComponent } from './detail/approval-detail.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBcHByb3ZhbExpc3RDb21wb25lbnQgfSBmcm9tICcuL2xpc3QvYXBwcm92YWwtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0IHsgQXBwcm92YWxEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2RldGFpbC9hcHByb3ZhbC1kZXRhaWwuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,92 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { formatDate } from '@angular/common';
3
+ import { map } from 'rxjs';
4
+ import { FilterComponent } from '../../filter/filter.component';
5
+ import { ButtonGroupComponent } from '../../buttons/group/btn-group.component';
6
+ import { GridPaginationComponent } from '../../grids/grid-pagination/grid-pagination.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/router";
9
+ import * as i2 from "../services/approval.service";
10
+ import * as i3 from "@ionic/angular";
11
+ export class ApprovalListComponent {
12
+ constructor(entities, router, route, service, alertCtrl) {
13
+ this.entities = entities;
14
+ this.router = router;
15
+ this.route = route;
16
+ this.service = service;
17
+ this.alertCtrl = alertCtrl;
18
+ this.gridConfig = {
19
+ noRowText: 'Approval not found',
20
+ colDefs: [
21
+ { headerName: 'Entity', field: 'entity', checkboxSelection: true },
22
+ { headerName: 'Remark', field: 'remark' },
23
+ { headerName: 'Source Platform', field: 'sourcePlatform' },
24
+ { headerName: 'Status', field: 'status', maxWidth: 100 },
25
+ { headerName: 'Type', field: 'type', maxWidth: 100 },
26
+ { headerName: 'Created Date', field: 'createdAt', sort: 'desc', valueFormatter: ({ value }) => value ? formatDate(value, 'dd MMM yyyy HH:mm', 'en-US') : '' }
27
+ ],
28
+ getData: (page, pageSize, sortBy, dir) => {
29
+ const policy = this.input.page === page ? 'no-cache' : undefined;
30
+ this.input.page = page;
31
+ this.input.sortBy = sortBy;
32
+ this.input.pageSize = pageSize;
33
+ this.input.sortDirection = dir;
34
+ return this.service.query(this.input, '', policy).pipe(map(({ data: { approvalMsApprovals: { data, totalRecord: t } } }) => ({ data, totalRecord: t })));
35
+ }
36
+ };
37
+ this.filterConfig = {
38
+ mode: 'advanced',
39
+ fields: [
40
+ { key: 'type', label: 'Type', type: 'select', options: [
41
+ { label: 'Creation', value: ['CREATION'] },
42
+ { label: 'Deletion', value: ['DELETION'] },
43
+ { label: 'Linkage', value: ['LINKAGE'] },
44
+ { label: 'Unlink', value: ['UNLINK'] },
45
+ { label: 'Update', value: ['UPDATE'] }
46
+ ] }
47
+ ]
48
+ };
49
+ this.btnConfig = [
50
+ { label: 'Approve', icon: 'checkmark', description: 'Approve the approvals', disabled: true, onClick: this.multipleApproval.bind(this) },
51
+ { label: 'Decline', icon: 'close', description: 'Decline the approvals', color: 'danger', disabled: true, onClick: this.multipleApproval.bind(this) }
52
+ ];
53
+ this.input = { page: 0, pageSize: 50, entity: this.entities };
54
+ }
55
+ setGridApi({ api }) { this.gridApi = api; }
56
+ openDetail(data) {
57
+ this.router.navigate([`/approval/${data.guid}`], { preserveFragment: true });
58
+ }
59
+ selectApprovals() {
60
+ this.btnConfig[0].disabled = this.btnConfig[1].disabled = this.gridApi.getSelectedRows().length <= 1;
61
+ }
62
+ search({ data }) {
63
+ this.input.type = data?.type;
64
+ this.gridApi.refreshInfiniteCache();
65
+ }
66
+ multipleApproval(btn) {
67
+ btn.toggleLoading();
68
+ this.router.navigate([`/approval/approval-group`], {
69
+ preserveFragment: true,
70
+ queryParams: {
71
+ isApprove: btn.color !== 'danger',
72
+ guids: this.gridApi.getSelectedRows().map(({ guid }) => guid),
73
+ }
74
+ });
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalListComponent, deps: [{ token: 'ENTITIES' }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.ApprovalService }, { token: i3.AlertController }], target: i0.ɵɵFactoryTarget.Component }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ApprovalListComponent, isStandalone: true, selector: "up-approval-list", host: { classAttribute: "d-flex flex-column h-100 w-100" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">Approval</h3>\n\n <up-btn-group id=\"approval-list\" [config]=\"btnConfig\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\">\n <up-filter placeholder=\"Type to search\" id=\"filter-approval-list\" [config]=\"filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"gridConfig\" id=\"grid-approval-list\" rowSelection=\"multiple\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" (onSelectionChanged)=\"selectApprovals()\" />\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }] }); }
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalListComponent, decorators: [{
80
+ type: Component,
81
+ args: [{ standalone: true, selector: 'up-approval-list', host: {
82
+ class: 'd-flex flex-column h-100 w-100'
83
+ }, imports: [
84
+ FilterComponent,
85
+ ButtonGroupComponent,
86
+ GridPaginationComponent
87
+ ], template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">Approval</h3>\n\n <up-btn-group id=\"approval-list\" [config]=\"btnConfig\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\">\n <up-filter placeholder=\"Type to search\" id=\"filter-approval-list\" [config]=\"filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"gridConfig\" id=\"grid-approval-list\" rowSelection=\"multiple\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" (onSelectionChanged)=\"selectApprovals()\" />\n</div>\n" }]
88
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
89
+ type: Inject,
90
+ args: ['ENTITIES']
91
+ }] }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ApprovalService }, { type: i3.AlertController }] });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvbGlzdC9hcHByb3ZhbC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9saXN0L2FwcHJvdmFsLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFVdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7OztBQWdCaEcsTUFBTSxPQUFPLHFCQUFxQjtJQTRDaEMsWUFDc0MsUUFBa0IsRUFDbkMsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLE9BQXdCLEVBQ3hCLFNBQTBCO1FBSlQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNuQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUEvQy9CLGVBQVUsR0FBZTtZQUN2QyxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLE9BQU8sRUFBRTtnQkFDUCxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxF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QUEwQixDQUFFLEVBQUU7WUFDbkQsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixXQUFXLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUTtnQkFDakMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO2FBQzlEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E3RVUscUJBQXFCLGtCQTZDdEIsVUFBVTtrR0E3Q1QscUJBQXFCLHdJQ2hDbEMsaXdCQWVBLDBERFlJLGVBQWUsdUdBQ2Ysb0JBQW9CLDZFQUNwQix1QkFBdUI7OzJGQUdkLHFCQUFxQjtrQkFkakMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLFFBR3RCO3dCQUNKLEtBQUssRUFBRSxnQ0FBZ0M7cUJBQ3hDLFdBQ1E7d0JBQ1AsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLHVCQUF1QjtxQkFDeEI7OzBCQStDRSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgRmV0Y2hQb2xpY3kgfSBmcm9tICdAYXBvbGxvL2NsaWVudCc7XG5pbXBvcnQgeyBHcmlkQXBpLCBHcmlkUmVhZHlFdmVudCB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7IEFwcHJvdmFsQ3JpdGVyaWEgfSBmcm9tICcuLi8uLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5pbXBvcnQgeyBHcmlkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZ3JpZHMvaW50ZXJmYWNlcy9ncmlkLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2ludGVyZmFjZXMvZmlsdGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoRXZlbnQgfSBmcm9tICcuLi8uLi9maWx0ZXIvaW50ZXJmYWNlcy9maWx0ZXItc2VhcmNoLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbnMvZ3JvdXAvaW50ZXJmYWNlcy9idG4tZ3JvdXAtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcHByb3ZhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9ucy9ncm91cC9idG4tZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkxvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9idXR0b25zL2xvYWRpbmcvYnRuLWxvYWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZ3JpZHMvZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICd1cC1hcHByb3ZhbC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2QtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCB3LTEwMCdcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIEZpbHRlckNvbXBvbmVudCxcbiAgICBCdXR0b25Hcm91cENvbXBvbmVudCxcbiAgICBHcmlkUGFnaW5hdGlvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsTGlzdENvbXBvbmVudCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGdyaWRDb25maWc6IEdyaWRDb25maWcgPSB7XG4gICAgbm9Sb3dUZXh0OiAnQXBwcm92YWwgbm90IGZvdW5kJyxcbiAgICBjb2xEZWZzOiBbXG4gICAgICB7IGhlYWRlck5hbWU6ICdFbnRpdHknLCBmaWVsZDogJ2VudGl0eScsIGNoZWNrYm94U2VsZWN0aW9uOiB0cnVlIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdSZW1hcmsnLCBmaWVsZDogJ3JlbWFyaycgfSxcbiAgICAgIHsgaGVhZGVyTmFtZTogJ1NvdXJjZSBQbGF0Zm9ybScsIGZpZWxkOiAnc291cmNlUGxhdGZvcm0nIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdTdGF0dXMnLCBmaWVsZDogJ3N0YXR1cycsIG1heFdpZHRoOiAxMDAgfSxcbiAgICAgIHsgaGVhZGVyTmFtZTogJ1R5cGUnLCBmaWVsZDogJ3R5cGUnLCBtYXhXaWR0aDogMTAwIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdDcmVhdGVkIERhdGUnLCBmaWVsZDogJ2NyZWF0ZWRBdCcsIHNvcnQ6ICdkZXNjJywgdmFsdWVGb3JtYXR0ZXI6ICh7IHZhbHVlIH0pID0+IHZhbHVlPyBmb3JtYXREYXRlKHZhbHVlLCAnZGQgTU1NIHl5eXkgSEg6bW0nLCAnZW4tVVMnKSA6ICcnIH1cbiAgICBdLFxuICAgIGdldERhdGE6IChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIsIHNvcnRCeTogc3RyaW5nLCBkaXI6ICdhc2MnIHwgJ2Rlc2MnKTogT2JzZXJ2YWJsZTx7IGRhdGE6IGFueSwgdG90YWxSZWNvcmQ6IG51bWJlciB9PiA9PiB7XG4gICAgICBjb25zdCBwb2xpY3k6IEZldGNoUG9saWN5IHwgdW5kZWZpbmVkID0gdGhpcy5pbnB1dC5wYWdlID09PSBwYWdlPyAnbm8tY2FjaGUnIDogdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLmlucHV0LnBhZ2UgPSBwYWdlO1xuICAgICAgdGhpcy5pbnB1dC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgICB0aGlzLmlucHV0LnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICB0aGlzLmlucHV0LnNvcnREaXJlY3Rpb24gPSBkaXI7XG5cbiAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UucXVlcnkodGhpcy5pbnB1dCwgJycsIHBvbGljeSkucGlwZShcbiAgICAgICAgbWFwKCh7IGRhdGE6IHsgYXBwcm92YWxNc0FwcHJvdmFsczogeyBkYXRhLCB0b3RhbFJlY29yZDogdCB9IH19KSA9PiAoeyBkYXRhLCB0b3RhbFJlY29yZDogdCEgfSkpXG4gICAgICApO1xuICAgIH1cbiAgfTtcbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlckNvbmZpZzogRmlsdGVyQ29uZmlnID0ge1xuICAgIG1vZGU6ICdhZHZhbmNlZCcsXG4gICAgZmllbGRzOiBbXG4gICAgICB7IGtleTogJ3R5cGUnLCBsYWJlbDogJ1R5cGUnLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogW1xuICAgICAgICB7IGxhYmVsOiAnQ3JlYXRpb24nLCB2YWx1ZTogWyAnQ1JFQVRJT04nIF0gYXMgYW55IH0sXG4gICAgICAgIHsgbGFiZWw6ICdEZWxldGlvbicsIHZhbHVlOiBbICdERUxFVElPTicgXSBhcyBhbnkgfSxcbiAgICAgICAgeyBsYWJlbDogJ0xpbmthZ2UnLCB2YWx1ZTogWyAnTElOS0FHRScgXSBhcyBhbnkgfSxcbiAgICAgICAgeyBsYWJlbDogJ1VubGluaycsIHZhbHVlOiBbICdVTkxJTksnIF0gYXMgYW55IH0sXG4gICAgICAgIHsgbGFiZWw6ICdVcGRhdGUnLCB2YWx1ZTogWyAnVVBEQVRFJyBdIGFzIGFueSB9XG4gICAgICBdfVxuICAgIF1cbiAgfTtcbiAgcHVibGljIGJ0bkNvbmZpZzogQnV0dG9uR3JvdXBDb25maWdbXSA9IFtcbiAgICB7IGxhYmVsOiAnQXBwcm92ZScsIGljb246ICdjaGVja21hcmsnLCBkZXNjcmlwdGlvbjogJ0FwcHJvdmUgdGhlIGFwcHJvdmFscycgLCBkaXNhYmxlZDogdHJ1ZSwgb25DbGljazogdGhpcy5tdWx0aXBsZUFwcHJvdmFsLmJpbmQodGhpcykgfSxcbiAgICB7IGxhYmVsOiAnRGVjbGluZScsIGljb246ICdjbG9zZScsIGRlc2NyaXB0aW9uOiAnRGVjbGluZSB0aGUgYXBwcm92YWxzJywgY29sb3I6ICdkYW5nZXInLCBkaXNhYmxlZDogdHJ1ZSwgb25DbGljazogdGhpcy5tdWx0aXBsZUFwcHJvdmFsLmJpbmQodGhpcykgfVxuICBdO1xuICBwcm90ZWN0ZWQgZ3JpZEFwaSE6IEdyaWRBcGk7XG4gIHByb3RlY3RlZCBpbnB1dDogQXBwcm92YWxDcml0ZXJpYSA9IHsgcGFnZTogMCwgcGFnZVNpemU6IDUwLCBlbnRpdHk6IHRoaXMuZW50aXRpZXMgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdFTlRJVElFUycpIHB1YmxpYyByZWFkb25seSBlbnRpdGllczogc3RyaW5nW10sXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlcnZpY2U6IEFwcHJvdmFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXJcbiAgKSB7IH1cblxuICBwdWJsaWMgc2V0R3JpZEFwaSh7IGFwaSB9OiBHcmlkUmVhZHlFdmVudCk6IHZvaWR7IHRoaXMuZ3JpZEFwaSA9IGFwaTsgfVxuXG4gIHB1YmxpYyBvcGVuRGV0YWlsKGRhdGE6IGFueSk6IHZvaWR7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyBgL2FwcHJvdmFsLyR7IGRhdGEuZ3VpZCB9YCBdLCB7IHByZXNlcnZlRnJhZ21lbnQ6IHRydWUgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QXBwcm92YWxzKCk6IHZvaWR7XG4gICAgdGhpcy5idG5Db25maWdbMF0uZGlzYWJsZWQgPSB0aGlzLmJ0bkNvbmZpZ1sxXS5kaXNhYmxlZCA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPD0gMTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goeyBkYXRhIH06IEZpbHRlclNlYXJjaEV2ZW50KTogdm9pZHtcbiAgICB0aGlzLmlucHV0LnR5cGUgPSBkYXRhPy50eXBlO1xuICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoSW5maW5pdGVDYWNoZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG11bHRpcGxlQXBwcm92YWwoYnRuOiBCdXR0b25Mb2FkaW5nQ29tcG9uZW50KTogdm9pZHtcbiAgICBidG4udG9nZ2xlTG9hZGluZygpO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyBgL2FwcHJvdmFsL2FwcHJvdmFsLWdyb3VwYCBdLCB7XG4gICAgICBwcmVzZXJ2ZUZyYWdtZW50OiB0cnVlLFxuICAgICAgcXVlcnlQYXJhbXM6IHsgXG4gICAgICAgIGlzQXBwcm92ZTogYnRuLmNvbG9yICE9PSAnZGFuZ2VyJyxcbiAgICAgICAgZ3VpZHM6IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZFJvd3MoKS5tYXAoKHsgZ3VpZCB9KSA9PiBndWlkKSxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTQgcC00IGZsZXgtc2hyaW5rLTAgZmxleC13cmFwXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwibS0wXCI+QXBwcm92YWw8L2gzPlxuXG4gICAgICAgIDx1cC1idG4tZ3JvdXAgaWQ9XCJhcHByb3ZhbC1saXN0XCIgW2NvbmZpZ109XCJidG5Db25maWdcIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgZmxleC1ncm93LTFcIj5cbiAgICAgICAgPHVwLWZpbHRlciBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoXCIgaWQ9XCJmaWx0ZXItYXBwcm92YWwtbGlzdFwiIFtjb25maWddPVwiZmlsdGVyQ29uZmlnXCIgKG9uU2VhcmNoKT1cInNlYXJjaCgkZXZlbnQpXCIgLz5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgcHgtMSBwYi0xXCI+XG4gICAgPHVwLXBhZ2luYXRpb24tZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBpZD1cImdyaWQtYXBwcm92YWwtbGlzdFwiIHJvd1NlbGVjdGlvbj1cIm11bHRpcGxlXCIgKG9uR3JpZFJlYWR5KT1cInNldEdyaWRBcGkoJGV2ZW50KVwiIChvblJvd0NsaWNrKT1cIm9wZW5EZXRhaWwoJGV2ZW50KVwiIChvblNlbGVjdGlvbkNoYW5nZWQpPVwic2VsZWN0QXBwcm92YWxzKClcIiAvPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { gql } from 'apollo-angular';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "apollo-angular";
5
+ export class ApprovalService {
6
+ constructor(apollo) {
7
+ this.apollo = apollo;
8
+ this.baseAttr = `guid createdAt entity remark sourcePlatform status type`;
9
+ }
10
+ query(input, extraAttr = '', fetchPolicy) {
11
+ return this.apollo.query({
12
+ fetchPolicy,
13
+ variables: { input },
14
+ query: gql `
15
+ query QueryApproval($input: ApprovalCriteria) {
16
+ approvalMsApprovals(input: $input) {
17
+ data {
18
+ ${this.baseAttr}
19
+ ${extraAttr}
20
+ }
21
+ ${input.page === 0 ? 'totalRecord' : ''}
22
+ }
23
+ }
24
+ `
25
+ });
26
+ }
27
+ request(variables) {
28
+ return this.apollo.mutate({
29
+ variables,
30
+ mutation: gql `
31
+ mutation ${variables.isApprove ? 'ApproveApproval' : 'DeclineApproval'}($approvalGroupGuid: String, $guid: String, $isApprove: Boolean, $reason: String) {
32
+ approvalMsApproveOrDeclineRequest(approvalGroupGuid: $approvalGroupGuid, guid: $guid, isApprove: $isApprove, reason: $reason)
33
+ }
34
+ `
35
+ });
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalService, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable }); }
38
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalService, providedIn: 'root' }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApprovalService, decorators: [{
41
+ type: Injectable,
42
+ args: [{
43
+ providedIn: 'root'
44
+ }]
45
+ }], ctorParameters: () => [{ type: i1.Apollo }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFVLEdBQUcsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTTdELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ3FCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSGhCLGFBQVEsR0FBVyx5REFBeUQsQ0FBQztJQUk1RixDQUFDO0lBRUUsS0FBSyxDQUFDLEtBQXVCLEVBQUUsWUFBb0IsRUFBRSxFQUFFLFdBQXlCO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDdkIsV0FBVztZQUNYLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRTtZQUNwQixLQUFLLEVBQUUsR0FBRyxDQUFBOzs7O2dCQUlDLElBQUksQ0FBQyxRQUFTO2dCQUNkLFNBQVU7O2NBRVosS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRzs7O09BRzdDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU8sQ0FBQyxTQUF3RDtRQUNyRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3hCLFNBQVM7WUFDVCxRQUFRLEVBQUUsR0FBRyxDQUFBO21CQUNDLFNBQVMsQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBa0I7OztPQUd4RTtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBbkNVLGVBQWU7a0hBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBvbGxvUXVlcnlSZXN1bHQsIEZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBBcG9sbG8sIGdxbCwgTXV0YXRpb25SZXN1bHQgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBBcHByb3ZhbENyaXRlcmlhLCBQYWdlYWJsZVJlc3BvbnNlLCBNdXRhdGlvbkFwcHJvdmFsTXNBcHByb3ZlT3JEZWNsaW5lUmVxdWVzdEFyZ3MgfSBmcm9tICcuLy4uLy4uLy4uLy4uL2dyYXBocWwvZ2VuZXJhdGVkJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxTZXJ2aWNlIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYmFzZUF0dHI6IHN0cmluZyA9IGBndWlkIGNyZWF0ZWRBdCBlbnRpdHkgcmVtYXJrIHNvdXJjZVBsYXRmb3JtIHN0YXR1cyB0eXBlYDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBvbGxvOiBBcG9sbG9cbiAgKSB7IH1cblxuICBwdWJsaWMgcXVlcnkoaW5wdXQ6IEFwcHJvdmFsQ3JpdGVyaWEsIGV4dHJhQXR0cjogc3RyaW5nID0gJycsIGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kpOiBPYnNlcnZhYmxlPEFwb2xsb1F1ZXJ5UmVzdWx0PHsgYXBwcm92YWxNc0FwcHJvdmFsczogUGFnZWFibGVSZXNwb25zZSB9Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLnF1ZXJ5KHtcbiAgICAgIGZldGNoUG9saWN5LFxuICAgICAgdmFyaWFibGVzOiB7IGlucHV0IH0sXG4gICAgICBxdWVyeTogZ3FsYFxuICAgICAgICBxdWVyeSBRdWVyeUFwcHJvdmFsKCRpbnB1dDogQXBwcm92YWxDcml0ZXJpYSkge1xuICAgICAgICAgIGFwcHJvdmFsTXNBcHByb3ZhbHMoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgZGF0YSB7XG4gICAgICAgICAgICAgICR7IHRoaXMuYmFzZUF0dHIgfVxuICAgICAgICAgICAgICAkeyBleHRyYUF0dHIgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJHsgaW5wdXQucGFnZSA9PT0gMD8gJ3RvdGFsUmVjb3JkJyA6ICcnIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0KHZhcmlhYmxlczogTXV0YXRpb25BcHByb3ZhbE1zQXBwcm92ZU9yRGVjbGluZVJlcXVlc3RBcmdzKTogT2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDx7IGFwcHJvdmFsTXNBcHByb3ZlT3JEZWNsaW5lUmVxdWVzdDogc3RyaW5nIH0+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ubXV0YXRlKHtcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIG11dGF0aW9uOiBncWxgXG4gICAgICAgIG11dGF0aW9uICR7IHZhcmlhYmxlcy5pc0FwcHJvdmU/ICdBcHByb3ZlQXBwcm92YWwnIDogJ0RlY2xpbmVBcHByb3ZhbCcgfSgkYXBwcm92YWxHcm91cEd1aWQ6IFN0cmluZywgJGd1aWQ6IFN0cmluZywgJGlzQXBwcm92ZTogQm9vbGVhbiwgJHJlYXNvbjogU3RyaW5nKSB7XG4gICAgICAgICAgYXBwcm92YWxNc0FwcHJvdmVPckRlY2xpbmVSZXF1ZXN0KGFwcHJvdmFsR3JvdXBHdWlkOiAkYXBwcm92YWxHcm91cEd1aWQsIGd1aWQ6ICRndWlkLCBpc0FwcHJvdmU6ICRpc0FwcHJvdmUsIHJlYXNvbjogJHJlYXNvbilcbiAgICAgICAgfVxuICAgICAgYFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -106,10 +106,10 @@ export class AuditDetailComponent {
106
106
  const regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?Z$/;
107
107
  return regex.test(str);
108
108
  }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuditDetailComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AuditService }, { token: i3.ActivatedRoute }, { token: i4.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AuditDetailComponent, isStandalone: true, selector: "up-audit-detail", ngImport: i0, template: "<up-tab-group class=\"h-100\">\n <up-tab-content title=\"Detail\" fragment=\"detail\">\n <form [formGroup]=\"form\" class=\"px-4 pb-4\" *ngIf=\"!isLoading; else loading\">\n <div class=\"d-flex align-items-center gap-2 pb-3\">\n <ion-icon name=\"information-circle\" />\n <h5 class=\"m-0\">Information</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-lg-4\" label=\"Action\" formControlName=\"action\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Source IP\" formControlName=\"sourceIp\" />\n </div>\n </div>\n \n <up-input class=\"mb-4\" label=\"User Name\" formControlName=\"userName\" />\n <up-textarea class=\"mb-4\" label=\"Description\" formControlName=\"description\" />\n\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\">\n <ion-icon name=\"laptop\" />\n <h5 class=\"m-0\">System Information</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Action Date\" formControlName=\"createdAt\" />\n <up-input class=\"mb-lg-4\" label=\"Source Platform\" formControlName=\"sourcePlatform\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"MS Source\" formControlName=\"msSource\" />\n <up-input class=\"mb-4\" label=\"Function\" formControlName=\"function\" />\n </div>\n </div>\n </form>\n\n <ng-template #loading>\n <ion-skeleton-text class=\"sk-input mx-4 mb-4\" *ngFor=\"let i of [0,1,2,3,4,5,6]\" />\n </ng-template> \n </up-tab-content>\n\n <up-tab-content title=\"Attributes\" fragment=\"attributes\">\n <up-pagination-grid id=\"grid-audit-detail\" rowModelType=\"clientSide\" [config]=\"gridConfig\" (onGridReady)=\"setGridApi($event)\" />\n </up-tab-content>\n</up-tab-group>\n", styles: ["ion-icon{font-size:24px;margin-right:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }, { kind: "ngmodule", type: TabsComponentModule }, { kind: "component", type: i6.TabGroupComponent, selector: "up-tab-group", outputs: ["onChange"] }, { kind: "component", type: i7.TabContentComponent, selector: "up-tab-content" }, { kind: "component", type: FormInputComponent, selector: "up-input", inputs: ["label", "required", "disabled"], outputs: ["onInput"] }, { kind: "component", type: FormTextareaComponent, selector: "up-textarea", inputs: ["required", "disabled"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuditDetailComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AuditService }, { token: i3.ActivatedRoute }, { token: i4.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AuditDetailComponent, isStandalone: true, selector: "up-audit-detail", ngImport: i0, template: "<up-tab-group class=\"h-100\">\n <up-tab-content header=\"Detail\" fragment=\"detail\">\n <form [formGroup]=\"form\" class=\"px-4 pb-4\" *ngIf=\"!isLoading; else loading\">\n <div class=\"d-flex align-items-center gap-2 pb-3\">\n <ion-icon name=\"information-circle\" />\n <h5 class=\"m-0\">Information</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-lg-4\" label=\"Action\" formControlName=\"action\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Source IP\" formControlName=\"sourceIp\" />\n </div>\n </div>\n \n <up-input class=\"mb-4\" label=\"User Name\" formControlName=\"userName\" />\n <up-textarea class=\"mb-4\" label=\"Description\" formControlName=\"description\" />\n\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\">\n <ion-icon name=\"laptop\" />\n <h5 class=\"m-0\">System Information</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Action Date\" formControlName=\"createdAt\" />\n <up-input class=\"mb-lg-4\" label=\"Source Platform\" formControlName=\"sourcePlatform\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"MS Source\" formControlName=\"msSource\" />\n <up-input class=\"mb-4\" label=\"Function\" formControlName=\"function\" />\n </div>\n </div>\n </form>\n\n <ng-template #loading>\n <ion-skeleton-text class=\"sk-input mx-4 mb-4\" *ngFor=\"let i of [0,1,2,3,4,5,6]\" />\n </ng-template> \n </up-tab-content>\n\n <up-tab-content header=\"Attributes\" fragment=\"attributes\">\n <up-pagination-grid id=\"grid-audit-detail\" rowModelType=\"clientSide\" [config]=\"gridConfig\" (onGridReady)=\"setGridApi($event)\" />\n </up-tab-content>\n</up-tab-group>\n", styles: ["ion-icon{font-size:24px;margin-right:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }, { kind: "ngmodule", type: TabsComponentModule }, { kind: "component", type: i6.TabGroupComponent, selector: "up-tab-group", outputs: ["onChange"] }, { kind: "component", type: i7.TabContentComponent, selector: "up-tab-content", inputs: ["header"] }, { kind: "component", type: FormInputComponent, selector: "up-input", inputs: ["label", "value", "required", "disabled"], outputs: ["onInput"] }, { kind: "component", type: FormTextareaComponent, selector: "up-textarea", inputs: ["required", "disabled"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
111
111
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuditDetailComponent, decorators: [{
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuditDetailComponent, decorators: [{
113
113
  type: Component,
114
114
  args: [{ standalone: true, selector: 'up-audit-detail', imports: [
115
115
  CommonModule,
@@ -119,6 +119,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
119
119
  FormInputComponent,
120
120
  FormTextareaComponent,
121
121
  ReactiveFormsModule
122
- ], template: "<up-tab-group class=\"h-100\">\n <up-tab-content title=\"Detail\" fragment=\"detail\">\n <form [formGroup]=\"form\" class=\"px-4 pb-4\" *ngIf=\"!isLoading; else loading\">\n <div class=\"d-flex align-items-center gap-2 pb-3\">\n <ion-icon name=\"information-circle\" />\n <h5 class=\"m-0\">Information</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-lg-4\" label=\"Action\" formControlName=\"action\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Source IP\" formControlName=\"sourceIp\" />\n </div>\n </div>\n \n <up-input class=\"mb-4\" label=\"User Name\" formControlName=\"userName\" />\n <up-textarea class=\"mb-4\" label=\"Description\" formControlName=\"description\" />\n\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\">\n <ion-icon name=\"laptop\" />\n <h5 class=\"m-0\">System Information</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Action Date\" formControlName=\"createdAt\" />\n <up-input class=\"mb-lg-4\" label=\"Source Platform\" formControlName=\"sourcePlatform\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"MS Source\" formControlName=\"msSource\" />\n <up-input class=\"mb-4\" label=\"Function\" formControlName=\"function\" />\n </div>\n </div>\n </form>\n\n <ng-template #loading>\n <ion-skeleton-text class=\"sk-input mx-4 mb-4\" *ngFor=\"let i of [0,1,2,3,4,5,6]\" />\n </ng-template> \n </up-tab-content>\n\n <up-tab-content title=\"Attributes\" fragment=\"attributes\">\n <up-pagination-grid id=\"grid-audit-detail\" rowModelType=\"clientSide\" [config]=\"gridConfig\" (onGridReady)=\"setGridApi($event)\" />\n </up-tab-content>\n</up-tab-group>\n", styles: ["ion-icon{font-size:24px;margin-right:5px}\n"] }]
122
+ ], template: "<up-tab-group class=\"h-100\">\n <up-tab-content header=\"Detail\" fragment=\"detail\">\n <form [formGroup]=\"form\" class=\"px-4 pb-4\" *ngIf=\"!isLoading; else loading\">\n <div class=\"d-flex align-items-center gap-2 pb-3\">\n <ion-icon name=\"information-circle\" />\n <h5 class=\"m-0\">Information</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-lg-4\" label=\"Action\" formControlName=\"action\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Source IP\" formControlName=\"sourceIp\" />\n </div>\n </div>\n \n <up-input class=\"mb-4\" label=\"User Name\" formControlName=\"userName\" />\n <up-textarea class=\"mb-4\" label=\"Description\" formControlName=\"description\" />\n\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\">\n <ion-icon name=\"laptop\" />\n <h5 class=\"m-0\">System Information</h5>\n </div>\n\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Action Date\" formControlName=\"createdAt\" />\n <up-input class=\"mb-lg-4\" label=\"Source Platform\" formControlName=\"sourcePlatform\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"MS Source\" formControlName=\"msSource\" />\n <up-input class=\"mb-4\" label=\"Function\" formControlName=\"function\" />\n </div>\n </div>\n </form>\n\n <ng-template #loading>\n <ion-skeleton-text class=\"sk-input mx-4 mb-4\" *ngFor=\"let i of [0,1,2,3,4,5,6]\" />\n </ng-template> \n </up-tab-content>\n\n <up-tab-content header=\"Attributes\" fragment=\"attributes\">\n <up-pagination-grid id=\"grid-audit-detail\" rowModelType=\"clientSide\" [config]=\"gridConfig\" (onGridReady)=\"setGridApi($event)\" />\n </up-tab-content>\n</up-tab-group>\n", styles: ["ion-icon{font-size:24px;margin-right:5px}\n"] }]
123
123
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AuditService }, { type: i3.ActivatedRoute }, { type: i4.NavController }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC9kZXRhaWwvYXVkaXQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC9kZXRhaWwvYXVkaXQtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxPQUFPLEVBQWUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSxnQkFBZ0IsQ0FBQztBQU01RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBaUJ2RSxNQUFNLE9BQU8sb0JBQW9CO0lBNEIvQixZQUNxQixFQUFlLEVBQ2YsT0FBcUIsRUFDckIsS0FBcUIsRUFDckIsT0FBc0I7UUFIdEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQTlCM0IsZUFBVSxHQUFlO1lBQ3ZDLGNBQWMs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QU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVTLGVBQWUsQ0FBQyxHQUFXO1FBQ25DLE1BQU0sS0FBSyxHQUFHLG9EQUFvRCxDQUFDO1FBQ25FLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDOzhHQTNHVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwyRUMvQmpDLHl6RUFnREEsb0dEMUJJLFlBQVksK1BBQ1osV0FBVywwU0FDWCx1QkFBdUIsaU1BQ3ZCLG1CQUFtQixvTkFDbkIsa0JBQWtCLHNIQUNsQixxQkFBcUIseUZBQ3JCLG1CQUFtQjs7MkZBR1Ysb0JBQW9CO2tCQWZoQyxTQUFTO2lDQUNJLElBQUksWUFDTixpQkFBaUIsV0FHbEI7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsbUJBQW1CO3FCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGZvcm1hdERhdGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElvbmljTW9kdWxlLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgR3JpZEFwaSwgR3JpZFJlYWR5RXZlbnQgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBBdWRpdFRyYWlsIH0gZnJvbSAnLi8uLi8uLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5pbXBvcnQgeyBBdWRpdERldGFpbEZvcm0gfSBmcm9tICcuLi90eXBlcy9hdWRpdC1kZXRhaWwtZm9ybS50eXBlJztcbmltcG9ydCB7IEdyaWRDb25maWcgfSBmcm9tICcuLi8uLi9ncmlkcy9pbnRlcmZhY2VzL2dyaWQtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBdWRpdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2F1ZGl0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybXMvaW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybVRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybXMvdGV4dGFyZWEvZm9ybS10ZXh0YXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9ncmlkcy9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJzQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vdGFicy90YWJzLmNvbXBvbmVudC5tb2R1bGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICd1cC1hdWRpdC1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXVkaXQtZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgR3JpZFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgVGFic0NvbXBvbmVudE1vZHVsZSxcbiAgICBGb3JtSW5wdXRDb21wb25lbnQsXG4gICAgRm9ybVRleHRhcmVhQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdWRpdERldGFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGdyaWRDb25maWc6IEdyaWRDb25maWcgPSB7XG4gICAgdXNlVG90YWxSZWNvcmQ6IGZhbHNlLFxuICAgIGNvbERlZnM6IFtcbiAgICAgIHsgaGVhZGVyTmFtZTogJ0F0dHJpYnV0ZSBOYW1lJywgZmllbGQ6ICdhdHRyaWJ1dGUnLCBzb3J0OiAnYXNjJyB9LFxuICAgICAgeyBoZWFkZXJOYW1lOiAnT2xkIFZhbHVlJywgZmllbGQ6ICdvbGREYXRhJyB9LFxuICAgICAgeyBoZWFkZXJOYW1lOiAnTmV3IFZhbHVlJywgZmllbGQ6ICduZXdEYXRhJyB9XG4gICAgXVxuICB9O1xuICBwdWJsaWMgcmVhZG9ubHkgZm9ybTogRm9ybUdyb3VwPEF1ZGl0RGV0YWlsRm9ybT4gPSB0aGlzLmZiLmdyb3VwPEF1ZGl0RGV0YWlsRm9ybT4oe1xuICAgIGd1aWQ6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgIGFjdGlvbjogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlfSksXG4gICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgIHVzZXJOYW1lOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWV9KSxcbiAgICBzb3VyY2VJcDogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlfSksXG4gICAgY3JlYXRlZEF0OiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWV9KSxcbiAgICBtc1NvdXJjZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlfSksXG4gICAgc291cmNlUGxhdGZvcm06IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgIGZ1bmN0aW9uOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWV9KSxcbiAgfSk7XG4gIHB1YmxpYyBkYXRhITogQXVkaXRUcmFpbDtcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIHByb3RlY3RlZCBndWlkOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIGdyaWRBcGkhOiBHcmlkQXBpO1xuICBwcm90ZWN0ZWQgc3ViPzogU3Vic2NyaXB0aW9uO1xuICBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBzZXJ2aWNlOiBBdWRpdFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmF2Q3RybDogTmF2Q29udHJvbGxlclxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkeyB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTsgfVxuXG4gIHB1YmxpYyBzZXRHcmlkQXBpKHsgYXBpIH06IEdyaWRSZWFkeUV2ZW50KTogdm9pZHtcbiAgICB0aGlzLmdyaWRBcGkgPSBhcGk7XG4gICAgdGhpcy5nZXREYXRhKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YSgpOiB2b2lke1xuICAgIGNvbnN0IG5ld0d1aWQgPSB0aGlzLnJvdXRlLmNoaWxkcmVuWzBdLnNuYXBzaG90LnBhcmFtc1snYXVkaXQnXTtcbiAgICBpZiAoIW5ld0d1aWQgfHwgdGhpcy5ndWlkID09PSBuZXdHdWlkKSByZXR1cm47XG5cbiAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmdyaWRBcGk/LnNob3dMb2FkaW5nT3ZlcmxheSgpO1xuXG4gICAgdGhpcy5ndWlkID0gbmV3R3VpZDtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zdWIgPSB0aGlzLnNlcnZpY2UucXVlcnkoeyBndWlkOiB0aGlzLmd1aWQgfSwgJ2RhdGEgdGFncyB7IHRhZ0tleSB0YWdWYWx1ZSB9Jykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh7IGRhdGE6IHsgYXVkaXRNc0F1ZGl0VHJhaWw6IGRhdGEgfX0pID0+IHtcbiAgICAgICAgdGhpcy5ncmlkQXBpPy5oaWRlT3ZlcmxheSgpO1xuXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRoaXMubmF2Q3RybC5iYWNrKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBndWlkLCBhY3Rpb24sIGRlc2NyaXB0aW9uLCBmdW5jdGlvbjogZnVuYywgbXNTb3VyY2UsIHNvdXJjZUlwLCBjcmVhdGVkQXQgfSA9IGRhdGFbMF07XG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBndWlkLFxuICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jLCBcbiAgICAgICAgICBtc1NvdXJjZSwgc291cmNlSXAsXG4gICAgICAgICAgYWN0aW9uLCBkZXNjcmlwdGlvbixcbiAgICAgICAgICB1c2VyTmFtZTogZGF0YVswXS51c2VyPy5uYW1lLFxuICAgICAgICAgIHNvdXJjZVBsYXRmb3JtOiBkYXRhWzBdLnVzZXI/LnNvdXJjZVBsYXRmb3JtLFxuICAgICAgICAgIGNyZWF0ZWRBdDogZm9ybWF0RGF0ZShjcmVhdGVkQXQsICdkZCBNTU0geXl5eSBISDptbScsICdlbi1VUycpLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmdldENoYW5nZWREYXRhKGRhdGFbMF0uZGF0YSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMubmF2Q3RybC5iYWNrKClcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDaGFuZ2VkRGF0YSh7IG9sZERhdGEsIG5ld0RhdGEgfTogYW55KTogdm9pZHtcbiAgICBpZiAoIW5ld0RhdGEgfHwgQXJyYXkuaXNBcnJheShKU09OLnBhcnNlKG5ld0RhdGEpKSkge1xuICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCBbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb2JqTmV3RGF0YSA9IEpTT04ucGFyc2UobmV3RGF0YSk7XG4gICAgY29uc3QgY2hhbmdlZERhdGEgPSBPYmplY3QuZW50cmllcyhvbGREYXRhPyBKU09OLnBhcnNlKG9sZERhdGEpIDogSlNPTi5wYXJzZShuZXdEYXRhKSlcbiAgICAgIC5maWx0ZXIoKFtrZXksIG9sZFZhbF0pID0+IEpTT04uc3RyaW5naWZ5KG9sZERhdGE/IG9sZFZhbCA6IG51bGwpICE9PSBKU09OLnN0cmluZ2lmeShvYmpOZXdEYXRhW2tleV0pICYmICFrZXkubWF0Y2goL3VwZGF0ZXxjcmVhdGVkLykpXG4gICAgICAubWFwKChba2V5LCBvbGRWYWxdKSA9PiAoe1xuICAgICAgICBhdHRyaWJ1dGU6IGtleSxcbiAgICAgICAgb2xkRGF0YTogb2xkRGF0YT8gdGhpcy5mb3JtYXREYXRhKG9sZFZhbCkgOiBudWxsLFxuICAgICAgICBuZXdEYXRhOiB0aGlzLmZvcm1hdERhdGEob2JqTmV3RGF0YVtrZXldKVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCBjaGFuZ2VkRGF0YSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZm9ybWF0RGF0YSh2YWx1ZTogYW55KTogYW55e1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHZhbHVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIGlmICh0aGlzLmlzSXNvRGF0ZVN0cmluZyh2YWx1ZSkpIHJldHVybiBmb3JtYXREYXRlKHZhbHVlLCAnZGQgTU1NIHl5eXkgSEg6bW0nLCAnZW4tVVMnKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNJc29EYXRlU3RyaW5nKHN0cjogc3RyaW5nKTogYm9vbGVhbntcbiAgICBjb25zdCByZWdleCA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn0oXFwuXFxkezEsOX0pP1okLztcbiAgICByZXR1cm4gcmVnZXgudGVzdChzdHIpO1xuICB9ICBcbn1cbiIsIjx1cC10YWItZ3JvdXAgY2xhc3M9XCJoLTEwMFwiPlxuICAgIDx1cC10YWItY29udGVudCB0aXRsZT1cIkRldGFpbFwiIGZyYWdtZW50PVwiZGV0YWlsXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwicHgtNCBwYi00XCIgKm5nSWY9XCIhaXNMb2FkaW5nOyBlbHNlIGxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcGItM1wiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJpbmZvcm1hdGlvbi1jaXJjbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibS0wXCI+SW5mb3JtYXRpb248L2g1PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtbGctcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi1sZy00XCIgbGFiZWw9XCJBY3Rpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlNvdXJjZSBJUFwiIGZvcm1Db250cm9sTmFtZT1cInNvdXJjZUlwXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlVzZXIgTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInVzZXJOYW1lXCIgLz5cbiAgICAgICAgICAgICAgPHVwLXRleHRhcmVhIGNsYXNzPVwibWItNFwiIGxhYmVsPVwiRGVzY3JpcHRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIC8+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcGItMyBwdC0yXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxhcHRvcFwiIC8+XG4gICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtLTBcIj5TeXN0ZW0gSW5mb3JtYXRpb248L2g1PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtbGctcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi00XCIgbGFiZWw9XCJBY3Rpb24gRGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImNyZWF0ZWRBdFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IGNsYXNzPVwibWItbGctNFwiIGxhYmVsPVwiU291cmNlIFBsYXRmb3JtXCIgZm9ybUNvbnRyb2xOYW1lPVwic291cmNlUGxhdGZvcm1cIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIk1TIFNvdXJjZVwiIGZvcm1Db250cm9sTmFtZT1cIm1zU291cmNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi00XCIgbGFiZWw9XCJGdW5jdGlvblwiIGZvcm1Db250cm9sTmFtZT1cImZ1bmN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgICAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwic2staW5wdXQgbXgtNCBtYi00XCIgKm5nRm9yPVwibGV0IGkgb2YgWzAsMSwyLDMsNCw1LDZdXCIgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT4gICAgICAgIFxuICAgIDwvdXAtdGFiLWNvbnRlbnQ+XG5cbiAgICA8dXAtdGFiLWNvbnRlbnQgdGl0bGU9XCJBdHRyaWJ1dGVzXCIgZnJhZ21lbnQ9XCJhdHRyaWJ1dGVzXCI+XG4gICAgICAgIDx1cC1wYWdpbmF0aW9uLWdyaWQgaWQ9XCJncmlkLWF1ZGl0LWRldGFpbFwiIHJvd01vZGVsVHlwZT1cImNsaWVudFNpZGVcIiBbY29uZmlnXT1cImdyaWRDb25maWdcIiAob25HcmlkUmVhZHkpPVwic2V0R3JpZEFwaSgkZXZlbnQpXCIgLz5cbiAgICA8L3VwLXRhYi1jb250ZW50PlxuPC91cC10YWItZ3JvdXA+XG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC9kZXRhaWwvYXVkaXQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC9kZXRhaWwvYXVkaXQtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxPQUFPLEVBQWUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSxnQkFBZ0IsQ0FBQztBQU01RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBaUJ2RSxNQUFNLE9BQU8sb0JBQW9CO0lBNEIvQixZQUNxQixFQUFlLEVBQ2YsT0FBcUIsRUFDckIsS0FBcUIsRUFDckIsT0FBc0I7UUFIdEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQTlCM0IsZUFBVSxHQUFlO1lBQ3ZDLGNBQWMs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QUssS0FBSyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVMsZUFBZSxDQUFDLEdBQVc7UUFDbkMsTUFBTSxLQUFLLEdBQUcsb0RBQW9ELENBQUM7UUFDbkUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OEdBM0dVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDJFQy9CakMsMnpFQWdEQSxvR0QxQkksWUFBWSwrUEFDWixXQUFXLDBTQUNYLHVCQUF1QixpTUFDdkIsbUJBQW1CLHdPQUNuQixrQkFBa0IsK0hBQ2xCLHFCQUFxQix5RkFDckIsbUJBQW1COzsyRkFHVixvQkFBb0I7a0JBZmhDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGlCQUFpQixXQUdsQjt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixtQkFBbUI7cUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUsIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBHcmlkQXBpLCBHcmlkUmVhZHlFdmVudCB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7IEF1ZGl0VHJhaWwgfSBmcm9tICcuLy4uLy4uLy4uLy4uL2dyYXBocWwvZ2VuZXJhdGVkJztcbmltcG9ydCB7IEF1ZGl0RGV0YWlsRm9ybSB9IGZyb20gJy4uL3R5cGVzL2F1ZGl0LWRldGFpbC1mb3JtLnR5cGUnO1xuaW1wb3J0IHsgR3JpZENvbmZpZyB9IGZyb20gJy4uLy4uL2dyaWRzL2ludGVyZmFjZXMvZ3JpZC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEF1ZGl0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvYXVkaXQuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3Jtcy9pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3Jtcy90ZXh0YXJlYS9mb3JtLXRleHRhcmVhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmlkUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2dyaWRzL2dyaWQtcGFnaW5hdGlvbi9ncmlkLXBhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYnNDb21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi90YWJzL3RhYnMuY29tcG9uZW50Lm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWF1ZGl0LWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdWRpdC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdWRpdC1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBHcmlkUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBUYWJzQ29tcG9uZW50TW9kdWxlLFxuICAgIEZvcm1JbnB1dENvbXBvbmVudCxcbiAgICBGb3JtVGV4dGFyZWFDb21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1ZGl0RGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgZ3JpZENvbmZpZzogR3JpZENvbmZpZyA9IHtcbiAgICB1c2VUb3RhbFJlY29yZDogZmFsc2UsXG4gICAgY29sRGVmczogW1xuICAgICAgeyBoZWFkZXJOYW1lOiAnQXR0cmlidXRlIE5hbWUnLCBmaWVsZDogJ2F0dHJpYnV0ZScsIHNvcnQ6ICdhc2MnIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdPbGQgVmFsdWUnLCBmaWVsZDogJ29sZERhdGEnIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdOZXcgVmFsdWUnLCBmaWVsZDogJ25ld0RhdGEnIH1cbiAgICBdXG4gIH07XG4gIHB1YmxpYyByZWFkb25seSBmb3JtOiBGb3JtR3JvdXA8QXVkaXREZXRhaWxGb3JtPiA9IHRoaXMuZmIuZ3JvdXA8QXVkaXREZXRhaWxGb3JtPih7XG4gICAgZ3VpZDogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlfSksXG4gICAgYWN0aW9uOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWV9KSxcbiAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlfSksXG4gICAgdXNlck5hbWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgIHNvdXJjZUlwOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWV9KSxcbiAgICBjcmVhdGVkQXQ6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgIG1zU291cmNlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWV9KSxcbiAgICBzb3VyY2VQbGF0Zm9ybTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlfSksXG4gICAgZnVuY3Rpb246IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZX0pLFxuICB9KTtcbiAgcHVibGljIGRhdGEhOiBBdWRpdFRyYWlsO1xuICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIGd1aWQ6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgZ3JpZEFwaSE6IEdyaWRBcGk7XG4gIHByb3RlY3RlZCBzdWI/OiBTdWJzY3JpcHRpb247XG4gIFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlcnZpY2U6IEF1ZGl0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBuYXZDdHJsOiBOYXZDb250cm9sbGVyXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWR7IHRoaXMuc3ViPy51bnN1YnNjcmliZSgpOyB9XG5cbiAgcHVibGljIHNldEdyaWRBcGkoeyBhcGkgfTogR3JpZFJlYWR5RXZlbnQpOiB2b2lke1xuICAgIHRoaXMuZ3JpZEFwaSA9IGFwaTtcbiAgICB0aGlzLmdldERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhKCk6IHZvaWR7XG4gICAgY29uc3QgbmV3R3VpZCA9IHRoaXMucm91dGUuY2hpbGRyZW5bMF0uc25hcHNob3QucGFyYW1zWydhdWRpdCddO1xuICAgIGlmICghbmV3R3VpZCB8fCB0aGlzLmd1aWQgPT09IG5ld0d1aWQpIHJldHVybjtcblxuICAgIHRoaXMuc3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZ3JpZEFwaT8uc2hvd0xvYWRpbmdPdmVybGF5KCk7XG5cbiAgICB0aGlzLmd1aWQgPSBuZXdHdWlkO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN1YiA9IHRoaXMuc2VydmljZS5xdWVyeSh7IGd1aWQ6IHRoaXMuZ3VpZCB9LCAnZGF0YSB0YWdzIHsgdGFnS2V5IHRhZ1ZhbHVlIH0nKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHsgZGF0YTogeyBhdWRpdE1zQXVkaXRUcmFpbDogZGF0YSB9fSkgPT4ge1xuICAgICAgICB0aGlzLmdyaWRBcGk/LmhpZGVPdmVybGF5KCk7XG5cbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgdGhpcy5uYXZDdHJsLmJhY2soKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGd1aWQsIGFjdGlvbiwgZGVzY3JpcHRpb24sIGZ1bmN0aW9uOiBmdW5jLCBtc1NvdXJjZSwgc291cmNlSXAsIGNyZWF0ZWRBdCB9ID0gZGF0YVswXTtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIGd1aWQsXG4gICAgICAgICAgZnVuY3Rpb246IGZ1bmMsIFxuICAgICAgICAgIG1zU291cmNlLCBzb3VyY2VJcCxcbiAgICAgICAgICBhY3Rpb24sIGRlc2NyaXB0aW9uLFxuICAgICAgICAgIHVzZXJOYW1lOiBkYXRhWzBdLnVzZXI/Lm5hbWUsXG4gICAgICAgICAgc291cmNlUGxhdGZvcm06IGRhdGFbMF0udXNlcj8uc291cmNlUGxhdGZvcm0sXG4gICAgICAgICAgY3JlYXRlZEF0OiBmb3JtYXREYXRlKGNyZWF0ZWRBdCwgJ2RkIE1NTSB5eXl5IEhIOm1tJywgJ2VuLVVTJyksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ2V0Q2hhbmdlZERhdGEoZGF0YVswXS5kYXRhKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5uYXZDdHJsLmJhY2soKVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENoYW5nZWREYXRhKHsgb2xkRGF0YSwgbmV3RGF0YSB9OiBhbnkpOiB2b2lke1xuICAgIGlmICghbmV3RGF0YSB8fCBBcnJheS5pc0FycmF5KEpTT04ucGFyc2UobmV3RGF0YSkpKSB7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvYmpOZXdEYXRhID0gSlNPTi5wYXJzZShuZXdEYXRhKTtcbiAgICBjb25zdCBjaGFuZ2VkRGF0YSA9IE9iamVjdC5lbnRyaWVzKG9sZERhdGE/IEpTT04ucGFyc2Uob2xkRGF0YSkgOiBKU09OLnBhcnNlKG5ld0RhdGEpKVxuICAgICAgLmZpbHRlcigoW2tleSwgb2xkVmFsXSkgPT4gSlNPTi5zdHJpbmdpZnkob2xkRGF0YT8gb2xkVmFsIDogbnVsbCkgIT09IEpTT04uc3RyaW5naWZ5KG9iak5ld0RhdGFba2V5XSkgJiYgIWtleS5tYXRjaCgvdXBkYXRlfGNyZWF0ZWQvKSlcbiAgICAgIC5tYXAoKFtrZXksIG9sZFZhbF0pID0+ICh7XG4gICAgICAgIGF0dHJpYnV0ZToga2V5LFxuICAgICAgICBvbGREYXRhOiBvbGREYXRhPyB0aGlzLmZvcm1hdERhdGEob2xkVmFsKSA6IG51bGwsXG4gICAgICAgIG5ld0RhdGE6IHRoaXMuZm9ybWF0RGF0YShvYmpOZXdEYXRhW2tleV0pXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIGNoYW5nZWREYXRhKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmb3JtYXREYXRhKHZhbHVlOiBhbnkpOiBhbnl7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gdmFsdWU7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuaXNJc29EYXRlU3RyaW5nKHZhbHVlKSkgcmV0dXJuIGZvcm1hdERhdGUodmFsdWUsICdkZCBNTU0geXl5eSBISDptbScsICdlbi1VUycpO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0lzb0RhdGVTdHJpbmcoc3RyOiBzdHJpbmcpOiBib29sZWFue1xuICAgIGNvbnN0IHJlZ2V4ID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfShcXC5cXGR7MSw5fSk/WiQvO1xuICAgIHJldHVybiByZWdleC50ZXN0KHN0cik7XG4gIH0gIFxufVxuIiwiPHVwLXRhYi1ncm91cCBjbGFzcz1cImgtMTAwXCI+XG4gICAgPHVwLXRhYi1jb250ZW50IGhlYWRlcj1cIkRldGFpbFwiIGZyYWdtZW50PVwiZGV0YWlsXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwicHgtNCBwYi00XCIgKm5nSWY9XCIhaXNMb2FkaW5nOyBlbHNlIGxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcGItM1wiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJpbmZvcm1hdGlvbi1jaXJjbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibS0wXCI+SW5mb3JtYXRpb248L2g1PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtbGctcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi1sZy00XCIgbGFiZWw9XCJBY3Rpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlNvdXJjZSBJUFwiIGZvcm1Db250cm9sTmFtZT1cInNvdXJjZUlwXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlVzZXIgTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInVzZXJOYW1lXCIgLz5cbiAgICAgICAgICAgICAgPHVwLXRleHRhcmVhIGNsYXNzPVwibWItNFwiIGxhYmVsPVwiRGVzY3JpcHRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIC8+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcGItMyBwdC0yXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxhcHRvcFwiIC8+XG4gICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtLTBcIj5TeXN0ZW0gSW5mb3JtYXRpb248L2g1PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtbGctcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi00XCIgbGFiZWw9XCJBY3Rpb24gRGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImNyZWF0ZWRBdFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IGNsYXNzPVwibWItbGctNFwiIGxhYmVsPVwiU291cmNlIFBsYXRmb3JtXCIgZm9ybUNvbnRyb2xOYW1lPVwic291cmNlUGxhdGZvcm1cIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIk1TIFNvdXJjZVwiIGZvcm1Db250cm9sTmFtZT1cIm1zU291cmNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi00XCIgbGFiZWw9XCJGdW5jdGlvblwiIGZvcm1Db250cm9sTmFtZT1cImZ1bmN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgICAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwic2staW5wdXQgbXgtNCBtYi00XCIgKm5nRm9yPVwibGV0IGkgb2YgWzAsMSwyLDMsNCw1LDZdXCIgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT4gICAgICAgIFxuICAgIDwvdXAtdGFiLWNvbnRlbnQ+XG5cbiAgICA8dXAtdGFiLWNvbnRlbnQgaGVhZGVyPVwiQXR0cmlidXRlc1wiIGZyYWdtZW50PVwiYXR0cmlidXRlc1wiPlxuICAgICAgICA8dXAtcGFnaW5hdGlvbi1ncmlkIGlkPVwiZ3JpZC1hdWRpdC1kZXRhaWxcIiByb3dNb2RlbFR5cGU9XCJjbGllbnRTaWRlXCIgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgKG9uR3JpZFJlYWR5KT1cInNldEdyaWRBcGkoJGV2ZW50KVwiIC8+XG4gICAgPC91cC10YWItY29udGVudD5cbjwvdXAtdGFiLWdyb3VwPlxuIl19
@@ -52,10 +52,10 @@ export class AuditListComponent {
52
52
  this.criteria.tagValues = [guid];
53
53
  this.gridComponent.reset();
54
54
  }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuditListComponent, deps: [{ token: 'id', attribute: true }, { token: 'mainUrl', attribute: true }, { token: i1.Router }, { token: i2.AuditService }], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AuditListComponent, isStandalone: true, selector: "up-audit-list", inputs: { relatedEntities: "relatedEntities", tagKeys: "tagKeys" }, host: { classAttribute: "d-flex flex-column h-100" }, viewQueries: [{ propertyName: "gridComponent", first: true, predicate: GridPaginationComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"d-flex justify-content-end px-4 pb-4 flex-shrink-0\">\n <up-filter class=\"w-100\" id=\"audit-filter\" placeholder=\"Type to search\" [config]=\"filterConfig\" (onSearch)=\"search($event);\" />\n</div>\n \n<up-pagination-grid id=\"grid-audit\" class=\"flex-grow-1\" [config]=\"gridConfig\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"rowClicked($event)\" />\n", styles: [""], dependencies: [{ kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }] }); }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuditListComponent, deps: [{ token: 'id', attribute: true }, { token: 'mainUrl', attribute: true }, { token: i1.Router }, { token: i2.AuditService }], target: i0.ɵɵFactoryTarget.Component }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AuditListComponent, isStandalone: true, selector: "up-audit-list", inputs: { relatedEntities: "relatedEntities", tagKeys: "tagKeys" }, host: { classAttribute: "d-flex flex-column h-100" }, viewQueries: [{ propertyName: "gridComponent", first: true, predicate: GridPaginationComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"d-flex justify-content-end px-4 pb-4 flex-shrink-0\">\n <up-filter class=\"w-100\" id=\"audit-filter\" placeholder=\"Type to search\" [config]=\"filterConfig\" (onSearch)=\"search($event);\" />\n</div>\n \n<up-pagination-grid id=\"grid-audit\" class=\"flex-grow-1\" [config]=\"gridConfig\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"rowClicked($event)\" />\n", styles: [""], dependencies: [{ kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }] }); }
57
57
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuditListComponent, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuditListComponent, decorators: [{
59
59
  type: Component,
60
60
  args: [{ standalone: true, selector: 'up-audit-list', host: {
61
61
  class: 'd-flex flex-column h-100'