@apipass/schemas 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +33 -33
  2. package/base-schema.component.d.ts +12 -12
  3. package/{esm2020 → esm2022}/apipass-schemas.mjs +4 -4
  4. package/esm2022/base-schema.component.mjs +38 -0
  5. package/{esm2020 → esm2022}/public-api.mjs +17 -17
  6. package/esm2022/schema-custom-attributes/schema-custom-attributes.mjs +169 -0
  7. package/esm2022/schema-fields.service.mjs +81 -0
  8. package/esm2022/schema-form/schema-array/array-session/array-session.mjs +141 -0
  9. package/esm2022/schema-form/schema-array/schema-array.mjs +219 -0
  10. package/esm2022/schema-form/schema-form.mjs +107 -0
  11. package/esm2022/schema-form/schema-input/field-render/field-render.mjs +76 -0
  12. package/esm2022/schema-form/schema-input/input-render/boolean-input/boolean-input.component.mjs +51 -0
  13. package/esm2022/schema-form/schema-input/input-render/input-render.mjs +193 -0
  14. package/esm2022/schema-form/schema-input/input-render/number-input/number-input.component.mjs +49 -0
  15. package/esm2022/schema-form/schema-input/schema-input.mjs +95 -0
  16. package/esm2022/schema-form/schema-object/schema-object.mjs +125 -0
  17. package/esm2022/schema-form-render.mjs +126 -0
  18. package/{esm2020 → esm2022}/schema-form-render.module.mjs +109 -108
  19. package/esm2022/schema-validation-field.mjs +18 -0
  20. package/{esm2020 → esm2022}/struct.utils.mjs +9 -9
  21. package/esm2022/type-script-compile/type-script-compile.base.mjs +115 -0
  22. package/{fesm2020 → fesm2022}/apipass-schemas.mjs +1571 -1563
  23. package/fesm2022/apipass-schemas.mjs.map +1 -0
  24. package/index.d.ts +5 -5
  25. package/package.json +15 -21
  26. package/public-api.d.ts +16 -16
  27. package/schema-custom-attributes/schema-custom-attributes.d.ts +21 -21
  28. package/schema-fields.service.d.ts +14 -14
  29. package/schema-form/schema-array/array-session/array-session.d.ts +19 -19
  30. package/schema-form/schema-array/schema-array.d.ts +31 -32
  31. package/schema-form/schema-form.d.ts +31 -31
  32. package/schema-form/schema-input/field-render/field-render.d.ts +16 -16
  33. package/schema-form/schema-input/input-render/boolean-input/boolean-input.component.d.ts +15 -15
  34. package/schema-form/schema-input/input-render/input-render.d.ts +29 -29
  35. package/schema-form/schema-input/input-render/number-input/number-input.component.d.ts +15 -15
  36. package/schema-form/schema-input/schema-input.d.ts +18 -19
  37. package/schema-form/schema-object/schema-object.d.ts +34 -34
  38. package/schema-form-render.d.ts +31 -31
  39. package/schema-form-render.module.d.ts +23 -23
  40. package/schema-validation-field.d.ts +23 -23
  41. package/struct.utils.d.ts +1 -1
  42. package/type-script-compile/type-script-compile.base.d.ts +17 -17
  43. package/esm2020/base-schema.component.mjs +0 -37
  44. package/esm2020/schema-custom-attributes/schema-custom-attributes.mjs +0 -169
  45. package/esm2020/schema-fields.service.mjs +0 -80
  46. package/esm2020/schema-form/schema-array/array-session/array-session.mjs +0 -143
  47. package/esm2020/schema-form/schema-array/schema-array.mjs +0 -220
  48. package/esm2020/schema-form/schema-form.mjs +0 -107
  49. package/esm2020/schema-form/schema-input/field-render/field-render.mjs +0 -69
  50. package/esm2020/schema-form/schema-input/input-render/boolean-input/boolean-input.component.mjs +0 -46
  51. package/esm2020/schema-form/schema-input/input-render/input-render.mjs +0 -192
  52. package/esm2020/schema-form/schema-input/input-render/number-input/number-input.component.mjs +0 -44
  53. package/esm2020/schema-form/schema-input/schema-input.mjs +0 -96
  54. package/esm2020/schema-form/schema-object/schema-object.mjs +0 -123
  55. package/esm2020/schema-form-render.mjs +0 -126
  56. package/esm2020/schema-validation-field.mjs +0 -14
  57. package/esm2020/type-script-compile/type-script-compile.base.mjs +0 -114
  58. package/fesm2015/apipass-schemas.mjs +0 -1801
  59. package/fesm2015/apipass-schemas.mjs.map +0 -1
  60. package/fesm2020/apipass-schemas.mjs.map +0 -1
