@dignite-ng/expand.dynamic-form 0.0.7 → 0.0.8

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 (28) hide show
  1. package/esm2022/lib/components/dynamic/dynamic.component.mjs +3 -3
  2. package/esm2022/lib/components/from/form-control-group.mjs +20 -3
  3. package/esm2022/lib/components/from/index.mjs +3 -3
  4. package/esm2022/lib/components/from/matrix/index.mjs +4 -0
  5. package/esm2022/lib/components/from/matrix/matrix-config.component.mjs +225 -0
  6. package/esm2022/lib/components/from/matrix/matrix-config.mjs +50 -0
  7. package/esm2022/lib/components/from/matrix/matrix-control.component.mjs +110 -0
  8. package/esm2022/lib/components/from/select/select-config.component.mjs +1 -1
  9. package/esm2022/lib/components/from/table/index.mjs +4 -0
  10. package/esm2022/lib/components/from/table/table-config.component.mjs +171 -0
  11. package/esm2022/lib/components/from/table/table-config.mjs +38 -0
  12. package/esm2022/lib/components/from/table/table-control.component.mjs +112 -0
  13. package/esm2022/lib/dynamic-form.module.mjs +22 -6
  14. package/fesm2022/dignite-ng-expand.dynamic-form.mjs +715 -21
  15. package/fesm2022/dignite-ng-expand.dynamic-form.mjs.map +1 -1
  16. package/lib/components/dynamic/dynamic.component.d.ts +2 -2
  17. package/lib/components/from/form-control-group.d.ts +1 -1
  18. package/lib/components/from/index.d.ts +2 -0
  19. package/lib/components/from/matrix/index.d.ts +3 -0
  20. package/lib/components/from/matrix/matrix-config.component.d.ts +72 -0
  21. package/lib/components/from/matrix/matrix-config.d.ts +24 -0
  22. package/lib/components/from/matrix/matrix-control.component.d.ts +39 -0
  23. package/lib/components/from/table/index.d.ts +3 -0
  24. package/lib/components/from/table/table-config.component.d.ts +57 -0
  25. package/lib/components/from/table/table-config.d.ts +18 -0
  26. package/lib/components/from/table/table-control.component.d.ts +36 -0
  27. package/lib/dynamic-form.module.d.ts +11 -8
  28. package/package.json +1 -1
@@ -96,12 +96,12 @@ class DynamicComponent {
96
96
  instance.culture = this._culture;
97
97
  }
