ngx-edu-sharing-ui 10.0.20 → 10.0.22
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.
- package/assets/scss/material-theme.scss +3 -3
- package/assets/scss/mixins.scss +1 -1
- package/assets/scss/variables-root.scss +2 -0
- package/assets/scss/variables-scss.scss +3 -4
- package/assets/scss/variables.scss +1 -1
- package/fesm2022/ngx-edu-sharing-ui.mjs +376 -319
- package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/list-items/list-widget.d.ts +1 -1
- package/lib/mds-viewer/mds-editor-instance-service.abstract.d.ts +14 -0
- package/lib/mds-viewer/widget/mds-widget.component.d.ts +6 -4
- package/package.json +8 -9
- package/esm2022/lib/actionbar/actionbar.component.mjs +0 -206
- package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +0 -170
- package/esm2022/lib/directives/border-box-observer.directive.mjs +0 -71
- package/esm2022/lib/directives/check-text-overflow.directive.mjs +0 -71
- package/esm2022/lib/directives/drag-nodes/drag-nodes.mjs +0 -14
- package/esm2022/lib/directives/drag-nodes/nodes-drag-source.directive.mjs +0 -79
- package/esm2022/lib/directives/drag-nodes/nodes-drag.directive.mjs +0 -49
- package/esm2022/lib/directives/drag-nodes/nodes-drop-target.directive.mjs +0 -105
- package/esm2022/lib/directives/focus-state.directive.mjs +0 -44
- package/esm2022/lib/directives/icon.directive.mjs +0 -184
- package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -85
- package/esm2022/lib/dropdown/dropdown.component.mjs +0 -83
- package/esm2022/lib/edu-sharing-ui-configuration.mjs +0 -48
- package/esm2022/lib/edu-sharing-ui.module.mjs +0 -82
- package/esm2022/lib/index.mjs +0 -96
- package/esm2022/lib/list-items/available-widgets.mjs +0 -27
- package/esm2022/lib/list-items/format-duration.pipe.mjs +0 -20
- package/esm2022/lib/list-items/list-base/list-base.component.mjs +0 -46
- package/esm2022/lib/list-items/list-collection-info/list-collection-info.component.mjs +0 -29
- package/esm2022/lib/list-items/list-counts/list-counts.component.mjs +0 -56
- package/esm2022/lib/list-items/list-items.module.mjs +0 -50
- package/esm2022/lib/list-items/list-node-license/list-node-license.component.mjs +0 -41
- package/esm2022/lib/list-items/list-node-replication-source/list-node-replication-source.component.mjs +0 -47
- package/esm2022/lib/list-items/list-node-workflow/list-node-workflow.component.mjs +0 -24
- package/esm2022/lib/list-items/list-text/list-text.component.mjs +0 -106
- package/esm2022/lib/list-items/list-widget.mjs +0 -49
- package/esm2022/lib/list-items/node-row/node-row.component.mjs +0 -24
- package/esm2022/lib/list-items/node-source.pipe.mjs +0 -49
- package/esm2022/lib/mds/mds-helper.service.mjs +0 -167
- package/esm2022/lib/mds/mds.module.mjs +0 -16
- package/esm2022/lib/mds-viewer/mds-viewer.component.mjs +0 -170
- package/esm2022/lib/mds-viewer/mds-viewer.service.mjs +0 -18
- package/esm2022/lib/mds-viewer/replace-element-with-div.mjs +0 -47
- package/esm2022/lib/mds-viewer/view-instance.service.mjs +0 -27
- package/esm2022/lib/mds-viewer/widget/mds-widget.component.mjs +0 -379
- package/esm2022/lib/node-entries/combined-data-source.mjs +0 -41
- package/esm2022/lib/node-entries/custom-templates-data-source.mjs +0 -7
- package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +0 -21
- package/esm2022/lib/node-entries/entries-model.mjs +0 -24
- package/esm2022/lib/node-entries/items-cap.mjs +0 -47
- package/esm2022/lib/node-entries/list-item-label.pipe.mjs +0 -37
- package/esm2022/lib/node-entries/node-cache.mjs +0 -73
- package/esm2022/lib/node-entries/node-data-source-remote.mjs +0 -4
- package/esm2022/lib/node-entries/node-data-source.mjs +0 -117
- package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +0 -117
- package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +0 -329
- package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +0 -44
- package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +0 -27
- package/esm2022/lib/node-entries/node-entries-global.service.mjs +0 -71
- package/esm2022/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.mjs +0 -42
- package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +0 -294
- package/esm2022/lib/node-entries/node-entries-templates.service.mjs +0 -11
- package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +0 -369
- package/esm2022/lib/node-entries/node-entries.component.mjs +0 -132
- package/esm2022/lib/node-entries/node-entries.module.mjs +0 -161
- package/esm2022/lib/node-entries/node-rating/node-rating.component.mjs +0 -125
- package/esm2022/lib/node-entries/node-stats-badges/node-stats-badges.component.mjs +0 -48
- package/esm2022/lib/node-entries/node-type-badge/node-type-badge.component.mjs +0 -36
- package/esm2022/lib/node-entries/option-button/option-button.component.mjs +0 -75
- package/esm2022/lib/node-entries/preview-image/preview-image.component.mjs +0 -53
- package/esm2022/lib/node-entries/sort-select-panel/sort-select-panel.component.mjs +0 -41
- package/esm2022/lib/node-url/node-url.component.mjs +0 -132
- package/esm2022/lib/pipes/file-size.pipe.mjs +0 -32
- package/esm2022/lib/pipes/format-date.pipe.mjs +0 -38
- package/esm2022/lib/pipes/mds-duration.pipe.mjs +0 -25
- package/esm2022/lib/pipes/node-icon.pipe.mjs +0 -18
- package/esm2022/lib/pipes/node-image-size.pipe.mjs +0 -24
- package/esm2022/lib/pipes/node-image.pipe.mjs +0 -55
- package/esm2022/lib/pipes/node-license.pipe.mjs +0 -24
- package/esm2022/lib/pipes/node-person-name.pipe.mjs +0 -50
- package/esm2022/lib/pipes/node-title.pipe.mjs +0 -35
- package/esm2022/lib/pipes/option-tooltip.pipe.mjs +0 -33
- package/esm2022/lib/pipes/property-slug.pipe.mjs +0 -16
- package/esm2022/lib/pipes/replace-chars.pipe.mjs +0 -29
- package/esm2022/lib/pipes/vcard-name.pipe.mjs +0 -25
- package/esm2022/lib/services/abstract/app.service.mjs +0 -3
- package/esm2022/lib/services/abstract/keyboard-shortcuts.service.mjs +0 -10
- package/esm2022/lib/services/abstract/options-helper.service.mjs +0 -3
- package/esm2022/lib/services/abstract/toast.service.mjs +0 -3
- package/esm2022/lib/services/accessibility.service.mjs +0 -73
- package/esm2022/lib/services/app-container.service.mjs +0 -69
- package/esm2022/lib/services/local-events.service.mjs +0 -43
- package/esm2022/lib/services/node-entries.service.mjs +0 -201
- package/esm2022/lib/services/node-helper.service.mjs +0 -330
- package/esm2022/lib/services/nodes-drag-drop.service.mjs +0 -155
- package/esm2022/lib/services/options-helper-data.service.mjs +0 -142
- package/esm2022/lib/services/render-helper.service.mjs +0 -114
- package/esm2022/lib/services/repo-url.service.mjs +0 -50
- package/esm2022/lib/services/search-helper.service.mjs +0 -52
- package/esm2022/lib/services/temporary-storage.service.mjs +0 -48
- package/esm2022/lib/services/ui.service.mjs +0 -327
- package/esm2022/lib/sort-dropdown/sort-dropdown.component.mjs +0 -50
- package/esm2022/lib/spinner/spinner.component.mjs +0 -19
- package/esm2022/lib/spinner-small/spinner-small.component.mjs +0 -18
- package/esm2022/lib/translations/fallback-translation-handler.mjs +0 -6
- package/esm2022/lib/translations/translation-loader.mjs +0 -219
- package/esm2022/lib/translations/translation-source.mjs +0 -11
- package/esm2022/lib/translations/translations.module.mjs +0 -82
- package/esm2022/lib/translations/translations.service.mjs +0 -238
- package/esm2022/lib/types/accessibillity.mjs +0 -19
- package/esm2022/lib/types/api-models.mjs +0 -2
- package/esm2022/lib/types/drag-drop.mjs +0 -2
- package/esm2022/lib/types/injection-tokens.mjs +0 -31
- package/esm2022/lib/types/keyboard-shortcuts.mjs +0 -11
- package/esm2022/lib/types/list-item.mjs +0 -41
- package/esm2022/lib/types/option-item.mjs +0 -192
- package/esm2022/lib/types/workflow.mjs +0 -25
- package/esm2022/lib/util/DateHelper.mjs +0 -200
- package/esm2022/lib/util/VCard.mjs +0 -278
- package/esm2022/lib/util/color-helper.mjs +0 -124
- package/esm2022/lib/util/duration-helper.mjs +0 -102
- package/esm2022/lib/util/functions.mjs +0 -13
- package/esm2022/lib/util/helper.mjs +0 -64
- package/esm2022/lib/util/isNumeric.mjs +0 -11
- package/esm2022/lib/util/rest-helper.mjs +0 -42
- package/esm2022/lib/util/ui-animation.mjs +0 -146
- package/esm2022/lib/util/ui-constants.mjs +0 -21
- package/esm2022/ngx-edu-sharing-ui.mjs +0 -5
- package/esm2022/public-api.mjs +0 -2
|
@@ -1,369 +0,0 @@
|
|
|
1
|
-
import { Component, ContentChild, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
-
import { interval, Subject } from 'rxjs';
|
|
3
|
-
import { NodeEntriesTemplatesService } from './node-entries-templates.service';
|
|
4
|
-
import { InteractionType, NodeEntriesDisplayType, } from './entries-model';
|
|
5
|
-
import { NodeDataSource } from './node-data-source';
|
|
6
|
-
import { Helper } from '../util/helper';
|
|
7
|
-
import { NodeEntriesService } from '../services/node-entries.service';
|
|
8
|
-
import { TemporaryStorageService } from '../services/temporary-storage.service';
|
|
9
|
-
import { OptionsHelperDataService } from '../services/options-helper-data.service';
|
|
10
|
-
import { switchMap, take, takeUntil } from 'rxjs/operators';
|
|
11
|
-
import { filter } from 'rxjs/operators';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../services/temporary-storage.service";
|
|
14
|
-
import * as i2 from "../services/node-entries.service";
|
|
15
|
-
import * as i3 from "ngx-edu-sharing-api";
|
|
16
|
-
import * as i4 from "../services/options-helper-data.service";
|
|
17
|
-
import * as i5 from "../services/node-helper.service";
|
|
18
|
-
import * as i6 from "../services/ui.service";
|
|
19
|
-
import * as i7 from "./node-entries-templates.service";
|
|
20
|
-
import * as i8 from "@angular/common";
|
|
21
|
-
import * as i9 from "./node-entries.component";
|
|
22
|
-
export class NodeEntriesWrapperComponent {
|
|
23
|
-
constructor(viewContainerRef, temporaryStorageService, ngZone, entriesService, nodeService, optionsHelper, nodeHelperService, uiService,
|
|
24
|
-
// @TODO
|
|
25
|
-
// private mainNav: MainNavService,
|
|
26
|
-
templatesService, changeDetectorRef, elementRef) {
|
|
27
|
-
this.viewContainerRef = viewContainerRef;
|
|
28
|
-
this.temporaryStorageService = temporaryStorageService;
|
|
29
|
-
this.ngZone = ngZone;
|
|
30
|
-
this.entriesService = entriesService;
|
|
31
|
-
this.nodeService = nodeService;
|
|
32
|
-
this.optionsHelper = optionsHelper;
|
|
33
|
-
this.nodeHelperService = nodeHelperService;
|
|
34
|
-
this.uiService = uiService;
|
|
35
|
-
this.templatesService = templatesService;
|
|
36
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
37
|
-
this.elementRef = elementRef;
|
|
38
|
-
this.checkbox = true;
|
|
39
|
-
/**
|
|
40
|
-
* emits when the user re-configures the columns
|
|
41
|
-
* should be used in order to save the new configuration
|
|
42
|
-
*/
|
|
43
|
-
this.columnsChange = new EventEmitter();
|
|
44
|
-
this.displayType = NodeEntriesDisplayType.Grid;
|
|
45
|
-
this.displayTypeChange = new EventEmitter();
|
|
46
|
-
this.elementInteractionType = InteractionType.DefaultActionLink;
|
|
47
|
-
/**
|
|
48
|
-
* This color defines the base color of gradients visually limiting a grid in scroll direction.
|
|
49
|
-
* Defaults to white.
|
|
50
|
-
*/
|
|
51
|
-
this.scrollGradientColor = '#fff';
|
|
52
|
-
/**
|
|
53
|
-
* UI hints for whether a single click will cause a dynamic action.
|
|
54
|
-
*
|
|
55
|
-
* This does not configure the actual behavior but only UI hints to the user. Hints include
|
|
56
|
-
* hover effects and a changed cursor.
|
|
57
|
-
*
|
|
58
|
-
* - When choosing 'static', the `clickItem` event should trigger some stationary action like
|
|
59
|
-
* selecting the element or displaying information in a complementary page area. The
|
|
60
|
-
* `dblClickItem` event can be used for a more disruptive action.
|
|
61
|
-
* - When choosing 'dynamic', the `clickItem` event should trigger a major action like
|
|
62
|
-
* navigating to a new page or closing a dialog.
|
|
63
|
-
*/
|
|
64
|
-
// TODO: Consider controlling the ui hints and the actual behavior with a single option.
|
|
65
|
-
this.singleClickHint = 'dynamic';
|
|
66
|
-
/**
|
|
67
|
-
* Do not load more data on scroll.
|
|
68
|
-
*/
|
|
69
|
-
this.disableInfiniteScroll = false;
|
|
70
|
-
this.fetchData = new EventEmitter();
|
|
71
|
-
this.clickItem = new EventEmitter();
|
|
72
|
-
this.dblClickItem = new EventEmitter();
|
|
73
|
-
this.sortChange = new EventEmitter();
|
|
74
|
-
this.destroyed = new Subject();
|
|
75
|
-
// regulary re-bind template since it might have updated without ngChanges trigger
|
|
76
|
-
/*
|
|
77
|
-
ngZone.runOutsideAngular(() =>
|
|
78
|
-
setInterval(() => this.componentRef.instance.emptyRef = this.emptyRef)
|
|
79
|
-
);
|
|
80
|
-
*/
|
|
81
|
-
this.virtualNodesAdded = this.optionsHelper.virtualNodesAdded;
|
|
82
|
-
this.displayTypeChanged = this.optionsHelper.displayTypeChanged;
|
|
83
|
-
this.entriesService.selection.changed.subscribe(() => {
|
|
84
|
-
if (this.optionsHelper.getData()) {
|
|
85
|
-
this.optionsHelper.getData().selectedObjects =
|
|
86
|
-
this.entriesService.selection.selected;
|
|
87
|
-
this.optionsHelper.getData().activeObjects = this.entriesService.selection.selected;
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
console.warn('optionsHelper is not initalized correctly; data is empty');
|
|
91
|
-
}
|
|
92
|
-
void this.optionsHelper.refreshComponents();
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
ngOnInit() {
|
|
96
|
-
if (this.primaryInstance) {
|
|
97
|
-
this.optionsHelper.registerGlobalKeyboardShortcuts();
|
|
98
|
-
}
|
|
99
|
-
this.entriesService.columnsSubject
|
|
100
|
-
.pipe(takeUntil(this.destroyed), filter((c) => c?.fromUser))
|
|
101
|
-
.subscribe((c) => this.columnsChange.emit(c.columns));
|
|
102
|
-
}
|
|
103
|
-
ngOnChanges(changes = {}) {
|
|
104
|
-
if (!this.componentRef) {
|
|
105
|
-
this.init();
|
|
106
|
-
}
|
|
107
|
-
this.entriesService.list = this;
|
|
108
|
-
this.entriesService.dataSource = this.dataSource;
|
|
109
|
-
this.entriesService.scope = this.scope;
|
|
110
|
-
if (changes.columns) {
|
|
111
|
-
this.entriesService.columnsSubject.next({
|
|
112
|
-
columns: this.columns,
|
|
113
|
-
fromUser: false,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
this.entriesService.configureColumns = this.configureColumns;
|
|
117
|
-
this.entriesService.checkbox = this.checkbox;
|
|
118
|
-
this.entriesService.displayType = this.displayType;
|
|
119
|
-
this.entriesService.elementInteractionType = this.elementInteractionType;
|
|
120
|
-
this.entriesService.gridConfig = this.gridConfig;
|
|
121
|
-
this.entriesService.options = this.options;
|
|
122
|
-
this.entriesService.globalOptions = this.globalOptions;
|
|
123
|
-
this.entriesService.sort = this.sort;
|
|
124
|
-
this.entriesService.sortChange = this.sortChange;
|
|
125
|
-
this.entriesService.dragDrop = this.dragDrop;
|
|
126
|
-
this.entriesService.clickItem = this.clickItem;
|
|
127
|
-
this.entriesService.dblClickItem = this.dblClickItem;
|
|
128
|
-
this.entriesService.fetchData = this.fetchData;
|
|
129
|
-
this.entriesService.primaryInstance = this.primaryInstance;
|
|
130
|
-
this.entriesService.singleClickHint = this.singleClickHint;
|
|
131
|
-
this.entriesService.disableInfiniteScroll = this.disableInfiniteScroll;
|
|
132
|
-
this.entriesService.scrollGradientColor.set(this.scrollGradientColor);
|
|
133
|
-
if (changes['initConfig']) {
|
|
134
|
-
void this.initOptionsGenerator(this.initConfig);
|
|
135
|
-
}
|
|
136
|
-
if (this.componentRef) {
|
|
137
|
-
this.componentRef.instance.changeDetectorRef?.detectChanges();
|
|
138
|
-
}
|
|
139
|
-
// This might need wrapping with `setTimeout`.
|
|
140
|
-
this.updateTemplates();
|
|
141
|
-
}
|
|
142
|
-
ngOnDestroy() {
|
|
143
|
-
this.destroyed.next();
|
|
144
|
-
this.destroyed.complete();
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Replaces this wrapper with the configured custom-node-list component.
|
|
148
|
-
*/
|
|
149
|
-
init() {
|
|
150
|
-
this.customNodeListComponent = this.temporaryStorageService.get(TemporaryStorageService.CUSTOM_NODE_ENTRIES_COMPONENT, null);
|
|
151
|
-
if (this.customNodeListComponent == null) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
this.componentRef = this.uiService.injectAngularComponent(this.viewContainerRef, this.customNodeListComponent, this.elementRef.nativeElement,
|
|
155
|
-
// Input bindings are initialized in `ngOnChanges`.
|
|
156
|
-
this.getOutputBindings());
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Creates a simple map of the output bindings defined in this component.
|
|
160
|
-
*/
|
|
161
|
-
getOutputBindings() {
|
|
162
|
-
const outputBindings = {};
|
|
163
|
-
for (const key of Object.keys(this)) {
|
|
164
|
-
const value = this[key];
|
|
165
|
-
if (value instanceof EventEmitter) {
|
|
166
|
-
outputBindings[key] = value;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return outputBindings;
|
|
170
|
-
}
|
|
171
|
-
getDisplayType() {
|
|
172
|
-
return this.displayType;
|
|
173
|
-
}
|
|
174
|
-
onDisplayTypeChange() {
|
|
175
|
-
return this.displayTypeChange.asObservable();
|
|
176
|
-
}
|
|
177
|
-
setDisplayType(displayType) {
|
|
178
|
-
this.displayType = displayType;
|
|
179
|
-
this.entriesService.displayType = displayType;
|
|
180
|
-
this.ngOnChanges();
|
|
181
|
-
this.displayTypeChange.emit(displayType);
|
|
182
|
-
}
|
|
183
|
-
updateNodes(nodes) {
|
|
184
|
-
if (!nodes) {
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
this.dataSource.getData().forEach((d) => {
|
|
188
|
-
let hits = nodes.filter((n) => n?.ref
|
|
189
|
-
? n?.ref.id === d?.ref.id
|
|
190
|
-
: n?.authorityName ===
|
|
191
|
-
d?.authorityName);
|
|
192
|
-
if (hits.length === 0) {
|
|
193
|
-
// handle if the original has changed (for collection refs)
|
|
194
|
-
hits = nodes.filter((n) => n?.ref &&
|
|
195
|
-
n?.ref?.id === d?.originalId);
|
|
196
|
-
}
|
|
197
|
-
if (hits.length === 1) {
|
|
198
|
-
this.nodeHelperService.copyDataToNode(d, hits[0]);
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
// trigger rebuild
|
|
202
|
-
if (this.dataSource instanceof NodeDataSource) {
|
|
203
|
-
this.dataSource.refresh();
|
|
204
|
-
}
|
|
205
|
-
const oldSelection = this.entriesService.selection.selected;
|
|
206
|
-
this.entriesService.selection.clear();
|
|
207
|
-
this.entriesService.selection.select(...oldSelection.map((o) => this.dataSource.getData().filter((d) => Helper.objectEquals(o, d))?.[0]));
|
|
208
|
-
this.changeDetectorRef.detectChanges();
|
|
209
|
-
}
|
|
210
|
-
showReorderColumnsDialog() { }
|
|
211
|
-
addVirtualNodes(virtual) {
|
|
212
|
-
virtual = virtual.map((o) => {
|
|
213
|
-
o.virtual = true;
|
|
214
|
-
return o;
|
|
215
|
-
});
|
|
216
|
-
virtual.forEach((v) => {
|
|
217
|
-
const contains = this.dataSource
|
|
218
|
-
.getData()
|
|
219
|
-
.some((d) => d.ref
|
|
220
|
-
? d.ref?.id === v.ref?.id
|
|
221
|
-
: d.authorityName === v.authorityName);
|
|
222
|
-
if (contains) {
|
|
223
|
-
if (v.override !== false) {
|
|
224
|
-
this.updateNodes([v]);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
this.dataSource.appendData([v], 'before');
|
|
229
|
-
}
|
|
230
|
-
if (v.observe) {
|
|
231
|
-
interval(2000)
|
|
232
|
-
.pipe(take(10), takeUntil(this.destroyed), switchMap(() => this.nodeService.getNode(v.ref.id, {
|
|
233
|
-
repository: v.ref.repo,
|
|
234
|
-
})))
|
|
235
|
-
.subscribe((node) => {
|
|
236
|
-
node.virtual = true;
|
|
237
|
-
this.updateNodes([node]);
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
this.entriesService.selection.clear();
|
|
242
|
-
this.entriesService.selection.select(...virtual);
|
|
243
|
-
this.virtualNodesAdded.emit(virtual);
|
|
244
|
-
this.changeDetectorRef.detectChanges();
|
|
245
|
-
}
|
|
246
|
-
setOptions(options) {
|
|
247
|
-
this.options = options;
|
|
248
|
-
this.ngOnChanges();
|
|
249
|
-
}
|
|
250
|
-
selectAll() {
|
|
251
|
-
this.entriesService.selection.select(...this.entriesService.dataSource.getData());
|
|
252
|
-
}
|
|
253
|
-
getSelection() {
|
|
254
|
-
return this.entriesService.selection;
|
|
255
|
-
}
|
|
256
|
-
async initOptionsGenerator(config) {
|
|
257
|
-
await this.optionsHelper.initComponents(config.actionbar, this);
|
|
258
|
-
this.optionsHelper.setData({
|
|
259
|
-
scope: this.entriesService.scope,
|
|
260
|
-
activeObjects: this.entriesService.selection.selected,
|
|
261
|
-
selectedObjects: this.entriesService.selection.selected,
|
|
262
|
-
allObjects: this.dataSource.getData(),
|
|
263
|
-
parent: config.parent,
|
|
264
|
-
customOptions: config.customOptions,
|
|
265
|
-
});
|
|
266
|
-
void this.optionsHelper.refreshComponents();
|
|
267
|
-
}
|
|
268
|
-
ngAfterViewInit() {
|
|
269
|
-
// Prevent changed-after-checked error
|
|
270
|
-
void Promise.resolve().then(() => this.updateTemplates());
|
|
271
|
-
}
|
|
272
|
-
updateTemplates() {
|
|
273
|
-
this.templatesService.title = this.titleRef;
|
|
274
|
-
this.templatesService.empty = this.emptyRef;
|
|
275
|
-
this.templatesService.actionArea = this.actionAreaRef;
|
|
276
|
-
this.templatesService.overlay = this.overlayRef;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* reset the pagination to the first page
|
|
280
|
-
* hint: this will do nothing in case the paginationStrategy !== Pagination
|
|
281
|
-
*/
|
|
282
|
-
resetPagination() {
|
|
283
|
-
this.nodeEntriesComponentRef?.paginator?.firstPage();
|
|
284
|
-
}
|
|
285
|
-
deleteNodes(objects) {
|
|
286
|
-
this.dataSource.removeData(objects);
|
|
287
|
-
this.getSelection().clear();
|
|
288
|
-
}
|
|
289
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodeEntriesWrapperComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.TemporaryStorageService }, { token: i0.NgZone }, { token: i2.NodeEntriesService }, { token: i3.NodeService }, { token: i4.OptionsHelperDataService }, { token: i5.NodeHelperService }, { token: i6.UIService }, { token: i7.NodeEntriesTemplatesService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
290
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: NodeEntriesWrapperComponent, selector: "es-node-entries-wrapper", inputs: { dataSource: "dataSource", scope: "scope", columns: "columns", configureColumns: "configureColumns", checkbox: "checkbox", globalOptions: "globalOptions", displayType: "displayType", elementInteractionType: "elementInteractionType", sort: "sort", dragDrop: "dragDrop", gridConfig: "gridConfig", scrollGradientColor: "scrollGradientColor", initConfig: "initConfig", primaryInstance: "primaryInstance", singleClickHint: "singleClickHint", disableInfiniteScroll: "disableInfiniteScroll" }, outputs: { columnsChange: "columnsChange", displayTypeChange: "displayTypeChange", fetchData: "fetchData", clickItem: "clickItem", dblClickItem: "dblClickItem", sortChange: "sortChange", virtualNodesAdded: "virtualNodesAdded", displayTypeChanged: "displayTypeChanged" }, providers: [NodeEntriesService, OptionsHelperDataService, NodeEntriesTemplatesService], queries: [{ propertyName: "titleRef", first: true, predicate: ["title"], descendants: true }, { propertyName: "emptyRef", first: true, predicate: ["empty"], descendants: true }, { propertyName: "actionAreaRef", first: true, predicate: ["actionArea"], descendants: true }, { propertyName: "overlayRef", first: true, predicate: ["overlay"], descendants: true }], viewQueries: [{ propertyName: "nodeEntriesComponentRef", first: true, predicate: ["nodeEntriesComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `<es-node-entries
|
|
291
|
-
#nodeEntriesComponent
|
|
292
|
-
*ngIf="!customNodeListComponent"
|
|
293
|
-
></es-node-entries>`, isInline: true, dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.NodeEntriesComponent, selector: "es-node-entries" }] }); }
|
|
294
|
-
}
|
|
295
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodeEntriesWrapperComponent, decorators: [{
|
|
296
|
-
type: Component,
|
|
297
|
-
args: [{
|
|
298
|
-
selector: 'es-node-entries-wrapper',
|
|
299
|
-
template: `<es-node-entries
|
|
300
|
-
#nodeEntriesComponent
|
|
301
|
-
*ngIf="!customNodeListComponent"
|
|
302
|
-
></es-node-entries>`,
|
|
303
|
-
providers: [NodeEntriesService, OptionsHelperDataService, NodeEntriesTemplatesService],
|
|
304
|
-
}]
|
|
305
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1.TemporaryStorageService }, { type: i0.NgZone }, { type: i2.NodeEntriesService }, { type: i3.NodeService }, { type: i4.OptionsHelperDataService }, { type: i5.NodeHelperService }, { type: i6.UIService }, { type: i7.NodeEntriesTemplatesService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { titleRef: [{
|
|
306
|
-
type: ContentChild,
|
|
307
|
-
args: ['title']
|
|
308
|
-
}], emptyRef: [{
|
|
309
|
-
type: ContentChild,
|
|
310
|
-
args: ['empty']
|
|
311
|
-
}], actionAreaRef: [{
|
|
312
|
-
type: ContentChild,
|
|
313
|
-
args: ['actionArea']
|
|
314
|
-
}], overlayRef: [{
|
|
315
|
-
type: ContentChild,
|
|
316
|
-
args: ['overlay']
|
|
317
|
-
}], nodeEntriesComponentRef: [{
|
|
318
|
-
type: ViewChild,
|
|
319
|
-
args: ['nodeEntriesComponent']
|
|
320
|
-
}], dataSource: [{
|
|
321
|
-
type: Input
|
|
322
|
-
}], scope: [{
|
|
323
|
-
type: Input
|
|
324
|
-
}], columns: [{
|
|
325
|
-
type: Input
|
|
326
|
-
}], configureColumns: [{
|
|
327
|
-
type: Input
|
|
328
|
-
}], checkbox: [{
|
|
329
|
-
type: Input
|
|
330
|
-
}], columnsChange: [{
|
|
331
|
-
type: Output
|
|
332
|
-
}], globalOptions: [{
|
|
333
|
-
type: Input
|
|
334
|
-
}], displayType: [{
|
|
335
|
-
type: Input
|
|
336
|
-
}], displayTypeChange: [{
|
|
337
|
-
type: Output
|
|
338
|
-
}], elementInteractionType: [{
|
|
339
|
-
type: Input
|
|
340
|
-
}], sort: [{
|
|
341
|
-
type: Input
|
|
342
|
-
}], dragDrop: [{
|
|
343
|
-
type: Input
|
|
344
|
-
}], gridConfig: [{
|
|
345
|
-
type: Input
|
|
346
|
-
}], scrollGradientColor: [{
|
|
347
|
-
type: Input
|
|
348
|
-
}], initConfig: [{
|
|
349
|
-
type: Input
|
|
350
|
-
}], primaryInstance: [{
|
|
351
|
-
type: Input
|
|
352
|
-
}], singleClickHint: [{
|
|
353
|
-
type: Input
|
|
354
|
-
}], disableInfiniteScroll: [{
|
|
355
|
-
type: Input
|
|
356
|
-
}], fetchData: [{
|
|
357
|
-
type: Output
|
|
358
|
-
}], clickItem: [{
|
|
359
|
-
type: Output
|
|
360
|
-
}], dblClickItem: [{
|
|
361
|
-
type: Output
|
|
362
|
-
}], sortChange: [{
|
|
363
|
-
type: Output
|
|
364
|
-
}], virtualNodesAdded: [{
|
|
365
|
-
type: Output
|
|
366
|
-
}], displayTypeChanged: [{
|
|
367
|
-
type: Output
|
|
368
|
-
}] } });
|
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1lbnRyaWVzLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9ub2RlLWVudHJpZXMvbm9kZS1lbnRyaWVzLXdyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBRVQsWUFBWSxFQUVaLFlBQVksRUFDWixLQUFLLEVBS0wsTUFBTSxFQUlOLFNBQVMsR0FFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUvRSxPQUFPLEVBR0gsZUFBZSxFQVFmLHNCQUFzQixHQUN6QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSTVGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBU2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBc0MsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBVTVFLE1BQU0sT0FBTywyQkFBMkI7SUF5RnBDLFlBQ1ksZ0JBQWtDLEVBQ2xDLHVCQUFnRCxFQUNoRCxNQUFjLEVBQ2QsY0FBcUMsRUFDckMsV0FBd0IsRUFDekIsYUFBdUMsRUFDdEMsaUJBQW9DLEVB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QkFBQyxTQUFTO2dCQUNZLHVCQUF1QjtzQkFBekQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBQ3hCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFLSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNFLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0Usc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUcsZUFBZTtzQkFBdkIsS0FBSztnQkFjRyxlQUFlO3NCQUF2QixLQUFLO2dCQUlHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTm9kZUVudHJpZXNUZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi9ub2RlLWVudHJpZXMtdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZUVudHJpZXNDb21wb25lbnQgfSBmcm9tICcuL25vZGUtZW50cmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBGZXRjaEV2ZW50LFxuICAgIEdyaWRDb25maWcsXG4gICAgSW50ZXJhY3Rpb25UeXBlLFxuICAgIExpc3REcmFnR3JvcENvbmZpZyxcbiAgICBMaXN0RXZlbnRJbnRlcmZhY2UsXG4gICAgTGlzdE9wdGlvbnMsXG4gICAgTGlzdE9wdGlvbnNDb25maWcsXG4gICAgTGlzdFNvcnRDb25maWcsXG4gICAgTm9kZUNsaWNrRXZlbnQsXG4gICAgTm9kZUVudHJpZXNEYXRhVHlwZSxcbiAgICBOb2RlRW50cmllc0Rpc3BsYXlUeXBlLFxufSBmcm9tICcuL2VudHJpZXMtbW9kZWwnO1xuaW1wb3J0IHsgTm9kZURhdGFTb3VyY2UgfSBmcm9tICcuL25vZGUtZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vdXRpbC9oZWxwZXInO1xuaW1wb3J0IHsgQ3VzdG9tU2VsZWN0aW9uTW9kZWwsIE5vZGVFbnRyaWVzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vZGUtZW50cmllcy5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbkl0ZW0sIFNjb3BlIH0gZnJvbSAnLi4vdHlwZXMvb3B0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgTm9kZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ub2RlLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vdHlwZXMvbGlzdC1pdGVtJztcbmltcG9ydCB7IFRlbXBvcmFyeVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGVtcG9yYXJ5LXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICAgIENvbGxlY3Rpb25SZWZlcmVuY2UsXG4gICAgR2VuZXJpY0F1dGhvcml0eSxcbiAgICBOb2RlLFxuICAgIE5vZGVTZXJ2aWNlLFxuICAgIFVzZXIsXG59IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgVmlydHVhbE5vZGUgfSBmcm9tICcuLi90eXBlcy9hcGktbW9kZWxzJztcbmltcG9ydCB7IE9wdGlvbnNIZWxwZXJEYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29wdGlvbnMtaGVscGVyLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBVSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91aS5zZXJ2aWNlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLW5vZGUtZW50cmllcy13cmFwcGVyJyxcbiAgICB0ZW1wbGF0ZTogYDxlcy1ub2RlLWVudHJpZXNcbiAgICAgICAgI25vZGVFbnRyaWVzQ29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwiIWN1c3RvbU5vZGVMaXN0Q29tcG9uZW50XCJcbiAgICA+PC9lcy1ub2RlLWVudHJpZXM+YCxcbiAgICBwcm92aWRlcnM6IFtOb2RlRW50cmllc1NlcnZpY2UsIE9wdGlvbnNIZWxwZXJEYXRhU2VydmljZSwgTm9kZUVudHJpZXNUZW1wbGF0ZXNTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZUVudHJpZXNXcmFwcGVyQ29tcG9uZW50PFQgZXh0ZW5kcyBOb2RlRW50cmllc0RhdGFUeXBlPlxuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgTGlzdEV2ZW50SW50ZXJmYWNlPFQ+XG57XG4gICAgLyoqXG4gICAgICogdGl0bGUgKGFib3ZlKSB0aGUgdGFibGUvZ3JpZFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RpdGxlJykgdGl0bGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLyoqXG4gICAgICogZGF0YSBzaG93biB3aGVuIGRhdGEgc291cmNlIGlzIGVtcHR5XG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHknKSBlbXB0eVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBjdXN0b20gYXJlYSBmb3IgYWN0aW9ucyBvbmx5IGZvciBOb2RlRW50cmllc0Rpc3BsYXlUeXBlLlNtYWxsR3JpZCAocGVyIGNhcmQgYXQgdGhlIGJvdHRvbSlcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdhY3Rpb25BcmVhJykgYWN0aW9uQXJlYVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBjdXN0b20gYXJlYSBmb3IgYW4gb3ZlcmxheSBcImFib3ZlXCIgZWFjaCBjYXJkIChpLmUuIHRvIHNob3cgZGlzYWJsZWQgaW5mb3MpLCBvbmx5IGZvciBOb2RlRW50cmllc0Rpc3BsYXlUeXBlLlNtYWxsR3JpZCAmIG9kZUVudHJpZXNEaXNwbGF5VHlwZS5HcmlkXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnb3ZlcmxheScpIG92ZXJsYXlSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQFZpZXdDaGlsZCgnbm9kZUVudHJpZXNDb21wb25lbnQnKSBub2RlRW50cmllc0NvbXBvbmVudFJlZjogTm9kZUVudHJpZXNDb21wb25lbnQ8VD47XG4gICAgQElucHV0KCkgZGF0YVNvdXJjZTogTm9kZURhdGFTb3VyY2U8VD47XG4gICAgQElucHV0KCkgc2NvcGU6IFNjb3BlO1xuICAgIEBJbnB1dCgpIGNvbHVtbnM6IExpc3RJdGVtW107XG4gICAgQElucHV0KCkgY29uZmlndXJlQ29sdW1uczogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjaGVja2JveCA9IHRydWU7XG4gICAgLyoqXG4gICAgICogZW1pdHMgd2hlbiB0aGUgdXNlciByZS1jb25maWd1cmVzIHRoZSBjb2x1bW5zXG4gICAgICogc2hvdWxkIGJlIHVzZWQgaW4gb3JkZXIgdG8gc2F2ZSB0aGUgbmV3IGNvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgY29sdW1uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEl0ZW1bXT4oKTtcbiAgICBASW5wdXQoKSBnbG9iYWxPcHRpb25zOiBPcHRpb25JdGVtW107XG4gICAgQElucHV0KCkgZGlzcGxheVR5cGUgPSBOb2RlRW50cmllc0Rpc3BsYXlUeXBlLkdyaWQ7XG4gICAgQE91dHB1dCgpIGRpc3BsYXlUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlRW50cmllc0Rpc3BsYXlUeXBlPigpO1xuICAgIEBJbnB1dCgpIGVsZW1lbnRJbnRlcmFjdGlvblR5cGUgPSBJbnRlcmFjdGlvblR5cGUuRGVmYXVsdEFjdGlvbkxpbms7XG4gICAgQElucHV0KCkgc29ydDogTGlzdFNvcnRDb25maWc7XG4gICAgQElucHV0KCkgZHJhZ0Ryb3A6IExpc3REcmFnR3JvcENvbmZpZzxUPjtcbiAgICBASW5wdXQoKSBncmlkQ29uZmlnOiBHcmlkQ29uZmlnO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBjb2xvciBkZWZpbmVzIHRoZSBiYXNlIGNvbG9yIG9mIGdyYWRpZW50cyB2aXN1YWxseSBsaW1pdGluZyBhIGdyaWQgaW4gc2Nyb2xsIGRpcmVjdGlvbi5cbiAgICAgKiBEZWZhdWx0cyB0byB3aGl0ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzY3JvbGxHcmFkaWVudENvbG9yOiBzdHJpbmcgPSAnI2ZmZic7XG5cbiAgICAvKipcbiAgICAgKiB0aGlzIGNhbiBiZSBzZXQgaW5zdGVhZCBvZiBjYWxsaW5nIGluaXRPcHRpb25zR2VuZXJhdG9yKClcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbml0Q29uZmlnOiBMaXN0T3B0aW9uc0NvbmZpZztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbm9kZS1lbnRyaWVzIGluc3RhbmNlIHJlcHJlc2VudHMgdGhlIHBhZ2UncyBtYWluIGNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBPbmx5IHNldCB0byB0cnVlIGZvciBvbmUgaW5zdGFuY2UgcGVyIHBhZ2UuXG4gICAgICpcbiAgICAgKiBJZiB0cnVlLCB0aGlzIGluc3RhbmNlIHdpbGxcbiAgICAgKiAtIGhhbmRsZSBwYWdlLXdpZGUga2V5Ym9hcmQgc2hvcnRjdXRzXG4gICAgICogLSB0YWtlIGNvbnRyb2wgb2YgdGhlIGBwYWdlYCBhbmQgYHBhZ2VTaXplYCBxdWVyeSBwYXJhbWV0ZXJzIGZvciBwYWdpbmF0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcHJpbWFyeUluc3RhbmNlOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFVJIGhpbnRzIGZvciB3aGV0aGVyIGEgc2luZ2xlIGNsaWNrIHdpbGwgY2F1c2UgYSBkeW5hbWljIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgZG9lcyBub3QgY29uZmlndXJlIHRoZSBhY3R1YWwgYmVoYXZpb3IgYnV0IG9ubHkgVUkgaGludHMgdG8gdGhlIHVzZXIuIEhpbnRzIGluY2x1ZGVcbiAgICAgKiBob3ZlciBlZmZlY3RzIGFuZCBhIGNoYW5nZWQgY3Vyc29yLlxuICAgICAqXG4gICAgICogLSBXaGVuIGNob29zaW5nICdzdGF0aWMnLCB0aGUgYGNsaWNrSXRlbWAgZXZlbnQgc2hvdWxkIHRyaWdnZXIgc29tZSBzdGF0aW9uYXJ5IGFjdGlvbiBsaWtlXG4gICAgICogICBzZWxlY3RpbmcgdGhlIGVsZW1lbnQgb3IgZGlzcGxheWluZyBpbmZvcm1hdGlvbiBpbiBhIGNvbXBsZW1lbnRhcnkgcGFnZSBhcmVhLiBUaGVcbiAgICAgKiAgIGBkYmxDbGlja0l0ZW1gIGV2ZW50IGNhbiBiZSB1c2VkIGZvciBhIG1vcmUgZGlzcnVwdGl2ZSBhY3Rpb24uXG4gICAgICogLSBXaGVuIGNob29zaW5nICdkeW5hbWljJywgdGhlIGBjbGlja0l0ZW1gIGV2ZW50IHNob3VsZCB0cmlnZ2VyIGEgbWFqb3IgYWN0aW9uIGxpa2VcbiAgICAgKiAgIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZSBvciBjbG9zaW5nIGEgZGlhbG9nLlxuICAgICAqL1xuICAgIC8vIFRPRE86IENvbnNpZGVyIGNvbnRyb2xsaW5nIHRoZSB1aSBoaW50cyBhbmQgdGhlIGFjdHVhbCBiZWhhdmlvciB3aXRoIGEgc2luZ2xlIG9wdGlvbi5cbiAgICBASW5wdXQoKSBzaW5nbGVDbGlja0hpbnQ6ICdkeW5hbWljJyB8ICdzdGF0aWMnID0gJ2R5bmFtaWMnO1xuICAgIC8qKlxuICAgICAqIERvIG5vdCBsb2FkIG1vcmUgZGF0YSBvbiBzY3JvbGwuXG4gICAgICovXG4gICAgQElucHV0KCkgZGlzYWJsZUluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgZmV0Y2hEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxGZXRjaEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBjbGlja0l0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGVDbGlja0V2ZW50PFQ+PigpO1xuICAgIEBPdXRwdXQoKSBkYmxDbGlja0l0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGVDbGlja0V2ZW50PFQ+PigpO1xuICAgIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0U29ydENvbmZpZz4oKTtcbiAgICBAT3V0cHV0KCkgdmlydHVhbE5vZGVzQWRkZWQ7XG4gICAgQE91dHB1dCgpIGRpc3BsYXlUeXBlQ2hhbmdlZDtcblxuICAgIGN1c3RvbU5vZGVMaXN0Q29tcG9uZW50OiBUeXBlPE5vZGVFbnRyaWVzQ29tcG9uZW50PFQ+PjtcbiAgICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE5vZGVFbnRyaWVzQ29tcG9uZW50PFQ+PjtcbiAgICBwcml2YXRlIG9wdGlvbnM6IExpc3RPcHRpb25zO1xuICAgIHByaXZhdGUgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgdGVtcG9yYXJ5U3RvcmFnZVNlcnZpY2U6IFRlbXBvcmFyeVN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGVudHJpZXNTZXJ2aWNlOiBOb2RlRW50cmllc1NlcnZpY2U8VD4sXG4gICAgICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IE5vZGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgb3B0aW9uc0hlbHBlcjogT3B0aW9uc0hlbHBlckRhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vZGVIZWxwZXJTZXJ2aWNlOiBOb2RlSGVscGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB1aVNlcnZpY2U6IFVJU2VydmljZSxcbiAgICAgICAgLy8gQFRPRE9cbiAgICAgICAgLy8gcHJpdmF0ZSBtYWluTmF2OiBNYWluTmF2U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZXNTZXJ2aWNlOiBOb2RlRW50cmllc1RlbXBsYXRlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgKSB7XG4gICAgICAgIC8vIHJlZ3VsYXJ5IHJlLWJpbmQgdGVtcGxhdGUgc2luY2UgaXQgbWlnaHQgaGF2ZSB1cGRhdGVkIHdpdGhvdXQgbmdDaGFuZ2VzIHRyaWdnZXJcbiAgICAgICAgLypcbiAgICAgICAgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lbXB0eVJlZiA9IHRoaXMuZW1wdHlSZWYpXG4gICAgICAgICk7XG4gICAgICAgICovXG4gICAgICAgIHRoaXMudmlydHVhbE5vZGVzQWRkZWQgPSB0aGlzLm9wdGlvbnNIZWxwZXIudmlydHVhbE5vZGVzQWRkZWQ7XG4gICAgICAgIHRoaXMuZGlzcGxheVR5cGVDaGFuZ2VkID0gdGhpcy5vcHRpb25zSGVscGVyLmRpc3BsYXlUeXBlQ2hhbmdlZDtcbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5zZWxlY3Rpb24uY2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uc0hlbHBlci5nZXREYXRhKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNIZWxwZXIuZ2V0RGF0YSgpLnNlbGVjdGVkT2JqZWN0cyA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cmllc1NlcnZpY2Uuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc0hlbHBlci5nZXREYXRhKCkuYWN0aXZlT2JqZWN0cyA9IHRoaXMuZW50cmllc1NlcnZpY2Uuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ29wdGlvbnNIZWxwZXIgaXMgbm90IGluaXRhbGl6ZWQgY29ycmVjdGx5OyBkYXRhIGlzIGVtcHR5Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2b2lkIHRoaXMub3B0aW9uc0hlbHBlci5yZWZyZXNoQ29tcG9uZW50cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucHJpbWFyeUluc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNIZWxwZXIucmVnaXN0ZXJHbG9iYWxLZXlib2FyZFNob3J0Y3V0cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50cmllc1NlcnZpY2UuY29sdW1uc1N1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChjKSA9PiBjPy5mcm9tVXNlciksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB0aGlzLmNvbHVtbnNDaGFuZ2UuZW1pdChjLmNvbHVtbnMpKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9ID0ge30pIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5saXN0ID0gdGhpcztcbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnNjb3BlID0gdGhpcy5zY29wZTtcbiAgICAgICAgaWYgKGNoYW5nZXMuY29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5jb2x1bW5zU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZnJvbVVzZXI6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5jb25maWd1cmVDb2x1bW5zID0gdGhpcy5jb25maWd1cmVDb2x1bW5zO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLmNoZWNrYm94ID0gdGhpcy5jaGVja2JveDtcbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5kaXNwbGF5VHlwZSA9IHRoaXMuZGlzcGxheVR5cGU7XG4gICAgICAgIHRoaXMuZW50cmllc1NlcnZpY2UuZWxlbWVudEludGVyYWN0aW9uVHlwZSA9IHRoaXMuZWxlbWVudEludGVyYWN0aW9uVHlwZTtcbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5ncmlkQ29uZmlnID0gdGhpcy5ncmlkQ29uZmlnO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIHRoaXMuZW50cmllc1NlcnZpY2UuZ2xvYmFsT3B0aW9ucyA9IHRoaXMuZ2xvYmFsT3B0aW9ucztcbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnNvcnRDaGFuZ2UgPSB0aGlzLnNvcnRDaGFuZ2U7XG4gICAgICAgIHRoaXMuZW50cmllc1NlcnZpY2UuZHJhZ0Ryb3AgPSB0aGlzLmRyYWdEcm9wO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLmNsaWNrSXRlbSA9IHRoaXMuY2xpY2tJdGVtO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLmRibENsaWNrSXRlbSA9IHRoaXMuZGJsQ2xpY2tJdGVtO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLmZldGNoRGF0YSA9IHRoaXMuZmV0Y2hEYXRhO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnByaW1hcnlJbnN0YW5jZSA9IHRoaXMucHJpbWFyeUluc3RhbmNlO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnNpbmdsZUNsaWNrSGludCA9IHRoaXMuc2luZ2xlQ2xpY2tIaW50O1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLmRpc2FibGVJbmZpbml0ZVNjcm9sbCA9IHRoaXMuZGlzYWJsZUluZmluaXRlU2Nyb2xsO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnNjcm9sbEdyYWRpZW50Q29sb3Iuc2V0KHRoaXMuc2Nyb2xsR3JhZGllbnRDb2xvcik7XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2luaXRDb25maWcnXSkge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmluaXRPcHRpb25zR2VuZXJhdG9yKHRoaXMuaW5pdENvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jaGFuZ2VEZXRlY3RvclJlZj8uZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgbWlnaHQgbmVlZCB3cmFwcGluZyB3aXRoIGBzZXRUaW1lb3V0YC5cbiAgICAgICAgdGhpcy51cGRhdGVUZW1wbGF0ZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIHRoaXMgd3JhcHBlciB3aXRoIHRoZSBjb25maWd1cmVkIGN1c3RvbS1ub2RlLWxpc3QgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXN0b21Ob2RlTGlzdENvbXBvbmVudCA9IHRoaXMudGVtcG9yYXJ5U3RvcmFnZVNlcnZpY2UuZ2V0KFxuICAgICAgICAgICAgVGVtcG9yYXJ5U3RvcmFnZVNlcnZpY2UuQ1VTVE9NX05PREVfRU5UUklFU19DT01QT05FTlQsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21Ob2RlTGlzdENvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnVpU2VydmljZS5pbmplY3RBbmd1bGFyQ29tcG9uZW50KFxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21Ob2RlTGlzdENvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgLy8gSW5wdXQgYmluZGluZ3MgYXJlIGluaXRpYWxpemVkIGluIGBuZ09uQ2hhbmdlc2AuXG4gICAgICAgICAgICB0aGlzLmdldE91dHB1dEJpbmRpbmdzKCksXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzaW1wbGUgbWFwIG9mIHRoZSBvdXRwdXQgYmluZGluZ3MgZGVmaW5lZCBpbiB0aGlzIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE91dHB1dEJpbmRpbmdzKCk6IHsgW2tleTogc3RyaW5nXTogRXZlbnRFbWl0dGVyPGFueT4gfSB7XG4gICAgICAgIGNvbnN0IG91dHB1dEJpbmRpbmdzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICh0aGlzIGFzIGFueSlba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEV2ZW50RW1pdHRlcikge1xuICAgICAgICAgICAgICAgIG91dHB1dEJpbmRpbmdzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0QmluZGluZ3M7XG4gICAgfVxuXG4gICAgZ2V0RGlzcGxheVR5cGUoKTogTm9kZUVudHJpZXNEaXNwbGF5VHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlUeXBlO1xuICAgIH1cblxuICAgIG9uRGlzcGxheVR5cGVDaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlUeXBlQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHNldERpc3BsYXlUeXBlKGRpc3BsYXlUeXBlOiBOb2RlRW50cmllc0Rpc3BsYXlUeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzcGxheVR5cGUgPSBkaXNwbGF5VHlwZTtcbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5kaXNwbGF5VHlwZSA9IGRpc3BsYXlUeXBlO1xuICAgICAgICB0aGlzLm5nT25DaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuZGlzcGxheVR5cGVDaGFuZ2UuZW1pdChkaXNwbGF5VHlwZSk7XG4gICAgfVxuXG4gICAgdXBkYXRlTm9kZXMobm9kZXM6IHZvaWQgfCBUW10pIHtcbiAgICAgICAgaWYgKCFub2Rlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5nZXREYXRhKCkuZm9yRWFjaCgoZCkgPT4ge1xuICAgICAgICAgICAgbGV0IGhpdHMgPSAobm9kZXMgYXMgVFtdKS5maWx0ZXIoKG4pID0+XG4gICAgICAgICAgICAgICAgKG4gYXMgTm9kZSk/LnJlZlxuICAgICAgICAgICAgICAgICAgICA/IChuIGFzIE5vZGUpPy5yZWYuaWQgPT09IChkIGFzIE5vZGUpPy5yZWYuaWRcbiAgICAgICAgICAgICAgICAgICAgOiAobiBhcyBHZW5lcmljQXV0aG9yaXR5KT8uYXV0aG9yaXR5TmFtZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAoZCBhcyBHZW5lcmljQXV0aG9yaXR5KT8uYXV0aG9yaXR5TmFtZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaGl0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgaWYgdGhlIG9yaWdpbmFsIGhhcyBjaGFuZ2VkIChmb3IgY29sbGVjdGlvbiByZWZzKVxuICAgICAgICAgICAgICAgIGhpdHMgPSAobm9kZXMgYXMgVFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChuKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKG4gYXMgTm9kZSk/LnJlZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKG4gYXMgTm9kZSk/LnJlZj8uaWQgPT09IChkIGFzIHVua25vd24gYXMgQ29sbGVjdGlvblJlZmVyZW5jZSk/Lm9yaWdpbmFsSWQsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoaXRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZUhlbHBlclNlcnZpY2UuY29weURhdGFUb05vZGUoZCBhcyBOb2RlLCBoaXRzWzBdIGFzIE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gdHJpZ2dlciByZWJ1aWxkXG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBOb2RlRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgKHRoaXMuZGF0YVNvdXJjZSBhcyBOb2RlRGF0YVNvdXJjZTxUPikucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuZW50cmllc1NlcnZpY2Uuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnNlbGVjdGlvbi5zZWxlY3QoXG4gICAgICAgICAgICAuLi5vbGRTZWxlY3Rpb24ubWFwKFxuICAgICAgICAgICAgICAgIChvKSA9PiB0aGlzLmRhdGFTb3VyY2UuZ2V0RGF0YSgpLmZpbHRlcigoZCkgPT4gSGVscGVyLm9iamVjdEVxdWFscyhvLCBkKSk/LlswXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHNob3dSZW9yZGVyQ29sdW1uc0RpYWxvZygpOiB2b2lkIHt9XG5cbiAgICBhZGRWaXJ0dWFsTm9kZXModmlydHVhbDogVFtdKTogdm9pZCB7XG4gICAgICAgIHZpcnR1YWwgPSB2aXJ0dWFsLm1hcCgobykgPT4ge1xuICAgICAgICAgICAgKG8gYXMgVmlydHVhbE5vZGUpLnZpcnR1YWwgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgIH0pO1xuICAgICAgICB2aXJ0dWFsLmZvckVhY2goKHY6IFQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5zID0gdGhpcy5kYXRhU291cmNlXG4gICAgICAgICAgICAgICAgLmdldERhdGEoKVxuICAgICAgICAgICAgICAgIC5zb21lKChkKSA9PlxuICAgICAgICAgICAgICAgICAgICAoZCBhcyBOb2RlKS5yZWZcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKGQgYXMgTm9kZSkucmVmPy5pZCA9PT0gKHYgYXMgTm9kZSkucmVmPy5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAoZCBhcyBVc2VyKS5hdXRob3JpdHlOYW1lID09PSAodiBhcyBVc2VyKS5hdXRob3JpdHlOYW1lLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoY29udGFpbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoKHYgYXMgVmlydHVhbE5vZGUpLm92ZXJyaWRlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5vZGVzKFt2XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuYXBwZW5kRGF0YShbdl0sICdiZWZvcmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodiBhcyBWaXJ0dWFsTm9kZSkub2JzZXJ2ZSkge1xuICAgICAgICAgICAgICAgIGludGVydmFsKDIwMDApXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxMCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlU2VydmljZS5nZXROb2RlKCh2IGFzIFZpcnR1YWxOb2RlKS5yZWYuaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTogKHYgYXMgVmlydHVhbE5vZGUpLnJlZi5yZXBvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSBhcyBWaXJ0dWFsTm9kZSkudmlydHVhbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5vZGVzKFtub2RlIGFzIFRdKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLnNlbGVjdGlvbi5zZWxlY3QoLi4udmlydHVhbCk7XG4gICAgICAgIHRoaXMudmlydHVhbE5vZGVzQWRkZWQuZW1pdCh2aXJ0dWFsIGFzIE5vZGVbXSk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHNldE9wdGlvbnMob3B0aW9uczogTGlzdE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIHNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMuZW50cmllc1NlcnZpY2UuZGF0YVNvdXJjZS5nZXREYXRhKCkpO1xuICAgIH1cbiAgICBnZXRTZWxlY3Rpb24oKTogQ3VzdG9tU2VsZWN0aW9uTW9kZWw8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRyaWVzU2VydmljZS5zZWxlY3Rpb247XG4gICAgfVxuXG4gICAgYXN5bmMgaW5pdE9wdGlvbnNHZW5lcmF0b3IoY29uZmlnOiBMaXN0T3B0aW9uc0NvbmZpZykge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdGlvbnNIZWxwZXIuaW5pdENvbXBvbmVudHMoY29uZmlnLmFjdGlvbmJhciwgdGhpcyk7XG4gICAgICAgIHRoaXMub3B0aW9uc0hlbHBlci5zZXREYXRhKHtcbiAgICAgICAgICAgIHNjb3BlOiB0aGlzLmVudHJpZXNTZXJ2aWNlLnNjb3BlLFxuICAgICAgICAgICAgYWN0aXZlT2JqZWN0czogdGhpcy5lbnRyaWVzU2VydmljZS5zZWxlY3Rpb24uc2VsZWN0ZWQsXG4gICAgICAgICAgICBzZWxlY3RlZE9iamVjdHM6IHRoaXMuZW50cmllc1NlcnZpY2Uuc2VsZWN0aW9uLnNlbGVjdGVkLFxuICAgICAgICAgICAgYWxsT2JqZWN0czogdGhpcy5kYXRhU291cmNlLmdldERhdGEoKSxcbiAgICAgICAgICAgIHBhcmVudDogY29uZmlnLnBhcmVudCxcbiAgICAgICAgICAgIGN1c3RvbU9wdGlvbnM6IGNvbmZpZy5jdXN0b21PcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgICAgdm9pZCB0aGlzLm9wdGlvbnNIZWxwZXIucmVmcmVzaENvbXBvbmVudHMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFByZXZlbnQgY2hhbmdlZC1hZnRlci1jaGVja2VkIGVycm9yXG4gICAgICAgIHZvaWQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLnVwZGF0ZVRlbXBsYXRlcygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVRlbXBsYXRlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXNTZXJ2aWNlLnRpdGxlID0gdGhpcy50aXRsZVJlZjtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXNTZXJ2aWNlLmVtcHR5ID0gdGhpcy5lbXB0eVJlZjtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXNTZXJ2aWNlLmFjdGlvbkFyZWEgPSB0aGlzLmFjdGlvbkFyZWFSZWY7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzU2VydmljZS5vdmVybGF5ID0gdGhpcy5vdmVybGF5UmVmO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlc2V0IHRoZSBwYWdpbmF0aW9uIHRvIHRoZSBmaXJzdCBwYWdlXG4gICAgICogaGludDogdGhpcyB3aWxsIGRvIG5vdGhpbmcgaW4gY2FzZSB0aGUgcGFnaW5hdGlvblN0cmF0ZWd5ICE9PSBQYWdpbmF0aW9uXG4gICAgICovXG4gICAgcmVzZXRQYWdpbmF0aW9uKCkge1xuICAgICAgICB0aGlzLm5vZGVFbnRyaWVzQ29tcG9uZW50UmVmPy5wYWdpbmF0b3I/LmZpcnN0UGFnZSgpO1xuICAgIH1cblxuICAgIGRlbGV0ZU5vZGVzKG9iamVjdHM6IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UucmVtb3ZlRGF0YShvYmplY3RzKTtcbiAgICAgICAgdGhpcy5nZXRTZWxlY3Rpb24oKS5jbGVhcigpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { Component, Optional, ViewChild, } from '@angular/core';
|
|
2
|
-
import { MatPaginator } from '@angular/material/paginator';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { first, takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { NodeEntriesDisplayType } from './entries-model';
|
|
6
|
-
import { NodeDataSourceRemote } from './node-data-source-remote';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./node-entries-global.service";
|
|
9
|
-
import * as i2 from "../services/node-entries.service";
|
|
10
|
-
import * as i3 from "./node-entries-templates.service";
|
|
11
|
-
import * as i4 from "../services/abstract/keyboard-shortcuts.service";
|
|
12
|
-
import * as i5 from "@angular/router";
|
|
13
|
-
import * as i6 from "@ngx-translate/core";
|
|
14
|
-
import * as i7 from "@angular/common";
|
|
15
|
-
import * as i8 from "@angular/material/paginator";
|
|
16
|
-
import * as i9 from "./node-entries-card-grid/node-entries-card-grid.component";
|
|
17
|
-
import * as i10 from "./node-entries-table/node-entries-table.component";
|
|
18
|
-
export class NodeEntriesComponent {
|
|
19
|
-
constructor(changeDetectorRef, entriesGlobalService, entriesService, templatesService, globalKeyboardShortcuts, route, translate) {
|
|
20
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
21
|
-
this.entriesGlobalService = entriesGlobalService;
|
|
22
|
-
this.entriesService = entriesService;
|
|
23
|
-
this.templatesService = templatesService;
|
|
24
|
-
this.globalKeyboardShortcuts = globalKeyboardShortcuts;
|
|
25
|
-
this.route = route;
|
|
26
|
-
this.translate = translate;
|
|
27
|
-
this.NodeEntriesDisplayType = NodeEntriesDisplayType;
|
|
28
|
-
this.destroyed = new Subject();
|
|
29
|
-
this.updateKeyboardShortcuts = new Subject();
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
if (this.entriesService.primaryInstance) {
|
|
33
|
-
this.registerGlobalKeyboardShortcuts();
|
|
34
|
-
}
|
|
35
|
-
if (this.entriesService.dataSource instanceof NodeDataSourceRemote) {
|
|
36
|
-
// We don't require `sort` to be defined, but if it is set but not yet ready (`null`),
|
|
37
|
-
// we wait for its value before initializing the data source, so the first request is
|
|
38
|
-
// sent with the correct sort configuration. That is why we explicitly do not drop
|
|
39
|
-
// `undefined` with the `first` operator below.
|
|
40
|
-
this.entriesService.sortSubject
|
|
41
|
-
.pipe(first((sort) => sort !== null))
|
|
42
|
-
.subscribe(() => this.initRemoteDataSource(this.entriesService.dataSource));
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
ngAfterViewInit() {
|
|
46
|
-
if (this.paginator) {
|
|
47
|
-
void this.initPaginator(this.paginator);
|
|
48
|
-
this.changeDetectorRef.detectChanges();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
ngOnDestroy() {
|
|
52
|
-
this.destroyed.next();
|
|
53
|
-
this.destroyed.complete();
|
|
54
|
-
}
|
|
55
|
-
registerGlobalKeyboardShortcuts() {
|
|
56
|
-
this.globalKeyboardShortcuts.register([
|
|
57
|
-
{
|
|
58
|
-
modifiers: ['Ctrl/Cmd'],
|
|
59
|
-
keyCode: 'KeyA',
|
|
60
|
-
ignoreWhen: (event) =>
|
|
61
|
-
// SmallGrid doesn't support selection
|
|
62
|
-
this.entriesService.displayType === NodeEntriesDisplayType.SmallGrid,
|
|
63
|
-
callback: () => this.entriesService.toggleSelectAll(),
|
|
64
|
-
},
|
|
65
|
-
], { until: this.destroyed });
|
|
66
|
-
}
|
|
67
|
-
initRemoteDataSource(dataSource) {
|
|
68
|
-
const pageSize = this.entriesGlobalService.getPaginatorSizeOptions(this.entriesService.scope)[0];
|
|
69
|
-
dataSource.init({
|
|
70
|
-
paginationConfig: {
|
|
71
|
-
defaultPageSize: pageSize,
|
|
72
|
-
strategy: this.entriesService.paginationStrategy,
|
|
73
|
-
},
|
|
74
|
-
defaultSort: this.entriesService.sort,
|
|
75
|
-
});
|
|
76
|
-
if (this.entriesService.primaryInstance) {
|
|
77
|
-
// Automatic query-params handling is only supported by node-data-source-remote.
|
|
78
|
-
dataSource.registerQueryParameters(this.route);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
async initPaginator(paginator) {
|
|
82
|
-
paginator._intl.itemsPerPageLabel = await this.translate
|
|
83
|
-
.get('PAGINATOR.itemsPerPageLabel')
|
|
84
|
-
.toPromise();
|
|
85
|
-
paginator._intl.nextPageLabel = await this.translate
|
|
86
|
-
.get('PAGINATOR.nextPageLabel')
|
|
87
|
-
.toPromise();
|
|
88
|
-
paginator._intl.previousPageLabel = await this.translate
|
|
89
|
-
.get('PAGINATOR.previousPageLabel')
|
|
90
|
-
.toPromise();
|
|
91
|
-
paginator._intl.getRangeLabel = (page, pageSize, length) => this.translate.instant('PAGINATOR.getRangeLabel', {
|
|
92
|
-
page: page + 1,
|
|
93
|
-
pageSize,
|
|
94
|
-
length,
|
|
95
|
-
pageCount: Math.ceil(length / pageSize),
|
|
96
|
-
});
|
|
97
|
-
// Connect data source.
|
|
98
|
-
this.entriesService.dataSource$.pipe(takeUntil(this.destroyed)).subscribe((dataSource) => {
|
|
99
|
-
if (dataSource instanceof NodeDataSourceRemote) {
|
|
100
|
-
dataSource.paginator = paginator;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
paginator.length = dataSource?.getTotal();
|
|
104
|
-
dataSource
|
|
105
|
-
?.connectPagination()
|
|
106
|
-
.pipe(takeUntil(this.destroyed))
|
|
107
|
-
.subscribe(() => {
|
|
108
|
-
paginator.length = dataSource.getTotal();
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
openPage(page) {
|
|
114
|
-
this.entriesService.fetchData.emit({
|
|
115
|
-
offset: page.pageIndex * page.pageSize,
|
|
116
|
-
amount: page.pageSize,
|
|
117
|
-
reset: true,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodeEntriesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NodeEntriesGlobalService }, { token: i2.NodeEntriesService }, { token: i3.NodeEntriesTemplatesService }, { token: i4.KeyboardShortcutsService, optional: true }, { token: i5.ActivatedRoute }, { token: i6.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: NodeEntriesComponent, selector: "es-node-entries", viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<div class=\"top-matter\">\n <div class=\"title\">\n <ng-container *ngTemplateOutlet=\"templatesService.title\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"templatesService.entriesTopMatter\"></ng-container>\n</div>\n<ng-container *ngIf=\"entriesService.dataSource\">\n <ng-container *ngIf=\"entriesService.displayType === NodeEntriesDisplayType.Table\">\n <es-node-entries-table></es-node-entries-table>\n </ng-container>\n <ng-container\n *ngIf=\"\n entriesService.displayType === NodeEntriesDisplayType.SmallGrid ||\n entriesService.displayType === NodeEntriesDisplayType.Grid\n \"\n >\n <es-node-entries-card-grid [displayType]=\"entriesService.displayType\">\n </es-node-entries-card-grid>\n </ng-container>\n <ng-container *ngIf=\"entriesService.dataSource.isEmpty() && !entriesService.dataSource.isLoading\">\n <ng-container *ngTemplateOutlet=\"templatesService.empty\"></ng-container>\n </ng-container>\n</ng-container>\n<mat-paginator\n #paginator\n [pageSizeOptions]=\"entriesGlobalService.getPaginatorSizeOptions(entriesService.scope)\"\n *ngIf=\"entriesService.paginationStrategy === 'paginator'\"\n [class.display-none]=\"\n (entriesService.dataSource.isLoading && entriesService.dataSource.isLoading !== 'page') ||\n entriesService.dataSource.isEmpty()\n \"\n (page)=\"openPage($event)\"\n></mat-paginator>\n", styles: [".top-matter{display:flex;align-items:center;flex-wrap:wrap;gap:12px 10px;position:relative;z-index:1}.top-matter .title{display:flex;flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.NodeEntriesCardGridComponent, selector: "es-node-entries-card-grid", inputs: ["displayType"] }, { kind: "component", type: i10.NodeEntriesTableComponent, selector: "es-node-entries-table" }] }); }
|
|
122
|
-
}
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodeEntriesComponent, decorators: [{
|
|
124
|
-
type: Component,
|
|
125
|
-
args: [{ selector: 'es-node-entries', template: "<div class=\"top-matter\">\n <div class=\"title\">\n <ng-container *ngTemplateOutlet=\"templatesService.title\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"templatesService.entriesTopMatter\"></ng-container>\n</div>\n<ng-container *ngIf=\"entriesService.dataSource\">\n <ng-container *ngIf=\"entriesService.displayType === NodeEntriesDisplayType.Table\">\n <es-node-entries-table></es-node-entries-table>\n </ng-container>\n <ng-container\n *ngIf=\"\n entriesService.displayType === NodeEntriesDisplayType.SmallGrid ||\n entriesService.displayType === NodeEntriesDisplayType.Grid\n \"\n >\n <es-node-entries-card-grid [displayType]=\"entriesService.displayType\">\n </es-node-entries-card-grid>\n </ng-container>\n <ng-container *ngIf=\"entriesService.dataSource.isEmpty() && !entriesService.dataSource.isLoading\">\n <ng-container *ngTemplateOutlet=\"templatesService.empty\"></ng-container>\n </ng-container>\n</ng-container>\n<mat-paginator\n #paginator\n [pageSizeOptions]=\"entriesGlobalService.getPaginatorSizeOptions(entriesService.scope)\"\n *ngIf=\"entriesService.paginationStrategy === 'paginator'\"\n [class.display-none]=\"\n (entriesService.dataSource.isLoading && entriesService.dataSource.isLoading !== 'page') ||\n entriesService.dataSource.isEmpty()\n \"\n (page)=\"openPage($event)\"\n></mat-paginator>\n", styles: [".top-matter{display:flex;align-items:center;flex-wrap:wrap;gap:12px 10px;position:relative;z-index:1}.top-matter .title{display:flex;flex-grow:1}\n"] }]
|
|
126
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.NodeEntriesGlobalService }, { type: i2.NodeEntriesService }, { type: i3.NodeEntriesTemplatesService }, { type: i4.KeyboardShortcutsService, decorators: [{
|
|
127
|
-
type: Optional
|
|
128
|
-
}] }, { type: i5.ActivatedRoute }, { type: i6.TranslateService }], propDecorators: { paginator: [{
|
|
129
|
-
type: ViewChild,
|
|
130
|
-
args: [MatPaginator]
|
|
131
|
-
}] } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1lbnRyaWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvbm9kZS1lbnRyaWVzL25vZGUtZW50cmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL25vZGUtZW50cmllcy9ub2RlLWVudHJpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFHVCxRQUFRLEVBQ1IsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUd0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUF1QixzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7QUFPakUsTUFBTSxPQUFPLG9CQUFvQjtJQVU3QixZQUNXLGlCQUFvQyxFQUNwQyxvQkFBOEMsRUFDOUMsY0FBcUMsRUFDckMsZ0JBQTZDLEVBQ2hDLHVCQUFpRCxFQUM3RCxLQUFxQixFQUNyQixTQUEyQjtRQU41QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBMEI7UUFDOUMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBNkI7UUFDaEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUEwQjtRQUM3RCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFr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UUFBUSxDQUFDLElBQWU7UUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNyQixLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBM0hRLG9CQUFvQjttR0FBcEIsb0JBQW9CLGtHQUtsQixZQUFZLGdEQy9CM0IsazNDQWlDQTs7NEZEUGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNJLGlCQUFpQjs7MEJBbUJ0QixRQUFRO3FHQVZZLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTm9kZUVudHJpZXNEYXRhVHlwZSwgTm9kZUVudHJpZXNEaXNwbGF5VHlwZSB9IGZyb20gJy4vZW50cmllcy1tb2RlbCc7XG5pbXBvcnQgeyBOb2RlRW50cmllc0dsb2JhbFNlcnZpY2UgfSBmcm9tICcuL25vZGUtZW50cmllcy1nbG9iYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlRW50cmllc1RlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuL25vZGUtZW50cmllcy10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlRW50cmllc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ub2RlLWVudHJpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlib2FyZFNob3J0Y3V0c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC9rZXlib2FyZC1zaG9ydGN1dHMuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlRGF0YVNvdXJjZVJlbW90ZSB9IGZyb20gJy4vbm9kZS1kYXRhLXNvdXJjZS1yZW1vdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLW5vZGUtZW50cmllcycsXG4gICAgdGVtcGxhdGVVcmw6ICdub2RlLWVudHJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydub2RlLWVudHJpZXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZUVudHJpZXNDb21wb25lbnQ8VCBleHRlbmRzIE5vZGVFbnRyaWVzRGF0YVR5cGU+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAgIHJlYWRvbmx5IE5vZGVFbnRyaWVzRGlzcGxheVR5cGUgPSBOb2RlRW50cmllc0Rpc3BsYXlUeXBlO1xuXG4gICAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlS2V5Ym9hcmRTaG9ydGN1dHMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBlbnRyaWVzR2xvYmFsU2VydmljZTogTm9kZUVudHJpZXNHbG9iYWxTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZW50cmllc1NlcnZpY2U6IE5vZGVFbnRyaWVzU2VydmljZTxUPixcbiAgICAgICAgcHVibGljIHRlbXBsYXRlc1NlcnZpY2U6IE5vZGVFbnRyaWVzVGVtcGxhdGVzU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBnbG9iYWxLZXlib2FyZFNob3J0Y3V0czogS2V5Ym9hcmRTaG9ydGN1dHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVudHJpZXNTZXJ2aWNlLnByaW1hcnlJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3Rlckdsb2JhbEtleWJvYXJkU2hvcnRjdXRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZW50cmllc1NlcnZpY2UuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIE5vZGVEYXRhU291cmNlUmVtb3RlKSB7XG4gICAgICAgICAgICAvLyBXZSBkb24ndCByZXF1aXJlIGBzb3J0YCB0byBiZSBkZWZpbmVkLCBidXQgaWYgaXQgaXMgc2V0IGJ1dCBub3QgeWV0IHJlYWR5IChgbnVsbGApLFxuICAgICAgICAgICAgLy8gd2Ugd2FpdCBmb3IgaXRzIHZhbHVlIGJlZm9yZSBpbml0aWFsaXppbmcgdGhlIGRhdGEgc291cmNlLCBzbyB0aGUgZmlyc3QgcmVxdWVzdCBpc1xuICAgICAgICAgICAgLy8gc2VudCB3aXRoIHRoZSBjb3JyZWN0IHNvcnQgY29uZmlndXJhdGlvbi4gVGhhdCBpcyB3aHkgd2UgZXhwbGljaXRseSBkbyBub3QgZHJvcFxuICAgICAgICAgICAgLy8gYHVuZGVmaW5lZGAgd2l0aCB0aGUgYGZpcnN0YCBvcGVyYXRvciBiZWxvdy5cbiAgICAgICAgICAgIHRoaXMuZW50cmllc1NlcnZpY2Uuc29ydFN1YmplY3RcbiAgICAgICAgICAgICAgICAucGlwZShmaXJzdCgoc29ydCkgPT4gc29ydCAhPT0gbnVsbCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRSZW1vdGVEYXRhU291cmNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5kYXRhU291cmNlIGFzIE5vZGVEYXRhU291cmNlUmVtb3RlPFQ+LFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmluaXRQYWdpbmF0b3IodGhpcy5wYWdpbmF0b3IpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJHbG9iYWxLZXlib2FyZFNob3J0Y3V0cygpIHtcbiAgICAgICAgdGhpcy5nbG9iYWxLZXlib2FyZFNob3J0Y3V0cy5yZWdpc3RlcihcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczogWydDdHJsL0NtZCddLFxuICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOiAnS2V5QScsXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZVdoZW46IChldmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNtYWxsR3JpZCBkb2Vzbid0IHN1cHBvcnQgc2VsZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLmRpc3BsYXlUeXBlID09PSBOb2RlRW50cmllc0Rpc3BsYXlUeXBlLlNtYWxsR3JpZCxcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuZW50cmllc1NlcnZpY2UudG9nZ2xlU2VsZWN0QWxsKCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB7IHVudGlsOiB0aGlzLmRlc3Ryb3llZCB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFJlbW90ZURhdGFTb3VyY2UoZGF0YVNvdXJjZTogTm9kZURhdGFTb3VyY2VSZW1vdGU8VD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLmVudHJpZXNHbG9iYWxTZXJ2aWNlLmdldFBhZ2luYXRvclNpemVPcHRpb25zKFxuICAgICAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5zY29wZSxcbiAgICAgICAgKVswXTtcbiAgICAgICAgZGF0YVNvdXJjZS5pbml0KHtcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWc6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0UGFnZVNpemU6IHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgIHN0cmF0ZWd5OiB0aGlzLmVudHJpZXNTZXJ2aWNlLnBhZ2luYXRpb25TdHJhdGVneSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWZhdWx0U29ydDogdGhpcy5lbnRyaWVzU2VydmljZS5zb3J0LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuZW50cmllc1NlcnZpY2UucHJpbWFyeUluc3RhbmNlKSB7XG4gICAgICAgICAgICAvLyBBdXRvbWF0aWMgcXVlcnktcGFyYW1zIGhhbmRsaW5nIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IG5vZGUtZGF0YS1zb3VyY2UtcmVtb3RlLlxuICAgICAgICAgICAgZGF0YVNvdXJjZS5yZWdpc3RlclF1ZXJ5UGFyYW1ldGVycyh0aGlzLnJvdXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdFBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikge1xuICAgICAgICBwYWdpbmF0b3IuX2ludGwuaXRlbXNQZXJQYWdlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgLmdldCgnUEFHSU5BVE9SLml0ZW1zUGVyUGFnZUxhYmVsJylcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICAgICAgcGFnaW5hdG9yLl9pbnRsLm5leHRQYWdlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgLmdldCgnUEFHSU5BVE9SLm5leHRQYWdlTGFiZWwnKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgICBwYWdpbmF0b3IuX2ludGwucHJldmlvdXNQYWdlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgLmdldCgnUEFHSU5BVE9SLnByZXZpb3VzUGFnZUxhYmVsJylcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICAgICAgcGFnaW5hdG9yLl9pbnRsLmdldFJhbmdlTGFiZWwgPSAocGFnZSwgcGFnZVNpemUsIGxlbmd0aCkgPT5cbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ1BBR0lOQVRPUi5nZXRSYW5nZUxhYmVsJywge1xuICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UgKyAxLFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgICAgICBwYWdlQ291bnQ6IE1hdGguY2VpbChsZW5ndGggLyBwYWdlU2l6ZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgLy8gQ29ubmVjdCBkYXRhIHNvdXJjZS5cbiAgICAgICAgdGhpcy5lbnRyaWVzU2VydmljZS5kYXRhU291cmNlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSgoZGF0YVNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGFTb3VyY2UgaW5zdGFuY2VvZiBOb2RlRGF0YVNvdXJjZVJlbW90ZSkge1xuICAgICAgICAgICAgICAgIChkYXRhU291cmNlIGFzIE5vZGVEYXRhU291cmNlUmVtb3RlKS5wYWdpbmF0b3IgPSBwYWdpbmF0b3I7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhZ2luYXRvci5sZW5ndGggPSBkYXRhU291cmNlPy5nZXRUb3RhbCgpO1xuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgPy5jb25uZWN0UGFnaW5hdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdG9yLmxlbmd0aCA9IGRhdGFTb3VyY2UuZ2V0VG90YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5QYWdlKHBhZ2U6IFBhZ2VFdmVudCkge1xuICAgICAgICB0aGlzLmVudHJpZXNTZXJ2aWNlLmZldGNoRGF0YS5lbWl0KHtcbiAgICAgICAgICAgIG9mZnNldDogcGFnZS5wYWdlSW5kZXggKiBwYWdlLnBhZ2VTaXplLFxuICAgICAgICAgICAgYW1vdW50OiBwYWdlLnBhZ2VTaXplLFxuICAgICAgICAgICAgcmVzZXQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0b3AtbWF0dGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZXNTZXJ2aWNlLnRpdGxlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVzU2VydmljZS5lbnRyaWVzVG9wTWF0dGVyXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJlbnRyaWVzU2VydmljZS5kYXRhU291cmNlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbnRyaWVzU2VydmljZS5kaXNwbGF5VHlwZSA9PT0gTm9kZUVudHJpZXNEaXNwbGF5VHlwZS5UYWJsZVwiPlxuICAgIDxlcy1ub2RlLWVudHJpZXMtdGFibGU+PC9lcy1ub2RlLWVudHJpZXMtdGFibGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGVudHJpZXNTZXJ2aWNlLmRpc3BsYXlUeXBlID09PSBOb2RlRW50cmllc0Rpc3BsYXlUeXBlLlNtYWxsR3JpZCB8fFxuICAgICAgZW50cmllc1NlcnZpY2UuZGlzcGxheVR5cGUgPT09IE5vZGVFbnRyaWVzRGlzcGxheVR5cGUuR3JpZFxuICAgIFwiXG4gID5cbiAgICA8ZXMtbm9kZS1lbnRyaWVzLWNhcmQtZ3JpZCBbZGlzcGxheVR5cGVdPVwiZW50cmllc1NlcnZpY2UuZGlzcGxheVR5cGVcIj5cbiAgICA8L2VzLW5vZGUtZW50cmllcy1jYXJkLWdyaWQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cmllc1NlcnZpY2UuZGF0YVNvdXJjZS5pc0VtcHR5KCkgJiYgIWVudHJpZXNTZXJ2aWNlLmRhdGFTb3VyY2UuaXNMb2FkaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlc1NlcnZpY2UuZW1wdHlcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxtYXQtcGFnaW5hdG9yXG4gICNwYWdpbmF0b3JcbiAgW3BhZ2VTaXplT3B0aW9uc109XCJlbnRyaWVzR2xvYmFsU2VydmljZS5nZXRQYWdpbmF0b3JTaXplT3B0aW9ucyhlbnRyaWVzU2VydmljZS5zY29wZSlcIlxuICAqbmdJZj1cImVudHJpZXNTZXJ2aWNlLnBhZ2luYXRpb25TdHJhdGVneSA9PT0gJ3BhZ2luYXRvcidcIlxuICBbY2xhc3MuZGlzcGxheS1ub25lXT1cIlxuICAgIChlbnRyaWVzU2VydmljZS5kYXRhU291cmNlLmlzTG9hZGluZyAmJiBlbnRyaWVzU2VydmljZS5kYXRhU291cmNlLmlzTG9hZGluZyAhPT0gJ3BhZ2UnKSB8fFxuICAgIGVudHJpZXNTZXJ2aWNlLmRhdGFTb3VyY2UuaXNFbXB0eSgpXG4gIFwiXG4gIChwYWdlKT1cIm9wZW5QYWdlKCRldmVudClcIlxuPjwvbWF0LXBhZ2luYXRvcj5cbiJdfQ==
|