package/README.md CHANGED
@@ -1,33 +1,33 @@
1
- # @apipass/inputs
2
-
3
- This package is a angular component for buttons
4
-
5
- ## Installation
6
-
7
-
8
- ```bash
9
- npm install @apipass/inputs
10
- ```
11
-
12
- ## Usage
13
-
14
- ```typescript
15
- [...]
16
- import {InputsModule} from "@apipass/inputs";
17
-
18
- @NgModule({
19
- imports: [
20
- [...]
21
- InputsModule
22
- ],
23
- [...]
24
- ```
25
-
26
-
27
- ...
28
- ```html
29
-
30
- ```
31
-
32
- ## License
33
- [MIT](https://choosealicense.com/licenses/mit/)
1
+ # @apipass/inputs
2
+
3
+ This package is a angular component for buttons
4
+
5
+ ## Installation
6
+
7
+
8
+ ```bash
9
+ npm install @apipass/inputs
10
+ ```
11
+
12
+ ## Usage
13
+
14
+ ```typescript
15
+ [...]
16
+ import {InputsModule} from "@apipass/inputs";
17
+
18
+ @NgModule({
19
+ imports: [
20
+ [...]
21
+ InputsModule
22
+ ],
23
+ [...]
24
+ ```
25
+
26
+
27
+ ...
28
+ ```html
29
+
30
+ ```
31
+
32
+ ## License
33
+ [MIT](https://choosealicense.com/licenses/mit/)
@@ -1,12 +1,12 @@
1
- import { EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare abstract class BaseSchemaComponent {
4
- model: any;
5
- schema: any;
6
- modelChange: EventEmitter<any>;
7
- getSchemaProperties(): any;
8
- canRender(property: any): boolean;
9
- onDrop(event: any, attr: any): string;
10
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseSchemaComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseSchemaComponent, "ng-component", never, { "model": "model"; "schema": "schema"; }, { "modelChange": "modelChange"; }, never, never, false, never>;
12
- }
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare abstract class BaseSchemaComponent {
4
+ model: any;
5
+ schema: any;
6
+ modelChange: EventEmitter<any>;
7
+ getSchemaProperties(): any;
8
+ canRender(property: any): boolean;
9
+ onDrop(event: any, attr: any): string;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseSchemaComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseSchemaComponent, "ng-component", never, { "model": { "alias": "model"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; }, { "modelChange": "modelChange"; }, never, never, false, never>;
12
+ }
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpcGFzcy1zY2hlbWFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvc2NoZW1hcy9zcmMvYXBpcGFzcy1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ class BaseSchemaComponent {
4
+ model;
5
+ schema;
6
+ modelChange = new EventEmitter();
7
+ getSchemaProperties() {
8
+ return this.schema.properties instanceof Array ? this.schema.properties : [this.schema.properties];
9
+ }
10
+ canRender(property) {
11
+ property.canRender = property?.conditionExpression ? eval(property.conditionExpression) : true;
12
+ return property.canRender;
13
+ }
14
+ onDrop(event, attr) {
15
+ const data = event.data;
16
+ if (!attr) {
17
+ attr = '';
18
+ }
19
+ attr += `{{${data}}}`;
20
+ return attr;
21
+ }
22
+ static ɵfac = function BaseSchemaComponent_Factory(t) { return new (t || BaseSchemaComponent)(); };
23
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: BaseSchemaComponent, selectors: [["ng-component"]], inputs: { model: "model", schema: "schema" }, outputs: { modelChange: "modelChange" }, decls: 0, vars: 0, template: function BaseSchemaComponent_Template(rf, ctx) { }, encapsulation: 2 });
24
+ }
25
+ export { BaseSchemaComponent };
26
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseSchemaComponent, [{
27
+ type: Component,
28
+ args: [{
29
+ template: ''
30
+ }]
31
+ }], null, { model: [{
32
+ type: Input
33
+ }], schema: [{
34
+ type: Input
35
+ }], modelChange: [{
36
+ type: Output
37
+ }] }); })();
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zY2hlbWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvc2NoZW1hcy9zcmMvYmFzZS1zY2hlbWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBRXRFLE1BR3NCLG1CQUFtQjtJQUU5QixLQUFLLENBQUs7SUFDSCxNQUFNLENBQUs7SUFDakIsV0FBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFBO0lBRWxFLG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNwRyxDQUFDO0lBRU0sU0FBUyxDQUFFLFFBQWE7UUFDN0IsUUFBUSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQzlGLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQTtJQUMzQixDQUFDO0lBRU0sTUFBTSxDQUFFLEtBQVUsRUFBRSxJQUFTO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksR0FBRyxFQUFFLENBQUE7U0FDVjtRQUNELElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFBO1FBQ3JCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQzs2RUF0Qm1CLG1CQUFtQjs2REFBbkIsbUJBQW1COztTQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUh4QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLEVBQUU7YUFDYjtnQkFHVSxLQUFLO2tCQUFiLEtBQUs7WUFDVSxNQUFNO2tCQUFyQixLQUFLO1lBQ0ksV0FBVztrQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2NoZW1hQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBtb2RlbDogYW55XG4gIEBJbnB1dCgpIHB1YmxpYyBzY2hlbWE6IGFueVxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcblxuICBnZXRTY2hlbWFQcm9wZXJ0aWVzICgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzIGluc3RhbmNlb2YgQXJyYXkgPyB0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzIDogW3RoaXMuc2NoZW1hLnByb3BlcnRpZXNdXG4gIH1cblxuICBwdWJsaWMgY2FuUmVuZGVyIChwcm9wZXJ0eTogYW55KTogYm9vbGVhbiB7XG4gICAgcHJvcGVydHkuY2FuUmVuZGVyID0gcHJvcGVydHk/LmNvbmRpdGlvbkV4cHJlc3Npb24gPyBldmFsKHByb3BlcnR5LmNvbmRpdGlvbkV4cHJlc3Npb24pIDogdHJ1ZVxuICAgIHJldHVybiBwcm9wZXJ0eS5jYW5SZW5kZXJcbiAgfVxuXG4gIHB1YmxpYyBvbkRyb3AgKGV2ZW50OiBhbnksIGF0dHI6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGFcbiAgICBpZiAoIWF0dHIpIHtcbiAgICAgIGF0dHIgPSAnJ1xuICAgIH1cbiAgICBhdHRyICs9IGB7eyR7ZGF0YX19fWBcbiAgICByZXR1cm4gYXR0clxuICB9XG5cbn1cbiJdfQ==
@@ -1,17 +1,17 @@
1
- export * from './schema-form-render.module';
2
- export * from './schema-validation-field';
3
- export * from './schema-form-render';
4
- export * from './schema-fields.service';
5
- export * from './base-schema.component';
6
- export * from './schema-custom-attributes/schema-custom-attributes';
7
- export * from './schema-form/schema-form';
8
- export * from './schema-form/schema-array/schema-array';
9
- export * from './schema-form/schema-array/array-session/array-session';
10
- export * from './schema-form/schema-input/schema-input';
11
- export * from './schema-form/schema-input/field-render/field-render';
12
- export * from './schema-form/schema-input/input-render/input-render';
13
- export * from './schema-form/schema-input/input-render/boolean-input/boolean-input.component';
14
- export * from './schema-form/schema-input/input-render/number-input/number-input.component';
15
- export * from './schema-form/schema-object/schema-object';
16
- export * from './type-script-compile/type-script-compile.base';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3NjaGVtYXMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMscURBQXFELENBQUE7QUFDbkUsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMsd0RBQXdELENBQUE7QUFDdEUsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLHNEQUFzRCxDQUFBO0FBQ3BFLGNBQWMsc0RBQXNELENBQUE7QUFDcEUsY0FBYywrRUFBK0UsQ0FBQTtBQUM3RixjQUFjLDZFQUE2RSxDQUFBO0FBQzNGLGNBQWMsMkNBQTJDLENBQUE7QUFFekQsY0FBYyxnREFBZ0QsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLWZvcm0tcmVuZGVyLm1vZHVsZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtdmFsaWRhdGlvbi1maWVsZCdcclxuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS1yZW5kZXInXHJcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLWZpZWxkcy5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2Jhc2Utc2NoZW1hLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtY3VzdG9tLWF0dHJpYnV0ZXMvc2NoZW1hLWN1c3RvbS1hdHRyaWJ1dGVzJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtL3NjaGVtYS1mb3JtJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtL3NjaGVtYS1hcnJheS9zY2hlbWEtYXJyYXknXHJcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLWZvcm0vc2NoZW1hLWFycmF5L2FycmF5LXNlc3Npb24vYXJyYXktc2Vzc2lvbidcclxuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS9zY2hlbWEtaW5wdXQvc2NoZW1hLWlucHV0J1xyXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtL3NjaGVtYS1pbnB1dC9maWVsZC1yZW5kZXIvZmllbGQtcmVuZGVyJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtL3NjaGVtYS1pbnB1dC9pbnB1dC1yZW5kZXIvaW5wdXQtcmVuZGVyJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtL3NjaGVtYS1pbnB1dC9pbnB1dC1yZW5kZXIvYm9vbGVhbi1pbnB1dC9ib29sZWFuLWlucHV0LmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS9zY2hlbWEtaW5wdXQvaW5wdXQtcmVuZGVyL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtL3NjaGVtYS1vYmplY3Qvc2NoZW1hLW9iamVjdCdcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS1zY3JpcHQtY29tcGlsZS90eXBlLXNjcmlwdC1jb21waWxlLmJhc2UnXHJcbiJdfQ==
1
+ export * from './schema-form-render.module';
2
+ export * from './schema-validation-field';
3
+ export * from './schema-form-render';
4
+ export * from './schema-fields.service';
5
+ export * from './base-schema.component';
6
+ export * from './schema-custom-attributes/schema-custom-attributes';
7
+ export * from './schema-form/schema-form';
8
+ export * from './schema-form/schema-array/schema-array';
9
+ export * from './schema-form/schema-array/array-session/array-session';
10
+ export * from './schema-form/schema-input/schema-input';
11
+ export * from './schema-form/schema-input/field-render/field-render';
12
+ export * from './schema-form/schema-input/input-render/input-render';
13
+ export * from './schema-form/schema-input/input-render/boolean-input/boolean-input.component';
14
+ export * from './schema-form/schema-input/input-render/number-input/number-input.component';
15
+ export * from './schema-form/schema-object/schema-object';
16
+ export * from './type-script-compile/type-script-compile.base';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3NjaGVtYXMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMscURBQXFELENBQUE7QUFDbkUsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMsd0RBQXdELENBQUE7QUFDdEUsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLHNEQUFzRCxDQUFBO0FBQ3BFLGNBQWMsc0RBQXNELENBQUE7QUFDcEUsY0FBYywrRUFBK0UsQ0FBQTtBQUM3RixjQUFjLDZFQUE2RSxDQUFBO0FBQzNGLGNBQWMsMkNBQTJDLENBQUE7QUFFekQsY0FBYyxnREFBZ0QsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLWZvcm0tcmVuZGVyLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLXZhbGlkYXRpb24tZmllbGQnXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtLXJlbmRlcidcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLWZpZWxkcy5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlLXNjaGVtYS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1jdXN0b20tYXR0cmlidXRlcy9zY2hlbWEtY3VzdG9tLWF0dHJpYnV0ZXMnXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtL3NjaGVtYS1mb3JtJ1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS9zY2hlbWEtYXJyYXkvc2NoZW1hLWFycmF5J1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS9zY2hlbWEtYXJyYXkvYXJyYXktc2Vzc2lvbi9hcnJheS1zZXNzaW9uJ1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS9zY2hlbWEtaW5wdXQvc2NoZW1hLWlucHV0J1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS9zY2hlbWEtaW5wdXQvZmllbGQtcmVuZGVyL2ZpZWxkLXJlbmRlcidcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLWZvcm0vc2NoZW1hLWlucHV0L2lucHV0LXJlbmRlci9pbnB1dC1yZW5kZXInXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS1mb3JtL3NjaGVtYS1pbnB1dC9pbnB1dC1yZW5kZXIvYm9vbGVhbi1pbnB1dC9ib29sZWFuLWlucHV0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLWZvcm0vc2NoZW1hLWlucHV0L2lucHV0LXJlbmRlci9udW1iZXItaW5wdXQvbnVtYmVyLWlucHV0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hLWZvcm0vc2NoZW1hLW9iamVjdC9zY2hlbWEtb2JqZWN0J1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGUtc2NyaXB0LWNvbXBpbGUvdHlwZS1zY3JpcHQtY29tcGlsZS5iYXNlJ1xuIl19
@@ -0,0 +1,169 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BaseSchemaComponent } from '../base-schema.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "ngx-drag-drop";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "@angular/material/tooltip";
8
+ const _c0 = function () { return { standalone: true }; };
9
+ function SchemaCustomAttributesComponent_div_0_Template(rf, ctx) { if (rf & 1) {
10
+ const _r8 = i0.ɵɵgetCurrentView();
11
+ i0.ɵɵelementStart(0, "div", 6)(1, "div", 7)(2, "label", 8);
12
+ i0.ɵɵtext(3);
13
+ i0.ɵɵelementEnd();
14
+ i0.ɵɵelementStart(4, "span", 9);
15
+ i0.ɵɵlistener("click", function SchemaCustomAttributesComponent_div_0_Template_span_click_4_listener() { const restoredCtx = i0.ɵɵrestoreView(_r8); const i_r6 = restoredCtx.index; const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.removeCustomAttribute(i_r6)); });
16
+ i0.ɵɵelement(5, "i", 10);
17
+ i0.ɵɵelementEnd();
18
+ i0.ɵɵelementStart(6, "input", 11);
19
+ i0.ɵɵlistener("ngModelChange", function SchemaCustomAttributesComponent_div_0_Template_input_ngModelChange_6_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r8); const attribute_r5 = restoredCtx.$implicit; return i0.ɵɵresetView(attribute_r5.value = $event); })("dndDrop", function SchemaCustomAttributesComponent_div_0_Template_input_dndDrop_6_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r8); const attribute_r5 = restoredCtx.$implicit; const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.onDropAttr($event, "value", attribute_r5)); });
20
+ i0.ɵɵelementEnd()()();
21
+ } if (rf & 2) {
22
+ const attribute_r5 = ctx.$implicit;
23
+ const ctx_r0 = i0.ɵɵnextContext();
24
+ i0.ɵɵadvance(3);
25
+ i0.ɵɵtextInterpolate(attribute_r5.label);
26
+ i0.ɵɵadvance(2);
27
+ i0.ɵɵproperty("matTooltip", ctx_r0.customAttributeRemoveLabel);
28
+ i0.ɵɵadvance(1);
29
+ i0.ɵɵproperty("ngModel", attribute_r5.value)("ngModelOptions", i0.ɵɵpureFunction0(4, _c0));
30
+ } }
31
+ function SchemaCustomAttributesComponent_div_1_Template(rf, ctx) { if (rf & 1) {
32
+ const _r12 = i0.ɵɵgetCurrentView();
33
+ i0.ɵɵelementStart(0, "div", 12)(1, "div", 13)(2, "div", 7)(3, "label", 8);
34
+ i0.ɵɵtext(4);
35
+ i0.ɵɵelementStart(5, "strong");
36
+ i0.ɵɵtext(6, "*");
37
+ i0.ɵɵelementEnd()();
38
+ i0.ɵɵelementStart(7, "input", 11);
39
+ i0.ɵɵlistener("ngModelChange", function SchemaCustomAttributesComponent_div_1_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.newCustomField.label = $event); })("dndDrop", function SchemaCustomAttributesComponent_div_1_Template_input_dndDrop_7_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.onDropAttr($event, "label", ctx_r13.newCustomField)); });
40
+ i0.ɵɵelementEnd()()();
41
+ i0.ɵɵelementStart(8, "div", 13)(9, "div", 7)(10, "label", 8);
42
+ i0.ɵɵtext(11);
43
+ i0.ɵɵelementStart(12, "strong");
44
+ i0.ɵɵtext(13, "*");
45
+ i0.ɵɵelementEnd()();
46
+ i0.ɵɵelementStart(14, "input", 11);
47
+ i0.ɵɵlistener("ngModelChange", function SchemaCustomAttributesComponent_div_1_Template_input_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.newCustomField.value = $event); })("dndDrop", function SchemaCustomAttributesComponent_div_1_Template_input_dndDrop_14_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.onDropAttr($event, "value", ctx_r15.newCustomField)); });
48
+ i0.ɵɵelementEnd()()()();
49
+ } if (rf & 2) {
50
+ const ctx_r1 = i0.ɵɵnextContext();
51
+ i0.ɵɵadvance(4);
52
+ i0.ɵɵtextInterpolate(ctx_r1.newCustomFieldNameLabel);
53
+ i0.ɵɵadvance(3);
54
+ i0.ɵɵproperty("ngModel", ctx_r1.newCustomField.label)("ngModelOptions", i0.ɵɵpureFunction0(6, _c0));
55
+ i0.ɵɵadvance(4);
56
+ i0.ɵɵtextInterpolate(ctx_r1.newCustomFieldValueLabel);
57
+ i0.ɵɵadvance(3);
58
+ i0.ɵɵproperty("ngModel", ctx_r1.newCustomField.value)("ngModelOptions", i0.ɵɵpureFunction0(7, _c0));
59
+ } }
60
+ function SchemaCustomAttributesComponent_button_4_Template(rf, ctx) { if (rf & 1) {
61
+ const _r17 = i0.ɵɵgetCurrentView();
62
+ i0.ɵɵelementStart(0, "button", 14);
63
+ i0.ɵɵlistener("click", function SchemaCustomAttributesComponent_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.newCustomField = {}); });
64
+ i0.ɵɵtext(1);
65
+ i0.ɵɵelementEnd();
66
+ } if (rf & 2) {
67
+ const ctx_r2 = i0.ɵɵnextContext();
68
+ i0.ɵɵadvance(1);
69
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.newCustomFieldAddLabel, " ");
70
+ } }
71
+ function SchemaCustomAttributesComponent_button_5_Template(rf, ctx) { if (rf & 1) {
72
+ const _r19 = i0.ɵɵgetCurrentView();
73
+ i0.ɵɵelementStart(0, "button", 15);
74
+ i0.ɵɵlistener("click", function SchemaCustomAttributesComponent_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.newCustomField = null); });
75
+ i0.ɵɵtext(1);
76
+ i0.ɵɵelementEnd();
77
+ } if (rf & 2) {
78
+ const ctx_r3 = i0.ɵɵnextContext();
79
+ i0.ɵɵadvance(1);
80
+ i0.ɵɵtextInterpolate1(" ", ctx_r3.newCustomFieldCancelLabel, " ");
81
+ } }
82
+ function SchemaCustomAttributesComponent_button_6_Template(rf, ctx) { if (rf & 1) {
83
+ const _r21 = i0.ɵɵgetCurrentView();
84
+ i0.ɵɵelementStart(0, "button", 14);
85
+ i0.ɵɵlistener("click", function SchemaCustomAttributesComponent_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.saveNewAttribute(ctx_r20.newCustomField)); });
86
+ i0.ɵɵtext(1);
87
+ i0.ɵɵelementEnd();
88
+ } if (rf & 2) {
89
+ const ctx_r4 = i0.ɵɵnextContext();
90
+ i0.ɵɵadvance(1);
91
+ i0.ɵɵtextInterpolate1(" ", ctx_r4.newCustomFieldSaveLabel, " ");
92
+ } }
93
+ class SchemaCustomAttributesComponent extends BaseSchemaComponent {
94
+ onDropFunction;
95
+ customAttributeRemoveLabel = 'Remove';
96
+ newCustomFieldNameLabel = 'Name';
97
+ newCustomFieldValueLabel = 'Value';
98
+ newCustomFieldAddLabel = 'Add';
99
+ newCustomFieldSaveLabel = 'Save';
100
+ newCustomFieldCancelLabel = 'Cancel';
101
+ onSaveAttribute = new EventEmitter();
102
+ onDropOnAttribute = new EventEmitter();
103
+ newCustomField;
104
+ ngAfterContentInit() {
105
+ if (!this.model) {
106
+ this.model = [];
107
+ }
108
+ }
109
+ saveNewAttribute(newCustomField) {
110
+ this.onSaveAttribute.emit(newCustomField);
111
+ this.model.push(newCustomField);
112
+ this.newCustomField = null;
113
+ this.modelChange.emit(this.model);
114
+ }
115
+ removeCustomAttribute(attributeIndex) {
116
+ this.model.splice(attributeIndex, 1);
117
+ this.modelChange.emit(this.model);
118
+ }
119
+ onDropAttr($event, value, newCustomField) {
120
+ if (!newCustomField[value]) {
121
+ newCustomField[value] = '';
122
+ }
123
+ newCustomField[value] += `{{${$event.data}}}`;
124
+ }
125
+ static ɵfac = /*@__PURE__*/ function () { let ɵSchemaCustomAttributesComponent_BaseFactory; return function SchemaCustomAttributesComponent_Factory(t) { return (ɵSchemaCustomAttributesComponent_BaseFactory || (ɵSchemaCustomAttributesComponent_BaseFactory = i0.ɵɵgetInheritedFactory(SchemaCustomAttributesComponent)))(t || SchemaCustomAttributesComponent); }; }();
126
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchemaCustomAttributesComponent, selectors: [["schema-custom-attributes"]], inputs: { onDropFunction: "onDropFunction", customAttributeRemoveLabel: "customAttributeRemoveLabel", newCustomFieldNameLabel: "newCustomFieldNameLabel", newCustomFieldValueLabel: "newCustomFieldValueLabel", newCustomFieldAddLabel: "newCustomFieldAddLabel", newCustomFieldSaveLabel: "newCustomFieldSaveLabel", newCustomFieldCancelLabel: "newCustomFieldCancelLabel" }, outputs: { onSaveAttribute: "onSaveAttribute", onDropOnAttribute: "onDropOnAttribute" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 5, consts: [["class", "row custom-attributes", 4, "ngFor", "ngForOf"], ["class", "struct-custom-field", 4, "ngIf"], [1, "row", "actions-buttons"], [1, "col-md-12", "pull-right"], ["class", "btn btn-outline-primary float-left", 3, "click", 4, "ngIf"], ["class", "btn btn-outline-danger float-left ml-2", 3, "click", 4, "ngIf"], [1, "row", "custom-attributes"], [1, "col-md-12"], [1, "info-label"], [1, "customAttributeDeleteIcon", 3, "click"], [1, "far", "fa-trash-alt", 3, "matTooltip"], ["dndDropzone", "", 1, "form-control", 3, "ngModel", "ngModelOptions", "ngModelChange", "dndDrop"], [1, "struct-custom-field"], [1, "row"], [1, "btn", "btn-outline-primary", "float-left", 3, "click"], [1, "btn", "btn-outline-danger", "float-left", "ml-2", 3, "click"]], template: function SchemaCustomAttributesComponent_Template(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵtemplate(0, SchemaCustomAttributesComponent_div_0_Template, 7, 5, "div", 0);
128
+ i0.ɵɵtemplate(1, SchemaCustomAttributesComponent_div_1_Template, 15, 8, "div", 1);
129
+ i0.ɵɵelementStart(2, "div", 2)(3, "div", 3);
130
+ i0.ɵɵtemplate(4, SchemaCustomAttributesComponent_button_4_Template, 2, 1, "button", 4);
131
+ i0.ɵɵtemplate(5, SchemaCustomAttributesComponent_button_5_Template, 2, 1, "button", 5);
132
+ i0.ɵɵtemplate(6, SchemaCustomAttributesComponent_button_6_Template, 2, 1, "button", 4);
133
+ i0.ɵɵelementEnd()();
134
+ } if (rf & 2) {
135
+ i0.ɵɵproperty("ngForOf", ctx.model);
136
+ i0.ɵɵadvance(1);
137
+ i0.ɵɵproperty("ngIf", ctx.newCustomField);
138
+ i0.ɵɵadvance(3);
139
+ i0.ɵɵproperty("ngIf", !ctx.newCustomField);
140
+ i0.ɵɵadvance(1);
141
+ i0.ɵɵproperty("ngIf", ctx.newCustomField);
142
+ i0.ɵɵadvance(1);
143
+ i0.ɵɵproperty("ngIf", ctx.newCustomField && ctx.newCustomField.label && ctx.newCustomField.value);
144
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2.DndDropzoneDirective, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.MatTooltip], styles: [".customAttributeDeleteIcon[_ngcontent-%COMP%]{position:absolute;right:15px;top:4px;cursor:pointer;font-size:16px;color:red}.customAttributeDeleteIcon[_ngcontent-%COMP%]:hover{color:#777}.struct-custom-field[_ngcontent-%COMP%]{margin-top:16px;padding:8px 16px 16px;background-color:#ececec}"] });
145
+ }
146
+ export { SchemaCustomAttributesComponent };
147
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchemaCustomAttributesComponent, [{
148
+ type: Component,
149
+ args: [{ selector: 'schema-custom-attributes', template: "<div class=\"row custom-attributes\" *ngFor=\"let attribute of model; let i = index\">\n <div class=\"col-md-12\">\n <label class=\"info-label\">{{ attribute.label }}</label>\n <span (click)=\"removeCustomAttribute(i)\" class=\"customAttributeDeleteIcon\">\n <i class=\"far fa-trash-alt\" [matTooltip]=\"this.customAttributeRemoveLabel\"></i>\n </span>\n\n <input\n class=\"form-control\"\n [(ngModel)]=\"attribute.value\"\n [ngModelOptions]=\"{standalone: true}\"\n dndDropzone\n (dndDrop)=\"onDropAttr($event, 'value', attribute)\"\n />\n </div>\n</div>\n<div *ngIf=\"newCustomField\" class=\"struct-custom-field\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <label class=\"info-label\">{{ this.newCustomFieldNameLabel }}<strong>*</strong></label>\n <input \n class=\"form-control\" \n [(ngModel)]=\"newCustomField.label\" \n [ngModelOptions]=\"{standalone: true}\"\n dndDropzone\n (dndDrop)=\"onDropAttr($event, 'label', newCustomField)\"\n />\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <label class=\"info-label\">{{ this.newCustomFieldValueLabel }}<strong>*</strong></label>\n <input\n class=\"form-control\"\n [(ngModel)]=\"newCustomField.value\"\n [ngModelOptions]=\"{standalone: true}\"\n dndDropzone\n (dndDrop)=\"onDropAttr($event, 'value', newCustomField)\"\n />\n </div>\n </div>\n</div>\n<div class=\"row actions-buttons\">\n <div class=\"col-md-12 pull-right\">\n <button class=\"btn btn-outline-primary float-left\" *ngIf=\"!newCustomField\" (click)=\"newCustomField = {}\">\n {{ this.newCustomFieldAddLabel }}\n </button>\n <button\n class=\"btn btn-outline-danger float-left ml-2\"\n *ngIf=\"newCustomField\"\n (click)=\"newCustomField = null\"\n >\n {{ this.newCustomFieldCancelLabel }}\n </button>\n <button\n class=\"btn btn-outline-primary float-left\"\n *ngIf=\"newCustomField && newCustomField.label && newCustomField.value\"\n (click)=\"saveNewAttribute(newCustomField)\"\n >\n {{ this.newCustomFieldSaveLabel }}\n </button>\n </div>\n</div>\n", styles: [".customAttributeDeleteIcon{position:absolute;right:15px;top:4px;cursor:pointer;font-size:16px;color:red}.customAttributeDeleteIcon:hover{color:#777}.struct-custom-field{margin-top:16px;padding:8px 16px 16px;background-color:#ececec}\n"] }]
150
+ }], null, { onDropFunction: [{
151
+ type: Input
152
+ }], customAttributeRemoveLabel: [{
153
+ type: Input
154
+ }], newCustomFieldNameLabel: [{
155
+ type: Input
156
+ }], newCustomFieldValueLabel: [{
157
+ type: Input
158
+ }], newCustomFieldAddLabel: [{
159
+ type: Input
160
+ }], newCustomFieldSaveLabel: [{
161
+ type: Input
162
+ }], newCustomFieldCancelLabel: [{
163
+ type: Input
164
+ }], onSaveAttribute: [{
165
+ type: Output
166
+ }], onDropOnAttribute: [{
167
+ type: Output
168
+ }] }); })();
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWN1c3RvbS1hdHRyaWJ1dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NoZW1hcy9zcmMvc2NoZW1hLWN1c3RvbS1hdHRyaWJ1dGVzL3NjaGVtYS1jdXN0b20tYXR0cmlidXRlcy50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaGVtYXMvc3JjL3NjaGVtYS1jdXN0b20tYXR0cmlidXRlcy9zY2hlbWEtY3VzdG9tLWF0dHJpYnV0ZXMuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7Ozs7Ozs7O0lDRDlELDhCQUFrRixhQUFBLGVBQUE7SUFFcEQsWUFBcUI7SUFBQSxpQkFBUTtJQUN2RCwrQkFBMkU7SUFBckUsOE5BQVMsZUFBQSxrQ0FBd0IsQ0FBQSxJQUFDO0lBQ3RDLHdCQUErRTtJQUNqRixpQkFBTztJQUVQLGlDQU1FO0lBSkEsOE5BQWEsMkNBQ2IsSUFENkIseU9BR2xCLGVBQUEsMkJBQW1CLE9BQU8sZUFBWSxDQUFBLElBSHBCO0lBRi9CLGlCQU1FLEVBQUEsRUFBQTs7OztJQVh3QixlQUFxQjtJQUFyQix3Q0FBcUI7SUFFakIsZUFBOEM7SUFBOUMsOERBQThDO0lBSzFFLGVBQTZCO0lBQTdCLDRDQUE2Qiw4Q0FBQTs7OztJQU9uQywrQkFBd0QsY0FBQSxhQUFBLGVBQUE7SUFHeEIsWUFBa0M7SUFBQSw4QkFBUTtJQUFBLGlCQUFDO0lBQUEsaUJBQVMsRUFBQTtJQUM5RSxpQ0FNRTtJQUpBLG1NQUFhLHFEQUNoQixJQURxQywwS0FHdkIsZUFBQSwyQkFBbUIsT0FBTyx5QkFBaUIsQ0FBQSxJQUhwQjtJQUZwQyxpQkFNRSxFQUFBLEVBQUE7SUFHTiwrQkFBaUIsYUFBQSxn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U0FBUzsyQkFDRSwwQkFBMEI7Z0JBTTNCLGNBQWM7a0JBQXRCLEtBQUs7WUFFRywwQkFBMEI7a0JBQWxDLEtBQUs7WUFDRyx1QkFBdUI7a0JBQS9CLEtBQUs7WUFDRyx3QkFBd0I7a0JBQWhDLEtBQUs7WUFDRyxzQkFBc0I7a0JBQTlCLEtBQUs7WUFDRyx1QkFBdUI7a0JBQS9CLEtBQUs7WUFDRyx5QkFBeUI7a0JBQWpDLEtBQUs7WUFFSSxlQUFlO2tCQUF4QixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmFzZVNjaGVtYUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc2NoZW1hLmNvbXBvbmVudCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2NoZW1hLWN1c3RvbS1hdHRyaWJ1dGVzJyxcbiAgdGVtcGxhdGVVcmw6ICdzY2hlbWEtY3VzdG9tLWF0dHJpYnV0ZXMuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NjaGVtYS1jdXN0b20tYXR0cmlidXRlcy5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2NoZW1hQ3VzdG9tQXR0cmlidXRlc0NvbXBvbmVudCBleHRlbmRzIEJhc2VTY2hlbWFDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcblxuICBASW5wdXQoKSBvbkRyb3BGdW5jdGlvbjogKCgkZXZlbnQ6IGFueSwgbW9kZWxFbGVtZW50OiBhbnkpID0+IGFueSB8IHVuZGVmaW5lZCkgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKSBjdXN0b21BdHRyaWJ1dGVSZW1vdmVMYWJlbCA9ICdSZW1vdmUnXG4gIEBJbnB1dCgpIG5ld0N1c3RvbUZpZWxkTmFtZUxhYmVsID0gJ05hbWUnXG4gIEBJbnB1dCgpIG5ld0N1c3RvbUZpZWxkVmFsdWVMYWJlbCA9ICdWYWx1ZSdcbiAgQElucHV0KCkgbmV3Q3VzdG9tRmllbGRBZGRMYWJlbCA9ICdBZGQnXG4gIEBJbnB1dCgpIG5ld0N1c3RvbUZpZWxkU2F2ZUxhYmVsID0gJ1NhdmUnXG4gIEBJbnB1dCgpIG5ld0N1c3RvbUZpZWxkQ2FuY2VsTGFiZWwgPSAnQ2FuY2VsJ1xuXG4gIEBPdXRwdXQoKSBvblNhdmVBdHRyaWJ1dGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIG9uRHJvcE9uQXR0cmlidXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG5cbiAgcHVibGljIG5ld0N1c3RvbUZpZWxkOiBhbnlcblxuICBuZ0FmdGVyQ29udGVudEluaXQgKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tb2RlbCkge1xuICAgICAgdGhpcy5tb2RlbCA9IFtdXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVOZXdBdHRyaWJ1dGUgKG5ld0N1c3RvbUZpZWxkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uU2F2ZUF0dHJpYnV0ZS5lbWl0KG5ld0N1c3RvbUZpZWxkKVxuICAgIHRoaXMubW9kZWwucHVzaChuZXdDdXN0b21GaWVsZClcbiAgICB0aGlzLm5ld0N1c3RvbUZpZWxkID0gbnVsbFxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKVxuICB9XG5cbiAgcHVibGljIHJlbW92ZUN1c3RvbUF0dHJpYnV0ZSAoYXR0cmlidXRlSW5kZXg6IGFueSk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuc3BsaWNlKGF0dHJpYnV0ZUluZGV4LCAxKVxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKVxuICB9XG5cbiAgcHVibGljIG9uRHJvcEF0dHIgKCRldmVudDogYW55LCB2YWx1ZTogYW55LCBuZXdDdXN0b21GaWVsZDogYW55KTogdm9pZCB7XG4gICAgaWYgKCFuZXdDdXN0b21GaWVsZFt2YWx1ZV0pIHtcbiAgICAgIG5ld0N1c3RvbUZpZWxkW3ZhbHVlXSA9ICcnXG4gICAgfVxuICAgIG5ld0N1c3RvbUZpZWxkW3ZhbHVlXSArPSBge3skeyRldmVudC5kYXRhfX19YFxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3cgY3VzdG9tLWF0dHJpYnV0ZXNcIiAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIG1vZGVsOyBsZXQgaSA9IGluZGV4XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJpbmZvLWxhYmVsXCI+e3sgYXR0cmlidXRlLmxhYmVsIH19PC9sYWJlbD5cbiAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlQ3VzdG9tQXR0cmlidXRlKGkpXCIgY2xhc3M9XCJjdXN0b21BdHRyaWJ1dGVEZWxldGVJY29uXCI+XG4gICAgICA8aSBjbGFzcz1cImZhciBmYS10cmFzaC1hbHRcIiBbbWF0VG9vbHRpcF09XCJ0aGlzLmN1c3RvbUF0dHJpYnV0ZVJlbW92ZUxhYmVsXCI+PC9pPlxuICAgIDwvc3Bhbj5cblxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgWyhuZ01vZGVsKV09XCJhdHRyaWJ1dGUudmFsdWVcIlxuICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICBkbmREcm9wem9uZVxuICAgICAgKGRuZERyb3ApPVwib25Ecm9wQXR0cigkZXZlbnQsICd2YWx1ZScsIGF0dHJpYnV0ZSlcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwibmV3Q3VzdG9tRmllbGRcIiBjbGFzcz1cInN0cnVjdC1jdXN0b20tZmllbGRcIj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImluZm8tbGFiZWxcIj57eyB0aGlzLm5ld0N1c3RvbUZpZWxkTmFtZUxhYmVsIH19PHN0cm9uZz4qPC9zdHJvbmc+PC9sYWJlbD5cbiAgICAgIDxpbnB1dCBcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBcbiAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdDdXN0b21GaWVsZC5sYWJlbFwiIFxuICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgZG5kRHJvcHpvbmVcbiAgICAgICAgKGRuZERyb3ApPVwib25Ecm9wQXR0cigkZXZlbnQsICdsYWJlbCcsIG5ld0N1c3RvbUZpZWxkKVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImluZm8tbGFiZWxcIj57eyB0aGlzLm5ld0N1c3RvbUZpZWxkVmFsdWVMYWJlbCB9fTxzdHJvbmc+Kjwvc3Ryb25nPjwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld0N1c3RvbUZpZWxkLnZhbHVlXCJcbiAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgIGRuZERyb3B6b25lXG4gICAgICAgIChkbmREcm9wKT1cIm9uRHJvcEF0dHIoJGV2ZW50LCAndmFsdWUnLCBuZXdDdXN0b21GaWVsZClcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJyb3cgYWN0aW9ucy1idXR0b25zXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgcHVsbC1yaWdodFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBmbG9hdC1sZWZ0XCIgKm5nSWY9XCIhbmV3Q3VzdG9tRmllbGRcIiAoY2xpY2spPVwibmV3Q3VzdG9tRmllbGQgPSB7fVwiPlxuICAgICAge3sgdGhpcy5uZXdDdXN0b21GaWVsZEFkZExhYmVsIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGZsb2F0LWxlZnQgbWwtMlwiXG4gICAgICAqbmdJZj1cIm5ld0N1c3RvbUZpZWxkXCJcbiAgICAgIChjbGljayk9XCJuZXdDdXN0b21GaWVsZCA9IG51bGxcIlxuICAgID5cbiAgICAgIHt7IHRoaXMubmV3Q3VzdG9tRmllbGRDYW5jZWxMYWJlbCB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtbGVmdFwiXG4gICAgICAqbmdJZj1cIm5ld0N1c3RvbUZpZWxkICYmIG5ld0N1c3RvbUZpZWxkLmxhYmVsICYmIG5ld0N1c3RvbUZpZWxkLnZhbHVlXCJcbiAgICAgIChjbGljayk9XCJzYXZlTmV3QXR0cmlidXRlKG5ld0N1c3RvbUZpZWxkKVwiXG4gICAgPlxuICAgICAge3sgdGhpcy5uZXdDdXN0b21GaWVsZFNhdmVMYWJlbCB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,81 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { SchemaValidationField } from './schema-validation-field';
3
+ import * as i0 from "@angular/core";
4
+ class SchemaFieldsService {
5
+ async validateSchemaFields(propertiesRendered, model, editing) {
6
+ if (!propertiesRendered) {
7
+ return new SchemaValidationField([], [], []);
8
+ }
9
+ const emptyFields = [];
10
+ const invalidMinLengthFields = [];
11
+ const invalidMaxLengthFields = [];
12
+ this.processProperties(propertiesRendered, model, editing, emptyFields, invalidMinLengthFields, invalidMaxLengthFields);
13
+ const structValidationField = new SchemaValidationField(emptyFields, invalidMinLengthFields, invalidMaxLengthFields);
14
+ structValidationField.validationErrorsLabel = await this.getErrorsStringArray(structValidationField);
15
+ return structValidationField;
16
+ }
17
+ processProperties(propertiesRendered, model, editing, emptyFields, invalidMinLengthFields, invalidMaxLengthFields, recursive) {
18
+ for (const property of propertiesRendered) {
19
+ if ((property.type === 'object' || property.type === 'array') && property.properties) {
20
+ this.processProperties(property.properties, model[property.id], editing, emptyFields, invalidMinLengthFields, invalidMaxLengthFields, true);
21
+ }
22
+ else if (property.type === 'array' && !property.properties) {
23
+ const newProperty = { ...property };
24
+ newProperty.type = 'string';
25
+ this.processProperties([newProperty], model[property.id], editing, emptyFields, invalidMinLengthFields, invalidMaxLengthFields, true);
26
+ }
27
+ else {
28
+ const validateModel = recursive ? model : model[property.id];
29
+ if (property.type !== 'password' || !editing || validateModel !== undefined) {
30
+ if (property?.canRender && property?.minLength > 0 &&
31
+ (validateModel === undefined || validateModel === '' || validateModel === null)) {
32
+ emptyFields.push(property);
33
+ }
34
+ else if (property?.canRender && property?.minLength > 0 && (validateModel?.length < property.minLength)) {
35
+ invalidMinLengthFields.push(property);
36
+ }
37
+ else if (property?.canRender && property?.maxLength > 0 && (validateModel?.length > property.maxLength)) {
38
+ invalidMaxLengthFields.push(property);
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+ async getErrorsStringArray(structValidation) {
45
+ if (!structValidation.isInvalidSchemaFields()) {
46
+ return [];
47
+ }
48
+ const errors = [];
49
+ for (const field of structValidation.emptyFields) {
50
+ const fieldName = field.title || field.id;
51
+ errors.push({
52
+ type: 'emptyFields',
53
+ fieldName
54
+ });
55
+ }
56
+ for (const field of structValidation.invalidMinLengthFields) {
57
+ const fieldName = field.title || field.id;
58
+ errors.push({
59
+ type: 'invalidMinLengthFields',
60
+ fieldName,
61
+ minLength: field.minLength
62
+ });
63
+ }
64
+ for (const field of structValidation.invalidMaxLengthFields) {
65
+ const fieldName = field.title || field.id;
66
+ errors.push({
67
+ type: 'invalidMaxLengthFields',
68
+ fieldName,
69
+ maxLength: field.maxLength
70
+ });
71
+ }
72
+ return errors;
73
+ }
74
+ static ɵfac = function SchemaFieldsService_Factory(t) { return new (t || SchemaFieldsService)(); };
75
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SchemaFieldsService, factory: SchemaFieldsService.ɵfac });
76
+ }
77
+ export { SchemaFieldsService };
78
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchemaFieldsService, [{
79
+ type: Injectable
80
+ }], null, null); })();
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWZpZWxkcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvc2NoZW1hcy9zcmMvc2NoZW1hLWZpZWxkcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7O0FBRWpFLE1BQ2EsbUJBQW1CO0lBRXZCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBRSxrQkFBeUIsRUFBRSxLQUFVLEVBQUUsT0FBZ0I7UUFDeEYsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1NBQzdDO1FBRUQsTUFBTSxXQUFXLEdBQVUsRUFBRSxDQUFBO1FBQzdCLE1BQU0sc0JBQXNCLEdBQVUsRUFBRSxDQUFBO1FBQ3hDLE1BQU0sc0JBQXNCLEdBQVUsRUFBRSxDQUFBO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQyxDQUFBO1FBRXZILE1BQU0scUJBQXFCLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQTtRQUNwSCxxQkFBcUIsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBRXBHLE9BQU8scUJBQXFCLENBQUE7SUFDOUIsQ0FBQztJQUVPLGlCQUFpQixDQUFFLGtCQUF5QixFQUNsRCxLQUFVLEVBQ1YsT0FBZ0IsRUFDaEIsV0FBa0IsRUFDbEIsc0JBQTZCLEVBQzdCLHNCQUE2QixFQUM3QixTQUFtQjtRQUNuQixLQUFL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LEtBQUssQ0FBQyxTQUFTO2FBQzNCLENBQUMsQ0FBQTtTQUNIO1FBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRTtZQUMzRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUE7WUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixTQUFTO2dCQUNULFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUzthQUMzQixDQUFDLENBQUE7U0FDSDtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQzs2RUFoRlUsbUJBQW1CO2dFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1COztTQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTY2hlbWFWYWxpZGF0aW9uRmllbGQgfSBmcm9tICcuL3NjaGVtYS12YWxpZGF0aW9uLWZpZWxkJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2NoZW1hRmllbGRzU2VydmljZSB7XG5cbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlU2NoZW1hRmllbGRzIChwcm9wZXJ0aWVzUmVuZGVyZWQ6IGFueVtdLCBtb2RlbDogYW55LCBlZGl0aW5nOiBib29sZWFuKTogUHJvbWlzZTxTY2hlbWFWYWxpZGF0aW9uRmllbGQ+IHtcbiAgICBpZiAoIXByb3BlcnRpZXNSZW5kZXJlZCkge1xuICAgICAgcmV0dXJuIG5ldyBTY2hlbWFWYWxpZGF0aW9uRmllbGQoW10sIFtdLCBbXSlcbiAgICB9XG5cbiAgICBjb25zdCBlbXB0eUZpZWxkczogYW55W10gPSBbXVxuICAgIGNvbnN0IGludmFsaWRNaW5MZW5ndGhGaWVsZHM6IGFueVtdID0gW11cbiAgICBjb25zdCBpbnZhbGlkTWF4TGVuZ3RoRmllbGRzOiBhbnlbXSA9IFtdXG4gICAgdGhpcy5wcm9jZXNzUHJvcGVydGllcyhwcm9wZXJ0aWVzUmVuZGVyZWQsIG1vZGVsLCBlZGl0aW5nLCBlbXB0eUZpZWxkcywgaW52YWxpZE1pbkxlbmd0aEZpZWxkcywgaW52YWxpZE1heExlbmd0aEZpZWxkcylcblxuICAgIGNvbnN0IHN0cnVjdFZhbGlkYXRpb25GaWVsZCA9IG5ldyBTY2hlbWFWYWxpZGF0aW9uRmllbGQoZW1wdHlGaWVsZHMsIGludmFsaWRNaW5MZW5ndGhGaWVsZHMsIGludmFsaWRNYXhMZW5ndGhGaWVsZHMpXG4gICAgc3RydWN0VmFsaWRhdGlvbkZpZWxkLnZhbGlkYXRpb25FcnJvcnNMYWJlbCA9IGF3YWl0IHRoaXMuZ2V0RXJyb3JzU3RyaW5nQXJyYXkoc3RydWN0VmFsaWRhdGlvbkZpZWxkKVxuXG4gICAgcmV0dXJuIHN0cnVjdFZhbGlkYXRpb25GaWVsZFxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUHJvcGVydGllcyAocHJvcGVydGllc1JlbmRlcmVkOiBhbnlbXSxcbiAgICBtb2RlbDogYW55LFxuICAgIGVkaXRpbmc6IGJvb2xlYW4sXG4gICAgZW1wdHlGaWVsZHM6IGFueVtdLFxuICAgIGludmFsaWRNaW5MZW5ndGhGaWVsZHM6IGFueVtdLFxuICAgIGludmFsaWRNYXhMZW5ndGhGaWVsZHM6IGFueVtdLFxuICAgIHJlY3Vyc2l2ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNSZW5kZXJlZCkge1xuICAgICAgaWYgKChwcm9wZXJ0eS50eXBlID09PSAnb2JqZWN0JyB8fCBwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSAmJiBwcm9wZXJ0eS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1Byb3BlcnRpZXMocHJvcGVydHkucHJvcGVydGllcywgbW9kZWxbcHJvcGVydHkuaWRdLCBlZGl0aW5nLFxuICAgICAgICAgIGVtcHR5RmllbGRzLCBpbnZhbGlkTWluTGVuZ3RoRmllbGRzLCBpbnZhbGlkTWF4TGVuZ3RoRmllbGRzLCB0cnVlKVxuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknICYmICFwcm9wZXJ0eS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIGNvbnN0IG5ld1Byb3BlcnR5ID0geyAuLi5wcm9wZXJ0eSB9XG4gICAgICAgIG5ld1Byb3BlcnR5LnR5cGUgPSAnc3RyaW5nJ1xuICAgICAgICB0aGlzLnByb2Nlc3NQcm9wZXJ0aWVzKFtuZXdQcm9wZXJ0eV0sIG1vZGVsW3Byb3BlcnR5LmlkXSwgZWRpdGluZyxcbiAgICAgICAgICBlbXB0eUZpZWxkcywgaW52YWxpZE1pbkxlbmd0aEZpZWxkcywgaW52YWxpZE1heExlbmd0aEZpZWxkcywgdHJ1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlTW9kZWwgPSByZWN1cnNpdmUgPyBtb2RlbCA6IG1vZGVsW3Byb3BlcnR5LmlkXVxuICAgICAgICBpZiAocHJvcGVydHkudHlwZSAhPT0gJ3Bhc3N3b3JkJyB8fCAhZWRpdGluZyB8fCB2YWxpZGF0ZU1vZGVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAocHJvcGVydHk/LmNhblJlbmRlciAmJiBwcm9wZXJ0eT8ubWluTGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgKHZhbGlkYXRlTW9kZWwgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0ZU1vZGVsID09PSAnJyB8fCB2YWxpZGF0ZU1vZGVsID09PSBudWxsKSkge1xuICAgICAgICAgICAgZW1wdHlGaWVsZHMucHVzaChwcm9wZXJ0eSlcbiAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5Py5jYW5SZW5kZXIgJiYgcHJvcGVydHk/Lm1pbkxlbmd0aCA+IDAgJiYgKHZhbGlkYXRlTW9kZWw/Lmxlbmd0aCA8IHByb3BlcnR5Lm1pbkxlbmd0aCkpIHtcbiAgICAgICAgICAgIGludmFsaWRNaW5MZW5ndGhGaWVsZHMucHVzaChwcm9wZXJ0eSlcbiAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5Py5jYW5SZW5kZXIgJiYgcHJvcGVydHk/Lm1heExlbmd0aCA+IDAgJiYgKHZhbGlkYXRlTW9kZWw/Lmxlbmd0aCA+IHByb3BlcnR5Lm1heExlbmd0aCkpIHtcbiAgICAgICAgICAgIGludmFsaWRNYXhMZW5ndGhGaWVsZHMucHVzaChwcm9wZXJ0eSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RXJyb3JzU3RyaW5nQXJyYXkgKHN0cnVjdFZhbGlkYXRpb246IFNjaGVtYVZhbGlkYXRpb25GaWVsZCk6XG4gIFByb21pc2U8QXJyYXk8eyB0eXBlOiBzdHJpbmcsIGZpZWxkTmFtZT86IHN0cmluZywgbWluTGVuZ3RoPzogbnVtYmVyLCBtYXhMZW5ndGg/OiBudW1iZXIgfT4+IHtcbiAgICBpZiAoIXN0cnVjdFZhbGlkYXRpb24uaXNJbnZhbGlkU2NoZW1hRmllbGRzKCkpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgICBjb25zdCBlcnJvcnMgPSBbXVxuICAgIGZvciAoY29uc3QgZmllbGQgb2Ygc3RydWN0VmFsaWRhdGlvbi5lbXB0eUZpZWxkcykge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGQudGl0bGUgfHwgZmllbGQuaWRcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ2VtcHR5RmllbGRzJyxcbiAgICAgICAgZmllbGROYW1lXG4gICAgICB9KVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHN0cnVjdFZhbGlkYXRpb24uaW52YWxpZE1pbkxlbmd0aEZpZWxkcykge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGQudGl0bGUgfHwgZmllbGQuaWRcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ2ludmFsaWRNaW5MZW5ndGhGaWVsZHMnLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIG1pbkxlbmd0aDogZmllbGQubWluTGVuZ3RoXG4gICAgICB9KVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHN0cnVjdFZhbGlkYXRpb24uaW52YWxpZE1heExlbmd0aEZpZWxkcykge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGQudGl0bGUgfHwgZmllbGQuaWRcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ2ludmFsaWRNYXhMZW5ndGhGaWVsZHMnLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIG1heExlbmd0aDogZmllbGQubWF4TGVuZ3RoXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3JzXG4gIH1cblxufVxuIl19