98
98
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
99
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicComponent, selector: "df-dynamic", inputs: { selected: "selected", type: "type", entity: "entity", culture: "culture", parentFiledName: "parentFiledName", fields: "fields" }, viewQueries: [{ propertyName: "FormControlRef", first: true, predicate: ["FormControlRef"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "FormComponentsRef", first: true, predicate: ["FormComponentsRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<template #FormControlRef></template>\n<template #FormComponentsRef></template>", styles: [""] });
99
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicComponent, isStandalone: true, selector: "df-dynamic", inputs: { selected: "selected", type: "type", entity: "entity", culture: "culture", parentFiledName: "parentFiledName", fields: "fields" }, viewQueries: [{ propertyName: "FormControlRef", first: true, predicate: ["FormControlRef"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "FormComponentsRef", first: true, predicate: ["FormComponentsRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<template #FormControlRef></template>\n<template #FormComponentsRef></template>", styles: [""] });
100
100
  }
101
101
  export { DynamicComponent };
102
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicComponent, decorators: [{
103
103
  type: Component,
104
- args: [{ selector: 'df-dynamic', template: "<template #FormControlRef></template>\n<template #FormComponentsRef></template>" }]
104
+ args: [{ selector: 'df-dynamic', standalone: true, template: "<template #FormControlRef></template>\n<template #FormComponentsRef></template>" }]
105
105
  }], propDecorators: { selected: [{
106
106
  type: Input
107
107
  }], type: [{
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
121
121
  type: ViewChild,
122
122
  args: ['FormComponentsRef', { read: ViewContainerRef, static: true }]
123
123
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMvZHluYW1pYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMvZHluYW1pYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUU1QyxNQUthLGdCQUFnQjtJQUczQixhQUFhO0lBQ2IsU0FBUyxDQUFLO0lBQ2QsSUFDVyxRQUFRLENBQUMsQ0FBTTtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFekIsSUFBRyxDQUFDO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBR0QsWUFBWTtJQUNaLEtBQUssQ0FBUTtJQUNiLElBQ1csSUFBSSxDQUFDLENBQVM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFRCxVQUFVO0lBQ1YsT0FBTyxDQUF1QjtJQUM5QixJQUNXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFFakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNuQjtJQUNILENBQUM7SUFDRCxRQUFR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UUFFdEcscUNBQXFDO1FBQ3JDLGlCQUFpQjtRQUNqQixRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDOUIsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQzlCLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1FBQ2hELFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtRQUNsQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDbEMsQ0FBQzt3R0FoSFUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsMlJBeURVLGdCQUFnQiwrSEFHYixnQkFBZ0IsMkNDdEUxRCxpRkFDd0M7O1NEUzNCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLFlBQVk7OEJBVVgsUUFBUTtzQkFEbEIsS0FBSztnQkFXSyxJQUFJO3NCQURkLEtBQUs7Z0JBU0ssTUFBTTtzQkFEaEIsS0FBSztnQkFXSyxPQUFPO3NCQURqQixLQUFLO2dCQVNLLGVBQWU7c0JBRHpCLEtBQUs7Z0JBU0ssTUFBTTtzQkFEaEIsS0FBSztnQkFRaUUsY0FBYztzQkFBcEYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdLLGlCQUFpQjtzQkFBMUYsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRDb250cm9sR3JvdXBJbnRlcmZhY2VzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGaWVsZENvbnRyb2xHcm91cCB9IGZyb20gJy4uL2Zyb20nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZi1keW5hbWljJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0NvbXBvbmVudCB7XG5cblxuICAvKirpgInmi6nnmoTooajljZXkv6Hmga8gKi9cbiAgX3NlbGVjdGVkOiBhbnlcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZCh2OiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHYgfHwgJyc7XG4gICBcbiAgICBpZih2KSB0aGlzLmRhdGFMb2FkZWQoMSlcbiAgfVxuXG5cbiAgLyoq6KGo5Y2V5o6n5Lu257G75Z6LICovXG4gIF90eXBlOiBzdHJpbmdcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0eXBlKHY6IHN0cmluZykge1xuICAgIHRoaXMuX3R5cGUgPSB2O1xuICAgIGlmKHYpIHRoaXMuZGF0YUxvYWRlZCgyKVxuICB9XG5cbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIF9lbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVudGl0eSh2OiBhbnkpIHtcbiAgICBpZih2KSB7XG4gICAgICB0aGlzLl9lbnRpdHkgPSB2O1xuICAgICBcbiAgICAgIHRoaXMuZGF0YUxvYWRlZCgzKVxuICAgIH1cbiAgfVxuICAvKiror63oqIAgKi9cbiAgX2N1bHR1cmU6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGN1bHR1cmUodjogYW55KSB7XG4gICAgdGhpcy5fY3VsdHVyZSA9IHY7XG4gICAgaWYodikgdGhpcy5kYXRhTG9hZGVkKDYpXG4gIH1cblxuICAvKirniLbnuqflrZfmrrXlkI3np7DvvIznlKjkuo7kuLrooajljZXorr7nva7mjqfku7botYvlgLwgKi9cbiAgX3BhcmVudEZpbGVkTmFtZTogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFyZW50RmlsZWROYW1lKHY6IGFueSkge1xuICAgIHRoaXMuX3BhcmVudEZpbGVkTmFtZSA9IHY7XG4gICAgaWYodikgdGhpcy5kYXRhTG9hZGVkKDQpXG4gIH1cblxuICAvKirlrZfmrrXphY3nva7liJfooaggKi9cbiAgX2ZpZWxkczogYW55ID0gJydcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmaWVsZHModjogYW55KSB7XG4gICAgdGhpcy5fZmllbGRzID0gdjtcbiAgICBpZih2KSB0aGlzLmRhdGFMb2FkZWQoNSlcbiAgfVxuXG5cbiAgLyoq6KGo5Y2V5o6n5Lu25qih5p2/LeWKqOaAgeihqOWNlemFjee9rue7hOS7tiAqL1xuICBAVmlld0NoaWxkKCdGb3JtQ29udHJvbFJlZicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIEZvcm1Db250cm9sUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIC8qKuihqOWNleaOp+S7tuaooeadvy3liqjmgIHooajljZXnu4Tku7YgKi9cbiAgQFZpZXdDaGlsZCgnRm9ybUNvbXBvbmVudHNSZWYnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBGb3JtQ29tcG9uZW50c1JlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAvKirooajljZXmjqfku7bnu4QgKi9cbiAgX2ZpZWxkQ29udHJvbEdyb3VwOiBGaWVsZENvbnRyb2xHcm91cEludGVyZmFjZXNbXSA9IEZpZWxkQ29udHJvbEdyb3VwXG5cblxuICAvKirmlbDmja7liqDovb3lrozmiJAgKi9cbiAgZGF0YUxvYWRlZCh2YWwpIHtcbiAgICBpZiAodGhpcy5fZW50aXR5KSB7XG4gICAgICBpZiAodGhpcy5fdHlwZSkge1xuICAgICAgICBsZXQgZmllbGRDb250cm9sSXRlbSA9IHRoaXMuX2ZpZWxkQ29udHJvbEdyb3VwLmZpbmQoZWwgPT4gZWwubmFtZSA9PT0gdGhpcy5fdHlwZSlcbiAgICAgICAgdGhpcy5sb2FkZmllbGRDb25maWdDb21wb25lbnQoZmllbGRDb250cm9sSXRlbSlcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9maWVsZHMgJiYgdGhpcy5fcGFyZW50RmlsZWROYW1lKSB7XG4gICAgICAgIC8qKuihqOWNleaOp+S7tue7hOS4reeahOmhuSAqL1xuICAgICAgICBsZXQgZmllbGRDb250cm9sSXRlbSA9IHRoaXMuX2ZpZWxkQ29udHJvbEdyb3VwLmZpbmQoZWwgPT4gZWwubmFtZSA9PT0gdGhpcy5fZmllbGRzLmZpZWxkLmZvcm1Db250cm9sTmFtZSlcbiAgICAgICAgdGhpcy5sb2FkZmllbGRDb21wb25lbnQoZmllbGRDb250cm9sSXRlbSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG5cbiAgLyoq5Yqg6L295Yqo5oCB6KGo5Y2V6YWN572u57uE5Lu2ICovXG4gIGxvYWRmaWVsZENvbmZpZ0NvbXBvbmVudChGaWVsZENvbnRyb2xJdGVtPzogRmllbGRDb250cm9sR3JvdXBJbnRlcmZhY2VzKSB7XG4gICAgLy/muIXnqbrkuoblrrnlmajkuK3nmoTmiYDmnInnu4Tku7ZcbiAgICB0aGlzLkZvcm1Db250cm9sUmVmPy5jbGVhcigpO1xuICAgIGlmICghRmllbGRDb250cm9sSXRlbSB8fCAhRmllbGRDb250cm9sSXRlbS5maWVsZENvbmZpZ0NvbXBvbmVudCkgcmV0dXJuXG4gICAgLy/lnKjlrrnlmajkuK3liJvlu7rnu4Tku7ZcbiAgICBjb25zdCB7IGluc3RhbmNlIH0gPSB0aGlzLkZvcm1Db250cm9sUmVmPy5jcmVhdGVDb21wb25lbnQoRmllbGRDb250cm9sSXRlbS5maWVsZENvbmZpZ0NvbXBvbmVudCk7Ly/liJvlu7rnu4Tku7bmqKHmnb9cbiAgICAvKirlkJHliJvlu7rnmoTnu4Tku7bmqKHmnb/kuK3kvKDlgLwgKi9cbiAgICBpbnN0YW5jZS5FbnRpdHkgPSB0aGlzLl9lbnRpdHlcbiAgICBpbnN0YW5jZS5zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkXG4gICAgaW5zdGFuY2UudHlwZSA9IHRoaXMuX3R5cGVcbiAgfVxuXG4gIC8qKuWKoOi9veWKqOaAgeihqOWNlee7hOS7tiAqL1xuICBsb2FkZmllbGRDb21wb25lbnQoRmllbGRDb250cm9sSXRlbT86IEZpZWxkQ29udHJvbEdyb3VwSW50ZXJmYWNlcykge1xuICAgIC8vIHRoaXMuRm9ybUNvbnRyb2xSZWYuY2xlYXJcbiAgICAvL+a4heepuuS6huWuueWZqOS4reeahOaJgOaciee7hOS7tlxuICAgIHRoaXMuRm9ybUNvbXBvbmVudHNSZWY/LmNsZWFyKCk7XG4gICAgaWYgKCFGaWVsZENvbnRyb2xJdGVtIHx8ICFGaWVsZENvbnRyb2xJdGVtLmZpZWxkQ29tcG9uZW50KSByZXR1cm5cbiAgICAvL+WcqOWuueWZqOS4reWIm+W7uue7hOS7tlxuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IHRoaXMuRm9ybUNvbXBvbmVudHNSZWY/LmNyZWF0ZUNvbXBvbmVudChGaWVsZENvbnRyb2xJdGVtLmZpZWxkQ29tcG9uZW50KTsvL+WIm+W7uue7hOS7tuaooeadv1xuICAgIFxuICAgIC8vIHRoaXMuZm9ybUNvbmZpZ0NvbXBvZW50ID0gaW5zdGFuY2VcbiAgICAvKirlkJHliJvlu7rnmoTnu4Tku7bmqKHmnb/kuK3kvKDlgLwgKi9cbiAgICBpbnN0YW5jZS5lbnRpdHkgPSB0aGlzLl9lbnRpdHlcbiAgICBpbnN0YW5jZS5maWVsZHMgPSB0aGlzLl9maWVsZHNcbiAgICBpbnN0YW5jZS5wYXJlbnRGaWxlZE5hbWUgPSB0aGlzLl9wYXJlbnRGaWxlZE5hbWVcbiAgICBpbnN0YW5jZS5zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkXG4gICAgaW5zdGFuY2UuY3VsdHVyZSA9IHRoaXMuX2N1bHR1cmVcbiAgfVxufVxuIiwiPHRlbXBsYXRlICNGb3JtQ29udHJvbFJlZj48L3RlbXBsYXRlPlxuPHRlbXBsYXRlICNGb3JtQ29tcG9uZW50c1JlZj48L3RlbXBsYXRlPiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMvZHluYW1pYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMvZHluYW1pYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUU1QyxNQU1hLGdCQUFnQjtJQUczQixhQUFhO0lBQ2IsU0FBUyxDQUFLO0lBQ2QsSUFDVyxRQUFRLENBQUMsQ0FBTTtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFekIsSUFBRyxDQUFDO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBR0QsWUFBWTtJQUNaLEtBQUssQ0FBUTtJQUNiLElBQ1csSUFBSSxDQUFDLENBQVM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFRCxVQUFVO0lBQ1YsT0FBTyxDQUF1QjtJQUM5QixJQUNXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFFakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNuQjtJQUNILENBQUM7SUFDRCxRQUFR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UUFFdEcscUNBQXFDO1FBQ3JDLGlCQUFpQjtRQUNqQixRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDOUIsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQzlCLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1FBQ2hELFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtRQUNsQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDbEMsQ0FBQzt3R0FoSFUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsK1NBeURVLGdCQUFnQiwrSEFHYixnQkFBZ0IsMkNDdkUxRCxpRkFDd0M7O1NEVTNCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLFlBQVksY0FDWCxJQUFJOzhCQVVKLFFBQVE7c0JBRGxCLEtBQUs7Z0JBV0ssSUFBSTtzQkFEZCxLQUFLO2dCQVNLLE1BQU07c0JBRGhCLEtBQUs7Z0JBV0ssT0FBTztzQkFEakIsS0FBSztnQkFTSyxlQUFlO3NCQUR6QixLQUFLO2dCQVNLLE1BQU07c0JBRGhCLEtBQUs7Z0JBUWlFLGNBQWM7c0JBQXBGLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHSyxpQkFBaUI7c0JBQTFGLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIElucHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBleyBGaWVsZENvbnRyb2xHcm91cEludGVyZmFjZXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZpZWxkQ29udHJvbEdyb3VwIH0gZnJvbSAnLi4vZnJvbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RmLWR5bmFtaWMnLFxuICBzdGFuZGFsb25lOnRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNDb21wb25lbnQge1xuXG5cbiAgLyoq6YCJ5oup55qE6KGo5Y2V5L+h5oGvICovXG4gIF9zZWxlY3RlZDogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodjogYW55KSB7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSB2IHx8ICcnO1xuICAgXG4gICAgaWYodikgdGhpcy5kYXRhTG9hZGVkKDEpXG4gIH1cblxuXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xuICBfdHlwZTogc3RyaW5nXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdjtcbiAgICBpZih2KSB0aGlzLmRhdGFMb2FkZWQoMilcbiAgfVxuXG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBfZW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWRcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlbnRpdHkodjogYW55KSB7XG4gICAgaWYodikge1xuICAgICAgdGhpcy5fZW50aXR5ID0gdjtcbiAgICAgXG4gICAgICB0aGlzLmRhdGFMb2FkZWQoMylcbiAgICB9XG4gIH1cbiAgLyoq6K+t6KiAICovXG4gIF9jdWx0dXJlOiBGb3JtR3JvdXAgfCB1bmRlZmluZWRcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjdWx0dXJlKHY6IGFueSkge1xuICAgIHRoaXMuX2N1bHR1cmUgPSB2O1xuICAgIGlmKHYpIHRoaXMuZGF0YUxvYWRlZCg2KVxuICB9XG5cbiAgLyoq54i257qn5a2X5q615ZCN56ew77yM55So5LqO5Li66KGo5Y2V6K6+572u5o6n5Lu26LWL5YC8ICovXG4gIF9wYXJlbnRGaWxlZE5hbWU6IGFueVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBhcmVudEZpbGVkTmFtZSh2OiBhbnkpIHtcbiAgICB0aGlzLl9wYXJlbnRGaWxlZE5hbWUgPSB2O1xuICAgIGlmKHYpIHRoaXMuZGF0YUxvYWRlZCg0KVxuICB9XG5cbiAgLyoq5a2X5q616YWN572u5YiX6KGoICovXG4gIF9maWVsZHM6IGFueSA9ICcnXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZmllbGRzKHY6IGFueSkge1xuICAgIHRoaXMuX2ZpZWxkcyA9IHY7XG4gICAgaWYodikgdGhpcy5kYXRhTG9hZGVkKDUpXG4gIH1cblxuXG4gIC8qKuihqOWNleaOp+S7tuaooeadvy3liqjmgIHooajljZXphY3nva7nu4Tku7YgKi9cbiAgQFZpZXdDaGlsZCgnRm9ybUNvbnRyb2xSZWYnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBGb3JtQ29udHJvbFJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAvKirooajljZXmjqfku7bmqKHmnb8t5Yqo5oCB6KGo5Y2V57uE5Lu2ICovXG4gIEBWaWV3Q2hpbGQoJ0Zvcm1Db21wb25lbnRzUmVmJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgRm9ybUNvbXBvbmVudHNSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgLyoq6KGo5Y2V5o6n5Lu257uEICovXG4gIF9maWVsZENvbnRyb2xHcm91cDogRmllbGRDb250cm9sR3JvdXBJbnRlcmZhY2VzW10gPSBGaWVsZENvbnRyb2xHcm91cFxuXG5cbiAgLyoq5pWw5o2u5Yqg6L295a6M5oiQICovXG4gIGRhdGFMb2FkZWQodmFsKSB7XG4gICAgaWYgKHRoaXMuX2VudGl0eSkge1xuICAgICAgaWYgKHRoaXMuX3R5cGUpIHtcbiAgICAgICAgbGV0IGZpZWxkQ29udHJvbEl0ZW0gPSB0aGlzLl9maWVsZENvbnRyb2xHcm91cC5maW5kKGVsID0+IGVsLm5hbWUgPT09IHRoaXMuX3R5cGUpXG4gICAgICAgIHRoaXMubG9hZGZpZWxkQ29uZmlnQ29tcG9uZW50KGZpZWxkQ29udHJvbEl0ZW0pXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fZmllbGRzICYmIHRoaXMuX3BhcmVudEZpbGVkTmFtZSkge1xuICAgICAgICAvKirooajljZXmjqfku7bnu4TkuK3nmoTpobkgKi9cbiAgICAgICAgbGV0IGZpZWxkQ29udHJvbEl0ZW0gPSB0aGlzLl9maWVsZENvbnRyb2xHcm91cC5maW5kKGVsID0+IGVsLm5hbWUgPT09IHRoaXMuX2ZpZWxkcy5maWVsZC5mb3JtQ29udHJvbE5hbWUpXG4gICAgICAgIHRoaXMubG9hZGZpZWxkQ29tcG9uZW50KGZpZWxkQ29udHJvbEl0ZW0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuXG4gIC8qKuWKoOi9veWKqOaAgeihqOWNlemFjee9rue7hOS7tiAqL1xuICBsb2FkZmllbGRDb25maWdDb21wb25lbnQoRmllbGRDb250cm9sSXRlbT86IEZpZWxkQ29udHJvbEdyb3VwSW50ZXJmYWNlcykge1xuICAgIC8v5riF56m65LqG5a655Zmo5Lit55qE5omA5pyJ57uE5Lu2XG4gICAgdGhpcy5Gb3JtQ29udHJvbFJlZj8uY2xlYXIoKTtcbiAgICBpZiAoIUZpZWxkQ29udHJvbEl0ZW0gfHwgIUZpZWxkQ29udHJvbEl0ZW0uZmllbGRDb25maWdDb21wb25lbnQpIHJldHVyblxuICAgIC8v5Zyo5a655Zmo5Lit5Yib5bu657uE5Lu2XG4gICAgY29uc3QgeyBpbnN0YW5jZSB9ID0gdGhpcy5Gb3JtQ29udHJvbFJlZj8uY3JlYXRlQ29tcG9uZW50KEZpZWxkQ29udHJvbEl0ZW0uZmllbGRDb25maWdDb21wb25lbnQpOy8v5Yib5bu657uE5Lu25qih5p2/XG4gICAgLyoq5ZCR5Yib5bu655qE57uE5Lu25qih5p2/5Lit5Lyg5YC8ICovXG4gICAgaW5zdGFuY2UuRW50aXR5ID0gdGhpcy5fZW50aXR5XG4gICAgaW5zdGFuY2Uuc2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZFxuICAgIGluc3RhbmNlLnR5cGUgPSB0aGlzLl90eXBlXG4gIH1cblxuICAvKirliqDovb3liqjmgIHooajljZXnu4Tku7YgKi9cbiAgbG9hZGZpZWxkQ29tcG9uZW50KEZpZWxkQ29udHJvbEl0ZW0/OiBGaWVsZENvbnRyb2xHcm91cEludGVyZmFjZXMpIHtcbiAgICAvLyB0aGlzLkZvcm1Db250cm9sUmVmLmNsZWFyXG4gICAgLy/muIXnqbrkuoblrrnlmajkuK3nmoTmiYDmnInnu4Tku7ZcbiAgICB0aGlzLkZvcm1Db21wb25lbnRzUmVmPy5jbGVhcigpO1xuICAgIGlmICghRmllbGRDb250cm9sSXRlbSB8fCAhRmllbGRDb250cm9sSXRlbS5maWVsZENvbXBvbmVudCkgcmV0dXJuXG4gICAgLy/lnKjlrrnlmajkuK3liJvlu7rnu4Tku7ZcbiAgICBjb25zdCB7IGluc3RhbmNlIH0gPSB0aGlzLkZvcm1Db21wb25lbnRzUmVmPy5jcmVhdGVDb21wb25lbnQoRmllbGRDb250cm9sSXRlbS5maWVsZENvbXBvbmVudCk7Ly/liJvlu7rnu4Tku7bmqKHmnb9cbiAgICBcbiAgICAvLyB0aGlzLmZvcm1Db25maWdDb21wb2VudCA9IGluc3RhbmNlXG4gICAgLyoq5ZCR5Yib5bu655qE57uE5Lu25qih5p2/5Lit5Lyg5YC8ICovXG4gICAgaW5zdGFuY2UuZW50aXR5ID0gdGhpcy5fZW50aXR5XG4gICAgaW5zdGFuY2UuZmllbGRzID0gdGhpcy5fZmllbGRzXG4gICAgaW5zdGFuY2UucGFyZW50RmlsZWROYW1lID0gdGhpcy5fcGFyZW50RmlsZWROYW1lXG4gICAgaW5zdGFuY2Uuc2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZFxuICAgIGluc3RhbmNlLmN1bHR1cmUgPSB0aGlzLl9jdWx0dXJlXG4gIH1cbn1cbiIsIjx0ZW1wbGF0ZSAjRm9ybUNvbnRyb2xSZWY+PC90ZW1wbGF0ZT5cbjx0ZW1wbGF0ZSAjRm9ybUNvbXBvbmVudHNSZWY+PC90ZW1wbGF0ZT4iXX0=
@@ -2,10 +2,12 @@ import { CkEditorConfigComponent, CkEditorControlComponent } from "./ck-editor";
2
2
  import { DateEditConfigComponent } from "./date-edit/date-edit-config.component";
3
3
  import { DateEditControlComponent } from "./date-edit/date-edit-control.component";
4
4
  import { FileExplorerConfigComponent, FileExplorerControlComponent } from "./file-explorer";
5
+ import { MatrixConfigComponent, MatrixControlComponent } from "./matrix";
5
6
  import { NumbericEditConfigComponent } from "./numeric-edit/numberic-edit-config.component";
6
7
  import { NumbericEditControlComponent } from "./numeric-edit/numberic-edit-control.component";
7
8
  import { SelectConfigComponent, SelectControlComponent } from "./select";
8
9
  import { SwitchConfigComponent, SwitchControlComponent } from "./switch";
10
+ import { TableConfigComponent, TableControlComponent } from "./table";
9
11
  import { TextEditComponent, TextEditConfigComponent } from "./text-edit";
10
12
  /**
11
13
  * 表单控件分组-包含配置,控件,显示的数组
@@ -42,6 +44,20 @@ export const FieldControlGroup = [
42
44
  fieldComponent: DateEditControlComponent,
43
45
  // fieldViewComponent:TextBoxViewComponent,
44
46
  },
47
+ {
48
+ displayName: '表格',
49
+ name: 'Table',
50
+ fieldConfigComponent: TableConfigComponent,
51
+ fieldComponent: TableControlComponent,
52
+ // fieldViewComponent:TextBoxViewComponent,
53
+ },
54
+ {
55
+ displayName: '矩阵',
56
+ name: 'Matrix',
57
+ fieldConfigComponent: MatrixConfigComponent,
58
+ fieldComponent: MatrixControlComponent,
59
+ // fieldViewComponent:TextBoxViewComponent,
60
+ },
45
61
  {
46
62
  displayName: '文件管理',
47
63
  name: 'FileExplorer',
@@ -57,9 +73,10 @@ export const FieldControlGroup = [
57
73
  },
58
74
  ];
59
75
  export function getExcludeAssignControl(typeName) {
60
- return FieldControlGroup.filter(el => el.name !== typeName);
76
+ // return FieldControlGroup.filter(el => el.name !== typeName)
77
+ return FieldControlGroup;
61
78
  }
62
- export function AddFieldControlGroup(array) {
79
+ export function AddFieldControlGroup(array = []) {
63
80
  FieldControlGroup.push(...array);
64
81
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mcm9tL2Zvcm0tY29udHJvbC1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDRCQUE0QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDNUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBa0M7SUFDNUQ7UUFDSSxXQUFXLEVBQUUsS0FBSztRQUNsQixJQUFJLEVBQUUsVUFBVTtRQUNoQixvQkFBb0IsRUFBRSx1QkFBdUI7UUFDN0MsY0FBYyxFQUFFLGlCQUFpQjtRQUNqQywyQ0FBMkM7S0FDOUMsRUFBRTtRQUNDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLElBQUksRUFBRSxRQUFRO1FBQ2Qsb0JBQW9CLEVBQUUscUJBQXFCO1FBQzNDLGNBQWMsRUFBRSxzQkFBc0I7UUFDdEMsMkNBQTJDO0tBQzlDLEVBQUU7UUFDQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixJQUFJLEVBQUUsUUFBUTtRQUNkLG9CQUFvQixFQUFFLHFCQUFxQjtRQUMzQyxjQUFjLEVBQUUsc0JBQXNCO1FBQ3RDLDJDQUEyQztLQUM5QyxFQUFFO1FBQ0MsV0FBVyxFQUFFLElBQUk7UUFDakIsSUFBSSxFQUFFLGFBQWE7UUFDbkIsb0JBQW9CLEVBQUUsMkJBQTJCO1FBQ2pELGNBQWMsRUFBRSw0QkFBNEI7UUFDNUMsMkNBQTJDO0tBQzlDLEVBQUU7UUFDQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixJQUFJLEVBQUUsVUFBVTtRQUNoQixvQkFBb0IsRUFBRSx1QkFBdUI7UUFDN0MsY0FBYyxFQUFFLHdCQUF3QjtRQUN4QywyQ0FBMkM7S0FDOUM7SUFFQTtRQUNHLFdBQVcsRUFBRSxNQUFNO1FBQ25CLElBQUksRUFBRSxjQUFjO1FBQ3BCLG9CQUFvQixFQUFFLDJCQUEyQjtRQUNqRCxjQUFjLEVBQUUsNEJBQTRCO1FBQzVDLDJDQUEyQztLQUM5QyxFQUFFO1FBQ0MsV0FBVyxFQUFFLFVBQVU7UUFDdkIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsb0JBQW9CLEVBQUUsdUJBQXVCO1FBQzdDLGNBQWMsRUFBRSx3QkFBd0I7UUFDeEMsMkNBQTJDO0tBQzlDO0NBQ0osQ0FBQztBQUNGLE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxRQUFRO0lBQzVDLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQTtBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQUs7SUFDdEMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkQ29udHJvbEdyb3VwSW50ZXJmYWNlcyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IENrRWRpdG9yQ29uZmlnQ29tcG9uZW50LCBDa0VkaXRvckNvbnRyb2xDb21wb25lbnQgfSBmcm9tIFwiLi9jay1lZGl0b3JcIjtcclxuaW1wb3J0IHsgRGF0ZUVkaXRDb25maWdDb21wb25lbnQgfSBmcm9tIFwiLi9kYXRlLWVkaXQvZGF0ZS1lZGl0LWNvbmZpZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRGF0ZUVkaXRDb250cm9sQ29tcG9uZW50IH0gZnJvbSBcIi4vZGF0ZS1lZGl0L2RhdGUtZWRpdC1jb250cm9sLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGaWxlRXhwbG9yZXJDb25maWdDb21wb25lbnQsIEZpbGVFeHBsb3JlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tIFwiLi9maWxlLWV4cGxvcmVyXCI7XHJcbmltcG9ydCB7IE51bWJlcmljRWRpdENvbmZpZ0NvbXBvbmVudCB9IGZyb20gXCIuL251bWVyaWMtZWRpdC9udW1iZXJpYy1lZGl0LWNvbmZpZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTnVtYmVyaWNFZGl0Q29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL251bWVyaWMtZWRpdC9udW1iZXJpYy1lZGl0LWNvbnRyb2wuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNlbGVjdENvbmZpZ0NvbXBvbmVudCwgU2VsZWN0Q29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL3NlbGVjdFwiO1xyXG5pbXBvcnQgeyBTd2l0Y2hDb25maWdDb21wb25lbnQsIFN3aXRjaENvbnRyb2xDb21wb25lbnQgfSBmcm9tIFwiLi9zd2l0Y2hcIjtcclxuaW1wb3J0IHsgVGV4dEVkaXRDb21wb25lbnQsIFRleHRFZGl0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSBcIi4vdGV4dC1lZGl0XCI7XHJcblxyXG4vKipcclxuICog6KGo5Y2V5o6n5Lu25YiG57uELeWMheWQq+mFjee9ru+8jOaOp+S7tu+8jOaYvuekuueahOaVsOe7hFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEZpZWxkQ29udHJvbEdyb3VwOiBGaWVsZENvbnRyb2xHcm91cEludGVyZmFjZXNbXSA9IFtcclxuICAgIHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ+aWh+acrOahhicsXHJcbiAgICAgICAgbmFtZTogJ1RleHRFZGl0JyxcclxuICAgICAgICBmaWVsZENvbmZpZ0NvbXBvbmVudDogVGV4dEVkaXRDb25maWdDb21wb25lbnQsXHJcbiAgICAgICAgZmllbGRDb21wb25lbnQ6IFRleHRFZGl0Q29tcG9uZW50LFxyXG4gICAgICAgIC8vIGZpZWxkVmlld0NvbXBvbmVudDpUZXh0Qm94Vmlld0NvbXBvbmVudCxcclxuICAgIH0sIHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ+W8gOWFsycsXHJcbiAgICAgICAgbmFtZTogJ1N3aXRjaCcsXHJcbiAgICAgICAgZmllbGRDb25maWdDb21wb25lbnQ6IFN3aXRjaENvbmZpZ0NvbXBvbmVudCxcclxuICAgICAgICBmaWVsZENvbXBvbmVudDogU3dpdGNoQ29udHJvbENvbXBvbmVudCxcclxuICAgICAgICAvLyBmaWVsZFZpZXdDb21wb25lbnQ6VGV4dEJveFZpZXdDb21wb25lbnQsXHJcbiAgICB9LCB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfpgInmi6knLFxyXG4gICAgICAgIG5hbWU6ICdTZWxlY3QnLFxyXG4gICAgICAgIGZpZWxkQ29uZmlnQ29tcG9uZW50OiBTZWxlY3RDb25maWdDb21wb25lbnQsXHJcbiAgICAgICAgZmllbGRDb21wb25lbnQ6IFNlbGVjdENvbnRyb2xDb21wb25lbnQsXHJcbiAgICAgICAgLy8gZmllbGRWaWV3Q29tcG9uZW50OlRleHRCb3hWaWV3Q29tcG9uZW50LFxyXG4gICAgfSwge1xyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAn5pWw5a2XJyxcclxuICAgICAgICBuYW1lOiAnTnVtZXJpY0VkaXQnLFxyXG4gICAgICAgIGZpZWxkQ29uZmlnQ29tcG9uZW50OiBOdW1iZXJpY0VkaXRDb25maWdDb21wb25lbnQsXHJcbiAgICAgICAgZmllbGRDb21wb25lbnQ6IE51bWJlcmljRWRpdENvbnRyb2xDb21wb25lbnQsXHJcbiAgICAgICAgLy8gZmllbGRWaWV3Q29tcG9uZW50OlRleHRCb3hWaWV3Q29tcG9uZW50LFxyXG4gICAgfSwge1xyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAn5pel5pyfJyxcclxuICAgICAgICBuYW1lOiAnRGF0ZUVkaXQnLFxyXG4gICAgICAgIGZpZWxkQ29uZmlnQ29tcG9uZW50OiBEYXRlRWRpdENvbmZpZ0NvbXBvbmVudCxcclxuICAgICAgICBmaWVsZENvbXBvbmVudDogRGF0ZUVkaXRDb250cm9sQ29tcG9uZW50LFxyXG4gICAgICAgIC8vIGZpZWxkVmlld0NvbXBvbmVudDpUZXh0Qm94Vmlld0NvbXBvbmVudCxcclxuICAgIH0sXHJcblxyXG4gICAgIHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ+aWh+S7tueuoeeQhicsXHJcbiAgICAgICAgbmFtZTogJ0ZpbGVFeHBsb3JlcicsXHJcbiAgICAgICAgZmllbGRDb25maWdDb21wb25lbnQ6IEZpbGVFeHBsb3JlckNvbmZpZ0NvbXBvbmVudCxcclxuICAgICAgICBmaWVsZENvbXBvbmVudDogRmlsZUV4cGxvcmVyQ29udHJvbENvbXBvbmVudCxcclxuICAgICAgICAvLyBmaWVsZFZpZXdDb21wb25lbnQ6VGV4dEJveFZpZXdDb21wb25lbnQsXHJcbiAgICB9LCB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICdDa0VkaXRvcicsXHJcbiAgICAgICAgbmFtZTogJ0NrRWRpdG9yJyxcclxuICAgICAgICBmaWVsZENvbmZpZ0NvbXBvbmVudDogQ2tFZGl0b3JDb25maWdDb21wb25lbnQsXHJcbiAgICAgICAgZmllbGRDb21wb25lbnQ6IENrRWRpdG9yQ29udHJvbENvbXBvbmVudCxcclxuICAgICAgICAvLyBmaWVsZFZpZXdDb21wb25lbnQ6VGV4dEJveFZpZXdDb21wb25lbnQsXHJcbiAgICB9LFxyXG5dO1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhjbHVkZUFzc2lnbkNvbnRyb2wodHlwZU5hbWUpIHtcclxuICAgIHJldHVybiBGaWVsZENvbnRyb2xHcm91cC5maWx0ZXIoZWwgPT4gZWwubmFtZSAhPT0gdHlwZU5hbWUpXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBBZGRGaWVsZENvbnRyb2xHcm91cChhcnJheSkge1xyXG4gICAgRmllbGRDb250cm9sR3JvdXAucHVzaCguLi5hcnJheSlcclxufSJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mcm9tL2Zvcm0tY29udHJvbC1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDRCQUE0QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6RTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFrQztJQUM1RDtRQUNJLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLElBQUksRUFBRSxVQUFVO1FBQ2hCLG9CQUFvQixFQUFFLHVCQUF1QjtRQUM3QyxjQUFjLEVBQUUsaUJBQWlCO1FBQ2pDLDJDQUEyQztLQUM5QyxFQUFFO1FBQ0MsV0FBVyxFQUFFLElBQUk7UUFDakIsSUFBSSxFQUFFLFFBQVE7UUFDZCxvQkFBb0IsRUFBRSxxQkFBcUI7UUFDM0MsY0FBYyxFQUFFLHNCQUFzQjtRQUN0QywyQ0FBMkM7S0FDOUMsRUFBRTtRQUNDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLElBQUksRUFBRSxRQUFRO1FBQ2Qsb0JBQW9CLEVBQUUscUJBQXFCO1FBQzNDLGNBQWMsRUFBRSxzQkFBc0I7UUFDdEMsMkNBQTJDO0tBQzlDLEVBQUU7UUFDQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixJQUFJLEVBQUUsYUFBYTtRQUNuQixvQkFBb0IsRUFBRSwyQkFBMkI7UUFDakQsY0FBYyxFQUFFLDRCQUE0QjtRQUM1QywyQ0FBMkM7S0FDOUMsRUFBRTtRQUNDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLElBQUksRUFBRSxVQUFVO1FBQ2hCLG9CQUFvQixFQUFFLHVCQUF1QjtRQUM3QyxjQUFjLEVBQUUsd0JBQXdCO1FBQ3hDLDJDQUEyQztLQUM5QztJQUNEO1FBQ0ksV0FBVyxFQUFFLElBQUk7UUFDakIsSUFBSSxFQUFFLE9BQU87UUFDYixvQkFBb0IsRUFBRSxvQkFBb0I7UUFDMUMsY0FBYyxFQUFFLHFCQUFxQjtRQUNyQywyQ0FBMkM7S0FDOUM7SUFDRDtRQUNJLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLElBQUksRUFBRSxRQUFRO1FBQ2Qsb0JBQW9CLEVBQUUscUJBQXFCO1FBQzNDLGNBQWMsRUFBRSxzQkFBc0I7UUFDdEMsMkNBQTJDO0tBQzlDO0lBQ0E7UUFDRyxXQUFXLEVBQUUsTUFBTTtRQUNuQixJQUFJLEVBQUUsY0FBYztRQUNwQixvQkFBb0IsRUFBRSwyQkFBMkI7UUFDakQsY0FBYyxFQUFFLDRCQUE0QjtRQUM1QywyQ0FBMkM7S0FDOUMsRUFBRTtRQUNDLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLElBQUksRUFBRSxVQUFVO1FBQ2hCLG9CQUFvQixFQUFFLHVCQUF1QjtRQUM3QyxjQUFjLEVBQUUsd0JBQXdCO1FBQ3hDLDJDQUEyQztLQUM5QztDQUNKLENBQUM7QUFDRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsUUFBUTtJQUM1Qyw4REFBOEQ7SUFDOUQsT0FBTyxpQkFBaUIsQ0FBQTtBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQUssR0FBQyxFQUFFO0lBQ3pDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFBO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBUYWJsZUNvbmZpZ0NvbXBvbmVudCwgVGFibGVDb250cm9sQ29tcG9uZW50LCBNYXRyaXhDb25maWdDb21wb25lbnQsIE1hdHJpeENvbnRyb2xDb21wb25lbnQgfSBmcm9tIFwiQGRpZ25pdGUtbmcvZXhwYW5kLmNtc1wiO1xyXG5pbXBvcnQgIHsgRmllbGRDb250cm9sR3JvdXBJbnRlcmZhY2VzIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgQ2tFZGl0b3JDb25maWdDb21wb25lbnQsIENrRWRpdG9yQ29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL2NrLWVkaXRvclwiO1xyXG5pbXBvcnQgeyBEYXRlRWRpdENvbmZpZ0NvbXBvbmVudCB9IGZyb20gXCIuL2RhdGUtZWRpdC9kYXRlLWVkaXQtY29uZmlnLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBEYXRlRWRpdENvbnRyb2xDb21wb25lbnQgfSBmcm9tIFwiLi9kYXRlLWVkaXQvZGF0ZS1lZGl0LWNvbnRyb2wuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEZpbGVFeHBsb3JlckNvbmZpZ0NvbXBvbmVudCwgRmlsZUV4cGxvcmVyQ29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL2ZpbGUtZXhwbG9yZXJcIjtcclxuaW1wb3J0IHsgTWF0cml4Q29uZmlnQ29tcG9uZW50LCBNYXRyaXhDb250cm9sQ29tcG9uZW50IH0gZnJvbSBcIi4vbWF0cml4XCI7XHJcbmltcG9ydCB7IE51bWJlcmljRWRpdENvbmZpZ0NvbXBvbmVudCB9IGZyb20gXCIuL251bWVyaWMtZWRpdC9udW1iZXJpYy1lZGl0LWNvbmZpZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTnVtYmVyaWNFZGl0Q29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL251bWVyaWMtZWRpdC9udW1iZXJpYy1lZGl0LWNvbnRyb2wuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNlbGVjdENvbmZpZ0NvbXBvbmVudCwgU2VsZWN0Q29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL3NlbGVjdFwiO1xyXG5pbXBvcnQgeyBTd2l0Y2hDb25maWdDb21wb25lbnQsIFN3aXRjaENvbnRyb2xDb21wb25lbnQgfSBmcm9tIFwiLi9zd2l0Y2hcIjtcclxuaW1wb3J0IHsgVGFibGVDb25maWdDb21wb25lbnQsIFRhYmxlQ29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL3RhYmxlXCI7XHJcbmltcG9ydCB7IFRleHRFZGl0Q29tcG9uZW50LCBUZXh0RWRpdENvbmZpZ0NvbXBvbmVudCB9IGZyb20gXCIuL3RleHQtZWRpdFwiO1xyXG5cclxuLyoqXHJcbiAqIOihqOWNleaOp+S7tuWIhue7hC3ljIXlkKvphY3nva7vvIzmjqfku7bvvIzmmL7npLrnmoTmlbDnu4RcclxuICovXHJcbmV4cG9ydCBjb25zdCBGaWVsZENvbnRyb2xHcm91cDogRmllbGRDb250cm9sR3JvdXBJbnRlcmZhY2VzW10gPSBbXHJcbiAgICB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfmlofmnKzmoYYnLFxyXG4gICAgICAgIG5hbWU6ICdUZXh0RWRpdCcsXHJcbiAgICAgICAgZmllbGRDb25maWdDb21wb25lbnQ6IFRleHRFZGl0Q29uZmlnQ29tcG9uZW50LFxyXG4gICAgICAgIGZpZWxkQ29tcG9uZW50OiBUZXh0RWRpdENvbXBvbmVudCxcclxuICAgICAgICAvLyBmaWVsZFZpZXdDb21wb25lbnQ6VGV4dEJveFZpZXdDb21wb25lbnQsXHJcbiAgICB9LCB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICflvIDlhbMnLFxyXG4gICAgICAgIG5hbWU6ICdTd2l0Y2gnLFxyXG4gICAgICAgIGZpZWxkQ29uZmlnQ29tcG9uZW50OiBTd2l0Y2hDb25maWdDb21wb25lbnQsXHJcbiAgICAgICAgZmllbGRDb21wb25lbnQ6IFN3aXRjaENvbnRyb2xDb21wb25lbnQsXHJcbiAgICAgICAgLy8gZmllbGRWaWV3Q29tcG9uZW50OlRleHRCb3hWaWV3Q29tcG9uZW50LFxyXG4gICAgfSwge1xyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAn6YCJ5oupJyxcclxuICAgICAgICBuYW1lOiAnU2VsZWN0JyxcclxuICAgICAgICBmaWVsZENvbmZpZ0NvbXBvbmVudDogU2VsZWN0Q29uZmlnQ29tcG9uZW50LFxyXG4gICAgICAgIGZpZWxkQ29tcG9uZW50OiBTZWxlY3RDb250cm9sQ29tcG9uZW50LFxyXG4gICAgICAgIC8vIGZpZWxkVmlld0NvbXBvbmVudDpUZXh0Qm94Vmlld0NvbXBvbmVudCxcclxuICAgIH0sIHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ+aVsOWtlycsXHJcbiAgICAgICAgbmFtZTogJ051bWVyaWNFZGl0JyxcclxuICAgICAgICBmaWVsZENvbmZpZ0NvbXBvbmVudDogTnVtYmVyaWNFZGl0Q29uZmlnQ29tcG9uZW50LFxyXG4gICAgICAgIGZpZWxkQ29tcG9uZW50OiBOdW1iZXJpY0VkaXRDb250cm9sQ29tcG9uZW50LFxyXG4gICAgICAgIC8vIGZpZWxkVmlld0NvbXBvbmVudDpUZXh0Qm94Vmlld0NvbXBvbmVudCxcclxuICAgIH0sIHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ+aXpeacnycsXHJcbiAgICAgICAgbmFtZTogJ0RhdGVFZGl0JyxcclxuICAgICAgICBmaWVsZENvbmZpZ0NvbXBvbmVudDogRGF0ZUVkaXRDb25maWdDb21wb25lbnQsXHJcbiAgICAgICAgZmllbGRDb21wb25lbnQ6IERhdGVFZGl0Q29udHJvbENvbXBvbmVudCxcclxuICAgICAgICAvLyBmaWVsZFZpZXdDb21wb25lbnQ6VGV4dEJveFZpZXdDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAn6KGo5qC8JyxcclxuICAgICAgICBuYW1lOiAnVGFibGUnLFxyXG4gICAgICAgIGZpZWxkQ29uZmlnQ29tcG9uZW50OiBUYWJsZUNvbmZpZ0NvbXBvbmVudCxcclxuICAgICAgICBmaWVsZENvbXBvbmVudDogVGFibGVDb250cm9sQ29tcG9uZW50LFxyXG4gICAgICAgIC8vIGZpZWxkVmlld0NvbXBvbmVudDpUZXh0Qm94Vmlld0NvbXBvbmVudCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfnn6npmLUnLFxyXG4gICAgICAgIG5hbWU6ICdNYXRyaXgnLFxyXG4gICAgICAgIGZpZWxkQ29uZmlnQ29tcG9uZW50OiBNYXRyaXhDb25maWdDb21wb25lbnQsXHJcbiAgICAgICAgZmllbGRDb21wb25lbnQ6IE1hdHJpeENvbnRyb2xDb21wb25lbnQsXHJcbiAgICAgICAgLy8gZmllbGRWaWV3Q29tcG9uZW50OlRleHRCb3hWaWV3Q29tcG9uZW50LFxyXG4gICAgfSwgXHJcbiAgICAge1xyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAn5paH5Lu2566h55CGJyxcclxuICAgICAgICBuYW1lOiAnRmlsZUV4cGxvcmVyJyxcclxuICAgICAgICBmaWVsZENvbmZpZ0NvbXBvbmVudDogRmlsZUV4cGxvcmVyQ29uZmlnQ29tcG9uZW50LFxyXG4gICAgICAgIGZpZWxkQ29tcG9uZW50OiBGaWxlRXhwbG9yZXJDb250cm9sQ29tcG9uZW50LFxyXG4gICAgICAgIC8vIGZpZWxkVmlld0NvbXBvbmVudDpUZXh0Qm94Vmlld0NvbXBvbmVudCxcclxuICAgIH0sIHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ0NrRWRpdG9yJyxcclxuICAgICAgICBuYW1lOiAnQ2tFZGl0b3InLFxyXG4gICAgICAgIGZpZWxkQ29uZmlnQ29tcG9uZW50OiBDa0VkaXRvckNvbmZpZ0NvbXBvbmVudCxcclxuICAgICAgICBmaWVsZENvbXBvbmVudDogQ2tFZGl0b3JDb250cm9sQ29tcG9uZW50LFxyXG4gICAgICAgIC8vIGZpZWxkVmlld0NvbXBvbmVudDpUZXh0Qm94Vmlld0NvbXBvbmVudCxcclxuICAgIH0sXHJcbl07XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFeGNsdWRlQXNzaWduQ29udHJvbCh0eXBlTmFtZSkge1xyXG4gICAgLy8gcmV0dXJuIEZpZWxkQ29udHJvbEdyb3VwLmZpbHRlcihlbCA9PiBlbC5uYW1lICE9PSB0eXBlTmFtZSlcclxuICAgIHJldHVybiBGaWVsZENvbnRyb2xHcm91cFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQWRkRmllbGRDb250cm9sR3JvdXAoYXJyYXk9W10pIHtcclxuICAgIEZpZWxkQ29udHJvbEdyb3VwLnB1c2goLi4uYXJyYXkpXHJcbn0iXX0=
@@ -6,6 +6,6 @@ export * from './date-edit';
6
6
  export * from './file-explorer';
7
7
  export * from './form-control-group';
8
8
  export * from './select';
9
- // export * from './matrix'
10
- // export * from './table'
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zyb20vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxVQUFVLENBQUE7QUFDeEIsMkJBQTJCO0FBQzNCLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGV4dC1lZGl0J1xyXG5leHBvcnQgKiBmcm9tICcuL3N3aXRjaCdcclxuZXhwb3J0ICogZnJvbSAnLi9udW1lcmljLWVkaXQnXHJcbmV4cG9ydCAqIGZyb20gJy4vY2stZWRpdG9yJ1xyXG5leHBvcnQgKiBmcm9tICcuL2RhdGUtZWRpdCdcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlLWV4cGxvcmVyJ1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tY29udHJvbC1ncm91cCdcclxuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QnXHJcbi8vIGV4cG9ydCAqIGZyb20gJy4vbWF0cml4J1xyXG4vLyBleHBvcnQgKiBmcm9tICcuL3RhYmxlJyJdfQ==
9
+ export * from './matrix';
10
+ export * from './table';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zyb20vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxTQUFTLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RleHQtZWRpdCdcclxuZXhwb3J0ICogZnJvbSAnLi9zd2l0Y2gnXHJcbmV4cG9ydCAqIGZyb20gJy4vbnVtZXJpYy1lZGl0J1xyXG5leHBvcnQgKiBmcm9tICcuL2NrLWVkaXRvcidcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRlLWVkaXQnXHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS1leHBsb3JlcidcclxuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWNvbnRyb2wtZ3JvdXAnXHJcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0J1xyXG5leHBvcnQgKiBmcm9tICcuL21hdHJpeCdcclxuZXhwb3J0ICogZnJvbSAnLi90YWJsZSciXX0=
@@ -0,0 +1,4 @@
1
+ export * from './matrix-config';
2
+ export * from './matrix-control.component';
3
+ export * from './matrix-config.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zyb20vbWF0cml4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDJCQUEyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXRyaXgtY29uZmlnJ1xyXG5leHBvcnQgKiBmcm9tICcuL21hdHJpeC1jb250cm9sLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9tYXRyaXgtY29uZmlnLmNvbXBvbmVudCciXX0=
@@ -0,0 +1,225 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
3
+ import { MatrixConfig, MatrixItemConfig } from './matrix-config';
4
+ import { getExcludeAssignControl } from '../form-control-group';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "../../../services";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@abp/ng.core";
10
+ import * as i5 from "@ngx-validate/core";
11
+ import * as i6 from "@abp/ng.theme.shared";
12
+ import * as i7 from "@ng-bootstrap/ng-bootstrap";
13
+ class MatrixConfigComponent {
14
+ fb;
15
+ _DfApiService;
16
+ constructor(fb, _DfApiService) {
17
+ this.fb = fb;
18
+ this._DfApiService = _DfApiService;
19
+ }
20
+ /**表单控件组 */
21
+ _FieldControlGroup;
22
+ /**表单控件类型 */
23
+ _type;
24
+ set type(v) {
25
+ this._type = v;
26
+ this.dataLoaded();
27
+ }
28
+ /**表单实体 */
29
+ _Entity;
30
+ set Entity(v) {
31
+ this._Entity = v;
32
+ this.dataLoaded();
33
+ }
34
+ /**选择的表单信息 */
35
+ _selected;
36
+ set selected(v) {
37
+ if (v) {
38
+ this._selected = v;
39
+ this.dataLoaded();
40
+ }
41
+ }
42
+ submitclick;
43
+ async dataLoaded() {
44
+ if (this._Entity && this._type) {
45
+ await this.AfterInit();
46
+ this.submitclick.nativeElement.click();
47
+ }
48
+ }
49
+ AfterInit() {
50
+ return new Promise(async (resolve, rejects) => {
51
+ this._FieldControlGroup = getExcludeAssignControl(this._type);
52
+ // this._FieldControlGroup = getExcludeAssignControl(this._type)
53
+ this._Entity.setControl('formConfiguration', this.fb.group(new MatrixConfig()));
54
+ await this.setSelectValue();
55
+ this.formConfiguration.patchValue(this._selected.formConfiguration);
56
+ resolve(true);
57
+ });
58
+ }
59
+ setSelectValue() {
60
+ return new Promise((resolve, rejects) => {
61
+ if (this._selected && this._selected.formControlName == this._type) {
62
+ this._selected.formConfiguration['MatrixBlockTypes'].forEach(((el, index) => {
63
+ this.addMatrixBlockTypeItem(el);
64
+ el.fields.forEach((elf, indexf) => {
65
+ this.addMatrixFieldItem(elf, index);
66
+ });
67
+ }));
68
+ resolve(true);
69
+ }
70
+ });
71
+ }
72
+ /**获取表单配置 */
73
+ get formConfiguration() {
74
+ return this._Entity.get('formConfiguration');
75
+ }
76
+ /**获取表单配置下的矩阵块表单数组 */
77
+ get MatrixBlockTypes() {
78
+ return this.formConfiguration.controls['MatrixBlockTypes'];
79
+ }
80
+ /**模态框-状态 */
81
+ matrixModalOpen = false;
82
+ /**模态框-是否正在编辑 */
83
+ isMatrixModalEdit = false;
84
+ /**模态框-用于确定模态的繁忙状态是否为真 */
85
+ modalBusy = false;
86
+ /**模态框-表单 */
87
+ matrixModalForm;
88
+ /**表单控件模板-用于在form外提交submit */
89
+ matrixModalModalSubmit;
90
+ /**矩阵块-选择的下标 */
91
+ selectMatrixBlockIndex = 0;
92
+ /**矩阵块-选择的矩阵下字段的下标 */
93
+ selectMatrixFieldIndex = 0;
94
+ /**模态框-状态改变 */
95
+ matrixModalVisibleChange(event) {
96
+ if (!event) {
97
+ this.isMatrixModalEdit = false;
98
+ this.matrixModalForm = undefined;
99
+ return;
100
+ }
101
+ }
102
+ /**矩阵块--新增-打开模态框 */
103
+ addMatrixBlockType() {
104
+ this.matrixModalForm = this.fb.group(new MatrixItemConfig());
105
+ this.matrixModalOpen = true;
106
+ }
107
+ /**模态框--矩阵表单保存提交 */
108
+ createOrEditSave() {
109
+ let input = this.matrixModalForm.value;
110
+ if (!this.matrixModalForm.valid)
111
+ return;
112
+ if (this.isMatrixModalEdit) {
113
+ let MatrixBlockTypesItem = this.MatrixBlockTypes.at(this.selectMatrixBlockIndex);
114
+ MatrixBlockTypesItem.patchValue({
115
+ ...input
116
+ });
117
+ }
118
+ else {
119
+ this.addMatrixBlockTypeItem(input);
120
+ }
121
+ this.matrixModalOpen = false;
122
+ }
123
+ /**新增矩阵块-向数组表单中增加项 */
124
+ addMatrixBlockTypeItem(input) {
125
+ this.MatrixBlockTypes.push(new FormGroup({
126
+ displayName: new FormControl(input.displayName, Validators.required),
127
+ name: new FormControl(input.name, Validators.required),
128
+ fields: new FormArray([])
129
+ }));
130
+ }
131
+ /**编辑矩阵块 */
132
+ EditMatrixBlock(input) {
133
+ this.matrixModalForm = this.fb.group(new MatrixItemConfig());
134
+ this.matrixModalForm.patchValue({
135
+ ...input
136
+ });
137
+ this.matrixModalOpen = true;
138
+ this.isMatrixModalEdit = true;
139
+ }
140
+ /**删除矩阵块 */
141
+ DeleteMatrixBlock(index) {
142
+ this.MatrixBlockTypes.removeAt(index);
143
+ }
144
+ /**矩阵块-选择 */
145
+ selectMatrixBlockChange(index) {
146
+ this.selectMatrixBlockIndex = index;
147
+ }
148
+ /**矩阵字段-新增 */
149
+ addMatrixField() {
150
+ this.addMatrixFieldItem('', this.selectMatrixBlockIndex);
151
+ }
152
+ /**矩阵字段-新增矩阵字段项 */
153
+ addMatrixFieldItem(input = '', selectMatrixBlockIndex) {
154
+ /**矩阵下标的矩阵项Form */
155
+ let MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(selectMatrixBlockIndex);
156
+ let MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields');
157
+ MatrixFieldItemForm.push(this.fb.group({
158
+ /**字段名称 Display name of this field */
159
+ displayName: [input.displayName, [Validators.required]],
160
+ /**字段唯一名称 Unique Name*/
161
+ name: [input.name, [Validators.required]],
162
+ /**描述 说明 */
163
+ description: [input.description, []],
164
+ /**FieldType字段类型 表单控件名称 */
165
+ formControlName: [input.formControlName || 'TextEdit', [Validators.required]],
166
+ //动态表单配置
167
+ formConfiguration: new FormGroup({}),
168
+ }));
169
+ }
170
+ /**删除矩阵字段项 */
171
+ deleteMatrixField(MatrixFieldForm, index) {
172
+ MatrixFieldForm.removeAt(index);
173
+ this.selectMatrixFieldIndex = 0;
174
+ }
175
+ /**矩阵字段-选择 */
176
+ selectMatrixFieldChange(MatrixBlockIndex, MatrixFieldIndex) {
177
+ this.selectMatrixFieldIndex = MatrixFieldIndex;
178
+ }
179
+ get nameInput() {
180
+ return this.matrixModalForm?.get('name');
181
+ }
182
+ get FieldnameInput() {
183
+ let MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(this.selectMatrixBlockIndex);
184
+ let MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields');
185
+ return MatrixFieldItemForm.at(this.selectMatrixFieldIndex).get('name');
186
+ }
187
+ /**矩阵displayNameInput字段失去焦点 */
188
+ displayNameInputBlur(event) {
189
+ let value = event.target.value;
190
+ let pinyin = this._DfApiService.chineseToPinyin(value);
191
+ let nameInput = this.nameInput;
192
+ if (nameInput.value)
193
+ return;
194
+ nameInput.patchValue(pinyin);
195
+ }
196
+ /**矩阵displayNameInput字段失去焦点 */
197
+ MatrixFieldDisplayNameInputBlur(event) {
198
+ let value = event.target.value;
199
+ let pinyin = this._DfApiService.chineseToPinyin(value);
200
+ let FieldnameInput = this.FieldnameInput;
201
+ if (FieldnameInput.value)
202
+ return;
203
+ FieldnameInput.patchValue(pinyin);
204
+ }
205
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixConfigComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DfApiService }], target: i0.ɵɵFactoryTarget.Component });
206
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MatrixConfigComponent, selector: "df-matrix-config", inputs: { type: "type", Entity: "Entity", selected: "selected" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "matrixModalModalSubmit", first: true, predicate: ["matrixModalModalSubmit"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let item of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\">\n <ng-container *ngFor=\"let item of _FieldControlGroup;let i =index\">\n <option [value]=\"item.name\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <ng-container *ngIf=\"item.value.formControlName&&item\">\n <df-dynamic [type]=\"item.value.formControlName\" [entity]=\"item\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n\n\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i4.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i5.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i6.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
207
+ }
208
+ export { MatrixConfigComponent };
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixConfigComponent, decorators: [{
210
+ type: Component,
211
+ args: [{ selector: 'df-matrix-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let item of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\">\n <ng-container *ngFor=\"let item of _FieldControlGroup;let i =index\">\n <option [value]=\"item.name\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <ng-container *ngIf=\"item.value.formControlName&&item\">\n <df-dynamic [type]=\"item.value.formControlName\" [entity]=\"item\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n\n\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>" }]
212
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.DfApiService }]; }, propDecorators: { type: [{
213
+ type: Input
214
+ }], Entity: [{
215
+ type: Input
216
+ }], selected: [{
217
+ type: Input
218
+ }], submitclick: [{
219
+ type: ViewChild,
220
+ args: ['submitclick', { static: true }]
221
+ }], matrixModalModalSubmit: [{
222
+ type: ViewChild,
223
+ args: ['matrixModalModalSubmit', { static: false }]
224
+ }] } });
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zyb20vbWF0cml4L21hdHJpeC1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mcm9tL21hdHJpeC9tYXRyaXgtY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBZSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBRWhFLE1BS2EscUJBQXFCO0lBR3RCO0lBQ0E7SUFGVixZQUNVLEVBQWUsRUFDZixhQUEyQjtRQUQzQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2Ysa0JBQWEsR0FBYixhQUFhLENBQWM7SUFDbEMsQ0FBQztJQUVKLFdBQVc7SUFDWCxrQkFBa0IsQ0FBTztJQUN6QixZQUFZO0lBQ1osS0FBSyxDQUFLO0lBQ1YsSUFDVyxJQUFJLENBQUMsQ0FBTTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQTtRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBQ0QsVUFBVTtJQUNWLE9BQU8sQ0FBdUI7SUFDOUIsSUFDVyxNQUFNLENBQUMsQ0FBWTtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFH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QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdHJpeENvbmZpZywgTWF0cml4SXRlbUNvbmZpZyB9IGZyb20gJy4vbWF0cml4LWNvbmZpZyc7XG5pbXBvcnQgeyBEZkFwaVNlcnZpY2UsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZ2V0RXhjbHVkZUFzc2lnbkNvbnRyb2wgfSBmcm9tICcuLi9mb3JtLWNvbnRyb2wtZ3JvdXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZi1tYXRyaXgtY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdHJpeC1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXRyaXgtY29uZmlnLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWF0cml4Q29uZmlnQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIF9EZkFwaVNlcnZpY2U6IERmQXBpU2VydmljZSxcbiAgKSB7fVxuXG4gIC8qKuihqOWNleaOp+S7tue7hCAqL1xuICBfRmllbGRDb250cm9sR3JvdXA6IGFueVtdXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xuICBfdHlwZTogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBhbnkpIHtcbiAgICB0aGlzLl90eXBlID0gdlxuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIF9FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IEVudGl0eSh2OiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9FbnRpdHkgPSB2O1xuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cblxuXG4gIC8qKumAieaLqeeahOihqOWNleS/oeaBryAqL1xuICBfc2VsZWN0ZWQ6IGFueVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xuICAgIFxuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHZcbiAgICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gICAgfVxuICB9XG5cblxuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuXG4gIGFzeW5jIGRhdGFMb2FkZWQoKSB7XG4gICAgaWYgKHRoaXMuX0VudGl0eSAmJiB0aGlzLl90eXBlKSB7XG4gICAgICBhd2FpdCB0aGlzLkFmdGVySW5pdCgpXG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9GaWVsZENvbnRyb2xHcm91cCA9IGdldEV4Y2x1ZGVBc3NpZ25Db250cm9sKHRoaXMuX3R5cGUpXG4gICAgICAvLyB0aGlzLl9GaWVsZENvbnRyb2xHcm91cCA9IGdldEV4Y2x1ZGVBc3NpZ25Db250cm9sKHRoaXMuX3R5cGUpXG4gICAgICB0aGlzLl9FbnRpdHkuc2V0Q29udHJvbCgnZm9ybUNvbmZpZ3VyYXRpb24nLCB0aGlzLmZiLmdyb3VwKG5ldyBNYXRyaXhDb25maWcoKSkpXG4gICAgICBhd2FpdCB0aGlzLnNldFNlbGVjdFZhbHVlKClcbiAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24ucGF0Y2hWYWx1ZSh0aGlzLl9zZWxlY3RlZC5mb3JtQ29uZmlndXJhdGlvbilcbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9KVxuICB9XG5cbiAgc2V0U2VsZWN0VmFsdWUoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWQgJiYgdGhpcy5fc2VsZWN0ZWQuZm9ybUNvbnRyb2xOYW1lID09IHRoaXMuX3R5cGUpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb25bJ01hdHJpeEJsb2NrVHlwZXMnXS5mb3JFYWNoKCgoZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRNYXRyaXhCbG9ja1R5cGVJdGVtKGVsKVxuICAgICAgICAgIGVsLmZpZWxkcy5mb3JFYWNoKChlbGYsIGluZGV4ZikgPT4ge1xuICAgICAgICAgICAgdGhpcy5hZGRNYXRyaXhGaWVsZEl0ZW0oZWxmLCBpbmRleClcbiAgICAgICAgICB9KVxuICAgICAgICB9KSlcbiAgICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKirojrflj5booajljZXphY3nva4gKi9cbiAgZ2V0IGZvcm1Db25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9FbnRpdHkuZ2V0KCdmb3JtQ29uZmlndXJhdGlvbicpIGFzIEZvcm1Hcm91cFxuICB9XG5cbiAgLyoq6I635Y+W6KGo5Y2V6YWN572u5LiL55qE55+p6Zi15Z2X6KGo5Y2V5pWw57uEICovXG4gIGdldCBNYXRyaXhCbG9ja1R5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWd1cmF0aW9uLmNvbnRyb2xzWydNYXRyaXhCbG9ja1R5cGVzJ10gYXMgRm9ybUFycmF5XG4gIH1cblxuXG4gIC8qKuaooeaAgeahhi3nirbmgIEgKi9cbiAgbWF0cml4TW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2VcbiAgLyoq5qih5oCB5qGGLeaYr+WQpuato+WcqOe8lui+kSAqL1xuICBpc01hdHJpeE1vZGFsRWRpdDogYW55ID0gZmFsc2VcblxuICAvKirmqKHmgIHmoYYt55So5LqO56Gu5a6a5qih5oCB55qE57mB5b+Z54q25oCB5piv5ZCm5Li655yfICovXG4gIG1vZGFsQnVzeTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgLyoq5qih5oCB5qGGLeihqOWNlSAqL1xuICBtYXRyaXhNb2RhbEZvcm06IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcblxuICAvKirooajljZXmjqfku7bmqKHmnb8t55So5LqO5ZyoZm9ybeWkluaPkOS6pHN1Ym1pdCAqL1xuICBAVmlld0NoaWxkKCdtYXRyaXhNb2RhbE1vZGFsU3VibWl0JywgeyBzdGF0aWM6IGZhbHNlIH0pIG1hdHJpeE1vZGFsTW9kYWxTdWJtaXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoq55+p6Zi15Z2XLemAieaLqeeahOS4i+aghyAqL1xuICBzZWxlY3RNYXRyaXhCbG9ja0luZGV4OiBhbnkgPSAwXG5cbiAgLyoq55+p6Zi15Z2XLemAieaLqeeahOefqemYteS4i+Wtl+auteeahOS4i+aghyAqL1xuICBzZWxlY3RNYXRyaXhGaWVsZEluZGV4OiBhbnkgPSAwXG5cbiAgLyoq5qih5oCB5qGGLeeKtuaAgeaUueWPmCAqL1xuICBtYXRyaXhNb2RhbFZpc2libGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICB0aGlzLmlzTWF0cml4TW9kYWxFZGl0ID0gZmFsc2VcbiAgICAgIHRoaXMubWF0cml4TW9kYWxGb3JtID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuXG4gIC8qKuefqemYteWdly0t5paw5aKeLeaJk+W8gOaooeaAgeahhiAqL1xuICBhZGRNYXRyaXhCbG9ja1R5cGUoKSB7XG4gICAgdGhpcy5tYXRyaXhNb2RhbEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBNYXRyaXhJdGVtQ29uZmlnKCkpXG4gICAgdGhpcy5tYXRyaXhNb2RhbE9wZW4gPSB0cnVlXG4gIH1cblxuXG5cbiAgLyoq5qih5oCB5qGGLS3nn6npmLXooajljZXkv53lrZjmj5DkuqQgKi9cbiAgY3JlYXRlT3JFZGl0U2F2ZSgpIHtcbiAgICBsZXQgaW5wdXQgPSB0aGlzLm1hdHJpeE1vZGFsRm9ybS52YWx1ZVxuICAgIGlmICghdGhpcy5tYXRyaXhNb2RhbEZvcm0udmFsaWQpIHJldHVyblxuICAgIGlmICh0aGlzLmlzTWF0cml4TW9kYWxFZGl0KSB7XG4gICAgICBsZXQgTWF0cml4QmxvY2tUeXBlc0l0ZW0gPSB0aGlzLk1hdHJpeEJsb2NrVHlwZXMuYXQodGhpcy5zZWxlY3RNYXRyaXhCbG9ja0luZGV4KSBhcyBGb3JtR3JvdXBcbiAgICAgIE1hdHJpeEJsb2NrVHlwZXNJdGVtLnBhdGNoVmFsdWUoe1xuICAgICAgICAuLi5pbnB1dFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRNYXRyaXhCbG9ja1R5cGVJdGVtKGlucHV0KVxuICAgIH1cbiAgICB0aGlzLm1hdHJpeE1vZGFsT3BlbiA9IGZhbHNlXG4gIH1cbiAgLyoq5paw5aKe55+p6Zi15Z2XLeWQkeaVsOe7hOihqOWNleS4reWinuWKoOmhuSAqL1xuICBhZGRNYXRyaXhCbG9ja1R5cGVJdGVtKGlucHV0KSB7XG4gICAgdGhpcy5NYXRyaXhCbG9ja1R5cGVzLnB1c2gobmV3IEZvcm1Hcm91cCh7XG4gICAgICBkaXNwbGF5TmFtZTogbmV3IEZvcm1Db250cm9sKGlucHV0LmRpc3BsYXlOYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbChpbnB1dC5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGZpZWxkczogbmV3IEZvcm1BcnJheShbXSlcbiAgICB9KSlcbiAgfVxuICAvKirnvJbovpHnn6npmLXlnZcgKi9cbiAgRWRpdE1hdHJpeEJsb2NrKGlucHV0KSB7XG4gICAgdGhpcy5tYXRyaXhNb2RhbEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBNYXRyaXhJdGVtQ29uZmlnKCkpXG4gICAgdGhpcy5tYXRyaXhNb2RhbEZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAuLi5pbnB1dFxuICAgIH0pXG4gICAgdGhpcy5tYXRyaXhNb2RhbE9wZW4gPSB0cnVlXG4gICAgdGhpcy5pc01hdHJpeE1vZGFsRWRpdCA9IHRydWVcbiAgfVxuXG4gIC8qKuWIoOmZpOefqemYteWdlyAqL1xuICBEZWxldGVNYXRyaXhCbG9jayhpbmRleCkge1xuICAgIHRoaXMuTWF0cml4QmxvY2tUeXBlcy5yZW1vdmVBdChpbmRleClcbiAgfVxuXG4gIC8qKuefqemYteWdly3pgInmi6kgKi9cbiAgc2VsZWN0TWF0cml4QmxvY2tDaGFuZ2UoaW5kZXgpIHtcbiAgICB0aGlzLnNlbGVjdE1hdHJpeEJsb2NrSW5kZXggPSBpbmRleFxuICB9XG5cbiAgLyoq55+p6Zi15a2X5q61LeaWsOWiniAqL1xuICBhZGRNYXRyaXhGaWVsZCgpIHtcbiAgICB0aGlzLmFkZE1hdHJpeEZpZWxkSXRlbSgnJywgdGhpcy5zZWxlY3RNYXRyaXhCbG9ja0luZGV4KVxuICB9XG4gIC8qKuefqemYteWtl+autS3mlrDlop7nn6npmLXlrZfmrrXpobkgKi9cbiAgYWRkTWF0cml4RmllbGRJdGVtKGlucHV0OiBhbnkgPSAnJywgc2VsZWN0TWF0cml4QmxvY2tJbmRleCkge1xuICAgIC8qKuefqemYteS4i+agh+eahOefqemYtemhuUZvcm0gKi9cbiAgICBsZXQgTWF0cml4QmxvY2tUeXBlc0l0ZW1Gb3JtID0gdGhpcy5NYXRyaXhCbG9ja1R5cGVzLmF0KHNlbGVjdE1hdHJpeEJsb2NrSW5kZXgpIGFzIEZvcm1Hcm91cFxuICAgIGxldCBNYXRyaXhGaWVsZEl0ZW1Gb3JtID0gTWF0cml4QmxvY2tUeXBlc0l0ZW1Gb3JtLmdldCgnZmllbGRzJykgYXMgRm9ybUFycmF5XG4gICAgTWF0cml4RmllbGRJdGVtRm9ybS5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgLyoq5a2X5q615ZCN56ewIERpc3BsYXkgbmFtZSBvZiB0aGlzIGZpZWxkICovXG4gICAgICBkaXNwbGF5TmFtZTogW2lucHV0LmRpc3BsYXlOYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLyoq5a2X5q615ZSv5LiA5ZCN56ewIFVuaXF1ZSBOYW1lKi9cbiAgICAgIG5hbWU6IFtpbnB1dC5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLyoq5o+P6L+wIOivtOaYjiAqL1xuICAgICAgZGVzY3JpcHRpb246IFtpbnB1dC5kZXNjcmlwdGlvbiwgW11dLFxuICAgICAgLyoqRmllbGRUeXBl5a2X5q6157G75Z6LIOihqOWNleaOp+S7tuWQjeensCAqL1xuICAgICAgZm9ybUNvbnRyb2xOYW1lOiBbaW5wdXQuZm9ybUNvbnRyb2xOYW1lIHx8ICdUZXh0RWRpdCcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgLy/liqjmgIHooajljZXphY3nva5cbiAgICAgIGZvcm1Db25maWd1cmF0aW9uOiBuZXcgRm9ybUdyb3VwKHt9KSxcbiAgICB9KSlcblxuICB9XG5cbiAgIC8qKuWIoOmZpOefqemYteWtl+autemhuSAqL1xuICBkZWxldGVNYXRyaXhGaWVsZChNYXRyaXhGaWVsZEZvcm0sIGluZGV4KSB7XG4gICAgTWF0cml4RmllbGRGb3JtLnJlbW92ZUF0KGluZGV4KVxuICAgIHRoaXMuc2VsZWN0TWF0cml4RmllbGRJbmRleCA9IDBcbiAgfVxuXG4gIC8qKuefqemYteWtl+autS3pgInmi6kgKi9cbiAgc2VsZWN0TWF0cml4RmllbGRDaGFuZ2UoTWF0cml4QmxvY2tJbmRleCwgTWF0cml4RmllbGRJbmRleCkge1xuICAgIHRoaXMuc2VsZWN0TWF0cml4RmllbGRJbmRleCA9IE1hdHJpeEZpZWxkSW5kZXhcbiAgfVxuXG4gIGdldCBuYW1lSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4TW9kYWxGb3JtPy5nZXQoJ25hbWUnKVxuICB9XG4gIGdldCBGaWVsZG5hbWVJbnB1dCgpIHtcbiAgICBsZXQgTWF0cml4QmxvY2tUeXBlc0l0ZW1Gb3JtID0gdGhpcy5NYXRyaXhCbG9ja1R5cGVzLmF0KHRoaXMuc2VsZWN0TWF0cml4QmxvY2tJbmRleCkgYXMgRm9ybUdyb3VwXG4gICAgbGV0IE1hdHJpeEZpZWxkSXRlbUZvcm0gPSBNYXRyaXhCbG9ja1R5cGVzSXRlbUZvcm0uZ2V0KCdmaWVsZHMnKSBhcyBGb3JtQXJyYXlcbiAgICByZXR1cm4gTWF0cml4RmllbGRJdGVtRm9ybS5hdCh0aGlzLnNlbGVjdE1hdHJpeEZpZWxkSW5kZXgpLmdldCgnbmFtZScpXG4gIH1cblxuICAvKirnn6npmLVkaXNwbGF5TmFtZUlucHV05a2X5q615aSx5Y6754Sm54K5ICovXG4gIGRpc3BsYXlOYW1lSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgbGV0IHBpbnlpbiA9IHRoaXMuX0RmQXBpU2VydmljZS5jaGluZXNlVG9QaW55aW4odmFsdWUpXG4gICAgbGV0IG5hbWVJbnB1dCA9IHRoaXMubmFtZUlucHV0XG4gICAgaWYgKG5hbWVJbnB1dC52YWx1ZSkgcmV0dXJuXG4gICAgbmFtZUlucHV0LnBhdGNoVmFsdWUocGlueWluKVxuICB9XG4gIC8qKuefqemYtWRpc3BsYXlOYW1lSW5wdXTlrZfmrrXlpLHljrvnhKbngrkgKi9cbiAgTWF0cml4RmllbGREaXNwbGF5TmFtZUlucHV0Qmx1cihldmVudCkge1xuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgIGxldCBwaW55aW4gPSB0aGlzLl9EZkFwaVNlcnZpY2UuY2hpbmVzZVRvUGlueWluKHZhbHVlKVxuICAgIGxldCBGaWVsZG5hbWVJbnB1dCA9IHRoaXMuRmllbGRuYW1lSW5wdXRcbiAgICBpZiAoRmllbGRuYW1lSW5wdXQudmFsdWUpIHJldHVyblxuICAgIEZpZWxkbmFtZUlucHV0LnBhdGNoVmFsdWUocGlueWluKVxuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIl9FbnRpdHlcIj5cbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJmb3JtQ29uZmlndXJhdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6OjpGb3JtQ29udHJvbDpNYXRyaXgnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY3VycmVudD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydDbXM6Ok1hdHJpeEJsb2NrVHlwZScgfCBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBwLTBcIiAoY2xpY2suc3RvcCk9XCJhZGRNYXRyaXhCbG9ja1R5cGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzLWNpcmNsZSBwLTFcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBNYXRyaXhCbG9ja1R5cGVzLmNvbnRyb2xzO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljay5zdG9wKT1cInNlbGVjdE1hdHJpeEJsb2NrQ2hhbmdlKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaT09PXNlbGVjdE1hdHJpeEJsb2NrSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLnZhbHVlLmRpc3BsYXlOYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLnZhbHVlLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtXCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ6LWluZGV4OiA4O1wiIG5nYkRyb3Bkb3duVG9nZ2xlPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIiBzdHlsZT1cInotaW5kZXg6IDk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiRWRpdE1hdHJpeEJsb2NrKGl0ZW0udmFsdWUpXCI+e3snQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJEZWxldGVNYXRyaXhCbG9jayhpKVwiPnt7J0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXBcIiAqbmdJZj1cIk1hdHJpeEJsb2NrVHlwZXM/LmNvbnRyb2xzLmxlbmd0aD4wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0Ntczo6RmllbGRzJyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIHAtMFwiIChjbGljay5zdG9wKT1cImFkZE1hdHJpeEZpZWxkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cy1jaXJjbGUgcC0xXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgTWF0cml4QmxvY2tUeXBlcy5jb250cm9scztsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSA9PT0gc2VsZWN0TWF0cml4QmxvY2tJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbCBvZiBpdGVtLmNvbnRyb2xzWydmaWVsZHMnXS5jb250cm9scztsZXQgZmkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2suc3RvcCk9XCJzZWxlY3RNYXRyaXhGaWVsZENoYW5nZShpLGZpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJmaT09PXNlbGVjdE1hdHJpeEZpZWxkSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7ZWwudmFsdWUuZGlzcGxheU5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7ZWwudmFsdWUubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiZGVsZXRlTWF0cml4RmllbGQoaXRlbS5jb250cm9sc1snZmllbGRzJ10sZmkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saVwiPnt7J0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiBmb3JtQXJyYXlOYW1lPVwiTWF0cml4QmxvY2tUeXBlc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIE1hdHJpeEJsb2NrVHlwZXMuY29udHJvbHM7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBOYW1lXT1cImlcIiBbaGlkZGVuXT1cImkgIT09IHNlbGVjdE1hdHJpeEJsb2NrSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9XCJmaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtLmNvbnRyb2xzWydmaWVsZHMnXS5jb250cm9scztsZXQgZmkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBOYW1lXT1cImZpXCIgW2hpZGRlbl09XCJmaSAhPT0gc2VsZWN0TWF0cml4RmllbGRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZGlzcGxheU5hbWVcIj57eydDbXM6OkRpc3BsYXlOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJNYXRyaXhGaWVsZERpc3BsYXlOYW1lSW5wdXRCbHVyKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cIm5hbWVcIj57eydEaWduaXRlQWJwRm9ybXM6OkZpZWxkTmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydEaWduaXRlQWJwRm9ybXM6OkZpZWxkTmFtZUhlbHBUZXh0JyB8IGFicExvY2FsaXphdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJkZXNjcmlwdGlvblwiPnt7J0Ntczo6RGVzY3JpcHRpb24nIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmb3JtQ29udHJvbE5hbWVcIj57eydDbXM6OkZpZWxkVHlwZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImZvcm1Db250cm9sTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfRmllbGRDb250cm9sR3JvdXA7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5uYW1lXCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS52YWx1ZS5mb3JtQ29udHJvbE5hbWUmJml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRmLWR5bmFtaWMgW3R5cGVdPVwiaXRlbS52YWx1ZS5mb3JtQ29udHJvbE5hbWVcIiBbZW50aXR5XT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIl9zZWxlY3RlZD9fc2VsZWN0ZWRbJ2Zvcm1Db25maWd1cmF0aW9uJ11bJ01hdHJpeEJsb2NrVHlwZXMnXVtpXVsnZmllbGRzJ11bZmldOicnXCI+PC9kZi1keW5hbWljPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoYWJwSW5pdCk9XCJzdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxuICAgICAgICAgICAgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuXG5cblxuPGFicC1tb2RhbCBbKHZpc2libGUpXT1cIm1hdHJpeE1vZGFsT3BlblwiIFtidXN5XT1cIm1vZGFsQnVzeVwiICh2aXNpYmxlQ2hhbmdlKT1cIm1hdHJpeE1vZGFsVmlzaWJsZUNoYW5nZSgkZXZlbnQpXCIgPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxuICAgICAgICA8aDM+e3tpc01hdHJpeEVkaXQ/KCdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24pOignQ21zOjpOZXcnIHwgYWJwTG9jYWxpemF0aW9uKX19PC9oMz5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXJSZWY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXRyaXhNb2RhbEZvcm07IGVsc2UgbG9hZGVyUmVmXCI+XG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiAjbXlGb3JtPVwibmdGb3JtXCIgW2Zvcm1Hcm91cF09XCJtYXRyaXhNb2RhbEZvcm1cIlxuICAgICAgICAgICAgICAgIChuZ1N1Ym1pdCk9XCJjcmVhdGVPckVkaXRTYXZlKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAjbWF0cml4TW9kYWxNb2RhbFN1Ym1pdCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiZGlzcGxheU5hbWVcIj57eydDbXM6OkRpc3BsYXlOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJkaXNwbGF5TmFtZUlucHV0Qmx1cigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5hbWVcIj57eydDbXM6Ok5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPnt7J0FicFVpOjpDbG9zZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuICAgICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiXG4gICAgICAgICAgICAoY2xpY2spPVwibWF0cml4TW9kYWxNb2RhbFN1Ym1pdC5uYXRpdmVFbGVtZW50LmNsaWNrKClcIj57eydBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYWJwLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9hYnAtbW9kYWw+Il19
@@ -0,0 +1,50 @@
1
+ import { FormArray, FormGroup, Validators } from "@angular/forms";
2
+ export class MatrixConfig {
3
+ // 矩阵类型
4
+ 'MatrixBlockTypes' = new FormArray([]);
5
+ constructor(data) {
6
+ if (data) {
7
+ for (const key in data) {
8
+ if (data.hasOwnProperty(key)) {
9
+ this[key] = data[key];
10
+ }
11
+ }
12
+ }
13
+ }
14
+ }
15
+ export class MatrixItemConfig {
16
+ displayName = ['', [Validators.required]];
17
+ /**字段名字 */
18
+ name = ['', [Validators.required]];
19
+ constructor(data) {
20
+ if (data) {
21
+ for (const key in data) {
22
+ if (data.hasOwnProperty(key)) {
23
+ this[key] = data[key];
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ export class matrixFieldInputBase {
30
+ /**字段名称 Display name of this field */
31
+ displayName = ['', [Validators.required]];
32
+ /**字段唯一名称 Unique Name*/
33
+ name = ['', [Validators.required]];
34
+ /**描述 说明 */
35
+ description = ['', []];
36
+ /**FieldType字段类型 表单控件名称 */
37
+ formControlName = ['TextEdit', [Validators.required]];
38
+ /**动态表单配置 */
39
+ formConfiguration = new FormGroup({});
40
+ constructor(data) {
41
+ if (data) {
42
+ for (const key in data) {
43
+ if (data.hasOwnProperty(key)) {
44
+ this[key] = data[key];
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZnJvbS9tYXRyaXgvbWF0cml4LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxNQUFNLE9BQU8sWUFBWTtJQUNyQixPQUFPO0lBQ1Asa0JBQWtCLEdBQVEsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFM0MsWUFBWSxJQUFtQjtRQUMzQixJQUFJLElBQUksRUFBRTtZQUNOLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0o7U0FDSjtJQUNMLENBQUM7Q0FDSjtBQUNELE1BQU0sT0FBTyxnQkFBZ0I7SUFFekIsV0FBVyxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDL0MsVUFBVTtJQUNWLElBQUksR0FBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRXhDLFlBQVksSUFBbUI7UUFDM0IsSUFBSSxJQUFJLEVBQUU7WUFDTixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6QjthQUNKO1NBQ0o7SUFHTCxDQUFDO0NBQ0o7QUFJRCxNQUFNLE9BQU8sb0JBQW9CO0lBRzdCLHFDQUFxQztJQUNyQyxXQUFXLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvQyx1QkFBdUI7SUFDdkIsSUFBSSxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDeEMsV0FBVztJQUNYLFdBQVcsR0FBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QiwwQkFBMEI7SUFDMUIsZUFBZSxHQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsWUFBWTtJQUNYLGlCQUFpQixHQUEwQixJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUc1RCxZQUFZLElBQTJCO1FBQ25DLElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDekI7YUFDSjtTQUNKO0lBRUwsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTWF0cml4Q29uZmlnIHtcclxuICAgIC8vIOefqemYteexu+Wei1xyXG4gICAgJ01hdHJpeEJsb2NrVHlwZXMnOiBhbnkgPSBuZXcgRm9ybUFycmF5KFtdKVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBNYXRyaXhDb25maWcpIHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trZXldID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBNYXRyaXhJdGVtQ29uZmlnIHtcclxuICBcclxuICAgIGRpc3BsYXlOYW1lOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirlrZfmrrXlkI3lrZcgKi9cclxuICAgIG5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogTWF0cml4Q29uZmlnKSB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXNba2V5XSA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBtYXRyaXhGaWVsZElucHV0QmFzZSB7XHJcblxyXG5cclxuICAgIC8qKuWtl+auteWQjeensCBEaXNwbGF5IG5hbWUgb2YgdGhpcyBmaWVsZCAqL1xyXG4gICAgZGlzcGxheU5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuICAgIC8qKuWtl+auteWUr+S4gOWQjeensCBVbmlxdWUgTmFtZSovXHJcbiAgICBuYW1lOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirmj4/ov7Ag6K+05piOICovXHJcbiAgICBkZXNjcmlwdGlvbjogYW55ID0gWycnLCBbXV07XHJcbiAgICAvKipGaWVsZFR5cGXlrZfmrrXnsbvlnosg6KGo5Y2V5o6n5Lu25ZCN56ewICovXHJcbiAgICBmb3JtQ29udHJvbE5hbWU6IGFueSA9IFsnVGV4dEVkaXQnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAvKirliqjmgIHooajljZXphY3nva4gKi9cclxuICAgIGZvcm1Db25maWd1cmF0aW9uOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQgPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogbWF0cml4RmllbGRJbnB1dEJhc2UpIHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trZXldID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSJdfQ==