@alfresco/adf-process-services 8.1.0-16320806191 → 9.1.0-16312921641

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 (125) hide show
  1. package/fesm2022/adf-process-services.mjs +297 -301
  2. package/fesm2022/adf-process-services.mjs.map +1 -1
  3. package/package.json +4 -6
  4. package/esm2022/adf-process-services.mjs +0 -5
  5. package/esm2022/lib/app-list/apps-list.component.mjs +0 -195
  6. package/esm2022/lib/app-list/icon.model.mjs +0 -166
  7. package/esm2022/lib/app-list/index.mjs +0 -18
  8. package/esm2022/lib/app-list/public-api.mjs +0 -23
  9. package/esm2022/lib/app-list/select-apps-dialog/select-apps-dialog.component.mjs +0 -53
  10. package/esm2022/lib/attachment/create-process-attachment/create-process-attachment.component.mjs +0 -73
  11. package/esm2022/lib/attachment/create-task-attachment/create-task-attachment.component.mjs +0 -73
  12. package/esm2022/lib/attachment/index.mjs +0 -18
  13. package/esm2022/lib/attachment/process-attachment-list/process-attachment-list.component.mjs +0 -197
  14. package/esm2022/lib/attachment/public-api.mjs +0 -31
  15. package/esm2022/lib/attachment/task-attachment-list/task-attachment-list.component.mjs +0 -196
  16. package/esm2022/lib/compat/types.mjs +0 -18
  17. package/esm2022/lib/form/events/validate-dynamic-table-row.event.mjs +0 -26
  18. package/esm2022/lib/form/form-custom-outcomes.component.mjs +0 -31
  19. package/esm2022/lib/form/form-list/form-list.component.mjs +0 -50
  20. package/esm2022/lib/form/form.component.mjs +0 -346
  21. package/esm2022/lib/form/index.mjs +0 -18
  22. package/esm2022/lib/form/model/form-definition.model.mjs +0 -92
  23. package/esm2022/lib/form/process-form-rendering.service.mjs +0 -55
  24. package/esm2022/lib/form/public-api.mjs +0 -32
  25. package/esm2022/lib/form/services/activiti-alfresco.service.mjs +0 -113
  26. package/esm2022/lib/form/services/ecm-model.service.mjs +0 -156
  27. package/esm2022/lib/form/services/editor.service.mjs +0 -87
  28. package/esm2022/lib/form/services/external-alfresco-api.service.mjs +0 -57
  29. package/esm2022/lib/form/services/index.mjs +0 -26
  30. package/esm2022/lib/form/services/model.service.mjs +0 -130
  31. package/esm2022/lib/form/services/process-content.service.mjs +0 -223
  32. package/esm2022/lib/form/services/process-definition.service.mjs +0 -93
  33. package/esm2022/lib/form/services/task-form.service.mjs +0 -127
  34. package/esm2022/lib/form/services/task.service.mjs +0 -77
  35. package/esm2022/lib/form/start-form/start-form.component.mjs +0 -141
  36. package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog-component.interface.mjs +0 -18
  37. package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog.component.mjs +0 -115
  38. package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog.service.mjs +0 -100
  39. package/esm2022/lib/form/widgets/content-widget/attach-file-widget.component.mjs +0 -254
  40. package/esm2022/lib/form/widgets/content-widget/attach-folder-widget.component.mjs +0 -93
  41. package/esm2022/lib/form/widgets/content-widget/index.mjs +0 -18
  42. package/esm2022/lib/form/widgets/content-widget/public-api.mjs +0 -22
  43. package/esm2022/lib/form/widgets/document/content.widget.mjs +0 -125
  44. package/esm2022/lib/form/widgets/document/document.widget.mjs +0 -61
  45. package/esm2022/lib/form/widgets/dropdown/dropdown.widget.mjs +0 -182
  46. package/esm2022/lib/form/widgets/dynamic-table/dynamic-table.widget.mjs +0 -192
  47. package/esm2022/lib/form/widgets/dynamic-table/editors/amount/amount.editor.mjs +0 -47
  48. package/esm2022/lib/form/widgets/dynamic-table/editors/boolean/boolean.editor.mjs +0 -42
  49. package/esm2022/lib/form/widgets/dynamic-table/editors/date/date.editor.mjs +0 -84
  50. package/esm2022/lib/form/widgets/dynamic-table/editors/datetime/datetime.editor.mjs +0 -84
  51. package/esm2022/lib/form/widgets/dynamic-table/editors/dropdown/dropdown.editor.mjs +0 -95
  52. package/esm2022/lib/form/widgets/dynamic-table/editors/models/cell-validator.model.mjs +0 -18
  53. package/esm2022/lib/form/widgets/dynamic-table/editors/models/date-cell-validator-model.mjs +0 -47
  54. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-row-validation-summary.model.mjs +0 -24
  55. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-column-option.model.mjs +0 -18
  56. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-column.model.mjs +0 -18
  57. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-row.model.mjs +0 -18
  58. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table.widget.model.mjs +0 -159
  59. package/esm2022/lib/form/widgets/dynamic-table/editors/models/number-cell-validator.model.mjs +0 -45
  60. package/esm2022/lib/form/widgets/dynamic-table/editors/models/required-cell-validator.model.mjs +0 -40
  61. package/esm2022/lib/form/widgets/dynamic-table/editors/row-editor/row.editor.mjs +0 -89
  62. package/esm2022/lib/form/widgets/dynamic-table/editors/text/text.editor.mjs +0 -47
  63. package/esm2022/lib/form/widgets/dynamic-table/index.mjs +0 -18
  64. package/esm2022/lib/form/widgets/dynamic-table/public-api.mjs +0 -44
  65. package/esm2022/lib/form/widgets/file-viewer/file-viewer.widget.mjs +0 -46
  66. package/esm2022/lib/form/widgets/functional-group/functional-group.widget.mjs +0 -167
  67. package/esm2022/lib/form/widgets/index.mjs +0 -18
  68. package/esm2022/lib/form/widgets/people/people.widget.mjs +0 -169
  69. package/esm2022/lib/form/widgets/public-api.mjs +0 -54
  70. package/esm2022/lib/form/widgets/radio-buttons/radio-buttons.widget.mjs +0 -97
  71. package/esm2022/lib/form/widgets/typeahead/typeahead.widget.mjs +0 -152
  72. package/esm2022/lib/form/widgets/upload/upload.widget.mjs +0 -128
  73. package/esm2022/lib/people/components/people/people.component.mjs +0 -124
  74. package/esm2022/lib/people/components/people-list/people-list.component.mjs +0 -74
  75. package/esm2022/lib/people/components/people-search/people-search.component.mjs +0 -83
  76. package/esm2022/lib/people/components/people-search-field/people-search-field.component.mjs +0 -90
  77. package/esm2022/lib/people/components/people-selector/people-selector.component.mjs +0 -76
  78. package/esm2022/lib/people/helpers/get-display-user.mjs +0 -22
  79. package/esm2022/lib/people/index.mjs +0 -18
  80. package/esm2022/lib/people/interfaces/perform-search-callback.interface.mjs +0 -18
  81. package/esm2022/lib/people/public-api.mjs +0 -35
  82. package/esm2022/lib/process-comments/index.mjs +0 -21
  83. package/esm2022/lib/process-comments/process-comments.component.mjs +0 -45
  84. package/esm2022/lib/process-comments/services/comment-process.service.mjs +0 -77
  85. package/esm2022/lib/process-list/components/process-audit/process-audit.directive.mjs +0 -105
  86. package/esm2022/lib/process-list/components/process-filters/process-filters.component.mjs +0 -211
  87. package/esm2022/lib/process-list/components/process-instance-details/process-instance-details.component.mjs +0 -142
  88. package/esm2022/lib/process-list/components/process-instance-header/process-instance-header.component.mjs +0 -123
  89. package/esm2022/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.mjs +0 -163
  90. package/esm2022/lib/process-list/components/process-list/process-list.component.mjs +0 -327
  91. package/esm2022/lib/process-list/components/start-process/start-process.component.mjs +0 -423
  92. package/esm2022/lib/process-list/index.mjs +0 -18
  93. package/esm2022/lib/process-list/public-api.mjs +0 -44
  94. package/esm2022/lib/process-list/services/process-filter.service.mjs +0 -182
  95. package/esm2022/lib/process-list/services/process.service.mjs +0 -259
  96. package/esm2022/lib/process.module.mjs +0 -132
  97. package/esm2022/lib/services/apps-process.service.mjs +0 -58
  98. package/esm2022/lib/services/people-process.service.mjs +0 -124
  99. package/esm2022/lib/services/task-comments.service.mjs +0 -65
  100. package/esm2022/lib/task-comments/index.mjs +0 -21
  101. package/esm2022/lib/task-comments/task-comments.component.mjs +0 -44
  102. package/esm2022/lib/task-list/components/attach-form/attach-form.component.mjs +0 -127
  103. package/esm2022/lib/task-list/components/checklist/checklist.component.mjs +0 -140
  104. package/esm2022/lib/task-list/components/start-task/start-task.component.mjs +0 -221
  105. package/esm2022/lib/task-list/components/task-details/task-details.component.mjs +0 -360
  106. package/esm2022/lib/task-list/components/task-filters/task-filters.component.mjs +0 -261
  107. package/esm2022/lib/task-list/components/task-form/claim-task.directive.mjs +0 -77
  108. package/esm2022/lib/task-list/components/task-form/task-form.component.mjs +0 -313
  109. package/esm2022/lib/task-list/components/task-form/unclaim-task.directive.mjs +0 -77
  110. package/esm2022/lib/task-list/components/task-header/task-header.component.mjs +0 -361
  111. package/esm2022/lib/task-list/components/task-list/task-list.component.mjs +0 -359
  112. package/esm2022/lib/task-list/components/task-standalone/task-standalone.component.mjs +0 -82
  113. package/esm2022/lib/task-list/index.mjs +0 -18
  114. package/esm2022/lib/task-list/models/form.model.mjs +0 -26
  115. package/esm2022/lib/task-list/models/task-details.event.mjs +0 -32
  116. package/esm2022/lib/task-list/models/task-preset.model.mjs +0 -41
  117. package/esm2022/lib/task-list/models/user-event.model.mjs +0 -18
  118. package/esm2022/lib/task-list/models/user-group.model.mjs +0 -18
  119. package/esm2022/lib/task-list/public-api.mjs +0 -60
  120. package/esm2022/lib/task-list/services/process-upload.service.mjs +0 -42
  121. package/esm2022/lib/task-list/services/task-filter.service.mjs +0 -249
  122. package/esm2022/lib/task-list/services/task-upload.service.mjs +0 -42
  123. package/esm2022/lib/task-list/services/tasklist.service.mjs +0 -251
  124. package/esm2022/lib/task-list/validators/task-description.validator.mjs +0 -26
  125. package/esm2022/public-api.mjs +0 -30
@@ -1,211 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';
18
- import { ProcessFilterService } from '../../services/process-filter.service';
19
- import { AppsProcessService } from '../../../services/apps-process.service';
20
- import { IconModel } from '../../../app-list/icon.model';
21
- import { NavigationStart, Router } from '@angular/router';
22
- import { filter } from 'rxjs/operators';
23
- import { CommonModule, Location } from '@angular/common';
24
- import { TranslatePipe } from '@ngx-translate/core';
25
- import { MatButtonModule } from '@angular/material/button';
26
- import { IconComponent } from '@alfresco/adf-core';
27
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
28
- import * as i0 from "@angular/core";
29
- import * as i1 from "../../services/process-filter.service";
30
- import * as i2 from "../../../services/apps-process.service";
31
- import * as i3 from "@angular/router";
32
- import * as i4 from "@angular/common";
33
- import * as i5 from "@angular/material/button";
34
- export class ProcessFiltersComponent {
35
- constructor(processFilterService, appsProcessService, router, location) {
36
- this.processFilterService = processFilterService;
37
- this.appsProcessService = appsProcessService;
38
- this.router = router;
39
- this.location = location;
40
- /** Emitted when a filter is being clicked from the UI. */
41
- this.filterClicked = new EventEmitter();
42
- /** Emitted when the list of filters has been successfully loaded from the server. */
43
- this.success = new EventEmitter();
44
- /** Emitted when an error occurs. */
45
- this.error = new EventEmitter();
46
- /** Toggle to show or hide the filter's icon. */
47
- this.showIcon = true;
48
- /** Emitted when a filter is being selected based on the filterParam input. */
49
- this.filterSelected = new EventEmitter();
50
- this.filters = [];
51
- this.active = false;
52
- this.destroyRef = inject(DestroyRef);
53
- }
54
- ngOnInit() {
55
- this.iconsMDL = new IconModel();
56
- this.router.events
57
- .pipe(filter((event) => event instanceof NavigationStart), takeUntilDestroyed(this.destroyRef))
58
- .subscribe((navigationStart) => {
59
- const activeRoute = navigationStart.url;
60
- this.isProcessActive = activeRoute.includes('processes');
61
- });
62
- const currentRoute = this.location.path();
63
- this.isProcessRoute = currentRoute.includes('processes');
64
- }
65
- ngOnChanges(changes) {
66
- const appId = changes['appId'];
67
- const appName = changes['appName'];
68
- const filterParam = changes['filterParam'];
69
- if (appId && (appId.currentValue || appId.currentValue === null)) {
70
- this.getFiltersByAppId(appId.currentValue);
71
- }
72
- else if (appName?.currentValue) {
73
- this.getFiltersByAppName(appName.currentValue);
74
- }
75
- else if (filterParam && filterParam.currentValue !== filterParam.previousValue) {
76
- this.selectProcessFilter(filterParam.currentValue);
77
- }
78
- }
79
- isActiveRoute(filterActive) {
80
- return (this.isProcessActive || this.isProcessRoute) && this.currentFilter === filterActive;
81
- }
82
- /**
83
- * Return the filter list filtered by appId
84
- *
85
- * @param appId - optional
86
- */
87
- getFiltersByAppId(appId) {
88
- this.processFilterService.getProcessFilters(appId).subscribe((res) => {
89
- if (res.length === 0 && this.isFilterListEmpty()) {
90
- this.processFilterService.createDefaultFilters(appId).subscribe((resDefault) => {
91
- this.resetFilter();
92
- this.filters = resDefault;
93
- this.selectProcessFilter(this.filterParam);
94
- this.success.emit(resDefault);
95
- }, (errDefault) => {
96
- this.error.emit(errDefault);
97
- });
98
- }
99
- else {
100
- this.resetFilter();
101
- this.filters = res;
102
- this.selectProcessFilter(this.filterParam);
103
- this.success.emit(res);
104
- }
105
- }, (err) => {
106
- this.error.emit(err);
107
- });
108
- }
109
- /**
110
- * Return the filter list filtered by appName
111
- *
112
- * @param appName application name
113
- */
114
- getFiltersByAppName(appName) {
115
- this.appsProcessService.getDeployedApplicationsByName(appName).subscribe((application) => {
116
- this.getFiltersByAppId(application.id);
117
- this.selectProcessFilter(this.filterParam);
118
- }, (err) => {
119
- this.error.emit(err);
120
- });
121
- }
122
- /**
123
- * Pass the selected filter as next
124
- *
125
- * @param filterModel filter model
126
- */
127
- selectFilter(filterModel) {
128
- this.currentFilter = filterModel;
129
- this.active = true;
130
- this.filterClicked.emit(filterModel);
131
- }
132
- /**
133
- * Select the first filter of a list if present
134
- *
135
- * @param filterParam filter parameter
136
- */
137
- selectProcessFilter(filterParam) {
138
- if (filterParam) {
139
- const newFilter = this.filters.find((processFilter, index) => filterParam.index === index ||
140
- filterParam.id === processFilter.id ||
141
- (filterParam.name && filterParam.name.toLocaleLowerCase() === processFilter.name.toLocaleLowerCase()));
142
- this.currentFilter = newFilter;
143
- if (newFilter) {
144
- this.filterSelected.emit(newFilter);
145
- }
146
- }
147
- }
148
- /**
149
- * Select the Running filter
150
- *
151
- * @deprecated in 3.9.0, Use the filterParam Input() with a running filter instance instead
152
- */
153
- selectRunningFilter() {
154
- this.selectProcessFilter(this.processFilterService.getRunningFilterInstance(null));
155
- }
156
- /**
157
- * Get the current task
158
- *
159
- * @returns process instance filter
160
- */
161
- getCurrentFilter() {
162
- return this.currentFilter;
163
- }
164
- /**
165
- * Check if the filter list is empty
166
- *
167
- * @returns `true` if filter list is empty, otherwise `false`
168
- */
169
- isFilterListEmpty() {
170
- return this.filters === undefined || (this.filters && this.filters.length === 0);
171
- }
172
- /**
173
- * Get the material icons equivalent of the glyphicon icon
174
- *
175
- * @param icon glyphicon name
176
- * @returns material icons equivalent of the icon
177
- */
178
- getFilterIcon(icon) {
179
- return this.iconsMDL.mapGlyphiconToMaterialDesignIcons(icon);
180
- }
181
- /**
182
- * Reset the filters properties
183
- */
184
- resetFilter() {
185
- this.filters = [];
186
- this.currentFilter = undefined;
187
- }
188
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFiltersComponent, deps: [{ token: i1.ProcessFilterService }, { token: i2.AppsProcessService }, { token: i3.Router }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component }); }
189
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFiltersComponent, isStandalone: true, selector: "adf-process-instance-filters", inputs: { filterParam: "filterParam", appId: "appId", appName: "appName", showIcon: "showIcon" }, outputs: { filterClicked: "filterClicked", success: "success", error: "error", filterSelected: "filterSelected" }, usesOnChanges: true, ngImport: i0, template: "<div *ngFor=\"let filter of filters\" class=\"adf-filters__entry\" [class.adf-active]=\"isActiveRoute(filter)\">\n <button\n (click)=\"selectFilter(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.name + '_filter'\"\n mat-button\n class=\"adf-filter-action-button adf-full-width\">\n <adf-icon data-automation-id=\"adf-filter-icon\" *ngIf=\"showIcon\" [value]=\"getFilterIcon(filter.icon)\" />\n <span data-automation-id=\"adf-filter-label\" class=\"adf-filter-action-button__label\">{{ filter.name | translate }}</span>\n </button>\n</div>\n", styles: ["adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button){padding:0;width:100%;cursor:pointer;font-size:var(--theme-body-1-font-size);font-weight:700}adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button) .adf-full-width{display:flex;width:100%}adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button) .adf-filter-action-button{align-items:center;height:32px;justify-content:flex-start}adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button) .adf-filter-action-button .adf-filter-action-button__label{padding-left:20px;margin:0 8px;color:var(--theme-action-button-text-color)}adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button).adf-active .adf-filter-action-button__label{color:var(--adf-sidenav-active-text-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }], encapsulation: i0.ViewEncapsulation.None }); }
190
- }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFiltersComponent, decorators: [{
192
- type: Component,
193
- args: [{ selector: 'adf-process-instance-filters', standalone: true, imports: [CommonModule, TranslatePipe, MatButtonModule, IconComponent], encapsulation: ViewEncapsulation.None, template: "<div *ngFor=\"let filter of filters\" class=\"adf-filters__entry\" [class.adf-active]=\"isActiveRoute(filter)\">\n <button\n (click)=\"selectFilter(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.name + '_filter'\"\n mat-button\n class=\"adf-filter-action-button adf-full-width\">\n <adf-icon data-automation-id=\"adf-filter-icon\" *ngIf=\"showIcon\" [value]=\"getFilterIcon(filter.icon)\" />\n <span data-automation-id=\"adf-filter-label\" class=\"adf-filter-action-button__label\">{{ filter.name | translate }}</span>\n </button>\n</div>\n", styles: ["adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button){padding:0;width:100%;cursor:pointer;font-size:var(--theme-body-1-font-size);font-weight:700}adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button) .adf-full-width{display:flex;width:100%}adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button) .adf-filter-action-button{align-items:center;height:32px;justify-content:flex-start}adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button) .adf-filter-action-button .adf-filter-action-button__label{padding-left:20px;margin:0 8px;color:var(--theme-action-button-text-color)}adf-process-instance-filters .adf-filters__entry:has(.adf-filter-action-button).adf-active .adf-filter-action-button__label{color:var(--adf-sidenav-active-text-color)}\n"] }]
194
- }], ctorParameters: () => [{ type: i1.ProcessFilterService }, { type: i2.AppsProcessService }, { type: i3.Router }, { type: i4.Location }], propDecorators: { filterParam: [{
195
- type: Input
196
- }], filterClicked: [{
197
- type: Output
198
- }], success: [{
199
- type: Output
200
- }], error: [{
201
- type: Output
202
- }], appId: [{
203
- type: Input
204
- }], appName: [{
205
- type: Input
206
- }], showIcon: [{
207
- type: Input
208
- }], filterSelected: [{
209
- type: Output
210
- }] } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvcHJvY2Vzcy1saXN0L2NvbXBvbmVudHMvcHJvY2Vzcy1maWx0ZXJzL3Byb2Nlc3MtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtZmlsdGVycy9wcm9jZXNzLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FB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O3NCQURQLEtBQUs7Z0JBS04sY0FBYztzQkFEYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NJbnN0YW5jZUZpbHRlclJlcHJlc2VudGF0aW9uLCBVc2VyUHJvY2Vzc0luc3RhbmNlRmlsdGVyUmVwcmVzZW50YXRpb24gfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IFByb2Nlc3NGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvY2Vzcy1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBzUHJvY2Vzc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHBzLXByb2Nlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBJY29uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hcHAtbGlzdC9pY29uLm1vZGVsJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1wcm9jZXNzLWluc3RhbmNlLWZpbHRlcnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlUGlwZSwgTWF0QnV0dG9uTW9kdWxlLCBJY29uQ29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXJhbWV0ZXJzIHRvIGZpbHRlciB0aGUgdGFzayBmaWx0ZXIuIElmIHRoZXJlIGlzIG5vIG1hdGNoIHRoZW4gdGhlIGRlZmF1bHQgb25lXG4gICAgICogKGllLCB0aGUgZmlyc3QgZmlsdGVyIGluIHRoZSBsaXN0KSBpcyBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbHRlclBhcmFtOiBVc2VyUHJvY2Vzc0luc3RhbmNlRmlsdGVyUmVwcmVzZW50YXRpb247XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgZmlsdGVyIGlzIGJlaW5nIGNsaWNrZWQgZnJvbSB0aGUgVUkuICovXG4gICAgQE91dHB1dCgpXG4gICAgZmlsdGVyQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlclByb2Nlc3NJbnN0YW5jZUZpbHRlclJlcHJlc2VudGF0aW9uPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbGlzdCBvZiBmaWx0ZXJzIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBsb2FkZWQgZnJvbSB0aGUgc2VydmVyLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2Nlc3NJbnN0YW5jZUZpbHRlclJlcHJlc2VudGF0aW9uW10+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3Vycy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIERpc3BsYXkgZmlsdGVycyBhdmFpbGFibGUgdG8gdGhlIGN1cnJlbnQgdXNlciBmb3IgdGhlIGFwcGxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBJRC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcElkOiBudW1iZXI7XG5cbiAgICAvKiogRGlzcGxheSBmaWx0ZXJzIGF2YWlsYWJsZSB0byB0aGUgY3VycmVudCB1c2VyIGZvciB0aGUgYXBwbGljYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogVG9nZ2xlIHRvIHNob3cgb3IgaGlkZSB0aGUgZmlsdGVyJ3MgaWNvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dJY29uID0gdHJ1ZTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgaXMgYmVpbmcgc2VsZWN0ZWQgYmFzZWQgb24gdGhlIGZpbHRlclBhcmFtIGlucHV0LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlclNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyUHJvY2Vzc0luc3RhbmNlRmlsdGVyUmVwcmVzZW50YXRpb24+KCk7XG5cbiAgICBjdXJyZW50RmlsdGVyOiBQcm9jZXNzSW5zdGFuY2VGaWx0ZXJSZXByZXNlbnRhdGlvbjtcblxuICAgIGZpbHRlcnM6IFVzZXJQcm9jZXNzSW5zdGFuY2VGaWx0ZXJSZXByZXNlbnRhdGlvbltdID0gW107XG4gICAgYWN0aXZlID0gZmFsc2U7XG4gICAgaXNQcm9jZXNzUm91dGU6IGJvb2xlYW47XG4gICAgaXNQcm9jZXNzQWN0aXZlOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBpY29uc01ETDogSWNvbk1vZGVsO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcHJvY2Vzc0ZpbHRlclNlcnZpY2U6IFByb2Nlc3NGaWx0ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcHNQcm9jZXNzU2VydmljZTogQXBwc1Byb2Nlc3NTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmljb25zTURMID0gbmV3IEljb25Nb2RlbCgpO1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobmF2aWdhdGlvblN0YXJ0OiBOYXZpZ2F0aW9uU3RhcnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IG5hdmlnYXRpb25TdGFydC51cmw7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NBY3RpdmUgPSBhY3RpdmVSb3V0ZS5pbmNsdWRlcygncHJvY2Vzc2VzJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5sb2NhdGlvbi5wYXRoKCk7XG4gICAgICAgIHRoaXMuaXNQcm9jZXNzUm91dGUgPSBjdXJyZW50Um91dGUuaW5jbHVkZXMoJ3Byb2Nlc3NlcycpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgYXBwSWQgPSBjaGFuZ2VzWydhcHBJZCddO1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuICAgICAgICBjb25zdCBmaWx0ZXJQYXJhbSA9IGNoYW5nZXNbJ2ZpbHRlclBhcmFtJ107XG5cbiAgICAgICAgaWYgKGFwcElkICYmIChhcHBJZC5jdXJyZW50VmFsdWUgfHwgYXBwSWQuY3VycmVudFZhbHVlID09PSBudWxsKSkge1xuICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJzQnlBcHBJZChhcHBJZC5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGFwcE5hbWU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJzQnlBcHBOYW1lKGFwcE5hbWUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJQYXJhbSAmJiBmaWx0ZXJQYXJhbS5jdXJyZW50VmFsdWUgIT09IGZpbHRlclBhcmFtLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0ZpbHRlcihmaWx0ZXJQYXJhbS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNBY3RpdmVSb3V0ZShmaWx0ZXJBY3RpdmU6IFByb2Nlc3NJbnN0YW5jZUZpbHRlclJlcHJlc2VudGF0aW9uKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5pc1Byb2Nlc3NBY3RpdmUgfHwgdGhpcy5pc1Byb2Nlc3NSb3V0ZSkgJiYgdGhpcy5jdXJyZW50RmlsdGVyID09PSBmaWx0ZXJBY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBmaWx0ZXIgbGlzdCBmaWx0ZXJlZCBieSBhcHBJZFxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcElkIC0gb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJzQnlBcHBJZChhcHBJZD86IG51bWJlcikge1xuICAgICAgICB0aGlzLnByb2Nlc3NGaWx0ZXJTZXJ2aWNlLmdldFByb2Nlc3NGaWx0ZXJzKGFwcElkKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5sZW5ndGggPT09IDAgJiYgdGhpcy5pc0ZpbHRlckxpc3RFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlclNlcnZpY2UuY3JlYXRlRGVmYXVsdEZpbHRlcnMoYXBwSWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNEZWZhdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZpbHRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IHJlc0RlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRmlsdGVyKHRoaXMuZmlsdGVyUGFyYW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHJlc0RlZmF1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJEZWZhdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVyckRlZmF1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRGaWx0ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NGaWx0ZXIodGhpcy5maWx0ZXJQYXJhbSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIGZpbHRlciBsaXN0IGZpbHRlcmVkIGJ5IGFwcE5hbWVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIGFwcGxpY2F0aW9uIG5hbWVcbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJzQnlBcHBOYW1lKGFwcE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmFwcHNQcm9jZXNzU2VydmljZS5nZXREZXBsb3llZEFwcGxpY2F0aW9uc0J5TmFtZShhcHBOYW1lKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoYXBwbGljYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZpbHRlcnNCeUFwcElkKGFwcGxpY2F0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NGaWx0ZXIodGhpcy5maWx0ZXJQYXJhbSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3MgdGhlIHNlbGVjdGVkIGZpbHRlciBhcyBuZXh0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyTW9kZWwgZmlsdGVyIG1vZGVsXG4gICAgICovXG4gICAgc2VsZWN0RmlsdGVyKGZpbHRlck1vZGVsOiBQcm9jZXNzSW5zdGFuY2VGaWx0ZXJSZXByZXNlbnRhdGlvbikge1xuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSBmaWx0ZXJNb2RlbDtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLmZpbHRlckNsaWNrZWQuZW1pdChmaWx0ZXJNb2RlbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IHRoZSBmaXJzdCBmaWx0ZXIgb2YgYSBsaXN0IGlmIHByZXNlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJQYXJhbSBmaWx0ZXIgcGFyYW1ldGVyXG4gICAgICovXG4gICAgc2VsZWN0UHJvY2Vzc0ZpbHRlcihmaWx0ZXJQYXJhbTogVXNlclByb2Nlc3NJbnN0YW5jZUZpbHRlclJlcHJlc2VudGF0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbSkge1xuICAgICAgICAgICAgY29uc3QgbmV3RmlsdGVyID0gdGhpcy5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAgICAgKHByb2Nlc3NGaWx0ZXIsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbS5pbmRleCA9PT0gaW5kZXggfHxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW0uaWQgPT09IHByb2Nlc3NGaWx0ZXIuaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgKGZpbHRlclBhcmFtLm5hbWUgJiYgZmlsdGVyUGFyYW0ubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBwcm9jZXNzRmlsdGVyLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSBuZXdGaWx0ZXI7XG5cbiAgICAgICAgICAgIGlmIChuZXdGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdGVkLmVtaXQobmV3RmlsdGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCB0aGUgUnVubmluZyBmaWx0ZXJcbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIGluIDMuOS4wLCBVc2UgdGhlIGZpbHRlclBhcmFtIElucHV0KCkgd2l0aCBhIHJ1bm5pbmcgZmlsdGVyIGluc3RhbmNlIGluc3RlYWRcbiAgICAgKi9cbiAgICBzZWxlY3RSdW5uaW5nRmlsdGVyKCkge1xuICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NGaWx0ZXIodGhpcy5wcm9jZXNzRmlsdGVyU2VydmljZS5nZXRSdW5uaW5nRmlsdGVySW5zdGFuY2UobnVsbCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCB0YXNrXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBwcm9jZXNzIGluc3RhbmNlIGZpbHRlclxuICAgICAqL1xuICAgIGdldEN1cnJlbnRGaWx0ZXIoKTogUHJvY2Vzc0luc3RhbmNlRmlsdGVyUmVwcmVzZW50YXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBmaWx0ZXIgbGlzdCBpcyBlbXB0eVxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGZpbHRlciBsaXN0IGlzIGVtcHR5LCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGlzRmlsdGVyTGlzdEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJzID09PSB1bmRlZmluZWQgfHwgKHRoaXMuZmlsdGVycyAmJiB0aGlzLmZpbHRlcnMubGVuZ3RoID09PSAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG1hdGVyaWFsIGljb25zIGVxdWl2YWxlbnQgb2YgdGhlIGdseXBoaWNvbiBpY29uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWNvbiBnbHlwaGljb24gbmFtZVxuICAgICAqIEByZXR1cm5zIG1hdGVyaWFsIGljb25zIGVxdWl2YWxlbnQgb2YgdGhlIGljb25cbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJJY29uKGljb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25zTURMLm1hcEdseXBoaWNvblRvTWF0ZXJpYWxEZXNpZ25JY29ucyhpY29uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgZmlsdGVycyBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNldEZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyc1wiIGNsYXNzPVwiYWRmLWZpbHRlcnNfX2VudHJ5XCIgW2NsYXNzLmFkZi1hY3RpdmVdPVwiaXNBY3RpdmVSb3V0ZShmaWx0ZXIpXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwic2VsZWN0RmlsdGVyKGZpbHRlcilcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbHRlci5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2lkXT1cImZpbHRlci5pZFwiXG4gICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCJmaWx0ZXIubmFtZSArICdfZmlsdGVyJ1wiXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJhZGYtZmlsdGVyLWFjdGlvbi1idXR0b24gYWRmLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgPGFkZi1pY29uIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWx0ZXItaWNvblwiICpuZ0lmPVwic2hvd0ljb25cIiBbdmFsdWVdPVwiZ2V0RmlsdGVySWNvbihmaWx0ZXIuaWNvbilcIiAvPlxuICAgICAgICA8c3BhbiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtZmlsdGVyLWxhYmVsXCIgY2xhc3M9XCJhZGYtZmlsdGVyLWFjdGlvbi1idXR0b25fX2xhYmVsXCI+e3sgZmlsdGVyLm5hbWUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -1,142 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { CommonModule, DatePipe } from '@angular/common';
18
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
19
- import { ProcessService } from '../../services/process.service';
20
- import { ProcessInstanceHeaderComponent } from '../process-instance-header/process-instance-header.component';
21
- import { ProcessInstanceTasksComponent } from '../process-instance-tasks/process-instance-tasks.component';
22
- import { TranslatePipe } from '@ngx-translate/core';
23
- import { MatCardModule } from '@angular/material/card';
24
- import { MatButtonModule } from '@angular/material/button';
25
- import { ProcessCommentsComponent } from '../../../process-comments';
26
- import * as i0 from "@angular/core";
27
- import * as i1 from "../../services/process.service";
28
- import * as i2 from "@angular/common";
29
- import * as i3 from "@angular/material/card";
30
- import * as i4 from "@angular/material/button";
31
- export class ProcessInstanceDetailsComponent {
32
- constructor(processService) {
33
- this.processService = processService;
34
- /** Toggles whether to show or hide the title. */
35
- this.showTitle = true;
36
- /** Toggles whether to show or hide the refresh button. */
37
- this.showRefreshButton = true;
38
- /** Emitted when the current process is cancelled by the user from within the component. */
39
- this.processCancelled = new EventEmitter();
40
- /** Emitted when an error occurs. */
41
- this.error = new EventEmitter();
42
- /** Emitted when a task is clicked. */
43
- this.taskClick = new EventEmitter();
44
- /** Emitted when the "show diagram" button is clicked. */
45
- this.showProcessDiagram = new EventEmitter();
46
- }
47
- ngOnChanges(changes) {
48
- const processInstanceId = changes['processInstanceId'];
49
- if (processInstanceId && !processInstanceId.currentValue) {
50
- this.reset();
51
- return;
52
- }
53
- if (processInstanceId?.currentValue) {
54
- this.load(processInstanceId.currentValue);
55
- return;
56
- }
57
- }
58
- /**
59
- * Reset the task detail
60
- */
61
- reset() {
62
- this.processInstanceDetails = null;
63
- }
64
- load(processId) {
65
- if (processId) {
66
- this.processService.getProcess(processId).subscribe((res) => {
67
- this.processInstanceDetails = res;
68
- });
69
- }
70
- }
71
- isRunning() {
72
- return this.processInstanceDetails && !this.processInstanceDetails.ended;
73
- }
74
- cancelProcess() {
75
- this.processService.cancelProcess(this.processInstanceId).subscribe((data) => {
76
- this.processCancelled.emit(data);
77
- }, (err) => {
78
- this.error.emit(err);
79
- });
80
- }
81
- // bubbles (taskClick) event
82
- onTaskClicked(event) {
83
- this.taskClick.emit(event);
84
- }
85
- getProcessNameOrDescription(dateFormat) {
86
- let name = '';
87
- if (this.processInstanceDetails) {
88
- name =
89
- this.processInstanceDetails.name ||
90
- this.processInstanceDetails.processDefinitionName + ' - ' + this.getFormatDate(this.processInstanceDetails.started, dateFormat);
91
- }
92
- return name;
93
- }
94
- getFormatDate(value, format) {
95
- const datePipe = new DatePipe('en-US');
96
- try {
97
- return datePipe.transform(value, format);
98
- }
99
- catch {
100
- return undefined;
101
- }
102
- }
103
- onShowProcessDiagram() {
104
- this.showProcessDiagram.emit({ value: this.processInstanceId });
105
- }
106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessInstanceDetailsComponent, deps: [{ token: i1.ProcessService }], target: i0.ɵɵFactoryTarget.Component }); }
107
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessInstanceDetailsComponent, isStandalone: true, selector: "adf-process-instance-details", inputs: { processInstanceId: "processInstanceId", showTitle: "showTitle", showRefreshButton: "showRefreshButton" }, outputs: { processCancelled: "processCancelled", error: "error", taskClick: "taskClick", showProcessDiagram: "showProcessDiagram" }, viewQueries: [{ propertyName: "processInstanceHeader", first: true, predicate: ["processInstanceHeader"], descendants: true }, { propertyName: "tasksList", first: true, predicate: ["processInstanceTasks"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!processInstanceDetails\">{{ 'ADF_PROCESS_LIST.DETAILS.MESSAGES.NONE' | translate }}</div>\n<mat-card *ngIf=\"processInstanceDetails\">\n <mat-card-header>\n <mat-card-title>{{ getProcessNameOrDescription('medium') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <adf-process-instance-header\n #processInstanceHeader\n [processInstance]=\"processInstanceDetails\" />\n\n <button\n class=\"adf-in-medias-res-button\"\n id=\"show-diagram-button\"\n type=\"button\"\n mat-button\n mat-raised-button\n [disabled]=\"!isRunning()\"\n (click)=\"onShowProcessDiagram()\">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.SHOW_DIAGRAM' | translate }}</button>\n\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <adf-process-instance-tasks\n #processInstanceTasks\n [processInstanceDetails]=\"processInstanceDetails\"\n (taskClick)=\"onTaskClicked($event)\" />\n </mat-card-content>\n </mat-card>\n\n <div data-automation-id=\"header-status\" *ngIf=\"isRunning()\" class=\"adf-in-medias-res-button\">\n <button mat-button type=\"button\" (click)=\"cancelProcess()\">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.CANCEL' | translate }}</button>\n </div>\n\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <adf-process-instance-comments\n [readOnly]=\"false\"\n [processInstanceId]=\"processInstanceDetails.id\" />\n </mat-card-content>\n </mat-card>\n\n </mat-card-content>\n</mat-card>\n", styles: [":host{width:100%}.activiti-process-container{width:100%;min-height:100px;overflow:visible;padding:10px}.adf-comments-dialog{position:fixed;top:50%;transform:translateY(-50%);width:40%}.adf-in-medias-res-button{margin:16px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: ProcessCommentsComponent, selector: "adf-process-instance-comments", inputs: ["processInstanceId", "readOnly"] }, { kind: "component", type: ProcessInstanceTasksComponent, selector: "adf-process-instance-tasks", inputs: ["processInstanceDetails", "showRefreshButton"], outputs: ["error", "taskClick"] }, { kind: "component", type: ProcessInstanceHeaderComponent, selector: "adf-process-instance-header", inputs: ["processInstance"] }] }); }
108
- }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessInstanceDetailsComponent, decorators: [{
110
- type: Component,
111
- args: [{ selector: 'adf-process-instance-details', standalone: true, imports: [
112
- CommonModule,
113
- TranslatePipe,
114
- MatCardModule,
115
- MatButtonModule,
116
- ProcessCommentsComponent,
117
- ProcessInstanceTasksComponent,
118
- ProcessInstanceHeaderComponent
119
- ], template: "<div *ngIf=\"!processInstanceDetails\">{{ 'ADF_PROCESS_LIST.DETAILS.MESSAGES.NONE' | translate }}</div>\n<mat-card *ngIf=\"processInstanceDetails\">\n <mat-card-header>\n <mat-card-title>{{ getProcessNameOrDescription('medium') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <adf-process-instance-header\n #processInstanceHeader\n [processInstance]=\"processInstanceDetails\" />\n\n <button\n class=\"adf-in-medias-res-button\"\n id=\"show-diagram-button\"\n type=\"button\"\n mat-button\n mat-raised-button\n [disabled]=\"!isRunning()\"\n (click)=\"onShowProcessDiagram()\">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.SHOW_DIAGRAM' | translate }}</button>\n\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <adf-process-instance-tasks\n #processInstanceTasks\n [processInstanceDetails]=\"processInstanceDetails\"\n (taskClick)=\"onTaskClicked($event)\" />\n </mat-card-content>\n </mat-card>\n\n <div data-automation-id=\"header-status\" *ngIf=\"isRunning()\" class=\"adf-in-medias-res-button\">\n <button mat-button type=\"button\" (click)=\"cancelProcess()\">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.CANCEL' | translate }}</button>\n </div>\n\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <adf-process-instance-comments\n [readOnly]=\"false\"\n [processInstanceId]=\"processInstanceDetails.id\" />\n </mat-card-content>\n </mat-card>\n\n </mat-card-content>\n</mat-card>\n", styles: [":host{width:100%}.activiti-process-container{width:100%;min-height:100px;overflow:visible;padding:10px}.adf-comments-dialog{position:fixed;top:50%;transform:translateY(-50%);width:40%}.adf-in-medias-res-button{margin:16px 0}\n"] }]
120
- }], ctorParameters: () => [{ type: i1.ProcessService }], propDecorators: { processInstanceId: [{
121
- type: Input,
122
- args: [{ required: true }]
123
- }], processInstanceHeader: [{
124
- type: ViewChild,
125
- args: ['processInstanceHeader']
126
- }], tasksList: [{
127
- type: ViewChild,
128
- args: ['processInstanceTasks']
129
- }], showTitle: [{
130
- type: Input
131
- }], showRefreshButton: [{
132
- type: Input
133
- }], processCancelled: [{
134
- type: Output
135
- }], error: [{
136
- type: Output
137
- }], taskClick: [{
138
- type: Output
139
- }], showProcessDiagram: [{
140
- type: Output
141
- }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1pbnN0YW5jZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvcHJvY2Vzcy1saXN0L2NvbXBvbmVudHMvcHJvY2Vzcy1pbnN0YW5jZS1kZXRhaWxzL3Byb2Nlc3MtaW5zdGFuY2UtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtaW5zdGFuY2UtZGV0YWlscy9wcm9jZXNzLWluc3RhbmNlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzlHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRTNHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFpQnJFLE1BQU0sT0FBTywrQkFBK0I7SUFxQ3hDLFlB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Q0FBQyxDQUFDO1FBQzdDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDTCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQzsrR0EzR1EsK0JBQStCO21HQUEvQiwrQkFBK0IsMGtCQzVDNUMsZ3VEQTBDQSwyUkRUUSxZQUFZLDhIQUNaLGFBQWEsaURBQ2IsYUFBYSxrWkFDYixlQUFlLDROQUNmLHdCQUF3QixxSEFDeEIsNkJBQTZCLGlLQUM3Qiw4QkFBOEI7OzRGQUt6QiwrQkFBK0I7a0JBZjNDLFNBQVM7K0JBQ0ksOEJBQThCLGNBQzVCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIsNkJBQTZCO3dCQUM3Qiw4QkFBOEI7cUJBQ2pDO21GQU9ELGlCQUFpQjtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXpCLHFCQUFxQjtzQkFEcEIsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBSWxDLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBS2pDLFNBQVM7c0JBRFIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYXNrRGV0YWlsc0V2ZW50IH0gZnJvbSAnLi4vLi4vLi4vdGFzay1saXN0JztcbmltcG9ydCB7IFByb2Nlc3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2Nlc3NJbnN0YW5jZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL3Byb2Nlc3MtaW5zdGFuY2UtaGVhZGVyL3Byb2Nlc3MtaW5zdGFuY2UtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9jZXNzSW5zdGFuY2VUYXNrc0NvbXBvbmVudCB9IGZyb20gJy4uL3Byb2Nlc3MtaW5zdGFuY2UtdGFza3MvcHJvY2Vzcy1pbnN0YW5jZS10YXNrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvY2Vzc0luc3RhbmNlUmVwcmVzZW50YXRpb24gfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBQcm9jZXNzQ29tbWVudHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wcm9jZXNzLWNvbW1lbnRzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtcHJvY2Vzcy1pbnN0YW5jZS1kZXRhaWxzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVQaXBlLFxuICAgICAgICBNYXRDYXJkTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIFByb2Nlc3NDb21tZW50c0NvbXBvbmVudCxcbiAgICAgICAgUHJvY2Vzc0luc3RhbmNlVGFza3NDb21wb25lbnQsXG4gICAgICAgIFByb2Nlc3NJbnN0YW5jZUhlYWRlckNvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtaW5zdGFuY2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy1pbnN0YW5jZS1kZXRhaWxzLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzSW5zdGFuY2VEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKiogKHJlcXVpcmVkKSBUaGUgbnVtZXJpYyBJRCBvZiB0aGUgcHJvY2VzcyBpbnN0YW5jZSB0byBkaXNwbGF5LiAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGQoJ3Byb2Nlc3NJbnN0YW5jZUhlYWRlcicpXG4gICAgcHJvY2Vzc0luc3RhbmNlSGVhZGVyOiBQcm9jZXNzSW5zdGFuY2VIZWFkZXJDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdwcm9jZXNzSW5zdGFuY2VUYXNrcycpXG4gICAgdGFza3NMaXN0OiBQcm9jZXNzSW5zdGFuY2VUYXNrc0NvbXBvbmVudDtcblxuICAgIC8qKiBUb2dnbGVzIHdoZXRoZXIgdG8gc2hvdyBvciBoaWRlIHRoZSB0aXRsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dUaXRsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB3aGV0aGVyIHRvIHNob3cgb3IgaGlkZSB0aGUgcmVmcmVzaCBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBzaG93UmVmcmVzaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgY2FuY2VsbGVkIGJ5IHRoZSB1c2VyIGZyb20gd2l0aGluIHRoZSBjb21wb25lbnQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHJvY2Vzc0NhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSB0YXNrIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdGFza0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNrRGV0YWlsc0V2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgXCJzaG93IGRpYWdyYW1cIiBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzaG93UHJvY2Vzc0RpYWdyYW0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByb2Nlc3NJbnN0YW5jZURldGFpbHM6IFByb2Nlc3NJbnN0YW5jZVJlcHJlc2VudGF0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UpIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NJbnN0YW5jZUlkID0gY2hhbmdlc1sncHJvY2Vzc0luc3RhbmNlSWQnXTtcbiAgICAgICAgaWYgKHByb2Nlc3NJbnN0YW5jZUlkICYmICFwcm9jZXNzSW5zdGFuY2VJZC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzc0luc3RhbmNlSWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkKHByb2Nlc3NJbnN0YW5jZUlkLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgdGFzayBkZXRhaWxcbiAgICAgKi9cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzSW5zdGFuY2VEZXRhaWxzID0gbnVsbDtcbiAgICB9XG5cbiAgICBsb2FkKHByb2Nlc3NJZDogc3RyaW5nKSB7XG4gICAgICAgIGlmIChwcm9jZXNzSWQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzcyhwcm9jZXNzSWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzSW5zdGFuY2VEZXRhaWxzID0gcmVzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1J1bm5pbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbnN0YW5jZURldGFpbHMgJiYgIXRoaXMucHJvY2Vzc0luc3RhbmNlRGV0YWlscy5lbmRlZDtcbiAgICB9XG5cbiAgICBjYW5jZWxQcm9jZXNzKCkge1xuICAgICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmNhbmNlbFByb2Nlc3ModGhpcy5wcm9jZXNzSW5zdGFuY2VJZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NDYW5jZWxsZWQuZW1pdChkYXRhKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gYnViYmxlcyAodGFza0NsaWNrKSBldmVudFxuICAgIG9uVGFza0NsaWNrZWQoZXZlbnQ6IFRhc2tEZXRhaWxzRXZlbnQpIHtcbiAgICAgICAgdGhpcy50YXNrQ2xpY2suZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0UHJvY2Vzc05hbWVPckRlc2NyaXB0aW9uKGRhdGVGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBuYW1lID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnByb2Nlc3NJbnN0YW5jZURldGFpbHMpIHtcbiAgICAgICAgICAgIG5hbWUgPVxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0luc3RhbmNlRGV0YWlscy5uYW1lIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzSW5zdGFuY2VEZXRhaWxzLnByb2Nlc3NEZWZpbml0aW9uTmFtZSArICcgLSAnICsgdGhpcy5nZXRGb3JtYXREYXRlKHRoaXMucHJvY2Vzc0luc3RhbmNlRGV0YWlscy5zdGFydGVkLCBkYXRlRm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG5cbiAgICBnZXRGb3JtYXREYXRlKHZhbHVlOiBhbnksIGZvcm1hdDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgY29uc3QgZGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUoJ2VuLVVTJyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNob3dQcm9jZXNzRGlhZ3JhbSgpIHtcbiAgICAgICAgdGhpcy5zaG93UHJvY2Vzc0RpYWdyYW0uZW1pdCh7IHZhbHVlOiB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCIhcHJvY2Vzc0luc3RhbmNlRGV0YWlsc1wiPnt7ICdBREZfUFJPQ0VTU19MSVNULkRFVEFJTFMuTUVTU0FHRVMuTk9ORScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbjxtYXQtY2FyZCAqbmdJZj1cInByb2Nlc3NJbnN0YW5jZURldGFpbHNcIj5cbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+e3sgZ2V0UHJvY2Vzc05hbWVPckRlc2NyaXB0aW9uKCdtZWRpdW0nKSB9fTwvbWF0LWNhcmQtdGl0bGU+XG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxhZGYtcHJvY2Vzcy1pbnN0YW5jZS1oZWFkZXJcbiAgICAgICAgICAgICNwcm9jZXNzSW5zdGFuY2VIZWFkZXJcbiAgICAgICAgICAgIFtwcm9jZXNzSW5zdGFuY2VdPVwicHJvY2Vzc0luc3RhbmNlRGV0YWlsc1wiIC8+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtaW4tbWVkaWFzLXJlcy1idXR0b25cIlxuICAgICAgICAgICAgaWQ9XCJzaG93LWRpYWdyYW0tYnV0dG9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNSdW5uaW5nKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd1Byb2Nlc3NEaWFncmFtKClcIj57eyAnQURGX1BST0NFU1NfTElTVC5ERVRBSUxTLkJVVFRPTi5TSE9XX0RJQUdSQU0nIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGFkZi1wcm9jZXNzLWluc3RhbmNlLXRhc2tzXG4gICAgICAgICAgICAgICAgICAgICNwcm9jZXNzSW5zdGFuY2VUYXNrc1xuICAgICAgICAgICAgICAgICAgICBbcHJvY2Vzc0luc3RhbmNlRGV0YWlsc109XCJwcm9jZXNzSW5zdGFuY2VEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgKHRhc2tDbGljayk9XCJvblRhc2tDbGlja2VkKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8L21hdC1jYXJkPlxuXG4gICAgICAgIDxkaXYgZGF0YS1hdXRvbWF0aW9uLWlkPVwiaGVhZGVyLXN0YXR1c1wiICpuZ0lmPVwiaXNSdW5uaW5nKClcIiBjbGFzcz1cImFkZi1pbi1tZWRpYXMtcmVzLWJ1dHRvblwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsUHJvY2VzcygpXCI+e3sgJ0FERl9QUk9DRVNTX0xJU1QuREVUQUlMUy5CVVRUT04uQ0FOQ0VMJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICA8YWRmLXByb2Nlc3MtaW5zdGFuY2UtY29tbWVudHNcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Byb2Nlc3NJbnN0YW5jZUlkXT1cInByb2Nlc3NJbnN0YW5jZURldGFpbHMuaWRcIiAvPlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8L21hdC1jYXJkPlxuXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbiJdfQ==
@@ -1,123 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { AppConfigService, CardViewComponent, CardViewDateItemModel, CardViewTextItemModel, TranslationService } from '@alfresco/adf-core';
18
- import { Component, Input } from '@angular/core';
19
- import { ProcessInstanceRepresentation } from '@alfresco/js-api';
20
- import { CommonModule } from '@angular/common';
21
- import { MatCardModule } from '@angular/material/card';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "@alfresco/adf-core";
24
- import * as i2 from "@angular/common";
25
- import * as i3 from "@angular/material/card";
26
- export class ProcessInstanceHeaderComponent {
27
- constructor(translationService, appConfig) {
28
- this.translationService = translationService;
29
- this.appConfig = appConfig;
30
- this.dateFormat = this.appConfig.get('dateValues.defaultDateFormat');
31
- this.dateLocale = this.appConfig.get('dateValues.defaultDateLocale');
32
- }
33
- ngOnChanges() {
34
- this.refreshData();
35
- }
36
- refreshData() {
37
- if (this.processInstance) {
38
- const defaultProperties = this.initDefaultProperties();
39
- const filteredProperties = this.appConfig.get('adf-process-instance-header.presets.properties');
40
- this.properties = defaultProperties.filter((cardItem) => this.isValidSelection(filteredProperties, cardItem));
41
- }
42
- }
43
- getProcessStatus() {
44
- if (this.processInstance) {
45
- return this.isRunning() ? 'Running' : 'Completed';
46
- }
47
- return 'Unknown';
48
- }
49
- getStartedByFullName() {
50
- let fullName = '';
51
- if (this.processInstance?.startedBy) {
52
- fullName += this.processInstance.startedBy.firstName || '';
53
- fullName += fullName ? ' ' : '';
54
- fullName += this.processInstance.startedBy.lastName || '';
55
- }
56
- return fullName;
57
- }
58
- isRunning() {
59
- return this.processInstance && !this.processInstance.ended;
60
- }
61
- initDefaultProperties() {
62
- return [
63
- new CardViewTextItemModel({
64
- label: 'ADF_PROCESS_LIST.PROPERTIES.STATUS',
65
- value: this.getProcessStatus(),
66
- key: 'status'
67
- }),
68
- new CardViewDateItemModel({
69
- label: 'ADF_PROCESS_LIST.PROPERTIES.END_DATE',
70
- value: this.processInstance.ended,
71
- format: this.dateFormat,
72
- locale: this.dateLocale,
73
- key: 'ended',
74
- default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.END_DATE_DEFAULT')
75
- }),
76
- new CardViewTextItemModel({
77
- label: 'ADF_PROCESS_LIST.PROPERTIES.CATEGORY',
78
- value: this.processInstance.processDefinitionCategory,
79
- key: 'category',
80
- default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.CATEGORY_DEFAULT')
81
- }),
82
- new CardViewTextItemModel({
83
- label: 'ADF_PROCESS_LIST.PROPERTIES.BUSINESS_KEY',
84
- value: this.processInstance.businessKey,
85
- key: 'businessKey',
86
- default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.BUSINESS_KEY_DEFAULT')
87
- }),
88
- new CardViewTextItemModel({
89
- label: 'ADF_PROCESS_LIST.PROPERTIES.CREATED_BY',
90
- value: this.getStartedByFullName(),
91
- key: 'createdBy',
92
- default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.CREATED_BY_DEFAULT')
93
- }),
94
- new CardViewDateItemModel({
95
- label: 'ADF_PROCESS_LIST.PROPERTIES.CREATED',
96
- value: this.processInstance.started,
97
- format: this.dateFormat,
98
- locale: this.dateLocale,
99
- key: 'created'
100
- }),
101
- new CardViewTextItemModel({ label: 'ADF_PROCESS_LIST.PROPERTIES.ID', value: this.processInstance.id, key: 'id' }),
102
- new CardViewTextItemModel({
103
- label: 'ADF_PROCESS_LIST.PROPERTIES.DESCRIPTION',
104
- value: this.processInstance.processDefinitionDescription,
105
- key: 'description',
106
- default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.DESCRIPTION_DEFAULT')
107
- })
108
- ];
109
- }
110
- isValidSelection(filteredProperties, cardItem) {
111
- return filteredProperties ? filteredProperties.indexOf(cardItem.key) >= 0 : true;
112
- }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessInstanceHeaderComponent, deps: [{ token: i1.TranslationService }, { token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessInstanceHeaderComponent, isStandalone: true, selector: "adf-process-instance-header", inputs: { processInstance: "processInstance" }, usesOnChanges: true, ngImport: i0, template: "<mat-card appearance=\"outlined\" *ngIf=\"processInstance\" class=\"adf-card-container\">\n <mat-card-content>\n <adf-card-view [properties]=\"properties\" />\n </mat-card-content>\n</mat-card>\n", styles: [":host{width:100%}.adf-card-container{font-family:inherit}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: CardViewComponent, selector: "adf-card-view", inputs: ["properties", "editable", "displayEmpty", "displayNoneOption", "displayClearAction", "copyToClipboardAction", "useChipsForMultiValueProperty", "multiValueSeparator", "displayLabelForChips"] }] }); }
115
- }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessInstanceHeaderComponent, decorators: [{
117
- type: Component,
118
- args: [{ selector: 'adf-process-instance-header', standalone: true, imports: [CommonModule, MatCardModule, CardViewComponent], template: "<mat-card appearance=\"outlined\" *ngIf=\"processInstance\" class=\"adf-card-container\">\n <mat-card-content>\n <adf-card-view [properties]=\"properties\" />\n </mat-card-content>\n</mat-card>\n", styles: [":host{width:100%}.adf-card-container{font-family:inherit}\n"] }]
119
- }], ctorParameters: () => [{ type: i1.TranslationService }, { type: i1.AppConfigService }], propDecorators: { processInstance: [{
120
- type: Input,
121
- args: [{ required: true }]
122
- }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1pbnN0YW5jZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMvc3JjL2xpYi9wcm9jZXNzLWxpc3QvY29tcG9uZW50cy9wcm9jZXNzLWluc3RhbmNlLWhlYWRlci9wcm9jZXNzLWluc3RhbmNlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtaW5zdGFuY2UtaGVhZGVyL3Byb2Nlc3MtaW5zdGFuY2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFDSCxnQkFBZ0IsRUFFaEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUVyQixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFTdkQsTUFBTSxPQUFPLDhCQUE4QjtJQVN2QyxZQUFvQixrQkFBc0MsRUFBVSxTQUEyQjtRQUEzRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxV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LFNBQVM7K0JBQ0ksNkJBQTZCLGNBQzNCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUM7c0hBT3pELGVBQWU7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBDYXJkVmlld0Jhc2VJdGVtTW9kZWwsXG4gICAgQ2FyZFZpZXdDb21wb25lbnQsXG4gICAgQ2FyZFZpZXdEYXRlSXRlbU1vZGVsLFxuICAgIENhcmRWaWV3SXRlbSxcbiAgICBDYXJkVmlld1RleHRJdGVtTW9kZWwsXG4gICAgVHJhbnNsYXRpb25TZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NJbnN0YW5jZVJlcHJlc2VudGF0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1wcm9jZXNzLWluc3RhbmNlLWhlYWRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBDYXJkVmlld0NvbXBvbmVudF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtaW5zdGFuY2UtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzLWluc3RhbmNlLWhlYWRlci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0luc3RhbmNlSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKiogKCoqcmVxdWlyZWQqKikgRnVsbCBkZXRhaWxzIG9mIHRoZSBwcm9jZXNzIGluc3RhbmNlIHRvIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQuICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwcm9jZXNzSW5zdGFuY2U6IFByb2Nlc3NJbnN0YW5jZVJlcHJlc2VudGF0aW9uO1xuXG4gICAgcHJvcGVydGllczogQ2FyZFZpZXdJdGVtW107XG4gICAgZGF0ZUZvcm1hdDogc3RyaW5nO1xuICAgIGRhdGVMb2NhbGU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IHRoaXMuYXBwQ29uZmlnLmdldCgnZGF0ZVZhbHVlcy5kZWZhdWx0RGF0ZUZvcm1hdCcpO1xuICAgICAgICB0aGlzLmRhdGVMb2NhbGUgPSB0aGlzLmFwcENvbmZpZy5nZXQoJ2RhdGVWYWx1ZXMuZGVmYXVsdERhdGVMb2NhbGUnKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpO1xuICAgIH1cblxuICAgIHJlZnJlc2hEYXRhKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcm9jZXNzSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRQcm9wZXJ0aWVzID0gdGhpcy5pbml0RGVmYXVsdFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUHJvcGVydGllczogc3RyaW5nW10gPSB0aGlzLmFwcENvbmZpZy5nZXQoJ2FkZi1wcm9jZXNzLWluc3RhbmNlLWhlYWRlci5wcmVzZXRzLnByb3BlcnRpZXMnKTtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydGllcyA9IGRlZmF1bHRQcm9wZXJ0aWVzLmZpbHRlcigoY2FyZEl0ZW0pID0+IHRoaXMuaXNWYWxpZFNlbGVjdGlvbihmaWx0ZXJlZFByb3BlcnRpZXMsIGNhcmRJdGVtKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQcm9jZXNzU3RhdHVzKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnByb2Nlc3NJbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNSdW5uaW5nKCkgPyAnUnVubmluZycgOiAnQ29tcGxldGVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1Vua25vd24nO1xuICAgIH1cblxuICAgIGdldFN0YXJ0ZWRCeUZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBmdWxsTmFtZSA9ICcnO1xuICAgICAgICBpZiAodGhpcy5wcm9jZXNzSW5zdGFuY2U/LnN0YXJ0ZWRCeSkge1xuICAgICAgICAgICAgZnVsbE5hbWUgKz0gdGhpcy5wcm9jZXNzSW5zdGFuY2Uuc3RhcnRlZEJ5LmZpcnN0TmFtZSB8fCAnJztcbiAgICAgICAgICAgIGZ1bGxOYW1lICs9IGZ1bGxOYW1lID8gJyAnIDogJyc7XG4gICAgICAgICAgICBmdWxsTmFtZSArPSB0aGlzLnByb2Nlc3NJbnN0YW5jZS5zdGFydGVkQnkubGFzdE5hbWUgfHwgJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bGxOYW1lO1xuICAgIH1cblxuICAgIGlzUnVubmluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0luc3RhbmNlICYmICF0aGlzLnByb2Nlc3NJbnN0YW5jZS5lbmRlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREZWZhdWx0UHJvcGVydGllcygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQ2FyZFZpZXdUZXh0SXRlbU1vZGVsKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9QUk9DRVNTX0xJU1QuUFJPUEVSVElFUy5TVEFUVVMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldFByb2Nlc3NTdGF0dXMoKSxcbiAgICAgICAgICAgICAgICBrZXk6ICdzdGF0dXMnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDYXJkVmlld0RhdGVJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLkVORF9EQVRFJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5wcm9jZXNzSW5zdGFuY2UuZW5kZWQsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmRhdGVMb2NhbGUsXG4gICAgICAgICAgICAgICAga2V5OiAnZW5kZWQnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoJ0FERl9QUk9DRVNTX0xJU1QuUFJPUEVSVElFUy5FTkRfREFURV9ERUZBVUxUJylcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfUFJPQ0VTU19MSVNULlBST1BFUlRJRVMuQ0FURUdPUlknLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnByb2Nlc3NJbnN0YW5jZS5wcm9jZXNzRGVmaW5pdGlvbkNhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGtleTogJ2NhdGVnb3J5JyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCdBREZfUFJPQ0VTU19MSVNULlBST1BFUlRJRVMuQ0FURUdPUllfREVGQVVMVCcpXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDYXJkVmlld1RleHRJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLkJVU0lORVNTX0tFWScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMucHJvY2Vzc0luc3RhbmNlLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICAgIGtleTogJ2J1c2luZXNzS2V5JyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCdBREZfUFJPQ0VTU19MSVNULlBST1BFUlRJRVMuQlVTSU5FU1NfS0VZX0RFRkFVTFQnKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ2FyZFZpZXdUZXh0SXRlbU1vZGVsKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9QUk9DRVNTX0xJU1QuUFJPUEVSVElFUy5DUkVBVEVEX0JZJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRTdGFydGVkQnlGdWxsTmFtZSgpLFxuICAgICAgICAgICAgICAgIGtleTogJ2NyZWF0ZWRCeScsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudCgnQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLkNSRUFURURfQllfREVGQVVMVCcpXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDYXJkVmlld0RhdGVJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLkNSRUFURUQnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnByb2Nlc3NJbnN0YW5jZS5zdGFydGVkLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5kYXRlTG9jYWxlLFxuICAgICAgICAgICAgICAgIGtleTogJ2NyZWF0ZWQnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDYXJkVmlld1RleHRJdGVtTW9kZWwoeyBsYWJlbDogJ0FERl9QUk9DRVNTX0xJU1QuUFJPUEVSVElFUy5JRCcsIHZhbHVlOiB0aGlzLnByb2Nlc3NJbnN0YW5jZS5pZCwga2V5OiAnaWQnIH0pLFxuICAgICAgICAgICAgbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfUFJPQ0VTU19MSVNULlBST1BFUlRJRVMuREVTQ1JJUFRJT04nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnByb2Nlc3NJbnN0YW5jZS5wcm9jZXNzRGVmaW5pdGlvbkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGtleTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCdBREZfUFJPQ0VTU19MSVNULlBST1BFUlRJRVMuREVTQ1JJUFRJT05fREVGQVVMVCcpXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFNlbGVjdGlvbihmaWx0ZXJlZFByb3BlcnRpZXM6IHN0cmluZ1tdLCBjYXJkSXRlbTogQ2FyZFZpZXdCYXNlSXRlbU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZFByb3BlcnRpZXMgPyBmaWx0ZXJlZFByb3BlcnRpZXMuaW5kZXhPZihjYXJkSXRlbS5rZXkpID49IDAgOiB0cnVlO1xuICAgIH1cbn1cbiIsIjxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiAqbmdJZj1cInByb2Nlc3NJbnN0YW5jZVwiIGNsYXNzPVwiYWRmLWNhcmQtY29udGFpbmVyXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxhZGYtY2FyZC12aWV3IFtwcm9wZXJ0aWVzXT1cInByb3BlcnRpZXNcIiAvPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG4iXX0=