@meshmakers/shared-ui 3.1.197-0 → 3.1.200-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
- import { Component, EventEmitter, forwardRef, HostBinding, Input, ViewChild } from '@angular/core';
2
- import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
3
- import { MatFormFieldControl } from '@angular/material/form-field';
4
- import { of, Subject } from 'rxjs';
5
- import { debounceTime, filter, switchMap, tap } from 'rxjs/operators';
6
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
1
+ import { Component, EventEmitter, forwardRef, HostBinding, Input, ViewChild } from "@angular/core";
2
+ import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl } from "@angular/forms";
3
+ import { MatFormFieldControl } from "@angular/material/form-field";
4
+ import { Subject } from "rxjs";
5
+ import { debounceTime, filter, tap } from "rxjs/operators";
6
+ import { coerceBooleanProperty } from "@angular/cdk/coercion";
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/cdk/a11y";
9
9
  import * as i2 from "@angular/common";
@@ -28,7 +28,7 @@ export class MmEntitySelectInputComponent {
28
28
  valueChange = new EventEmitter();
29
29
  _selectedEntity;
30
30
  inputField;
31
- describedBy = '';
31
+ describedBy = "";
32
32
  activatedValue;
33
33
  constructor(elRef, injector, fm) {
34
34
  this.elRef = elRef;
@@ -38,8 +38,8 @@ export class MmEntitySelectInputComponent {
38
38
  this.errorState = false;
39
39
  this.inputField = null;
40
40
  this._dataSource = null;
41
- this._placeholder = '';
42
- this._prefix = '';
41
+ this._placeholder = "";
42
+ this._prefix = "";
43
43
  this.searchFormControl = new FormControl();
44
44
  this.isLoading = false;
45
45
  this._disabled = false;
@@ -123,9 +123,14 @@ export class MmEntitySelectInputComponent {
123
123
  // The goal is to select the entity in direct way.
124
124
  if (this._prefix) {
125
125
  this.searchFormControl.valueChanges
126
- .pipe(debounceTime(300), filter((value) => typeof value === 'string'), filter((value) => value.startsWith(this._prefix)), tap(() => (this.value = null)), tap(() => (this.isLoading = true)), switchMap((value) => this._dataSource?.onFilter(value.replace(this._prefix, '').trim()) ?? of(null)))
127
- .subscribe((resultSet) => {
128
- if (resultSet?.list) {
126
+ .pipe(debounceTime(300), filter((value) => typeof value === "string"), filter((value) => value.startsWith(this._prefix)), tap(() => (this.value = null)), tap(() => (this.isLoading = true)))
127
+ .subscribe(async (value) => {
128
+ if (!this._dataSource) {
129
+ this.isLoading = false;
130
+ return;
131
+ }
132
+ const resultSet = await this._dataSource?.onFilter(value.replace(this._prefix, "").trim());
133
+ if (resultSet.list) {
129
134
  if (resultSet.list.length === 1) {
130
135
  this.value = resultSet.list[0];
131
136
  }
@@ -138,10 +143,15 @@ export class MmEntitySelectInputComponent {
138
143
  }
139
144
  // This is the search functionality when search by human.
140
145
  this.searchFormControl.valueChanges
141
- .pipe(debounceTime(300), tap(() => (this.filteredEntities = [])), filter((value) => typeof value === 'string'), tap(() => {
146
+ .pipe(debounceTime(300), tap(() => (this.filteredEntities = [])), filter((value) => typeof value === "string"), tap(() => {
142
147
  this.setValue(null);
143
- }), filter((value) => value.toString().length >= 3), tap(() => (this.isLoading = true)), switchMap((value) => this._dataSource?.onFilter(value) ?? of(null)))
144
- .subscribe((resultSet) => {
148
+ }), filter((value) => value.toString().length >= 3), tap(() => (this.isLoading = true)))
149
+ .subscribe(async (value) => {
150
+ if (!this._dataSource) {
151
+ this.isLoading = false;
152
+ return;
153
+ }
154
+ const resultSet = await this._dataSource.onFilter(value);
145
155
  if (resultSet?.list) {
146
156
  this.filteredEntities = resultSet.list;
147
157
  }
@@ -163,7 +173,7 @@ export class MmEntitySelectInputComponent {
163
173
  this.searchFormControl.reset(null);
164
174
  }
165
175
  focus() {
166
- this.elRef.nativeElement.querySelector('input')?.focus();
176
+ this.elRef.nativeElement.querySelector("input")?.focus();
167
177
  }
168
178
  onEntitySelected(event) {
169
179
  this.value = event.option.value;
@@ -205,22 +215,24 @@ export class MmEntitySelectInputComponent {
205
215
  this.disabled = isDisabled;
206
216
  }
207
217
  onContainerClick(event) {
208
- if (event.target.tagName.toLowerCase() !== 'input') {
218
+ if (event.target.tagName.toLowerCase() !== "input") {
209
219
  this.focus();
210
220
  }
211
221
  }
212
222
  setDescribedByIds(ids) {
213
- this.describedBy = ids.join(' ');
223
+ this.describedBy = ids.join(" ");
214
224
  }
215
225
  validate(control) {
216
226
  const selection = control.value;
217
- if (typeof selection === 'string') {
227
+ if (typeof selection === "string") {
218
228
  return { incorrect: true };
219
229
  }
220
230
  return null;
221
231
  }
222
- _propagateChange = (_) => { };
223
- _onTouched = () => { };
232
+ _propagateChange = (_) => {
233
+ };
234
+ _onTouched = () => {
235
+ };
224
236
  setValue(value) {
225
237
  if (value !== this._selectedEntity) {
226
238
  this._selectedEntity = value;
@@ -249,9 +261,9 @@ export class MmEntitySelectInputComponent {
249
261
  }
250
262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MmEntitySelectInputComponent, decorators: [{
251
263
  type: Component,
252
- args: [{ selector: 'mm-entity-select', host: {
253
- '[id]': 'id',
254
- '[attr.aria-describedby]': 'describedBy'
264
+ args: [{ selector: "mm-entity-select", host: {
265
+ "[id]": "id",
266
+ "[attr.aria-describedby]": "describedBy"
255
267
  }, providers: [
256
268
  {
257
269
  provide: NG_VALUE_ACCESSOR,
@@ -272,10 +284,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
272
284
  type: HostBinding
273
285
  }], inputField: [{
274
286
  type: ViewChild,
275
- args: ['input']
287
+ args: ["input"]
276
288
  }], describedBy: [{
277
289
  type: HostBinding,
278
- args: ['attr.aria-describedby']
290
+ args: ["attr.aria-describedby"]
279
291
  }], dataSource: [{
280
292
  type: Input
281
293
  }], disabled: [{
@@ -288,6 +300,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
288
300
  type: Input
289
301
  }], shouldLabelFloat: [{
290
302
  type: HostBinding,
291
- args: ['class.floating']
303
+ args: ["class.floating"]
292
304
  }] } });
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWVudGl0eS1zZWxlY3QtaW5wdXQvbW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWVudGl0eS1zZWxlY3QtaW5wdXQvbW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUVYLEtBQUssRUFHTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR25FLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBMkI5RCxNQUFNLE9BQU8sNEJBQTRCO0lBbUI5QjtJQUNVO0lBQ0E7SUFwQlgsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDVixpQkFBaUIsQ0FBYztJQUN4QyxTQUFTLENBQVU7SUFDbkIsZ0JBQWdCLEdBQVUsRUFBRSxDQUFDO0lBQzdCLFNBQVMsQ0FBbUI7SUFDNUIsVUFBVSxD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LDR4QkFjQTs7MkZEMkNhLDRCQUE0QjtrQkF6QnhDLFNBQVM7K0JBQ0Usa0JBQWtCLFFBR3RCO3dCQUNKLE1BQU0sRUFBRSxJQUFJO3dCQUNaLHlCQUF5QixFQUFFLGFBQWE7cUJBQ3pDLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsOEJBQThCO3lCQUMxQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lJQVllLEVBQUU7c0JBRGpCLFdBQVc7Z0JBS3lCLFVBQVU7c0JBQTlDLFNBQVM7dUJBQUMsT0FBTztnQkFDNEIsV0FBVztzQkFBeEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBZ0N6QixVQUFVO3NCQURwQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBa0JLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssUUFBUTtzQkFEbEIsS0FBSztnQkFnQkssTUFBTTtzQkFEaEIsS0FBSztnQkE0QkssZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOZ0NvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEVudGl0eVNlbGVjdERhdGFTb3VyY2UgfSBmcm9tICdAbWVzaG1ha2Vycy9zaGFyZWQtc2VydmljZXMnO1xuaW1wb3J0IHsgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZUFjdGl2YXRlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21tLWVudGl0eS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21tLWVudGl0eS1zZWxlY3QtaW5wdXQuY29tcG9uZW50LmNzcyddLFxuICBob3N0OiB7XG4gICAgJ1tpZF0nOiAnaWQnLFxuICAgICdbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSc6ICdkZXNjcmliZWRCeSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNbUVudGl0eVNlbGVjdElucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IE1tRW50aXR5U2VsZWN0SW5wdXRDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNbUVudGl0eVNlbGVjdElucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1tRW50aXR5U2VsZWN0SW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgRG9DaGVjaywgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiwgVmFsaWRhdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgbmV4dElkID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IHNlYXJjaEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIGZpbHRlcmVkRW50aXRpZXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGw7XG4gIHB1YmxpYyBlcnJvclN0YXRlOiBib29sZWFuO1xuICBwdWJsaWMgZm9jdXNlZDogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIEBIb3N0QmluZGluZygpXG4gIHB1YmxpYyByZWFkb25seSBpZCA9IGBpYS1lbnRpdHktc2VsZWN0LSR7TW1FbnRpdHlTZWxlY3RJbnB1dENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gIHB1YmxpYyB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRFbnRpdHk6IGFueTtcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBwcml2YXRlIHJlYWRvbmx5IGlucHV0RmllbGQ6IE1hdElucHV0IHwgbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBwcml2YXRlIGRlc2NyaWJlZEJ5ID0gJyc7XG4gIHByaXZhdGUgYWN0aXZhdGVkVmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm06IEZvY3VzTW9uaXRvclxuICApIHtcbiAgICB0aGlzLm5nQ29udHJvbCA9IG51bGw7XG4gICAgdGhpcy5lcnJvclN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5pbnB1dEZpZWxkID0gbnVsbDtcbiAgICB0aGlzLl9kYXRhU291cmNlID0gbnVsbDtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9ICcnO1xuICAgIHRoaXMuX3ByZWZpeCA9ICcnO1xuXG4gICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICBmbS5tb25pdG9yKGVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZSgob3JpZ2luKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGFTb3VyY2U6IEVudGl0eVNlbGVjdERhdGFTb3VyY2U8YW55PiB8IG51bGw7XG5cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IEVudGl0eVNlbGVjdERhdGFTb3VyY2U8YW55PiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhU291cmNlKHZhbHVlOiBFbnRpdHlTZWxlY3REYXRhU291cmNlPGFueT4gfCBudWxsKSB7XG4gICAgdGhpcy5fZGF0YVNvdXJjZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzKTtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaEZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHBsaCkge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHJlcSkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XG4gICAgaWYgKHRoaXMuaW5wdXRGaWVsZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmlucHV0RmllbGQucmVxdWlyZWQgPSB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlZml4OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBwcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlZml4O1xuICB9XG5cbiAgcHVibGljIHNldCBwcmVmaXgodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fcHJlZml4KSB7XG4gICAgICB0aGlzLl9wcmVmaXggPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRW50aXR5O1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9zZWxlY3RlZEVudGl0eSkge1xuICAgICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG4gPSB0aGlzLnNlYXJjaEZvcm1Db250cm9sLnZhbHVlO1xuICAgIHJldHVybiAhbjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmxvYXRpbmcnKVxuICBwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgLy8gSWYgcHJlZml4IGRlZmluZWQsIHVzdWFsbHkgdGhpcyBpcyB1c2VkIGZvciBhIGNvZGUgc2Nhbm5lci5cbiAgICAvLyBUaGUgZ29hbCBpcyB0byBzZWxlY3QgdGhlIGVudGl0eSBpbiBkaXJlY3Qgd2F5LlxuICAgIGlmICh0aGlzLl9wcmVmaXgpIHtcbiAgICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICAgIGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpLFxuICAgICAgICAgIGZpbHRlcigodmFsdWUpID0+IHZhbHVlLnN0YXJ0c1dpdGgodGhpcy5fcHJlZml4KSksXG4gICAgICAgICAgdGFwKCgpID0+ICh0aGlzLnZhbHVlID0gbnVsbCkpLFxuICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSB0cnVlKSksXG4gICAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZTogc3RyaW5nKSA9PiB0aGlzLl9kYXRhU291cmNlPy5vbkZpbHRlcih2YWx1ZS5yZXBsYWNlKHRoaXMuX3ByZWZpeCwgJycpLnRyaW0oKSkgPz8gb2YobnVsbCkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0U2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdFNldD8ubGlzdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdFNldC5saXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gcmVzdWx0U2V0Lmxpc3RbMF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkRW50aXRpZXMgPSByZXN1bHRTZXQubGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyB0aGUgc2VhcmNoIGZ1bmN0aW9uYWxpdHkgd2hlbiBzZWFyY2ggYnkgaHVtYW4uXG4gICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmZpbHRlcmVkRW50aXRpZXMgPSBbXSkpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlOiBhbnkpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+PSAzKSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IHRydWUpKSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZTogc3RyaW5nKSA9PiB0aGlzLl9kYXRhU291cmNlPy5vbkZpbHRlcih2YWx1ZSkgPz8gb2YobnVsbCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHRTZXQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdFNldD8ubGlzdCkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRFbnRpdGllcyA9IHJlc3VsdFNldC5saXN0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5mbS5zdG9wTW9uaXRvcmluZyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmVycm9yU3RhdGUgPSAodGhpcy5uZ0NvbnRyb2wuaW52YWxpZCAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkKSA/PyBmYWxzZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJlZEVudGl0aWVzID0gW107XG4gICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC5yZXNldChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKT8uZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGl0eVNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICB0aGlzLmZpbHRlcmVkRW50aXRpZXMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGl0eUFjdGl2YXRlZChldmVudDogTWF0QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFZhbHVlID0gZXZlbnQub3B0aW9uPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGl0eUNsb3NlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmF0ZWRWYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuYWN0aXZhdGVkVmFsdWU7XG4gICAgICB0aGlzLmFjdGl2YXRlZFZhbHVlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWx0ZXJlZEVudGl0aWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5hY3RpdmF0ZWRWYWx1ZSA9IHRoaXMuZmlsdGVyZWRFbnRpdGllc1swXTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmZpbHRlcmVkRW50aXRpZXNbMF07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVG91Y2hlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xuICB9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHNlbGVjdGlvbjogYW55ID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAodHlwZW9mIHNlbGVjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB7IGluY29ycmVjdDogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHt9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gIHByaXZhdGUgc2V0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fc2VsZWN0ZWRFbnRpdHkpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRW50aXR5ID0gdmFsdWU7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3NlbGVjdGVkRW50aXR5KTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpbnB1dCAjaW5wdXQgKGJsdXIpPVwib25Ub3VjaGVkKClcIiAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaEZvcm1Db250cm9sXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBtYXRJbnB1dD5cbjxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKGNsb3NlZCk9XCJvbkVudGl0eUNsb3NlZCgpXCJcbiAgICAgICAgICAgICAgICAgIChvcHRpb25BY3RpdmF0ZWQpPVwib25FbnRpdHlBY3RpdmF0ZWQoJGV2ZW50KVwiIChvcHRpb25TZWxlY3RlZCk9XCJvbkVudGl0eVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImRhdGFTb3VyY2U/Lm9uRGlzcGxheUVudGl0eSA/PyBudWxsXCI+XG4gIDxtYXQtb3B0aW9uICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJpcy1sb2FkaW5nXCI+XG4gICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiNTBcIj48L21hdC1zcGlubmVyPlxuICA8L21hdC1vcHRpb24+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVudGl0eSBvZiBmaWx0ZXJlZEVudGl0aWVzXCIgW3ZhbHVlXT1cImVudGl0eVwiPlxuICAgICAge3tkYXRhU291cmNlPy5vbkRpc3BsYXlFbnRpdHkoZW50aXR5KSA/PyBudWxsfX1cbiAgICA8L21hdC1vcHRpb24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYXQtYXV0b2NvbXBsZXRlPlxuIl19
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWVudGl0eS1zZWxlY3QtaW5wdXQvbW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWVudGl0eS1zZWxlY3QtaW5wdXQvbW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUVYLEtBQUssRUFHTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR25FLE9BQU8sRUFBTSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkMsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQWEsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7OztBQTJCOUQsTUFBTSxPQUFPLDRCQUE0QjtJQW1COUI7SUFDVTtJQUNBO0lBcEJYLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsaUJBQWlCLENBQWM7SUFDeEMsU0FBUyxDQUFVO0lBQ25CLGdCQUFnQixHQUFVLEVBQUUsQ0FBQztJQUM3QixTQUFTLENBQW1CO0lBQzVCLFVBQVUsQ0FBVTtJQUNwQixPQUFPLENBQVU7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QUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDRCQUE0QixDQUFDO2dCQUMzRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsK0hDdkRILDR4QkFjQTs7MkZEMkNhLDRCQUE0QjtrQkF6QnhDLFNBQVM7K0JBQ0Usa0JBQWtCLFFBR3RCO3dCQUNKLE1BQU0sRUFBRSxJQUFJO3dCQUNaLHlCQUF5QixFQUFFLGFBQWE7cUJBQ3pDLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsOEJBQThCO3lCQUMxQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lJQVllLEVBQUU7c0JBRGpCLFdBQVc7Z0JBS3lCLFVBQVU7c0JBQTlDLFNBQVM7dUJBQUMsT0FBTztnQkFDNEIsV0FBVztzQkFBeEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBZ0N6QixVQUFVO3NCQURwQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBa0JLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssUUFBUTtzQkFEbEIsS0FBSztnQkFnQkssTUFBTTtzQkFEaEIsS0FBSztnQkE0QkssZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHsgRW50aXR5U2VsZWN0RGF0YVNvdXJjZSwgUGFnZWRSZXN1bHREdG8gfSBmcm9tIFwiQG1lc2htYWtlcnMvc2hhcmVkLXNlcnZpY2VzXCI7XG5pbXBvcnQgeyBvZiwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIjtcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtbS1lbnRpdHktc2VsZWN0XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vbW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vbW0tZW50aXR5LXNlbGVjdC1pbnB1dC5jb21wb25lbnQuY3NzXCJdLFxuICBob3N0OiB7XG4gICAgXCJbaWRdXCI6IFwiaWRcIixcbiAgICBcIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldXCI6IFwiZGVzY3JpYmVkQnlcIlxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1tRW50aXR5U2VsZWN0SW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gICAgICB1c2VFeGlzdGluZzogTW1FbnRpdHlTZWxlY3RJbnB1dENvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1tRW50aXR5U2VsZWN0SW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTW1FbnRpdHlTZWxlY3RJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBEb0NoZWNrLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+LCBWYWxpZGF0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xuICBwdWJsaWMgZmlsdGVyZWRFbnRpdGllczogYW55W10gPSBbXTtcbiAgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbDtcbiAgcHVibGljIGVycm9yU3RhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBmb2N1c2VkOiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgQEhvc3RCaW5kaW5nKClcbiAgcHVibGljIHJlYWRvbmx5IGlkID0gYGlhLWVudGl0eS1zZWxlY3QtJHtNbUVudGl0eVNlbGVjdElucHV0Q29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgcHVibGljIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwcml2YXRlIF9zZWxlY3RlZEVudGl0eTogYW55O1xuICBAVmlld0NoaWxkKFwiaW5wdXRcIikgcHJpdmF0ZSByZWFkb25seSBpbnB1dEZpZWxkOiBNYXRJbnB1dCB8IG51bGw7XG4gIEBIb3N0QmluZGluZyhcImF0dHIuYXJpYS1kZXNjcmliZWRieVwiKSBwcml2YXRlIGRlc2NyaWJlZEJ5ID0gXCJcIjtcbiAgcHJpdmF0ZSBhY3RpdmF0ZWRWYWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmbTogRm9jdXNNb25pdG9yXG4gICkge1xuICAgIHRoaXMubmdDb250cm9sID0gbnVsbDtcbiAgICB0aGlzLmVycm9yU3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLmlucHV0RmllbGQgPSBudWxsO1xuICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBudWxsO1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gXCJcIjtcbiAgICB0aGlzLl9wcmVmaXggPSBcIlwiO1xuXG4gICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICBmbS5tb25pdG9yKGVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZSgob3JpZ2luKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGFTb3VyY2U6IEVudGl0eVNlbGVjdERhdGFTb3VyY2U8YW55PiB8IG51bGw7XG5cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IEVudGl0eVNlbGVjdERhdGFTb3VyY2U8YW55PiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhU291cmNlKHZhbHVlOiBFbnRpdHlTZWxlY3REYXRhU291cmNlPGFueT4gfCBudWxsKSB7XG4gICAgdGhpcy5fZGF0YVNvdXJjZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzKTtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaEZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHBsaCkge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHJlcSkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XG4gICAgaWYgKHRoaXMuaW5wdXRGaWVsZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmlucHV0RmllbGQucmVxdWlyZWQgPSB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlZml4OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBwcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlZml4O1xuICB9XG5cbiAgcHVibGljIHNldCBwcmVmaXgodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fcHJlZml4KSB7XG4gICAgICB0aGlzLl9wcmVmaXggPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRW50aXR5O1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9zZWxlY3RlZEVudGl0eSkge1xuICAgICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG4gPSB0aGlzLnNlYXJjaEZvcm1Db250cm9sLnZhbHVlO1xuICAgIHJldHVybiAhbjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmZsb2F0aW5nXCIpXG4gIHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICAvLyBJZiBwcmVmaXggZGVmaW5lZCwgdXN1YWxseSB0aGlzIGlzIHVzZWQgZm9yIGEgY29kZSBzY2FubmVyLlxuICAgIC8vIFRoZSBnb2FsIGlzIHRvIHNlbGVjdCB0aGUgZW50aXR5IGluIGRpcmVjdCB3YXkuXG4gICAgaWYgKHRoaXMuX3ByZWZpeCkge1xuICAgICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSxcbiAgICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS5zdGFydHNXaXRoKHRoaXMuX3ByZWZpeCkpLFxuICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy52YWx1ZSA9IG51bGwpKSxcbiAgICAgICAgICB0YXAoKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gdHJ1ZSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAodmFsdWU6IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgaWYgKCF0aGlzLl9kYXRhU291cmNlKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmVzdWx0U2V0ID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZT8ub25GaWx0ZXIodmFsdWUucmVwbGFjZSh0aGlzLl9wcmVmaXgsIFwiXCIpLnRyaW0oKSk7XG5cbiAgICAgICAgICBpZiAocmVzdWx0U2V0Lmxpc3QpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHRTZXQubGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHJlc3VsdFNldC5saXN0WzBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZEVudGl0aWVzID0gcmVzdWx0U2V0Lmxpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgdGhlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IHdoZW4gc2VhcmNoIGJ5IGh1bWFuLlxuICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIHRhcCgoKSA9PiAodGhpcy5maWx0ZXJlZEVudGl0aWVzID0gW10pKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+PSAzKSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IHRydWUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAodmFsdWUgOiBzdHJpbmcpID0+IHtcblxuICAgICAgICBpZiAoIXRoaXMuX2RhdGFTb3VyY2UpXG4gICAgICAgIHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdFNldCA9IGF3YWl0IHRoaXMuX2RhdGFTb3VyY2Uub25GaWx0ZXIodmFsdWUpO1xuXG4gICAgICAgIGlmIChyZXN1bHRTZXQ/Lmxpc3QpIHtcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkRW50aXRpZXMgPSByZXN1bHRTZXQubGlzdDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZm0uc3RvcE1vbml0b3JpbmcodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5lcnJvclN0YXRlID0gKHRoaXMubmdDb250cm9sLmludmFsaWQgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZCkgPz8gZmFsc2U7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRFbnRpdGllcyA9IFtdO1xuICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wucmVzZXQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKT8uZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGl0eVNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICB0aGlzLmZpbHRlcmVkRW50aXRpZXMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGl0eUFjdGl2YXRlZChldmVudDogTWF0QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFZhbHVlID0gZXZlbnQub3B0aW9uPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGl0eUNsb3NlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmF0ZWRWYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuYWN0aXZhdGVkVmFsdWU7XG4gICAgICB0aGlzLmFjdGl2YXRlZFZhbHVlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWx0ZXJlZEVudGl0aWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5hY3RpdmF0ZWRWYWx1ZSA9IHRoaXMuZmlsdGVyZWRFbnRpdGllc1swXTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmZpbHRlcmVkRW50aXRpZXNbMF07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVG91Y2hlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xuICB9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwiaW5wdXRcIikge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKFwiIFwiKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCBzZWxlY3Rpb246IGFueSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKHR5cGVvZiBzZWxlY3Rpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB7IGluY29ycmVjdDogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9zZWxlY3RlZEVudGl0eSkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFbnRpdHkgPSB2YWx1ZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UodGhpcy5fc2VsZWN0ZWRFbnRpdHkpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGlucHV0ICNpbnB1dCAoYmx1cik9XCJvblRvdWNoZWQoKVwiIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KClcIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoRm9ybUNvbnRyb2xcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIG1hdElucHV0PlxuPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAoY2xvc2VkKT1cIm9uRW50aXR5Q2xvc2VkKClcIlxuICAgICAgICAgICAgICAgICAgKG9wdGlvbkFjdGl2YXRlZCk9XCJvbkVudGl0eUFjdGl2YXRlZCgkZXZlbnQpXCIgKG9wdGlvblNlbGVjdGVkKT1cIm9uRW50aXR5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGF0YVNvdXJjZT8ub25EaXNwbGF5RW50aXR5ID8/IG51bGxcIj5cbiAgPG1hdC1vcHRpb24gKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImlzLWxvYWRpbmdcIj5cbiAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG4gIDwvbWF0LW9wdGlvbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZW50aXR5IG9mIGZpbHRlcmVkRW50aXRpZXNcIiBbdmFsdWVdPVwiZW50aXR5XCI+XG4gICAgICB7e2RhdGFTb3VyY2U/Lm9uRGlzcGxheUVudGl0eShlbnRpdHkpID8/IG51bGx9fVxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L21hdC1hdXRvY29tcGxldGU+XG4iXX0=
@@ -395,7 +395,7 @@ class MmEntitySelectInputComponent {
395
395
  valueChange = new EventEmitter();
396
396
  _selectedEntity;
397
397
  inputField;
398
- describedBy = '';
398
+ describedBy = "";
399
399
  activatedValue;
400
400
  constructor(elRef, injector, fm) {
401
401
  this.elRef = elRef;
@@ -405,8 +405,8 @@ class MmEntitySelectInputComponent {
405
405
  this.errorState = false;
406
406
  this.inputField = null;
407
407
  this._dataSource = null;
408
- this._placeholder = '';
409
- this._prefix = '';
408
+ this._placeholder = "";
409
+ this._prefix = "";
410
410
  this.searchFormControl = new FormControl();
411
411
  this.isLoading = false;
412
412
  this._disabled = false;
@@ -490,9 +490,14 @@ class MmEntitySelectInputComponent {
490
490
  // The goal is to select the entity in direct way.
491
491
  if (this._prefix) {
492
492
  this.searchFormControl.valueChanges
493
- .pipe(debounceTime(300), filter((value) => typeof value === 'string'), filter((value) => value.startsWith(this._prefix)), tap(() => (this.value = null)), tap(() => (this.isLoading = true)), switchMap((value) => this._dataSource?.onFilter(value.replace(this._prefix, '').trim()) ?? of(null)))
494
- .subscribe((resultSet) => {
495
- if (resultSet?.list) {
493
+ .pipe(debounceTime(300), filter((value) => typeof value === "string"), filter((value) => value.startsWith(this._prefix)), tap(() => (this.value = null)), tap(() => (this.isLoading = true)))
494
+ .subscribe(async (value) => {
495
+ if (!this._dataSource) {
496
+ this.isLoading = false;
497
+ return;
498
+ }
499
+ const resultSet = await this._dataSource?.onFilter(value.replace(this._prefix, "").trim());
500
+ if (resultSet.list) {
496
501
  if (resultSet.list.length === 1) {
497
502
  this.value = resultSet.list[0];
498
503
  }
@@ -505,10 +510,15 @@ class MmEntitySelectInputComponent {
505
510
  }
506
511
  // This is the search functionality when search by human.
507
512
  this.searchFormControl.valueChanges
508
- .pipe(debounceTime(300), tap(() => (this.filteredEntities = [])), filter((value) => typeof value === 'string'), tap(() => {
513
+ .pipe(debounceTime(300), tap(() => (this.filteredEntities = [])), filter((value) => typeof value === "string"), tap(() => {
509
514
  this.setValue(null);
510
- }), filter((value) => value.toString().length >= 3), tap(() => (this.isLoading = true)), switchMap((value) => this._dataSource?.onFilter(value) ?? of(null)))
511
- .subscribe((resultSet) => {
515
+ }), filter((value) => value.toString().length >= 3), tap(() => (this.isLoading = true)))
516
+ .subscribe(async (value) => {
517
+ if (!this._dataSource) {
518
+ this.isLoading = false;
519
+ return;
520
+ }
521
+ const resultSet = await this._dataSource.onFilter(value);
512
522
  if (resultSet?.list) {
513
523
  this.filteredEntities = resultSet.list;
514
524
  }
@@ -530,7 +540,7 @@ class MmEntitySelectInputComponent {
530
540
  this.searchFormControl.reset(null);
531
541
  }
532
542
  focus() {
533
- this.elRef.nativeElement.querySelector('input')?.focus();
543
+ this.elRef.nativeElement.querySelector("input")?.focus();
534
544
  }
535
545
  onEntitySelected(event) {
536
546
  this.value = event.option.value;
@@ -572,22 +582,24 @@ class MmEntitySelectInputComponent {
572
582
  this.disabled = isDisabled;
573
583
  }
574
584
  onContainerClick(event) {
575
- if (event.target.tagName.toLowerCase() !== 'input') {
585
+ if (event.target.tagName.toLowerCase() !== "input") {
576
586
  this.focus();
577
587
  }
578
588
  }
579
589
  setDescribedByIds(ids) {
580
- this.describedBy = ids.join(' ');
590
+ this.describedBy = ids.join(" ");
581
591
  }
582
592
  validate(control) {
583
593
  const selection = control.value;
584
- if (typeof selection === 'string') {
594
+ if (typeof selection === "string") {
585
595
  return { incorrect: true };
586
596
  }
587
597
  return null;
588
598
  }
589
- _propagateChange = (_) => { };
590
- _onTouched = () => { };
599
+ _propagateChange = (_) => {
600
+ };
601
+ _onTouched = () => {
602
+ };
591
603
  setValue(value) {
592
604
  if (value !== this._selectedEntity) {
593
605
  this._selectedEntity = value;
@@ -616,9 +628,9 @@ class MmEntitySelectInputComponent {
616
628
  }
617
629
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MmEntitySelectInputComponent, decorators: [{
618
630
  type: Component,
619
- args: [{ selector: 'mm-entity-select', host: {
620
- '[id]': 'id',
621
- '[attr.aria-describedby]': 'describedBy'
631
+ args: [{ selector: "mm-entity-select", host: {
632
+ "[id]": "id",
633
+ "[attr.aria-describedby]": "describedBy"
622
634
  }, providers: [
623
635
  {
624
636
  provide: NG_VALUE_ACCESSOR,
@@ -639,10 +651,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
639
651
  type: HostBinding
640
652
  }], inputField: [{
641
653
  type: ViewChild,
642
- args: ['input']
654
+ args: ["input"]
643
655
  }], describedBy: [{
644
656
  type: HostBinding,
645
- args: ['attr.aria-describedby']
657
+ args: ["attr.aria-describedby"]
646
658
  }], dataSource: [{
647
659
  type: Input
648
660
  }], disabled: [{
@@ -655,7 +667,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
655
667
  type: Input
656
668
  }], shouldLabelFloat: [{
657
669
  type: HostBinding,
658
- args: ['class.floating']
670
+ args: ["class.floating"]
659
671
  }] } });
660
672
 
661
673
  class MmMultipleEntitySelectInputComponent {
@@ -1 +1 @@
1
- {"version":3,"file":"meshmakers-shared-ui.mjs","sources":["../../../../projects/meshmakers/shared-ui/src/lib/mm-message-details/mm-message-details.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-message-details/mm-message-details.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-notification-bar/mm-notification-bar.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-notification-bar/mm-notification-bar.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-autocomplete-input/mm-autocomplete-input.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-autocomplete-input/mm-autocomplete-input.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-entity-select-input/mm-entity-select-input.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-entity-select-input/mm-entity-select-input.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component.html","../../../../projects/meshmakers/shared-ui/src/lib/services/breadcrumbData.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-breadcrumb/mm-breadcrumb.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-breadcrumb/mm-breadcrumb.component.html","../../../../projects/meshmakers/shared-ui/src/lib/models/confirmation.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-confirmation-window/mm-confirmation-window.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-confirmation-window/mm-confirmation-window.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-progress-window/mm-progress-window.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-progress-window/mm-progress-window.component.html","../../../../projects/meshmakers/shared-ui/src/lib/services/confirmation.service.ts","../../../../projects/meshmakers/shared-ui/src/lib/services/progress-notifier.service.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-file-upload/mm-file-upload.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-file-upload/mm-file-upload.component.html","../../../../projects/meshmakers/shared-ui/src/lib/services/file-upload.service.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-table-simple/mm-table-simple.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-table-simple/mm-table-simple.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-shared-ui.module.ts","../../../../projects/meshmakers/shared-ui/src/lib/models/commonValidators.ts","../../../../projects/meshmakers/shared-ui/src/lib/models/abstractDetailsComponent.ts","../../../../projects/meshmakers/shared-ui/src/public-api.ts","../../../../projects/meshmakers/shared-ui/src/meshmakers-shared-ui.ts"],"sourcesContent":["import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ErrorMessage } from '@meshmakers/shared-services';\n\n@Component({\n selector: 'mm-message-details',\n templateUrl: './mm-message-details.component.html',\n styleUrls: ['./mm-message-details.component.css']\n})\nexport class MmMessageDetailsComponent implements OnInit {\n errorMessage: ErrorMessage;\n\n constructor(\n public dialogRef: MatDialogRef<MmMessageDetailsComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.errorMessage = data.errorMessage;\n }\n\n ngOnInit(): void {}\n}\n","<mat-dialog-content>\n\n <h2>{{errorMessage.title}}</h2>\n <p>{{errorMessage.message}}</p>\n\n\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button class=\"primary-button\" mat-dialog-close mat-flat-button>OK</button>\n</mat-dialog-actions>\n","import { Component, OnInit } from '@angular/core';\nimport { ErrorMessage, MessageService } from '@meshmakers/shared-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MmMessageDetailsComponent } from '../mm-message-details/mm-message-details.component';\n\n@Component({\n selector: 'mm-notification-bar',\n templateUrl: './mm-notification-bar.component.html',\n styleUrls: ['./mm-notification-bar.component.scss']\n})\nexport class MmNotificationBarComponent implements OnInit {\n public errorMessage: ErrorMessage | null;\n\n constructor(\n private readonly messageService: MessageService,\n private readonly dialog: MatDialog\n ) {\n this.errorMessage = null;\n }\n\n ngOnInit(): void {\n this.messageService.getLatestErrorMessage().subscribe((value) => {\n this.errorMessage = value;\n });\n }\n\n onHide(): void {\n this.errorMessage = null;\n }\n\n onShowDetails(): void {\n this.dialog.open(MmMessageDetailsComponent, {\n data: {\n errorMessage: this.errorMessage\n }\n });\n }\n}\n","<mat-toolbar [ngClass]=\"{ 'notification-bar-hidden': !errorMessage }\" class=\"mm-notification-bar-background\">\n <a (click)=\"onShowDetails()\"><span class=\"mat-small\"><u>{{ errorMessage?.title }}</u></span></a>\n\n <!-- This fills the remaining space of the current row -->\n <span class=\"notification-fill-remaining-space\"></span>\n\n <button (click)=\"onHide()\" class=\"mm-notification-bar-button\" mat-fab><mat-icon class=\"material-symbols-outlined\">close</mat-icon></button>\n</mat-toolbar>\n","import {\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from \"@angular/core\";\nimport { MatFormFieldControl } from \"@angular/material/form-field\";\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator\n} from \"@angular/forms\";\nimport { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { debounceTime, filter, map, switchMap, tap } from \"rxjs/operators\";\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from \"@angular/material/autocomplete\";\nimport { MatInput } from \"@angular/material/input\";\nimport { of, Subject } from \"rxjs\";\nimport { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { AutoCompleteDataSource } from \"@meshmakers/shared-services\";\n\n@Component({\n selector: \"mm-autocomplete\",\n templateUrl: \"./mm-autocomplete-input.component.html\",\n styleUrls: [\"./mm-autocomplete-input.component.css\"],\n host: {\n \"[id]\": \"id\",\n \"[attr.aria-describedby]\": \"describedBy\"\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MmAutocompleteInputComponent),\n multi: true\n },\n {\n provide: MatFormFieldControl,\n useExisting: MmAutocompleteInputComponent\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MmAutocompleteInputComponent),\n multi: true\n }\n ]\n})\nexport class MmAutocompleteInputComponent implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl<any>, Validator {\n private static nextId = 0;\n public readonly searchFormControl: FormControl;\n public isLoading: boolean;\n public filteredStrings: string[] = [];\n public ngControl: NgControl | null;\n public errorState: boolean;\n public focused: boolean;\n public readonly stateChanges = new Subject<void>();\n @HostBinding()\n public readonly id = `ia-autocomplete-${MmAutocompleteInputComponent.nextId++}`;\n\n public valueChange: EventEmitter<any> = new EventEmitter<any>();\n private _selectedString: string | null;\n @ViewChild(\"input\") private readonly inputField: MatInput | null;\n @HostBinding(\"attr.aria-describedby\") private describedBy = \"\";\n private activatedValue: any;\n\n constructor(\n public elRef: ElementRef<HTMLElement>,\n private readonly injector: Injector,\n private readonly fm: FocusMonitor\n ) {\n this.ngControl = null;\n this.errorState = false;\n this._selectedString = null;\n this.inputField = null;\n this._dataSource = null;\n this._placeholder = \"\";\n this._prefix = \"\";\n\n this.searchFormControl = new FormControl();\n this.isLoading = false;\n this._disabled = false;\n this.focused = false;\n fm.monitor(elRef.nativeElement, true).subscribe((origin) => {\n this.focused = !!origin;\n this.stateChanges.next();\n });\n }\n\n private _dataSource: AutoCompleteDataSource | null;\n\n public get dataSource(): AutoCompleteDataSource | null {\n return this._dataSource;\n }\n\n @Input()\n public set dataSource(value: AutoCompleteDataSource | null) {\n this._dataSource = value;\n }\n\n private _disabled = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(dis) {\n this._disabled = coerceBooleanProperty(dis);\n if (this._disabled) {\n this.searchFormControl.disable();\n } else {\n this.searchFormControl.enable();\n }\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n\n public set placeholder(plh: string) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n\n private _required = false;\n\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(req) {\n this._required = coerceBooleanProperty(req);\n if (this.inputField != null) {\n this.inputField.required = this._required;\n }\n this.stateChanges.next();\n }\n\n private _prefix: string;\n\n @Input()\n public get prefix(): string {\n return this._prefix;\n }\n\n public set prefix(value: string) {\n if (value !== this._prefix) {\n this._prefix = value;\n }\n }\n\n public get value(): any {\n return this._selectedString;\n }\n\n public set value(value: any) {\n if (value !== this._selectedString) {\n this._selectedString = value;\n this.searchFormControl.setValue(value);\n this.valueChange.emit(value);\n this._propagateChange(this._selectedString);\n this.stateChanges.next();\n }\n }\n\n public get empty(): boolean {\n const n = this.searchFormControl.value;\n return !n;\n }\n\n @HostBinding(\"class.floating\")\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null);\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n // If prefix defined, usually this is used for a code scanner.\n // The goal is to select the entity in direct way.\n if (this._prefix) {\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n filter((value) => typeof value === \"string\"),\n filter((value) => value.startsWith(this._prefix)),\n tap(() => (this.value = null)),\n tap(() => (this.isLoading = true)),\n map((value: string) => this._dataSource?.onPreprocessSearchString(value) ?? \"\"),\n switchMap((value) => this._dataSource?.onFilter(value) ?? of(null))\n )\n .subscribe((resultSet) => {\n if (resultSet?.list != null) {\n if (resultSet.list.length === 1) {\n this.value = resultSet.list[0];\n } else {\n this.filteredStrings = resultSet.list;\n this.searchFormControl.patchValue(resultSet.searchTerm, {\n emitEvent: false\n });\n }\n }\n this.isLoading = false;\n });\n }\n\n // This is the search functionality when search by human.\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n tap((_) => {\n this.filteredStrings = [];\n }),\n filter((value) => value != null && value.toString().length >= 1),\n tap(() => (this.isLoading = true)),\n map((value: string) => this._dataSource?.onPreprocessSearchString(value)),\n tap((value) => (this.value = value)),\n switchMap((value) => {\n if (value !== null) {\n return this._dataSource?.onFilter(String(value)) ?? of(null);\n }\n return of(null);\n })\n )\n .subscribe((resultSet) => {\n if (resultSet?.list != null) {\n this.filteredStrings = resultSet.list;\n this.searchFormControl.patchValue(resultSet.searchTerm, {\n emitEvent: false\n });\n }\n this.isLoading = false;\n });\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n ngDoCheck(): void {\n if (this.ngControl != null) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) ?? false;\n this.stateChanges.next();\n }\n }\n\n public clear(): void {\n this.filteredStrings = [];\n this.searchFormControl.reset(null);\n }\n\n public focus(): void {\n this.elRef.nativeElement.querySelector(\"input\")?.focus();\n }\n\n public onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n this.value = event.option.value;\n this.filteredStrings = [];\n }\n\n public onOptionActivated(event: MatAutocompleteActivatedEvent): void {\n this.activatedValue = event.option?.value;\n }\n\n public onAutoCompleteClosed(): void {\n if (this.activatedValue) {\n this.value = this.activatedValue;\n this.activatedValue = null;\n }\n }\n\n public reset(): void {\n this.value = null;\n }\n\n public onFocusOut(): void {\n if (this.filteredStrings.length === 1) {\n this.activatedValue = this.filteredStrings[0];\n this.value = this.filteredStrings[0];\n }\n }\n\n public onTouched(): void {\n this._onTouched();\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: any): void {\n this._propagateChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public writeValue(obj: any): void {\n this.clear();\n this.value = obj;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(event: MouseEvent): void {\n if ((event.target as Element).tagName.toLowerCase() !== \"input\") {\n this.focus();\n }\n }\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(\" \");\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const selection: any = control.value;\n if (typeof selection === \"string\" && selection.length < 1) {\n return { incorrect: true };\n }\n return null;\n }\n\n private _propagateChange = (_: any): void => {\n };\n\n private readonly _onTouched = (): void => {\n };\n}\n","<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\"\n (closed)=\"onAutoCompleteClosed()\" (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let str of filteredStrings\" [value]=\"str\">\n {{str}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n","import {\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { EntitySelectDataSource } from '@meshmakers/shared-services';\nimport { of, Subject } from 'rxjs';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { debounceTime, filter, switchMap, tap } from 'rxjs/operators';\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'mm-entity-select',\n templateUrl: './mm-entity-select-input.component.html',\n styleUrls: ['./mm-entity-select-input.component.css'],\n host: {\n '[id]': 'id',\n '[attr.aria-describedby]': 'describedBy'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MmEntitySelectInputComponent),\n multi: true\n },\n {\n provide: MatFormFieldControl,\n useExisting: MmEntitySelectInputComponent\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MmEntitySelectInputComponent),\n multi: true\n }\n ]\n})\nexport class MmEntitySelectInputComponent implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl<any>, Validator {\n private static nextId = 0;\n public readonly searchFormControl: FormControl;\n public isLoading: boolean;\n public filteredEntities: any[] = [];\n public ngControl: NgControl | null;\n public errorState: boolean;\n public focused: boolean;\n public readonly stateChanges = new Subject<void>();\n @HostBinding()\n public readonly id = `ia-entity-select-${MmEntitySelectInputComponent.nextId++}`;\n\n public valueChange: EventEmitter<any> = new EventEmitter<any>();\n private _selectedEntity: any;\n @ViewChild('input') private readonly inputField: MatInput | null;\n @HostBinding('attr.aria-describedby') private describedBy = '';\n private activatedValue: any;\n\n constructor(\n public elRef: ElementRef<HTMLElement>,\n private readonly injector: Injector,\n private readonly fm: FocusMonitor\n ) {\n this.ngControl = null;\n this.errorState = false;\n this.inputField = null;\n this._dataSource = null;\n this._placeholder = '';\n this._prefix = '';\n\n this.searchFormControl = new FormControl();\n this.isLoading = false;\n this._disabled = false;\n this.focused = false;\n fm.monitor(elRef.nativeElement, true).subscribe((origin) => {\n this.focused = !!origin;\n this.stateChanges.next();\n });\n }\n\n private _dataSource: EntitySelectDataSource<any> | null;\n\n public get dataSource(): EntitySelectDataSource<any> | null {\n return this._dataSource;\n }\n\n @Input()\n public set dataSource(value: EntitySelectDataSource<any> | null) {\n this._dataSource = value;\n }\n\n private _disabled = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(dis) {\n this._disabled = coerceBooleanProperty(dis);\n if (this._disabled) {\n this.searchFormControl.disable();\n } else {\n this.searchFormControl.enable();\n }\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n\n public set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n\n private _required = false;\n\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(req) {\n this._required = coerceBooleanProperty(req);\n if (this.inputField != null) {\n this.inputField.required = this._required;\n }\n this.stateChanges.next();\n }\n\n private _prefix: string;\n\n @Input()\n public get prefix(): string {\n return this._prefix;\n }\n\n public set prefix(value: string) {\n if (value !== this._prefix) {\n this._prefix = value;\n }\n }\n\n public get value(): any {\n return this._selectedEntity;\n }\n\n public set value(value: any) {\n if (value !== this._selectedEntity) {\n this.searchFormControl.setValue(value);\n this.setValue(value);\n }\n }\n\n public get empty(): boolean {\n const n = this.searchFormControl.value;\n return !n;\n }\n\n @HostBinding('class.floating')\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null);\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n // If prefix defined, usually this is used for a code scanner.\n // The goal is to select the entity in direct way.\n if (this._prefix) {\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n filter((value) => typeof value === 'string'),\n filter((value) => value.startsWith(this._prefix)),\n tap(() => (this.value = null)),\n tap(() => (this.isLoading = true)),\n switchMap((value: string) => this._dataSource?.onFilter(value.replace(this._prefix, '').trim()) ?? of(null))\n )\n .subscribe((resultSet) => {\n if (resultSet?.list) {\n if (resultSet.list.length === 1) {\n this.value = resultSet.list[0];\n } else {\n this.filteredEntities = resultSet.list;\n }\n }\n this.isLoading = false;\n });\n }\n\n // This is the search functionality when search by human.\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n tap(() => (this.filteredEntities = [])),\n filter((value: any) => typeof value === 'string'),\n tap(() => {\n this.setValue(null);\n }),\n filter((value) => value.toString().length >= 3),\n tap(() => (this.isLoading = true)),\n switchMap((value: string) => this._dataSource?.onFilter(value) ?? of(null))\n )\n .subscribe((resultSet) => {\n if (resultSet?.list) {\n this.filteredEntities = resultSet.list;\n }\n this.isLoading = false;\n });\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n ngDoCheck(): void {\n if (this.ngControl != null) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) ?? false;\n this.stateChanges.next();\n }\n }\n\n public clear(): void {\n this.filteredEntities = [];\n this.searchFormControl.reset(null);\n }\n\n public focus(): void {\n this.elRef.nativeElement.querySelector('input')?.focus();\n }\n\n public onEntitySelected(event: MatAutocompleteSelectedEvent): void {\n this.value = event.option.value;\n this.filteredEntities = [];\n }\n\n public onEntityActivated(event: MatAutocompleteActivatedEvent): void {\n this.activatedValue = event.option?.value;\n }\n\n public onEntityClosed(): void {\n if (this.activatedValue) {\n this.value = this.activatedValue;\n this.activatedValue = null;\n }\n }\n\n public reset(): void {\n this.value = null;\n }\n\n public onFocusOut(): void {\n if (this.filteredEntities.length === 1) {\n this.activatedValue = this.filteredEntities[0];\n this.value = this.filteredEntities[0];\n }\n }\n\n public onTouched(): void {\n this._onTouched();\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: any): void {\n this._propagateChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public writeValue(obj: any): void {\n this.clear();\n this.value = obj;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(event: MouseEvent): void {\n if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n this.focus();\n }\n }\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const selection: any = control.value;\n if (typeof selection === 'string') {\n return { incorrect: true };\n }\n return null;\n }\n\n private _propagateChange = (_: any): void => {};\n\n private readonly _onTouched = (): void => {};\n\n private setValue(value: any): void {\n if (value !== this._selectedEntity) {\n this._selectedEntity = value;\n this.valueChange.emit(value);\n this._propagateChange(this._selectedEntity);\n this.stateChanges.next();\n }\n }\n}\n","<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let entity of filteredEntities\" [value]=\"entity\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n","import {\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { EntitySelectDataSource } from '@meshmakers/shared-services';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { of, Subject } from 'rxjs';\nimport { MatInput } from '@angular/material/input';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { debounceTime, filter, switchMap, tap } from 'rxjs/operators';\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\n\n@Component({\n selector: 'mm-multiple-entity-select',\n templateUrl: './mm-multiple-entity-select-input.component.html',\n styleUrls: ['./mm-multiple-entity-select-input.component.css'],\n host: {\n '[id]': 'id',\n '[attr.aria-describedby]': 'describedBy'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MmMultipleEntitySelectInputComponent),\n multi: true\n },\n {\n provide: MatFormFieldControl,\n useExisting: MmMultipleEntitySelectInputComponent\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MmMultipleEntitySelectInputComponent),\n multi: true\n }\n ]\n})\nexport class MmMultipleEntitySelectInputComponent\n implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl<any[]>, Validator\n{\n private static nextId = 0;\n public readonly valuesFormControl: FormControl;\n public readonly searchFormControl: FormControl;\n public isLoading: boolean;\n public filteredEntities: any[] = [];\n public ngControl: NgControl | null;\n public errorState: boolean;\n public focused: boolean;\n public readonly stateChanges = new Subject<void>();\n @HostBinding()\n public readonly id = `ia-multiple-entity-select-${MmMultipleEntitySelectInputComponent.nextId++}`;\n\n public valuesChange: EventEmitter<any[]> = new EventEmitter<any[]>();\n private _selectedEntities: any[] | null;\n @ViewChild('input') private readonly inputField: MatInput | null;\n @HostBinding('attr.aria-describedby') private describedBy = '';\n private activatedValue: any;\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\n\n constructor(\n public elRef: ElementRef<HTMLElement>,\n private readonly injector: Injector,\n private readonly fm: FocusMonitor\n ) {\n this.ngControl = null;\n this.errorState = false;\n this.inputField = null;\n this._dataSource = null;\n this._placeholder = '';\n this._prefix = '';\n this._selectedEntities = null;\n\n this.valuesFormControl = new FormControl();\n this.searchFormControl = new FormControl();\n this.isLoading = false;\n this._disabled = false;\n this.focused = false;\n fm.monitor(elRef.nativeElement, true).subscribe((origin) => {\n this.focused = !!origin;\n this.stateChanges.next();\n });\n }\n\n private _dataSource: EntitySelectDataSource<any> | null;\n\n public get dataSource(): EntitySelectDataSource<any> | null {\n return this._dataSource;\n }\n\n @Input()\n public set dataSource(value: EntitySelectDataSource<any> | null) {\n this._dataSource = value;\n }\n\n private _disabled = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(dis) {\n this._disabled = coerceBooleanProperty(dis);\n if (this._disabled) {\n this.searchFormControl.disable();\n } else {\n this.searchFormControl.enable();\n }\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n\n public set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n\n private _required = false;\n\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(req) {\n this._required = coerceBooleanProperty(req);\n if (this.inputField != null) {\n this.inputField.required = this._required;\n }\n this.stateChanges.next();\n }\n\n private _prefix: string;\n\n @Input()\n public get prefix(): string {\n return this._prefix;\n }\n\n public set prefix(value: string) {\n if (value !== this._prefix) {\n this._prefix = value;\n }\n }\n\n public get value(): any[] | null {\n return this._selectedEntities;\n }\n\n public set value(value: any[] | null) {\n if (value !== this._selectedEntities) {\n this.valuesFormControl.setValue(value);\n this.setValue(value);\n }\n }\n\n public get empty(): boolean {\n const n = this.valuesFormControl.value;\n return !n;\n }\n\n @HostBinding('class.floating')\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null);\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n // If prefix defined, usually this is used for a code scanner.\n // The goal is to select the entity in direct way.\n if (this._prefix) {\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n filter((value) => typeof value === 'string'),\n filter((value: string) => value.startsWith(this._prefix)),\n tap(() => (this.isLoading = true)),\n switchMap((value) => this._dataSource?.onFilter(value.replace(this._prefix, '').trim()) ?? of(null))\n )\n .subscribe((resultSet) => {\n if (resultSet?.list) {\n this.filteredEntities = resultSet.list;\n }\n this.isLoading = false;\n });\n }\n\n // This is the search functionality when search by human.\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n tap(() => (this.filteredEntities = [])),\n filter((value) => typeof value === 'string'),\n filter((value) => value.toString().length >= 3),\n tap(() => (this.isLoading = true)),\n switchMap((value: string) => this._dataSource?.onFilter(value) ?? of(null))\n )\n .subscribe((resultSet) => {\n const resultList = new Array<any>();\n\n if (resultSet?.list) {\n resultSet.list.forEach((value1) => {\n if (!this.value?.find((value2) => this._dataSource?.getIdEntity(value2) === this._dataSource?.getIdEntity(value1))) {\n resultList.push(value1);\n }\n });\n }\n\n this.filteredEntities = resultList;\n this.isLoading = false;\n });\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n ngDoCheck(): void {\n if (this.ngControl != null) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) ?? false;\n this.stateChanges.next();\n }\n }\n\n public clear(): void {\n this.filteredEntities = [];\n this.searchFormControl.reset(null);\n }\n\n public focus(): void {\n this.elRef.nativeElement.querySelector('input')?.focus();\n }\n\n public onEntitySelected(event: MatAutocompleteSelectedEvent): void {\n let list = this.value;\n if (list == null) {\n list = new Array<any>();\n }\n list.push(event.option.value);\n this.value = list;\n\n this.filteredEntities = [];\n this.searchFormControl.setValue(null);\n this.valuesFormControl.updateValueAndValidity();\n }\n\n public onEntityActivated(event: MatAutocompleteActivatedEvent): void {\n this.activatedValue = event.option?.value;\n }\n\n public onEntityClosed(): void {\n if (this.activatedValue) {\n this.value = this.activatedValue;\n this.activatedValue = null;\n }\n }\n\n public reset(): void {\n this.value = new Array<any>();\n }\n\n public onFocusOut(): void {\n // if (this.filteredEntities.length === 1) {\n // this.activatedValue = this.filteredEntities[0];\n // this.value = this.filteredEntities[0];\n // }\n }\n\n public onTouched(): void {\n this._onTouched();\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: any): void {\n this._propagateChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public writeValue(obj: any): void {\n this.clear();\n this.value = obj;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(event: MouseEvent): void {\n if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n this.focus();\n }\n }\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const selection: any = control.value;\n if (typeof selection === 'string') {\n return { incorrect: true };\n }\n return null;\n }\n\n remove(value: any): void {\n const list = this.value;\n if (list != null) {\n const index = list.indexOf(value);\n if (index !== -1) {\n list.splice(index, 1);\n }\n this.valuesFormControl.updateValueAndValidity();\n }\n }\n\n private _propagateChange = (_: any[]): void => {};\n\n private readonly _onTouched = (): void => {};\n\n private setValue(values: any[] | null): void {\n if (values !== this._selectedEntities) {\n this._selectedEntities = values;\n this.valuesChange.emit(values ?? []);\n this._propagateChange(this._selectedEntities ?? []);\n this.stateChanges.next();\n }\n }\n}\n","<mat-chip-grid #list>\n <mat-chip-row *ngFor=\"let entity of valuesFormControl.value\"\n (removed)=\"remove(entity)\"\n [editable]=\"false\"\n [aria-description]=\"'press enter to edit ' + dataSource?.onDisplayEntity(entity) ?? null\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n <button matChipRemove [attr.aria-label]=\"'remove ' + dataSource?.onDisplayEntity(entity) ?? null\">\n <mat-icon class=\"material-symbols-outlined\">cancel</mat-icon>\n </button>\n </mat-chip-row>\n <input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"list\"\n matChipInputAddOnBlur=\"true\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [placeholder]=\"placeholder\" matInput>\n <mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let entity of filteredEntities\" [value]=\"entity\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n</mat-chip-grid>\n","export class BreadcrumbData {\n\n constructor(label: string, labelTemplate: string, url: string) {\n this.label = label;\n this.labelTemplate = labelTemplate;\n this.url = url;\n }\n\n label: string;\n labelTemplate: string\n url: string;\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';\nimport { Breadcrumb, BreadcrumbService } from '@meshmakers/shared-services';\nimport { filter, map } from 'rxjs/operators';\nimport { BreadcrumbData } from \"../services/breadcrumbData\";\n\n@Component({\n selector: 'mm-breadcrumb',\n templateUrl: './mm-breadcrumb.component.html',\n styleUrl: './mm-breadcrumb.component.css'\n})\nexport class MmBreadcrumbComponent implements OnInit {\n protected breadcrumbData: BreadcrumbData[] = [];\n @Input() fontSize = '18px';\n @Input() fontColor = '#0275d8';\n @Input() lastLinkColor = '#000';\n @Input() symbol = ' / ';\n\n constructor(\n private readonly activatedRoute: ActivatedRoute,\n private readonly router: Router,\n private readonly breadcrumbService: BreadcrumbService\n ) {\n this.breadCrumbData();\n }\n\n ngOnInit(): void {\n this.breadcrumbService.breadcrumbLabels.subscribe((labelData: object) => {\n Object.entries(labelData).forEach(([key, value]) => {\n this.breadcrumbData.forEach((breadcrumbData: BreadcrumbData) => {\n const labelParams = breadcrumbData.labelTemplate.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n if (labelParam === key) {\n breadcrumbData.label = breadcrumbData.labelTemplate.replace('{{' + labelParam + '}}', (value as string));\n }\n }\n }\n });\n });\n });\n\n this.breadcrumbService.newBreadcrumb.subscribe((breadcrumb: Breadcrumb[]) => {\n if (breadcrumb.length > 0) {\n this.updateData(this.activatedRoute, breadcrumb);\n }\n });\n }\n\n breadCrumbData(): void {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .pipe(map(() => this.activatedRoute))\n .pipe(\n map((route) => {\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n })\n )\n .pipe(filter((route) => route.outlet === PRIMARY_OUTLET))\n .subscribe((route) => {\n this.updateData(route, null);\n });\n }\n\n private updateData(route: ActivatedRoute, newBreadcrumb: Breadcrumb[] | null): void {\n if (route.snapshot.data['breadcrumb'] || newBreadcrumb) {\n const data = route.snapshot.data['breadcrumb'] ? route.snapshot.data['breadcrumb'] : newBreadcrumb;\n const breadcrumb = JSON.parse(JSON.stringify(data)) as Breadcrumb[];\n const breadcrumbData = new Array<BreadcrumbData>();\n breadcrumb.forEach((crumb : Breadcrumb) => {\n const breadcrumbDataItem = new BreadcrumbData(crumb.label, crumb.label, crumb.url);\n breadcrumbData.push(breadcrumbDataItem);\n\n if (breadcrumbDataItem.url) {\n const urlChunks = breadcrumbDataItem.url.split('/');\n for (const chunk of urlChunks) {\n if (chunk.includes(':')) {\n const paramID = chunk.replace(':', '');\n const routerParamID = route.snapshot.params[paramID] as string;\n breadcrumbDataItem.url = crumb.url.replace(`:${paramID}`, routerParamID);\n }\n }\n }\n\n const labelParams = breadcrumbDataItem.labelTemplate.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n const routerParamID = decodeURIComponent((route.snapshot.params[labelParam.trim()] as string));\n if (routerParamID) {\n breadcrumbDataItem.label = breadcrumbDataItem.labelTemplate.replace('{{' + labelParam + '}}', routerParamID);\n } else {\n breadcrumbDataItem.label = breadcrumbDataItem.labelTemplate.replace('{{' + labelParam + '}}', '');\n }\n }\n }\n });\n this.breadcrumbData = breadcrumbData;\n } else {\n this.breadcrumbData = [];\n }\n }\n}\n","<mat-list class=\"mat-bread-crumb-list\" *ngIf=\"breadcrumbData.length\">\n <mat-list-item>\n <span class=\"mat-bread-crumb-spacer\">\n <span *ngFor=\"let item of breadcrumbData; let i = index\">\n <a *ngIf=\"item?.url\" [routerLink]=\"item?.url\"\n class=\"mat-bread-crumb-list-item\">{{ item.label }}</a>\n <span *ngIf=\"!item?.url\" class=\"mat-bread-crumb-list-item\">{{ item.label }}</span>\n <span *ngIf=\"breadcrumbData.length !== i+1\" class=\"mat-bread-crumb-list-item\">{{symbol}}</span>\n </span>\n </span>\n </mat-list-item>\n</mat-list>\n","export enum ButtonTypes {\n Ok,\n Cancel,\n Yes,\n No\n}\n\nexport enum DialogType {\n YesNo = 0,\n YesNoCancel = 1,\n OkCancel = 2,\n Ok = 3\n}\n\nexport interface ConfirmationWindowData {\n title: string;\n message: string;\n dialogType: DialogType;\n}\n\nexport interface ConfirmationWindowResult {\n result: ButtonTypes;\n}\n\nexport interface FileUploadData{\n title: string;\n message: string;\n mimeTypes: string;\n fileExtensions: string | null;\n}\n\nexport interface FileUploadResult {\n success: boolean;\n selectedFile: File | null;\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport {ButtonTypes, ConfirmationWindowData, ConfirmationWindowResult, DialogType} from \"../models/confirmation\";\n\n@Component({\n selector: 'mm-confirmation-window',\n templateUrl: './mm-confirmation-window.component.html',\n styleUrls: ['./mm-confirmation-window.component.css']\n})\nexport class MmConfirmationWindowComponent implements OnInit {\n button1Text: string;\n button1Result: ButtonTypes;\n button2Text: string | null;\n button2Result: ButtonTypes | null;\n button3Text: string | null;\n button3Result: ButtonTypes | null;\n\n constructor(\n private readonly dialogRef: MatDialogRef<MmConfirmationWindowComponent>,\n @Inject(MAT_DIALOG_DATA) public data: ConfirmationWindowData\n ) {\n this.button2Text = null;\n this.button2Result = null;\n this.button3Text = null;\n this.button3Result = null;\n\n if (data.dialogType === DialogType.OkCancel) {\n this.button1Text = 'OK';\n this.button1Result = ButtonTypes.Ok;\n this.button2Text = 'Cancel';\n this.button2Result = ButtonTypes.Cancel;\n } else if (data.dialogType === DialogType.YesNoCancel) {\n this.button1Text = 'Yes';\n this.button1Result = ButtonTypes.Yes;\n this.button2Text = 'No';\n this.button2Result = ButtonTypes.No;\n this.button3Text = 'Cancel';\n this.button3Result = ButtonTypes.Cancel;\n } else if (data.dialogType === DialogType.Ok) {\n this.button1Text = 'OK';\n this.button1Result = ButtonTypes.Ok;\n } else {\n this.button1Text = 'Yes';\n this.button1Result = ButtonTypes.Yes;\n this.button2Text = 'No';\n this.button2Result = ButtonTypes.No;\n }\n }\n\n ngOnInit(): void {}\n\n onButton1(): void {\n this.dialogRef.close(({\n result: this.button1Result\n } as ConfirmationWindowResult));\n }\n\n onButton2(): void {\n this.dialogRef.close(({\n result: this.button2Result\n } as ConfirmationWindowResult));\n }\n\n onButton3(): void {\n this.dialogRef.close(({\n result: this.button3Result\n } as ConfirmationWindowResult));\n }\n}\n","<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>{{data.message}}</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onButton1()\" class=\"primary-button\" mat-flat-button>{{button1Text}}</button>\n <button (click)=\"onButton2()\" *ngIf=\"button2Text\" mat-flat-button>{{button2Text}}</button>\n <button (click)=\"onButton3()\" *ngIf=\"button3Text\" mat-flat-button>{{button3Text}}</button>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { ProgressValue } from '../models/progressValue';\n\nexport interface ProgressWindowData {\n title: string;\n isDeterminate: boolean;\n progress: Observable<ProgressValue>;\n isCancelOperationAvailable: boolean;\n cancelOperation: () => void;\n}\n\nexport type ProgressWindowResult = object\n\n@Component({\n selector: 'mm-progress-window',\n templateUrl: './mm-progress-window.component.html',\n styleUrls: ['./mm-progress-window.component.css']\n})\nexport class MmProgressWindowComponent implements OnInit {\n public statusText: string | null;\n public progressValue: number;\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: ProgressWindowData) {\n this.statusText = null;\n this.progressValue = 0;\n\n data.progress.subscribe((value) => {\n this.statusText = value.statusText;\n this.progressValue = value.progressValue;\n });\n }\n\n ngOnInit(): void {}\n\n onCancelClick(): void {\n this.data.cancelOperation();\n }\n}\n","<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-progress-bar *ngIf=\"data.isDeterminate\" [value]=\"progressValue\" mode=\"determinate\"></mat-progress-bar>\n <mat-progress-bar *ngIf=\"!data.isDeterminate\" mode=\"indeterminate\"></mat-progress-bar>\n <p>{{statusText}}</p>\n </div>\n</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onCancelClick()\" *ngIf=\"data.isCancelOperationAvailable\" mat-button>Cancel</button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { map } from 'rxjs/operators';\nimport {MmConfirmationWindowComponent} from \"../mm-confirmation-window/mm-confirmation-window.component\";\nimport {ButtonTypes, ConfirmationWindowData, ConfirmationWindowResult, DialogType} from \"../models/confirmation\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmationService {\n constructor(private readonly dialog: MatDialog) {}\n\n showYesNoConfirmationDialog(title: string, message: string): Observable<boolean> {\n const dialogRef = this.dialog.open<MmConfirmationWindowComponent, ConfirmationWindowData, ConfirmationWindowResult>(\n MmConfirmationWindowComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n dialogType: DialogType.YesNo\n } as ConfirmationWindowData\n }\n );\n\n return dialogRef.afterClosed().pipe(map((value) => value?.result === ButtonTypes.Yes));\n }\n\n showYesNoCancelConfirmationDialog(title: string, message: string): Observable<ConfirmationWindowResult | undefined> {\n const dialogRef = this.dialog.open<MmConfirmationWindowComponent, ConfirmationWindowData, ConfirmationWindowResult>(\n MmConfirmationWindowComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n dialogType: DialogType.YesNoCancel\n } as ConfirmationWindowData\n }\n );\n\n return dialogRef.afterClosed();\n }\n\n showOkCancelConfirmationDialog(title: string, message: string): Observable<boolean> {\n const dialogRef = this.dialog.open<MmConfirmationWindowComponent, ConfirmationWindowData, ConfirmationWindowResult>(\n MmConfirmationWindowComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n dialogType: DialogType.OkCancel\n } as ConfirmationWindowData\n }\n );\n\n return dialogRef.afterClosed().pipe(map((value) => value?.result === ButtonTypes.Ok));\n }\n\n showOkDialog(title: string, message: string): Observable<boolean> {\n const dialogRef = this.dialog.open<MmConfirmationWindowComponent, ConfirmationWindowData, ConfirmationWindowResult>(\n MmConfirmationWindowComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n dialogType: DialogType.Ok\n } as ConfirmationWindowData\n }\n );\n\n return dialogRef.afterClosed().pipe(map((value) => value?.result === ButtonTypes.Ok));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ProgressValue } from '../models/progressValue';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MmProgressWindowComponent, ProgressWindowData, ProgressWindowResult } from '../mm-progress-window/mm-progress-window.component';\n\n@Injectable()\nexport class ProgressNotifierService {\n private readonly _currentProgressValue: BehaviorSubject<ProgressValue | null>;\n private currentDialogRef: MatDialogRef<MmProgressWindowComponent, ProgressWindowResult> | null;\n\n constructor(private readonly dialog: MatDialog) {\n this._currentProgressValue = new BehaviorSubject<ProgressValue | null>(null);\n this.currentDialogRef = null;\n this._isCanceled = false;\n }\n\n private _isCanceled: boolean;\n\n get isCanceled(): boolean {\n return this._isCanceled;\n }\n\n set isCanceled(value) {\n this._isCanceled = value;\n }\n\n start(title: string, isDeterminate: boolean, isCancelOperationAvailable: boolean): void {\n this.isCanceled = false;\n this.reportProgressDeterminate(0, 100, 'Working...');\n\n this.currentDialogRef = this.dialog.open<MmProgressWindowComponent, ProgressWindowData, ProgressWindowResult>(MmProgressWindowComponent, {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n isDeterminate,\n progress: this._currentProgressValue.asObservable(),\n isCancelOperationAvailable,\n cancelOperation: () => {\n this.reportProgressIndeterminate('Canceling operation...');\n this.isCanceled = true;\n }\n } as ProgressWindowData\n });\n }\n\n reportProgressDeterminate(progressCurrent: number, progressMax: number, statusText: string): void {\n const progressPercentage = (progressMax / 100) * progressCurrent;\n\n this._currentProgressValue.next(({\n statusText,\n progressValue: progressPercentage\n } as ProgressValue));\n }\n\n reportProgressIndeterminate(statusText: string): void {\n this._currentProgressValue.next(({\n statusText,\n progressValue: 0\n } as ProgressValue));\n }\n\n complete(): void {\n this.currentDialogRef?.close();\n }\n}\n","import { Component, ElementRef, Inject, signal, ViewChild } from \"@angular/core\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\nimport { FileUploadData, FileUploadResult } from \"../models/confirmation\";\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\n\n@Component({\n selector: 'mm-mm-file-upload',\n templateUrl: './mm-file-upload.component.html',\n styleUrl: './mm-file-upload.component.css'\n})\nexport class MmFileUploadComponent {\n protected fileName = signal('');\n protected fileSize = signal(0);\n protected uploadProgress = signal(0);\n @ViewChild('fileInput') protected fileInput: ElementRef | undefined;\n protected selectedFile: File | null = null;\n protected uploadSuccess: boolean;\n protected uploadError: boolean;\n\n\n constructor(\n private readonly dialogRef: MatDialogRef<MmFileUploadComponent>,\n @Inject(MAT_DIALOG_DATA) protected data: FileUploadData,\n private snackBar: MatSnackBar\n ) {\n this.uploadError = false;\n this.uploadSuccess = false;\n }\n\n // Handler for file input change\n onFileChange(event: any): void {\n const file = event.target.files[0] as File | null;\n this.uploadFile(file);\n }\n\n // Handler for the file drop\n onFileDrop(event: DragEvent): void {\n event.preventDefault();\n const file = event.dataTransfer?.files[0] as File | null;\n this.uploadFile(file);\n }\n\n // Prevent default dragover behavior\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n }\n\n // Method to handle file upload\n uploadFile(file: File | null): void {\n const allowedMimeTypes = this.data.mimeTypes.split(',').map((mimeType) => mimeType.trim());\n const allowedFileExtensions = this.data.fileExtensions?.split(',').map((mimeType) => mimeType.trim()) ?? [];\n if (!file) {\n return;\n }\n console.log(\"type: \" + file.type);\n console.log(\"name: \" + file.name);\n const extension = file.name.substring(file.name.lastIndexOf('.')).toLowerCase();\n console.log(\"extension: \" + extension);\n\n if (allowedFileExtensions.includes(extension) || allowedMimeTypes.includes(file.type)) {\n this.selectedFile = file;\n this.fileSize.set(Math.round(file.size / 1024)); // Set file size in KB\n\n this.uploadSuccess = true;\n this.uploadError = false;\n this.fileName.set(file.name); // Set image name\n } else {\n this.uploadSuccess = false;\n this.uploadError = true;\n this.snackBar.open('File type not supported!', 'Close', {\n duration: 3000,\n panelClass: 'error',\n });\n }\n }\n\n // Method to remove a file\n removeFile(): void {\n this.selectedFile = null;\n this.fileName.set('');\n this.fileSize.set(0);\n this.uploadSuccess = false;\n this.uploadError = false;\n this.uploadProgress.set(0);\n }\n\n onOk(): void {\n this.dialogRef.close(({\n success: true,\n selectedFile: this.selectedFile\n } as FileUploadResult));\n }\n\n onCancel(): void {\n this.dialogRef.close(({\n success: false,\n selectedFile: null\n } as FileUploadResult));\n }\n}\n","<h1 mat-dialog-title>{{data.title}}</h1>\n<div\n class=\"file-upload-wrapper\"\n [class.success]=\"uploadSuccess\"\n [class.error]=\"uploadError\"\n (drop)=\"onFileDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n>\n <input\n type=\"file\"\n accept=\"{{data.fileExtensions}}\"\n (change)=\"onFileChange($event)\"\n hidden\n #fileInput\n />\n <div class=\"file-dropper\" (click)=\"fileInput.click()\">\n <mat-icon class=\"material-symbols-outlined\">upload</mat-icon>\n <p>{{data.message}}</p>\n <div *ngIf=\"fileName()\">\n <div *ngIf=\"selectedFile\">\n <p>\n <span class=\"image-name\">{{ fileName() }}</span> ({{\n fileSize()\n }} KB)\n </p>\n <mat-icon class=\"material-symbols-outlined delete-icon\" (click)=\"removeFile()\">delete</mat-icon>\n </div>\n </div>\n </div>\n</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onOk()\" [disabled]=\"!selectedFile\" mat-flat-button>Upload</button>\n <button (click)=\"onCancel()\" mat-button>Cancel</button>\n</div>\n\n","import { Injectable } from '@angular/core';\nimport { firstValueFrom } from \"rxjs\";\nimport {\n FileUploadData,\n FileUploadResult\n} from \"../models/confirmation\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { MmFileUploadComponent } from \"../mm-file-upload/mm-file-upload.component\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileUploadService {\n\n constructor(private readonly dialog: MatDialog) { }\n\n\n async showUploadDialog(title: string, message: string, mimeTypes: string, fileExtensions: string | null = null): Promise<File | null> {\n const dialogRef = this.dialog.open<MmFileUploadComponent, FileUploadData, FileUploadResult>(\n MmFileUploadComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n mimeTypes,\n fileExtensions\n } as FileUploadData\n }\n );\n\n const r = await firstValueFrom(dialogRef.afterClosed());\n const success = r?.success ?? false;\n if (success){\n return r?.selectedFile ?? null;\n }\n return null;\n }\n}\n","import { Component, Input } from \"@angular/core\";\nimport {\n MatCell, MatCellDef,\n MatColumnDef,\n MatHeaderCell,\n MatHeaderCellDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n MatTable\n} from \"@angular/material/table\";\nimport { NgForOf } from \"@angular/common\";\n import { MatSort, MatSortHeader } from '@angular/material/sort';\nimport {MatFormFieldModule} from '@angular/material/form-field';\n\n@Component({\n selector: 'mm-table-simple',\n standalone: true,\n imports: [\n MatTable,\n MatColumnDef,\n MatHeaderCell,\n MatCell,\n MatHeaderRow,\n MatRow,\n MatHeaderRowDef,\n MatRowDef,\n MatHeaderCellDef,\n MatCellDef,\n NgForOf,\n MatSort,\n MatSortHeader,\n MatFormFieldModule\n ],\n templateUrl: './mm-table-simple.component.html',\n styleUrl: './mm-table-simple.component.scss'\n})\nexport class MmTableSimpleComponent {\n @Input() sortColumn = '';\n @Input() items: any[] = [];\n @Input() columns: { key: string, header: string }[] = [];\n\n get displayedColumns(): string[] {\n return this.columns.map(col => col.key);\n }\n\n}\n","<div>\n <table mat-table [dataSource]=\"items\" matSort matSortActive=\"{{sortColumn}}\" matSortDirection=\"asc\" matSortDisableClear>\n\n <!-- Dynamic Column Definitions -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.key\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ column.header }}</th>\n <td mat-cell *matCellDef=\"let element\">{{ element[column.key] }}</td>\n </ng-container>\n\n <!-- Header Row -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <!-- Data Rows -->\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</div>\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { MmNotificationBarComponent } from './mm-notification-bar/mm-notification-bar.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MmMessageDetailsComponent } from './mm-message-details/mm-message-details.component';\nimport { MmAutocompleteInputComponent } from './mm-autocomplete-input/mm-autocomplete-input.component';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MmEntitySelectInputComponent } from './mm-entity-select-input/mm-entity-select-input.component';\nimport { MmMultipleEntitySelectInputComponent } from './mm-multiple-entity-select-input/mm-multiple-entity-select-input.component';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIcon, MatIconModule } from \"@angular/material/icon\";\nimport {MmBreadcrumbComponent} from \"./mm-breadcrumb/mm-breadcrumb.component\";\nimport {MmConfirmationWindowComponent} from \"./mm-confirmation-window/mm-confirmation-window.component\";\nimport {MmProgressWindowComponent} from \"./mm-progress-window/mm-progress-window.component\";\nimport { ConfirmationService } from \"./services/confirmation.service\";\nimport { ProgressNotifierService } from \"./services/progress-notifier.service\";\nimport { FileUploadService } from \"./services/file-upload.service\";\nimport { MmFileUploadComponent } from \"./mm-file-upload/mm-file-upload.component\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { RouterLink } from \"@angular/router\";\nimport { MmTableSimpleComponent } from \"./mm-table-simple/mm-table-simple.component\";\n\n@NgModule({\n declarations: [\n MmBreadcrumbComponent,\n MmConfirmationWindowComponent,\n MmProgressWindowComponent,\n MmNotificationBarComponent,\n MmMessageDetailsComponent,\n MmAutocompleteInputComponent,\n MmEntitySelectInputComponent,\n MmMultipleEntitySelectInputComponent,\n MmFileUploadComponent\n ],\n exports: [\n MmBreadcrumbComponent,\n MmConfirmationWindowComponent,\n MmNotificationBarComponent,\n MmAutocompleteInputComponent,\n MmEntitySelectInputComponent,\n MmMultipleEntitySelectInputComponent,\n MmFileUploadComponent,\n MmTableSimpleComponent\n ],\n imports: [\n CommonModule,\n MatToolbarModule,\n MatButtonModule,\n MatSnackBarModule,\n MatDialogModule,\n MatAutocompleteModule,\n MatInputModule,\n MatProgressSpinnerModule,\n MatChipsModule,\n MatIconModule,\n ReactiveFormsModule,\n MatIcon,\n MatListModule,\n RouterLink,\n MmTableSimpleComponent\n ]\n})\nexport class MmSharedUiModule {\n static forRoot(): ModuleWithProviders<MmSharedUiModule> {\n return {\n ngModule: MmSharedUiModule,\n providers: [\n FileUploadService,\n ConfirmationService,\n ProgressNotifierService\n ]\n };\n }\n}\n","import { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\n\nexport type CompareValueFn<TValue> = (value: TValue) => boolean;\n\nfunction isEmptyInputValue(value: any): boolean {\n // we don't check for string here so it also works with arrays\n return value == null || value.length === 0;\n}\n\nexport class CommonValidators {\n public static phoneNumber(): ValidatorFn {\n return Validators.pattern('^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\./0-9]*$');\n }\n\n public static httpUri(): ValidatorFn {\n return Validators.pattern(\n '^(http:\\\\/\\\\/|https:\\\\/\\\\/)([a-zA-Z0-9-_]+\\\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+(\\\\.[a-zA-Z]{2,11}?)*(:[0-9]{2,5}){0,1}\\\\/{0,1}$'\n );\n }\n\n public static ensureSameValue(sourceControlName: string): ValidatorFn {\n return (control: AbstractControl) => {\n const value = control.value;\n return value === control.parent?.get(sourceControlName)?.value ? null : { notSame: true };\n };\n }\n\n public static conditionalRequired<TCompareValue>(\n sourceControlName: string,\n sourceValueCompareExpression: CompareValueFn<TCompareValue>\n ): ValidatorFn {\n return (control: AbstractControl) => {\n if (control.parent != null && sourceValueCompareExpression((control.parent.get(sourceControlName)?.value as TCompareValue))) {\n return isEmptyInputValue(control.value) ? { required: true } : null;\n }\n return null;\n };\n }\n\n public static dependentControls(controlNames: string[]): ValidatorFn {\n return (control: AbstractControl) => {\n controlNames.forEach((controlName) => {\n control.parent?.get(controlName)?.updateValueAndValidity();\n });\n return null;\n };\n }\n}\n","import { FormGroup } from '@angular/forms';\nimport { IsoDateTime } from '@meshmakers/shared-services';\n\nexport abstract class AbstractDetailsComponent<TEntity> {\n private _loading: boolean;\n private readonly _ownerForm: FormGroup;\n private _entity: TEntity | null;\n\n protected constructor(formGroup: FormGroup) {\n this._loading = true;\n this._entity = null;\n this._ownerForm = formGroup;\n }\n\n public get loading(): boolean {\n return this._loading;\n }\n\n public set loading(value: boolean) {\n this._loading = value;\n }\n\n public get entity(): TEntity | null {\n return this._entity;\n }\n\n public set entity(value: TEntity | null) {\n this._entity = value;\n }\n\n public get ownerForm(): FormGroup {\n return this._ownerForm;\n }\n\n public get isLoaded(): boolean {\n return this._entity !== null;\n }\n\n public hasError = (controlName: string, errorName: string): boolean => {\n return this.ownerForm?.controls[controlName].hasError(errorName);\n };\n\n public hasFormError = (errorName: string): boolean => {\n return this.ownerForm?.hasError(errorName);\n };\n\n public updateDateTime(controlName: string): void {\n this.ownerForm?.get(controlName)?.setValue(IsoDateTime.utcToLocalDateTimeIso(IsoDateTime.currentUtcDateTimeIso()));\n }\n\n public copyInputMessage(inputElement: any): void {\n inputElement.select();\n document.execCommand('copy');\n inputElement.setSelectionRange(0, 0);\n }\n\n protected onProgressStarting(): void {\n this._loading = true;\n this.ownerForm?.disable();\n this.ownerForm?.updateValueAndValidity();\n }\n\n protected onProgressCompleted(): void {\n this.ownerForm?.enable();\n this._loading = false;\n }\n}\n","/*\n * Public API Surface of shared-ui\n */\n\nexport * from './lib/mm-shared-ui.module';\nexport * from './lib/mm-notification-bar/mm-notification-bar.component';\nexport * from './lib/mm-autocomplete-input/mm-autocomplete-input.component';\nexport * from './lib/mm-entity-select-input/mm-entity-select-input.component';\nexport * from './lib/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component';\nexport * from './lib/mm-confirmation-window/mm-confirmation-window.component';\nexport * from './lib/mm-breadcrumb/mm-breadcrumb.component';\nexport * from './lib/mm-file-upload/mm-file-upload.component';\nexport * from './lib/mm-table-simple/mm-table-simple.component'\n\nexport * from './lib/services/confirmation.service';\nexport * from './lib/services/progress-notifier.service';\nexport * from './lib/services/file-upload.service';\n\nexport * from './lib/models/confirmation';\nexport * from './lib/models/commonValidators';\nexport * from './lib/models/abstractDetailsComponent';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i5","i4","i6","i7","i8","i9"],"mappings":"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"}
1
+ {"version":3,"file":"meshmakers-shared-ui.mjs","sources":["../../../../projects/meshmakers/shared-ui/src/lib/mm-message-details/mm-message-details.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-message-details/mm-message-details.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-notification-bar/mm-notification-bar.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-notification-bar/mm-notification-bar.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-autocomplete-input/mm-autocomplete-input.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-autocomplete-input/mm-autocomplete-input.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-entity-select-input/mm-entity-select-input.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-entity-select-input/mm-entity-select-input.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component.html","../../../../projects/meshmakers/shared-ui/src/lib/services/breadcrumbData.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-breadcrumb/mm-breadcrumb.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-breadcrumb/mm-breadcrumb.component.html","../../../../projects/meshmakers/shared-ui/src/lib/models/confirmation.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-confirmation-window/mm-confirmation-window.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-confirmation-window/mm-confirmation-window.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-progress-window/mm-progress-window.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-progress-window/mm-progress-window.component.html","../../../../projects/meshmakers/shared-ui/src/lib/services/confirmation.service.ts","../../../../projects/meshmakers/shared-ui/src/lib/services/progress-notifier.service.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-file-upload/mm-file-upload.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-file-upload/mm-file-upload.component.html","../../../../projects/meshmakers/shared-ui/src/lib/services/file-upload.service.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-table-simple/mm-table-simple.component.ts","../../../../projects/meshmakers/shared-ui/src/lib/mm-table-simple/mm-table-simple.component.html","../../../../projects/meshmakers/shared-ui/src/lib/mm-shared-ui.module.ts","../../../../projects/meshmakers/shared-ui/src/lib/models/commonValidators.ts","../../../../projects/meshmakers/shared-ui/src/lib/models/abstractDetailsComponent.ts","../../../../projects/meshmakers/shared-ui/src/public-api.ts","../../../../projects/meshmakers/shared-ui/src/meshmakers-shared-ui.ts"],"sourcesContent":["import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ErrorMessage } from '@meshmakers/shared-services';\n\n@Component({\n selector: 'mm-message-details',\n templateUrl: './mm-message-details.component.html',\n styleUrls: ['./mm-message-details.component.css']\n})\nexport class MmMessageDetailsComponent implements OnInit {\n errorMessage: ErrorMessage;\n\n constructor(\n public dialogRef: MatDialogRef<MmMessageDetailsComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.errorMessage = data.errorMessage;\n }\n\n ngOnInit(): void {}\n}\n","<mat-dialog-content>\n\n <h2>{{errorMessage.title}}</h2>\n <p>{{errorMessage.message}}</p>\n\n\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button class=\"primary-button\" mat-dialog-close mat-flat-button>OK</button>\n</mat-dialog-actions>\n","import { Component, OnInit } from '@angular/core';\nimport { ErrorMessage, MessageService } from '@meshmakers/shared-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MmMessageDetailsComponent } from '../mm-message-details/mm-message-details.component';\n\n@Component({\n selector: 'mm-notification-bar',\n templateUrl: './mm-notification-bar.component.html',\n styleUrls: ['./mm-notification-bar.component.scss']\n})\nexport class MmNotificationBarComponent implements OnInit {\n public errorMessage: ErrorMessage | null;\n\n constructor(\n private readonly messageService: MessageService,\n private readonly dialog: MatDialog\n ) {\n this.errorMessage = null;\n }\n\n ngOnInit(): void {\n this.messageService.getLatestErrorMessage().subscribe((value) => {\n this.errorMessage = value;\n });\n }\n\n onHide(): void {\n this.errorMessage = null;\n }\n\n onShowDetails(): void {\n this.dialog.open(MmMessageDetailsComponent, {\n data: {\n errorMessage: this.errorMessage\n }\n });\n }\n}\n","<mat-toolbar [ngClass]=\"{ 'notification-bar-hidden': !errorMessage }\" class=\"mm-notification-bar-background\">\n <a (click)=\"onShowDetails()\"><span class=\"mat-small\"><u>{{ errorMessage?.title }}</u></span></a>\n\n <!-- This fills the remaining space of the current row -->\n <span class=\"notification-fill-remaining-space\"></span>\n\n <button (click)=\"onHide()\" class=\"mm-notification-bar-button\" mat-fab><mat-icon class=\"material-symbols-outlined\">close</mat-icon></button>\n</mat-toolbar>\n","import {\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from \"@angular/core\";\nimport { MatFormFieldControl } from \"@angular/material/form-field\";\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator\n} from \"@angular/forms\";\nimport { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { debounceTime, filter, map, switchMap, tap } from \"rxjs/operators\";\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from \"@angular/material/autocomplete\";\nimport { MatInput } from \"@angular/material/input\";\nimport { of, Subject } from \"rxjs\";\nimport { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { AutoCompleteDataSource } from \"@meshmakers/shared-services\";\n\n@Component({\n selector: \"mm-autocomplete\",\n templateUrl: \"./mm-autocomplete-input.component.html\",\n styleUrls: [\"./mm-autocomplete-input.component.css\"],\n host: {\n \"[id]\": \"id\",\n \"[attr.aria-describedby]\": \"describedBy\"\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MmAutocompleteInputComponent),\n multi: true\n },\n {\n provide: MatFormFieldControl,\n useExisting: MmAutocompleteInputComponent\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MmAutocompleteInputComponent),\n multi: true\n }\n ]\n})\nexport class MmAutocompleteInputComponent implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl<any>, Validator {\n private static nextId = 0;\n public readonly searchFormControl: FormControl;\n public isLoading: boolean;\n public filteredStrings: string[] = [];\n public ngControl: NgControl | null;\n public errorState: boolean;\n public focused: boolean;\n public readonly stateChanges = new Subject<void>();\n @HostBinding()\n public readonly id = `ia-autocomplete-${MmAutocompleteInputComponent.nextId++}`;\n\n public valueChange: EventEmitter<any> = new EventEmitter<any>();\n private _selectedString: string | null;\n @ViewChild(\"input\") private readonly inputField: MatInput | null;\n @HostBinding(\"attr.aria-describedby\") private describedBy = \"\";\n private activatedValue: any;\n\n constructor(\n public elRef: ElementRef<HTMLElement>,\n private readonly injector: Injector,\n private readonly fm: FocusMonitor\n ) {\n this.ngControl = null;\n this.errorState = false;\n this._selectedString = null;\n this.inputField = null;\n this._dataSource = null;\n this._placeholder = \"\";\n this._prefix = \"\";\n\n this.searchFormControl = new FormControl();\n this.isLoading = false;\n this._disabled = false;\n this.focused = false;\n fm.monitor(elRef.nativeElement, true).subscribe((origin) => {\n this.focused = !!origin;\n this.stateChanges.next();\n });\n }\n\n private _dataSource: AutoCompleteDataSource | null;\n\n public get dataSource(): AutoCompleteDataSource | null {\n return this._dataSource;\n }\n\n @Input()\n public set dataSource(value: AutoCompleteDataSource | null) {\n this._dataSource = value;\n }\n\n private _disabled = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(dis) {\n this._disabled = coerceBooleanProperty(dis);\n if (this._disabled) {\n this.searchFormControl.disable();\n } else {\n this.searchFormControl.enable();\n }\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n\n public set placeholder(plh: string) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n\n private _required = false;\n\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(req) {\n this._required = coerceBooleanProperty(req);\n if (this.inputField != null) {\n this.inputField.required = this._required;\n }\n this.stateChanges.next();\n }\n\n private _prefix: string;\n\n @Input()\n public get prefix(): string {\n return this._prefix;\n }\n\n public set prefix(value: string) {\n if (value !== this._prefix) {\n this._prefix = value;\n }\n }\n\n public get value(): any {\n return this._selectedString;\n }\n\n public set value(value: any) {\n if (value !== this._selectedString) {\n this._selectedString = value;\n this.searchFormControl.setValue(value);\n this.valueChange.emit(value);\n this._propagateChange(this._selectedString);\n this.stateChanges.next();\n }\n }\n\n public get empty(): boolean {\n const n = this.searchFormControl.value;\n return !n;\n }\n\n @HostBinding(\"class.floating\")\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null);\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n // If prefix defined, usually this is used for a code scanner.\n // The goal is to select the entity in direct way.\n if (this._prefix) {\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n filter((value) => typeof value === \"string\"),\n filter((value) => value.startsWith(this._prefix)),\n tap(() => (this.value = null)),\n tap(() => (this.isLoading = true)),\n map((value: string) => this._dataSource?.onPreprocessSearchString(value) ?? \"\"),\n switchMap((value) => this._dataSource?.onFilter(value) ?? of(null))\n )\n .subscribe((resultSet) => {\n if (resultSet?.list != null) {\n if (resultSet.list.length === 1) {\n this.value = resultSet.list[0];\n } else {\n this.filteredStrings = resultSet.list;\n this.searchFormControl.patchValue(resultSet.searchTerm, {\n emitEvent: false\n });\n }\n }\n this.isLoading = false;\n });\n }\n\n // This is the search functionality when search by human.\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n tap((_) => {\n this.filteredStrings = [];\n }),\n filter((value) => value != null && value.toString().length >= 1),\n tap(() => (this.isLoading = true)),\n map((value: string) => this._dataSource?.onPreprocessSearchString(value)),\n tap((value) => (this.value = value)),\n switchMap((value) => {\n if (value !== null) {\n return this._dataSource?.onFilter(String(value)) ?? of(null);\n }\n return of(null);\n })\n )\n .subscribe((resultSet) => {\n if (resultSet?.list != null) {\n this.filteredStrings = resultSet.list;\n this.searchFormControl.patchValue(resultSet.searchTerm, {\n emitEvent: false\n });\n }\n this.isLoading = false;\n });\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n ngDoCheck(): void {\n if (this.ngControl != null) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) ?? false;\n this.stateChanges.next();\n }\n }\n\n public clear(): void {\n this.filteredStrings = [];\n this.searchFormControl.reset(null);\n }\n\n public focus(): void {\n this.elRef.nativeElement.querySelector(\"input\")?.focus();\n }\n\n public onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n this.value = event.option.value;\n this.filteredStrings = [];\n }\n\n public onOptionActivated(event: MatAutocompleteActivatedEvent): void {\n this.activatedValue = event.option?.value;\n }\n\n public onAutoCompleteClosed(): void {\n if (this.activatedValue) {\n this.value = this.activatedValue;\n this.activatedValue = null;\n }\n }\n\n public reset(): void {\n this.value = null;\n }\n\n public onFocusOut(): void {\n if (this.filteredStrings.length === 1) {\n this.activatedValue = this.filteredStrings[0];\n this.value = this.filteredStrings[0];\n }\n }\n\n public onTouched(): void {\n this._onTouched();\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: any): void {\n this._propagateChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public writeValue(obj: any): void {\n this.clear();\n this.value = obj;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(event: MouseEvent): void {\n if ((event.target as Element).tagName.toLowerCase() !== \"input\") {\n this.focus();\n }\n }\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(\" \");\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const selection: any = control.value;\n if (typeof selection === \"string\" && selection.length < 1) {\n return { incorrect: true };\n }\n return null;\n }\n\n private _propagateChange = (_: any): void => {\n };\n\n private readonly _onTouched = (): void => {\n };\n}\n","<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\"\n (closed)=\"onAutoCompleteClosed()\" (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let str of filteredStrings\" [value]=\"str\">\n {{str}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n","import {\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from \"@angular/core\";\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator\n} from \"@angular/forms\";\nimport { MatFormFieldControl } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { EntitySelectDataSource, PagedResultDto } from \"@meshmakers/shared-services\";\nimport { of, Subject } from \"rxjs\";\nimport { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { catchError, debounceTime, filter, switchMap, tap } from \"rxjs/operators\";\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from \"@angular/material/autocomplete\";\nimport { coerceBooleanProperty } from \"@angular/cdk/coercion\";\n\n@Component({\n selector: \"mm-entity-select\",\n templateUrl: \"./mm-entity-select-input.component.html\",\n styleUrls: [\"./mm-entity-select-input.component.css\"],\n host: {\n \"[id]\": \"id\",\n \"[attr.aria-describedby]\": \"describedBy\"\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MmEntitySelectInputComponent),\n multi: true\n },\n {\n provide: MatFormFieldControl,\n useExisting: MmEntitySelectInputComponent\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MmEntitySelectInputComponent),\n multi: true\n }\n ]\n})\nexport class MmEntitySelectInputComponent implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl<any>, Validator {\n private static nextId = 0;\n public readonly searchFormControl: FormControl;\n public isLoading: boolean;\n public filteredEntities: any[] = [];\n public ngControl: NgControl | null;\n public errorState: boolean;\n public focused: boolean;\n public readonly stateChanges = new Subject<void>();\n @HostBinding()\n public readonly id = `ia-entity-select-${MmEntitySelectInputComponent.nextId++}`;\n\n public valueChange: EventEmitter<any> = new EventEmitter<any>();\n private _selectedEntity: any;\n @ViewChild(\"input\") private readonly inputField: MatInput | null;\n @HostBinding(\"attr.aria-describedby\") private describedBy = \"\";\n private activatedValue: any;\n\n constructor(\n public elRef: ElementRef<HTMLElement>,\n private readonly injector: Injector,\n private readonly fm: FocusMonitor\n ) {\n this.ngControl = null;\n this.errorState = false;\n this.inputField = null;\n this._dataSource = null;\n this._placeholder = \"\";\n this._prefix = \"\";\n\n this.searchFormControl = new FormControl();\n this.isLoading = false;\n this._disabled = false;\n this.focused = false;\n fm.monitor(elRef.nativeElement, true).subscribe((origin) => {\n this.focused = !!origin;\n this.stateChanges.next();\n });\n }\n\n private _dataSource: EntitySelectDataSource<any> | null;\n\n public get dataSource(): EntitySelectDataSource<any> | null {\n return this._dataSource;\n }\n\n @Input()\n public set dataSource(value: EntitySelectDataSource<any> | null) {\n this._dataSource = value;\n }\n\n private _disabled = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(dis) {\n this._disabled = coerceBooleanProperty(dis);\n if (this._disabled) {\n this.searchFormControl.disable();\n } else {\n this.searchFormControl.enable();\n }\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n\n public set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n\n private _required = false;\n\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(req) {\n this._required = coerceBooleanProperty(req);\n if (this.inputField != null) {\n this.inputField.required = this._required;\n }\n this.stateChanges.next();\n }\n\n private _prefix: string;\n\n @Input()\n public get prefix(): string {\n return this._prefix;\n }\n\n public set prefix(value: string) {\n if (value !== this._prefix) {\n this._prefix = value;\n }\n }\n\n public get value(): any {\n return this._selectedEntity;\n }\n\n public set value(value: any) {\n if (value !== this._selectedEntity) {\n this.searchFormControl.setValue(value);\n this.setValue(value);\n }\n }\n\n public get empty(): boolean {\n const n = this.searchFormControl.value;\n return !n;\n }\n\n @HostBinding(\"class.floating\")\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null);\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n // If prefix defined, usually this is used for a code scanner.\n // The goal is to select the entity in direct way.\n if (this._prefix) {\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n filter((value) => typeof value === \"string\"),\n filter((value) => value.startsWith(this._prefix)),\n tap(() => (this.value = null)),\n tap(() => (this.isLoading = true))\n )\n .subscribe(async (value: string) => {\n\n if (!this._dataSource)\n {\n this.isLoading = false;\n return;\n }\n\n const resultSet = await this._dataSource?.onFilter(value.replace(this._prefix, \"\").trim());\n\n if (resultSet.list) {\n if (resultSet.list.length === 1) {\n this.value = resultSet.list[0];\n } else {\n this.filteredEntities = resultSet.list;\n }\n }\n this.isLoading = false;\n });\n }\n\n // This is the search functionality when search by human.\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n tap(() => (this.filteredEntities = [])),\n filter((value: any) => typeof value === \"string\"),\n tap(() => {\n this.setValue(null);\n }),\n filter((value) => value.toString().length >= 3),\n tap(() => (this.isLoading = true))\n )\n .subscribe(async (value : string) => {\n\n if (!this._dataSource)\n {\n this.isLoading = false;\n return;\n }\n\n const resultSet = await this._dataSource.onFilter(value);\n\n if (resultSet?.list) {\n this.filteredEntities = resultSet.list;\n }\n this.isLoading = false;\n });\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n ngDoCheck(): void {\n if (this.ngControl != null) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) ?? false;\n this.stateChanges.next();\n }\n }\n\n public clear(): void {\n this.filteredEntities = [];\n this.searchFormControl.reset(null);\n }\n\n public focus(): void {\n this.elRef.nativeElement.querySelector(\"input\")?.focus();\n }\n\n public onEntitySelected(event: MatAutocompleteSelectedEvent): void {\n this.value = event.option.value;\n this.filteredEntities = [];\n }\n\n public onEntityActivated(event: MatAutocompleteActivatedEvent): void {\n this.activatedValue = event.option?.value;\n }\n\n public onEntityClosed(): void {\n if (this.activatedValue) {\n this.value = this.activatedValue;\n this.activatedValue = null;\n }\n }\n\n public reset(): void {\n this.value = null;\n }\n\n public onFocusOut(): void {\n if (this.filteredEntities.length === 1) {\n this.activatedValue = this.filteredEntities[0];\n this.value = this.filteredEntities[0];\n }\n }\n\n public onTouched(): void {\n this._onTouched();\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: any): void {\n this._propagateChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public writeValue(obj: any): void {\n this.clear();\n this.value = obj;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(event: MouseEvent): void {\n if ((event.target as Element).tagName.toLowerCase() !== \"input\") {\n this.focus();\n }\n }\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(\" \");\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const selection: any = control.value;\n if (typeof selection === \"string\") {\n return { incorrect: true };\n }\n return null;\n }\n\n private _propagateChange = (_: any): void => {\n };\n\n private readonly _onTouched = (): void => {\n };\n\n private setValue(value: any): void {\n if (value !== this._selectedEntity) {\n this._selectedEntity = value;\n this.valueChange.emit(value);\n this._propagateChange(this._selectedEntity);\n this.stateChanges.next();\n }\n }\n}\n","<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let entity of filteredEntities\" [value]=\"entity\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n","import {\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { EntitySelectDataSource } from '@meshmakers/shared-services';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { of, Subject } from 'rxjs';\nimport { MatInput } from '@angular/material/input';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { debounceTime, filter, switchMap, tap } from 'rxjs/operators';\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\n\n@Component({\n selector: 'mm-multiple-entity-select',\n templateUrl: './mm-multiple-entity-select-input.component.html',\n styleUrls: ['./mm-multiple-entity-select-input.component.css'],\n host: {\n '[id]': 'id',\n '[attr.aria-describedby]': 'describedBy'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MmMultipleEntitySelectInputComponent),\n multi: true\n },\n {\n provide: MatFormFieldControl,\n useExisting: MmMultipleEntitySelectInputComponent\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MmMultipleEntitySelectInputComponent),\n multi: true\n }\n ]\n})\nexport class MmMultipleEntitySelectInputComponent\n implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl<any[]>, Validator\n{\n private static nextId = 0;\n public readonly valuesFormControl: FormControl;\n public readonly searchFormControl: FormControl;\n public isLoading: boolean;\n public filteredEntities: any[] = [];\n public ngControl: NgControl | null;\n public errorState: boolean;\n public focused: boolean;\n public readonly stateChanges = new Subject<void>();\n @HostBinding()\n public readonly id = `ia-multiple-entity-select-${MmMultipleEntitySelectInputComponent.nextId++}`;\n\n public valuesChange: EventEmitter<any[]> = new EventEmitter<any[]>();\n private _selectedEntities: any[] | null;\n @ViewChild('input') private readonly inputField: MatInput | null;\n @HostBinding('attr.aria-describedby') private describedBy = '';\n private activatedValue: any;\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\n\n constructor(\n public elRef: ElementRef<HTMLElement>,\n private readonly injector: Injector,\n private readonly fm: FocusMonitor\n ) {\n this.ngControl = null;\n this.errorState = false;\n this.inputField = null;\n this._dataSource = null;\n this._placeholder = '';\n this._prefix = '';\n this._selectedEntities = null;\n\n this.valuesFormControl = new FormControl();\n this.searchFormControl = new FormControl();\n this.isLoading = false;\n this._disabled = false;\n this.focused = false;\n fm.monitor(elRef.nativeElement, true).subscribe((origin) => {\n this.focused = !!origin;\n this.stateChanges.next();\n });\n }\n\n private _dataSource: EntitySelectDataSource<any> | null;\n\n public get dataSource(): EntitySelectDataSource<any> | null {\n return this._dataSource;\n }\n\n @Input()\n public set dataSource(value: EntitySelectDataSource<any> | null) {\n this._dataSource = value;\n }\n\n private _disabled = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(dis) {\n this._disabled = coerceBooleanProperty(dis);\n if (this._disabled) {\n this.searchFormControl.disable();\n } else {\n this.searchFormControl.enable();\n }\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n\n public set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n\n private _required = false;\n\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(req) {\n this._required = coerceBooleanProperty(req);\n if (this.inputField != null) {\n this.inputField.required = this._required;\n }\n this.stateChanges.next();\n }\n\n private _prefix: string;\n\n @Input()\n public get prefix(): string {\n return this._prefix;\n }\n\n public set prefix(value: string) {\n if (value !== this._prefix) {\n this._prefix = value;\n }\n }\n\n public get value(): any[] | null {\n return this._selectedEntities;\n }\n\n public set value(value: any[] | null) {\n if (value !== this._selectedEntities) {\n this.valuesFormControl.setValue(value);\n this.setValue(value);\n }\n }\n\n public get empty(): boolean {\n const n = this.valuesFormControl.value;\n return !n;\n }\n\n @HostBinding('class.floating')\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null);\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n // If prefix defined, usually this is used for a code scanner.\n // The goal is to select the entity in direct way.\n if (this._prefix) {\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n filter((value) => typeof value === 'string'),\n filter((value: string) => value.startsWith(this._prefix)),\n tap(() => (this.isLoading = true)),\n switchMap((value) => this._dataSource?.onFilter(value.replace(this._prefix, '').trim()) ?? of(null))\n )\n .subscribe((resultSet) => {\n if (resultSet?.list) {\n this.filteredEntities = resultSet.list;\n }\n this.isLoading = false;\n });\n }\n\n // This is the search functionality when search by human.\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n tap(() => (this.filteredEntities = [])),\n filter((value) => typeof value === 'string'),\n filter((value) => value.toString().length >= 3),\n tap(() => (this.isLoading = true)),\n switchMap((value: string) => this._dataSource?.onFilter(value) ?? of(null))\n )\n .subscribe((resultSet) => {\n const resultList = new Array<any>();\n\n if (resultSet?.list) {\n resultSet.list.forEach((value1) => {\n if (!this.value?.find((value2) => this._dataSource?.getIdEntity(value2) === this._dataSource?.getIdEntity(value1))) {\n resultList.push(value1);\n }\n });\n }\n\n this.filteredEntities = resultList;\n this.isLoading = false;\n });\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n ngDoCheck(): void {\n if (this.ngControl != null) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) ?? false;\n this.stateChanges.next();\n }\n }\n\n public clear(): void {\n this.filteredEntities = [];\n this.searchFormControl.reset(null);\n }\n\n public focus(): void {\n this.elRef.nativeElement.querySelector('input')?.focus();\n }\n\n public onEntitySelected(event: MatAutocompleteSelectedEvent): void {\n let list = this.value;\n if (list == null) {\n list = new Array<any>();\n }\n list.push(event.option.value);\n this.value = list;\n\n this.filteredEntities = [];\n this.searchFormControl.setValue(null);\n this.valuesFormControl.updateValueAndValidity();\n }\n\n public onEntityActivated(event: MatAutocompleteActivatedEvent): void {\n this.activatedValue = event.option?.value;\n }\n\n public onEntityClosed(): void {\n if (this.activatedValue) {\n this.value = this.activatedValue;\n this.activatedValue = null;\n }\n }\n\n public reset(): void {\n this.value = new Array<any>();\n }\n\n public onFocusOut(): void {\n // if (this.filteredEntities.length === 1) {\n // this.activatedValue = this.filteredEntities[0];\n // this.value = this.filteredEntities[0];\n // }\n }\n\n public onTouched(): void {\n this._onTouched();\n this.stateChanges.next();\n }\n\n public registerOnChange(fn: any): void {\n this._propagateChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public writeValue(obj: any): void {\n this.clear();\n this.value = obj;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onContainerClick(event: MouseEvent): void {\n if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n this.focus();\n }\n }\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const selection: any = control.value;\n if (typeof selection === 'string') {\n return { incorrect: true };\n }\n return null;\n }\n\n remove(value: any): void {\n const list = this.value;\n if (list != null) {\n const index = list.indexOf(value);\n if (index !== -1) {\n list.splice(index, 1);\n }\n this.valuesFormControl.updateValueAndValidity();\n }\n }\n\n private _propagateChange = (_: any[]): void => {};\n\n private readonly _onTouched = (): void => {};\n\n private setValue(values: any[] | null): void {\n if (values !== this._selectedEntities) {\n this._selectedEntities = values;\n this.valuesChange.emit(values ?? []);\n this._propagateChange(this._selectedEntities ?? []);\n this.stateChanges.next();\n }\n }\n}\n","<mat-chip-grid #list>\n <mat-chip-row *ngFor=\"let entity of valuesFormControl.value\"\n (removed)=\"remove(entity)\"\n [editable]=\"false\"\n [aria-description]=\"'press enter to edit ' + dataSource?.onDisplayEntity(entity) ?? null\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n <button matChipRemove [attr.aria-label]=\"'remove ' + dataSource?.onDisplayEntity(entity) ?? null\">\n <mat-icon class=\"material-symbols-outlined\">cancel</mat-icon>\n </button>\n </mat-chip-row>\n <input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"list\"\n matChipInputAddOnBlur=\"true\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [placeholder]=\"placeholder\" matInput>\n <mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let entity of filteredEntities\" [value]=\"entity\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n</mat-chip-grid>\n","export class BreadcrumbData {\n\n constructor(label: string, labelTemplate: string, url: string) {\n this.label = label;\n this.labelTemplate = labelTemplate;\n this.url = url;\n }\n\n label: string;\n labelTemplate: string\n url: string;\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';\nimport { Breadcrumb, BreadcrumbService } from '@meshmakers/shared-services';\nimport { filter, map } from 'rxjs/operators';\nimport { BreadcrumbData } from \"../services/breadcrumbData\";\n\n@Component({\n selector: 'mm-breadcrumb',\n templateUrl: './mm-breadcrumb.component.html',\n styleUrl: './mm-breadcrumb.component.css'\n})\nexport class MmBreadcrumbComponent implements OnInit {\n protected breadcrumbData: BreadcrumbData[] = [];\n @Input() fontSize = '18px';\n @Input() fontColor = '#0275d8';\n @Input() lastLinkColor = '#000';\n @Input() symbol = ' / ';\n\n constructor(\n private readonly activatedRoute: ActivatedRoute,\n private readonly router: Router,\n private readonly breadcrumbService: BreadcrumbService\n ) {\n this.breadCrumbData();\n }\n\n ngOnInit(): void {\n this.breadcrumbService.breadcrumbLabels.subscribe((labelData: object) => {\n Object.entries(labelData).forEach(([key, value]) => {\n this.breadcrumbData.forEach((breadcrumbData: BreadcrumbData) => {\n const labelParams = breadcrumbData.labelTemplate.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n if (labelParam === key) {\n breadcrumbData.label = breadcrumbData.labelTemplate.replace('{{' + labelParam + '}}', (value as string));\n }\n }\n }\n });\n });\n });\n\n this.breadcrumbService.newBreadcrumb.subscribe((breadcrumb: Breadcrumb[]) => {\n if (breadcrumb.length > 0) {\n this.updateData(this.activatedRoute, breadcrumb);\n }\n });\n }\n\n breadCrumbData(): void {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .pipe(map(() => this.activatedRoute))\n .pipe(\n map((route) => {\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n })\n )\n .pipe(filter((route) => route.outlet === PRIMARY_OUTLET))\n .subscribe((route) => {\n this.updateData(route, null);\n });\n }\n\n private updateData(route: ActivatedRoute, newBreadcrumb: Breadcrumb[] | null): void {\n if (route.snapshot.data['breadcrumb'] || newBreadcrumb) {\n const data = route.snapshot.data['breadcrumb'] ? route.snapshot.data['breadcrumb'] : newBreadcrumb;\n const breadcrumb = JSON.parse(JSON.stringify(data)) as Breadcrumb[];\n const breadcrumbData = new Array<BreadcrumbData>();\n breadcrumb.forEach((crumb : Breadcrumb) => {\n const breadcrumbDataItem = new BreadcrumbData(crumb.label, crumb.label, crumb.url);\n breadcrumbData.push(breadcrumbDataItem);\n\n if (breadcrumbDataItem.url) {\n const urlChunks = breadcrumbDataItem.url.split('/');\n for (const chunk of urlChunks) {\n if (chunk.includes(':')) {\n const paramID = chunk.replace(':', '');\n const routerParamID = route.snapshot.params[paramID] as string;\n breadcrumbDataItem.url = crumb.url.replace(`:${paramID}`, routerParamID);\n }\n }\n }\n\n const labelParams = breadcrumbDataItem.labelTemplate.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n const routerParamID = decodeURIComponent((route.snapshot.params[labelParam.trim()] as string));\n if (routerParamID) {\n breadcrumbDataItem.label = breadcrumbDataItem.labelTemplate.replace('{{' + labelParam + '}}', routerParamID);\n } else {\n breadcrumbDataItem.label = breadcrumbDataItem.labelTemplate.replace('{{' + labelParam + '}}', '');\n }\n }\n }\n });\n this.breadcrumbData = breadcrumbData;\n } else {\n this.breadcrumbData = [];\n }\n }\n}\n","<mat-list class=\"mat-bread-crumb-list\" *ngIf=\"breadcrumbData.length\">\n <mat-list-item>\n <span class=\"mat-bread-crumb-spacer\">\n <span *ngFor=\"let item of breadcrumbData; let i = index\">\n <a *ngIf=\"item?.url\" [routerLink]=\"item?.url\"\n class=\"mat-bread-crumb-list-item\">{{ item.label }}</a>\n <span *ngIf=\"!item?.url\" class=\"mat-bread-crumb-list-item\">{{ item.label }}</span>\n <span *ngIf=\"breadcrumbData.length !== i+1\" class=\"mat-bread-crumb-list-item\">{{symbol}}</span>\n </span>\n </span>\n </mat-list-item>\n</mat-list>\n","export enum ButtonTypes {\n Ok,\n Cancel,\n Yes,\n No\n}\n\nexport enum DialogType {\n YesNo = 0,\n YesNoCancel = 1,\n OkCancel = 2,\n Ok = 3\n}\n\nexport interface ConfirmationWindowData {\n title: string;\n message: string;\n dialogType: DialogType;\n}\n\nexport interface ConfirmationWindowResult {\n result: ButtonTypes;\n}\n\nexport interface FileUploadData{\n title: string;\n message: string;\n mimeTypes: string;\n fileExtensions: string | null;\n}\n\nexport interface FileUploadResult {\n success: boolean;\n selectedFile: File | null;\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport {ButtonTypes, ConfirmationWindowData, ConfirmationWindowResult, DialogType} from \"../models/confirmation\";\n\n@Component({\n selector: 'mm-confirmation-window',\n templateUrl: './mm-confirmation-window.component.html',\n styleUrls: ['./mm-confirmation-window.component.css']\n})\nexport class MmConfirmationWindowComponent implements OnInit {\n button1Text: string;\n button1Result: ButtonTypes;\n button2Text: string | null;\n button2Result: ButtonTypes | null;\n button3Text: string | null;\n button3Result: ButtonTypes | null;\n\n constructor(\n private readonly dialogRef: MatDialogRef<MmConfirmationWindowComponent>,\n @Inject(MAT_DIALOG_DATA) public data: ConfirmationWindowData\n ) {\n this.button2Text = null;\n this.button2Result = null;\n this.button3Text = null;\n this.button3Result = null;\n\n if (data.dialogType === DialogType.OkCancel) {\n this.button1Text = 'OK';\n this.button1Result = ButtonTypes.Ok;\n this.button2Text = 'Cancel';\n this.button2Result = ButtonTypes.Cancel;\n } else if (data.dialogType === DialogType.YesNoCancel) {\n this.button1Text = 'Yes';\n this.button1Result = ButtonTypes.Yes;\n this.button2Text = 'No';\n this.button2Result = ButtonTypes.No;\n this.button3Text = 'Cancel';\n this.button3Result = ButtonTypes.Cancel;\n } else if (data.dialogType === DialogType.Ok) {\n this.button1Text = 'OK';\n this.button1Result = ButtonTypes.Ok;\n } else {\n this.button1Text = 'Yes';\n this.button1Result = ButtonTypes.Yes;\n this.button2Text = 'No';\n this.button2Result = ButtonTypes.No;\n }\n }\n\n ngOnInit(): void {}\n\n onButton1(): void {\n this.dialogRef.close(({\n result: this.button1Result\n } as ConfirmationWindowResult));\n }\n\n onButton2(): void {\n this.dialogRef.close(({\n result: this.button2Result\n } as ConfirmationWindowResult));\n }\n\n onButton3(): void {\n this.dialogRef.close(({\n result: this.button3Result\n } as ConfirmationWindowResult));\n }\n}\n","<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>{{data.message}}</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onButton1()\" class=\"primary-button\" mat-flat-button>{{button1Text}}</button>\n <button (click)=\"onButton2()\" *ngIf=\"button2Text\" mat-flat-button>{{button2Text}}</button>\n <button (click)=\"onButton3()\" *ngIf=\"button3Text\" mat-flat-button>{{button3Text}}</button>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { ProgressValue } from '../models/progressValue';\n\nexport interface ProgressWindowData {\n title: string;\n isDeterminate: boolean;\n progress: Observable<ProgressValue>;\n isCancelOperationAvailable: boolean;\n cancelOperation: () => void;\n}\n\nexport type ProgressWindowResult = object\n\n@Component({\n selector: 'mm-progress-window',\n templateUrl: './mm-progress-window.component.html',\n styleUrls: ['./mm-progress-window.component.css']\n})\nexport class MmProgressWindowComponent implements OnInit {\n public statusText: string | null;\n public progressValue: number;\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: ProgressWindowData) {\n this.statusText = null;\n this.progressValue = 0;\n\n data.progress.subscribe((value) => {\n this.statusText = value.statusText;\n this.progressValue = value.progressValue;\n });\n }\n\n ngOnInit(): void {}\n\n onCancelClick(): void {\n this.data.cancelOperation();\n }\n}\n","<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-progress-bar *ngIf=\"data.isDeterminate\" [value]=\"progressValue\" mode=\"determinate\"></mat-progress-bar>\n <mat-progress-bar *ngIf=\"!data.isDeterminate\" mode=\"indeterminate\"></mat-progress-bar>\n <p>{{statusText}}</p>\n </div>\n</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onCancelClick()\" *ngIf=\"data.isCancelOperationAvailable\" mat-button>Cancel</button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { map } from 'rxjs/operators';\nimport {MmConfirmationWindowComponent} from \"../mm-confirmation-window/mm-confirmation-window.component\";\nimport {ButtonTypes, ConfirmationWindowData, ConfirmationWindowResult, DialogType} from \"../models/confirmation\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmationService {\n constructor(private readonly dialog: MatDialog) {}\n\n showYesNoConfirmationDialog(title: string, message: string): Observable<boolean> {\n const dialogRef = this.dialog.open<MmConfirmationWindowComponent, ConfirmationWindowData, ConfirmationWindowResult>(\n MmConfirmationWindowComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n dialogType: DialogType.YesNo\n } as ConfirmationWindowData\n }\n );\n\n return dialogRef.afterClosed().pipe(map((value) => value?.result === ButtonTypes.Yes));\n }\n\n showYesNoCancelConfirmationDialog(title: string, message: string): Observable<ConfirmationWindowResult | undefined> {\n const dialogRef = this.dialog.open<MmConfirmationWindowComponent, ConfirmationWindowData, ConfirmationWindowResult>(\n MmConfirmationWindowComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n dialogType: DialogType.YesNoCancel\n } as ConfirmationWindowData\n }\n );\n\n return dialogRef.afterClosed();\n }\n\n showOkCancelConfirmationDialog(title: string, message: string): Observable<boolean> {\n const dialogRef = this.dialog.open<MmConfirmationWindowComponent, ConfirmationWindowData, ConfirmationWindowResult>(\n MmConfirmationWindowComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n dialogType: DialogType.OkCancel\n } as ConfirmationWindowData\n }\n );\n\n return dialogRef.afterClosed().pipe(map((value) => value?.result === ButtonTypes.Ok));\n }\n\n showOkDialog(title: string, message: string): Observable<boolean> {\n const dialogRef = this.dialog.open<MmConfirmationWindowComponent, ConfirmationWindowData, ConfirmationWindowResult>(\n MmConfirmationWindowComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n dialogType: DialogType.Ok\n } as ConfirmationWindowData\n }\n );\n\n return dialogRef.afterClosed().pipe(map((value) => value?.result === ButtonTypes.Ok));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ProgressValue } from '../models/progressValue';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MmProgressWindowComponent, ProgressWindowData, ProgressWindowResult } from '../mm-progress-window/mm-progress-window.component';\n\n@Injectable()\nexport class ProgressNotifierService {\n private readonly _currentProgressValue: BehaviorSubject<ProgressValue | null>;\n private currentDialogRef: MatDialogRef<MmProgressWindowComponent, ProgressWindowResult> | null;\n\n constructor(private readonly dialog: MatDialog) {\n this._currentProgressValue = new BehaviorSubject<ProgressValue | null>(null);\n this.currentDialogRef = null;\n this._isCanceled = false;\n }\n\n private _isCanceled: boolean;\n\n get isCanceled(): boolean {\n return this._isCanceled;\n }\n\n set isCanceled(value) {\n this._isCanceled = value;\n }\n\n start(title: string, isDeterminate: boolean, isCancelOperationAvailable: boolean): void {\n this.isCanceled = false;\n this.reportProgressDeterminate(0, 100, 'Working...');\n\n this.currentDialogRef = this.dialog.open<MmProgressWindowComponent, ProgressWindowData, ProgressWindowResult>(MmProgressWindowComponent, {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n isDeterminate,\n progress: this._currentProgressValue.asObservable(),\n isCancelOperationAvailable,\n cancelOperation: () => {\n this.reportProgressIndeterminate('Canceling operation...');\n this.isCanceled = true;\n }\n } as ProgressWindowData\n });\n }\n\n reportProgressDeterminate(progressCurrent: number, progressMax: number, statusText: string): void {\n const progressPercentage = (progressMax / 100) * progressCurrent;\n\n this._currentProgressValue.next(({\n statusText,\n progressValue: progressPercentage\n } as ProgressValue));\n }\n\n reportProgressIndeterminate(statusText: string): void {\n this._currentProgressValue.next(({\n statusText,\n progressValue: 0\n } as ProgressValue));\n }\n\n complete(): void {\n this.currentDialogRef?.close();\n }\n}\n","import { Component, ElementRef, Inject, signal, ViewChild } from \"@angular/core\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\nimport { FileUploadData, FileUploadResult } from \"../models/confirmation\";\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\n\n@Component({\n selector: 'mm-mm-file-upload',\n templateUrl: './mm-file-upload.component.html',\n styleUrl: './mm-file-upload.component.css'\n})\nexport class MmFileUploadComponent {\n protected fileName = signal('');\n protected fileSize = signal(0);\n protected uploadProgress = signal(0);\n @ViewChild('fileInput') protected fileInput: ElementRef | undefined;\n protected selectedFile: File | null = null;\n protected uploadSuccess: boolean;\n protected uploadError: boolean;\n\n\n constructor(\n private readonly dialogRef: MatDialogRef<MmFileUploadComponent>,\n @Inject(MAT_DIALOG_DATA) protected data: FileUploadData,\n private snackBar: MatSnackBar\n ) {\n this.uploadError = false;\n this.uploadSuccess = false;\n }\n\n // Handler for file input change\n onFileChange(event: any): void {\n const file = event.target.files[0] as File | null;\n this.uploadFile(file);\n }\n\n // Handler for the file drop\n onFileDrop(event: DragEvent): void {\n event.preventDefault();\n const file = event.dataTransfer?.files[0] as File | null;\n this.uploadFile(file);\n }\n\n // Prevent default dragover behavior\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n }\n\n // Method to handle file upload\n uploadFile(file: File | null): void {\n const allowedMimeTypes = this.data.mimeTypes.split(',').map((mimeType) => mimeType.trim());\n const allowedFileExtensions = this.data.fileExtensions?.split(',').map((mimeType) => mimeType.trim()) ?? [];\n if (!file) {\n return;\n }\n console.log(\"type: \" + file.type);\n console.log(\"name: \" + file.name);\n const extension = file.name.substring(file.name.lastIndexOf('.')).toLowerCase();\n console.log(\"extension: \" + extension);\n\n if (allowedFileExtensions.includes(extension) || allowedMimeTypes.includes(file.type)) {\n this.selectedFile = file;\n this.fileSize.set(Math.round(file.size / 1024)); // Set file size in KB\n\n this.uploadSuccess = true;\n this.uploadError = false;\n this.fileName.set(file.name); // Set image name\n } else {\n this.uploadSuccess = false;\n this.uploadError = true;\n this.snackBar.open('File type not supported!', 'Close', {\n duration: 3000,\n panelClass: 'error',\n });\n }\n }\n\n // Method to remove a file\n removeFile(): void {\n this.selectedFile = null;\n this.fileName.set('');\n this.fileSize.set(0);\n this.uploadSuccess = false;\n this.uploadError = false;\n this.uploadProgress.set(0);\n }\n\n onOk(): void {\n this.dialogRef.close(({\n success: true,\n selectedFile: this.selectedFile\n } as FileUploadResult));\n }\n\n onCancel(): void {\n this.dialogRef.close(({\n success: false,\n selectedFile: null\n } as FileUploadResult));\n }\n}\n","<h1 mat-dialog-title>{{data.title}}</h1>\n<div\n class=\"file-upload-wrapper\"\n [class.success]=\"uploadSuccess\"\n [class.error]=\"uploadError\"\n (drop)=\"onFileDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n>\n <input\n type=\"file\"\n accept=\"{{data.fileExtensions}}\"\n (change)=\"onFileChange($event)\"\n hidden\n #fileInput\n />\n <div class=\"file-dropper\" (click)=\"fileInput.click()\">\n <mat-icon class=\"material-symbols-outlined\">upload</mat-icon>\n <p>{{data.message}}</p>\n <div *ngIf=\"fileName()\">\n <div *ngIf=\"selectedFile\">\n <p>\n <span class=\"image-name\">{{ fileName() }}</span> ({{\n fileSize()\n }} KB)\n </p>\n <mat-icon class=\"material-symbols-outlined delete-icon\" (click)=\"removeFile()\">delete</mat-icon>\n </div>\n </div>\n </div>\n</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onOk()\" [disabled]=\"!selectedFile\" mat-flat-button>Upload</button>\n <button (click)=\"onCancel()\" mat-button>Cancel</button>\n</div>\n\n","import { Injectable } from '@angular/core';\nimport { firstValueFrom } from \"rxjs\";\nimport {\n FileUploadData,\n FileUploadResult\n} from \"../models/confirmation\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { MmFileUploadComponent } from \"../mm-file-upload/mm-file-upload.component\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileUploadService {\n\n constructor(private readonly dialog: MatDialog) { }\n\n\n async showUploadDialog(title: string, message: string, mimeTypes: string, fileExtensions: string | null = null): Promise<File | null> {\n const dialogRef = this.dialog.open<MmFileUploadComponent, FileUploadData, FileUploadResult>(\n MmFileUploadComponent,\n {\n width: '50vw',\n maxWidth: '50vw',\n data: {\n title,\n message,\n mimeTypes,\n fileExtensions\n } as FileUploadData\n }\n );\n\n const r = await firstValueFrom(dialogRef.afterClosed());\n const success = r?.success ?? false;\n if (success){\n return r?.selectedFile ?? null;\n }\n return null;\n }\n}\n","import { Component, Input } from \"@angular/core\";\nimport {\n MatCell, MatCellDef,\n MatColumnDef,\n MatHeaderCell,\n MatHeaderCellDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n MatTable\n} from \"@angular/material/table\";\nimport { NgForOf } from \"@angular/common\";\n import { MatSort, MatSortHeader } from '@angular/material/sort';\nimport {MatFormFieldModule} from '@angular/material/form-field';\n\n@Component({\n selector: 'mm-table-simple',\n standalone: true,\n imports: [\n MatTable,\n MatColumnDef,\n MatHeaderCell,\n MatCell,\n MatHeaderRow,\n MatRow,\n MatHeaderRowDef,\n MatRowDef,\n MatHeaderCellDef,\n MatCellDef,\n NgForOf,\n MatSort,\n MatSortHeader,\n MatFormFieldModule\n ],\n templateUrl: './mm-table-simple.component.html',\n styleUrl: './mm-table-simple.component.scss'\n})\nexport class MmTableSimpleComponent {\n @Input() sortColumn = '';\n @Input() items: any[] = [];\n @Input() columns: { key: string, header: string }[] = [];\n\n get displayedColumns(): string[] {\n return this.columns.map(col => col.key);\n }\n\n}\n","<div>\n <table mat-table [dataSource]=\"items\" matSort matSortActive=\"{{sortColumn}}\" matSortDirection=\"asc\" matSortDisableClear>\n\n <!-- Dynamic Column Definitions -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.key\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ column.header }}</th>\n <td mat-cell *matCellDef=\"let element\">{{ element[column.key] }}</td>\n </ng-container>\n\n <!-- Header Row -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <!-- Data Rows -->\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</div>\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { MmNotificationBarComponent } from './mm-notification-bar/mm-notification-bar.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MmMessageDetailsComponent } from './mm-message-details/mm-message-details.component';\nimport { MmAutocompleteInputComponent } from './mm-autocomplete-input/mm-autocomplete-input.component';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MmEntitySelectInputComponent } from './mm-entity-select-input/mm-entity-select-input.component';\nimport { MmMultipleEntitySelectInputComponent } from './mm-multiple-entity-select-input/mm-multiple-entity-select-input.component';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIcon, MatIconModule } from \"@angular/material/icon\";\nimport {MmBreadcrumbComponent} from \"./mm-breadcrumb/mm-breadcrumb.component\";\nimport {MmConfirmationWindowComponent} from \"./mm-confirmation-window/mm-confirmation-window.component\";\nimport {MmProgressWindowComponent} from \"./mm-progress-window/mm-progress-window.component\";\nimport { ConfirmationService } from \"./services/confirmation.service\";\nimport { ProgressNotifierService } from \"./services/progress-notifier.service\";\nimport { FileUploadService } from \"./services/file-upload.service\";\nimport { MmFileUploadComponent } from \"./mm-file-upload/mm-file-upload.component\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { RouterLink } from \"@angular/router\";\nimport { MmTableSimpleComponent } from \"./mm-table-simple/mm-table-simple.component\";\n\n@NgModule({\n declarations: [\n MmBreadcrumbComponent,\n MmConfirmationWindowComponent,\n MmProgressWindowComponent,\n MmNotificationBarComponent,\n MmMessageDetailsComponent,\n MmAutocompleteInputComponent,\n MmEntitySelectInputComponent,\n MmMultipleEntitySelectInputComponent,\n MmFileUploadComponent\n ],\n exports: [\n MmBreadcrumbComponent,\n MmConfirmationWindowComponent,\n MmNotificationBarComponent,\n MmAutocompleteInputComponent,\n MmEntitySelectInputComponent,\n MmMultipleEntitySelectInputComponent,\n MmFileUploadComponent,\n MmTableSimpleComponent\n ],\n imports: [\n CommonModule,\n MatToolbarModule,\n MatButtonModule,\n MatSnackBarModule,\n MatDialogModule,\n MatAutocompleteModule,\n MatInputModule,\n MatProgressSpinnerModule,\n MatChipsModule,\n MatIconModule,\n ReactiveFormsModule,\n MatIcon,\n MatListModule,\n RouterLink,\n MmTableSimpleComponent\n ]\n})\nexport class MmSharedUiModule {\n static forRoot(): ModuleWithProviders<MmSharedUiModule> {\n return {\n ngModule: MmSharedUiModule,\n providers: [\n FileUploadService,\n ConfirmationService,\n ProgressNotifierService\n ]\n };\n }\n}\n","import { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\n\nexport type CompareValueFn<TValue> = (value: TValue) => boolean;\n\nfunction isEmptyInputValue(value: any): boolean {\n // we don't check for string here so it also works with arrays\n return value == null || value.length === 0;\n}\n\nexport class CommonValidators {\n public static phoneNumber(): ValidatorFn {\n return Validators.pattern('^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\./0-9]*$');\n }\n\n public static httpUri(): ValidatorFn {\n return Validators.pattern(\n '^(http:\\\\/\\\\/|https:\\\\/\\\\/)([a-zA-Z0-9-_]+\\\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+(\\\\.[a-zA-Z]{2,11}?)*(:[0-9]{2,5}){0,1}\\\\/{0,1}$'\n );\n }\n\n public static ensureSameValue(sourceControlName: string): ValidatorFn {\n return (control: AbstractControl) => {\n const value = control.value;\n return value === control.parent?.get(sourceControlName)?.value ? null : { notSame: true };\n };\n }\n\n public static conditionalRequired<TCompareValue>(\n sourceControlName: string,\n sourceValueCompareExpression: CompareValueFn<TCompareValue>\n ): ValidatorFn {\n return (control: AbstractControl) => {\n if (control.parent != null && sourceValueCompareExpression((control.parent.get(sourceControlName)?.value as TCompareValue))) {\n return isEmptyInputValue(control.value) ? { required: true } : null;\n }\n return null;\n };\n }\n\n public static dependentControls(controlNames: string[]): ValidatorFn {\n return (control: AbstractControl) => {\n controlNames.forEach((controlName) => {\n control.parent?.get(controlName)?.updateValueAndValidity();\n });\n return null;\n };\n }\n}\n","import { FormGroup } from '@angular/forms';\nimport { IsoDateTime } from '@meshmakers/shared-services';\n\nexport abstract class AbstractDetailsComponent<TEntity> {\n private _loading: boolean;\n private readonly _ownerForm: FormGroup;\n private _entity: TEntity | null;\n\n protected constructor(formGroup: FormGroup) {\n this._loading = true;\n this._entity = null;\n this._ownerForm = formGroup;\n }\n\n public get loading(): boolean {\n return this._loading;\n }\n\n public set loading(value: boolean) {\n this._loading = value;\n }\n\n public get entity(): TEntity | null {\n return this._entity;\n }\n\n public set entity(value: TEntity | null) {\n this._entity = value;\n }\n\n public get ownerForm(): FormGroup {\n return this._ownerForm;\n }\n\n public get isLoaded(): boolean {\n return this._entity !== null;\n }\n\n public hasError = (controlName: string, errorName: string): boolean => {\n return this.ownerForm?.controls[controlName].hasError(errorName);\n };\n\n public hasFormError = (errorName: string): boolean => {\n return this.ownerForm?.hasError(errorName);\n };\n\n public updateDateTime(controlName: string): void {\n this.ownerForm?.get(controlName)?.setValue(IsoDateTime.utcToLocalDateTimeIso(IsoDateTime.currentUtcDateTimeIso()));\n }\n\n public copyInputMessage(inputElement: any): void {\n inputElement.select();\n document.execCommand('copy');\n inputElement.setSelectionRange(0, 0);\n }\n\n protected onProgressStarting(): void {\n this._loading = true;\n this.ownerForm?.disable();\n this.ownerForm?.updateValueAndValidity();\n }\n\n protected onProgressCompleted(): void {\n this.ownerForm?.enable();\n this._loading = false;\n }\n}\n","/*\n * Public API Surface of shared-ui\n */\n\nexport * from './lib/mm-shared-ui.module';\nexport * from './lib/mm-notification-bar/mm-notification-bar.component';\nexport * from './lib/mm-autocomplete-input/mm-autocomplete-input.component';\nexport * from './lib/mm-entity-select-input/mm-entity-select-input.component';\nexport * from './lib/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component';\nexport * from './lib/mm-confirmation-window/mm-confirmation-window.component';\nexport * from './lib/mm-breadcrumb/mm-breadcrumb.component';\nexport * from './lib/mm-file-upload/mm-file-upload.component';\nexport * from './lib/mm-table-simple/mm-table-simple.component'\n\nexport * from './lib/services/confirmation.service';\nexport * from './lib/services/progress-notifier.service';\nexport * from './lib/services/file-upload.service';\n\nexport * from './lib/models/confirmation';\nexport * from './lib/models/commonValidators';\nexport * from './lib/models/abstractDetailsComponent';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i5","i4","i6","i7","i8","i9"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { DoCheck, ElementRef, EventEmitter, Injector, OnDestroy, OnInit } from '@angular/core';
2
- import { AbstractControl, ControlValueAccessor, FormControl, NgControl, ValidationErrors, Validator } from '@angular/forms';
3
- import { MatFormFieldControl } from '@angular/material/form-field';
4
- import { EntitySelectDataSource } from '@meshmakers/shared-services';
5
- import { Subject } from 'rxjs';
6
- import { FocusMonitor } from '@angular/cdk/a11y';
7
- import { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
1
+ import { DoCheck, ElementRef, EventEmitter, Injector, OnDestroy, OnInit } from "@angular/core";
2
+ import { AbstractControl, ControlValueAccessor, FormControl, NgControl, ValidationErrors, Validator } from "@angular/forms";
3
+ import { MatFormFieldControl } from "@angular/material/form-field";
4
+ import { EntitySelectDataSource } from "@meshmakers/shared-services";
5
+ import { Subject } from "rxjs";
6
+ import { FocusMonitor } from "@angular/cdk/a11y";
7
+ import { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from "@angular/material/autocomplete";
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class MmEntitySelectInputComponent implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl<any>, Validator {
10
10
  elRef: ElementRef<HTMLElement>;
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@meshmakers/shared-ui",
3
- "version": "3.1.197-0",
3
+ "version": "3.1.200-0",
4
4
  "peerDependencies": {
5
- "@angular/common": "^18.2.1",
6
- "@angular/core": "^18.2.1"
5
+ "@angular/common": "^18.2.8",
6
+ "@angular/core": "^18.2.8"
7
7
  },
8
8
  "dependencies": {
9
9
  "tslib": "^2.7.0"