onshore-forms 0.0.23 → 0.0.25

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.
@@ -119,11 +119,21 @@ export class OnshoreFormsService {
119
119
  lock() {
120
120
  this._formTemplate.forEach((item) => {
121
121
  item.locked = true;
122
+ if (item.subformArray) {
123
+ item.subformArray.forEach(subitem => {
124
+ subitem.locked = true;
125
+ });
126
+ }
122
127
  });
123
128
  }
124
129
  unlock() {
125
130
  this._formTemplate.forEach((item) => {
126
131
  item.locked = false;
132
+ if (item.subformArray) {
133
+ item.subformArray.forEach(subitem => {
134
+ subitem.locked = false;
135
+ });
136
+ }
127
137
  });
128
138
  }
129
139
  iterateNestedForm(form, formTemplate) {
@@ -174,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
174
184
  providedIn: 'root'
175
185
  }]
176
186
  }], ctorParameters: function () { return []; } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25zaG9yZS1mb3Jtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL29uc2hvcmUtZm9ybXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUs3RCxNQUFNLE9BQU8sbUJBQW1CO0lBVTlCO1FBTkEscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBRWhDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUVqQyxlQUFVLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFHM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsc0JBQXNC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SSxDQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7O2dIQTlMVSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9uc2hvcmVGb3JtVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi9lbnVtcy9mb3JtLmVudW1zJztcbmltcG9ydCB7IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT25zaG9yZUZvcm1zU2VydmljZSB7XG5cbiAgX2Zvcm06IEZvcm1Hcm91cDtcbiAgX2Zvcm1UZW1wbGF0ZTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW1bXTtcbiAgX2Zvcm1WYWxpZGF0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG5cbiAgcHVibGljIGlzTG9hZGluZyQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9LCB7dXBkYXRlT246ICdjaGFuZ2UnfSk7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlID0gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcm0oKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybVZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybT8udmFsdWU7XG4gIH1cblxuICBwdWJsaWMgcGF0Y2hGb3JtKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9mb3JtPy5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldEZvcm0oKSB7XG4gICAgdGhpcy5fZm9ybT8ucmVzZXQoKTtcbiAgICB0aGlzLl9mb3JtPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IGZhbHNlLCBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uKSA9PiB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Zvcm0gPSBudWxsITtcbiAgICB0aGlzLl9mb3JtVGVtcGxhdGUgPSBudWxsITtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZUZvcm0oZm9ybVRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdKTogRm9ybUdyb3VwIHwgbnVsbCB7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlID0gZm9ybVRlbXBsYXRlO1xuICAgIHRoaXMuX2Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9LCB7dXBkYXRlT246ICdjaGFuZ2UnfSk7XG4gICAgdGhpcy5fZm9ybSA9IHRoaXMuaXRlcmF0ZU5lc3RlZEZvcm0odGhpcy5fZm9ybSwgZm9ybVRlbXBsYXRlKTtcbiAgICByZXR1cm4gdGhpcy5fZm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtVGVtcGxhdGUobmFtZTogc3RyaW5nLCBmb3JtVGVtcGxhdGU6IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtW10gPSB0aGlzLl9mb3JtVGVtcGxhdGUpOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSB7XG4gICAgbGV0IHRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbTtcblxuICAgIGlmKGZvcm1UZW1wbGF0ZSkge1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGZvcm1UZW1wbGF0ZT8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGZvcm1UZW1wbGF0ZVtpXTtcbiAgICAgICAgaWYoaXRlbS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSBpdGVtO1xuICAgICAgICAgIGkgPSBmb3JtVGVtcGxhdGUubGVuZ3RoO1xuICAgICAgICB9ZWxzZSBpZihpdGVtLnN1YmZvcm1BcnJheSkge1xuICAgICAgICAgIGNvbnN0IGFycmF5VGVtcGxhdGUgPSB0aGlzLmZvcm1UZW1wbGF0ZShuYW1lLCBpdGVtLnN1YmZvcm1BcnJheSk7XG4gICAgICAgICAgaWYoYXJyYXlUZW1wbGF0ZSkgdGVtcGxhdGUgPSBhcnJheVRlbXBsYXRlO1xuICAgICAgICB9ZWxzZSBpZihpdGVtLnN1YmZvcm1PYmplY3QpIHtcbiAgICAgICAgICBjb25zdCBvYmplY3RUZW1wbGF0ZSA9IHRoaXMuZm9ybVRlbXBsYXRlKG5hbWUsIGl0ZW0uc3ViZm9ybU9iamVjdCk7XG4gICAgICAgICAgaWYob2JqZWN0VGVtcGxhdGUpIHRlbXBsYXRlID0gb2JqZWN0VGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGVtcGxhdGUhO1xuICB9XG5cbiAgcHVibGljIGZvcm1Db250cm9sKG5hbWU6IHN0cmluZywgZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCBudWxsID0gdGhpcy5fZm9ybSk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gZm9ybUdyb3VwPy5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBwdWJsaWMgZm9ybUFycmF5KG5hbWU6IHN0cmluZyk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm0/LmdldChuYW1lKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBwdWJsaWMgZm9ybUdyb3VwKGZvcm06IEZvcm1Hcm91cCwgbmFtZTogc3RyaW5nKTogRm9ybUdyb3VwICB7XG4gICAgcmV0dXJuIGZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRGb3JtQXJyYXlJdGVtKG5hbWU6IHN0cmluZywgaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pIHtcbiAgICBsZXQgZm9ybUNvbnRyb2xzID0gPGFueT57fTtcblxuICAgIGlmKGl0ZW0pIHtcbiAgICAgIGl0ZW0uc3ViZm9ybUFycmF5Py5mb3JFYWNoKChzdWJpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgICBmb3JtQ29udHJvbHNbc3ViaXRlbS5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChzdWJpdGVtLmRlZmF1bHQgIT09IHVuZGVmaW5lZCA/IHN1Yml0ZW0uZGVmYXVsdCA6ICcnLCB7XG4gICAgICAgICAgdmFsaWRhdG9yczogc3ViaXRlbS52YWxpZGF0b3JzIHx8IFtdLFxuICAgICAgICAgIHVwZGF0ZU9uOiAnY2hhbmdlJ1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoZm9ybUNvbnRyb2xzKTtcbiAgICBmb3JtR3JvdXAuc2V0UGFyZW50KHRoaXMuZm9ybUFycmF5KG5hbWUpKTtcblxuICAgIHRoaXMuZm9ybUFycmF5KG5hbWUpLnB1c2goZm9ybUdyb3VwKTtcblxuICAgIHRoaXMuc3Vic2NyaWJlTmVzdGVkRm9ybUdyb3VwKGZvcm1Hcm91cCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRm9ybUFycmF5SXRlbShmb3JtOiBGb3JtQXJyYXksIGluZGV4OiBudW1iZXIpIHtcbiAgICBmb3JtLnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRGb3JtVmFsaWRhdGlvbnModmFsaWRhdGlvbnM6IHN0cmluZ1tdID0gW10pIHtcbiAgICB0aGlzLl9mb3JtVmFsaWRhdGlvbnMgPSB2YWxpZGF0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGUoKSB7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlLmZvckVhY2goKGl0ZW06IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtKSA9PiB7XG4gICAgICBpdGVtLmVuYWJsZWQgPSB0cnVlO1xuICAgIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fZm9ybT8uZW5hYmxlKHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZSgpIHtcbiAgICB0aGlzLl9mb3JtVGVtcGxhdGUuZm9yRWFjaCgoaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uZW5hYmxlZCA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fZm9ybT8uZGlzYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgcHVibGljIHNldEVycm9yKGNvbnRyb2w6IHN0cmluZywgZXJyb3I6IE9iamVjdCkge1xuICAgIGNvbnN0IGVycm9ycyA9IHsuLi50aGlzLmZvcm1Db250cm9sKGNvbnRyb2wpLmVycm9ycyA/PyB7fSwgLi4uZXJyb3J9IDtcbiAgICB0aGlzLmZvcm1Db250cm9sKGNvbnRyb2wpLnNldEVycm9ycyhlcnJvcnMpO1xuICB9XG5cbiAgcHVibGljIHNldExvYWRlcihsb2FkZXJzJDogU3ViamVjdDxib29sZWFuPltdKSB7XG4gICAgbG9hZGVycyQuZm9yRWFjaCgkbG9hZGVyID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKCRsb2FkZXIuc3Vic2NyaWJlKGlzTG9hZGluZyA9PiB7XG4gICAgICAgIGlzTG9hZGluZyA/IHRoaXMuZGlzYWJsZSgpIDogdGhpcy5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQoaXNMb2FkaW5nKTtcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2NrKCkge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZS5mb3JFYWNoKChpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgaXRlbS5sb2NrZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVubG9jaygpIHtcbiAgICB0aGlzLl9mb3JtVGVtcGxhdGUuZm9yRWFjaCgoaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgIGl0ZW0ubG9ja2VkID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBpdGVyYXRlTmVzdGVkRm9ybShmb3JtOiBGb3JtR3JvdXAsIGZvcm1UZW1wbGF0ZTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW1bXSk6IGFueSB7XG4gICAgZm9ybVRlbXBsYXRlLmZvckVhY2goKGl0ZW06IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtKSA9PiB7XG4gICAgICBpZihpdGVtLnR5cGUgPT09IE9uc2hvcmVGb3JtVGVtcGxhdGVUeXBlLnN1YmZvcm0pIHtcbiAgICAgICAgaWYoaXRlbS5zdWJmb3JtQXJyYXkpIHtcbiAgICAgICAgICBmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0gPSBuZXcgRm9ybUFycmF5KFtdKTtcbiAgICAgICAgICBmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0uc2V0UGFyZW50KGZvcm0pO1xuICAgICAgICAgIHRoaXMuc3Vic2NyaWJlTmVzdGVkRm9ybUFycmF5KGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXSBhcyBGb3JtQXJyYXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGl0ZW0uc3ViZm9ybU9iamVjdCkge1xuICAgICAgICAgIGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgICAgIGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXSA9IHRoaXMuaXRlcmF0ZU5lc3RlZEZvcm0oZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdIGFzIEZvcm1Hcm91cCwgaXRlbS5zdWJmb3JtT2JqZWN0KSBhcyBGb3JtR3JvdXA7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVOZXN0ZWRGb3JtR3JvdXAoZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdIGFzIEZvcm1Hcm91cCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm0uYWRkQ29udHJvbChpdGVtLm5hbWUsIG5ldyBGb3JtQ29udHJvbChpdGVtLmRlZmF1bHQgIT09IHVuZGVmaW5lZCA/IGl0ZW0uZGVmYXVsdCA6ICcnLCB7XG4gICAgICAgICAgdmFsaWRhdG9yczogaXRlbS52YWxpZGF0b3JzIHx8IFtdLFxuICAgICAgICAgIHVwZGF0ZU9uOiAnY2hhbmdlJ1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm07XG4gIH1cblxuICBzdWJzY3JpYmVOZXN0ZWRGb3JtQXJyYXkobmVzdGVkRm9ybUl0ZW06IEZvcm1BcnJheSkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKG5lc3RlZEZvcm1JdGVtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKG5lc3RlZEZvcm1JdGVtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIHN1YnNjcmliZU5lc3RlZEZvcm1Hcm91cChuZXN0ZWRGb3JtSXRlbTogRm9ybUdyb3VwKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobmVzdGVkRm9ybUl0ZW0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9KSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobmVzdGVkRm9ybUl0ZW0uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSkpO1xuICB9XG5cbn1cbiJdfQ==
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25zaG9yZS1mb3Jtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL29uc2hvcmUtZm9ybXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUs3RCxNQUFNLE9BQU8sbUJBQW1CO0lBVTlCO1FBTkEscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBRWhDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUVqQyxlQUFVLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFHM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsc0JBQXNC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QixDQUFDLGNBQXlCO1FBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqRSxJQUFJLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDOztnSEF4TVUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPbnNob3JlRm9ybVRlbXBsYXRlVHlwZSB9IGZyb20gJy4vZW51bXMvZm9ybS5lbnVtcyc7XG5pbXBvcnQgeyBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSB9IGZyb20gJy4vbW9kZWxzL2Zvcm0ubW9kZWxzJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9uc2hvcmVGb3Jtc1NlcnZpY2Uge1xuXG4gIF9mb3JtOiBGb3JtR3JvdXA7XG4gIF9mb3JtVGVtcGxhdGU6IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtW107XG4gIF9mb3JtVmFsaWRhdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gIHB1YmxpYyBpc0xvYWRpbmckOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSwge3VwZGF0ZU9uOiAnY2hhbmdlJ30pO1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZSA9IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcm1WYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm0/LnZhbHVlO1xuICB9XG5cbiAgcHVibGljIHBhdGNoRm9ybSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fZm9ybT8ucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRGb3JtKCkge1xuICAgIHRoaXMuX2Zvcm0/LnJlc2V0KCk7XG4gICAgdGhpcy5fZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiBmYWxzZSwgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9mb3JtID0gbnVsbCE7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlID0gbnVsbCE7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVGb3JtKGZvcm1UZW1wbGF0ZTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW1bXSk6IEZvcm1Hcm91cCB8IG51bGwge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZSA9IGZvcm1UZW1wbGF0ZTtcbiAgICB0aGlzLl9mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSwge3VwZGF0ZU9uOiAnY2hhbmdlJ30pO1xuICAgIHRoaXMuX2Zvcm0gPSB0aGlzLml0ZXJhdGVOZXN0ZWRGb3JtKHRoaXMuX2Zvcm0sIGZvcm1UZW1wbGF0ZSk7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm07XG4gIH1cblxuICBwdWJsaWMgZm9ybVRlbXBsYXRlKG5hbWU6IHN0cmluZywgZm9ybVRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdID0gdGhpcy5fZm9ybVRlbXBsYXRlKTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0ge1xuICAgIGxldCB0ZW1wbGF0ZTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW07XG5cbiAgICBpZihmb3JtVGVtcGxhdGUpIHtcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBmb3JtVGVtcGxhdGU/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBmb3JtVGVtcGxhdGVbaV07XG4gICAgICAgIGlmKGl0ZW0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgIHRlbXBsYXRlID0gaXRlbTtcbiAgICAgICAgICBpID0gZm9ybVRlbXBsYXRlLmxlbmd0aDtcbiAgICAgICAgfWVsc2UgaWYoaXRlbS5zdWJmb3JtQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCBhcnJheVRlbXBsYXRlID0gdGhpcy5mb3JtVGVtcGxhdGUobmFtZSwgaXRlbS5zdWJmb3JtQXJyYXkpO1xuICAgICAgICAgIGlmKGFycmF5VGVtcGxhdGUpIHRlbXBsYXRlID0gYXJyYXlUZW1wbGF0ZTtcbiAgICAgICAgfWVsc2UgaWYoaXRlbS5zdWJmb3JtT2JqZWN0KSB7XG4gICAgICAgICAgY29uc3Qgb2JqZWN0VGVtcGxhdGUgPSB0aGlzLmZvcm1UZW1wbGF0ZShuYW1lLCBpdGVtLnN1YmZvcm1PYmplY3QpO1xuICAgICAgICAgIGlmKG9iamVjdFRlbXBsYXRlKSB0ZW1wbGF0ZSA9IG9iamVjdFRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlITtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtQ29udHJvbChuYW1lOiBzdHJpbmcsIGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCA9IHRoaXMuX2Zvcm0pOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIGZvcm1Hcm91cD8uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgcHVibGljIGZvcm1BcnJheShuYW1lOiBzdHJpbmcpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtPy5nZXQobmFtZSkgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgcHVibGljIGZvcm1Hcm91cChmb3JtOiBGb3JtR3JvdXAsIG5hbWU6IHN0cmluZyk6IEZvcm1Hcm91cCAge1xuICAgIHJldHVybiBmb3JtLmdldChuYW1lKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgYWRkRm9ybUFycmF5SXRlbShuYW1lOiBzdHJpbmcsIGl0ZW06IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtKSB7XG4gICAgbGV0IGZvcm1Db250cm9scyA9IDxhbnk+e307XG5cbiAgICBpZihpdGVtKSB7XG4gICAgICBpdGVtLnN1YmZvcm1BcnJheT8uZm9yRWFjaCgoc3ViaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgICAgZm9ybUNvbnRyb2xzW3N1Yml0ZW0ubmFtZV0gPSBuZXcgRm9ybUNvbnRyb2woc3ViaXRlbS5kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBzdWJpdGVtLmRlZmF1bHQgOiAnJywge1xuICAgICAgICAgIHZhbGlkYXRvcnM6IHN1Yml0ZW0udmFsaWRhdG9ycyB8fCBbXSxcbiAgICAgICAgICB1cGRhdGVPbjogJ2NoYW5nZSdcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKGZvcm1Db250cm9scyk7XG4gICAgZm9ybUdyb3VwLnNldFBhcmVudCh0aGlzLmZvcm1BcnJheShuYW1lKSk7XG5cbiAgICB0aGlzLmZvcm1BcnJheShuYW1lKS5wdXNoKGZvcm1Hcm91cCk7XG5cbiAgICB0aGlzLnN1YnNjcmliZU5lc3RlZEZvcm1Hcm91cChmb3JtR3JvdXApO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZvcm1BcnJheUl0ZW0oZm9ybTogRm9ybUFycmF5LCBpbmRleDogbnVtYmVyKSB7XG4gICAgZm9ybS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybVZhbGlkYXRpb25zKHZhbGlkYXRpb25zOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgdGhpcy5fZm9ybVZhbGlkYXRpb25zID0gdmFsaWRhdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlKCkge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZS5mb3JFYWNoKChpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgaXRlbS5lbmFibGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm0/LmVuYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlLmZvckVhY2goKGl0ZW06IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtKSA9PiB7XG4gICAgICBpdGVtLmVuYWJsZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm0/LmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFcnJvcihjb250cm9sOiBzdHJpbmcsIGVycm9yOiBPYmplY3QpIHtcbiAgICBjb25zdCBlcnJvcnMgPSB7Li4udGhpcy5mb3JtQ29udHJvbChjb250cm9sKS5lcnJvcnMgPz8ge30sIC4uLmVycm9yfSA7XG4gICAgdGhpcy5mb3JtQ29udHJvbChjb250cm9sKS5zZXRFcnJvcnMoZXJyb3JzKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2FkZXIobG9hZGVycyQ6IFN1YmplY3Q8Ym9vbGVhbj5bXSkge1xuICAgIGxvYWRlcnMkLmZvckVhY2goJGxvYWRlciA9PiB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCgkbG9hZGVyLnN1YnNjcmliZShpc0xvYWRpbmcgPT4ge1xuICAgICAgICBpc0xvYWRpbmcgPyB0aGlzLmRpc2FibGUoKSA6IHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGlzTG9hZGluZyk7XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9jaygpIHtcbiAgICB0aGlzLl9mb3JtVGVtcGxhdGUuZm9yRWFjaCgoaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgIGl0ZW0ubG9ja2VkID0gdHJ1ZTtcbiAgICAgIGlmKGl0ZW0uc3ViZm9ybUFycmF5KSB7XG4gICAgICAgIGl0ZW0uc3ViZm9ybUFycmF5LmZvckVhY2goIHN1Yml0ZW0gPT4ge1xuICAgICAgICAgIHN1Yml0ZW0ubG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdW5sb2NrKCkge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZS5mb3JFYWNoKChpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgaXRlbS5sb2NrZWQgPSBmYWxzZTtcbiAgICAgIGlmKGl0ZW0uc3ViZm9ybUFycmF5KSB7XG4gICAgICAgIGl0ZW0uc3ViZm9ybUFycmF5LmZvckVhY2goIHN1Yml0ZW0gPT4ge1xuICAgICAgICAgIHN1Yml0ZW0ubG9ja2VkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaXRlcmF0ZU5lc3RlZEZvcm0oZm9ybTogRm9ybUdyb3VwLCBmb3JtVGVtcGxhdGU6IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtW10pOiBhbnkge1xuICAgIGZvcm1UZW1wbGF0ZS5mb3JFYWNoKChpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgaWYoaXRlbS50eXBlID09PSBPbnNob3JlRm9ybVRlbXBsYXRlVHlwZS5zdWJmb3JtKSB7XG4gICAgICAgIGlmKGl0ZW0uc3ViZm9ybUFycmF5KSB7XG4gICAgICAgICAgZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdID0gbmV3IEZvcm1BcnJheShbXSk7XG4gICAgICAgICAgZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdLnNldFBhcmVudChmb3JtKTtcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZU5lc3RlZEZvcm1BcnJheShmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0gYXMgRm9ybUFycmF5KTtcbiAgICAgICAgfVxuICAgICAgICBpZihpdGVtLnN1YmZvcm1PYmplY3QpIHtcbiAgICAgICAgICBmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgICBmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0gPSB0aGlzLml0ZXJhdGVOZXN0ZWRGb3JtKGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXSBhcyBGb3JtR3JvdXAsIGl0ZW0uc3ViZm9ybU9iamVjdCkgYXMgRm9ybUdyb3VwO1xuICAgICAgICAgIHRoaXMuc3Vic2NyaWJlTmVzdGVkRm9ybUdyb3VwKGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXSBhcyBGb3JtR3JvdXApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtLmFkZENvbnRyb2woaXRlbS5uYW1lLCBuZXcgRm9ybUNvbnRyb2woaXRlbS5kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBpdGVtLmRlZmF1bHQgOiAnJywge1xuICAgICAgICAgIHZhbGlkYXRvcnM6IGl0ZW0udmFsaWRhdG9ycyB8fCBbXSxcbiAgICAgICAgICB1cGRhdGVPbjogJ2NoYW5nZSdcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3JtO1xuICB9XG5cbiAgc3Vic2NyaWJlTmVzdGVkRm9ybUFycmF5KG5lc3RlZEZvcm1JdGVtOiBGb3JtQXJyYXkpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChuZXN0ZWRGb3JtSXRlbS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChuZXN0ZWRGb3JtSXRlbS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBzdWJzY3JpYmVOZXN0ZWRGb3JtR3JvdXAobmVzdGVkRm9ybUl0ZW06IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKG5lc3RlZEZvcm1JdGVtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKG5lc3RlZEZvcm1JdGVtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pKTtcbiAgfVxuXG59XG4iXX0=
@@ -209,11 +209,21 @@ class OnshoreFormsService {
209
209
  lock() {
210
210
  this._formTemplate.forEach((item) => {
211
211
  item.locked = true;
212
+ if (item.subformArray) {
213
+ item.subformArray.forEach(subitem => {
214
+ subitem.locked = true;
215
+ });
216
+ }
212
217
  });
213
218
  }
214
219
  unlock() {
215
220
  this._formTemplate.forEach((item) => {
216
221
  item.locked = false;
222
+ if (item.subformArray) {
223
+ item.subformArray.forEach(subitem => {
224
+ subitem.locked = false;
225
+ });
226
+ }
217
227
  });
218
228
  }
219
229
  iterateNestedForm(form, formTemplate) {
@@ -576,19 +586,6 @@ class OnshoreImageChooserComponent {
576
586
  this.finalImage = '';
577
587
  this.imageErrorType = OnshoreImageError;
578
588
  this.imageError = OnshoreImageError.none;
579
- this.imageQuality = 100;
580
- this.resizeToHeight = 400;
581
- this.resizeToWidth = 400;
582
- this.backgroundColor = 'white';
583
- this.format = 'png';
584
- this.alignImage = 'center';
585
- this.containWithinAspectRatio = false;
586
- this.aspectRatio = 1 / 1;
587
- this.cropperPreviewHeight = 200;
588
- this.cropperPreviewWidth = 200;
589
- this.circleCropper = false;
590
- this.autoSave = true;
591
- this.inverseColor = false;
592
589
  this.choosen = new EventEmitter();
593
590
  this.canceled = new EventEmitter();
594
591
  }
@@ -605,7 +602,7 @@ class OnshoreImageChooserComponent {
605
602
  this.imageError = OnshoreImageError.fileType;
606
603
  return;
607
604
  }
608
- if ((file === null || file === void 0 ? void 0 : file.size) > 6400000) {
605
+ if ((file === null || file === void 0 ? void 0 : file.size) > this.imageSettings.maxFileSize) {
609
606
  this.imageError = OnshoreImageError.size;
610
607
  return;
611
608
  }
@@ -619,7 +616,7 @@ class OnshoreImageChooserComponent {
619
616
  var _a;
620
617
  const originalWidth = img.width;
621
618
  const originalHeight = img.height;
622
- if (originalWidth >= this.resizeToWidth && originalHeight >= this.resizeToHeight) {
619
+ if (originalWidth >= this.imageSettings.imageWidth && originalHeight >= this.imageSettings.imageHeight) {
623
620
  this.image = ((_a = reader.result) === null || _a === void 0 ? void 0 : _a.toString()) || '';
624
621
  }
625
622
  else {
@@ -641,35 +638,11 @@ class OnshoreImageChooserComponent {
641
638
  }
642
639
  }
643
640
  OnshoreImageChooserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImageChooserComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
644
- OnshoreImageChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreImageChooserComponent, selector: "onshore-image-chooser", inputs: { imageQuality: "imageQuality", resizeToHeight: "resizeToHeight", resizeToWidth: "resizeToWidth", backgroundColor: "backgroundColor", format: "format", alignImage: "alignImage", containWithinAspectRatio: "containWithinAspectRatio", aspectRatio: "aspectRatio", cropperPreviewHeight: "cropperPreviewHeight", cropperPreviewWidth: "cropperPreviewWidth", circleCropper: "circleCropper", autoSave: "autoSave", inverseColor: "inverseColor" }, outputs: { choosen: "choosen", canceled: "canceled" }, ngImport: i0, template: "<div class=\"flex flex-column justify-content-center align-items-center w-full\">\n\n <div *ngIf=\"!image\" class=\"flex justify-content-center flex-column align-items-center w-full\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n [description]=\"'Die Bilddatei muss mindestens ' + resizeToWidth + 'px x ' + resizeToHeight + 'px betragen, darf maximal 6,4 MB gro\u00DF sein und muss im Dateiformat JPG oder PNG vorliegen.'\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <div\n class=\"onshore-image-upload flex flex-column justify-content-between align-items-center rounded-lg p-4 relative m-3\"\n [class.onshore-border-gray-3]=\"drag\"\n [class.onshore-border-danger]=\"imageError != imageErrorType.none\">\n <i class=\"fa fa-image fa-5x onshore-color-gray-4\"></i>\n <small class=\"onshore-color-gray-4 mb-2\">{{'form.imageControl.dropImageLabel' | translate}}</small>\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-file\"\n [label]=\"'form.imageControl.imageChooserFileButton' | translate\"\n class=\"onshore-button-primary mr-2\">\n </button>\n\n <input\n (change)=\"fileChange($event)\"\n *ngIf=\"!image\"\n accept=\"image/png, image/jpeg, image/webp\"\n class=\"onshore-image-input absolute w-full h-full\"\n type=\"file\"\n (dragenter)=\"drag = true\"\n (dragleave)=\"drag = false\"\n (dragend)=\"drag = false\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-column relative align-items-center w-full\" *ngIf=\"image\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n description=\"W\u00E4hle einen Bereich der vom Bild verwendet werden soll.\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <image-cropper\n class=\"onshore-image-cropper m-3\"\n [class.onshore-cropper-circle]=\"circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageQuality\"\n [alignImage]=\"alignImage\"\n [backgroundColor]=\"backgroundColor\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [format]=\"format\"\n [aspectRatio]=\"aspectRatio\"\n [resizeToHeight]=\"resizeToHeight\"\n [resizeToWidth]=\"resizeToWidth\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"imageError\"class=\"pb-2 text-wrap text-center onshore-color-danger\">\n <small *ngIf=\"imageError == imageErrorType.ratio\">{{'form.imageControl.imageErrorRatio' | translate: {resizeToWidth, resizeToHeight} }}</small>\n <small *ngIf=\"imageError == imageErrorType.fileType\">{{'form.imageControl.imageErrorFileType' | translate}}</small>\n <small *ngIf=\"imageError == imageErrorType.size\">{{'form.imageControl.imageErrorSize' | translate}}</small>\n </div>\n</div>\n\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\">\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'form.imageControl.imageChooserCancelButton' | translate\"\n class=\"onshore-button-light mr-2\"\n (click)=\"clear(); canceled.emit(true)\">\n </button>\n\n <button pButton\n type=\"button\"\n [label]=\"'form.imageControl.imageChooserSelectButton' | translate\"\n class=\"onshore-button-light\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i3$3.Footer, selector: "p-footer" }, { kind: "component", type: i4$1.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
641
+ OnshoreImageChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreImageChooserComponent, selector: "onshore-image-chooser", inputs: { imageSettings: "imageSettings" }, outputs: { choosen: "choosen", canceled: "canceled" }, ngImport: i0, template: "<div class=\"flex flex-column justify-content-center align-items-center w-full\">\n\n <div *ngIf=\"!image\" class=\"flex justify-content-center flex-column align-items-center w-full\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n [description]=\"'Die Bilddatei muss mindestens ' + resizeToWidth + 'px x ' + resizeToHeight + 'px betragen, darf maximal 6,4 MB gro\u00DF sein und muss im Dateiformat JPG oder PNG vorliegen.'\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <div\n class=\"onshore-image-upload flex flex-column justify-content-between align-items-center rounded-lg p-4 relative m-3\"\n [class.onshore-border-gray-3]=\"drag\"\n [class.onshore-border-danger]=\"imageError != imageErrorType.none\">\n <i class=\"fa fa-image fa-5x onshore-color-gray-4\"></i>\n <small class=\"onshore-color-gray-4 mb-2\">{{'form.imageControl.dropImageLabel' | translate}}</small>\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-file\"\n [label]=\"'form.imageControl.imageChooserFileButton' | translate\"\n class=\"onshore-button-primary mr-2\">\n </button>\n\n <input\n (change)=\"fileChange($event)\"\n *ngIf=\"!image\"\n accept=\"image/png, image/jpeg, image/webp\"\n class=\"onshore-image-input absolute w-full h-full\"\n type=\"file\"\n (dragenter)=\"drag = true\"\n (dragleave)=\"drag = false\"\n (dragend)=\"drag = false\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-column relative align-items-center w-full\" *ngIf=\"image\">\n <image-cropper\n class=\"m-3\" [style]=\"'height: ' + imageSettings.cropperPreviewHeight + 'px; width: ' + imageSettings.cropperPreviewWidth + 'px'\"\n [class.onshore-cropper-circle]=\"this.imageSettings.circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"this.imageSettings.imageQuality\"\n [alignImage]=\"this.imageSettings.alignImage\"\n [backgroundColor]=\"this.imageSettings.backgroundColor\"\n [containWithinAspectRatio]=\"this.imageSettings.containWithinAspectRatio\"\n [format]=\"this.imageSettings.format\"\n [aspectRatio]=\"this.imageSettings.aspectRatio\"\n [resizeToHeight]=\"this.imageSettings.imageWidth\"\n [resizeToWidth]=\"this.imageSettings.imageHeight\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"imageError\"class=\"pb-2 text-wrap text-center onshore-color-danger\">\n <small *ngIf=\"imageError == imageErrorType.ratio\">{{'form.imageControl.imageErrorRatio' | translate: {resizeToWidth: this.imageSettings.imageWidth, resizeToHeight: this.imageSettings.imageHeight} }}</small>\n <small *ngIf=\"imageError == imageErrorType.fileType\">{{'form.imageControl.imageErrorFileType' | translate}}</small>\n <small *ngIf=\"imageError == imageErrorType.size\">{{'form.imageControl.imageErrorSize' | translate}}</small>\n </div>\n</div>\n\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\">\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'form.imageControl.imageChooserCancelButton' | translate\"\n class=\"onshore-button-light mr-2\"\n (click)=\"clear(); canceled.emit(true)\">\n </button>\n\n <button pButton\n type=\"button\"\n [label]=\"'form.imageControl.imageChooserSelectButton' | translate\"\n class=\"onshore-button-light\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i3$3.Footer, selector: "p-footer" }, { kind: "component", type: i4$1.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
645
642
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImageChooserComponent, decorators: [{
646
643
  type: Component,
647
- args: [{ selector: 'onshore-image-chooser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-column justify-content-center align-items-center w-full\">\n\n <div *ngIf=\"!image\" class=\"flex justify-content-center flex-column align-items-center w-full\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n [description]=\"'Die Bilddatei muss mindestens ' + resizeToWidth + 'px x ' + resizeToHeight + 'px betragen, darf maximal 6,4 MB gro\u00DF sein und muss im Dateiformat JPG oder PNG vorliegen.'\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <div\n class=\"onshore-image-upload flex flex-column justify-content-between align-items-center rounded-lg p-4 relative m-3\"\n [class.onshore-border-gray-3]=\"drag\"\n [class.onshore-border-danger]=\"imageError != imageErrorType.none\">\n <i class=\"fa fa-image fa-5x onshore-color-gray-4\"></i>\n <small class=\"onshore-color-gray-4 mb-2\">{{'form.imageControl.dropImageLabel' | translate}}</small>\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-file\"\n [label]=\"'form.imageControl.imageChooserFileButton' | translate\"\n class=\"onshore-button-primary mr-2\">\n </button>\n\n <input\n (change)=\"fileChange($event)\"\n *ngIf=\"!image\"\n accept=\"image/png, image/jpeg, image/webp\"\n class=\"onshore-image-input absolute w-full h-full\"\n type=\"file\"\n (dragenter)=\"drag = true\"\n (dragleave)=\"drag = false\"\n (dragend)=\"drag = false\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-column relative align-items-center w-full\" *ngIf=\"image\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n description=\"W\u00E4hle einen Bereich der vom Bild verwendet werden soll.\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <image-cropper\n class=\"onshore-image-cropper m-3\"\n [class.onshore-cropper-circle]=\"circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageQuality\"\n [alignImage]=\"alignImage\"\n [backgroundColor]=\"backgroundColor\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [format]=\"format\"\n [aspectRatio]=\"aspectRatio\"\n [resizeToHeight]=\"resizeToHeight\"\n [resizeToWidth]=\"resizeToWidth\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"imageError\"class=\"pb-2 text-wrap text-center onshore-color-danger\">\n <small *ngIf=\"imageError == imageErrorType.ratio\">{{'form.imageControl.imageErrorRatio' | translate: {resizeToWidth, resizeToHeight} }}</small>\n <small *ngIf=\"imageError == imageErrorType.fileType\">{{'form.imageControl.imageErrorFileType' | translate}}</small>\n <small *ngIf=\"imageError == imageErrorType.size\">{{'form.imageControl.imageErrorSize' | translate}}</small>\n </div>\n</div>\n\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\">\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'form.imageControl.imageChooserCancelButton' | translate\"\n class=\"onshore-button-light mr-2\"\n (click)=\"clear(); canceled.emit(true)\">\n </button>\n\n <button pButton\n type=\"button\"\n [label]=\"'form.imageControl.imageChooserSelectButton' | translate\"\n class=\"onshore-button-light\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n" }]
648
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { imageQuality: [{
649
- type: Input
650
- }], resizeToHeight: [{
651
- type: Input
652
- }], resizeToWidth: [{
653
- type: Input
654
- }], backgroundColor: [{
655
- type: Input
656
- }], format: [{
657
- type: Input
658
- }], alignImage: [{
659
- type: Input
660
- }], containWithinAspectRatio: [{
661
- type: Input
662
- }], aspectRatio: [{
663
- type: Input
664
- }], cropperPreviewHeight: [{
665
- type: Input
666
- }], cropperPreviewWidth: [{
667
- type: Input
668
- }], circleCropper: [{
669
- type: Input
670
- }], autoSave: [{
671
- type: Input
672
- }], inverseColor: [{
644
+ args: [{ selector: 'onshore-image-chooser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-column justify-content-center align-items-center w-full\">\n\n <div *ngIf=\"!image\" class=\"flex justify-content-center flex-column align-items-center w-full\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n [description]=\"'Die Bilddatei muss mindestens ' + resizeToWidth + 'px x ' + resizeToHeight + 'px betragen, darf maximal 6,4 MB gro\u00DF sein und muss im Dateiformat JPG oder PNG vorliegen.'\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <div\n class=\"onshore-image-upload flex flex-column justify-content-between align-items-center rounded-lg p-4 relative m-3\"\n [class.onshore-border-gray-3]=\"drag\"\n [class.onshore-border-danger]=\"imageError != imageErrorType.none\">\n <i class=\"fa fa-image fa-5x onshore-color-gray-4\"></i>\n <small class=\"onshore-color-gray-4 mb-2\">{{'form.imageControl.dropImageLabel' | translate}}</small>\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-file\"\n [label]=\"'form.imageControl.imageChooserFileButton' | translate\"\n class=\"onshore-button-primary mr-2\">\n </button>\n\n <input\n (change)=\"fileChange($event)\"\n *ngIf=\"!image\"\n accept=\"image/png, image/jpeg, image/webp\"\n class=\"onshore-image-input absolute w-full h-full\"\n type=\"file\"\n (dragenter)=\"drag = true\"\n (dragleave)=\"drag = false\"\n (dragend)=\"drag = false\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-column relative align-items-center w-full\" *ngIf=\"image\">\n <image-cropper\n class=\"m-3\" [style]=\"'height: ' + imageSettings.cropperPreviewHeight + 'px; width: ' + imageSettings.cropperPreviewWidth + 'px'\"\n [class.onshore-cropper-circle]=\"this.imageSettings.circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"this.imageSettings.imageQuality\"\n [alignImage]=\"this.imageSettings.alignImage\"\n [backgroundColor]=\"this.imageSettings.backgroundColor\"\n [containWithinAspectRatio]=\"this.imageSettings.containWithinAspectRatio\"\n [format]=\"this.imageSettings.format\"\n [aspectRatio]=\"this.imageSettings.aspectRatio\"\n [resizeToHeight]=\"this.imageSettings.imageWidth\"\n [resizeToWidth]=\"this.imageSettings.imageHeight\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"imageError\"class=\"pb-2 text-wrap text-center onshore-color-danger\">\n <small *ngIf=\"imageError == imageErrorType.ratio\">{{'form.imageControl.imageErrorRatio' | translate: {resizeToWidth: this.imageSettings.imageWidth, resizeToHeight: this.imageSettings.imageHeight} }}</small>\n <small *ngIf=\"imageError == imageErrorType.fileType\">{{'form.imageControl.imageErrorFileType' | translate}}</small>\n <small *ngIf=\"imageError == imageErrorType.size\">{{'form.imageControl.imageErrorSize' | translate}}</small>\n </div>\n</div>\n\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\">\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'form.imageControl.imageChooserCancelButton' | translate\"\n class=\"onshore-button-light mr-2\"\n (click)=\"clear(); canceled.emit(true)\">\n </button>\n\n <button pButton\n type=\"button\"\n [label]=\"'form.imageControl.imageChooserSelectButton' | translate\"\n class=\"onshore-button-light\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n" }]
645
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { imageSettings: [{
673
646
  type: Input
674
647
  }], choosen: [{
675
648
  type: Output
@@ -680,18 +653,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
680
653
  class WebcamComponent {
681
654
  constructor(cdr) {
682
655
  this.cdr = cdr;
683
- this.inverseColor = false;
684
- this.imageQuality = 100;
685
- this.resizeToHeight = 400;
686
- this.resizeToWidth = 400;
687
- this.backgroundColor = 'white';
688
- this.format = 'png';
689
- this.alignImage = 'center';
690
- this.containWithinAspectRatio = false;
691
- this.aspectRatio = 1 / 1;
692
- this.cropperPreviewHeight = 200;
693
- this.cropperPreviewWidth = 200;
694
- this.circleCropper = false;
695
656
  this.shot = new EventEmitter();
696
657
  this.canceled = new EventEmitter();
697
658
  this.image = '';
@@ -717,33 +678,11 @@ class WebcamComponent {
717
678
  }
718
679
  }
719
680
  WebcamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebcamComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
720
- WebcamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: WebcamComponent, selector: "onshore-webcam", inputs: { inverseColor: "inverseColor", imageQuality: "imageQuality", resizeToHeight: "resizeToHeight", resizeToWidth: "resizeToWidth", backgroundColor: "backgroundColor", format: "format", alignImage: "alignImage", containWithinAspectRatio: "containWithinAspectRatio", aspectRatio: "aspectRatio", cropperPreviewHeight: "cropperPreviewHeight", cropperPreviewWidth: "cropperPreviewWidth", circleCropper: "circleCropper" }, outputs: { shot: "shot", canceled: "canceled" }, ngImport: i0, template: "<div class=\"flex w-full justify-content-center align-items-center overflow-hidden p-2\" [class.onshore-inverse-color]=\"inverseColor\">\n <webcam *ngIf=\"!image || image == ''\"\n [mirrorImage]=\"'never'\"\n [height]=\"400\"\n [allowCameraSwitch]=\"true\"\n [trigger]=\"triggerObservable\"\n (imageCapture)=\"camImageShot($event)\">\n </webcam>\n\n <!--<div class=\"onshore-webcam-border position-absolute w-100 h-100\"></div>-->\n\n <image-cropper *ngIf=\"image && image != ''\"\n class=\"onshore-image-cropper m-3\"\n [class.onshore-cropper-circle]=\"circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageQuality\"\n [alignImage]=\"alignImage\"\n [backgroundColor]=\"backgroundColor\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [format]=\"format\"\n [aspectRatio]=\"aspectRatio\"\n [resizeToHeight]=\"resizeToHeight\"\n [resizeToWidth]=\"resizeToWidth\">\n </image-cropper>\n</div>\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\" [class.onshore-inverse-color]=\"inverseColor\">\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'global.cancel' | translate\"\n class=\"onshore-button-primary mr-2\"\n (click)=\"canceled.emit(true)\">\n </button>\n\n <button *ngIf=\"!image || image == ''\"\n pButton\n type=\"button\"\n [label]=\"'form.imageControl.webcamSmileButton' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-laugh-wink\"\n (click)=\"triggerSnapshot()\">\n </button>\n\n <button *ngIf=\"image && image != ''\"\n pButton\n type=\"button\"\n [label]=\"'global.use' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i3$3.Footer, selector: "p-footer" }, { kind: "component", type: i4$1.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "component", type: i5$1.WebcamComponent, selector: "webcam", inputs: ["width", "height", "videoOptions", "allowCameraSwitch", "mirrorImage", "captureImageData", "imageType", "imageQuality", "trigger", "switchCamera"], outputs: ["imageCapture", "initError", "imageClick", "cameraSwitched"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
681
+ WebcamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: WebcamComponent, selector: "onshore-webcam", inputs: { imageSettings: "imageSettings" }, outputs: { shot: "shot", canceled: "canceled" }, ngImport: i0, template: "<div class=\"flex w-full justify-content-center align-items-center overflow-hidden p-2\">\n <webcam *ngIf=\"!image || image == ''\"\n [mirrorImage]=\"'never'\"\n [height]=\"imageSettings.webcamWidth\"\n [width]=\"imageSettings.webcamHeight\"\n [allowCameraSwitch]=\"true\"\n [trigger]=\"triggerObservable\"\n [imageQuality]=\"imageSettings.imageQuality / 100\"\n (imageCapture)=\"camImageShot($event)\">\n </webcam>\n\n <image-cropper *ngIf=\"image && image != ''\"\n class=\"m-3\" [style]=\"'height: ' + imageSettings.cropperPreviewWidth + 'px; width: ' + imageSettings.cropperPreviewHeight + 'px'\"\n [class.onshore-cropper-circle]=\"imageSettings.circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageSettings.imageQuality\"\n [alignImage]=\"imageSettings.alignImage\"\n [backgroundColor]=\"imageSettings.backgroundColor\"\n [containWithinAspectRatio]=\"imageSettings.containWithinAspectRatio\"\n [format]=\"imageSettings.format\"\n [aspectRatio]=\"imageSettings.aspectRatio\"\n [resizeToHeight]=\"imageSettings.imageHeight\"\n [resizeToWidth]=\"imageSettings.imageWidth\">\n </image-cropper>\n</div>\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\">\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'global.cancel' | translate\"\n class=\"onshore-button-primary mr-2\"\n (click)=\"canceled.emit(true)\">\n </button>\n\n <button *ngIf=\"!image || image == ''\"\n pButton\n type=\"button\"\n [label]=\"'form.imageControl.webcamSmileButton' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-laugh-wink\"\n (click)=\"triggerSnapshot()\">\n </button>\n\n <button *ngIf=\"image && image != ''\"\n pButton\n type=\"button\"\n [label]=\"'global.use' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i3$3.Footer, selector: "p-footer" }, { kind: "component", type: i4$1.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "component", type: i5$1.WebcamComponent, selector: "webcam", inputs: ["width", "height", "videoOptions", "allowCameraSwitch", "mirrorImage", "captureImageData", "imageType", "imageQuality", "trigger", "switchCamera"], outputs: ["imageCapture", "initError", "imageClick", "cameraSwitched"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
721
682
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebcamComponent, decorators: [{
722
683
  type: Component,
723
- args: [{ selector: 'onshore-webcam', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex w-full justify-content-center align-items-center overflow-hidden p-2\" [class.onshore-inverse-color]=\"inverseColor\">\n <webcam *ngIf=\"!image || image == ''\"\n [mirrorImage]=\"'never'\"\n [height]=\"400\"\n [allowCameraSwitch]=\"true\"\n [trigger]=\"triggerObservable\"\n (imageCapture)=\"camImageShot($event)\">\n </webcam>\n\n <!--<div class=\"onshore-webcam-border position-absolute w-100 h-100\"></div>-->\n\n <image-cropper *ngIf=\"image && image != ''\"\n class=\"onshore-image-cropper m-3\"\n [class.onshore-cropper-circle]=\"circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageQuality\"\n [alignImage]=\"alignImage\"\n [backgroundColor]=\"backgroundColor\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [format]=\"format\"\n [aspectRatio]=\"aspectRatio\"\n [resizeToHeight]=\"resizeToHeight\"\n [resizeToWidth]=\"resizeToWidth\">\n </image-cropper>\n</div>\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\" [class.onshore-inverse-color]=\"inverseColor\">\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'global.cancel' | translate\"\n class=\"onshore-button-primary mr-2\"\n (click)=\"canceled.emit(true)\">\n </button>\n\n <button *ngIf=\"!image || image == ''\"\n pButton\n type=\"button\"\n [label]=\"'form.imageControl.webcamSmileButton' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-laugh-wink\"\n (click)=\"triggerSnapshot()\">\n </button>\n\n <button *ngIf=\"image && image != ''\"\n pButton\n type=\"button\"\n [label]=\"'global.use' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n\n" }]
724
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { inverseColor: [{
725
- type: Input
726
- }], imageQuality: [{
727
- type: Input
728
- }], resizeToHeight: [{
729
- type: Input
730
- }], resizeToWidth: [{
731
- type: Input
732
- }], backgroundColor: [{
733
- type: Input
734
- }], format: [{
735
- type: Input
736
- }], alignImage: [{
737
- type: Input
738
- }], containWithinAspectRatio: [{
739
- type: Input
740
- }], aspectRatio: [{
741
- type: Input
742
- }], cropperPreviewHeight: [{
743
- type: Input
744
- }], cropperPreviewWidth: [{
745
- type: Input
746
- }], circleCropper: [{
684
+ args: [{ selector: 'onshore-webcam', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex w-full justify-content-center align-items-center overflow-hidden p-2\">\n <webcam *ngIf=\"!image || image == ''\"\n [mirrorImage]=\"'never'\"\n [height]=\"imageSettings.webcamWidth\"\n [width]=\"imageSettings.webcamHeight\"\n [allowCameraSwitch]=\"true\"\n [trigger]=\"triggerObservable\"\n [imageQuality]=\"imageSettings.imageQuality / 100\"\n (imageCapture)=\"camImageShot($event)\">\n </webcam>\n\n <image-cropper *ngIf=\"image && image != ''\"\n class=\"m-3\" [style]=\"'height: ' + imageSettings.cropperPreviewWidth + 'px; width: ' + imageSettings.cropperPreviewHeight + 'px'\"\n [class.onshore-cropper-circle]=\"imageSettings.circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageSettings.imageQuality\"\n [alignImage]=\"imageSettings.alignImage\"\n [backgroundColor]=\"imageSettings.backgroundColor\"\n [containWithinAspectRatio]=\"imageSettings.containWithinAspectRatio\"\n [format]=\"imageSettings.format\"\n [aspectRatio]=\"imageSettings.aspectRatio\"\n [resizeToHeight]=\"imageSettings.imageHeight\"\n [resizeToWidth]=\"imageSettings.imageWidth\">\n </image-cropper>\n</div>\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\">\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'global.cancel' | translate\"\n class=\"onshore-button-primary mr-2\"\n (click)=\"canceled.emit(true)\">\n </button>\n\n <button *ngIf=\"!image || image == ''\"\n pButton\n type=\"button\"\n [label]=\"'form.imageControl.webcamSmileButton' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-laugh-wink\"\n (click)=\"triggerSnapshot()\">\n </button>\n\n <button *ngIf=\"image && image != ''\"\n pButton\n type=\"button\"\n [label]=\"'global.use' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n\n" }]
685
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { imageSettings: [{
747
686
  type: Input
748
687
  }], shot: [{
749
688
  type: Output
@@ -762,6 +701,7 @@ class OnshoreFormImageItemComponent {
762
701
  this.imageReady = new EventEmitter();
763
702
  this.selectFromMedia = new EventEmitter();
764
703
  this.isLoading = new EventEmitter();
704
+ this.OnshoreFormTemplateLayout = OnshoreFormTemplateLayout;
765
705
  this.defaultImageSettings = {
766
706
  imageWidth: 400,
767
707
  imageHeight: 400,
@@ -772,7 +712,19 @@ class OnshoreFormImageItemComponent {
772
712
  mediaSelectionEnabled: true,
773
713
  deleteEnabled: true,
774
714
  placeholderImage: '',
775
- placeholderIcon: 'fa fa-image fa-10x'
715
+ placeholderIcon: 'fa fa-image fa-10x',
716
+ containerWidth: 250,
717
+ containerHeight: 250,
718
+ imageQuality: 100,
719
+ format: 'png',
720
+ alignImage: 'center',
721
+ cropperPreviewWidth: 400,
722
+ cropperPreviewHeight: 400,
723
+ webcamWidth: 400,
724
+ webcamHeight: 400,
725
+ circleCropper: false,
726
+ maxFileSize: 6400000,
727
+ backgroundColor: 'white'
776
728
  };
777
729
  this.image = '';
778
730
  this.disabled = false;
@@ -869,22 +821,48 @@ class OnshoreFormImageItemComponent {
869
821
  this.imageSettings.aspectRatio = this.defaultImageSettings.aspectRatio;
870
822
  if (!imageSettings.containWithinAspectRatio)
871
823
  this.imageSettings.containWithinAspectRatio = this.defaultImageSettings.containWithinAspectRatio;
872
- if (!imageSettings.imageSelectionEnabled)
824
+ if (imageSettings.imageSelectionEnabled == null)
873
825
  this.imageSettings.imageSelectionEnabled = this.defaultImageSettings.imageSelectionEnabled;
874
- if (!imageSettings.mediaSelectionEnabled)
826
+ if (imageSettings.mediaSelectionEnabled == null)
875
827
  this.imageSettings.mediaSelectionEnabled = this.defaultImageSettings.mediaSelectionEnabled;
876
- if (!imageSettings.webcamSelectionEnabled)
828
+ if (imageSettings.webcamSelectionEnabled == null)
877
829
  this.imageSettings.webcamSelectionEnabled = this.defaultImageSettings.webcamSelectionEnabled;
878
- if (!imageSettings.deleteEnabled)
830
+ if (imageSettings.deleteEnabled == null)
879
831
  this.imageSettings.deleteEnabled = this.defaultImageSettings.deleteEnabled;
832
+ if (imageSettings.containerWidth == null)
833
+ this.imageSettings.containerWidth = this.defaultImageSettings.containerWidth;
834
+ if (imageSettings.containerHeight == null)
835
+ this.imageSettings.containerHeight = this.defaultImageSettings.containerHeight;
836
+ if (imageSettings.imageQuality == null)
837
+ this.imageSettings.imageQuality = this.defaultImageSettings.imageQuality;
838
+ if (imageSettings.format == null)
839
+ this.imageSettings.format = this.defaultImageSettings.format;
840
+ if (imageSettings.alignImage == null)
841
+ this.imageSettings.alignImage = this.defaultImageSettings.alignImage;
842
+ if (imageSettings.cropperPreviewWidth == null)
843
+ this.imageSettings.cropperPreviewWidth = this.defaultImageSettings.cropperPreviewWidth;
844
+ if (imageSettings.cropperPreviewHeight == null)
845
+ this.imageSettings.cropperPreviewHeight = this.defaultImageSettings.cropperPreviewHeight;
846
+ if (imageSettings.circleCropper == null)
847
+ this.imageSettings.circleCropper = this.defaultImageSettings.circleCropper;
848
+ if (imageSettings.maxFileSize == null)
849
+ this.imageSettings.maxFileSize = this.defaultImageSettings.maxFileSize;
850
+ if (imageSettings.backgroundColor == null)
851
+ this.imageSettings.backgroundColor = this.defaultImageSettings.backgroundColor;
852
+ if (imageSettings.webcamWidth == null)
853
+ this.imageSettings.webcamWidth = this.defaultImageSettings.webcamWidth;
854
+ if (imageSettings.webcamHeight == null)
855
+ this.imageSettings.webcamHeight = this.defaultImageSettings.webcamHeight;
880
856
  }
857
+ this.removeImage();
858
+ this.cdr.markForCheck();
881
859
  }
882
860
  }
883
861
  OnshoreFormImageItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreFormImageItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }, { token: i2$4.DialogService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
884
- OnshoreFormImageItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreFormImageItemComponent, selector: "onshore-form-image-item", inputs: { formTemplate: "formTemplate", imageSettings: "imageSettings" }, outputs: { imageDeleted: "imageDeleted", imageCleared: "imageCleared", imageReady: "imageReady", selectFromMedia: "selectFromMedia", isLoading: "isLoading" }, usesOnChanges: true, ngImport: i0, template: "<onshore-form-item-container [formTemplate]=\"formTemplate\" [ngControl]=\"ngControl\">\n <div class=\"w-full flex align-items-center flex-wrap\">\n\n <div class=\"position-relative flex justify-content-center align-items-center onshore-border-gray-4 border-solid border-1\" style=\"background-color: white\">\n <onshore-image-placeholder\n class=\"w-full\"\n [image]=\"image\"\n imageStyle=\"position: absolut; height: 250px; width: 250px\"\n [placeholderIcon]=\"imageSettings.placeholderIcon\"\n [placeholderImage]=\"imageSettings.placeholderImage\"\n placeholderStyle=\"width: 250px; height: 250px\">\n </onshore-image-placeholder>\n </div>\n\n <div class=\"flex flex-column m-4\">\n <button pButton\n type=\"button\"\n [hidden]=\"!imageSettings.imageSelectionEnabled\"\n icon=\"fa fa-image\"\n [label]=\"'form.imageControl.uploadImageButton' | translate\"\n class=\"onshore-button-primary mb-2\"\n [disabled]=\"disabled\"\n (click)=\"imageChooserDialogVisible = true; cdr.detectChanges()\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"!imageSettings.webcamSelectionEnabled\"\n icon=\"fa fa-camera\"\n [label]=\"'form.imageControl.webcamImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"webcamDialogVisible = true\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"!imageSettings.mediaSelectionEnabled\"\n icon=\"fa fa-photo-video\"\n [label]=\"'form.imageControl.mediaImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"selectFromMedia.emit()\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"!imageSettings.deleteEnabled\"\n icon=\"fa fa-eraser\"\n [label]=\"'form.imageControl.removeImageButton' | translate\"\n class=\"onshore-button-light\"\n (click)=\"removeImage()\"\n [disabled]=\"!image || disabled\">\n </button>\n\n </div>\n\n </div>\n</onshore-form-item-container>\n\n<p-dialog [header]=\"'form.imageControl.uploadImageTitle' | translate\" [(visible)]=\"imageChooserDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-image-chooser\n (choosen)=\"getFileImage($event)\"\n (canceled)=\"imageChooserDialogVisible = false\"\n [resizeToWidth]=\"imageSettings.imageWidth\"\n [resizeToHeight]=\"imageSettings.imageHeight\"\n [containWithinAspectRatio]=\"imageSettings.containWithinAspectRatio\"\n [aspectRatio]=\"imageSettings.aspectRatio\"\n backgroundColor=\"transparent\">\n </onshore-image-chooser>\n</p-dialog>\n\n<p-dialog [header]=\"'form.imageControl.webacmImageTitle' | translate\" [(visible)]=\"webcamDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-webcam *ngIf=\"webcamDialogVisible\" (shot)=\"getWebcamImage($event)\" (canceled)=\"webcamDialogVisible = false\"></onshore-webcam>\n</p-dialog>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: OnshoreImagePlaceholderComponent, selector: "onshore-image-placeholder", inputs: ["placeholderIcon", "placeholderImage", "image", "imageStyle", "placeholderStyle", "showLoader"] }, { kind: "component", type: OnshoreFormItemContainer, selector: "onshore-form-item-container", inputs: ["formTemplate", "ngControl"] }, { kind: "component", type: OnshoreImageChooserComponent, selector: "onshore-image-chooser", inputs: ["imageQuality", "resizeToHeight", "resizeToWidth", "backgroundColor", "format", "alignImage", "containWithinAspectRatio", "aspectRatio", "cropperPreviewHeight", "cropperPreviewWidth", "circleCropper", "autoSave", "inverseColor"], outputs: ["choosen", "canceled"] }, { kind: "component", type: WebcamComponent, selector: "onshore-webcam", inputs: ["inverseColor", "imageQuality", "resizeToHeight", "resizeToWidth", "backgroundColor", "format", "alignImage", "containWithinAspectRatio", "aspectRatio", "cropperPreviewHeight", "cropperPreviewWidth", "circleCropper"], outputs: ["shot", "canceled"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
862
+ OnshoreFormImageItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreFormImageItemComponent, selector: "onshore-form-image-item", inputs: { formTemplate: "formTemplate", imageSettings: "imageSettings" }, outputs: { imageDeleted: "imageDeleted", imageCleared: "imageCleared", imageReady: "imageReady", selectFromMedia: "selectFromMedia", isLoading: "isLoading" }, usesOnChanges: true, ngImport: i0, template: "<onshore-form-item-container [formTemplate]=\"formTemplate\" [ngControl]=\"ngControl\">\n <div class=\"w-full flex align-items-center flex-wrap\" [class.flex-column]=\"formTemplate.layout === OnshoreFormTemplateLayout.vertical\">\n\n <div class=\"position-relative flex justify-content-center align-items-center onshore-border-gray-4 border-solid border-1\" style=\"background-color: white\">\n <onshore-image-placeholder\n class=\"w-full\"\n [image]=\"image\"\n [imageStyle]=\"'position: absolut; width: ' + imageSettings.containerWidth + 'px; height: ' + imageSettings.containerHeight + 'px'\"\n [placeholderIcon]=\"imageSettings.placeholderIcon\"\n [placeholderImage]=\"imageSettings.placeholderImage\"\n [placeholderStyle]=\"'width: ' + imageSettings.containerWidth + 'px; height: ' + imageSettings.containerHeight + 'px'\">\n </onshore-image-placeholder>\n </div>\n\n <div class=\"flex flex-column m-4\">\n <button pButton\n type=\"button\"\n *ngIf=\"imageSettings.imageSelectionEnabled\"\n icon=\"fa fa-image\"\n [label]=\"'form.imageControl.uploadImageButton' | translate\"\n class=\"onshore-button-primary mb-2\"\n [disabled]=\"disabled\"\n (click)=\"imageChooserDialogVisible = true; cdr.detectChanges()\">\n </button>\n\n <button pButton\n type=\"button\"\n *ngIf=\"imageSettings.webcamSelectionEnabled\"\n icon=\"fa fa-camera\"\n [label]=\"'form.imageControl.webcamImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"webcamDialogVisible = true\">\n </button>\n\n <button pButton\n type=\"button\"\n *ngIf=\"imageSettings.mediaSelectionEnabled\"\n icon=\"fa fa-photo-video\"\n [label]=\"'form.imageControl.mediaImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"selectFromMedia.emit()\">\n </button>\n\n <button pButton\n type=\"button\"\n *ngIf=\"imageSettings.deleteEnabled\"\n icon=\"fa fa-eraser\"\n [label]=\"'form.imageControl.removeImageButton' | translate\"\n class=\"onshore-button-light\"\n (click)=\"removeImage()\"\n [disabled]=\"!image || disabled\">\n </button>\n\n </div>\n\n </div>\n</onshore-form-item-container>\n\n<p-dialog [header]=\"'form.imageControl.uploadImageTitle' | translate\" [(visible)]=\"imageChooserDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\" >\n <onshore-image-chooser\n (choosen)=\"getFileImage($event)\"\n (canceled)=\"imageChooserDialogVisible = false\"\n [imageSettings]=\"imageSettings\">\n </onshore-image-chooser>\n</p-dialog>\n\n<p-dialog [header]=\"'form.imageControl.webacmImageTitle' | translate\" [(visible)]=\"webcamDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-webcam\n *ngIf=\"webcamDialogVisible\"\n (shot)=\"getWebcamImage($event)\"\n (canceled)=\"webcamDialogVisible = false\"\n [imageSettings]=\"imageSettings\"></onshore-webcam>\n</p-dialog>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: OnshoreImagePlaceholderComponent, selector: "onshore-image-placeholder", inputs: ["placeholderIcon", "placeholderImage", "image", "imageStyle", "placeholderStyle", "showLoader"] }, { kind: "component", type: OnshoreFormItemContainer, selector: "onshore-form-item-container", inputs: ["formTemplate", "ngControl"] }, { kind: "component", type: OnshoreImageChooserComponent, selector: "onshore-image-chooser", inputs: ["imageSettings"], outputs: ["choosen", "canceled"] }, { kind: "component", type: WebcamComponent, selector: "onshore-webcam", inputs: ["imageSettings"], outputs: ["shot", "canceled"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
885
863
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreFormImageItemComponent, decorators: [{
886
864
  type: Component,
887
- args: [{ selector: 'onshore-form-image-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<onshore-form-item-container [formTemplate]=\"formTemplate\" [ngControl]=\"ngControl\">\n <div class=\"w-full flex align-items-center flex-wrap\">\n\n <div class=\"position-relative flex justify-content-center align-items-center onshore-border-gray-4 border-solid border-1\" style=\"background-color: white\">\n <onshore-image-placeholder\n class=\"w-full\"\n [image]=\"image\"\n imageStyle=\"position: absolut; height: 250px; width: 250px\"\n [placeholderIcon]=\"imageSettings.placeholderIcon\"\n [placeholderImage]=\"imageSettings.placeholderImage\"\n placeholderStyle=\"width: 250px; height: 250px\">\n </onshore-image-placeholder>\n </div>\n\n <div class=\"flex flex-column m-4\">\n <button pButton\n type=\"button\"\n [hidden]=\"!imageSettings.imageSelectionEnabled\"\n icon=\"fa fa-image\"\n [label]=\"'form.imageControl.uploadImageButton' | translate\"\n class=\"onshore-button-primary mb-2\"\n [disabled]=\"disabled\"\n (click)=\"imageChooserDialogVisible = true; cdr.detectChanges()\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"!imageSettings.webcamSelectionEnabled\"\n icon=\"fa fa-camera\"\n [label]=\"'form.imageControl.webcamImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"webcamDialogVisible = true\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"!imageSettings.mediaSelectionEnabled\"\n icon=\"fa fa-photo-video\"\n [label]=\"'form.imageControl.mediaImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"selectFromMedia.emit()\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"!imageSettings.deleteEnabled\"\n icon=\"fa fa-eraser\"\n [label]=\"'form.imageControl.removeImageButton' | translate\"\n class=\"onshore-button-light\"\n (click)=\"removeImage()\"\n [disabled]=\"!image || disabled\">\n </button>\n\n </div>\n\n </div>\n</onshore-form-item-container>\n\n<p-dialog [header]=\"'form.imageControl.uploadImageTitle' | translate\" [(visible)]=\"imageChooserDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-image-chooser\n (choosen)=\"getFileImage($event)\"\n (canceled)=\"imageChooserDialogVisible = false\"\n [resizeToWidth]=\"imageSettings.imageWidth\"\n [resizeToHeight]=\"imageSettings.imageHeight\"\n [containWithinAspectRatio]=\"imageSettings.containWithinAspectRatio\"\n [aspectRatio]=\"imageSettings.aspectRatio\"\n backgroundColor=\"transparent\">\n </onshore-image-chooser>\n</p-dialog>\n\n<p-dialog [header]=\"'form.imageControl.webacmImageTitle' | translate\" [(visible)]=\"webcamDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-webcam *ngIf=\"webcamDialogVisible\" (shot)=\"getWebcamImage($event)\" (canceled)=\"webcamDialogVisible = false\"></onshore-webcam>\n</p-dialog>\n" }]
865
+ args: [{ selector: 'onshore-form-image-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<onshore-form-item-container [formTemplate]=\"formTemplate\" [ngControl]=\"ngControl\">\n <div class=\"w-full flex align-items-center flex-wrap\" [class.flex-column]=\"formTemplate.layout === OnshoreFormTemplateLayout.vertical\">\n\n <div class=\"position-relative flex justify-content-center align-items-center onshore-border-gray-4 border-solid border-1\" style=\"background-color: white\">\n <onshore-image-placeholder\n class=\"w-full\"\n [image]=\"image\"\n [imageStyle]=\"'position: absolut; width: ' + imageSettings.containerWidth + 'px; height: ' + imageSettings.containerHeight + 'px'\"\n [placeholderIcon]=\"imageSettings.placeholderIcon\"\n [placeholderImage]=\"imageSettings.placeholderImage\"\n [placeholderStyle]=\"'width: ' + imageSettings.containerWidth + 'px; height: ' + imageSettings.containerHeight + 'px'\">\n </onshore-image-placeholder>\n </div>\n\n <div class=\"flex flex-column m-4\">\n <button pButton\n type=\"button\"\n *ngIf=\"imageSettings.imageSelectionEnabled\"\n icon=\"fa fa-image\"\n [label]=\"'form.imageControl.uploadImageButton' | translate\"\n class=\"onshore-button-primary mb-2\"\n [disabled]=\"disabled\"\n (click)=\"imageChooserDialogVisible = true; cdr.detectChanges()\">\n </button>\n\n <button pButton\n type=\"button\"\n *ngIf=\"imageSettings.webcamSelectionEnabled\"\n icon=\"fa fa-camera\"\n [label]=\"'form.imageControl.webcamImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"webcamDialogVisible = true\">\n </button>\n\n <button pButton\n type=\"button\"\n *ngIf=\"imageSettings.mediaSelectionEnabled\"\n icon=\"fa fa-photo-video\"\n [label]=\"'form.imageControl.mediaImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"selectFromMedia.emit()\">\n </button>\n\n <button pButton\n type=\"button\"\n *ngIf=\"imageSettings.deleteEnabled\"\n icon=\"fa fa-eraser\"\n [label]=\"'form.imageControl.removeImageButton' | translate\"\n class=\"onshore-button-light\"\n (click)=\"removeImage()\"\n [disabled]=\"!image || disabled\">\n </button>\n\n </div>\n\n </div>\n</onshore-form-item-container>\n\n<p-dialog [header]=\"'form.imageControl.uploadImageTitle' | translate\" [(visible)]=\"imageChooserDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\" >\n <onshore-image-chooser\n (choosen)=\"getFileImage($event)\"\n (canceled)=\"imageChooserDialogVisible = false\"\n [imageSettings]=\"imageSettings\">\n </onshore-image-chooser>\n</p-dialog>\n\n<p-dialog [header]=\"'form.imageControl.webacmImageTitle' | translate\" [(visible)]=\"webcamDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-webcam\n *ngIf=\"webcamDialogVisible\"\n (shot)=\"getWebcamImage($event)\"\n (canceled)=\"webcamDialogVisible = false\"\n [imageSettings]=\"imageSettings\"></onshore-webcam>\n</p-dialog>\n" }]
888
866
  }], ctorParameters: function () {
889
867
  return [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{
890
868
  type: Self