ngx-edu-sharing-ui 10.0.21 → 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 +6 -8
- 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,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Created by Torsten on 13.01.2017.
|
|
3
|
-
*/
|
|
4
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
|
-
import { Directive, Input, Optional, } from '@angular/core';
|
|
6
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
|
-
import { BehaviorSubject, combineLatest, firstValueFrom } from 'rxjs';
|
|
8
|
-
import { filter } from 'rxjs/operators';
|
|
9
|
-
import { notNull } from '../util/functions';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/common/http";
|
|
12
|
-
import * as i2 from "@ngx-translate/core";
|
|
13
|
-
import * as i3 from "ngx-edu-sharing-api";
|
|
14
|
-
/**
|
|
15
|
-
* Replaces the element's content with an icon.
|
|
16
|
-
*
|
|
17
|
-
* Example: `<i esIcon="save"></i>`
|
|
18
|
-
*
|
|
19
|
-
* Optionally, a translated `aria-label` can be attached by setting `aria` to a truthy value: `<i
|
|
20
|
-
* esIcon="save" aria="true"></i>`. Otherwise, `aria-hidden` will be set.
|
|
21
|
-
*
|
|
22
|
-
* For backwards compatibility, the directive is also activated on elements that set
|
|
23
|
-
* `class="material-icons"`. This is mainly to set the `aria-hidden` attribute. Occurrences should
|
|
24
|
-
* be updated to the syntax above.
|
|
25
|
-
*/
|
|
26
|
-
export class IconDirective {
|
|
27
|
-
/**
|
|
28
|
-
* An alt text to show to screen readers.
|
|
29
|
-
*
|
|
30
|
-
* If omitted, the icon will be invisible to screen readers.
|
|
31
|
-
*
|
|
32
|
-
* @see https://material.angular.io/components/icon/overview#indicator-icons
|
|
33
|
-
*/
|
|
34
|
-
set altText(altText) {
|
|
35
|
-
this.setAltText(altText);
|
|
36
|
-
}
|
|
37
|
-
/** If true, an alt text (see above) will be set based on the icon. */
|
|
38
|
-
set aria(aria) {
|
|
39
|
-
aria = coerceBooleanProperty(aria);
|
|
40
|
-
if (aria !== this._aria) {
|
|
41
|
-
this._aria = aria;
|
|
42
|
-
if (this.isReady) {
|
|
43
|
-
this.updateAria();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
set esIcon(id) {
|
|
48
|
-
this.originalId$.next(id);
|
|
49
|
-
}
|
|
50
|
-
constructor(element, http, translate, renderer, config) {
|
|
51
|
-
this.element = element;
|
|
52
|
-
this.http = http;
|
|
53
|
-
this.translate = translate;
|
|
54
|
-
this.renderer = renderer;
|
|
55
|
-
this.config = config;
|
|
56
|
-
this.originalId$ = new BehaviorSubject(null);
|
|
57
|
-
this.isReady = false;
|
|
58
|
-
combineLatest([this.originalId$.pipe(filter(notNull)), this.config.get('icons', null)])
|
|
59
|
-
.pipe(takeUntilDestroyed())
|
|
60
|
-
.subscribe(([originalId, iconsConfig]) => this.setIcon(originalId, iconsConfig));
|
|
61
|
-
}
|
|
62
|
-
async ngOnInit() {
|
|
63
|
-
this.isReady = true;
|
|
64
|
-
this.element.nativeElement.setAttribute('aria-hidden', 'true');
|
|
65
|
-
// Material styles expect icons to have the class `mat-icon`, e.g.,
|
|
66
|
-
// https://github.com/angular/components/blob/ae0b9e1c1bae5e937d039ea53652fe1656bc4623/src/material/form-field/form-field.scss#L156
|
|
67
|
-
this.element.nativeElement.classList.add('mat-icon');
|
|
68
|
-
this.updateAria();
|
|
69
|
-
}
|
|
70
|
-
ngOnDestroy() {
|
|
71
|
-
if (this.altTextSpan) {
|
|
72
|
-
this.altTextSpan.remove();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async setIcon(id, iconsConfig) {
|
|
76
|
-
if (this._id) {
|
|
77
|
-
this.element.nativeElement.classList.remove('edu-icons', 'custom-icons', 'material-icons');
|
|
78
|
-
if (this.svg) {
|
|
79
|
-
this.renderer.removeChild(this.element.nativeElement, this.svg);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (id.startsWith('svg-')) {
|
|
83
|
-
try {
|
|
84
|
-
const iconName = id.slice(4);
|
|
85
|
-
const fileName = iconName.endsWith('.svg') ? iconName : `${iconName}.svg`;
|
|
86
|
-
const path = `assets/images/icons/${fileName}`;
|
|
87
|
-
const svgText = await firstValueFrom(this.http.get(path, { responseType: 'text' }));
|
|
88
|
-
if (!svgText)
|
|
89
|
-
return;
|
|
90
|
-
const parser = new DOMParser();
|
|
91
|
-
const doc = parser.parseFromString(svgText, 'image/svg+xml');
|
|
92
|
-
const svgElement = doc.querySelector('svg');
|
|
93
|
-
if (!svgElement) {
|
|
94
|
-
console.error('No SVG element found in the file');
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
svgElement.classList.add('svg-icons');
|
|
98
|
-
this.svg = svgElement;
|
|
99
|
-
this.renderer.appendChild(this.element.nativeElement, this.svg);
|
|
100
|
-
if (this._aria) {
|
|
101
|
-
this.updateAria();
|
|
102
|
-
}
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
console.error('Error loading SVG:', error);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
let customClass = null;
|
|
111
|
-
const mapping = iconsConfig?.filter((i) => i.original === id);
|
|
112
|
-
if (mapping?.length === 1) {
|
|
113
|
-
id = mapping[0].replace || '';
|
|
114
|
-
customClass = mapping[0].cssClass;
|
|
115
|
-
}
|
|
116
|
-
this._id = id;
|
|
117
|
-
if (this._aria) {
|
|
118
|
-
this.updateAria();
|
|
119
|
-
}
|
|
120
|
-
let cssClass;
|
|
121
|
-
if (id?.startsWith('edu-') && !customClass) {
|
|
122
|
-
cssClass = 'edu-icons';
|
|
123
|
-
id = id.substring(4);
|
|
124
|
-
}
|
|
125
|
-
else if (id?.startsWith('custom-') || customClass) {
|
|
126
|
-
cssClass = 'custom-icons';
|
|
127
|
-
id = id.substring(7);
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
cssClass = 'material-icons';
|
|
131
|
-
}
|
|
132
|
-
this.element.nativeElement.classList.add(cssClass);
|
|
133
|
-
if (customClass) {
|
|
134
|
-
this.element.nativeElement.classList.add(customClass);
|
|
135
|
-
}
|
|
136
|
-
this.element.nativeElement.innerText = id;
|
|
137
|
-
}
|
|
138
|
-
updateAria() {
|
|
139
|
-
if (this._aria !== undefined) {
|
|
140
|
-
if (this._aria && this._id) {
|
|
141
|
-
this.translate.get('ICON_LABELS.' + this._id).subscribe((lang) => {
|
|
142
|
-
this.setAltText(lang);
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
this.setAltText(null);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
setAltText(altText) {
|
|
151
|
-
if (this.svg) {
|
|
152
|
-
// for SVG elements, add aria-label instead
|
|
153
|
-
this.svg.setAttribute('aria-label', altText);
|
|
154
|
-
}
|
|
155
|
-
if (altText && !this.altTextSpan) {
|
|
156
|
-
this.insertAltTextSpan();
|
|
157
|
-
}
|
|
158
|
-
if (this.altTextSpan) {
|
|
159
|
-
this.altTextSpan.innerText = altText;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
insertAltTextSpan() {
|
|
163
|
-
this.altTextSpan = document.createElement('span');
|
|
164
|
-
this.altTextSpan.classList.add('cdk-visually-hidden');
|
|
165
|
-
this.element.nativeElement.insertAdjacentElement('afterend', this.altTextSpan);
|
|
166
|
-
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IconDirective, deps: [{ token: i0.ElementRef }, { token: i1.HttpClient }, { token: i2.TranslateService }, { token: i0.Renderer2 }, { token: i3.ConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
168
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: { altText: "altText", aria: "aria", esIcon: "esIcon" }, ngImport: i0 }); }
|
|
169
|
-
}
|
|
170
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IconDirective, decorators: [{
|
|
171
|
-
type: Directive,
|
|
172
|
-
args: [{
|
|
173
|
-
selector: 'i[esIcon], i.material-icons',
|
|
174
|
-
}]
|
|
175
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.HttpClient }, { type: i2.TranslateService }, { type: i0.Renderer2 }, { type: i3.ConfigService, decorators: [{
|
|
176
|
-
type: Optional
|
|
177
|
-
}] }], propDecorators: { altText: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], aria: [{
|
|
180
|
-
type: Input
|
|
181
|
-
}], esIcon: [{
|
|
182
|
-
type: Input
|
|
183
|
-
}] } });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RCxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBSTVDOzs7Ozs7Ozs7OztHQVdHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFRdEI7Ozs7OztPQU1HO0lBQ0gsSUFBYSxPQUFPLENBQUMsT0FBZTtRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsSUFBYSxJQUFJLENBQUMsSUFBYTtRQUMzQixJQUFJLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxFQUFV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Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlZCBieSBUb3JzdGVuIG9uIDEzLjAxLjIwMTcuXG4gKi9cblxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG5vdE51bGwgfSBmcm9tICcuLi91dGlsL2Z1bmN0aW9ucyc7XG5cbnR5cGUgSWNvbnNDb25maWcgPSBBcnJheTx7IG9yaWdpbmFsOiBzdHJpbmc7IHJlcGxhY2U/OiBzdHJpbmc7IGNzc0NsYXNzPzogc3RyaW5nIH0+O1xuXG4vKipcbiAqIFJlcGxhY2VzIHRoZSBlbGVtZW50J3MgY29udGVudCB3aXRoIGFuIGljb24uXG4gKlxuICogRXhhbXBsZTogYDxpIGVzSWNvbj1cInNhdmVcIj48L2k+YFxuICpcbiAqIE9wdGlvbmFsbHksIGEgdHJhbnNsYXRlZCBgYXJpYS1sYWJlbGAgY2FuIGJlIGF0dGFjaGVkIGJ5IHNldHRpbmcgYGFyaWFgIHRvIGEgdHJ1dGh5IHZhbHVlOiBgPGlcbiAqIGVzSWNvbj1cInNhdmVcIiBhcmlhPVwidHJ1ZVwiPjwvaT5gLiBPdGhlcndpc2UsIGBhcmlhLWhpZGRlbmAgd2lsbCBiZSBzZXQuXG4gKlxuICogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgZGlyZWN0aXZlIGlzIGFsc28gYWN0aXZhdGVkIG9uIGVsZW1lbnRzIHRoYXQgc2V0XG4gKiBgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiYC4gVGhpcyBpcyBtYWlubHkgdG8gc2V0IHRoZSBgYXJpYS1oaWRkZW5gIGF0dHJpYnV0ZS4gT2NjdXJyZW5jZXMgc2hvdWxkXG4gKiBiZSB1cGRhdGVkIHRvIHRoZSBzeW50YXggYWJvdmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaVtlc0ljb25dLCBpLm1hdGVyaWFsLWljb25zJyxcbn0pXG5leHBvcnQgY2xhc3MgSWNvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIG9yaWdpbmFsSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYXJpYTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGFsdFRleHRTcGFuOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGlzUmVhZHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIHN2ZzogU1ZHU1ZHRWxlbWVudDtcblxuICAgIC8qKlxuICAgICAqIEFuIGFsdCB0ZXh0IHRvIHNob3cgdG8gc2NyZWVuIHJlYWRlcnMuXG4gICAgICpcbiAgICAgKiBJZiBvbWl0dGVkLCB0aGUgaWNvbiB3aWxsIGJlIGludmlzaWJsZSB0byBzY3JlZW4gcmVhZGVycy5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2NvbXBvbmVudHMvaWNvbi9vdmVydmlldyNpbmRpY2F0b3ItaWNvbnNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgYWx0VGV4dChhbHRUZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRBbHRUZXh0KGFsdFRleHQpO1xuICAgIH1cblxuICAgIC8qKiBJZiB0cnVlLCBhbiBhbHQgdGV4dCAoc2VlIGFib3ZlKSB3aWxsIGJlIHNldCBiYXNlZCBvbiB0aGUgaWNvbi4gKi9cbiAgICBASW5wdXQoKSBzZXQgYXJpYShhcmlhOiBib29sZWFuKSB7XG4gICAgICAgIGFyaWEgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoYXJpYSk7XG4gICAgICAgIGlmIChhcmlhICE9PSB0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLl9hcmlhID0gYXJpYTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBlc0ljb24oaWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9yaWdpbmFsSWQkLm5leHQoaWQpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm9yaWdpbmFsSWQkLnBpcGUoZmlsdGVyKG5vdE51bGwpKSwgdGhpcy5jb25maWcuZ2V0KCdpY29ucycsIG51bGwpXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW29yaWdpbmFsSWQsIGljb25zQ29uZmlnXSkgPT4gdGhpcy5zZXRJY29uKG9yaWdpbmFsSWQsIGljb25zQ29uZmlnKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaXNSZWFkeSA9IHRydWU7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAvLyBNYXRlcmlhbCBzdHlsZXMgZXhwZWN0IGljb25zIHRvIGhhdmUgdGhlIGNsYXNzIGBtYXQtaWNvbmAsIGUuZy4sXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9hZTBiOWUxYzFiYWU1ZTkzN2QwMzllYTUzNjUyZmUxNjU2YmM0NjIzL3NyYy9tYXRlcmlhbC9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuc2NzcyNMMTU2XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21hdC1pY29uJyk7XG4gICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbHRUZXh0U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5hbHRUZXh0U3Bhbi5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0SWNvbihpZDogc3RyaW5nLCBpY29uc0NvbmZpZzogSWNvbnNDb25maWcpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lkKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgICAgICdlZHUtaWNvbnMnLFxuICAgICAgICAgICAgICAgICdjdXN0b20taWNvbnMnLFxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1pY29ucycsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3ZnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5zdmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpZC5zdGFydHNXaXRoKCdzdmctJykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWNvbk5hbWUgPSBpZC5zbGljZSg0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGljb25OYW1lLmVuZHNXaXRoKCcuc3ZnJykgPyBpY29uTmFtZSA6IGAke2ljb25OYW1lfS5zdmdgO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBgYXNzZXRzL2ltYWdlcy9pY29ucy8ke2ZpbGVOYW1lfWA7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdmdUZXh0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldChwYXRoLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pKTtcblxuICAgICAgICAgICAgICAgIGlmICghc3ZnVGV4dCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3ZnVGV4dCwgJ2ltYWdlL3N2Zyt4bWwnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdmdFbGVtZW50ID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzdmdFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIFNWRyBlbGVtZW50IGZvdW5kIGluIHRoZSBmaWxlJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdmdFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3N2Zy1pY29ucycpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3ZnID0gc3ZnRWxlbWVudDtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3ZnKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBTVkc6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgY3VzdG9tQ2xhc3M6IHN0cmluZyA9IG51bGw7XG4gICAgICAgIGNvbnN0IG1hcHBpbmcgPSBpY29uc0NvbmZpZz8uZmlsdGVyKChpKSA9PiBpLm9yaWdpbmFsID09PSBpZCk7XG4gICAgICAgIGlmIChtYXBwaW5nPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlkID0gbWFwcGluZ1swXS5yZXBsYWNlIHx8ICcnO1xuICAgICAgICAgICAgY3VzdG9tQ2xhc3MgPSBtYXBwaW5nWzBdLmNzc0NsYXNzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgICAgIGlmICh0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3NzQ2xhc3M6IHN0cmluZztcbiAgICAgICAgaWYgKGlkPy5zdGFydHNXaXRoKCdlZHUtJykgJiYgIWN1c3RvbUNsYXNzKSB7XG4gICAgICAgICAgICBjc3NDbGFzcyA9ICdlZHUtaWNvbnMnO1xuICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHJpbmcoNCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQ/LnN0YXJ0c1dpdGgoJ2N1c3RvbS0nKSB8fCBjdXN0b21DbGFzcykge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnY3VzdG9tLWljb25zJztcbiAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyaW5nKDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnbWF0ZXJpYWwtaWNvbnMnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3NzQ2xhc3MpO1xuICAgICAgICBpZiAoY3VzdG9tQ2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3VzdG9tQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9IGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQXJpYSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FyaWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FyaWEgJiYgdGhpcy5faWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0lDT05fTEFCRUxTLicgKyB0aGlzLl9pZCkuc3Vic2NyaWJlKChsYW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QWx0VGV4dChsYW5nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBbHRUZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBbHRUZXh0KGFsdFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdmcpIHtcbiAgICAgICAgICAgIC8vIGZvciBTVkcgZWxlbWVudHMsIGFkZCBhcmlhLWxhYmVsIGluc3RlYWRcbiAgICAgICAgICAgIHRoaXMuc3ZnLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGFsdFRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbHRUZXh0ICYmICF0aGlzLmFsdFRleHRTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEFsdFRleHRTcGFuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYWx0VGV4dFNwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWx0VGV4dFNwYW4uaW5uZXJUZXh0ID0gYWx0VGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5zZXJ0QWx0VGV4dFNwYW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWx0VGV4dFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRoaXMuYWx0VGV4dFNwYW4uY2xhc3NMaXN0LmFkZCgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgdGhpcy5hbHRUZXh0U3Bhbik7XG4gICAgfVxufVxuIl19
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../services/app-container.service";
|
|
5
|
-
export class InfiniteScrollDirective {
|
|
6
|
-
constructor(appContainer, element, zone) {
|
|
7
|
-
this.appContainer = appContainer;
|
|
8
|
-
this.element = element;
|
|
9
|
-
this.zone = zone;
|
|
10
|
-
this.scrolled = new EventEmitter();
|
|
11
|
-
this.infiniteScrollDistance = 1.5;
|
|
12
|
-
this.infiniteScrollThrottle = 1000;
|
|
13
|
-
this.scrollWindow = true;
|
|
14
|
-
this.lastEvent = 0;
|
|
15
|
-
this.lastScroll = 0;
|
|
16
|
-
this.destroyed$ = new Subject();
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
this.zone.runOutsideAngular(() => {
|
|
20
|
-
const handleScroll = () => this.handleOnScroll();
|
|
21
|
-
const eventTarget = this.scrollWindow
|
|
22
|
-
? this.appContainer.getScrollContainer({ fallback: window })
|
|
23
|
-
: this.element.nativeElement;
|
|
24
|
-
eventTarget.addEventListener('scroll', handleScroll);
|
|
25
|
-
this.destroyed$.subscribe(() => eventTarget.removeEventListener('scroll', handleScroll));
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
ngOnDestroy() {
|
|
29
|
-
this.destroyed$.next();
|
|
30
|
-
this.destroyed$.complete();
|
|
31
|
-
}
|
|
32
|
-
handleOnScroll() {
|
|
33
|
-
if (!this.element.nativeElement)
|
|
34
|
-
return;
|
|
35
|
-
if (this.scrollWindow) {
|
|
36
|
-
const scrollContainer = this.appContainer.getScrollContainer();
|
|
37
|
-
const height = scrollContainer.scrollHeight;
|
|
38
|
-
const scroll = scrollContainer.scrollTop;
|
|
39
|
-
if (scroll > this.lastScroll &&
|
|
40
|
-
height - scroll < scrollContainer.clientHeight * this.infiniteScrollDistance) {
|
|
41
|
-
const time = new Date().getTime();
|
|
42
|
-
if (time - this.lastEvent < this.infiniteScrollThrottle)
|
|
43
|
-
return;
|
|
44
|
-
this.lastEvent = time;
|
|
45
|
-
this.emitScrolled();
|
|
46
|
-
}
|
|
47
|
-
this.lastScroll = scroll;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
const element = this.element.nativeElement;
|
|
51
|
-
const height = element.scrollHeight;
|
|
52
|
-
const scroll = element.scrollTop;
|
|
53
|
-
if (scroll > this.lastScroll &&
|
|
54
|
-
height - scroll <
|
|
55
|
-
element.getBoundingClientRect().height * this.infiniteScrollDistance) {
|
|
56
|
-
const time = new Date().getTime();
|
|
57
|
-
if (time - this.lastEvent < this.infiniteScrollThrottle)
|
|
58
|
-
return;
|
|
59
|
-
this.lastEvent = time;
|
|
60
|
-
this.emitScrolled();
|
|
61
|
-
}
|
|
62
|
-
this.lastScroll = scroll;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
emitScrolled() {
|
|
66
|
-
this.zone.run(() => this.scrolled.emit());
|
|
67
|
-
}
|
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: InfiniteScrollDirective, deps: [{ token: i1.AppContainerService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
69
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: InfiniteScrollDirective, selector: "[esInfiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: { infiniteScrollDistance: "infiniteScrollDistance", infiniteScrollThrottle: "infiniteScrollThrottle", scrollWindow: "scrollWindow" }, outputs: { scrolled: "scrolled" }, ngImport: i0 }); }
|
|
70
|
-
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: InfiniteScrollDirective, decorators: [{
|
|
72
|
-
type: Directive,
|
|
73
|
-
args: [{
|
|
74
|
-
selector: '[esInfiniteScroll], [infinite-scroll], [data-infinite-scroll]',
|
|
75
|
-
}]
|
|
76
|
-
}], ctorParameters: () => [{ type: i1.AppContainerService }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { scrolled: [{
|
|
77
|
-
type: Output
|
|
78
|
-
}], infiniteScrollDistance: [{
|
|
79
|
-
type: Input
|
|
80
|
-
}], infiniteScrollThrottle: [{
|
|
81
|
-
type: Input
|
|
82
|
-
}], scrollWindow: [{
|
|
83
|
-
type: Input
|
|
84
|
-
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvZGlyZWN0aXZlcy9pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTS9CLE1BQU0sT0FBTyx1QkFBdUI7SUFVaEMsWUFDWSxZQUFpQyxFQUNqQyxPQUFtQixFQUNuQixJQUFZO1FBRlosaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVpkLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXJDLDJCQUFzQixHQUFXLEdBQUcsQ0FBQztRQUNyQywyQkFBc0IsR0FBVyxJQUFJLENBQUM7UUFDdEMsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDOUIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU10QyxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzdCLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWTtnQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQzVE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Y3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwcENvbnRhaW5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAtY29udGFpbmVyLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tlc0luZmluaXRlU2Nyb2xsXSwgW2luZmluaXRlLXNjcm9sbF0sIFtkYXRhLWluZmluaXRlLXNjcm9sbF0nLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBAT3V0cHV0KCkgc2Nyb2xsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBASW5wdXQoKSBpbmZpbml0ZVNjcm9sbERpc3RhbmNlOiBudW1iZXIgPSAxLjU7XG4gICAgQElucHV0KCkgaW5maW5pdGVTY3JvbGxUaHJvdHRsZTogbnVtYmVyID0gMTAwMDtcbiAgICBASW5wdXQoKSBzY3JvbGxXaW5kb3c6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgbGFzdEV2ZW50ID0gMDtcbiAgICBwcml2YXRlIGxhc3RTY3JvbGwgPSAwO1xuICAgIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBDb250YWluZXI6IEFwcENvbnRhaW5lclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB0aGlzLmhhbmRsZU9uU2Nyb2xsKCk7XG4gICAgICAgICAgICBjb25zdCBldmVudFRhcmdldCA9IHRoaXMuc2Nyb2xsV2luZG93XG4gICAgICAgICAgICAgICAgPyB0aGlzLmFwcENvbnRhaW5lci5nZXRTY3JvbGxDb250YWluZXIoeyBmYWxsYmFjazogd2luZG93IH0pXG4gICAgICAgICAgICAgICAgOiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3llZCQuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICAgICAgZXZlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVPblNjcm9sbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxXaW5kb3cpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IHRoaXMuYXBwQ29udGFpbmVyLmdldFNjcm9sbENvbnRhaW5lcigpO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gc2Nyb2xsQ29udGFpbmVyLnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbCA9IHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2Nyb2xsID4gdGhpcy5sYXN0U2Nyb2xsICYmXG4gICAgICAgICAgICAgICAgaGVpZ2h0IC0gc2Nyb2xsIDwgc2Nyb2xsQ29udGFpbmVyLmNsaWVudEhlaWdodCAqIHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aW1lIC0gdGhpcy5sYXN0RXZlbnQgPCB0aGlzLmluZmluaXRlU2Nyb2xsVGhyb3R0bGUpIHJldHVybjtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RFdmVudCA9IHRpbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0U2Nyb2xsZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGFzdFNjcm9sbCA9IHNjcm9sbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsID0gZWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2Nyb2xsID4gdGhpcy5sYXN0U2Nyb2xsICYmXG4gICAgICAgICAgICAgICAgaGVpZ2h0IC0gc2Nyb2xsIDxcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgKiB0aGlzLmluZmluaXRlU2Nyb2xsRGlzdGFuY2VcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICBpZiAodGltZSAtIHRoaXMubGFzdEV2ZW50IDwgdGhpcy5pbmZpbml0ZVNjcm9sbFRocm90dGxlKSByZXR1cm47XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0RXZlbnQgPSB0aW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdFNjcm9sbGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxhc3RTY3JvbGwgPSBzY3JvbGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRTY3JvbGxlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLnNjcm9sbGVkLmVtaXQoKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { Helper } from '../util/helper';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../services/ui.service";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@angular/material/menu";
|
|
8
|
-
import * as i4 from "@angular/material/tooltip";
|
|
9
|
-
import * as i5 from "../directives/icon.directive";
|
|
10
|
-
import * as i6 from "@ngx-translate/core";
|
|
11
|
-
import * as i7 from "../pipes/option-tooltip.pipe";
|
|
12
|
-
import * as i8 from "../pipes/replace-chars.pipe";
|
|
13
|
-
/**
|
|
14
|
-
* The dropdown is one base component of the action bar (showing more actions),
|
|
15
|
-
* but can also be used standalone.
|
|
16
|
-
*/
|
|
17
|
-
export class DropdownComponent {
|
|
18
|
-
constructor(ui) {
|
|
19
|
-
this.ui = ui;
|
|
20
|
-
this.position = 'left';
|
|
21
|
-
this.options$ = new BehaviorSubject([]);
|
|
22
|
-
/**
|
|
23
|
-
* The objects that should be returned via the option's callback.
|
|
24
|
-
*
|
|
25
|
-
* Can be null
|
|
26
|
-
*/
|
|
27
|
-
this.callbackObjects = undefined;
|
|
28
|
-
/**
|
|
29
|
-
* Should disabled ("greyed out") options be shown or hidden?
|
|
30
|
-
*/
|
|
31
|
-
this.showDisabled = true;
|
|
32
|
-
}
|
|
33
|
-
ngOnChanges(changes) {
|
|
34
|
-
if (changes == null || changes?.options || changes?.callbackObjects) {
|
|
35
|
-
this.options$.next(this.ui.filterValidOptions(Helper.deepCopyArray(this.options)));
|
|
36
|
-
if (this.callbackObjects !== undefined) {
|
|
37
|
-
void this.ui.updateOptionEnabledState(this.options$, this.callbackObjects);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
click(option) {
|
|
42
|
-
if (!option.isEnabled) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
setTimeout(() => option.callback(null, this.callbackObjects));
|
|
46
|
-
}
|
|
47
|
-
isNewGroup(i) {
|
|
48
|
-
if (i > 0) {
|
|
49
|
-
return this.options$.value[i].group !== this.options$.value[i - 1].group;
|
|
50
|
-
}
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
/** Whether there are any enabled options so we can open the menu. */
|
|
54
|
-
canShowDropdown() {
|
|
55
|
-
// We can only open the dropdown menu, when there is at least one enabled option. Even when
|
|
56
|
-
// there are options with `showDisabled: true`, showing a menu with no selectable option
|
|
57
|
-
// causes a11y issues.
|
|
58
|
-
return this.options$.value?.some((o) => o.isEnabled);
|
|
59
|
-
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DropdownComponent, deps: [{ token: i1.UIService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: DropdownComponent, selector: "es-dropdown", inputs: { position: "position", options: "options", callbackObjects: "callbackObjects", showDisabled: "showDisabled", menuClass: "menuClass" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of options$ | async; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: 600px){::ng-deep .mat-dropdown-menu.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu.mat-mdc-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0;max-height:calc(100vh - 150px);overflow-y:auto}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.OptionTooltipPipe, name: "optionTooltip" }, { kind: "pipe", type: i8.ReplaceCharsPipe, name: "replaceChars" }] }); }
|
|
62
|
-
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
64
|
-
type: Component,
|
|
65
|
-
args: [{ selector: 'es-dropdown', template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of options$ | async; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: 600px){::ng-deep .mat-dropdown-menu.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu.mat-mdc-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0;max-height:calc(100vh - 150px);overflow-y:auto}}\n"] }]
|
|
66
|
-
}], ctorParameters: () => [{ type: i1.UIService }], propDecorators: { menu: [{
|
|
67
|
-
type: ViewChild,
|
|
68
|
-
args: ['dropdown', { static: true }]
|
|
69
|
-
}], menuTrigger: [{
|
|
70
|
-
type: ViewChild,
|
|
71
|
-
args: ['menuTrigger']
|
|
72
|
-
}], position: [{
|
|
73
|
-
type: Input
|
|
74
|
-
}], options: [{
|
|
75
|
-
type: Input
|
|
76
|
-
}], callbackObjects: [{
|
|
77
|
-
type: Input
|
|
78
|
-
}], showDisabled: [{
|
|
79
|
-
type: Input
|
|
80
|
-
}], menuClass: [{
|
|
81
|
-
type: Input
|
|
82
|
-
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFHdkM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQTRCMUIsWUFBb0IsRUFBYTtRQUFiLE9BQUUsR0FBRixFQUFFLENBQVc7UUF4QnhCLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBRTdDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUVqRDs7OztXQUlHO1FBQ00sb0JBQWUsR0FBVyxTQUFTLENBQUM7UUFFN0M7O1dBRUc7UUFDTSxpQkFBWSxHQUFHLElBQUksQ0FBQztJQVVPLENBQUM7SUFFckMsV0FBVyxDQUFDLE9BQXVCO1FBQy9CLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3JDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvRSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBa0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1gsQ0FBQztRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQVM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzdFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLGVBQWU7UUFDWCwyRkFBMkY7UUFDM0Ysd0ZBQXdGO1FBQ3hGLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7K0dBM0RRLGlCQUFpQjttR0FBakIsaUJBQWlCLHFhQ2pCOUIsaTRDQWlDQTs7NEZEaEJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxhQUFhOzhFQUtrQixJQUFJO3NCQUE1QyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2IsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUVmLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvb3B0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vdXRpbC9oZWxwZXInO1xuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdWkuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcblxuLyoqXG4gKiBUaGUgZHJvcGRvd24gaXMgb25lIGJhc2UgY29tcG9uZW50IG9mIHRoZSBhY3Rpb24gYmFyIChzaG93aW5nIG1vcmUgYWN0aW9ucyksXG4gKiBidXQgY2FuIGFsc28gYmUgdXNlZCBzdGFuZGFsb25lLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJywgeyBzdGF0aWM6IHRydWUgfSkgbWVudTogTWF0TWVudTtcbiAgICBAVmlld0NoaWxkKCdtZW51VHJpZ2dlcicpIG1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcblxuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuICAgIEBJbnB1dCgpIG9wdGlvbnM6IE9wdGlvbkl0ZW1bXTtcbiAgICBvcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3B0aW9uSXRlbVtdPihbXSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb2JqZWN0cyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB2aWEgdGhlIG9wdGlvbidzIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogQ2FuIGJlIG51bGxcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjYWxsYmFja09iamVjdHM6IE5vZGVbXSA9IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFNob3VsZCBkaXNhYmxlZCAoXCJncmV5ZWQgb3V0XCIpIG9wdGlvbnMgYmUgc2hvd24gb3IgaGlkZGVuP1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dEaXNhYmxlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhZGRpdGlvbmFsIGNsYXNzIHRvIGFkZCB0byB0aGUgYG1hdC1tZW51YCBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgbmVlZGVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVudSBzdHlsaW5nIHNpbmNlIHRoZSBtZW51IGNvbnRlbnRzIGFyZVxuICAgICAqIHRha2VuIG91dCBvZiB0aGUgaG9zdCBjb250YWluZXIgYnkgYW5ndWxhci5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZW51Q2xhc3M6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdWk6IFVJU2VydmljZSkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM/OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzID09IG51bGwgfHwgY2hhbmdlcz8ub3B0aW9ucyB8fCBjaGFuZ2VzPy5jYWxsYmFja09iamVjdHMpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyQubmV4dCh0aGlzLnVpLmZpbHRlclZhbGlkT3B0aW9ucyhIZWxwZXIuZGVlcENvcHlBcnJheSh0aGlzLm9wdGlvbnMpKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jYWxsYmFja09iamVjdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy51aS51cGRhdGVPcHRpb25FbmFibGVkU3RhdGUodGhpcy5vcHRpb25zJCwgdGhpcy5jYWxsYmFja09iamVjdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xpY2sob3B0aW9uOiBPcHRpb25JdGVtKSB7XG4gICAgICAgIGlmICghb3B0aW9uLmlzRW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gb3B0aW9uLmNhbGxiYWNrKG51bGwsIHRoaXMuY2FsbGJhY2tPYmplY3RzKSk7XG4gICAgfVxuXG4gICAgaXNOZXdHcm91cChpOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zJC52YWx1ZVtpXS5ncm91cCAhPT0gdGhpcy5vcHRpb25zJC52YWx1ZVtpIC0gMV0uZ3JvdXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZXJlIGFyZSBhbnkgZW5hYmxlZCBvcHRpb25zIHNvIHdlIGNhbiBvcGVuIHRoZSBtZW51LiAqL1xuICAgIGNhblNob3dEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgLy8gV2UgY2FuIG9ubHkgb3BlbiB0aGUgZHJvcGRvd24gbWVudSwgd2hlbiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZW5hYmxlZCBvcHRpb24uIEV2ZW4gd2hlblxuICAgICAgICAvLyB0aGVyZSBhcmUgb3B0aW9ucyB3aXRoIGBzaG93RGlzYWJsZWQ6IHRydWVgLCBzaG93aW5nIGEgbWVudSB3aXRoIG5vIHNlbGVjdGFibGUgb3B0aW9uXG4gICAgICAgIC8vIGNhdXNlcyBhMTF5IGlzc3Vlcy5cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucyQudmFsdWU/LnNvbWUoKG8pID0+IG8uaXNFbmFibGVkKTtcbiAgICB9XG59XG4iLCI8bWF0LW1lbnVcbiAgI2Ryb3Bkb3duPVwibWF0TWVudVwiXG4gIGNsYXNzPVwibWF0LWRyb3Bkb3duLW1lbnVcIlxuICBbY2xhc3NdPVwibWVudUNsYXNzXCJcbiAgYmFja2Ryb3BDbGFzcz1cIm1hdC1kcm9wZG93bi1tZW51XCJcbiAgW3hQb3NpdGlvbl09XCJwb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/ICdhZnRlcicgOiAnYmVmb3JlJ1wiXG4+XG4gIDwhLS0gTWF0TWVudSBoYXMgcm9sZT1cIm1lbnVcIiwgc28gdGhlIG9ubHkgbWVhbmluZ2Z1bCByb2xlIG9mIGRlc2NlbmRhbnRzIGlzIFwibWVudWl0ZW1cIiAtLT5cbiAgPHVsIHJvbGU9XCJub25lXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMkIHwgYXN5bmM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxsaSAqbmdJZj1cIm9wdGlvbi5pc0VuYWJsZWQgfHwgc2hvd0Rpc2FibGVkXCIgcm9sZT1cIm5vbmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICBjbGFzcz1cIm1hdC1tZW51LWl0ZW0gY29sbGVjdGlvbi1pdGVtLXt7XG4gICAgICAgICAgICBvcHRpb24ubmFtZSB8IHJlcGxhY2VDaGFycyA6IHsgc2VhcmNoOiAnLicsIHJlcGxhY2U6ICctJyB9XG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBvcHRpb24gfCBvcHRpb25Ub29sdGlwIHwgYXN5bmMgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICBtYXRUb29sdGlwVG91Y2hHZXN0dXJlcz1cIm9mZlwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24uYXJpYUxhYmVsIHx8IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbY2xhc3MubWF0LW1lbnUtaXRlbS1zZXBhcmF0ZV09XCJvcHRpb24uaXNTZXBhcmF0ZSB8fCBpc05ld0dyb3VwKGkpXCJcbiAgICAgICAgICBbY2xhc3MubWF0LW1lbnUtaXRlbS1zZWxlY3RlZF09XCJvcHRpb24uaXNTZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFvcHRpb24uaXNFbmFibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xpY2sob3B0aW9uKVwiXG4gICAgICAgICAgYXR0ci5kYXRhLXRlc3Q9XCJtZW51LWl0ZW0te3sgb3B0aW9uLm5hbWUgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgW2VzSWNvbl09XCJvcHRpb24uaWNvblwiPjwvaT4ge3sgb3B0aW9uLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9tYXQtbWVudT5cbjxkaXYgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiZGlzcGxheS1ub25lXCI+PC9kaXY+XG4iXX0=
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Injectable, InjectionToken } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export const EDU_SHARING_UI_CONFIG = new InjectionToken('EDU_SHARING_API_CONFIG');
|
|
4
|
-
export class EduSharingUiConfiguration {
|
|
5
|
-
constructor() {
|
|
6
|
-
/**
|
|
7
|
-
* Whether this Angular application is being used embedded as a web component by a third-party
|
|
8
|
-
* web page.
|
|
9
|
-
*/
|
|
10
|
-
this.isEmbedded = false;
|
|
11
|
-
}
|
|
12
|
-
static create(params = {}) {
|
|
13
|
-
return { ...new EduSharingUiConfiguration(), ...params };
|
|
14
|
-
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiConfiguration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiConfiguration, providedIn: 'root' }); }
|
|
17
|
-
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiConfiguration, decorators: [{
|
|
19
|
-
type: Injectable,
|
|
20
|
-
args: [{
|
|
21
|
-
providedIn: 'root',
|
|
22
|
-
}]
|
|
23
|
-
}] });
|
|
24
|
-
export function getConfigProvider(params) {
|
|
25
|
-
return [
|
|
26
|
-
// Provide the params given to `forRoot()`. These can be overridden by the application by
|
|
27
|
-
// providing `EDU_SHARING_API_CONFIG` itself.
|
|
28
|
-
{
|
|
29
|
-
provide: EDU_SHARING_UI_CONFIG,
|
|
30
|
-
useValue: params,
|
|
31
|
-
},
|
|
32
|
-
// Inject `configuration` as both, `ApiConfiguration` and `EduSharingApiConfiguration`, to pass
|
|
33
|
-
// `rootUrl` on to `ApiModule` while also adding our custom configuration.
|
|
34
|
-
{
|
|
35
|
-
provide: EduSharingUiConfiguration,
|
|
36
|
-
deps: [EDU_SHARING_UI_CONFIG],
|
|
37
|
-
// deps: [[new Optional(), EDU_SHARING_API_CONFIG]],
|
|
38
|
-
useFactory: (configParams) => EduSharingUiConfiguration.create(configParams),
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
provide: EduSharingUiConfiguration,
|
|
42
|
-
deps: [EDU_SHARING_UI_CONFIG],
|
|
43
|
-
// deps: [[new Optional(), EDU_SHARING_API_CONFIG]],
|
|
44
|
-
useFactory: (configParams) => EduSharingUiConfiguration.create(configParams),
|
|
45
|
-
},
|
|
46
|
-
];
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWR1LXNoYXJpbmctdWktY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvZWR1LXNoYXJpbmctdWktY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQzs7QUFFckUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ25ELHdCQUF3QixDQUMzQixDQUFDO0FBS0YsTUFBTSxPQUFPLHlCQUF5QjtJQUh0QztRQUtJOzs7V0FHRztRQUNILGVBQVUsR0FBRyxLQUFLLENBQUM7S0FLdEI7SUFIRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQTBDLEVBQUU7UUFDdEQsT0FBTyxFQUFFLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDN0QsQ0FBQzsrR0FWUSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQUZ0QixNQUFNOzs0RkFFVCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQWdCRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBd0M7SUFDdEUsT0FBTztRQUNILHlGQUF5RjtRQUN6Riw2Q0FBNkM7UUFDN0M7WUFDSSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLFFBQVEsRUFBRSxNQUFNO1NBQ25CO1FBQ0QsK0ZBQStGO1FBQy9GLDBFQUEwRTtRQUMxRTtZQUNJLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsSUFBSSxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDN0Isb0RBQW9EO1lBQ3BELFVBQVUsRUFBRSxDQUFDLFlBQTZDLEVBQUUsRUFBRSxDQUMxRCx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1NBQ3JEO1FBQ0Q7WUFDSSxPQUFPLEVBQUUseUJBQXlCO1lBQ2xDLElBQUksRUFBRSxDQUFDLHFCQUFxQixDQUFDO1lBQzdCLG9EQUFvRDtZQUNwRCxVQUFVLEVBQUUsQ0FBQyxZQUE2QyxFQUFFLEVBQUUsQ0FDMUQseUJBQXlCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztTQUNyRDtLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBFRFVfU0hBUklOR19VSV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48RWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvblBhcmFtcz4oXG4gICAgJ0VEVV9TSEFSSU5HX0FQSV9DT05GSUcnLFxuKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbiB7XG4gICAgcHJvZHVjdGlvbjogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgQW5ndWxhciBhcHBsaWNhdGlvbiBpcyBiZWluZyB1c2VkIGVtYmVkZGVkIGFzIGEgd2ViIGNvbXBvbmVudCBieSBhIHRoaXJkLXBhcnR5XG4gICAgICogd2ViIHBhZ2UuXG4gICAgICovXG4gICAgaXNFbWJlZGRlZCA9IGZhbHNlO1xuXG4gICAgc3RhdGljIGNyZWF0ZShwYXJhbXM6IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMgPSB7fSk6IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4geyAuLi5uZXcgRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbigpLCAuLi5wYXJhbXMgfTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMgPSBQYXJ0aWFsPEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnUHJvdmlkZXIocGFyYW1zPzogRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvblBhcmFtcyk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICAgIC8vIFByb3ZpZGUgdGhlIHBhcmFtcyBnaXZlbiB0byBgZm9yUm9vdCgpYC4gVGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyBgRURVX1NIQVJJTkdfQVBJX0NPTkZJR2AgaXRzZWxmLlxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFRFVfU0hBUklOR19VSV9DT05GSUcsXG4gICAgICAgICAgICB1c2VWYWx1ZTogcGFyYW1zLFxuICAgICAgICB9LFxuICAgICAgICAvLyBJbmplY3QgYGNvbmZpZ3VyYXRpb25gIGFzIGJvdGgsIGBBcGlDb25maWd1cmF0aW9uYCBhbmQgYEVkdVNoYXJpbmdBcGlDb25maWd1cmF0aW9uYCwgdG8gcGFzc1xuICAgICAgICAvLyBgcm9vdFVybGAgb24gdG8gYEFwaU1vZHVsZWAgd2hpbGUgYWxzbyBhZGRpbmcgb3VyIGN1c3RvbSBjb25maWd1cmF0aW9uLlxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgZGVwczogW0VEVV9TSEFSSU5HX1VJX0NPTkZJR10sXG4gICAgICAgICAgICAvLyBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBFRFVfU0hBUklOR19BUElfQ09ORklHXV0sXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoY29uZmlnUGFyYW1zOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zKSA9PlxuICAgICAgICAgICAgICAgIEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24uY3JlYXRlKGNvbmZpZ1BhcmFtcyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgICBkZXBzOiBbRURVX1NIQVJJTkdfVUlfQ09ORklHXSxcbiAgICAgICAgICAgIC8vIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIEVEVV9TSEFSSU5HX0FQSV9DT05GSUddXSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChjb25maWdQYXJhbXM6IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMpID0+XG4gICAgICAgICAgICAgICAgRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbi5jcmVhdGUoY29uZmlnUGFyYW1zKSxcbiAgICAgICAgfSxcbiAgICBdO1xufVxuIl19
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
3
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { getConfigProvider } from './edu-sharing-ui-configuration';
|
|
6
|
-
import { ListItemsModule } from './list-items/list-items.module';
|
|
7
|
-
import { NodeEntriesModule } from './node-entries/node-entries.module';
|
|
8
|
-
import { EduSharingUiCommonModule } from './common/edu-sharing-ui-common.module';
|
|
9
|
-
import { NodeImageSizePipe } from './pipes/node-image-size.pipe';
|
|
10
|
-
import { FormatDatePipe } from './pipes/format-date.pipe';
|
|
11
|
-
import { ListItemLabelPipe } from './node-entries/list-item-label.pipe';
|
|
12
|
-
import { SortDropdownComponent } from './sort-dropdown/sort-dropdown.component';
|
|
13
|
-
import { MdsModule } from './mds/mds.module';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
export class EduSharingUiModule {
|
|
16
|
-
static forRoot(config) {
|
|
17
|
-
return {
|
|
18
|
-
ngModule: EduSharingUiModule,
|
|
19
|
-
providers: [getConfigProvider(config)],
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
23
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiModule, imports: [CommonModule,
|
|
24
|
-
TranslateModule,
|
|
25
|
-
EduSharingUiCommonModule,
|
|
26
|
-
ListItemsModule,
|
|
27
|
-
NodeEntriesModule], exports: [CommonModule,
|
|
28
|
-
MdsModule,
|
|
29
|
-
MatTooltipModule,
|
|
30
|
-
TranslateModule,
|
|
31
|
-
EduSharingUiCommonModule,
|
|
32
|
-
ListItemsModule,
|
|
33
|
-
NodeEntriesModule,
|
|
34
|
-
NodeImageSizePipe,
|
|
35
|
-
FormatDatePipe,
|
|
36
|
-
ListItemsModule,
|
|
37
|
-
ListItemLabelPipe,
|
|
38
|
-
SortDropdownComponent] }); }
|
|
39
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiModule, imports: [CommonModule,
|
|
40
|
-
TranslateModule,
|
|
41
|
-
EduSharingUiCommonModule,
|
|
42
|
-
ListItemsModule,
|
|
43
|
-
NodeEntriesModule, CommonModule,
|
|
44
|
-
MdsModule,
|
|
45
|
-
MatTooltipModule,
|
|
46
|
-
TranslateModule,
|
|
47
|
-
EduSharingUiCommonModule,
|
|
48
|
-
ListItemsModule,
|
|
49
|
-
NodeEntriesModule,
|
|
50
|
-
ListItemsModule] }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiModule, decorators: [{
|
|
53
|
-
type: NgModule,
|
|
54
|
-
args: [{
|
|
55
|
-
declarations: [],
|
|
56
|
-
imports: [
|
|
57
|
-
CommonModule,
|
|
58
|
-
TranslateModule,
|
|
59
|
-
EduSharingUiCommonModule,
|
|
60
|
-
ListItemsModule,
|
|
61
|
-
NodeEntriesModule,
|
|
62
|
-
// Loading the TranslationsModule here causes errors for lazy-loaded pages like the search
|
|
63
|
-
// page. For usage outside the context of edu-sharing, we probably need to import the
|
|
64
|
-
// TranslationsModule at the main module that packages or uses this library.
|
|
65
|
-
],
|
|
66
|
-
exports: [
|
|
67
|
-
CommonModule,
|
|
68
|
-
MdsModule,
|
|
69
|
-
MatTooltipModule,
|
|
70
|
-
TranslateModule,
|
|
71
|
-
EduSharingUiCommonModule,
|
|
72
|
-
ListItemsModule,
|
|
73
|
-
NodeEntriesModule,
|
|
74
|
-
NodeImageSizePipe,
|
|
75
|
-
FormatDatePipe,
|
|
76
|
-
ListItemsModule,
|
|
77
|
-
ListItemLabelPipe,
|
|
78
|
-
SortDropdownComponent,
|
|
79
|
-
],
|
|
80
|
-
}]
|
|
81
|
-
}] });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWR1LXNoYXJpbmctdWkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9lZHUtc2hhcmluZy11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW1DLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBNkI3QyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQ2pCLE1BQXVDO1FBRXZDLE9BQU87WUFDSCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pDLENBQUM7SUFDTixDQUFDOytHQVJRLGtCQUFrQjtnSEFBbEIsa0JBQWtCLFlBeEJ2QixZQUFZO1lBQ1osZUFBZTtZQUNmLHdCQUF3QjtZQUN4QixlQUFlO1lBQ2YsaUJBQWlCLGFBTWpCLFlBQVk7WUFDWixTQUFTO1lBQ1QsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZix3QkFBd0I7WUFDeEIsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGVBQWU7WUFDZixpQkFBaUI7WUFDakIscUJBQXFCO2dIQUdoQixrQkFBa0IsWUF4QnZCLFlBQVk7WUFDWixlQUFlO1lBQ2Ysd0JBQXdCO1lBQ3hCLGVBQWU7WUFDZixpQkFBaUIsRUFNakIsWUFBWTtZQUNaLFNBQVM7WUFDVCxnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLHdCQUF3QjtZQUN4QixlQUFlO1lBQ2YsaUJBQWlCO1lBR2pCLGVBQWU7OzRGQUtWLGtCQUFrQjtrQkEzQjlCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsMEZBQTBGO3dCQUMxRixxRkFBcUY7d0JBQ3JGLDRFQUE0RTtxQkFDL0U7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixxQkFBcUI7cUJBQ3hCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMsIGdldENvbmZpZ1Byb3ZpZGVyIH0gZnJvbSAnLi9lZHUtc2hhcmluZy11aS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IExpc3RJdGVtc01vZHVsZSB9IGZyb20gJy4vbGlzdC1pdGVtcy9saXN0LWl0ZW1zLm1vZHVsZSc7XG5pbXBvcnQgeyBOb2RlRW50cmllc01vZHVsZSB9IGZyb20gJy4vbm9kZS1lbnRyaWVzL25vZGUtZW50cmllcy5tb2R1bGUnO1xuaW1wb3J0IHsgRWR1U2hhcmluZ1VpQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi9jb21tb24vZWR1LXNoYXJpbmctdWktY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBOb2RlSW1hZ2VTaXplUGlwZSB9IGZyb20gJy4vcGlwZXMvbm9kZS1pbWFnZS1zaXplLnBpcGUnO1xuaW1wb3J0IHsgRm9ybWF0RGF0ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2Zvcm1hdC1kYXRlLnBpcGUnO1xuaW1wb3J0IHsgTGlzdEl0ZW1MYWJlbFBpcGUgfSBmcm9tICcuL25vZGUtZW50cmllcy9saXN0LWl0ZW0tbGFiZWwucGlwZSc7XG5pbXBvcnQgeyBTb3J0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL3NvcnQtZHJvcGRvd24vc29ydC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWRzTW9kdWxlIH0gZnJvbSAnLi9tZHMvbWRzLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBFZHVTaGFyaW5nVWlDb21tb25Nb2R1bGUsXG4gICAgICAgIExpc3RJdGVtc01vZHVsZSxcbiAgICAgICAgTm9kZUVudHJpZXNNb2R1bGUsXG4gICAgICAgIC8vIExvYWRpbmcgdGhlIFRyYW5zbGF0aW9uc01vZHVsZSBoZXJlIGNhdXNlcyBlcnJvcnMgZm9yIGxhenktbG9hZGVkIHBhZ2VzIGxpa2UgdGhlIHNlYXJjaFxuICAgICAgICAvLyBwYWdlLiBGb3IgdXNhZ2Ugb3V0c2lkZSB0aGUgY29udGV4dCBvZiBlZHUtc2hhcmluZywgd2UgcHJvYmFibHkgbmVlZCB0byBpbXBvcnQgdGhlXG4gICAgICAgIC8vIFRyYW5zbGF0aW9uc01vZHVsZSBhdCB0aGUgbWFpbiBtb2R1bGUgdGhhdCBwYWNrYWdlcyBvciB1c2VzIHRoaXMgbGlicmFyeS5cbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNZHNNb2R1bGUsXG4gICAgICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgRWR1U2hhcmluZ1VpQ29tbW9uTW9kdWxlLFxuICAgICAgICBMaXN0SXRlbXNNb2R1bGUsXG4gICAgICAgIE5vZGVFbnRyaWVzTW9kdWxlLFxuICAgICAgICBOb2RlSW1hZ2VTaXplUGlwZSxcbiAgICAgICAgRm9ybWF0RGF0ZVBpcGUsXG4gICAgICAgIExpc3RJdGVtc01vZHVsZSxcbiAgICAgICAgTGlzdEl0ZW1MYWJlbFBpcGUsXG4gICAgICAgIFNvcnREcm9wZG93bkNvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFZHVTaGFyaW5nVWlNb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChcbiAgICAgICAgY29uZmlnOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zLFxuICAgICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RWR1U2hhcmluZ1VpTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogRWR1U2hhcmluZ1VpTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbZ2V0Q29uZmlnUHJvdmlkZXIoY29uZmlnKV0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|