@lenne.tech/ng-base 13.20.0 → 13.21.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.
- package/base-components/components/model-form-sub/model-form-sub.component.d.ts +4 -0
- package/base-components/components/model-table/model-table.component.d.ts +23 -1
- package/base-prototype/pages/profile/profile.component.d.ts +11 -2
- package/esm2020/base-components/components/model-form-sub/model-form-sub.component.mjs +15 -12
- package/esm2020/base-components/components/model-table/model-table.component.mjs +14 -5
- package/esm2020/base-prototype/pages/profile/profile.component.mjs +21 -6
- package/esm2020/shared/services/user.service.mjs +1 -2
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +22 -11
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +17 -3
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base-shared.mjs +0 -1
- package/fesm2015/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-components.mjs +20 -9
- package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-prototype.mjs +17 -3
- package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-shared.mjs +0 -1
- package/fesm2020/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { AbstractControl, FormControl } from '@angular/forms';
|
|
3
|
+
import { AuthService, BasicUser } from '@lenne.tech/ng-base/shared';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class ModelFormSubComponent implements OnInit {
|
|
6
|
+
private authService;
|
|
5
7
|
fields: any;
|
|
6
8
|
form: any;
|
|
7
9
|
config: any;
|
|
8
10
|
keys: string[];
|
|
11
|
+
user: BasicUser;
|
|
12
|
+
constructor(authService: AuthService);
|
|
9
13
|
ngOnInit(): void;
|
|
10
14
|
/**
|
|
11
15
|
* It takes a string, capitalizes the first letter, and returns the new string
|
|
@@ -14,7 +14,29 @@ export declare class ModelTableComponent implements OnInit, OnChanges {
|
|
|
14
14
|
fieldConfig: any;
|
|
15
15
|
idSelected: EventEmitter<string>;
|
|
16
16
|
createModeChanged: EventEmitter<boolean>;
|
|
17
|
-
tableFields:
|
|
17
|
+
tableFields: {
|
|
18
|
+
id: {
|
|
19
|
+
label: string;
|
|
20
|
+
};
|
|
21
|
+
name: {
|
|
22
|
+
label: string;
|
|
23
|
+
};
|
|
24
|
+
title: {
|
|
25
|
+
label: string;
|
|
26
|
+
};
|
|
27
|
+
description: {
|
|
28
|
+
label: string;
|
|
29
|
+
};
|
|
30
|
+
email: {
|
|
31
|
+
label: string;
|
|
32
|
+
};
|
|
33
|
+
createdAt: {
|
|
34
|
+
label: string;
|
|
35
|
+
};
|
|
36
|
+
updatedAt: {
|
|
37
|
+
label: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
18
40
|
meta: GraphQLMeta;
|
|
19
41
|
objects: any[];
|
|
20
42
|
availableFields: string[];
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
1
2
|
import { AuthService, BasicUser } from '@lenne.tech/ng-base/shared';
|
|
3
|
+
import { ActivatedRoute } from '@angular/router';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class ProfileComponent {
|
|
5
|
+
export declare class ProfileComponent implements OnInit {
|
|
4
6
|
private authService;
|
|
7
|
+
private route;
|
|
5
8
|
config: any;
|
|
6
9
|
profileConfig: {
|
|
10
|
+
avatar: {
|
|
11
|
+
label: string;
|
|
12
|
+
placeholder: string;
|
|
13
|
+
};
|
|
7
14
|
email: {
|
|
8
15
|
label: string;
|
|
9
16
|
placeholder: string;
|
|
@@ -18,6 +25,7 @@ export declare class ProfileComponent {
|
|
|
18
25
|
};
|
|
19
26
|
roles: {
|
|
20
27
|
exclude: boolean;
|
|
28
|
+
roles: string[];
|
|
21
29
|
};
|
|
22
30
|
username: {
|
|
23
31
|
label: string;
|
|
@@ -28,7 +36,8 @@ export declare class ProfileComponent {
|
|
|
28
36
|
};
|
|
29
37
|
};
|
|
30
38
|
currentUser: BasicUser;
|
|
31
|
-
constructor(authService: AuthService);
|
|
39
|
+
constructor(authService: AuthService, route: ActivatedRoute);
|
|
40
|
+
ngOnInit(): void;
|
|
32
41
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProfileComponent, never>;
|
|
33
42
|
static ɵcmp: i0.ɵɵComponentDeclaration<ProfileComponent, "base-profile", never, { "config": "config"; }, {}, never, never>;
|
|
34
43
|
}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "
|
|
4
|
-
import * as i2 from "../
|
|
5
|
-
import * as i3 from "../
|
|
6
|
-
import * as i4 from "../
|
|
7
|
-
import * as i5 from "../
|
|
8
|
-
import * as i6 from "
|
|
3
|
+
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
4
|
+
import * as i2 from "../tags/tags.component";
|
|
5
|
+
import * as i3 from "../input/input.component";
|
|
6
|
+
import * as i4 from "../upload-image/upload-image.component";
|
|
7
|
+
import * as i5 from "../refence-input/refence-input.component";
|
|
8
|
+
import * as i6 from "../checkbox/checkbox.component";
|
|
9
|
+
import * as i7 from "@angular/common";
|
|
9
10
|
export class ModelFormSubComponent {
|
|
10
|
-
constructor() {
|
|
11
|
+
constructor(authService) {
|
|
12
|
+
this.authService = authService;
|
|
11
13
|
this.config = {};
|
|
12
14
|
this.keys = [];
|
|
13
15
|
}
|
|
14
16
|
ngOnInit() {
|
|
15
17
|
this.keys = Object.keys(this.fields);
|
|
18
|
+
this.user = this.authService.currentUser;
|
|
16
19
|
}
|
|
17
20
|
/**
|
|
18
21
|
* It takes a string, capitalizes the first letter, and returns the new string
|
|
@@ -33,16 +36,16 @@ export class ModelFormSubComponent {
|
|
|
33
36
|
return control;
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
|
-
ModelFormSubComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ModelFormSubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
-
ModelFormSubComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ModelFormSubComponent, selector: "base-model-form-sub", inputs: { fields: "fields", form: "form", config: "config" }, ngImport: i0, template: "<div class=\"mt-3\" *ngFor=\"let key of keys\">\n <ng-container *ngIf=\"!fields[key]?.type\">\n <fieldset class=\"border rounded-3 p-3\">\n <legend class=\"float-none w-auto px-3\">\n {{ config[key]?.label ? config[key].label : capitalizeFirstLetter(key) }}\n </legend>\n <base-model-form-sub\n [fields]=\"fields[key]\"\n [config]=\"config[key]?.fields || {}\"\n [form]=\"form.get(key)\"\n ></base-model-form-sub>\n </fieldset>\n </ng-container>\n\n <ng-container *ngIf=\"fields[key]?.type\">\n <ng-container [ngSwitch]=\"config[key]?.type ? config[key]?.type : fields[key]?.type\">\n <ng-container *ngSwitchCase=\"'String'\">\n <ng-container *ngIf=\"fields[key]?.isList && !config[key]?.exclude\">\n <base-tags\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-tags>\n </ng-container>\n\n <ng-container *ngIf=\"!fields[key]?.isList && !config[key]?.exclude\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [type]=\"'text'\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Image'\">\n <base-upload-image\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [url]=\"config[key]?.url\"\n [path]=\"config[key]?.path || '/files/'\"\n [uploadPath]=\"config[key]?.uploadPath || '/files/upload'\"\n [deletePath]=\"config[key]?.deletePath || '/files/'\"\n [supportText]=\"config[key]?.supportText || 'Unterst\u00FCtzte Formate: JPEG, JPG, PNG'\"\n [dragText]=\"config[key]?.dragText || 'Drag & Drop'\"\n [validExtensions]=\"config[key]?.validExtensions || ['image/jpeg', 'image/jpg', 'image/png']\"\n [required]=\"fields[key].isRequired\"\n ></base-upload-image>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Reference'\">\n <base-refence-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [method]=\"config[key]?.method || 'find'\"\n [fields]=\"config[key]?.fields || ['id', 'name']\"\n [valueField]=\"config[key]?.valueField || 'id'\"\n [nameField]=\"config[key]?.nameField || 'name'\"\n [required]=\"fields[key].isRequired\"\n ></base-refence-input>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Boolean'\">\n <base-checkbox\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-checkbox>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Float'\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [type]=\"'number'\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'DateTime'\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [type]=\"'datetime-local'\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [""], components: [{ type: ModelFormSubComponent, selector: "base-model-form-sub", inputs: ["fields", "form", "config"] }, { type:
|
|
39
|
+
ModelFormSubComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ModelFormSubComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
ModelFormSubComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ModelFormSubComponent, selector: "base-model-form-sub", inputs: { fields: "fields", form: "form", config: "config" }, ngImport: i0, template: "<div class=\"mt-3\" *ngFor=\"let key of keys\">\n <ng-container *ngIf=\"!fields[key]?.type && (fields[key]?.roles ? user?.hasAllRoles(fields[key]?.roles) : true)\">\n <fieldset class=\"border rounded-3 p-3\">\n <legend class=\"float-none w-auto px-3\">\n {{ config[key]?.label ? config[key].label : capitalizeFirstLetter(key) }}\n </legend>\n <base-model-form-sub\n [fields]=\"fields[key]\"\n [config]=\"config[key]?.fields || {}\"\n [form]=\"form.get(key)\"\n ></base-model-form-sub>\n </fieldset>\n </ng-container>\n\n <ng-container *ngIf=\"fields[key]?.type && (fields[key]?.roles ? user?.hasAllRoles(fields[key]?.roles) : true)\">\n <ng-container [ngSwitch]=\"config[key]?.type ? config[key]?.type : fields[key]?.type\">\n <ng-container *ngSwitchCase=\"'String'\">\n <ng-container *ngIf=\"fields[key]?.isList && !config[key]?.exclude\">\n <base-tags\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-tags>\n </ng-container>\n\n <ng-container *ngIf=\"!fields[key]?.isList && !config[key]?.exclude\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [type]=\"'text'\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Image'\">\n <base-upload-image\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [url]=\"config[key]?.url\"\n [path]=\"config[key]?.path || '/files/'\"\n [uploadPath]=\"config[key]?.uploadPath || '/files/upload'\"\n [deletePath]=\"config[key]?.deletePath || '/files/'\"\n [supportText]=\"config[key]?.supportText || 'Unterst\u00FCtzte Formate: JPEG, JPG, PNG'\"\n [dragText]=\"config[key]?.dragText || 'Drag & Drop'\"\n [validExtensions]=\"config[key]?.validExtensions || ['image/jpeg', 'image/jpg', 'image/png']\"\n [required]=\"fields[key].isRequired\"\n ></base-upload-image>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Reference'\">\n <base-refence-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [method]=\"config[key]?.method || 'find'\"\n [fields]=\"config[key]?.fields || ['id', 'name']\"\n [valueField]=\"config[key]?.valueField || 'id'\"\n [nameField]=\"config[key]?.nameField || 'name'\"\n [required]=\"fields[key].isRequired\"\n ></base-refence-input>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Boolean'\">\n <base-checkbox\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-checkbox>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Float'\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [type]=\"'number'\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'DateTime'\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [type]=\"'datetime-local'\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [""], components: [{ type: ModelFormSubComponent, selector: "base-model-form-sub", inputs: ["fields", "form", "config"] }, { type: i2.TagsComponent, selector: "base-tags", inputs: ["id", "name", "label", "placeholder", "autocomplete", "tabIndex", "control", "options", "custom", "removeByKey", "required"] }, { type: i3.InputComponent, selector: "base-input", inputs: ["id", "name", "label", "placeholder", "autocomplete", "tabIndex", "control", "type", "required"] }, { type: i4.UploadImageComponent, selector: "base-upload-image", inputs: ["id", "name", "label", "supportText", "required", "dragText", "validExtensions", "control", "url", "uploadPath", "deletePath", "path"] }, { type: i5.RefenceInputComponent, selector: "base-refence-input", inputs: ["id", "name", "label", "placeholder", "autocomplete", "tabIndex", "control", "required", "method", "fields", "valueField", "nameField"] }, { type: i6.CheckboxComponent, selector: "base-checkbox", inputs: ["id", "name", "label", "value", "control", "required"] }], directives: [{ type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i7.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
|
|
38
41
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ModelFormSubComponent, decorators: [{
|
|
39
42
|
type: Component,
|
|
40
|
-
args: [{ selector: 'base-model-form-sub', template: "<div class=\"mt-3\" *ngFor=\"let key of keys\">\n <ng-container *ngIf=\"!fields[key]?.type\">\n <fieldset class=\"border rounded-3 p-3\">\n <legend class=\"float-none w-auto px-3\">\n {{ config[key]?.label ? config[key].label : capitalizeFirstLetter(key) }}\n </legend>\n <base-model-form-sub\n [fields]=\"fields[key]\"\n [config]=\"config[key]?.fields || {}\"\n [form]=\"form.get(key)\"\n ></base-model-form-sub>\n </fieldset>\n </ng-container>\n\n <ng-container *ngIf=\"fields[key]?.type\">\n <ng-container [ngSwitch]=\"config[key]?.type ? config[key]?.type : fields[key]?.type\">\n <ng-container *ngSwitchCase=\"'String'\">\n <ng-container *ngIf=\"fields[key]?.isList && !config[key]?.exclude\">\n <base-tags\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-tags>\n </ng-container>\n\n <ng-container *ngIf=\"!fields[key]?.isList && !config[key]?.exclude\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [type]=\"'text'\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Image'\">\n <base-upload-image\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [url]=\"config[key]?.url\"\n [path]=\"config[key]?.path || '/files/'\"\n [uploadPath]=\"config[key]?.uploadPath || '/files/upload'\"\n [deletePath]=\"config[key]?.deletePath || '/files/'\"\n [supportText]=\"config[key]?.supportText || 'Unterst\u00FCtzte Formate: JPEG, JPG, PNG'\"\n [dragText]=\"config[key]?.dragText || 'Drag & Drop'\"\n [validExtensions]=\"config[key]?.validExtensions || ['image/jpeg', 'image/jpg', 'image/png']\"\n [required]=\"fields[key].isRequired\"\n ></base-upload-image>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Reference'\">\n <base-refence-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [method]=\"config[key]?.method || 'find'\"\n [fields]=\"config[key]?.fields || ['id', 'name']\"\n [valueField]=\"config[key]?.valueField || 'id'\"\n [nameField]=\"config[key]?.nameField || 'name'\"\n [required]=\"fields[key].isRequired\"\n ></base-refence-input>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Boolean'\">\n <base-checkbox\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-checkbox>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Float'\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [type]=\"'number'\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'DateTime'\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [type]=\"'datetime-local'\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [""] }]
|
|
41
|
-
}], propDecorators: { fields: [{
|
|
43
|
+
args: [{ selector: 'base-model-form-sub', template: "<div class=\"mt-3\" *ngFor=\"let key of keys\">\n <ng-container *ngIf=\"!fields[key]?.type && (fields[key]?.roles ? user?.hasAllRoles(fields[key]?.roles) : true)\">\n <fieldset class=\"border rounded-3 p-3\">\n <legend class=\"float-none w-auto px-3\">\n {{ config[key]?.label ? config[key].label : capitalizeFirstLetter(key) }}\n </legend>\n <base-model-form-sub\n [fields]=\"fields[key]\"\n [config]=\"config[key]?.fields || {}\"\n [form]=\"form.get(key)\"\n ></base-model-form-sub>\n </fieldset>\n </ng-container>\n\n <ng-container *ngIf=\"fields[key]?.type && (fields[key]?.roles ? user?.hasAllRoles(fields[key]?.roles) : true)\">\n <ng-container [ngSwitch]=\"config[key]?.type ? config[key]?.type : fields[key]?.type\">\n <ng-container *ngSwitchCase=\"'String'\">\n <ng-container *ngIf=\"fields[key]?.isList && !config[key]?.exclude\">\n <base-tags\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-tags>\n </ng-container>\n\n <ng-container *ngIf=\"!fields[key]?.isList && !config[key]?.exclude\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [type]=\"'text'\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Image'\">\n <base-upload-image\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [url]=\"config[key]?.url\"\n [path]=\"config[key]?.path || '/files/'\"\n [uploadPath]=\"config[key]?.uploadPath || '/files/upload'\"\n [deletePath]=\"config[key]?.deletePath || '/files/'\"\n [supportText]=\"config[key]?.supportText || 'Unterst\u00FCtzte Formate: JPEG, JPG, PNG'\"\n [dragText]=\"config[key]?.dragText || 'Drag & Drop'\"\n [validExtensions]=\"config[key]?.validExtensions || ['image/jpeg', 'image/jpg', 'image/png']\"\n [required]=\"fields[key].isRequired\"\n ></base-upload-image>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Reference'\">\n <base-refence-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [method]=\"config[key]?.method || 'find'\"\n [fields]=\"config[key]?.fields || ['id', 'name']\"\n [valueField]=\"config[key]?.valueField || 'id'\"\n [nameField]=\"config[key]?.nameField || 'name'\"\n [required]=\"fields[key].isRequired\"\n ></base-refence-input>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Boolean'\">\n <base-checkbox\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-checkbox>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Float'\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [type]=\"'number'\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'DateTime'\">\n <base-input\n [id]=\"key\"\n [name]=\"key\"\n [label]=\"config[key]?.label ? config[key].label : capitalizeFirstLetter(key)\"\n [placeholder]=\"config[key]?.placeholder || ''\"\n [type]=\"'datetime-local'\"\n [control]=\"transformToControl(form?.get(key))\"\n [required]=\"fields[key].isRequired\"\n ></base-input>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [""] }]
|
|
44
|
+
}], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { fields: [{
|
|
42
45
|
type: Input
|
|
43
46
|
}], form: [{
|
|
44
47
|
type: Input
|
|
45
48
|
}], config: [{
|
|
46
49
|
type: Input
|
|
47
50
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtZm9ybS1zdWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNvbXBvbmVudHMvY29tcG9uZW50cy9tb2RlbC1mb3JtLXN1Yi9tb2RlbC1mb3JtLXN1Yi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL21vZGVsLWZvcm0tc3ViL21vZGVsLWZvcm0tc3ViLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFTekQsTUFBTSxPQUFPLHFCQUFxQjtJQVFoQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUxuQyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBRTFCLFNBQUksR0FBYSxFQUFFLENBQUM7SUFHMkIsQ0FBQztJQUVoRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUFDLEtBQWE7UUFDakMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsT0FBMkM7UUFDNUQsT0FBTyxPQUFzQixDQUFDO0lBQ2hDLENBQUM7O2tIQWpDVSxxQkFBcUI7c0dBQXJCLHFCQUFxQix5SENUbEMsNGxKQTRHQSxxQ0RuR2EscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UscUJBQXFCO2tHQUt0QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBCYXNpY1VzZXIgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtbW9kZWwtZm9ybS1zdWInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtZm9ybS1zdWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RlbC1mb3JtLXN1Yi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RlbEZvcm1TdWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBmaWVsZHM6IGFueTtcbiAgQElucHV0KCkgZm9ybTogYW55O1xuICBASW5wdXQoKSBjb25maWc6IGFueSA9IHt9O1xuXG4gIGtleXM6IHN0cmluZ1tdID0gW107XG4gIHVzZXI6IEJhc2ljVXNlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZpZWxkcyk7XG4gICAgdGhpcy51c2VyID0gdGhpcy5hdXRoU2VydmljZS5jdXJyZW50VXNlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIHN0cmluZywgY2FwaXRhbGl6ZXMgdGhlIGZpcnN0IGxldHRlciwgYW5kIHJldHVybnMgdGhlIG5ldyBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyB0aGF0IHlvdSB3YW50IHRvIGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZi5cbiAgICogQHJldHVybnMgVGhlIGZpcnN0IGxldHRlciBvZiB0aGUgc3RyaW5nIGlzIGJlaW5nIGNhcGl0YWxpemVkIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIGlzIGJlaW5nIHJldHVybmVkLlxuICAgKi9cbiAgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhbiBBYnN0cmFjdENvbnRyb2wgYW5kIHJldHVybnMgYSBGb3JtQ29udHJvbFxuICAgKlxuICAgKiBAcGFyYW0gY29udHJvbCAtIEFic3RyYWN0Q29udHJvbCB8IG51bGwgfCB1bmRlZmluZWRcbiAgICogQHJldHVybnMgQSBGb3JtQ29udHJvbFxuICAgKi9cbiAgdHJhbnNmb3JtVG9Db250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZHNba2V5XT8udHlwZSAmJiAoZmllbGRzW2tleV0/LnJvbGVzID8gdXNlcj8uaGFzQWxsUm9sZXMoZmllbGRzW2tleV0/LnJvbGVzKSA6IHRydWUpXCI+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMyBwLTNcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJmbG9hdC1ub25lIHctYXV0byBweC0zXCI+XG4gICAgICAgIHt7IGNvbmZpZ1trZXldPy5sYWJlbCA/IGNvbmZpZ1trZXldLmxhYmVsIDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGtleSkgfX1cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPGJhc2UtbW9kZWwtZm9ybS1zdWJcbiAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNba2V5XVwiXG4gICAgICAgIFtjb25maWddPVwiY29uZmlnW2tleV0/LmZpZWxkcyB8fCB7fVwiXG4gICAgICAgIFtmb3JtXT1cImZvcm0uZ2V0KGtleSlcIlxuICAgICAgPjwvYmFzZS1tb2RlbC1mb3JtLXN1Yj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGRzW2tleV0/LnR5cGUgJiYgKGZpZWxkc1trZXldPy5yb2xlcyA/IHVzZXI/Lmhhc0FsbFJvbGVzKGZpZWxkc1trZXldPy5yb2xlcykgOiB0cnVlKVwiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbmZpZ1trZXldPy50eXBlID8gY29uZmlnW2tleV0/LnR5cGUgOiBmaWVsZHNba2V5XT8udHlwZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1N0cmluZydcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkc1trZXldPy5pc0xpc3QgJiYgIWNvbmZpZ1trZXldPy5leGNsdWRlXCI+XG4gICAgICAgICAgPGJhc2UtdGFnc1xuICAgICAgICAgICAgW2lkXT1cImtleVwiXG4gICAgICAgICAgICBbbmFtZV09XCJrZXlcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImNvbmZpZ1trZXldPy5sYWJlbCA/IGNvbmZpZ1trZXldLmxhYmVsIDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGtleSlcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZ1trZXldPy5wbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgICAgICAgICBbY29udHJvbF09XCJ0cmFuc2Zvcm1Ub0NvbnRyb2woZm9ybT8uZ2V0KGtleSkpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZHNba2V5XS5pc1JlcXVpcmVkXCJcbiAgICAgICAgICA+PC9iYXNlLXRhZ3M+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGRzW2tleV0/LmlzTGlzdCAmJiAhY29uZmlnW2tleV0/LmV4Y2x1ZGVcIj5cbiAgICAgICAgICA8YmFzZS1pbnB1dFxuICAgICAgICAgICAgW2lkXT1cImtleVwiXG4gICAgICAgICAgICBbbmFtZV09XCJrZXlcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImNvbmZpZ1trZXldPy5sYWJlbCA/IGNvbmZpZ1trZXldLmxhYmVsIDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGtleSlcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZ1trZXldPy5wbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgW2NvbnRyb2xdPVwidHJhbnNmb3JtVG9Db250cm9sKGZvcm0/LmdldChrZXkpKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGRzW2tleV0uaXNSZXF1aXJlZFwiXG4gICAgICAgICAgPjwvYmFzZS1pbnB1dD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0ltYWdlJ1wiPlxuICAgICAgICA8YmFzZS11cGxvYWQtaW1hZ2VcbiAgICAgICAgICBbaWRdPVwia2V5XCJcbiAgICAgICAgICBbbmFtZV09XCJrZXlcIlxuICAgICAgICAgIFtsYWJlbF09XCJjb25maWdba2V5XT8ubGFiZWwgPyBjb25maWdba2V5XS5sYWJlbCA6IGNhcGl0YWxpemVGaXJzdExldHRlcihrZXkpXCJcbiAgICAgICAgICBbY29udHJvbF09XCJ0cmFuc2Zvcm1Ub0NvbnRyb2woZm9ybT8uZ2V0KGtleSkpXCJcbiAgICAgICAgICBbdXJsXT1cImNvbmZpZ1trZXldPy51cmxcIlxuICAgICAgICAgIFtwYXRoXT1cImNvbmZpZ1trZXldPy5wYXRoIHx8ICcvZmlsZXMvJ1wiXG4gICAgICAgICAgW3VwbG9hZFBhdGhdPVwiY29uZmlnW2tleV0/LnVwbG9hZFBhdGggfHwgJy9maWxlcy91cGxvYWQnXCJcbiAgICAgICAgICBbZGVsZXRlUGF0aF09XCJjb25maWdba2V5XT8uZGVsZXRlUGF0aCB8fCAnL2ZpbGVzLydcIlxuICAgICAgICAgIFtzdXBwb3J0VGV4dF09XCJjb25maWdba2V5XT8uc3VwcG9ydFRleHQgfHwgJ1VudGVyc3TDvHR6dGUgRm9ybWF0ZTogSlBFRywgSlBHLCBQTkcnXCJcbiAgICAgICAgICBbZHJhZ1RleHRdPVwiY29uZmlnW2tleV0/LmRyYWdUZXh0IHx8ICdEcmFnICYgRHJvcCdcIlxuICAgICAgICAgIFt2YWxpZEV4dGVuc2lvbnNdPVwiY29uZmlnW2tleV0/LnZhbGlkRXh0ZW5zaW9ucyB8fCBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvanBnJywgJ2ltYWdlL3BuZyddXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGRzW2tleV0uaXNSZXF1aXJlZFwiXG4gICAgICAgID48L2Jhc2UtdXBsb2FkLWltYWdlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidSZWZlcmVuY2UnXCI+XG4gICAgICAgIDxiYXNlLXJlZmVuY2UtaW5wdXRcbiAgICAgICAgICBbaWRdPVwia2V5XCJcbiAgICAgICAgICBbbmFtZV09XCJrZXlcIlxuICAgICAgICAgIFtsYWJlbF09XCJjb25maWdba2V5XT8ubGFiZWwgPyBjb25maWdba2V5XS5sYWJlbCA6IGNhcGl0YWxpemVGaXJzdExldHRlcihrZXkpXCJcbiAgICAgICAgICBbY29udHJvbF09XCJ0cmFuc2Zvcm1Ub0NvbnRyb2woZm9ybT8uZ2V0KGtleSkpXCJcbiAgICAgICAgICBbbWV0aG9kXT1cImNvbmZpZ1trZXldPy5tZXRob2QgfHwgJ2ZpbmQnXCJcbiAgICAgICAgICBbZmllbGRzXT1cImNvbmZpZ1trZXldPy5maWVsZHMgfHwgWydpZCcsICduYW1lJ11cIlxuICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cImNvbmZpZ1trZXldPy52YWx1ZUZpZWxkIHx8ICdpZCdcIlxuICAgICAgICAgIFtuYW1lRmllbGRdPVwiY29uZmlnW2tleV0/Lm5hbWVGaWVsZCB8fCAnbmFtZSdcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZHNba2V5XS5pc1JlcXVpcmVkXCJcbiAgICAgICAgPjwvYmFzZS1yZWZlbmNlLWlucHV0PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidCb29sZWFuJ1wiPlxuICAgICAgICA8YmFzZS1jaGVja2JveFxuICAgICAgICAgIFtpZF09XCJrZXlcIlxuICAgICAgICAgIFtuYW1lXT1cImtleVwiXG4gICAgICAgICAgW2xhYmVsXT1cImNvbmZpZ1trZXldPy5sYWJlbCA/IGNvbmZpZ1trZXldLmxhYmVsIDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGtleSlcIlxuICAgICAgICAgIFtjb250cm9sXT1cInRyYW5zZm9ybVRvQ29udHJvbChmb3JtPy5nZXQoa2V5KSlcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZHNba2V5XS5pc1JlcXVpcmVkXCJcbiAgICAgICAgPjwvYmFzZS1jaGVja2JveD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInRmxvYXQnXCI+XG4gICAgICAgIDxiYXNlLWlucHV0XG4gICAgICAgICAgW2lkXT1cImtleVwiXG4gICAgICAgICAgW25hbWVdPVwia2V5XCJcbiAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgW2xhYmVsXT1cImNvbmZpZ1trZXldPy5sYWJlbCA/IGNvbmZpZ1trZXldLmxhYmVsIDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGtleSlcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWdba2V5XT8ucGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgIFtjb250cm9sXT1cInRyYW5zZm9ybVRvQ29udHJvbChmb3JtPy5nZXQoa2V5KSlcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZHNba2V5XS5pc1JlcXVpcmVkXCJcbiAgICAgICAgPjwvYmFzZS1pbnB1dD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInRGF0ZVRpbWUnXCI+XG4gICAgICAgIDxiYXNlLWlucHV0XG4gICAgICAgICAgW2lkXT1cImtleVwiXG4gICAgICAgICAgW25hbWVdPVwia2V5XCJcbiAgICAgICAgICBbbGFiZWxdPVwiY29uZmlnW2tleV0/LmxhYmVsID8gY29uZmlnW2tleV0ubGFiZWwgOiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoa2V5KVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZ1trZXldPy5wbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ2RhdGV0aW1lLWxvY2FsJ1wiXG4gICAgICAgICAgW2NvbnRyb2xdPVwidHJhbnNmb3JtVG9Db250cm9sKGZvcm0/LmdldChrZXkpKVwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkc1trZXldLmlzUmVxdWlyZWRcIlxuICAgICAgICA+PC9iYXNlLWlucHV0PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -16,7 +16,15 @@ export class ModelTableComponent {
|
|
|
16
16
|
this.fieldConfig = {};
|
|
17
17
|
this.idSelected = new EventEmitter();
|
|
18
18
|
this.createModeChanged = new EventEmitter();
|
|
19
|
-
this.tableFields =
|
|
19
|
+
this.tableFields = {
|
|
20
|
+
id: { label: 'ID' },
|
|
21
|
+
name: { label: 'Name' },
|
|
22
|
+
title: { label: 'Titel' },
|
|
23
|
+
description: { label: 'Beschreibung' },
|
|
24
|
+
email: { label: 'E-Mail' },
|
|
25
|
+
createdAt: { label: 'Erstellt am' },
|
|
26
|
+
updatedAt: { label: 'Bearbeitet am' },
|
|
27
|
+
};
|
|
20
28
|
this.objects = [];
|
|
21
29
|
this.availableFields = [];
|
|
22
30
|
this.selectedId = '';
|
|
@@ -56,7 +64,8 @@ export class ModelTableComponent {
|
|
|
56
64
|
}
|
|
57
65
|
const possibleFields = this.meta.getFields('find' + this.capitalizeFirstLetter(this.modelName) + 's');
|
|
58
66
|
const keys = Object.keys(possibleFields);
|
|
59
|
-
this.tableFields
|
|
67
|
+
const tableFieldKeys = Object.keys(this.tableFields);
|
|
68
|
+
tableFieldKeys?.forEach((field) => {
|
|
60
69
|
if (keys.includes(field)) {
|
|
61
70
|
this.availableFields.push(field);
|
|
62
71
|
}
|
|
@@ -127,10 +136,10 @@ export class ModelTableComponent {
|
|
|
127
136
|
}
|
|
128
137
|
}
|
|
129
138
|
ModelTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ModelTableComponent, deps: [{ token: i1.GraphQLMetaService }, { token: i1.GraphQLService }], target: i0.ɵɵFactoryTarget.Component });
|
|
130
|
-
ModelTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ModelTableComponent, selector: "base-model-table", inputs: { modelName: "modelName", objectId: "objectId", createMode: "createMode", create: "create", update: "update", delete: "delete", config: "config", fieldConfig: "fieldConfig" }, outputs: { idSelected: "idSelected", createModeChanged: "createModeChanged" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!selectedId && !createMode\">\n <div class=\"w-100 d-flex flex-row justify-content-between mb-4\">\n <h2 *ngIf=\"modelName\">\n {{ config?.plural ? config?.plural : config?.label ? config?.label : capitalizeFirstLetter(modelName) + 's' }}\n </h2>\n <div class=\"d-flex align-items-center\">\n <button class=\"btn btn-primary\" (click)=\"createNewObject()\" *ngIf=\"create\">Erstellen</button>\n </div>\n </div>\n <table class=\"table table-hover table-responsive bg-white\">\n <thead>\n <tr>\n <th scope=\"col\" *ngFor=\"let field of availableFields\"
|
|
139
|
+
ModelTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ModelTableComponent, selector: "base-model-table", inputs: { modelName: "modelName", objectId: "objectId", createMode: "createMode", create: "create", update: "update", delete: "delete", config: "config", fieldConfig: "fieldConfig" }, outputs: { idSelected: "idSelected", createModeChanged: "createModeChanged" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!selectedId && !createMode\">\n <div class=\"w-100 d-flex flex-row justify-content-between mb-4\">\n <h2 *ngIf=\"modelName\">\n {{ config?.plural ? config?.plural : config?.label ? config?.label : capitalizeFirstLetter(modelName) + 's' }}\n </h2>\n <div class=\"d-flex align-items-center\">\n <button class=\"btn btn-primary\" (click)=\"createNewObject()\" *ngIf=\"create\">Erstellen</button>\n </div>\n </div>\n <table class=\"table table-hover table-responsive bg-white\">\n <thead>\n <tr>\n <th scope=\"col\" *ngFor=\"let field of availableFields\">\n {{ tableFields[field]?.label ? tableFields[field]?.label : capitalizeFirstLetter(field) }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let object of objects\">\n <td class=\"cursor-pointer\" *ngFor=\"let field of availableFields\" (click)=\"selectId(object)\">\n {{ object[field] }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"w-100\" *ngIf=\"selectedId || createMode\">\n <button class=\"btn btn-outline-primary mb-3\" (click)=\"selectId('')\">Zur\u00FCck</button>\n <base-model-form\n [modelName]=\"modelName\"\n [label]=\"config?.label\"\n [config]=\"fieldConfig\"\n [logging]=\"config?.logging\"\n [id]=\"selectedId\"\n (finished)=\"selectId('')\"\n [delete]=\"delete\"\n ></base-model-form>\n</div>\n", styles: [".cursor-pointer{cursor:pointer}.table>:not(:first-child){border-top:0}table{border-radius:.25rem;border-color:#e2e8f0!important}table thead{text-transform:uppercase;font-size:12px}table thead th{padding:12px 24px}table tbody tr td{font-weight:400!important;font-size:16px;padding:16px 24px}\n"], components: [{ type: i2.ModelFormComponent, selector: "base-model-form", inputs: ["modelName", "label", "id", "delete", "logging", "config"], outputs: ["finished"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
131
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ModelTableComponent, decorators: [{
|
|
132
141
|
type: Component,
|
|
133
|
-
args: [{ selector: 'base-model-table', template: "<div *ngIf=\"!selectedId && !createMode\">\n <div class=\"w-100 d-flex flex-row justify-content-between mb-4\">\n <h2 *ngIf=\"modelName\">\n {{ config?.plural ? config?.plural : config?.label ? config?.label : capitalizeFirstLetter(modelName) + 's' }}\n </h2>\n <div class=\"d-flex align-items-center\">\n <button class=\"btn btn-primary\" (click)=\"createNewObject()\" *ngIf=\"create\">Erstellen</button>\n </div>\n </div>\n <table class=\"table table-hover table-responsive bg-white\">\n <thead>\n <tr>\n <th scope=\"col\" *ngFor=\"let field of availableFields\"
|
|
142
|
+
args: [{ selector: 'base-model-table', template: "<div *ngIf=\"!selectedId && !createMode\">\n <div class=\"w-100 d-flex flex-row justify-content-between mb-4\">\n <h2 *ngIf=\"modelName\">\n {{ config?.plural ? config?.plural : config?.label ? config?.label : capitalizeFirstLetter(modelName) + 's' }}\n </h2>\n <div class=\"d-flex align-items-center\">\n <button class=\"btn btn-primary\" (click)=\"createNewObject()\" *ngIf=\"create\">Erstellen</button>\n </div>\n </div>\n <table class=\"table table-hover table-responsive bg-white\">\n <thead>\n <tr>\n <th scope=\"col\" *ngFor=\"let field of availableFields\">\n {{ tableFields[field]?.label ? tableFields[field]?.label : capitalizeFirstLetter(field) }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let object of objects\">\n <td class=\"cursor-pointer\" *ngFor=\"let field of availableFields\" (click)=\"selectId(object)\">\n {{ object[field] }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"w-100\" *ngIf=\"selectedId || createMode\">\n <button class=\"btn btn-outline-primary mb-3\" (click)=\"selectId('')\">Zur\u00FCck</button>\n <base-model-form\n [modelName]=\"modelName\"\n [label]=\"config?.label\"\n [config]=\"fieldConfig\"\n [logging]=\"config?.logging\"\n [id]=\"selectedId\"\n (finished)=\"selectId('')\"\n [delete]=\"delete\"\n ></base-model-form>\n</div>\n", styles: [".cursor-pointer{cursor:pointer}.table>:not(:first-child){border-top:0}table{border-radius:.25rem;border-color:#e2e8f0!important}table thead{text-transform:uppercase;font-size:12px}table thead th{padding:12px 24px}table tbody tr td{font-weight:400!important;font-size:16px;padding:16px 24px}\n"] }]
|
|
134
143
|
}], ctorParameters: function () { return [{ type: i1.GraphQLMetaService }, { type: i1.GraphQLService }]; }, propDecorators: { modelName: [{
|
|
135
144
|
type: Input
|
|
136
145
|
}], objectId: [{
|
|
@@ -152,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
152
161
|
}], createModeChanged: [{
|
|
153
162
|
type: Output
|
|
154
163
|
}] } });
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNvbXBvbmVudHMvY29tcG9uZW50cy9tb2RlbC10YWJsZS9tb2RlbC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL21vZGVsLXRhYmxlL21vZGVsLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQW1DLGtCQUFrQixFQUFrQixNQUFNLDRCQUE0QixDQUFDOzs7OztBQU9qSCxNQUFNLE9BQU8sbUJBQW1CO0lBbUI5QixZQUFvQixrQkFBc0MsRUFBVSxjQUE4QjtRQUE5RSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBaEJ6RixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFFckIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUxRCxnQkFBVyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFeEYsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixvQkFB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QixvVkNSaEMsdTBDQXFDQTsyRkQ3QmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGtCQUFrQjtzSUFLbkIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyYXBoUUxNZXRhLCBHcmFwaFFMTWV0YVNlcnZpY2UsIEdyYXBoUUxSZXF1ZXN0VHlwZSwgR3JhcGhRTFNlcnZpY2UgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtbW9kZWwtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RlbC10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RlbFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBtb2RlbE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgb2JqZWN0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgY3JlYXRlTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSBjcmVhdGUgPSB0cnVlO1xuICBASW5wdXQoKSB1cGRhdGUgPSB0cnVlO1xuICBASW5wdXQoKSBkZWxldGUgPSB0cnVlO1xuICBASW5wdXQoKSBjb25maWc6IGFueSA9IHt9O1xuICBASW5wdXQoKSBmaWVsZENvbmZpZzogYW55ID0ge307XG5cbiAgQE91dHB1dCgpIGlkU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNyZWF0ZU1vZGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHRhYmxlRmllbGRzID0gWydpZCcsICduYW1lJywgJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ2VtYWlsJywgJ2NyZWF0ZWRBdCcsICd1cGRhdGVkQXQnXTtcbiAgbWV0YSE6IEdyYXBoUUxNZXRhO1xuICBvYmplY3RzOiBhbnlbXSA9IFtdO1xuICBhdmFpbGFibGVGaWVsZHM6IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdGVkSWQgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyYXBoUUxNZXRhU2VydmljZTogR3JhcGhRTE1ldGFTZXJ2aWNlLCBwcml2YXRlIGdyYXBoUUxTZXJ2aWNlOiBHcmFwaFFMU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdyYXBoUUxNZXRhU2VydmljZS5nZXRNZXRhKCkuc3Vic2NyaWJlKChtZXRhKSA9PiB7XG4gICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuXG4gICAgICBpZiAodGhpcy5tb2RlbE5hbWUpIHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9iamVjdElkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZCA9IHRoaXMub2JqZWN0SWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ21vZGVsTmFtZSddICYmIHRoaXMubWV0YSkge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ29iamVjdElkJ10gJiYgdGhpcy5tZXRhKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZElkICE9PSB0aGlzLm9iamVjdElkKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8ubG9nZ2luZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdNb2RlbFRhYmxlQ29tcG9uZW50OjpuZ09uQ2hhbmdlcy0+c2VsZWN0ZWRJZCcsIHRoaXMuc2VsZWN0ZWRJZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSWQgPSB0aGlzLm9iamVjdElkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXZSdyZSB1c2luZyB0aGUgYG1ldGFgIHNlcnZpY2UgdG8gZ2V0IHRoZSBmaWVsZHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGUgYGZpbmRgIHF1ZXJ5IGZvciB0aGUgbW9kZWwgd2UncmUgd29ya2luZ1xuICAgKiB3aXRoLiBXZSdyZSB0aGVuIHVzaW5nIHRoYXQgaW5mb3JtYXRpb24gdG8gcG9wdWxhdGUgdGhlIGBhdmFpbGFibGVGaWVsZHNgIGFycmF5XG4gICAqL1xuICBpbml0KCkge1xuICAgIHRoaXMuYXZhaWxhYmxlRmllbGRzID0gW107XG5cbiAgICBpZiAodGhpcy5jb25maWc/LnRhYmxlRmllbGRzKSB7XG4gICAgICB0aGlzLnRhYmxlRmllbGRzID0gdGhpcy5jb25maWcudGFibGVGaWVsZHM7XG4gICAgfVxuXG4gICAgY29uc3QgcG9zc2libGVGaWVsZHMgPSB0aGlzLm1ldGEuZ2V0RmllbGRzKCdmaW5kJyArIHRoaXMuY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRoaXMubW9kZWxOYW1lKSArICdzJyk7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHBvc3NpYmxlRmllbGRzKTtcbiAgICB0aGlzLnRhYmxlRmllbGRzPy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGtleXMuaW5jbHVkZXMoZmllbGQpKSB7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlRmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5sb2dnaW5nKSB7XG4gICAgICBjb25zb2xlLmxvZygnTW9kZWxUYWJsZUNvbXBvbmVudDo6aW5pdC0+cG9zc2libGVGaWVsZHMnLCBwb3NzaWJsZUZpZWxkcyk7XG4gICAgICBjb25zb2xlLmxvZygnTW9kZWxUYWJsZUNvbXBvbmVudDo6aW5pdC0+a2V5cycsIGtleXMpO1xuICAgICAgY29uc29sZS5sb2coJ01vZGVsVGFibGVDb21wb25lbnQ6OmluaXQtPmF2YWlsYWJsZUZpZWxkcycsIHRoaXMuYXZhaWxhYmxlRmllbGRzKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRPYmplY3RzKHRoaXMuYXZhaWxhYmxlRmllbGRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgXCJDcmVhdGUgTmV3XCIgYnV0dG9uLCB0aGUgY3JlYXRlTW9kZUNoYW5nZWQgZXZlbnQgaXMgZW1pdHRlZCwgd2hpY2ggaXMgdGhlbiBoYW5kbGVkIGJ5IHRoZVxuICAgKiBwYXJlbnQgY29tcG9uZW50XG4gICAqL1xuICBjcmVhdGVOZXdPYmplY3QoKSB7XG4gICAgdGhpcy5jcmVhdGVNb2RlID0gdHJ1ZTtcbiAgICB0aGlzLmNyZWF0ZU1vZGVDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSXQgbG9hZHMgdGhlIG9iamVjdHMgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHN0b3JlcyB0aGVtIGluIHRoZSBvYmplY3RzIHZhcmlhYmxlXG4gICAqXG4gICAqIEBwYXJhbSBmaWVsZHMgLSBzdHJpbmdbXSAtIFRoZSBmaWVsZHMgeW91IHdhbnQgdG8gbG9hZCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIGxvYWRPYmplY3RzKGZpZWxkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLm9iamVjdHMgPSBbXTtcbiAgICB0aGlzLmdyYXBoUUxTZXJ2aWNlXG4gICAgICAuZ3JhcGhRbCgnZmluZCcgKyB0aGlzLmNhcGl0YWxpemVGaXJzdExldHRlcih0aGlzLm1vZGVsTmFtZSkgKyAncycsIHtcbiAgICAgICAgZmllbGRzLFxuICAgICAgICB0eXBlOiBHcmFwaFFMUmVxdWVzdFR5cGUuUVVFUlksXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZz8ubG9nZ2luZykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ01vZGVsVGFibGVDb21wb25lbnQ6OmxvYWRPYmplY3RzLT52YWx1ZScsIHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLm9iamVjdHMgPSB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igb24gbG9hZGluZyBvYmplY3RzJywgZXJyKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSB1cGRhdGUgcHJvcGVydHkgaXMgdHJ1ZSwgdGhlbiBzZXQgdGhlIHNlbGVjdGVkSWQgcHJvcGVydHkgdG8gdGhlIGlkIG9mIHRoZSBvYmplY3QgcGFzc2VkIGluLCBhbmQgZW1pdCB0aGVcbiAgICogc2VsZWN0ZWRJZCBwcm9wZXJ0eVxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0IC0gYW55IC0gdGhpcyBpcyB0aGUgb2JqZWN0IHRoYXQgaXMgcGFzc2VkIGluIGZyb20gdGhlIGNoaWxkIGNvbXBvbmVudC5cbiAgICovXG4gIHNlbGVjdElkKG9iamVjdDogYW55KSB7XG4gICAgaWYgKCFvYmplY3QpIHtcbiAgICAgIHRoaXMuY3JlYXRlTW9kZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jcmVhdGVNb2RlQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51cGRhdGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZCA9IG9iamVjdFsnaWQnXTtcbiAgICAgIHRoaXMuaWRTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nLCBjYXBpdGFsaXplcyB0aGUgZmlyc3QgbGV0dGVyLCBhbmQgcmV0dXJucyB0aGUgbW9kaWZpZWQgc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzdHJpbmcgdG8gY2FwaXRhbGl6ZS5cbiAgICogQHJldHVybnMgVGhlIGZpcnN0IGxldHRlciBvZiB0aGUgc3RyaW5nIGlzIGJlaW5nIGNhcGl0YWxpemVkIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIGlzIGJlaW5nIHJldHVybmVkLlxuICAgKi9cbiAgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIiFzZWxlY3RlZElkICYmICFjcmVhdGVNb2RlXCI+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItNFwiPlxuICAgIDxoMiAqbmdJZj1cIm1vZGVsTmFtZVwiPlxuICAgICAge3sgY29uZmlnPy5wbHVyYWwgPyBjb25maWc/LnBsdXJhbCA6IGNvbmZpZz8ubGFiZWwgPyBjb25maWc/LmxhYmVsIDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKG1vZGVsTmFtZSkgKyAncycgfX1cbiAgICA8L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNyZWF0ZU5ld09iamVjdCgpXCIgKm5nSWY9XCJjcmVhdGVcIj5FcnN0ZWxsZW48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWhvdmVyIHRhYmxlLXJlc3BvbnNpdmUgYmctd2hpdGVcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCBzY29wZT1cImNvbFwiICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBhdmFpbGFibGVGaWVsZHNcIj57eyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoZmllbGQpIH19PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IG9iamVjdCBvZiBvYmplY3RzXCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGF2YWlsYWJsZUZpZWxkc1wiIChjbGljayk9XCJzZWxlY3RJZChvYmplY3QpXCI+XG4gICAgICAgICAge3sgb2JqZWN0W2ZpZWxkXSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwic2VsZWN0ZWRJZCB8fCBjcmVhdGVNb2RlXCI+XG4gIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBtYi0zXCIgKGNsaWNrKT1cInNlbGVjdElkKCcnKVwiPlp1csO8Y2s8L2J1dHRvbj5cbiAgPGJhc2UtbW9kZWwtZm9ybVxuICAgIFttb2RlbE5hbWVdPVwibW9kZWxOYW1lXCJcbiAgICBbbGFiZWxdPVwiY29uZmlnPy5sYWJlbFwiXG4gICAgW2NvbmZpZ109XCJmaWVsZENvbmZpZ1wiXG4gICAgW2xvZ2dpbmddPVwiY29uZmlnPy5sb2dnaW5nXCJcbiAgICBbaWRdPVwic2VsZWN0ZWRJZFwiXG4gICAgKGZpbmlzaGVkKT1cInNlbGVjdElkKCcnKVwiXG4gICAgW2RlbGV0ZV09XCJkZWxldGVcIlxuICA+PC9iYXNlLW1vZGVsLWZvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNvbXBvbmVudHMvY29tcG9uZW50cy9tb2RlbC10YWJsZS9tb2RlbC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL21vZGVsLXRhYmxlL21vZGVsLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQW1DLGtCQUFrQixFQUFrQixNQUFNLDRCQUE0QixDQUFDOzs7OztBQU9qSCxNQUFNLE9BQU8sbUJBQW1CO0lBMkI5QixZQUFvQixrQkFBc0MsRUFBVSxjQUE4QjtRQUE5RSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBeEJ6RixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFFckIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUxRCxnQkFBVyxHQUFHO1lBQ1osRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUNuQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ3ZCLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFP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TUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUFDLEtBQWE7UUFDakMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7Z0hBckpVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLG9WQ1JoQyxxNUNBdUNBOzJGRC9CYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0Usa0JBQWtCO3NJQUtuQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JhcGhRTE1ldGEsIEdyYXBoUUxNZXRhU2VydmljZSwgR3JhcGhRTFJlcXVlc3RUeXBlLCBHcmFwaFFMU2VydmljZSB9IGZyb20gJ0BsZW5uZS50ZWNoL25nLWJhc2Uvc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFzZS1tb2RlbC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGVsLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG1vZGVsTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBvYmplY3RJZDogc3RyaW5nO1xuICBASW5wdXQoKSBjcmVhdGVNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNyZWF0ZSA9IHRydWU7XG4gIEBJbnB1dCgpIHVwZGF0ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGRlbGV0ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55ID0ge307XG4gIEBJbnB1dCgpIGZpZWxkQ29uZmlnOiBhbnkgPSB7fTtcblxuICBAT3V0cHV0KCkgaWRTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY3JlYXRlTW9kZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgdGFibGVGaWVsZHMgPSB7XG4gICAgaWQ6IHsgbGFiZWw6ICdJRCcgfSxcbiAgICBuYW1lOiB7IGxhYmVsOiAnTmFtZScgfSxcbiAgICB0aXRsZTogeyBsYWJlbDogJ1RpdGVsJyB9LFxuICAgIGRlc2NyaXB0aW9uOiB7IGxhYmVsOiAnQmVzY2hyZWlidW5nJyB9LFxuICAgIGVtYWlsOiB7IGxhYmVsOiAnRS1NYWlsJyB9LFxuICAgIGNyZWF0ZWRBdDogeyBsYWJlbDogJ0Vyc3RlbGx0IGFtJyB9LFxuICAgIHVwZGF0ZWRBdDogeyBsYWJlbDogJ0JlYXJiZWl0ZXQgYW0nIH0sXG4gIH07XG4gIG1ldGEhOiBHcmFwaFFMTWV0YTtcbiAgb2JqZWN0czogYW55W10gPSBbXTtcbiAgYXZhaWxhYmxlRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xuICBzZWxlY3RlZElkID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBncmFwaFFMTWV0YVNlcnZpY2U6IEdyYXBoUUxNZXRhU2VydmljZSwgcHJpdmF0ZSBncmFwaFFMU2VydmljZTogR3JhcGhRTFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ncmFwaFFMTWV0YVNlcnZpY2UuZ2V0TWV0YSgpLnN1YnNjcmliZSgobWV0YSkgPT4ge1xuICAgICAgdGhpcy5tZXRhID0gbWV0YTtcblxuICAgICAgaWYgKHRoaXMubW9kZWxOYW1lKSB7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vYmplY3RJZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSWQgPSB0aGlzLm9iamVjdElkO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydtb2RlbE5hbWUnXSAmJiB0aGlzLm1ldGEpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydvYmplY3RJZCddICYmIHRoaXMubWV0YSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJZCAhPT0gdGhpcy5vYmplY3RJZCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWc/LmxvZ2dpbmcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnTW9kZWxUYWJsZUNvbXBvbmVudDo6bmdPbkNoYW5nZXMtPnNlbGVjdGVkSWQnLCB0aGlzLnNlbGVjdGVkSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZElkID0gdGhpcy5vYmplY3RJZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2UncmUgdXNpbmcgdGhlIGBtZXRhYCBzZXJ2aWNlIHRvIGdldCB0aGUgZmllbGRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIGBmaW5kYCBxdWVyeSBmb3IgdGhlIG1vZGVsIHdlJ3JlIHdvcmtpbmdcbiAgICogd2l0aC4gV2UncmUgdGhlbiB1c2luZyB0aGF0IGluZm9ybWF0aW9uIHRvIHBvcHVsYXRlIHRoZSBgYXZhaWxhYmxlRmllbGRzYCBhcnJheVxuICAgKi9cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmF2YWlsYWJsZUZpZWxkcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnPy50YWJsZUZpZWxkcykge1xuICAgICAgdGhpcy50YWJsZUZpZWxkcyA9IHRoaXMuY29uZmlnLnRhYmxlRmllbGRzO1xuICAgIH1cblxuICAgIGNvbnN0IHBvc3NpYmxlRmllbGRzID0gdGhpcy5tZXRhLmdldEZpZWxkcygnZmluZCcgKyB0aGlzLmNhcGl0YWxpemVGaXJzdExldHRlcih0aGlzLm1vZGVsTmFtZSkgKyAncycpO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwb3NzaWJsZUZpZWxkcyk7XG4gICAgY29uc3QgdGFibGVGaWVsZEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnRhYmxlRmllbGRzKTtcbiAgICB0YWJsZUZpZWxkS2V5cz8uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChrZXlzLmluY2x1ZGVzKGZpZWxkKSkge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZz8ubG9nZ2luZykge1xuICAgICAgY29uc29sZS5sb2coJ01vZGVsVGFibGVDb21wb25lbnQ6OmluaXQtPnBvc3NpYmxlRmllbGRzJywgcG9zc2libGVGaWVsZHMpO1xuICAgICAgY29uc29sZS5sb2coJ01vZGVsVGFibGVDb21wb25lbnQ6OmluaXQtPmtleXMnLCBrZXlzKTtcbiAgICAgIGNvbnNvbGUubG9nKCdNb2RlbFRhYmxlQ29tcG9uZW50Ojppbml0LT5hdmFpbGFibGVGaWVsZHMnLCB0aGlzLmF2YWlsYWJsZUZpZWxkcyk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkT2JqZWN0cyh0aGlzLmF2YWlsYWJsZUZpZWxkcyk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIFwiQ3JlYXRlIE5ld1wiIGJ1dHRvbiwgdGhlIGNyZWF0ZU1vZGVDaGFuZ2VkIGV2ZW50IGlzIGVtaXR0ZWQsIHdoaWNoIGlzIHRoZW4gaGFuZGxlZCBieSB0aGVcbiAgICogcGFyZW50IGNvbXBvbmVudFxuICAgKi9cbiAgY3JlYXRlTmV3T2JqZWN0KCkge1xuICAgIHRoaXMuY3JlYXRlTW9kZSA9IHRydWU7XG4gICAgdGhpcy5jcmVhdGVNb2RlQ2hhbmdlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGxvYWRzIHRoZSBvYmplY3RzIGZyb20gdGhlIGRhdGFiYXNlIGFuZCBzdG9yZXMgdGhlbSBpbiB0aGUgb2JqZWN0cyB2YXJpYWJsZVxuICAgKlxuICAgKiBAcGFyYW0gZmllbGRzIC0gc3RyaW5nW10gLSBUaGUgZmllbGRzIHlvdSB3YW50IHRvIGxvYWQgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICBsb2FkT2JqZWN0cyhmaWVsZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5vYmplY3RzID0gW107XG4gICAgdGhpcy5ncmFwaFFMU2VydmljZVxuICAgICAgLmdyYXBoUWwoJ2ZpbmQnICsgdGhpcy5jYXBpdGFsaXplRmlyc3RMZXR0ZXIodGhpcy5tb2RlbE5hbWUpICsgJ3MnLCB7XG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgdHlwZTogR3JhcGhRTFJlcXVlc3RUeXBlLlFVRVJZLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWc/LmxvZ2dpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdNb2RlbFRhYmxlQ29tcG9uZW50Ojpsb2FkT2JqZWN0cy0+dmFsdWUnLCB2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5vYmplY3RzID0gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIG9uIGxvYWRpbmcgb2JqZWN0cycsIGVycik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdXBkYXRlIHByb3BlcnR5IGlzIHRydWUsIHRoZW4gc2V0IHRoZSBzZWxlY3RlZElkIHByb3BlcnR5IHRvIHRoZSBpZCBvZiB0aGUgb2JqZWN0IHBhc3NlZCBpbiwgYW5kIGVtaXQgdGhlXG4gICAqIHNlbGVjdGVkSWQgcHJvcGVydHlcbiAgICpcbiAgICogQHBhcmFtIG9iamVjdCAtIGFueSAtIHRoaXMgaXMgdGhlIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpbiBmcm9tIHRoZSBjaGlsZCBjb21wb25lbnQuXG4gICAqL1xuICBzZWxlY3RJZChvYmplY3Q6IGFueSkge1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICB0aGlzLmNyZWF0ZU1vZGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuY3JlYXRlTW9kZUNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudXBkYXRlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWQgPSBvYmplY3RbJ2lkJ107XG4gICAgICB0aGlzLmlkU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIHN0cmluZywgY2FwaXRhbGl6ZXMgdGhlIGZpcnN0IGxldHRlciwgYW5kIHJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemUuXG4gICAqIEByZXR1cm5zIFRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIHN0cmluZyBpcyBiZWluZyBjYXBpdGFsaXplZCBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyBpcyBiZWluZyByZXR1cm5lZC5cbiAgICovXG4gIGNhcGl0YWxpemVGaXJzdExldHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRJZCAmJiAhY3JlYXRlTW9kZVwiPlxuICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTRcIj5cbiAgICA8aDIgKm5nSWY9XCJtb2RlbE5hbWVcIj5cbiAgICAgIHt7IGNvbmZpZz8ucGx1cmFsID8gY29uZmlnPy5wbHVyYWwgOiBjb25maWc/LmxhYmVsID8gY29uZmlnPy5sYWJlbCA6IGNhcGl0YWxpemVGaXJzdExldHRlcihtb2RlbE5hbWUpICsgJ3MnIH19XG4gICAgPC9oMj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJjcmVhdGVOZXdPYmplY3QoKVwiICpuZ0lmPVwiY3JlYXRlXCI+RXJzdGVsbGVuPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ob3ZlciB0YWJsZS1yZXNwb25zaXZlIGJnLXdoaXRlXCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyPlxuICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgYXZhaWxhYmxlRmllbGRzXCI+XG4gICAgICAgICAge3sgdGFibGVGaWVsZHNbZmllbGRdPy5sYWJlbCA/IHRhYmxlRmllbGRzW2ZpZWxkXT8ubGFiZWwgOiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoZmllbGQpIH19XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBvYmplY3Qgb2Ygb2JqZWN0c1wiPlxuICAgICAgICA8dGQgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBhdmFpbGFibGVGaWVsZHNcIiAoY2xpY2spPVwic2VsZWN0SWQob2JqZWN0KVwiPlxuICAgICAgICAgIHt7IG9iamVjdFtmaWVsZF0gfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidy0xMDBcIiAqbmdJZj1cInNlbGVjdGVkSWQgfHwgY3JlYXRlTW9kZVwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgbWItM1wiIChjbGljayk9XCJzZWxlY3RJZCgnJylcIj5adXLDvGNrPC9idXR0b24+XG4gIDxiYXNlLW1vZGVsLWZvcm1cbiAgICBbbW9kZWxOYW1lXT1cIm1vZGVsTmFtZVwiXG4gICAgW2xhYmVsXT1cImNvbmZpZz8ubGFiZWxcIlxuICAgIFtjb25maWddPVwiZmllbGRDb25maWdcIlxuICAgIFtsb2dnaW5nXT1cImNvbmZpZz8ubG9nZ2luZ1wiXG4gICAgW2lkXT1cInNlbGVjdGVkSWRcIlxuICAgIChmaW5pc2hlZCk9XCJzZWxlY3RJZCgnJylcIlxuICAgIFtkZWxldGVdPVwiZGVsZXRlXCJcbiAgPjwvYmFzZS1tb2RlbC1mb3JtPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
4
|
-
import * as i2 from "@
|
|
4
|
+
import * as i2 from "@angular/router";
|
|
5
|
+
import * as i3 from "@lenne.tech/ng-base/base-components";
|
|
5
6
|
export class ProfileComponent {
|
|
6
|
-
constructor(authService) {
|
|
7
|
+
constructor(authService, route) {
|
|
7
8
|
this.authService = authService;
|
|
9
|
+
this.route = route;
|
|
8
10
|
this.config = {};
|
|
9
11
|
this.profileConfig = {
|
|
12
|
+
avatar: {
|
|
13
|
+
label: 'E-Mail',
|
|
14
|
+
placeholder: '',
|
|
15
|
+
},
|
|
10
16
|
email: {
|
|
11
17
|
label: 'E-Mail',
|
|
12
18
|
placeholder: '',
|
|
@@ -21,6 +27,7 @@ export class ProfileComponent {
|
|
|
21
27
|
},
|
|
22
28
|
roles: {
|
|
23
29
|
exclude: true,
|
|
30
|
+
roles: ['admin'],
|
|
24
31
|
},
|
|
25
32
|
username: {
|
|
26
33
|
label: 'Benutzername',
|
|
@@ -33,13 +40,21 @@ export class ProfileComponent {
|
|
|
33
40
|
this.currentUser = authService.currentUser;
|
|
34
41
|
this.profileConfig = { ...this.profileConfig, ...this.config };
|
|
35
42
|
}
|
|
43
|
+
ngOnInit() {
|
|
44
|
+
this.route.data.subscribe((data) => {
|
|
45
|
+
// Merge config from route to component
|
|
46
|
+
if (data) {
|
|
47
|
+
this.profileConfig = { ...this.profileConfig, ...data };
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
36
51
|
}
|
|
37
|
-
ProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ProfileComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
ProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ProfileComponent, selector: "base-profile", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"container\">\n <div class=\"py-5\">\n <base-model-form\n [id]=\"currentUser?.id\"\n [modelName]=\"'user'\"\n [label]=\"'Mein Profil'\"\n [config]=\"profileConfig || {}\"\n [delete]=\"false\"\n ></base-model-form>\n </div>\n</div>\n", styles: [""], components: [{ type:
|
|
52
|
+
ProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ProfileComponent, deps: [{ token: i1.AuthService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
+
ProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ProfileComponent, selector: "base-profile", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"container\">\n <div class=\"py-5\">\n <base-model-form\n [id]=\"currentUser?.id\"\n [modelName]=\"'user'\"\n [label]=\"'Mein Profil'\"\n [config]=\"profileConfig || {}\"\n [delete]=\"false\"\n ></base-model-form>\n </div>\n</div>\n", styles: [""], components: [{ type: i3.ModelFormComponent, selector: "base-model-form", inputs: ["modelName", "label", "id", "delete", "logging", "config"], outputs: ["finished"] }] });
|
|
39
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ProfileComponent, decorators: [{
|
|
40
55
|
type: Component,
|
|
41
56
|
args: [{ selector: 'base-profile', template: "<div class=\"container\">\n <div class=\"py-5\">\n <base-model-form\n [id]=\"currentUser?.id\"\n [modelName]=\"'user'\"\n [label]=\"'Mein Profil'\"\n [config]=\"profileConfig || {}\"\n [delete]=\"false\"\n ></base-model-form>\n </div>\n</div>\n", styles: [""] }]
|
|
42
|
-
}], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { config: [{
|
|
57
|
+
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.ActivatedRoute }]; }, propDecorators: { config: [{
|
|
43
58
|
type: Input
|
|
44
59
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTekQsTUFBTSxPQUFPLGdCQUFnQjtJQWtDM0IsWUFBb0IsV0FBd0IsRUFBVSxLQUFxQjtRQUF2RCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBakNsRSxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQUc7WUFDZCxNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsV0FBVyxFQUFFLEVBQUU7YUFDaEI7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsV0FBVyxFQUFFLEVBQUU7YUFDaEI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLFdBQVcsRUFBRSxFQUFFO2FBQ2hCO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLEtBQUssRUFBRSxVQUFVO2dCQUNqQixXQUFXLEVBQUUsRUFBRTthQUNoQjtZQUNELEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUM7YUFDakI7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLFdBQVcsRUFBRSxFQUFFO2FBQ2hCO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRixDQUFDO1FBS0EsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNqQyx1Q0FBdUM7WUFDdkMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO2FBQ3pEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs2R0E5Q1UsZ0JBQWdCO2lHQUFoQixnQkFBZ0Isa0ZDVDdCLHVSQVdBOzJGREZhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjOytIQUtmLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEJhc2ljVXNlciB9IGZyb20gJ0BsZW5uZS50ZWNoL25nLWJhc2Uvc2hhcmVkJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFzZS1wcm9maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjb25maWc6IGFueSA9IHt9O1xuICBwcm9maWxlQ29uZmlnID0ge1xuICAgIGF2YXRhcjoge1xuICAgICAgbGFiZWw6ICdFLU1haWwnLFxuICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgIH0sXG4gICAgZW1haWw6IHtcbiAgICAgIGxhYmVsOiAnRS1NYWlsJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICB9LFxuICAgIGZpcnN0TmFtZToge1xuICAgICAgbGFiZWw6ICdWb3JuYW1lJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICB9LFxuICAgIGxhc3ROYW1lOiB7XG4gICAgICBsYWJlbDogJ05hY2huYW1lJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICB9LFxuICAgIHJvbGVzOiB7XG4gICAgICBleGNsdWRlOiB0cnVlLFxuICAgICAgcm9sZXM6IFsnYWRtaW4nXSxcbiAgICB9LFxuICAgIHVzZXJuYW1lOiB7XG4gICAgICBsYWJlbDogJ0JlbnV0emVybmFtZScsXG4gICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgfSxcbiAgICBwYXNzd29yZDoge1xuICAgICAgZXhjbHVkZTogdHJ1ZSxcbiAgICB9LFxuICB9O1xuXG4gIGN1cnJlbnRVc2VyOiBCYXNpY1VzZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgdGhpcy5jdXJyZW50VXNlciA9IGF1dGhTZXJ2aWNlLmN1cnJlbnRVc2VyO1xuICAgIHRoaXMucHJvZmlsZUNvbmZpZyA9IHsgLi4udGhpcy5wcm9maWxlQ29uZmlnLCAuLi50aGlzLmNvbmZpZyB9O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgLy8gTWVyZ2UgY29uZmlnIGZyb20gcm91dGUgdG8gY29tcG9uZW50XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLnByb2ZpbGVDb25maWcgPSB7IC4uLnRoaXMucHJvZmlsZUNvbmZpZywgLi4uZGF0YSB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJweS01XCI+XG4gICAgPGJhc2UtbW9kZWwtZm9ybVxuICAgICAgW2lkXT1cImN1cnJlbnRVc2VyPy5pZFwiXG4gICAgICBbbW9kZWxOYW1lXT1cIid1c2VyJ1wiXG4gICAgICBbbGFiZWxdPVwiJ01laW4gUHJvZmlsJ1wiXG4gICAgICBbY29uZmlnXT1cInByb2ZpbGVDb25maWcgfHwge31cIlxuICAgICAgW2RlbGV0ZV09XCJmYWxzZVwiXG4gICAgPjwvYmFzZS1tb2RlbC1mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -28,7 +28,6 @@ export class UserService extends GraphQLPlusService {
|
|
|
28
28
|
fields: ['token', { user: ['id', 'firstName', 'lastName', 'email', 'roles'] }],
|
|
29
29
|
type: GraphQLRequestType.QUERY,
|
|
30
30
|
loading: true,
|
|
31
|
-
log: true,
|
|
32
31
|
}).pipe(map((response) => {
|
|
33
32
|
this.authService.token = response.token;
|
|
34
33
|
this.authService.currentUser = BasicUser.map(response.user);
|
|
@@ -80,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
80
79
|
providedIn: 'root',
|
|
81
80
|
}]
|
|
82
81
|
}], ctorParameters: function () { return [{ type: i1.Apollo }, { type: i2.GraphQLMetaService }, { type: i3.LoaderService }, { type: i4.AuthService }]; } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zaGFyZWQvc2VydmljZXMvdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFNNUQsTUFBTSxPQUFPLFdBQVksU0FBUSxrQkFBa0I7SUFDakQsWUFDWSxNQUFjLEVBQ2Qsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQzVCLFdBQXdCO1FBRWxDLEtBQUssQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFMdkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFHcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBMEM7UUFDOUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUM1QixTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUU7WUFDcEIsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDOUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLEtBQUs7WUFDOUIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLFFBQWMsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFNUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzthQUNuQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsS0FBK0U7UUFDdEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUM1QixTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUU7WUFDcEIsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDOUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLFFBQVE7WUFDakMsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLFFBQWMsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFNUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzthQUNuQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3QkFBd0IsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRTtZQUM5QyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUU7WUFDcEIsTUFBTSxFQUFFLEVBQUU7WUFDVixJQUFJLEVBQUUsa0JBQWtCLENBQUMsS0FBSztZQUM5QixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7O3dHQXRFVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBvbGxvIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoIH0gZnJvbSAnLi4vY2xhc3Nlcy9hdXRoLmNsYXNzJztcbmltcG9ydCB7IEJhc2ljVXNlciB9IGZyb20gJy4uL2NsYXNzZXMvYmFzaWMtdXNlci5jbGFzcyc7XG5pbXBvcnQgeyBHcmFwaFFMUmVxdWVzdFR5cGUgfSBmcm9tICcuLi9lbnVtcy9ncmFwaHFsLXJlcXVlc3QtdHlwZS5lbnVtJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JhcGhRTE1ldGFTZXJ2aWNlIH0gZnJvbSAnLi9ncmFwaHFsLW1ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBHcmFwaFFMUGx1c1NlcnZpY2UgfSBmcm9tICcuL2dyYXBocWwtcGx1cy5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRlclNlcnZpY2UgfSBmcm9tICcuL2xvYWRlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXJ2aWNlIGV4dGVuZHMgR3JhcGhRTFBsdXNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGFwb2xsbzogQXBvbGxvLFxuICAgIHByb3RlY3RlZCBncmFwaHFsTWV0YVNlcnZpY2U6IEdyYXBoUUxNZXRhU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbG9hZGVyU2VydmljZTogTG9hZGVyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGFwb2xsbywgZ3JhcGhxbE1ldGFTZXJ2aWNlLCBsb2FkZXJTZXJ2aWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dpblxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRcbiAgICovXG4gIGxvZ2luKGlucHV0OiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmdyYXBoUWwoJ3NpZ25JbicsIHtcbiAgICAgIGFyZ3VtZW50czogeyBpbnB1dCB9LFxuICAgICAgZmllbGRzOiBbJ3Rva2VuJywgeyB1c2VyOiBbJ2lkJywgJ2ZpcnN0TmFtZScsICdsYXN0TmFtZScsICdlbWFpbCcsICdyb2xlcyddIH1dLFxuICAgICAgdHlwZTogR3JhcGhRTFJlcXVlc3RUeXBlLlFVRVJZLFxuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogQXV0aCkgPT4ge1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnRva2VuID0gcmVzcG9uc2UudG9rZW47XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuY3VycmVudFVzZXIgPSBCYXNpY1VzZXIubWFwKHJlc3BvbnNlLnVzZXIpO1xuXG4gICAgICAgIHJldHVybiBBdXRoLm1hcCh7XG4gICAgICAgICAgdG9rZW46IHJlc3BvbnNlLnRva2VuLFxuICAgICAgICAgIHVzZXI6IEJhc2ljVXNlci5tYXAocmVzcG9uc2UudXNlciksXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dFxuICAgKi9cbiAgcmVnaXN0ZXIoaW5wdXQ6IHsgZmlyc3ROYW1lOiBzdHJpbmc7IGxhc3ROYW1lOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmdyYXBoUWwoJ3NpZ25VcCcsIHtcbiAgICAgIGFyZ3VtZW50czogeyBpbnB1dCB9LFxuICAgICAgZmllbGRzOiBbJ3Rva2VuJywgeyB1c2VyOiBbJ2lkJywgJ2ZpcnN0TmFtZScsICdsYXN0TmFtZScsICdlbWFpbCcsICdyb2xlcyddIH1dLFxuICAgICAgdHlwZTogR3JhcGhRTFJlcXVlc3RUeXBlLk1VVEFUSU9OLFxuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogQXV0aCkgPT4ge1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnRva2VuID0gcmVzcG9uc2UudG9rZW47XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuY3VycmVudFVzZXIgPSBCYXNpY1VzZXIubWFwKHJlc3BvbnNlLnVzZXIpO1xuXG4gICAgICAgIHJldHVybiBBdXRoLm1hcCh7XG4gICAgICAgICAgdG9rZW46IHJlc3BvbnNlLnRva2VuLFxuICAgICAgICAgIHVzZXI6IEJhc2ljVXNlci5tYXAocmVzcG9uc2UudXNlciksXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgcGFzc3dvcmQgcmVzZXQgbWFpbFxuICAgKlxuICAgKiBAcGFyYW0gZW1haWxcbiAgICovXG4gIHJlcXVlc3RQYXNzd29yZFJlc2V0TWFpbChlbWFpbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhRbCgncmVxdWVzdFBhc3N3b3JkUmVzZXRNYWlsJywge1xuICAgICAgYXJndW1lbnRzOiB7IGVtYWlsIH0sXG4gICAgICBmaWVsZHM6IFtdLFxuICAgICAgdHlwZTogR3JhcGhRTFJlcXVlc3RUeXBlLlFVRVJZLFxuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|