@ng-formworks/cssframework 15.8.8 → 15.8.10

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.
@@ -162,7 +162,7 @@ export class CssFrameworkComponent {
162
162
  /{{.+?}}/.test(this.widgetOptions.title || '')) {
163
163
  this.updateTitle();
164
164
  }
165
- this.setTitle();
165
+ this.options.title = this.setTitle();
166
166
  if (this.widgetOptions.title) {
167
167
  this.dynamicTitle = "";
168
168
  }
@@ -222,6 +222,7 @@ export class CssFrameworkComponent {
222
222
  this.debugOutput = map(vars, thisVar => JSON.stringify(thisVar, null, 2)).join('\n');
223
223
  }
224
224
  }
225
+ this.updateTitle();
225
226
  this.frameworkInitialized = true;
226
227
  }
227
228
  }
@@ -266,6 +267,7 @@ export class CssFrameworkComponent {
266
267
  this.dynamicTitle =
267
268
  this.jsf.parseText(this.options?.title, this.jsf.getFormControlValue(this), this.jsf.getFormControlGroup(this)?.value, this.dataIndex[this.dataIndex.length - 1]);
268
269
  //this.jsf.setItemTitle(this);
270
+ //this.widgetLayoutNode.options.title=this.dynamicTitle;
269
271
  }
270
272
  removeItem() {
271
273
  this.jsf.removeItem(this);
@@ -285,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
285
287
  }], widgetStyles: [{
286
288
  type: Input
287
289
  }] } });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLWZyYW1ld29yay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtY3NzZnJhbWV3b3JrL3NyYy9saWIvY3NzLWZyYW1ld29yay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtY3NzZnJhbWV3b3JrL3NyYy9saWIvY3NzLWZyYW1ld29yay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQWdDLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBa0QsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFXM0MsTUFBTSxPQUFPLHFCQUFxQjtJQW1HaEMsWUFDUyxHQUFzQixFQUN0QixHQUEwQixFQUMxQixZQUFvQyxFQUNwQyxZQUFnQztJQUN2QywwREFBMEQ7O1FBSm5ELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQXVCO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUF0R3pDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUk3QixnQkFBVyxHQUFRLElBQUksQ0FBQztRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQVcsSUFBSSxDQUFDO1FBZ0U5QixtQkFBYyxHQUFxQjtZQUNqQyxLQUFLLEVBQUMsRUFBRTtZQUNSLE9BQU8s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QixJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzFDLENBQUM7UUFDRiw4QkFBOEI7SUFDaEMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOzttSEFuVVUscUJBQXFCO3VHQUFyQixxQkFBcUIsa01DYmxDLHdwR0FrRStHOzRGRHJEbEcscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLGVBQWUsaUJBR1YsaUJBQWlCLENBQUMsSUFBSTtvTkFjNUIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGcmFtZXdvcmtMaWJyYXJ5U2VydmljZSwgSnNvblNjaGVtYUZvcm1TZXJ2aWNlLCBhZGRDbGFzc2VzLCBpbkFycmF5IH0gZnJvbSAnQG5nLWZvcm13b3Jrcy9jb3JlJztcclxuaW1wb3J0IF8sIHsgY2xvbmVEZWVwLCBtYXAgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY3NzX2Z3IH0gZnJvbSAnLi9jc3MtZnJhbWV3b3JrLmRlZnMnO1xyXG5pbXBvcnQgeyBDc3NmcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9jc3MtZnJhbWV3b3JrLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjc3MtZnJhbWV3b3JrJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3NzLWZyYW1ld29yay5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3NzLWZyYW1ld29yay5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIENzc0ZyYW1ld29ya0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLE9uRGVzdHJveSB7XHJcbiAgZnJhbWV3b3JrSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICB3aWRnZXRPcHRpb25zOiBhbnk7IC8vIE9wdGlvbnMgcGFzc2VkIHRvIGNoaWxkIHdpZGdldFxyXG4gIHdpZGdldExheW91dE5vZGU6IGFueTsgLy8gbGF5b3V0Tm9kZSBwYXNzZWQgdG8gY2hpbGQgd2lkZ2V0XHJcbiAgb3B0aW9uczogYW55OyAvLyBPcHRpb25zIHVzZWQgaW4gdGhpcyBmcmFtZXdvcmtcclxuICBmb3JtQ29udHJvbDogYW55ID0gbnVsbDtcclxuICBkZWJ1Z091dHB1dDogYW55ID0gJyc7XHJcbiAgZGVidWc6IGFueSA9ICcnO1xyXG4gIHBhcmVudEFycmF5OiBhbnkgPSBudWxsO1xyXG4gIGlzT3JkZXJhYmxlID0gZmFsc2U7XHJcbiAgZHluYW1pY1RpdGxlOiBzdHJpbmcgPSBudWxsO1xyXG4gIGlzRHluYW1pY1RpdGxlOmJvb2xlYW47XHJcbiAgQElucHV0KCkgbGF5b3V0Tm9kZTogYW55O1xyXG4gIEBJbnB1dCgpIGxheW91dEluZGV4OiBudW1iZXJbXTtcclxuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xyXG5cclxuICBASW5wdXQoKSB3aWRnZXRTdHlsZXM6IGNzc19mdy53aWRnZXRzdHlsZXM7XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvL1RPRE8tbW92ZSB0byBuZy1mb3Jtd29ya3MvY29yZSB1dGlsaXR5LmZ1bmN0aW9ucy50c1xyXG4gIGFwcGx5Q3NzQ2xhc3Nlcyh0eXBlLCB3aWRnZXRPcHRpb25zLCBzdHlsZU9wdGlvbnMpIHtcclxuICAgIC8vY29uc29sZS5sb2coXCJhcHBseUNzc0NsYXNzZXMgZm9yIHR5cGU6XCIrdHlwZSk7XHJcbiAgICBsZXQgY3NzQ2xhc3NlcyA9IHRoaXMud2lkZ2V0U3R5bGVzW3R5cGVdO1xyXG4gICAgaWYgKCFjc3NDbGFzc2VzIHx8IF8uaXNFbXB0eShjc3NDbGFzc2VzKSApIHtcclxuICAgICAgY3NzQ2xhc3NlcyA9IHRoaXMud2lkZ2V0U3R5bGVzLmRlZmF1bHQ7XHJcbiAgICB9XHJcbiAgICBPYmplY3Qua2V5cyhjc3NDbGFzc2VzKS5mb3JFYWNoKGNhdE5hbWUgPT4ge1xyXG4gICAgICBsZXQgY2xhc3NMaXN0ID0gY3NzQ2xhc3Nlc1tjYXROYW1lXTtcclxuXHJcbiAgICAgIGlmIChjbGFzc0xpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgd2lkZ2V0T3B0aW9uc1tjYXROYW1lXSA9IGFkZENsYXNzZXMod2lkZ2V0T3B0aW9uc1tjYXROYW1lXSwgY2xhc3NMaXN0KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoc3R5bGVPcHRpb25zKSB7XHJcbiAgICAgICAgd2lkZ2V0T3B0aW9uc1tjYXROYW1lXSA9IGFkZENsYXNzZXMod2lkZ2V0T3B0aW9uc1tjYXROYW1lXSwgc3R5bGVPcHRpb25zKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBmbGF0dGVuV2lkZ2V0U3R5bGVzKHdzdHlsZXM6Y3NzX2Z3LndpZGdldHN0eWxlcyl7XHJcbiAgICB2YXIgZmxhdHRlbmVkOmFueT17fTtcclxuICAgIGxldCBpZ25vcmU9WydfX3RoZW1lc19fJ107XHJcbiAgICBPYmplY3Qua2V5cyh3c3R5bGVzKS5mb3JFYWNoKHdrZXk9PntcclxuICAgICAgbGV0IHdzdHlsZT13c3R5bGVzW3drZXldO1xyXG4gICAgICBpZihpZ25vcmUuaW5kZXhPZih3a2V5KT49MCl7XHJcbiAgICAgICAgZmxhdHRlbmVkW3drZXldPXdzdHlsZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYoXy5pc0FycmF5KHdzdHlsZSkpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIGZsYXR0ZW5lZFt3a2V5XT13c3R5bGUuam9pbihcIiBcIik7XHJcbiAgICAgIH1cclxuICAgICAgaWYoXy5pc09iamVjdCh3c3R5bGUpKXsvL2lzIGNzc2NhdGVnb3JpZXNcclxuICAgICAgICAgIGZsYXR0ZW5lZFt3a2V5XT1mbGF0dGVuZWRbd2tleV18fHt9O1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHdzdHlsZSkuZm9yRWFjaChjYXROYW1lPT57XHJcbiAgICAgICAgICBsZXQgY3NzQ2F0PXdzdHlsZVtjYXROYW1lXTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYoXy5pc0FycmF5KGNzc0NhdCkpe1xyXG4gICAgICAgICAgICBmbGF0dGVuZWRbd2tleV1bY2F0TmFtZV09Y3NzQ2F0LmpvaW4oXCIgXCIpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGZsYXR0ZW5lZFt3a2V5XVtjYXROYW1lXT1jc3NDYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBpZihfLmlzU3RyaW5nKHdzdHlsZSkpe1xyXG4gICAgICAgIGZsYXR0ZW5lZFt3a2V5XT13c3R5bGU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZmxhdHRlbmVkXHJcbn1cclxuXHJcbmRlZmF1bHRTdHlsaW5nOmNzc19mdy53aWRnZXRzdHlsZXM9e1xyXG4gIGFycmF5Ont9LFxyXG4gIGRlZmF1bHQ6e2ZpZWxkSHRtbENsYXNzOiBcImNzc2Z3LWZvcm0tY29udHJvbFwifSxcclxuICBfX3RoZW1lc19fOlt7bmFtZTonbm90aGVtZScsdGV4dDonTm9uZSd9XSxcclxuICBfX3JlbW92ZV9pdGVtX186XCJjc3Nmdy1yZW1vdmUtaXRlbVwiLFxyXG4gICAgX19hcnJheV9pdGVtX25vbnJlZl9fOntcclxuICAgICAgXCJodG1sQ2xhc3NcIjogICBcImNzc2Z3LWFycmF5LWl0ZW0tbm9ucmVmXCJcclxuICB9LFxyXG4gIF9fYWN0aXZlX186e2FjdGl2ZUNsYXNzOlwiY3NzZnctYWN0aXZlXCJ9LFxyXG4gIF9fYXJyYXlfXzp7aHRtbENsYXNzOlwiY3NzZnctYXJyYXlcIn0sXHJcbiAgX19jb250cm9sX2xhYmVsX186e2xhYmVsSHRtbENsYXNzOlwiY3NzZnctY29udHJvbC1sYWJlbFwifSxcclxuICBfX2Zvcm1fZ3JvdXBfXzp7aHRtbENsYXNzOiBcImNzc2Z3LWZvcm0tZ3JvdXBcIn0sXHJcbiAgX19maWVsZF9hZGRvbl9sZWZ0X186XCJjc3Nmdy1hZGRvbi1sZWZ0XCIsXHJcbiAgX19maWVsZF9hZGRvbl9yaWdodF9fOlwiY3NzZnctYWRkb24tcmlnaHRcIixcclxuICBfX2hlbHBfYmxvY2tfXzpcImNzc2Z3LWhlbHAtYmxvY2tcIixcclxuICBfX3JlcXVpcmVkX2FzdGVyaXNrX186XCJjc3Nmdy1yZXF1aXJlZC1hc3RlcnNpc2tcIixcclxuICBfX3NjcmVlbl9yZWFkZXJfXzogXCJjc3Nmdy1zY3JlZW4tcmVhZGVyXCJcclxuXHJcbn1cclxuXHJcblxyXG5cclxuXHJcbnRoZW1lOnN0cmluZ1xyXG5mcmFtZXdvcmtUaGVtZVN1YnM6U3Vic2NyaXB0aW9uO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMganNmOiBKc29uU2NoZW1hRm9ybVNlcnZpY2UsXHJcbiAgICBwdWJsaWMganNmRkxTZXJ2aWNlOkZyYW1ld29ya0xpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNzc0ZXU2VydmljZTpDc3NmcmFtZXdvcmtTZXJ2aWNlXHJcbiAgICAvKkBJbmplY3QoQ1NTX0ZSQU1FV09SS19DRkcgKSBmd2NmZzogY3NzX2Z3LmZyYW1ld29ya2NmZyovXHJcblxyXG4gICkge1xyXG4gICAgXHJcbiAgICBsZXQgYWN0aXZlRnJhbWV3b3JrOmFueT10aGlzLmpzZkZMU2VydmljZS5hY3RpdmVGcmFtZXdvcms7XHJcbiAgICBsZXQgZndjZmc9YWN0aXZlRnJhbWV3b3JrLmNvbmZpZ3x8e307XHJcbiAgICB0aGlzLndpZGdldFN0eWxlcyA9IE9iamVjdC5hc3NpZ24odGhpcy5kZWZhdWx0U3R5bGluZyxmd2NmZy53aWRnZXRzdHlsZXMpO1xyXG4gICAgbGV0IGRlZmF1bHRUaGVtZT10aGlzLndpZGdldFN0eWxlcy5fX3RoZW1lc19fWzBdO1xyXG4gICAgbGV0IGRlZmF1bHRUaGVtZU5hbWU9Y3NzRldTZXJ2aWNlLmFjdGl2ZVJlcXVlc3RlZFRoZW1lfHxkZWZhdWx0VGhlbWUubmFtZTtcclxuICAgIHRoaXMudGhlbWU9dGhpcy5vcHRpb25zPy50aGVtZXx8IGRlZmF1bHRUaGVtZU5hbWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnJhbWV3b3JrVGhlbWVTdWJzPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5mcmFtZXdvcmtUaGVtZVN1YnM9bnVsbDtcclxuICB9XHJcblxyXG5cclxuICBnZXQgc2hvd1JlbW92ZUJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnJlbW92YWJsZSB8fCB0aGlzLm9wdGlvbnMucmVhZG9ubHkgfHxcclxuICAgICAgdGhpcy5sYXlvdXROb2RlLnR5cGUgPT09ICckcmVmJ1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmxheW91dE5vZGUucmVjdXJzaXZlUmVmZXJlbmNlKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmxheW91dE5vZGUuYXJyYXlJdGVtIHx8ICF0aGlzLnBhcmVudEFycmF5KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIElmIGFycmF5IGxlbmd0aCA8PSBtaW5JdGVtcywgZG9uJ3QgYWxsb3cgcmVtb3ZpbmcgYW55IGl0ZW1zXHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRBcnJheS5pdGVtcy5sZW5ndGggLSAxIDw9IHRoaXMucGFyZW50QXJyYXkub3B0aW9ucy5taW5JdGVtcyA/IGZhbHNlIDpcclxuICAgICAgLy8gRm9yIHJlbW92YWJsZSBsaXN0IGl0ZW1zLCBhbGxvdyByZW1vdmluZyBhbnkgaXRlbVxyXG4gICAgICB0aGlzLmxheW91dE5vZGUuYXJyYXlJdGVtVHlwZSA9PT0gJ2xpc3QnID8gdHJ1ZSA6XHJcbiAgICAgICAgLy8gRm9yIHJlbW92YWJsZSB0dXBsZSBpdGVtcywgb25seSBhbGxvdyByZW1vdmluZyBsYXN0IGl0ZW0gaW4gbGlzdFxyXG4gICAgICAgIHRoaXMubGF5b3V0SW5kZXhbdGhpcy5sYXlvdXRJbmRleC5sZW5ndGggLSAxXSA9PT0gdGhpcy5wYXJlbnRBcnJheS5pdGVtcy5sZW5ndGggLSAyO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCBjc3NGV1NlcnZpY2UgPSB0aGlzLmNzc0ZXU2VydmljZTtcclxuICAgIC8vVE9ETyByZXZpZXc6dGhpcyB3aWxsIGJlIHJ1biBieSBldmVyeSBjb21wb25lbnQgaW5zdGFuY2VcclxuICAgIHRoaXMuZnJhbWV3b3JrVGhlbWVTdWJzPWNzc0ZXU2VydmljZS5mcmFtZXdvcmtUaGVtZSQuc3Vic2NyaWJlKG5ld1RoZW1lPT57XHJcbiAgICAgICAgdGhpcy50aGVtZT1uZXdUaGVtZTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbml0aWFsaXplRnJhbWV3b3JrKCk7XHJcbiAgICBpZiAodGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbSAmJiB0aGlzLmxheW91dE5vZGUudHlwZSAhPT0gJyRyZWYnKSB7XHJcbiAgICAgIHRoaXMucGFyZW50QXJyYXkgPSB0aGlzLmpzZi5nZXRQYXJlbnROb2RlKHRoaXMpO1xyXG4gICAgICBpZiAodGhpcy5wYXJlbnRBcnJheSkge1xyXG4gICAgICAgIHRoaXMuaXNPcmRlcmFibGUgPSB0aGlzLmxheW91dE5vZGUuYXJyYXlJdGVtVHlwZSA9PT0gJ2xpc3QnICYmXHJcbiAgICAgICAgICAhdGhpcy5vcHRpb25zLnJlYWRvbmx5ICYmIHRoaXMucGFyZW50QXJyYXkub3B0aW9ucy5vcmRlcmFibGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcclxuICAgIGlmICghdGhpcy5mcmFtZXdvcmtJbml0aWFsaXplZCkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVGcmFtZXdvcmsoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzRHluYW1pY1RpdGxlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVGcmFtZXdvcmsoKSB7XHJcbiAgICBpZiAodGhpcy5sYXlvdXROb2RlKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmxheW91dE5vZGUub3B0aW9ucyk7XHJcbiAgICAgIHRoaXMud2lkZ2V0TGF5b3V0Tm9kZSA9IHtcclxuICAgICAgICAuLi50aGlzLmxheW91dE5vZGUsXHJcbiAgICAgICAgb3B0aW9uczogY2xvbmVEZWVwKHRoaXMubGF5b3V0Tm9kZS5vcHRpb25zKVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLndpZGdldE9wdGlvbnMgPSB0aGlzLndpZGdldExheW91dE5vZGUub3B0aW9ucztcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuanNmLmdldEZvcm1Db250cm9sKHRoaXMpO1xyXG5cclxuICAgICAgdGhpcy5vcHRpb25zLmlzSW5wdXRXaWRnZXQgPSBpbkFycmF5KHRoaXMubGF5b3V0Tm9kZS50eXBlLCBbXHJcbiAgICAgICAgJ2J1dHRvbicsICdjaGVja2JveCcsICdjaGVja2JveGVzLWlubGluZScsICdjaGVja2JveGVzJywgJ2NvbG9yJyxcclxuICAgICAgICAnZGF0ZScsICdkYXRldGltZS1sb2NhbCcsICdkYXRldGltZScsICdlbWFpbCcsICdmaWxlJywgJ2hpZGRlbicsXHJcbiAgICAgICAgJ2ltYWdlJywgJ2ludGVnZXInLCAnbW9udGgnLCAnbnVtYmVyJywgJ3Bhc3N3b3JkJywgJ3JhZGlvJyxcclxuICAgICAgICAncmFkaW9idXR0b25zJywgJ3JhZGlvcy1pbmxpbmUnLCAncmFkaW9zJywgJ3JhbmdlJywgJ3Jlc2V0JywgJ3NlYXJjaCcsXHJcbiAgICAgICAgJ3NlbGVjdCcsICdzdWJtaXQnLCAndGVsJywgJ3RleHQnLCAndGV4dGFyZWEnLCAndGltZScsICd1cmwnLCAnd2VlaydcclxuICAgICAgXSk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmlzRHluYW1pY1RpdGxlPXRoaXMub3B0aW9ucz8udGl0bGUmJiAve3suKz99fS8udGVzdCh0aGlzLm9wdGlvbnMudGl0bGUpXHJcbiAgICAgIHRoaXMuZHluYW1pY1RpdGxlPXRoaXMub3B0aW9ucz8udGl0bGU7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAhWyckcmVmJywgJ2FkdmFuY2VkZmllbGRzZXQnLCAnYXV0aGZpZWxkc2V0JywgJ2J1dHRvbicsICdjYXJkJyxcclxuICAgICAgICAgICdjaGVja2JveCcsICdleHBhbnNpb24tcGFuZWwnLCAnaGVscCcsICdtZXNzYWdlJywgJ21zZycsICdzZWN0aW9uJyxcclxuICAgICAgICAgICdzdWJtaXQnLCAndGFiYXJyYXknLCAndGFicyddLmluY2x1ZGVzKHRoaXMubGF5b3V0Tm9kZS50eXBlKSAmJlxyXG4gICAgICAgIC97ey4rP319Ly50ZXN0KHRoaXMud2lkZ2V0T3B0aW9ucy50aXRsZSB8fCAnJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnNldFRpdGxlKCk7XHJcblxyXG4gICAgICBpZih0aGlzLndpZGdldE9wdGlvbnMudGl0bGUpe1xyXG4gICAgICAgIHRoaXMuZHluYW1pY1RpdGxlPVwiXCI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub3B0aW9ucy5odG1sQ2xhc3MgPVxyXG4gICAgICAgIGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgJ3NjaGVtYS1mb3JtLScgKyB0aGlzLmxheW91dE5vZGUudHlwZSk7XHJcblxyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMubGF5b3V0Tm9kZS50eXBlID09PSAnYXJyYXknKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9IGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgdGhpcy53aWRnZXRTdHlsZXMuX19hcnJheV9fLmh0bWxDbGFzcyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbSAmJiB0aGlzLmxheW91dE5vZGUudHlwZSAhPT0gJyRyZWYnKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9IGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgdGhpcy53aWRnZXRTdHlsZXMuX19hcnJheV9pdGVtX25vbnJlZl9fLmh0bWxDbGFzcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9IGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgdGhpcy53aWRnZXRTdHlsZXMuX19mb3JtX2dyb3VwX18uaHRtbENsYXNzKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuXHJcbiAgICAgIC8qXHJcbiAgICAgIHRoaXMub3B0aW9ucy5odG1sQ2xhc3MgPVxyXG4gICAgICB0aGlzLmxheW91dE5vZGUudHlwZSA9PT0gJ2FycmF5JyA/XHJcbiAgICAgICAgYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCBbJ2JvcmRlcicsJ3NoYWRvdy1tZCcsJ3AtMSddKSA6XHJcbiAgICAgICAgdGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbSAmJiB0aGlzLmxheW91dE5vZGUudHlwZSAhPT0gJyRyZWYnID9cclxuICAgICAgICAgIGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgWydib3JkZXInLCdzaGFkb3ctbWQnLCdwLTEnXSkgOlxyXG4gICAgICAgICAgYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCAnbWItMScpO1xyXG4qL1xyXG5cclxuLypcclxudGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9XHJcbnRoaXMubGF5b3V0Tm9kZS50eXBlID09PSAnYXJyYXknID9cclxuYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCB0aGlzLndpZGdldFN0eWxlcy5hcnJheS5odG1sQ2xhc3MpOlxyXG4gIHRoaXMubGF5b3V0Tm9kZS5hcnJheUl0ZW0gJiYgdGhpcy5sYXlvdXROb2RlLnR5cGUgIT09ICckcmVmJyA/XHJcbiAgYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCB0aGlzLndpZGdldFN0eWxlcy5fX2FycmF5X2l0ZW1fbm9ucmVmX18uaHRtbENsYXNzKTpcclxuICBhZGRDbGFzc2VzKHRoaXMub3B0aW9ucy5odG1sQ2xhc3MsIHRoaXMud2lkZ2V0U3R5bGVzLl9fZm9ybV9ncm91cF9fLmh0bWxDbGFzcyk7XHJcbiovXHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmh0bWxDbGFzcyA9ICcnO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubGFiZWxIdG1sQ2xhc3MgPVxyXG4gICAgICAgIGFkZENsYXNzZXModGhpcy5vcHRpb25zLmxhYmVsSHRtbENsYXNzLCB0aGlzLndpZGdldFN0eWxlcy5fX2NvbnRyb2xfbGFiZWxfXy5sYWJlbEh0bWxDbGFzcyk7XHJcbiAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5hY3RpdmVDbGFzcyA9XHJcbiAgICAgICAgYWRkQ2xhc3Nlcyh0aGlzLndpZGdldE9wdGlvbnMuYWN0aXZlQ2xhc3MsIHRoaXMud2lkZ2V0U3R5bGVzLl9fYWN0aXZlX18uYWN0aXZlQ2xhc3MpO1xyXG4gICAgICB0aGlzLm9wdGlvbnMuZmllbGRBZGRvbkxlZnQgPVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5maWVsZEFkZG9uTGVmdCB8fCB0aGlzLm9wdGlvbnMucHJlcGVuZDtcclxuICAgICAgdGhpcy5vcHRpb25zLmZpZWxkQWRkb25SaWdodCA9XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmZpZWxkQWRkb25SaWdodCB8fCB0aGlzLm9wdGlvbnMuYXBwZW5kO1xyXG5cclxuICAgICAgLy8gQWRkIGFzdGVyaXNrIHRvIHRpdGxlcyBpZiByZXF1aXJlZFxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnRpdGxlICYmIHRoaXMubGF5b3V0Tm9kZS50eXBlICE9PSAndGFiJyAmJlxyXG4gICAgICAgICF0aGlzLm9wdGlvbnMubm90aXRsZSAmJiB0aGlzLm9wdGlvbnMucmVxdWlyZWQgJiZcclxuICAgICAgICAhdGhpcy5vcHRpb25zLnRpdGxlLmluY2x1ZGVzKCcqJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgbGV0IHJlcXVpcmVkX2FzdGVyaXNrX2NsYXNzPXRoaXMud2lkZ2V0U3R5bGVzLl9fcmVxdWlyZWRfYXN0ZXJpc2tfX3x8J3RleHQtZGFuZ2VyJ1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy50aXRsZSArPSBgIDxzdHJvbmcgY2xhc3M9XCIke3JlcXVpcmVkX2FzdGVyaXNrX2NsYXNzfVwiPio8L3N0cm9uZz5gO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmxheW91dE5vZGUudHlwZSA9PSAnb3B0aW9uZmllbGRzZXQnKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm1lc3NhZ2VMb2NhdGlvbiA9ICd0b3AnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFNldCBtaXNjZWxhbmVvdXMgc3R5bGVzIGFuZCBzZXR0aW5ncyBmb3IgZWFjaCBjb250cm9sIHR5cGVcclxuICAgICAgdGhpcy5hcHBseUNzc0NsYXNzZXModGhpcy5sYXlvdXROb2RlLnR5cGUsIHRoaXMud2lkZ2V0T3B0aW9ucywgdGhpcy5vcHRpb25zLnN0eWxlKTtcclxuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUhlbHBCbG9jayh0aGlzLmZvcm1Db250cm9sLnN0YXR1cyk7XHJcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShzdGF0dXMgPT4gdGhpcy51cGRhdGVIZWxwQmxvY2soc3RhdHVzKSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcclxuICAgICAgICAgIGNvbnN0IHZhcnM6IGFueVtdID0gW107XHJcbiAgICAgICAgICB0aGlzLmRlYnVnT3V0cHV0ID0gbWFwKHZhcnMsIHRoaXNWYXIgPT4gSlNPTi5zdHJpbmdpZnkodGhpc1ZhciwgbnVsbCwgMikpLmpvaW4oJ1xcbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZyYW1ld29ya0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB1cGRhdGVIZWxwQmxvY2soc3RhdHVzKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuaGVscEJsb2NrID0gc3RhdHVzID09PSAnSU5WQUxJRCcgJiZcclxuICAgICAgdGhpcy5vcHRpb25zLmVuYWJsZUVycm9yU3RhdGUgJiYgdGhpcy5mb3JtQ29udHJvbC5lcnJvcnMgJiZcclxuICAgICAgKHRoaXMuZm9ybUNvbnRyb2wuZGlydHkgfHwgdGhpcy5vcHRpb25zLmZlZWRiYWNrT25SZW5kZXIpID9cclxuICAgICAgdGhpcy5qc2YuZm9ybWF0RXJyb3JzKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzLCB0aGlzLm9wdGlvbnMudmFsaWRhdGlvbk1lc3NhZ2VzKSA6XHJcbiAgICAgIHRoaXMub3B0aW9ucy5kZXNjcmlwdGlvbiB8fCB0aGlzLm9wdGlvbnMuaGVscCB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy9UT0RPIHJldmlldy1zaWRlIGVmZmVjdCBhc3NpZ25tZW50c1xyXG4gIHNldFRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHRoaXMubGF5b3V0Tm9kZS50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2J1dHRvbic6XHJcbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcclxuICAgICAgY2FzZSAnc2VjdGlvbic6XHJcbiAgICAgIGNhc2UgJ2hlbHAnOlxyXG4gICAgICBjYXNlICdtc2cnOlxyXG4gICAgICBjYXNlICdzdWJtaXQnOlxyXG4gICAgICBjYXNlICdtZXNzYWdlJzpcclxuICAgICAgY2FzZSAndGFiYXJyYXknOlxyXG4gICAgICBjYXNlICd0YWJzJzpcclxuICAgICAgY2FzZSAnJHJlZic6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIGNhc2UgJ2FkdmFuY2VkZmllbGRzZXQnOlxyXG4gICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5leHBhbmRhYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMudGl0bGUgPSAnQWR2YW5jZWQgb3B0aW9ucyc7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIGNhc2UgJ2F1dGhmaWVsZHNldCc6XHJcbiAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmV4cGFuZGFibGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy50aXRsZSA9ICdBdXRoZW50aWNhdGlvbiBzZXR0aW5ncyc7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIGNhc2UgJ2ZpZWxkc2V0JzpcclxuICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMudGl0bGUgPSB0aGlzLm9wdGlvbnMudGl0bGU7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLnRpdGxlID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gdGhpcy5qc2Yuc2V0SXRlbVRpdGxlKHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGl0bGUoKSB7XHJcbiAgICB0aGlzLmR5bmFtaWNUaXRsZT1cclxuICAgICB0aGlzLmpzZi5wYXJzZVRleHQoXHJcbiAgICAgIHRoaXMub3B0aW9ucz8udGl0bGUsXHJcbiAgICAgIHRoaXMuanNmLmdldEZvcm1Db250cm9sVmFsdWUodGhpcyksXHJcbiAgICAgIHRoaXMuanNmLmdldEZvcm1Db250cm9sR3JvdXAodGhpcyk/LnZhbHVlLFxyXG4gICAgICB0aGlzLmRhdGFJbmRleFt0aGlzLmRhdGFJbmRleC5sZW5ndGggLSAxXVxyXG4gICAgKTtcclxuICAgIC8vdGhpcy5qc2Yuc2V0SXRlbVRpdGxlKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSXRlbSgpIHtcclxuICAgIHRoaXMuanNmLnJlbW92ZUl0ZW0odGhpcyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2F0dHIuZGF0YS1icy10aGVtZV09XCJ0aGVtZVwiIFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBbY2xhc3NdPVwib3B0aW9ucz8uaHRtbENsYXNzIHx8ICcnXCIgW2NsYXNzLmhhcy1mZWVkYmFja109XCJvcHRpb25zPy5mZWVkYmFjayAmJiBvcHRpb25zPy5pc0lucHV0V2lkZ2V0ICYmXHJcbiAgICAgICAgKGZvcm1Db250cm9sPy5kaXJ0eSB8fCBvcHRpb25zPy5mZWVkYmFja09uUmVuZGVyKVwiIFtjbGFzcy5oYXMtZXJyb3JdPVwib3B0aW9ucz8uZW5hYmxlRXJyb3JTdGF0ZSAmJiBmb3JtQ29udHJvbD8uZXJyb3JzICYmXHJcbiAgICAgICAgKGZvcm1Db250cm9sPy5kaXJ0eSB8fCBvcHRpb25zPy5mZWVkYmFja09uUmVuZGVyKVwiIFtjbGFzcy5oYXMtc3VjY2Vzc109XCJvcHRpb25zPy5lbmFibGVTdWNjZXNzU3RhdGUgJiYgIWZvcm1Db250cm9sPy5lcnJvcnMgJiZcclxuICAgICAgICAoZm9ybUNvbnRyb2w/LmRpcnR5IHx8IG9wdGlvbnM/LmZlZWRiYWNrT25SZW5kZXIpXCI+XHJcblxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dSZW1vdmVCdXR0b25cIiBbY2xhc3NdPVwid2lkZ2V0U3R5bGVzLl9fcmVtb3ZlX2l0ZW1fX1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVtb3ZlSXRlbSgpXCI+XHJcbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgPHNwYW4gW2NsYXNzXT1cIndpZGdldFN0eWxlcy5fX3NjcmVlbl9yZWFkZXJfX1wiPkNsb3NlPC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnM/Lm1lc3NhZ2VMb2NhdGlvbiA9PT0gJ3RvcCdcIj5cclxuICAgICAgICA8cCAqbmdJZj1cIm9wdGlvbnM/LmhlbHBCbG9ja1wiIFtjbGFzc109XCJ3aWRnZXRTdHlsZXMuX19oZWxwX2Jsb2NrX19cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmhlbHBCbG9ja1wiPjwvcD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxsYWJlbCAqbmdJZj1cIm9wdGlvbnM/LnRpdGxlICYmIGxheW91dE5vZGU/LnR5cGUgIT09ICd0YWInXCIgW2F0dHIuZm9yXT1cIidjb250cm9sJyArIGxheW91dE5vZGU/Ll9pZFwiIFtjbGFzc109XCJvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJ1wiIFtjbGFzcy5zci1vbmx5XT1cIm9wdGlvbnM/Lm5vdGl0bGVcIiBbaW5uZXJIVE1MXT1cImR5bmFtaWNUaXRsZVwiPjwvbGFiZWw+XHJcbiAgICA8cCAqbmdJZj1cImxheW91dE5vZGU/LnR5cGUgPT09ICdzdWJtaXQnICYmIGpzZj8uZm9ybU9wdGlvbnM/LmZpZWxkc1JlcXVpcmVkXCI+XHJcbiAgICAgICAgPHN0cm9uZyBbY2xhc3NdPVwid2lkZ2V0U3R5bGVzLl9fcmVxdWlyZWRfYXN0ZXJpc2tfX1wiPio8L3N0cm9uZz4gPSByZXF1aXJlZCBmaWVsZHNcclxuICAgIDwvcD5cclxuICAgIDxkaXYgW2NsYXNzLmlucHV0LWdyb3VwXT1cIm9wdGlvbnM/LmZpZWxkQWRkb25MZWZ0IHx8IG9wdGlvbnM/LmZpZWxkQWRkb25SaWdodFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9ucz8uZmllbGRBZGRvbkxlZnRcIiBbY2xhc3NdPVwid2lkZ2V0U3R5bGVzLl9fZmllbGRfYWRkb25fbGVmdF9fXCIgW2lubmVySFRNTF09XCJvcHRpb25zPy5maWVsZEFkZG9uTGVmdFwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHNlbGVjdC13aWRnZXQtd2lkZ2V0IFtsYXlvdXROb2RlXT1cIndpZGdldExheW91dE5vZGVcIiBbZGF0YUluZGV4XT1cImRhdGFJbmRleFwiIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiPjwvc2VsZWN0LXdpZGdldC13aWRnZXQ+XHJcblxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9ucz8uZmllbGRBZGRvblJpZ2h0XCIgW2NsYXNzXT1cIndpZGdldFN0eWxlcy5fX2ZpZWxkX2FkZG9uX3JpZ2h0X19cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmZpZWxkQWRkb25SaWdodFwiPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwib3B0aW9ucz8uZmVlZGJhY2sgJiYgb3B0aW9ucz8uaXNJbnB1dFdpZGdldCAmJlxyXG4gICAgICAgICAgIW9wdGlvbnM/LmZpZWxkQWRkb25SaWdodCAmJiAhbGF5b3V0Tm9kZS5hcnJheUl0ZW0gJiZcclxuICAgICAgICAgIChmb3JtQ29udHJvbD8uZGlydHkgfHwgb3B0aW9ucz8uZmVlZGJhY2tPblJlbmRlcilcIiBbY2xhc3MuZ2x5cGhpY29uLW9rXT1cIm9wdGlvbnM/LmVuYWJsZVN1Y2Nlc3NTdGF0ZSAmJiAhZm9ybUNvbnRyb2w/LmVycm9yc1wiIFtjbGFzcy5nbHlwaGljb24tcmVtb3ZlXT1cIm9wdGlvbnM/LmVuYWJsZUVycm9yU3RhdGUgJiYgZm9ybUNvbnRyb2w/LmVycm9yc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrIGdseXBoaWNvblwiPjwvc3Bhbj5cclxuICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zPy5tZXNzYWdlTG9jYXRpb24gIT09ICd0b3AnXCI+XHJcbiAgICAgICAgPHAgKm5nSWY9XCJvcHRpb25zPy5oZWxwQmxvY2tcIiBbY2xhc3NdPVwid2lkZ2V0U3R5bGVzLl9faGVscF9ibG9ja19fXCIgW2lubmVySFRNTF09XCJvcHRpb25zPy5oZWxwQmxvY2tcIj48L3A+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cImRlYnVnICYmIGRlYnVnT3V0cHV0XCI+ZGVidWc6XHJcbiAgICA8cHJlPnt7ZGVidWdPdXRwdXR9fTwvcHJlPlxyXG48L2Rpdj5cclxuXHJcbjwhLS1cclxuPGRpdiBjbGFzcz1cImJ0biBpbnB1dCBpbnB1dC1ib3JkZXJlZCBpbnB1dC1wcmltYXJ5IHctZnVsbCBtYXgtdy14c1xyXG5idG4tbmV1dHJhbFxyXG5idG4tcHJpbWFyeVxyXG5idG4tc2Vjb25kYXJ5XHJcbmJ0bi1hY2NlbnRcclxuYnRuLWluZm9cclxuYnRuLXN1Y2Nlc3NcclxuYnRuLXdhcm5pbmdcclxuYnRuLWVycm9yXHJcbmJ0bi1naG9zdFxyXG5idG4tbGlua1xyXG5idG4tb3V0bGluZVxyXG5idG4tYWN0aXZlXHJcbmJ0bi1kaXNhYmxlZFxyXG5nbGFzc1xyXG5uby1hbmltYXRpb25cclxuYnRuLWxnXHJcbmJ0bi1tZFxyXG5idG4tc21cclxuYnRuLXhzXHJcbmJ0bi13aWRlXHJcbmJ0bi1ibG9ja1xyXG5idG4tY2lyY2xlXHJcbmJ0bi1zcXVhcmVcclxuaGlkZGVuXHJcblwiPmRlZnMgYWw8L2Rpdj5cclxuLS0+XHJcbjwhLS08aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlR5cGUgaGVyZVwiIGNsYXNzPVwiaW5wdXQgaW5wdXQtYm9yZGVyZWQgaW5wdXQtcHJpbWFyeSB3LWZ1bGwgbWF4LXcteHNcIiAvPi0tPiJdfQ==
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLWZyYW1ld29yay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtY3NzZnJhbWV3b3JrL3NyYy9saWIvY3NzLWZyYW1ld29yay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtY3NzZnJhbWV3b3JrL3NyYy9saWIvY3NzLWZyYW1ld29yay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQWdDLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBa0QsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFXM0MsTUFBTSxPQUFPLHFCQUFxQjtJQW1HaEMsWUFDUyxHQUFzQixFQUN0QixHQUEwQixFQUMxQixZQUFvQyxFQUNwQyxZQUFnQztJQUN2QywwREFBMEQ7O1FBSm5ELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQXVCO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUF0R3pDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUk3QixnQkFBVyxHQUFRLElBQUksQ0FBQztRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQVcsSUFBSSxDQUFDO1FBZ0U5QixtQkFBYyxHQUFxQjtZQUNqQyxLQUFLLEVBQUMsRUFBRTtZQUNSLE9BQU8s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LFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWTtZQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUMxQyxDQUFDO1FBQ0YsOEJBQThCO1FBQzlCLHdEQUF3RDtJQUMxRCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7O21IQXJVVSxxQkFBcUI7dUdBQXJCLHFCQUFxQixrTUNibEMsd3BHQWtFK0c7NEZEckRsRyxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJO29OQWM1QixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZyYW1ld29ya0xpYnJhcnlTZXJ2aWNlLCBKc29uU2NoZW1hRm9ybVNlcnZpY2UsIGFkZENsYXNzZXMsIGluQXJyYXkgfSBmcm9tICdAbmctZm9ybXdvcmtzL2NvcmUnO1xyXG5pbXBvcnQgXywgeyBjbG9uZURlZXAsIG1hcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjc3NfZncgfSBmcm9tICcuL2Nzcy1mcmFtZXdvcmsuZGVmcyc7XHJcbmltcG9ydCB7IENzc2ZyYW1ld29ya1NlcnZpY2UgfSBmcm9tICcuL2Nzcy1mcmFtZXdvcmsuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Nzcy1mcmFtZXdvcmsnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jc3MtZnJhbWV3b3JrLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jc3MtZnJhbWV3b3JrLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3NzRnJhbWV3b3JrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsT25EZXN0cm95IHtcclxuICBmcmFtZXdvcmtJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gIHdpZGdldE9wdGlvbnM6IGFueTsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gY2hpbGQgd2lkZ2V0XHJcbiAgd2lkZ2V0TGF5b3V0Tm9kZTogYW55OyAvLyBsYXlvdXROb2RlIHBhc3NlZCB0byBjaGlsZCB3aWRnZXRcclxuICBvcHRpb25zOiBhbnk7IC8vIE9wdGlvbnMgdXNlZCBpbiB0aGlzIGZyYW1ld29ya1xyXG4gIGZvcm1Db250cm9sOiBhbnkgPSBudWxsO1xyXG4gIGRlYnVnT3V0cHV0OiBhbnkgPSAnJztcclxuICBkZWJ1ZzogYW55ID0gJyc7XHJcbiAgcGFyZW50QXJyYXk6IGFueSA9IG51bGw7XHJcbiAgaXNPcmRlcmFibGUgPSBmYWxzZTtcclxuICBkeW5hbWljVGl0bGU6IHN0cmluZyA9IG51bGw7XHJcbiAgaXNEeW5hbWljVGl0bGU6Ym9vbGVhbjtcclxuICBASW5wdXQoKSBsYXlvdXROb2RlOiBhbnk7XHJcbiAgQElucHV0KCkgbGF5b3V0SW5kZXg6IG51bWJlcltdO1xyXG4gIEBJbnB1dCgpIGRhdGFJbmRleDogbnVtYmVyW107XHJcblxyXG4gIEBJbnB1dCgpIHdpZGdldFN0eWxlczogY3NzX2Z3LndpZGdldHN0eWxlcztcclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vVE9ETy1tb3ZlIHRvIG5nLWZvcm13b3Jrcy9jb3JlIHV0aWxpdHkuZnVuY3Rpb25zLnRzXHJcbiAgYXBwbHlDc3NDbGFzc2VzKHR5cGUsIHdpZGdldE9wdGlvbnMsIHN0eWxlT3B0aW9ucykge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcImFwcGx5Q3NzQ2xhc3NlcyBmb3IgdHlwZTpcIit0eXBlKTtcclxuICAgIGxldCBjc3NDbGFzc2VzID0gdGhpcy53aWRnZXRTdHlsZXNbdHlwZV07XHJcbiAgICBpZiAoIWNzc0NsYXNzZXMgfHwgXy5pc0VtcHR5KGNzc0NsYXNzZXMpICkge1xyXG4gICAgICBjc3NDbGFzc2VzID0gdGhpcy53aWRnZXRTdHlsZXMuZGVmYXVsdDtcclxuICAgIH1cclxuICAgIE9iamVjdC5rZXlzKGNzc0NsYXNzZXMpLmZvckVhY2goY2F0TmFtZSA9PiB7XHJcbiAgICAgIGxldCBjbGFzc0xpc3QgPSBjc3NDbGFzc2VzW2NhdE5hbWVdO1xyXG5cclxuICAgICAgaWYgKGNsYXNzTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICB3aWRnZXRPcHRpb25zW2NhdE5hbWVdID0gYWRkQ2xhc3Nlcyh3aWRnZXRPcHRpb25zW2NhdE5hbWVdLCBjbGFzc0xpc3QpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdHlsZU9wdGlvbnMpIHtcclxuICAgICAgICB3aWRnZXRPcHRpb25zW2NhdE5hbWVdID0gYWRkQ2xhc3Nlcyh3aWRnZXRPcHRpb25zW2NhdE5hbWVdLCBzdHlsZU9wdGlvbnMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZsYXR0ZW5XaWRnZXRTdHlsZXMod3N0eWxlczpjc3NfZncud2lkZ2V0c3R5bGVzKXtcclxuICAgIHZhciBmbGF0dGVuZWQ6YW55PXt9O1xyXG4gICAgbGV0IGlnbm9yZT1bJ19fdGhlbWVzX18nXTtcclxuICAgIE9iamVjdC5rZXlzKHdzdHlsZXMpLmZvckVhY2god2tleT0+e1xyXG4gICAgICBsZXQgd3N0eWxlPXdzdHlsZXNbd2tleV07XHJcbiAgICAgIGlmKGlnbm9yZS5pbmRleE9mKHdrZXkpPj0wKXtcclxuICAgICAgICBmbGF0dGVuZWRbd2tleV09d3N0eWxlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZihfLmlzQXJyYXkod3N0eWxlKSl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgZmxhdHRlbmVkW3drZXldPXdzdHlsZS5qb2luKFwiIFwiKTtcclxuICAgICAgfVxyXG4gICAgICBpZihfLmlzT2JqZWN0KHdzdHlsZSkpey8vaXMgY3NzY2F0ZWdvcmllc1xyXG4gICAgICAgICAgZmxhdHRlbmVkW3drZXldPWZsYXR0ZW5lZFt3a2V5XXx8e307XHJcbiAgICAgICAgT2JqZWN0LmtleXMod3N0eWxlKS5mb3JFYWNoKGNhdE5hbWU9PntcclxuICAgICAgICAgIGxldCBjc3NDYXQ9d3N0eWxlW2NhdE5hbWVdO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZihfLmlzQXJyYXkoY3NzQ2F0KSl7XHJcbiAgICAgICAgICAgIGZsYXR0ZW5lZFt3a2V5XVtjYXROYW1lXT1jc3NDYXQuam9pbihcIiBcIik7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgZmxhdHRlbmVkW3drZXldW2NhdE5hbWVdPWNzc0NhdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIGlmKF8uaXNTdHJpbmcod3N0eWxlKSl7XHJcbiAgICAgICAgZmxhdHRlbmVkW3drZXldPXdzdHlsZTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBmbGF0dGVuZWRcclxufVxyXG5cclxuZGVmYXVsdFN0eWxpbmc6Y3NzX2Z3LndpZGdldHN0eWxlcz17XHJcbiAgYXJyYXk6e30sXHJcbiAgZGVmYXVsdDp7ZmllbGRIdG1sQ2xhc3M6IFwiY3NzZnctZm9ybS1jb250cm9sXCJ9LFxyXG4gIF9fdGhlbWVzX186W3tuYW1lOidub3RoZW1lJyx0ZXh0OidOb25lJ31dLFxyXG4gIF9fcmVtb3ZlX2l0ZW1fXzpcImNzc2Z3LXJlbW92ZS1pdGVtXCIsXHJcbiAgICBfX2FycmF5X2l0ZW1fbm9ucmVmX186e1xyXG4gICAgICBcImh0bWxDbGFzc1wiOiAgIFwiY3NzZnctYXJyYXktaXRlbS1ub25yZWZcIlxyXG4gIH0sXHJcbiAgX19hY3RpdmVfXzp7YWN0aXZlQ2xhc3M6XCJjc3Nmdy1hY3RpdmVcIn0sXHJcbiAgX19hcnJheV9fOntodG1sQ2xhc3M6XCJjc3Nmdy1hcnJheVwifSxcclxuICBfX2NvbnRyb2xfbGFiZWxfXzp7bGFiZWxIdG1sQ2xhc3M6XCJjc3Nmdy1jb250cm9sLWxhYmVsXCJ9LFxyXG4gIF9fZm9ybV9ncm91cF9fOntodG1sQ2xhc3M6IFwiY3NzZnctZm9ybS1ncm91cFwifSxcclxuICBfX2ZpZWxkX2FkZG9uX2xlZnRfXzpcImNzc2Z3LWFkZG9uLWxlZnRcIixcclxuICBfX2ZpZWxkX2FkZG9uX3JpZ2h0X186XCJjc3Nmdy1hZGRvbi1yaWdodFwiLFxyXG4gIF9faGVscF9ibG9ja19fOlwiY3NzZnctaGVscC1ibG9ja1wiLFxyXG4gIF9fcmVxdWlyZWRfYXN0ZXJpc2tfXzpcImNzc2Z3LXJlcXVpcmVkLWFzdGVyc2lza1wiLFxyXG4gIF9fc2NyZWVuX3JlYWRlcl9fOiBcImNzc2Z3LXNjcmVlbi1yZWFkZXJcIlxyXG5cclxufVxyXG5cclxuXHJcblxyXG5cclxudGhlbWU6c3RyaW5nXHJcbmZyYW1ld29ya1RoZW1lU3ViczpTdWJzY3JpcHRpb247XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBqc2Y6IEpzb25TY2hlbWFGb3JtU2VydmljZSxcclxuICAgIHB1YmxpYyBqc2ZGTFNlcnZpY2U6RnJhbWV3b3JrTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY3NzRldTZXJ2aWNlOkNzc2ZyYW1ld29ya1NlcnZpY2VcclxuICAgIC8qQEluamVjdChDU1NfRlJBTUVXT1JLX0NGRyApIGZ3Y2ZnOiBjc3NfZncuZnJhbWV3b3JrY2ZnKi9cclxuXHJcbiAgKSB7XHJcbiAgICBcclxuICAgIGxldCBhY3RpdmVGcmFtZXdvcms6YW55PXRoaXMuanNmRkxTZXJ2aWNlLmFjdGl2ZUZyYW1ld29yaztcclxuICAgIGxldCBmd2NmZz1hY3RpdmVGcmFtZXdvcmsuY29uZmlnfHx7fTtcclxuICAgIHRoaXMud2lkZ2V0U3R5bGVzID0gT2JqZWN0LmFzc2lnbih0aGlzLmRlZmF1bHRTdHlsaW5nLGZ3Y2ZnLndpZGdldHN0eWxlcyk7XHJcbiAgICBsZXQgZGVmYXVsdFRoZW1lPXRoaXMud2lkZ2V0U3R5bGVzLl9fdGhlbWVzX19bMF07XHJcbiAgICBsZXQgZGVmYXVsdFRoZW1lTmFtZT1jc3NGV1NlcnZpY2UuYWN0aXZlUmVxdWVzdGVkVGhlbWV8fGRlZmF1bHRUaGVtZS5uYW1lO1xyXG4gICAgdGhpcy50aGVtZT10aGlzLm9wdGlvbnM/LnRoZW1lfHwgZGVmYXVsdFRoZW1lTmFtZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mcmFtZXdvcmtUaGVtZVN1YnM/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmZyYW1ld29ya1RoZW1lU3Vicz1udWxsO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBzaG93UmVtb3ZlQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucmVtb3ZhYmxlIHx8IHRoaXMub3B0aW9ucy5yZWFkb25seSB8fFxyXG4gICAgICB0aGlzLmxheW91dE5vZGUudHlwZSA9PT0gJyRyZWYnXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGF5b3V0Tm9kZS5yZWN1cnNpdmVSZWZlcmVuY2UpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMubGF5b3V0Tm9kZS5hcnJheUl0ZW0gfHwgIXRoaXMucGFyZW50QXJyYXkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgYXJyYXkgbGVuZ3RoIDw9IG1pbkl0ZW1zLCBkb24ndCBhbGxvdyByZW1vdmluZyBhbnkgaXRlbXNcclxuICAgIHJldHVybiB0aGlzLnBhcmVudEFycmF5Lml0ZW1zLmxlbmd0aCAtIDEgPD0gdGhpcy5wYXJlbnRBcnJheS5vcHRpb25zLm1pbkl0ZW1zID8gZmFsc2UgOlxyXG4gICAgICAvLyBGb3IgcmVtb3ZhYmxlIGxpc3QgaXRlbXMsIGFsbG93IHJlbW92aW5nIGFueSBpdGVtXHJcbiAgICAgIHRoaXMubGF5b3V0Tm9kZS5hcnJheUl0ZW1UeXBlID09PSAnbGlzdCcgPyB0cnVlIDpcclxuICAgICAgICAvLyBGb3IgcmVtb3ZhYmxlIHR1cGxlIGl0ZW1zLCBvbmx5IGFsbG93IHJlbW92aW5nIGxhc3QgaXRlbSBpbiBsaXN0XHJcbiAgICAgICAgdGhpcy5sYXlvdXRJbmRleFt0aGlzLmxheW91dEluZGV4Lmxlbmd0aCAtIDFdID09PSB0aGlzLnBhcmVudEFycmF5Lml0ZW1zLmxlbmd0aCAtIDI7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGNzc0ZXU2VydmljZSA9IHRoaXMuY3NzRldTZXJ2aWNlO1xyXG4gICAgLy9UT0RPIHJldmlldzp0aGlzIHdpbGwgYmUgcnVuIGJ5IGV2ZXJ5IGNvbXBvbmVudCBpbnN0YW5jZVxyXG4gICAgdGhpcy5mcmFtZXdvcmtUaGVtZVN1YnM9Y3NzRldTZXJ2aWNlLmZyYW1ld29ya1RoZW1lJC5zdWJzY3JpYmUobmV3VGhlbWU9PntcclxuICAgICAgICB0aGlzLnRoZW1lPW5ld1RoZW1lO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVGcmFtZXdvcmsoKTtcclxuICAgIGlmICh0aGlzLmxheW91dE5vZGUuYXJyYXlJdGVtICYmIHRoaXMubGF5b3V0Tm9kZS50eXBlICE9PSAnJHJlZicpIHtcclxuICAgICAgdGhpcy5wYXJlbnRBcnJheSA9IHRoaXMuanNmLmdldFBhcmVudE5vZGUodGhpcyk7XHJcbiAgICAgIGlmICh0aGlzLnBhcmVudEFycmF5KSB7XHJcbiAgICAgICAgdGhpcy5pc09yZGVyYWJsZSA9IHRoaXMubGF5b3V0Tm9kZS5hcnJheUl0ZW1UeXBlID09PSAnbGlzdCcgJiZcclxuICAgICAgICAgICF0aGlzLm9wdGlvbnMucmVhZG9ubHkgJiYgdGhpcy5wYXJlbnRBcnJheS5vcHRpb25zLm9yZGVyYWJsZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlcykge1xyXG4gICAgaWYgKCF0aGlzLmZyYW1ld29ya0luaXRpYWxpemVkKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZyYW1ld29yaygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNEeW5hbWljVGl0bGUpIHtcclxuICAgICAgdGhpcy51cGRhdGVUaXRsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZUZyYW1ld29yaygpIHtcclxuICAgIGlmICh0aGlzLmxheW91dE5vZGUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gY2xvbmVEZWVwKHRoaXMubGF5b3V0Tm9kZS5vcHRpb25zKTtcclxuICAgICAgdGhpcy53aWRnZXRMYXlvdXROb2RlID0ge1xyXG4gICAgICAgIC4uLnRoaXMubGF5b3V0Tm9kZSxcclxuICAgICAgICBvcHRpb25zOiBjbG9uZURlZXAodGhpcy5sYXlvdXROb2RlLm9wdGlvbnMpXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucyA9IHRoaXMud2lkZ2V0TGF5b3V0Tm9kZS5vcHRpb25zO1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5qc2YuZ2V0Rm9ybUNvbnRyb2wodGhpcyk7XHJcblxyXG4gICAgICB0aGlzLm9wdGlvbnMuaXNJbnB1dFdpZGdldCA9IGluQXJyYXkodGhpcy5sYXlvdXROb2RlLnR5cGUsIFtcclxuICAgICAgICAnYnV0dG9uJywgJ2NoZWNrYm94JywgJ2NoZWNrYm94ZXMtaW5saW5lJywgJ2NoZWNrYm94ZXMnLCAnY29sb3InLFxyXG4gICAgICAgICdkYXRlJywgJ2RhdGV0aW1lLWxvY2FsJywgJ2RhdGV0aW1lJywgJ2VtYWlsJywgJ2ZpbGUnLCAnaGlkZGVuJyxcclxuICAgICAgICAnaW1hZ2UnLCAnaW50ZWdlcicsICdtb250aCcsICdudW1iZXInLCAncGFzc3dvcmQnLCAncmFkaW8nLFxyXG4gICAgICAgICdyYWRpb2J1dHRvbnMnLCAncmFkaW9zLWlubGluZScsICdyYWRpb3MnLCAncmFuZ2UnLCAncmVzZXQnLCAnc2VhcmNoJyxcclxuICAgICAgICAnc2VsZWN0JywgJ3N1Ym1pdCcsICd0ZWwnLCAndGV4dCcsICd0ZXh0YXJlYScsICd0aW1lJywgJ3VybCcsICd3ZWVrJ1xyXG4gICAgICBdKTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuaXNEeW5hbWljVGl0bGU9dGhpcy5vcHRpb25zPy50aXRsZSYmIC97ey4rP319Ly50ZXN0KHRoaXMub3B0aW9ucy50aXRsZSlcclxuICAgICAgdGhpcy5keW5hbWljVGl0bGU9dGhpcy5vcHRpb25zPy50aXRsZTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICFbJyRyZWYnLCAnYWR2YW5jZWRmaWVsZHNldCcsICdhdXRoZmllbGRzZXQnLCAnYnV0dG9uJywgJ2NhcmQnLFxyXG4gICAgICAgICAgJ2NoZWNrYm94JywgJ2V4cGFuc2lvbi1wYW5lbCcsICdoZWxwJywgJ21lc3NhZ2UnLCAnbXNnJywgJ3NlY3Rpb24nLFxyXG4gICAgICAgICAgJ3N1Ym1pdCcsICd0YWJhcnJheScsICd0YWJzJ10uaW5jbHVkZXModGhpcy5sYXlvdXROb2RlLnR5cGUpICYmXHJcbiAgICAgICAgL3t7Lis/fX0vLnRlc3QodGhpcy53aWRnZXRPcHRpb25zLnRpdGxlIHx8ICcnKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMub3B0aW9ucy50aXRsZT10aGlzLnNldFRpdGxlKCk7XHJcblxyXG4gICAgICBpZih0aGlzLndpZGdldE9wdGlvbnMudGl0bGUpe1xyXG4gICAgICAgIHRoaXMuZHluYW1pY1RpdGxlPVwiXCI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub3B0aW9ucy5odG1sQ2xhc3MgPVxyXG4gICAgICAgIGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgJ3NjaGVtYS1mb3JtLScgKyB0aGlzLmxheW91dE5vZGUudHlwZSk7XHJcblxyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMubGF5b3V0Tm9kZS50eXBlID09PSAnYXJyYXknKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9IGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgdGhpcy53aWRnZXRTdHlsZXMuX19hcnJheV9fLmh0bWxDbGFzcyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbSAmJiB0aGlzLmxheW91dE5vZGUudHlwZSAhPT0gJyRyZWYnKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9IGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgdGhpcy53aWRnZXRTdHlsZXMuX19hcnJheV9pdGVtX25vbnJlZl9fLmh0bWxDbGFzcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9IGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgdGhpcy53aWRnZXRTdHlsZXMuX19mb3JtX2dyb3VwX18uaHRtbENsYXNzKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuXHJcbiAgICAgIC8qXHJcbiAgICAgIHRoaXMub3B0aW9ucy5odG1sQ2xhc3MgPVxyXG4gICAgICB0aGlzLmxheW91dE5vZGUudHlwZSA9PT0gJ2FycmF5JyA/XHJcbiAgICAgICAgYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCBbJ2JvcmRlcicsJ3NoYWRvdy1tZCcsJ3AtMSddKSA6XHJcbiAgICAgICAgdGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbSAmJiB0aGlzLmxheW91dE5vZGUudHlwZSAhPT0gJyRyZWYnID9cclxuICAgICAgICAgIGFkZENsYXNzZXModGhpcy5vcHRpb25zLmh0bWxDbGFzcywgWydib3JkZXInLCdzaGFkb3ctbWQnLCdwLTEnXSkgOlxyXG4gICAgICAgICAgYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCAnbWItMScpO1xyXG4qL1xyXG5cclxuLypcclxudGhpcy5vcHRpb25zLmh0bWxDbGFzcyA9XHJcbnRoaXMubGF5b3V0Tm9kZS50eXBlID09PSAnYXJyYXknID9cclxuYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCB0aGlzLndpZGdldFN0eWxlcy5hcnJheS5odG1sQ2xhc3MpOlxyXG4gIHRoaXMubGF5b3V0Tm9kZS5hcnJheUl0ZW0gJiYgdGhpcy5sYXlvdXROb2RlLnR5cGUgIT09ICckcmVmJyA/XHJcbiAgYWRkQ2xhc3Nlcyh0aGlzLm9wdGlvbnMuaHRtbENsYXNzLCB0aGlzLndpZGdldFN0eWxlcy5fX2FycmF5X2l0ZW1fbm9ucmVmX18uaHRtbENsYXNzKTpcclxuICBhZGRDbGFzc2VzKHRoaXMub3B0aW9ucy5odG1sQ2xhc3MsIHRoaXMud2lkZ2V0U3R5bGVzLl9fZm9ybV9ncm91cF9fLmh0bWxDbGFzcyk7XHJcbiovXHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmh0bWxDbGFzcyA9ICcnO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubGFiZWxIdG1sQ2xhc3MgPVxyXG4gICAgICAgIGFkZENsYXNzZXModGhpcy5vcHRpb25zLmxhYmVsSHRtbENsYXNzLCB0aGlzLndpZGdldFN0eWxlcy5fX2NvbnRyb2xfbGFiZWxfXy5sYWJlbEh0bWxDbGFzcyk7XHJcbiAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy5hY3RpdmVDbGFzcyA9XHJcbiAgICAgICAgYWRkQ2xhc3Nlcyh0aGlzLndpZGdldE9wdGlvbnMuYWN0aXZlQ2xhc3MsIHRoaXMud2lkZ2V0U3R5bGVzLl9fYWN0aXZlX18uYWN0aXZlQ2xhc3MpO1xyXG4gICAgICB0aGlzLm9wdGlvbnMuZmllbGRBZGRvbkxlZnQgPVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5maWVsZEFkZG9uTGVmdCB8fCB0aGlzLm9wdGlvbnMucHJlcGVuZDtcclxuICAgICAgdGhpcy5vcHRpb25zLmZpZWxkQWRkb25SaWdodCA9XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmZpZWxkQWRkb25SaWdodCB8fCB0aGlzLm9wdGlvbnMuYXBwZW5kO1xyXG5cclxuICAgICAgLy8gQWRkIGFzdGVyaXNrIHRvIHRpdGxlcyBpZiByZXF1aXJlZFxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnRpdGxlICYmIHRoaXMubGF5b3V0Tm9kZS50eXBlICE9PSAndGFiJyAmJlxyXG4gICAgICAgICF0aGlzLm9wdGlvbnMubm90aXRsZSAmJiB0aGlzLm9wdGlvbnMucmVxdWlyZWQgJiZcclxuICAgICAgICAhdGhpcy5vcHRpb25zLnRpdGxlLmluY2x1ZGVzKCcqJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgbGV0IHJlcXVpcmVkX2FzdGVyaXNrX2NsYXNzPXRoaXMud2lkZ2V0U3R5bGVzLl9fcmVxdWlyZWRfYXN0ZXJpc2tfX3x8J3RleHQtZGFuZ2VyJ1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy50aXRsZSArPSBgIDxzdHJvbmcgY2xhc3M9XCIke3JlcXVpcmVkX2FzdGVyaXNrX2NsYXNzfVwiPio8L3N0cm9uZz5gO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmxheW91dE5vZGUudHlwZSA9PSAnb3B0aW9uZmllbGRzZXQnKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm1lc3NhZ2VMb2NhdGlvbiA9ICd0b3AnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFNldCBtaXNjZWxhbmVvdXMgc3R5bGVzIGFuZCBzZXR0aW5ncyBmb3IgZWFjaCBjb250cm9sIHR5cGVcclxuICAgICAgdGhpcy5hcHBseUNzc0NsYXNzZXModGhpcy5sYXlvdXROb2RlLnR5cGUsIHRoaXMud2lkZ2V0T3B0aW9ucywgdGhpcy5vcHRpb25zLnN0eWxlKTtcclxuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUhlbHBCbG9jayh0aGlzLmZvcm1Db250cm9sLnN0YXR1cyk7XHJcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShzdGF0dXMgPT4gdGhpcy51cGRhdGVIZWxwQmxvY2soc3RhdHVzKSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcclxuICAgICAgICAgIGNvbnN0IHZhcnM6IGFueVtdID0gW107XHJcbiAgICAgICAgICB0aGlzLmRlYnVnT3V0cHV0ID0gbWFwKHZhcnMsIHRoaXNWYXIgPT4gSlNPTi5zdHJpbmdpZnkodGhpc1ZhciwgbnVsbCwgMikpLmpvaW4oJ1xcbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7XHJcbiAgICAgIHRoaXMuZnJhbWV3b3JrSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZUhlbHBCbG9jayhzdGF0dXMpIHtcclxuICAgIHRoaXMub3B0aW9ucy5oZWxwQmxvY2sgPSBzdGF0dXMgPT09ICdJTlZBTElEJyAmJlxyXG4gICAgICB0aGlzLm9wdGlvbnMuZW5hYmxlRXJyb3JTdGF0ZSAmJiB0aGlzLmZvcm1Db250cm9sLmVycm9ycyAmJlxyXG4gICAgICAodGhpcy5mb3JtQ29udHJvbC5kaXJ0eSB8fCB0aGlzLm9wdGlvbnMuZmVlZGJhY2tPblJlbmRlcikgP1xyXG4gICAgICB0aGlzLmpzZi5mb3JtYXRFcnJvcnModGhpcy5mb3JtQ29udHJvbC5lcnJvcnMsIHRoaXMub3B0aW9ucy52YWxpZGF0aW9uTWVzc2FnZXMpIDpcclxuICAgICAgdGhpcy5vcHRpb25zLmRlc2NyaXB0aW9uIHx8IHRoaXMub3B0aW9ucy5oZWxwIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICAvL1RPRE8gcmV2aWV3LXNpZGUgZWZmZWN0IGFzc2lnbm1lbnRzXHJcbiAgc2V0VGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGhpcy5sYXlvdXROb2RlLnR5cGUpIHtcclxuICAgICAgY2FzZSAnYnV0dG9uJzpcclxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxyXG4gICAgICBjYXNlICdzZWN0aW9uJzpcclxuICAgICAgY2FzZSAnaGVscCc6XHJcbiAgICAgIGNhc2UgJ21zZyc6XHJcbiAgICAgIGNhc2UgJ3N1Ym1pdCc6XHJcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxyXG4gICAgICBjYXNlICd0YWJhcnJheSc6XHJcbiAgICAgIGNhc2UgJ3RhYnMnOlxyXG4gICAgICBjYXNlICckcmVmJzpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgY2FzZSAnYWR2YW5jZWRmaWVsZHNldCc6XHJcbiAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLmV4cGFuZGFibGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy50aXRsZSA9ICdBZHZhbmNlZCBvcHRpb25zJztcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgY2FzZSAnYXV0aGZpZWxkc2V0JzpcclxuICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMuZXhwYW5kYWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy53aWRnZXRPcHRpb25zLnRpdGxlID0gJ0F1dGhlbnRpY2F0aW9uIHNldHRpbmdzJztcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgY2FzZSAnZmllbGRzZXQnOlxyXG4gICAgICAgIHRoaXMud2lkZ2V0T3B0aW9ucy50aXRsZSA9IHRoaXMub3B0aW9ucy50aXRsZTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLndpZGdldE9wdGlvbnMudGl0bGUgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmpzZi5zZXRJdGVtVGl0bGUodGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUaXRsZSgpIHtcclxuICAgIHRoaXMuZHluYW1pY1RpdGxlPVxyXG4gICAgIHRoaXMuanNmLnBhcnNlVGV4dChcclxuICAgICAgdGhpcy5vcHRpb25zPy50aXRsZSxcclxuICAgICAgdGhpcy5qc2YuZ2V0Rm9ybUNvbnRyb2xWYWx1ZSh0aGlzKSxcclxuICAgICAgdGhpcy5qc2YuZ2V0Rm9ybUNvbnRyb2xHcm91cCh0aGlzKT8udmFsdWUsXHJcbiAgICAgIHRoaXMuZGF0YUluZGV4W3RoaXMuZGF0YUluZGV4Lmxlbmd0aCAtIDFdXHJcbiAgICApO1xyXG4gICAgLy90aGlzLmpzZi5zZXRJdGVtVGl0bGUodGhpcyk7XHJcbiAgICAvL3RoaXMud2lkZ2V0TGF5b3V0Tm9kZS5vcHRpb25zLnRpdGxlPXRoaXMuZHluYW1pY1RpdGxlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSXRlbSgpIHtcclxuICAgIHRoaXMuanNmLnJlbW92ZUl0ZW0odGhpcyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2F0dHIuZGF0YS1icy10aGVtZV09XCJ0aGVtZVwiIFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBbY2xhc3NdPVwib3B0aW9ucz8uaHRtbENsYXNzIHx8ICcnXCIgW2NsYXNzLmhhcy1mZWVkYmFja109XCJvcHRpb25zPy5mZWVkYmFjayAmJiBvcHRpb25zPy5pc0lucHV0V2lkZ2V0ICYmXHJcbiAgICAgICAgKGZvcm1Db250cm9sPy5kaXJ0eSB8fCBvcHRpb25zPy5mZWVkYmFja09uUmVuZGVyKVwiIFtjbGFzcy5oYXMtZXJyb3JdPVwib3B0aW9ucz8uZW5hYmxlRXJyb3JTdGF0ZSAmJiBmb3JtQ29udHJvbD8uZXJyb3JzICYmXHJcbiAgICAgICAgKGZvcm1Db250cm9sPy5kaXJ0eSB8fCBvcHRpb25zPy5mZWVkYmFja09uUmVuZGVyKVwiIFtjbGFzcy5oYXMtc3VjY2Vzc109XCJvcHRpb25zPy5lbmFibGVTdWNjZXNzU3RhdGUgJiYgIWZvcm1Db250cm9sPy5lcnJvcnMgJiZcclxuICAgICAgICAoZm9ybUNvbnRyb2w/LmRpcnR5IHx8IG9wdGlvbnM/LmZlZWRiYWNrT25SZW5kZXIpXCI+XHJcblxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dSZW1vdmVCdXR0b25cIiBbY2xhc3NdPVwid2lkZ2V0U3R5bGVzLl9fcmVtb3ZlX2l0ZW1fX1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVtb3ZlSXRlbSgpXCI+XHJcbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgPHNwYW4gW2NsYXNzXT1cIndpZGdldFN0eWxlcy5fX3NjcmVlbl9yZWFkZXJfX1wiPkNsb3NlPC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnM/Lm1lc3NhZ2VMb2NhdGlvbiA9PT0gJ3RvcCdcIj5cclxuICAgICAgICA8cCAqbmdJZj1cIm9wdGlvbnM/LmhlbHBCbG9ja1wiIFtjbGFzc109XCJ3aWRnZXRTdHlsZXMuX19oZWxwX2Jsb2NrX19cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmhlbHBCbG9ja1wiPjwvcD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxsYWJlbCAqbmdJZj1cIm9wdGlvbnM/LnRpdGxlICYmIGxheW91dE5vZGU/LnR5cGUgIT09ICd0YWInXCIgW2F0dHIuZm9yXT1cIidjb250cm9sJyArIGxheW91dE5vZGU/Ll9pZFwiIFtjbGFzc109XCJvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJ1wiIFtjbGFzcy5zci1vbmx5XT1cIm9wdGlvbnM/Lm5vdGl0bGVcIiBbaW5uZXJIVE1MXT1cImR5bmFtaWNUaXRsZVwiPjwvbGFiZWw+XHJcbiAgICA8cCAqbmdJZj1cImxheW91dE5vZGU/LnR5cGUgPT09ICdzdWJtaXQnICYmIGpzZj8uZm9ybU9wdGlvbnM/LmZpZWxkc1JlcXVpcmVkXCI+XHJcbiAgICAgICAgPHN0cm9uZyBbY2xhc3NdPVwid2lkZ2V0U3R5bGVzLl9fcmVxdWlyZWRfYXN0ZXJpc2tfX1wiPio8L3N0cm9uZz4gPSByZXF1aXJlZCBmaWVsZHNcclxuICAgIDwvcD5cclxuICAgIDxkaXYgW2NsYXNzLmlucHV0LWdyb3VwXT1cIm9wdGlvbnM/LmZpZWxkQWRkb25MZWZ0IHx8IG9wdGlvbnM/LmZpZWxkQWRkb25SaWdodFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9ucz8uZmllbGRBZGRvbkxlZnRcIiBbY2xhc3NdPVwid2lkZ2V0U3R5bGVzLl9fZmllbGRfYWRkb25fbGVmdF9fXCIgW2lubmVySFRNTF09XCJvcHRpb25zPy5maWVsZEFkZG9uTGVmdFwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHNlbGVjdC13aWRnZXQtd2lkZ2V0IFtsYXlvdXROb2RlXT1cIndpZGdldExheW91dE5vZGVcIiBbZGF0YUluZGV4XT1cImRhdGFJbmRleFwiIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiPjwvc2VsZWN0LXdpZGdldC13aWRnZXQ+XHJcblxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9ucz8uZmllbGRBZGRvblJpZ2h0XCIgW2NsYXNzXT1cIndpZGdldFN0eWxlcy5fX2ZpZWxkX2FkZG9uX3JpZ2h0X19cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmZpZWxkQWRkb25SaWdodFwiPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwib3B0aW9ucz8uZmVlZGJhY2sgJiYgb3B0aW9ucz8uaXNJbnB1dFdpZGdldCAmJlxyXG4gICAgICAgICAgIW9wdGlvbnM/LmZpZWxkQWRkb25SaWdodCAmJiAhbGF5b3V0Tm9kZS5hcnJheUl0ZW0gJiZcclxuICAgICAgICAgIChmb3JtQ29udHJvbD8uZGlydHkgfHwgb3B0aW9ucz8uZmVlZGJhY2tPblJlbmRlcilcIiBbY2xhc3MuZ2x5cGhpY29uLW9rXT1cIm9wdGlvbnM/LmVuYWJsZVN1Y2Nlc3NTdGF0ZSAmJiAhZm9ybUNvbnRyb2w/LmVycm9yc1wiIFtjbGFzcy5nbHlwaGljb24tcmVtb3ZlXT1cIm9wdGlvbnM/LmVuYWJsZUVycm9yU3RhdGUgJiYgZm9ybUNvbnRyb2w/LmVycm9yc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrIGdseXBoaWNvblwiPjwvc3Bhbj5cclxuICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zPy5tZXNzYWdlTG9jYXRpb24gIT09ICd0b3AnXCI+XHJcbiAgICAgICAgPHAgKm5nSWY9XCJvcHRpb25zPy5oZWxwQmxvY2tcIiBbY2xhc3NdPVwid2lkZ2V0U3R5bGVzLl9faGVscF9ibG9ja19fXCIgW2lubmVySFRNTF09XCJvcHRpb25zPy5oZWxwQmxvY2tcIj48L3A+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cImRlYnVnICYmIGRlYnVnT3V0cHV0XCI+ZGVidWc6XHJcbiAgICA8cHJlPnt7ZGVidWdPdXRwdXR9fTwvcHJlPlxyXG48L2Rpdj5cclxuXHJcbjwhLS1cclxuPGRpdiBjbGFzcz1cImJ0biBpbnB1dCBpbnB1dC1ib3JkZXJlZCBpbnB1dC1wcmltYXJ5IHctZnVsbCBtYXgtdy14c1xyXG5idG4tbmV1dHJhbFxyXG5idG4tcHJpbWFyeVxyXG5idG4tc2Vjb25kYXJ5XHJcbmJ0bi1hY2NlbnRcclxuYnRuLWluZm9cclxuYnRuLXN1Y2Nlc3NcclxuYnRuLXdhcm5pbmdcclxuYnRuLWVycm9yXHJcbmJ0bi1naG9zdFxyXG5idG4tbGlua1xyXG5idG4tb3V0bGluZVxyXG5idG4tYWN0aXZlXHJcbmJ0bi1kaXNhYmxlZFxyXG5nbGFzc1xyXG5uby1hbmltYXRpb25cclxuYnRuLWxnXHJcbmJ0bi1tZFxyXG5idG4tc21cclxuYnRuLXhzXHJcbmJ0bi13aWRlXHJcbmJ0bi1ibG9ja1xyXG5idG4tY2lyY2xlXHJcbmJ0bi1zcXVhcmVcclxuaGlkZGVuXHJcblwiPmRlZnMgYWw8L2Rpdj5cclxuLS0+XHJcbjwhLS08aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlR5cGUgaGVyZVwiIGNsYXNzPVwiaW5wdXQgaW5wdXQtYm9yZGVyZWQgaW5wdXQtcHJpbWFyeSB3LWZ1bGwgbWF4LXcteHNcIiAvPi0tPiJdfQ==
@@ -194,7 +194,7 @@ class CssFrameworkComponent {
194
194
  /{{.+?}}/.test(this.widgetOptions.title || '')) {
195
195
  this.updateTitle();
196
196
  }
197
- this.setTitle();
197
+ this.options.title = this.setTitle();
198
198
  if (this.widgetOptions.title) {
199
199
  this.dynamicTitle = "";
200
200
  }
@@ -254,6 +254,7 @@ class CssFrameworkComponent {
254
254
  this.debugOutput = map(vars, thisVar => JSON.stringify(thisVar, null, 2)).join('\n');
255
255
  }
256
256
  }
257
+ this.updateTitle();
257
258
  this.frameworkInitialized = true;
258
259
  }
259
260
  }
@@ -299,6 +300,7 @@ class CssFrameworkComponent {
299
300
  this.dynamicTitle =
300
301
  this.jsf.parseText((_a = this.options) === null || _a === void 0 ? void 0 : _a.title, this.jsf.getFormControlValue(this), (_b = this.jsf.getFormControlGroup(this)) === null || _b === void 0 ? void 0 : _b.value, this.dataIndex[this.dataIndex.length - 1]);
301
302
  //this.jsf.setItemTitle(this);
303
+ //this.widgetLayoutNode.options.title=this.dynamicTitle;
302
304
  }
303
305
  removeItem() {
304
306
  this.jsf.removeItem(this);
@@ -1 +1 @@
1
- {"version":3,"file":"ng-formworks-cssframework.mjs","sources":["../../../../projects/ng-formworks-cssframework/src/lib/css-framework.service.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.component.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.component.html","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.defs.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.module.ts","../../../../projects/ng-formworks-cssframework/src/lib/css.framework.ts","../../../../projects/ng-formworks-cssframework/src/public-api.ts","../../../../projects/ng-formworks-cssframework/src/ng-formworks-cssframework.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CssframeworkService {\r\n\r\n frameworkTheme$: Observable<string>;\r\n activeRequestedTheme:string;\r\n frameworkThemeSubject: BehaviorSubject<string>;\r\n constructor() {\r\n this.frameworkThemeSubject = new BehaviorSubject<string>('default');\r\n this.frameworkTheme$ = this.frameworkThemeSubject.asObservable();\r\n }\r\n\r\n //TODO-review: this acts as a public api to change the theme\r\n //but doesn't do the actual change, instead it relies on \r\n //the CssFramewkCoromponent having subscribed to listen \r\n //and perform the actual theme change\r\n requestThemeChange(themeName:string){\r\n this.frameworkThemeSubject.next(themeName);\r\n this.activeRequestedTheme=themeName;\r\n }\r\n\r\n //TODO-review:there's no way of knowing what the individual component instance\r\n //has set its theme to, this is just the theme made through the requestThemeChange\r\n //calls and not guaranteed to correspond to the actual theme set by the \r\n //component instance themselves\r\n getActiveRequestedTheme():string{\r\n return this.activeRequestedTheme;\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FrameworkLibraryService, JsonSchemaFormService, addClasses, inArray } from '@ng-formworks/core';\r\nimport _, { cloneDeep, map } from 'lodash';\r\nimport { Subscription } from 'rxjs';\r\nimport { css_fw } from './css-framework.defs';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n@Component({\r\n selector: 'css-framework',\r\n templateUrl: './css-framework.component.html',\r\n styleUrls: ['./css-framework.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CssFrameworkComponent implements OnInit, OnChanges,OnDestroy {\r\n frameworkInitialized = false;\r\n widgetOptions: any; // Options passed to child widget\r\n widgetLayoutNode: any; // layoutNode passed to child widget\r\n options: any; // Options used in this framework\r\n formControl: any = null;\r\n debugOutput: any = '';\r\n debug: any = '';\r\n parentArray: any = null;\r\n isOrderable = false;\r\n dynamicTitle: string = null;\r\n isDynamicTitle:boolean;\r\n @Input() layoutNode: any;\r\n @Input() layoutIndex: number[];\r\n @Input() dataIndex: number[];\r\n\r\n @Input() widgetStyles: css_fw.widgetstyles;\r\n\r\n\r\n\r\n\r\n\r\n //TODO-move to ng-formworks/core utility.functions.ts\r\n applyCssClasses(type, widgetOptions, styleOptions) {\r\n //console.log(\"applyCssClasses for type:\"+type);\r\n let cssClasses = this.widgetStyles[type];\r\n if (!cssClasses || _.isEmpty(cssClasses) ) {\r\n cssClasses = this.widgetStyles.default;\r\n }\r\n Object.keys(cssClasses).forEach(catName => {\r\n let classList = cssClasses[catName];\r\n\r\n if (classList.length) {\r\n widgetOptions[catName] = addClasses(widgetOptions[catName], classList);\r\n }\r\n if (styleOptions) {\r\n widgetOptions[catName] = addClasses(widgetOptions[catName], styleOptions);\r\n }\r\n\r\n })\r\n }\r\n\r\n flattenWidgetStyles(wstyles:css_fw.widgetstyles){\r\n var flattened:any={};\r\n let ignore=['__themes__'];\r\n Object.keys(wstyles).forEach(wkey=>{\r\n let wstyle=wstyles[wkey];\r\n if(ignore.indexOf(wkey)>=0){\r\n flattened[wkey]=wstyle;\r\n return;\r\n }\r\n if(_.isArray(wstyle)){\r\n \r\n flattened[wkey]=wstyle.join(\" \");\r\n }\r\n if(_.isObject(wstyle)){//is csscategories\r\n flattened[wkey]=flattened[wkey]||{};\r\n Object.keys(wstyle).forEach(catName=>{\r\n let cssCat=wstyle[catName];\r\n \r\n if(_.isArray(cssCat)){\r\n flattened[wkey][catName]=cssCat.join(\" \");\r\n }else{\r\n flattened[wkey][catName]=cssCat;\r\n }\r\n })\r\n }\r\n if(_.isString(wstyle)){\r\n flattened[wkey]=wstyle;\r\n }\r\n })\r\n return flattened\r\n}\r\n\r\ndefaultStyling:css_fw.widgetstyles={\r\n array:{},\r\n default:{fieldHtmlClass: \"cssfw-form-control\"},\r\n __themes__:[{name:'notheme',text:'None'}],\r\n __remove_item__:\"cssfw-remove-item\",\r\n __array_item_nonref__:{\r\n \"htmlClass\": \"cssfw-array-item-nonref\"\r\n },\r\n __active__:{activeClass:\"cssfw-active\"},\r\n __array__:{htmlClass:\"cssfw-array\"},\r\n __control_label__:{labelHtmlClass:\"cssfw-control-label\"},\r\n __form_group__:{htmlClass: \"cssfw-form-group\"},\r\n __field_addon_left__:\"cssfw-addon-left\",\r\n __field_addon_right__:\"cssfw-addon-right\",\r\n __help_block__:\"cssfw-help-block\",\r\n __required_asterisk__:\"cssfw-required-astersisk\",\r\n __screen_reader__: \"cssfw-screen-reader\"\r\n\r\n}\r\n\r\n\r\n\r\n\r\ntheme:string\r\nframeworkThemeSubs:Subscription;\r\n constructor(\r\n public cdr: ChangeDetectorRef,\r\n public jsf: JsonSchemaFormService,\r\n public jsfFLService:FrameworkLibraryService,\r\n public cssFWService:CssframeworkService\r\n /*@Inject(CSS_FRAMEWORK_CFG ) fwcfg: css_fw.frameworkcfg*/\r\n\r\n ) {\r\n \r\n let activeFramework:any=this.jsfFLService.activeFramework;\r\n let fwcfg=activeFramework.config||{};\r\n this.widgetStyles = Object.assign(this.defaultStyling,fwcfg.widgetstyles);\r\n let defaultTheme=this.widgetStyles.__themes__[0];\r\n let defaultThemeName=cssFWService.activeRequestedTheme||defaultTheme.name;\r\n this.theme=this.options?.theme|| defaultThemeName;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.frameworkThemeSubs?.unsubscribe();\r\n this.frameworkThemeSubs=null;\r\n }\r\n\r\n\r\n get showRemoveButton(): boolean {\r\n if (!this.options.removable || this.options.readonly ||\r\n this.layoutNode.type === '$ref'\r\n ) {\r\n return false;\r\n }\r\n if (this.layoutNode.recursiveReference) {\r\n return true;\r\n }\r\n if (!this.layoutNode.arrayItem || !this.parentArray) {\r\n return false;\r\n }\r\n // If array length <= minItems, don't allow removing any items\r\n return this.parentArray.items.length - 1 <= this.parentArray.options.minItems ? false :\r\n // For removable list items, allow removing any item\r\n this.layoutNode.arrayItemType === 'list' ? true :\r\n // For removable tuple items, only allow removing last item in list\r\n this.layoutIndex[this.layoutIndex.length - 1] === this.parentArray.items.length - 2;\r\n }\r\n\r\n ngOnInit() {\r\n const cssFWService = this.cssFWService;\r\n //TODO review:this will be run by every component instance\r\n this.frameworkThemeSubs=cssFWService.frameworkTheme$.subscribe(newTheme=>{\r\n this.theme=newTheme;\r\n this.cdr.detectChanges();\r\n })\r\n this.initializeFramework();\r\n if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\r\n this.parentArray = this.jsf.getParentNode(this);\r\n if (this.parentArray) {\r\n this.isOrderable = this.layoutNode.arrayItemType === 'list' &&\r\n !this.options.readonly && this.parentArray.options.orderable;\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (!this.frameworkInitialized) {\r\n this.initializeFramework();\r\n }\r\n if (this.isDynamicTitle) {\r\n this.updateTitle();\r\n }\r\n }\r\n\r\n initializeFramework() {\r\n if (this.layoutNode) {\r\n this.options = cloneDeep(this.layoutNode.options);\r\n this.widgetLayoutNode = {\r\n ...this.layoutNode,\r\n options: cloneDeep(this.layoutNode.options)\r\n };\r\n this.widgetOptions = this.widgetLayoutNode.options;\r\n this.formControl = this.jsf.getFormControl(this);\r\n\r\n this.options.isInputWidget = inArray(this.layoutNode.type, [\r\n 'button', 'checkbox', 'checkboxes-inline', 'checkboxes', 'color',\r\n 'date', 'datetime-local', 'datetime', 'email', 'file', 'hidden',\r\n 'image', 'integer', 'month', 'number', 'password', 'radio',\r\n 'radiobuttons', 'radios-inline', 'radios', 'range', 'reset', 'search',\r\n 'select', 'submit', 'tel', 'text', 'textarea', 'time', 'url', 'week'\r\n ]);\r\n \r\n this.isDynamicTitle=this.options?.title&& /{{.+?}}/.test(this.options.title)\r\n this.dynamicTitle=this.options?.title;\r\n if (\r\n !['$ref', 'advancedfieldset', 'authfieldset', 'button', 'card',\r\n 'checkbox', 'expansion-panel', 'help', 'message', 'msg', 'section',\r\n 'submit', 'tabarray', 'tabs'].includes(this.layoutNode.type) &&\r\n /{{.+?}}/.test(this.widgetOptions.title || '')\r\n ) {\r\n this.updateTitle();\r\n }\r\n \r\n this.setTitle();\r\n\r\n if(this.widgetOptions.title){\r\n this.dynamicTitle=\"\";\r\n }\r\n\r\n this.options.htmlClass =\r\n addClasses(this.options.htmlClass, 'schema-form-' + this.layoutNode.type);\r\n\r\n \r\n if (this.layoutNode.type === 'array') {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__array__.htmlClass);\r\n } else if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__array_item_nonref__.htmlClass);\r\n } else {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__form_group__.htmlClass);\r\n }\r\n \r\n\r\n /*\r\n this.options.htmlClass =\r\n this.layoutNode.type === 'array' ?\r\n addClasses(this.options.htmlClass, ['border','shadow-md','p-1']) :\r\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\r\n addClasses(this.options.htmlClass, ['border','shadow-md','p-1']) :\r\n addClasses(this.options.htmlClass, 'mb-1');\r\n*/\r\n\r\n/*\r\nthis.options.htmlClass =\r\nthis.layoutNode.type === 'array' ?\r\naddClasses(this.options.htmlClass, this.widgetStyles.array.htmlClass):\r\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\r\n addClasses(this.options.htmlClass, this.widgetStyles.__array_item_nonref__.htmlClass):\r\n addClasses(this.options.htmlClass, this.widgetStyles.__form_group__.htmlClass);\r\n*/\r\n \r\n this.widgetOptions.htmlClass = '';\r\n this.options.labelHtmlClass =\r\n addClasses(this.options.labelHtmlClass, this.widgetStyles.__control_label__.labelHtmlClass);\r\n this.widgetOptions.activeClass =\r\n addClasses(this.widgetOptions.activeClass, this.widgetStyles.__active__.activeClass);\r\n this.options.fieldAddonLeft =\r\n this.options.fieldAddonLeft || this.options.prepend;\r\n this.options.fieldAddonRight =\r\n this.options.fieldAddonRight || this.options.append;\r\n\r\n // Add asterisk to titles if required\r\n if (this.options.title && this.layoutNode.type !== 'tab' &&\r\n !this.options.notitle && this.options.required &&\r\n !this.options.title.includes('*')\r\n ) {\r\n let required_asterisk_class=this.widgetStyles.__required_asterisk__||'text-danger'\r\n this.options.title += ` <strong class=\"${required_asterisk_class}\">*</strong>`;\r\n }\r\n if (this.layoutNode.type == 'optionfieldset') {\r\n this.options.messageLocation = 'top';\r\n }\r\n // Set miscelaneous styles and settings for each control type\r\n this.applyCssClasses(this.layoutNode.type, this.widgetOptions, this.options.style);\r\n if (this.formControl) {\r\n this.updateHelpBlock(this.formControl.status);\r\n this.formControl.statusChanges.subscribe(status => this.updateHelpBlock(status));\r\n\r\n if (this.options.debug) {\r\n const vars: any[] = [];\r\n this.debugOutput = map(vars, thisVar => JSON.stringify(thisVar, null, 2)).join('\\n');\r\n }\r\n }\r\n this.frameworkInitialized = true;\r\n }\r\n\r\n }\r\n\r\n updateHelpBlock(status) {\r\n this.options.helpBlock = status === 'INVALID' &&\r\n this.options.enableErrorState && this.formControl.errors &&\r\n (this.formControl.dirty || this.options.feedbackOnRender) ?\r\n this.jsf.formatErrors(this.formControl.errors, this.options.validationMessages) :\r\n this.options.description || this.options.help || null;\r\n }\r\n\r\n //TODO review-side effect assignments\r\n setTitle(): string {\r\n switch (this.layoutNode.type) {\r\n case 'button':\r\n case 'checkbox':\r\n case 'section':\r\n case 'help':\r\n case 'msg':\r\n case 'submit':\r\n case 'message':\r\n case 'tabarray':\r\n case 'tabs':\r\n case '$ref':\r\n return null;\r\n case 'advancedfieldset':\r\n this.widgetOptions.expandable = true;\r\n this.widgetOptions.title = 'Advanced options';\r\n return null;\r\n case 'authfieldset':\r\n this.widgetOptions.expandable = true;\r\n this.widgetOptions.title = 'Authentication settings';\r\n return null;\r\n case 'fieldset':\r\n this.widgetOptions.title = this.options.title;\r\n return null;\r\n default:\r\n this.widgetOptions.title = null;\r\n return this.jsf.setItemTitle(this);\r\n }\r\n }\r\n\r\n updateTitle() {\r\n this.dynamicTitle=\r\n this.jsf.parseText(\r\n this.options?.title,\r\n this.jsf.getFormControlValue(this),\r\n this.jsf.getFormControlGroup(this)?.value,\r\n this.dataIndex[this.dataIndex.length - 1]\r\n );\r\n //this.jsf.setItemTitle(this);\r\n }\r\n\r\n removeItem() {\r\n this.jsf.removeItem(this);\r\n }\r\n}\r\n","<div [attr.data-bs-theme]=\"theme\" [attr.data-theme]=\"theme\" [class]=\"options?.htmlClass || ''\" [class.has-feedback]=\"options?.feedback && options?.isInputWidget &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.has-error]=\"options?.enableErrorState && formControl?.errors &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.has-success]=\"options?.enableSuccessState && !formControl?.errors &&\r\n (formControl?.dirty || options?.feedbackOnRender)\">\r\n\r\n <button *ngIf=\"showRemoveButton\" [class]=\"widgetStyles.__remove_item__\" type=\"button\" (click)=\"removeItem()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span [class]=\"widgetStyles.__screen_reader__\">Close</span>\r\n </button>\r\n <div *ngIf=\"options?.messageLocation === 'top'\">\r\n <p *ngIf=\"options?.helpBlock\" [class]=\"widgetStyles.__help_block__\" [innerHTML]=\"options?.helpBlock\"></p>\r\n </div>\r\n\r\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\" [attr.for]=\"'control' + layoutNode?._id\" [class]=\"options?.labelHtmlClass || ''\" [class.sr-only]=\"options?.notitle\" [innerHTML]=\"dynamicTitle\"></label>\r\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\r\n <strong [class]=\"widgetStyles.__required_asterisk__\">*</strong> = required fields\r\n </p>\r\n <div [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\">\r\n <span *ngIf=\"options?.fieldAddonLeft\" [class]=\"widgetStyles.__field_addon_left__\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\r\n\r\n <select-widget-widget [layoutNode]=\"widgetLayoutNode\" [dataIndex]=\"dataIndex\" [layoutIndex]=\"layoutIndex\"></select-widget-widget>\r\n\r\n <span *ngIf=\"options?.fieldAddonRight\" [class]=\"widgetStyles.__field_addon_right__\" [innerHTML]=\"options?.fieldAddonRight\"></span>\r\n </div>\r\n\r\n <span *ngIf=\"options?.feedback && options?.isInputWidget &&\r\n !options?.fieldAddonRight && !layoutNode.arrayItem &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.glyphicon-ok]=\"options?.enableSuccessState && !formControl?.errors\" [class.glyphicon-remove]=\"options?.enableErrorState && formControl?.errors\" aria-hidden=\"true\" class=\"form-control-feedback glyphicon\"></span>\r\n <div *ngIf=\"options?.messageLocation !== 'top'\">\r\n <p *ngIf=\"options?.helpBlock\" [class]=\"widgetStyles.__help_block__\" [innerHTML]=\"options?.helpBlock\"></p>\r\n </div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"debug && debugOutput\">debug:\r\n <pre>{{debugOutput}}</pre>\r\n</div>\r\n\r\n<!--\r\n<div class=\"btn input input-bordered input-primary w-full max-w-xs\r\nbtn-neutral\r\nbtn-primary\r\nbtn-secondary\r\nbtn-accent\r\nbtn-info\r\nbtn-success\r\nbtn-warning\r\nbtn-error\r\nbtn-ghost\r\nbtn-link\r\nbtn-outline\r\nbtn-active\r\nbtn-disabled\r\nglass\r\nno-animation\r\nbtn-lg\r\nbtn-md\r\nbtn-sm\r\nbtn-xs\r\nbtn-wide\r\nbtn-block\r\nbtn-circle\r\nbtn-square\r\nhidden\r\n\">defs al</div>\r\n-->\r\n<!--<input type=\"text\" placeholder=\"Type here\" class=\"input input-bordered input-primary w-full max-w-xs\" />-->","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const CSS_FRAMEWORK_CFG = new InjectionToken<css_fw.frameworkcfg>('CSS_FRAMEWORK_CFG');\r\n\r\nexport namespace css_fw{\r\n\r\n export type themeKV=\r\n { \r\n name:string,\r\n text:string\r\n }\r\n\r\n export class csscategories{\r\n fieldHtmlClass?:string|string[]\r\n labelHtmlClass?:string|string[]\r\n htmlClass?:string|string[]\r\n itemLabelHtmlClass?:string|string[]\r\n activeClass?:string|string[]\r\n [key: `widget_${string}`]: string|string[]; //allows for properties prefixed with widget\r\n }\r\n\r\n export type widgetstyles={\r\n '$ref'?:csscategories,\r\n 'alt-date'?:csscategories,\r\n 'alt-datetime'?:csscategories,\r\n __themes__?:themeKV[],\r\n __array_item_nonref__:csscategories,\r\n __form_group__:csscategories,\r\n __control_label__:csscategories,\r\n __active__:csscategories,\r\n __required_asterisk__:string,\r\n __array__:csscategories,\r\n '__remove_item__':string,\r\n __help_block__:string,\r\n __field_addon_left__:string\r\n __field_addon_right__:string,\r\n __screen_reader__:string,\r\n array:csscategories,\r\n authfieldset?:csscategories,\r\n advancedfieldset?:csscategories,\r\n button?:csscategories,\r\n checkbox?:csscategories,\r\n checkboxes?:csscategories,\r\n checkboxbuttons?:csscategories,\r\n 'checkboxes-inline'?:csscategories,\r\n date?:csscategories,\r\n 'datetime-local'?:csscategories,\r\n fieldset?:csscategories,\r\n integer?:csscategories,\r\n number?:csscategories,\r\n optionfieldset?:csscategories,\r\n password?:csscategories,\r\n radiobuttons?:csscategories,\r\n radio?:csscategories,\r\n radios?:csscategories,\r\n \"radios-inline\"?:csscategories,\r\n 'range'?:csscategories,\r\n section?:csscategories,\r\n selectfieldset?:csscategories,\r\n select?:csscategories,\r\n submit?:csscategories,\r\n text?:csscategories,\r\n tabs?:csscategories,\r\n tabarray?:csscategories,\r\n 'one-of'?:csscategories,\r\n textarea?:csscategories,\r\n default:csscategories\r\n }\r\n export type frameworkcfg={\r\n name:string,\r\n text:string;\r\n stylesheets:string[],\r\n scripts?:string[],\r\n widgetstyles:widgetstyles,\r\n widgets?:any;\r\n }\r\n\r\n \r\n\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FrameworkLibraryService, JsonSchemaFormModule, JsonSchemaFormService, WidgetLibraryModule, WidgetLibraryService } from '@ng-formworks/core';\r\nimport { CssFrameworkComponent } from './css-framework.component';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CssFrameworkComponent\r\n ],\r\n imports: [\r\n JsonSchemaFormModule,\r\n CommonModule,\r\n WidgetLibraryModule,\r\n ],\r\n exports: [\r\n CssFrameworkComponent\r\n ],\r\n providers: [\r\n JsonSchemaFormService,\r\n FrameworkLibraryService,\r\n WidgetLibraryService,\r\n CssframeworkService\r\n // { provide: Framework, useClass: CssFramework, multi: true },\r\n ]\r\n})\r\nexport class CssFrameworkModule { }\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Framework } from '@ng-formworks/core';\r\nimport { CssFrameworkComponent } from './css-framework.component';\r\nimport { CSS_FRAMEWORK_CFG, css_fw } from './css-framework.defs';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class CssFramework extends Framework {\r\n name = 'css';\r\n\r\n framework:any = CssFrameworkComponent;\r\n config:css_fw.frameworkcfg\r\n constructor(@Inject(CSS_FRAMEWORK_CFG ) cfg:css_fw.frameworkcfg,public cssFWService:CssframeworkService){\r\n super();\r\n \r\n this.name=cfg.name;\r\n this.text=cfg.text||this.name;\r\n this.stylesheets=cfg.stylesheets;\r\n this.scripts=cfg.scripts;\r\n this.config=cfg;\r\n this.widgets=cfg.widgets;\r\n }\r\n getActiveTheme():css_fw.themeKV{\r\n let activeRequestedThemeName=this.cssFWService.getActiveRequestedTheme();\r\n let frameWorkThemes=this.config?.widgetstyles?.__themes__;\r\n \r\n let theme=frameWorkThemes && frameWorkThemes[0]\r\n if(activeRequestedThemeName){//if not set return first theme in config;\r\n theme={name:activeRequestedThemeName,text:activeRequestedThemeName};\r\n if(frameWorkThemes){\r\n let filtered=frameWorkThemes.filter(theme=>{return theme.name==activeRequestedThemeName});\r\n theme=(filtered && filtered[0])||theme;\r\n }\r\n }\r\n return theme;\r\n }\r\n\r\n requestThemeChange(name:string){\r\n this.cssFWService.requestThemeChange(name);\r\n }\r\n\r\n registerTheme(newTheme:css_fw.themeKV,overwrite:boolean=true):boolean{\r\n let themeList=this.config?.widgetstyles?.__themes__||[];\r\n let matchedThemes=themeList.filter(theme=>{return newTheme.name==theme.name});\r\n if(matchedThemes && matchedThemes[0]){\r\n if(overwrite){\r\n matchedThemes[0].text=newTheme.text;\r\n return true;\r\n }\r\n if(!overwrite){\r\n return false;\r\n }\r\n \r\n }\r\n if(!matchedThemes || matchedThemes.length==0){\r\n let cfg:any=this.config\r\n cfg.widgetstyles= this.config.widgetstyles||{};\r\n cfg.widgetstyles.__themes__=cfg.widgetstyles.__themes__||[];\r\n cfg.widgetstyles.__themes__.push(newTheme);\r\n return true;\r\n }\r\n };\r\n\r\n unregisterTheme(name:string):boolean{\r\n let themeList=this.config?.widgetstyles?.__themes__;\r\n let foundInd=-1;\r\n if(themeList){\r\n themeList.forEach((theme,ind)=>{\r\n if(name==theme.name){\r\n foundInd=ind;\r\n }\r\n });\r\n if(foundInd>=0){\r\n themeList.splice(foundInd,1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n getConfig():css_fw.frameworkcfg{\r\n return this.config;\r\n }\r\n\r\n /*\r\n stylesheets = [\r\n //TODO-enable for dev only\r\n cdn.tailwindcss.com/3.3.3'\r\n ];\r\n\r\n\r\n scripts = [\r\n\r\n ];\r\n */\r\n\r\n}\r\n","/*\r\n * Public API Surface of ng-formworks-cssframework\r\n */\r\n\r\nexport * from './lib/css-framework.component';\r\nexport * from './lib/css-framework.defs';\r\nexport * from './lib/css-framework.module';\r\nexport * from './lib/css-framework.service';\r\nexport * from './lib/css.framework';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CssframeworkService","i1.CssframeworkService"],"mappings":"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"}
1
+ {"version":3,"file":"ng-formworks-cssframework.mjs","sources":["../../../../projects/ng-formworks-cssframework/src/lib/css-framework.service.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.component.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.component.html","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.defs.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.module.ts","../../../../projects/ng-formworks-cssframework/src/lib/css.framework.ts","../../../../projects/ng-formworks-cssframework/src/public-api.ts","../../../../projects/ng-formworks-cssframework/src/ng-formworks-cssframework.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CssframeworkService {\r\n\r\n frameworkTheme$: Observable<string>;\r\n activeRequestedTheme:string;\r\n frameworkThemeSubject: BehaviorSubject<string>;\r\n constructor() {\r\n this.frameworkThemeSubject = new BehaviorSubject<string>('default');\r\n this.frameworkTheme$ = this.frameworkThemeSubject.asObservable();\r\n }\r\n\r\n //TODO-review: this acts as a public api to change the theme\r\n //but doesn't do the actual change, instead it relies on \r\n //the CssFramewkCoromponent having subscribed to listen \r\n //and perform the actual theme change\r\n requestThemeChange(themeName:string){\r\n this.frameworkThemeSubject.next(themeName);\r\n this.activeRequestedTheme=themeName;\r\n }\r\n\r\n //TODO-review:there's no way of knowing what the individual component instance\r\n //has set its theme to, this is just the theme made through the requestThemeChange\r\n //calls and not guaranteed to correspond to the actual theme set by the \r\n //component instance themselves\r\n getActiveRequestedTheme():string{\r\n return this.activeRequestedTheme;\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FrameworkLibraryService, JsonSchemaFormService, addClasses, inArray } from '@ng-formworks/core';\r\nimport _, { cloneDeep, map } from 'lodash';\r\nimport { Subscription } from 'rxjs';\r\nimport { css_fw } from './css-framework.defs';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n@Component({\r\n selector: 'css-framework',\r\n templateUrl: './css-framework.component.html',\r\n styleUrls: ['./css-framework.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CssFrameworkComponent implements OnInit, OnChanges,OnDestroy {\r\n frameworkInitialized = false;\r\n widgetOptions: any; // Options passed to child widget\r\n widgetLayoutNode: any; // layoutNode passed to child widget\r\n options: any; // Options used in this framework\r\n formControl: any = null;\r\n debugOutput: any = '';\r\n debug: any = '';\r\n parentArray: any = null;\r\n isOrderable = false;\r\n dynamicTitle: string = null;\r\n isDynamicTitle:boolean;\r\n @Input() layoutNode: any;\r\n @Input() layoutIndex: number[];\r\n @Input() dataIndex: number[];\r\n\r\n @Input() widgetStyles: css_fw.widgetstyles;\r\n\r\n\r\n\r\n\r\n\r\n //TODO-move to ng-formworks/core utility.functions.ts\r\n applyCssClasses(type, widgetOptions, styleOptions) {\r\n //console.log(\"applyCssClasses for type:\"+type);\r\n let cssClasses = this.widgetStyles[type];\r\n if (!cssClasses || _.isEmpty(cssClasses) ) {\r\n cssClasses = this.widgetStyles.default;\r\n }\r\n Object.keys(cssClasses).forEach(catName => {\r\n let classList = cssClasses[catName];\r\n\r\n if (classList.length) {\r\n widgetOptions[catName] = addClasses(widgetOptions[catName], classList);\r\n }\r\n if (styleOptions) {\r\n widgetOptions[catName] = addClasses(widgetOptions[catName], styleOptions);\r\n }\r\n\r\n })\r\n }\r\n\r\n flattenWidgetStyles(wstyles:css_fw.widgetstyles){\r\n var flattened:any={};\r\n let ignore=['__themes__'];\r\n Object.keys(wstyles).forEach(wkey=>{\r\n let wstyle=wstyles[wkey];\r\n if(ignore.indexOf(wkey)>=0){\r\n flattened[wkey]=wstyle;\r\n return;\r\n }\r\n if(_.isArray(wstyle)){\r\n \r\n flattened[wkey]=wstyle.join(\" \");\r\n }\r\n if(_.isObject(wstyle)){//is csscategories\r\n flattened[wkey]=flattened[wkey]||{};\r\n Object.keys(wstyle).forEach(catName=>{\r\n let cssCat=wstyle[catName];\r\n \r\n if(_.isArray(cssCat)){\r\n flattened[wkey][catName]=cssCat.join(\" \");\r\n }else{\r\n flattened[wkey][catName]=cssCat;\r\n }\r\n })\r\n }\r\n if(_.isString(wstyle)){\r\n flattened[wkey]=wstyle;\r\n }\r\n })\r\n return flattened\r\n}\r\n\r\ndefaultStyling:css_fw.widgetstyles={\r\n array:{},\r\n default:{fieldHtmlClass: \"cssfw-form-control\"},\r\n __themes__:[{name:'notheme',text:'None'}],\r\n __remove_item__:\"cssfw-remove-item\",\r\n __array_item_nonref__:{\r\n \"htmlClass\": \"cssfw-array-item-nonref\"\r\n },\r\n __active__:{activeClass:\"cssfw-active\"},\r\n __array__:{htmlClass:\"cssfw-array\"},\r\n __control_label__:{labelHtmlClass:\"cssfw-control-label\"},\r\n __form_group__:{htmlClass: \"cssfw-form-group\"},\r\n __field_addon_left__:\"cssfw-addon-left\",\r\n __field_addon_right__:\"cssfw-addon-right\",\r\n __help_block__:\"cssfw-help-block\",\r\n __required_asterisk__:\"cssfw-required-astersisk\",\r\n __screen_reader__: \"cssfw-screen-reader\"\r\n\r\n}\r\n\r\n\r\n\r\n\r\ntheme:string\r\nframeworkThemeSubs:Subscription;\r\n constructor(\r\n public cdr: ChangeDetectorRef,\r\n public jsf: JsonSchemaFormService,\r\n public jsfFLService:FrameworkLibraryService,\r\n public cssFWService:CssframeworkService\r\n /*@Inject(CSS_FRAMEWORK_CFG ) fwcfg: css_fw.frameworkcfg*/\r\n\r\n ) {\r\n \r\n let activeFramework:any=this.jsfFLService.activeFramework;\r\n let fwcfg=activeFramework.config||{};\r\n this.widgetStyles = Object.assign(this.defaultStyling,fwcfg.widgetstyles);\r\n let defaultTheme=this.widgetStyles.__themes__[0];\r\n let defaultThemeName=cssFWService.activeRequestedTheme||defaultTheme.name;\r\n this.theme=this.options?.theme|| defaultThemeName;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.frameworkThemeSubs?.unsubscribe();\r\n this.frameworkThemeSubs=null;\r\n }\r\n\r\n\r\n get showRemoveButton(): boolean {\r\n if (!this.options.removable || this.options.readonly ||\r\n this.layoutNode.type === '$ref'\r\n ) {\r\n return false;\r\n }\r\n if (this.layoutNode.recursiveReference) {\r\n return true;\r\n }\r\n if (!this.layoutNode.arrayItem || !this.parentArray) {\r\n return false;\r\n }\r\n // If array length <= minItems, don't allow removing any items\r\n return this.parentArray.items.length - 1 <= this.parentArray.options.minItems ? false :\r\n // For removable list items, allow removing any item\r\n this.layoutNode.arrayItemType === 'list' ? true :\r\n // For removable tuple items, only allow removing last item in list\r\n this.layoutIndex[this.layoutIndex.length - 1] === this.parentArray.items.length - 2;\r\n }\r\n\r\n ngOnInit() {\r\n const cssFWService = this.cssFWService;\r\n //TODO review:this will be run by every component instance\r\n this.frameworkThemeSubs=cssFWService.frameworkTheme$.subscribe(newTheme=>{\r\n this.theme=newTheme;\r\n this.cdr.detectChanges();\r\n })\r\n this.initializeFramework();\r\n if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\r\n this.parentArray = this.jsf.getParentNode(this);\r\n if (this.parentArray) {\r\n this.isOrderable = this.layoutNode.arrayItemType === 'list' &&\r\n !this.options.readonly && this.parentArray.options.orderable;\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (!this.frameworkInitialized) {\r\n this.initializeFramework();\r\n }\r\n if (this.isDynamicTitle) {\r\n this.updateTitle();\r\n }\r\n }\r\n\r\n initializeFramework() {\r\n if (this.layoutNode) {\r\n this.options = cloneDeep(this.layoutNode.options);\r\n this.widgetLayoutNode = {\r\n ...this.layoutNode,\r\n options: cloneDeep(this.layoutNode.options)\r\n };\r\n this.widgetOptions = this.widgetLayoutNode.options;\r\n this.formControl = this.jsf.getFormControl(this);\r\n\r\n this.options.isInputWidget = inArray(this.layoutNode.type, [\r\n 'button', 'checkbox', 'checkboxes-inline', 'checkboxes', 'color',\r\n 'date', 'datetime-local', 'datetime', 'email', 'file', 'hidden',\r\n 'image', 'integer', 'month', 'number', 'password', 'radio',\r\n 'radiobuttons', 'radios-inline', 'radios', 'range', 'reset', 'search',\r\n 'select', 'submit', 'tel', 'text', 'textarea', 'time', 'url', 'week'\r\n ]);\r\n \r\n this.isDynamicTitle=this.options?.title&& /{{.+?}}/.test(this.options.title)\r\n this.dynamicTitle=this.options?.title;\r\n if (\r\n !['$ref', 'advancedfieldset', 'authfieldset', 'button', 'card',\r\n 'checkbox', 'expansion-panel', 'help', 'message', 'msg', 'section',\r\n 'submit', 'tabarray', 'tabs'].includes(this.layoutNode.type) &&\r\n /{{.+?}}/.test(this.widgetOptions.title || '')\r\n ) {\r\n this.updateTitle();\r\n }\r\n \r\n this.options.title=this.setTitle();\r\n\r\n if(this.widgetOptions.title){\r\n this.dynamicTitle=\"\";\r\n }\r\n\r\n this.options.htmlClass =\r\n addClasses(this.options.htmlClass, 'schema-form-' + this.layoutNode.type);\r\n\r\n \r\n if (this.layoutNode.type === 'array') {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__array__.htmlClass);\r\n } else if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__array_item_nonref__.htmlClass);\r\n } else {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__form_group__.htmlClass);\r\n }\r\n \r\n\r\n /*\r\n this.options.htmlClass =\r\n this.layoutNode.type === 'array' ?\r\n addClasses(this.options.htmlClass, ['border','shadow-md','p-1']) :\r\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\r\n addClasses(this.options.htmlClass, ['border','shadow-md','p-1']) :\r\n addClasses(this.options.htmlClass, 'mb-1');\r\n*/\r\n\r\n/*\r\nthis.options.htmlClass =\r\nthis.layoutNode.type === 'array' ?\r\naddClasses(this.options.htmlClass, this.widgetStyles.array.htmlClass):\r\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\r\n addClasses(this.options.htmlClass, this.widgetStyles.__array_item_nonref__.htmlClass):\r\n addClasses(this.options.htmlClass, this.widgetStyles.__form_group__.htmlClass);\r\n*/\r\n \r\n this.widgetOptions.htmlClass = '';\r\n this.options.labelHtmlClass =\r\n addClasses(this.options.labelHtmlClass, this.widgetStyles.__control_label__.labelHtmlClass);\r\n this.widgetOptions.activeClass =\r\n addClasses(this.widgetOptions.activeClass, this.widgetStyles.__active__.activeClass);\r\n this.options.fieldAddonLeft =\r\n this.options.fieldAddonLeft || this.options.prepend;\r\n this.options.fieldAddonRight =\r\n this.options.fieldAddonRight || this.options.append;\r\n\r\n // Add asterisk to titles if required\r\n if (this.options.title && this.layoutNode.type !== 'tab' &&\r\n !this.options.notitle && this.options.required &&\r\n !this.options.title.includes('*')\r\n ) {\r\n let required_asterisk_class=this.widgetStyles.__required_asterisk__||'text-danger'\r\n this.options.title += ` <strong class=\"${required_asterisk_class}\">*</strong>`;\r\n }\r\n if (this.layoutNode.type == 'optionfieldset') {\r\n this.options.messageLocation = 'top';\r\n }\r\n // Set miscelaneous styles and settings for each control type\r\n this.applyCssClasses(this.layoutNode.type, this.widgetOptions, this.options.style);\r\n if (this.formControl) {\r\n this.updateHelpBlock(this.formControl.status);\r\n this.formControl.statusChanges.subscribe(status => this.updateHelpBlock(status));\r\n\r\n if (this.options.debug) {\r\n const vars: any[] = [];\r\n this.debugOutput = map(vars, thisVar => JSON.stringify(thisVar, null, 2)).join('\\n');\r\n }\r\n }\r\n this.updateTitle();\r\n this.frameworkInitialized = true;\r\n }\r\n\r\n }\r\n\r\n updateHelpBlock(status) {\r\n this.options.helpBlock = status === 'INVALID' &&\r\n this.options.enableErrorState && this.formControl.errors &&\r\n (this.formControl.dirty || this.options.feedbackOnRender) ?\r\n this.jsf.formatErrors(this.formControl.errors, this.options.validationMessages) :\r\n this.options.description || this.options.help || null;\r\n }\r\n\r\n //TODO review-side effect assignments\r\n setTitle(): string {\r\n switch (this.layoutNode.type) {\r\n case 'button':\r\n case 'checkbox':\r\n case 'section':\r\n case 'help':\r\n case 'msg':\r\n case 'submit':\r\n case 'message':\r\n case 'tabarray':\r\n case 'tabs':\r\n case '$ref':\r\n return null;\r\n case 'advancedfieldset':\r\n this.widgetOptions.expandable = true;\r\n this.widgetOptions.title = 'Advanced options';\r\n return null;\r\n case 'authfieldset':\r\n this.widgetOptions.expandable = true;\r\n this.widgetOptions.title = 'Authentication settings';\r\n return null;\r\n case 'fieldset':\r\n this.widgetOptions.title = this.options.title;\r\n return null;\r\n default:\r\n this.widgetOptions.title = null;\r\n return this.jsf.setItemTitle(this);\r\n }\r\n }\r\n\r\n updateTitle() {\r\n this.dynamicTitle=\r\n this.jsf.parseText(\r\n this.options?.title,\r\n this.jsf.getFormControlValue(this),\r\n this.jsf.getFormControlGroup(this)?.value,\r\n this.dataIndex[this.dataIndex.length - 1]\r\n );\r\n //this.jsf.setItemTitle(this);\r\n //this.widgetLayoutNode.options.title=this.dynamicTitle;\r\n }\r\n\r\n removeItem() {\r\n this.jsf.removeItem(this);\r\n }\r\n}\r\n","<div [attr.data-bs-theme]=\"theme\" [attr.data-theme]=\"theme\" [class]=\"options?.htmlClass || ''\" [class.has-feedback]=\"options?.feedback && options?.isInputWidget &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.has-error]=\"options?.enableErrorState && formControl?.errors &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.has-success]=\"options?.enableSuccessState && !formControl?.errors &&\r\n (formControl?.dirty || options?.feedbackOnRender)\">\r\n\r\n <button *ngIf=\"showRemoveButton\" [class]=\"widgetStyles.__remove_item__\" type=\"button\" (click)=\"removeItem()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span [class]=\"widgetStyles.__screen_reader__\">Close</span>\r\n </button>\r\n <div *ngIf=\"options?.messageLocation === 'top'\">\r\n <p *ngIf=\"options?.helpBlock\" [class]=\"widgetStyles.__help_block__\" [innerHTML]=\"options?.helpBlock\"></p>\r\n </div>\r\n\r\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\" [attr.for]=\"'control' + layoutNode?._id\" [class]=\"options?.labelHtmlClass || ''\" [class.sr-only]=\"options?.notitle\" [innerHTML]=\"dynamicTitle\"></label>\r\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\r\n <strong [class]=\"widgetStyles.__required_asterisk__\">*</strong> = required fields\r\n </p>\r\n <div [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\">\r\n <span *ngIf=\"options?.fieldAddonLeft\" [class]=\"widgetStyles.__field_addon_left__\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\r\n\r\n <select-widget-widget [layoutNode]=\"widgetLayoutNode\" [dataIndex]=\"dataIndex\" [layoutIndex]=\"layoutIndex\"></select-widget-widget>\r\n\r\n <span *ngIf=\"options?.fieldAddonRight\" [class]=\"widgetStyles.__field_addon_right__\" [innerHTML]=\"options?.fieldAddonRight\"></span>\r\n </div>\r\n\r\n <span *ngIf=\"options?.feedback && options?.isInputWidget &&\r\n !options?.fieldAddonRight && !layoutNode.arrayItem &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.glyphicon-ok]=\"options?.enableSuccessState && !formControl?.errors\" [class.glyphicon-remove]=\"options?.enableErrorState && formControl?.errors\" aria-hidden=\"true\" class=\"form-control-feedback glyphicon\"></span>\r\n <div *ngIf=\"options?.messageLocation !== 'top'\">\r\n <p *ngIf=\"options?.helpBlock\" [class]=\"widgetStyles.__help_block__\" [innerHTML]=\"options?.helpBlock\"></p>\r\n </div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"debug && debugOutput\">debug:\r\n <pre>{{debugOutput}}</pre>\r\n</div>\r\n\r\n<!--\r\n<div class=\"btn input input-bordered input-primary w-full max-w-xs\r\nbtn-neutral\r\nbtn-primary\r\nbtn-secondary\r\nbtn-accent\r\nbtn-info\r\nbtn-success\r\nbtn-warning\r\nbtn-error\r\nbtn-ghost\r\nbtn-link\r\nbtn-outline\r\nbtn-active\r\nbtn-disabled\r\nglass\r\nno-animation\r\nbtn-lg\r\nbtn-md\r\nbtn-sm\r\nbtn-xs\r\nbtn-wide\r\nbtn-block\r\nbtn-circle\r\nbtn-square\r\nhidden\r\n\">defs al</div>\r\n-->\r\n<!--<input type=\"text\" placeholder=\"Type here\" class=\"input input-bordered input-primary w-full max-w-xs\" />-->","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const CSS_FRAMEWORK_CFG = new InjectionToken<css_fw.frameworkcfg>('CSS_FRAMEWORK_CFG');\r\n\r\nexport namespace css_fw{\r\n\r\n export type themeKV=\r\n { \r\n name:string,\r\n text:string\r\n }\r\n\r\n export class csscategories{\r\n fieldHtmlClass?:string|string[]\r\n labelHtmlClass?:string|string[]\r\n htmlClass?:string|string[]\r\n itemLabelHtmlClass?:string|string[]\r\n activeClass?:string|string[]\r\n [key: `widget_${string}`]: string|string[]; //allows for properties prefixed with widget\r\n }\r\n\r\n export type widgetstyles={\r\n '$ref'?:csscategories,\r\n 'alt-date'?:csscategories,\r\n 'alt-datetime'?:csscategories,\r\n __themes__?:themeKV[],\r\n __array_item_nonref__:csscategories,\r\n __form_group__:csscategories,\r\n __control_label__:csscategories,\r\n __active__:csscategories,\r\n __required_asterisk__:string,\r\n __array__:csscategories,\r\n '__remove_item__':string,\r\n __help_block__:string,\r\n __field_addon_left__:string\r\n __field_addon_right__:string,\r\n __screen_reader__:string,\r\n array:csscategories,\r\n authfieldset?:csscategories,\r\n advancedfieldset?:csscategories,\r\n button?:csscategories,\r\n checkbox?:csscategories,\r\n checkboxes?:csscategories,\r\n checkboxbuttons?:csscategories,\r\n 'checkboxes-inline'?:csscategories,\r\n date?:csscategories,\r\n 'datetime-local'?:csscategories,\r\n fieldset?:csscategories,\r\n integer?:csscategories,\r\n number?:csscategories,\r\n optionfieldset?:csscategories,\r\n password?:csscategories,\r\n radiobuttons?:csscategories,\r\n radio?:csscategories,\r\n radios?:csscategories,\r\n \"radios-inline\"?:csscategories,\r\n 'range'?:csscategories,\r\n section?:csscategories,\r\n selectfieldset?:csscategories,\r\n select?:csscategories,\r\n submit?:csscategories,\r\n text?:csscategories,\r\n tabs?:csscategories,\r\n tabarray?:csscategories,\r\n 'one-of'?:csscategories,\r\n textarea?:csscategories,\r\n default:csscategories\r\n }\r\n export type frameworkcfg={\r\n name:string,\r\n text:string;\r\n stylesheets:string[],\r\n scripts?:string[],\r\n widgetstyles:widgetstyles,\r\n widgets?:any;\r\n }\r\n\r\n \r\n\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FrameworkLibraryService, JsonSchemaFormModule, JsonSchemaFormService, WidgetLibraryModule, WidgetLibraryService } from '@ng-formworks/core';\r\nimport { CssFrameworkComponent } from './css-framework.component';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CssFrameworkComponent\r\n ],\r\n imports: [\r\n JsonSchemaFormModule,\r\n CommonModule,\r\n WidgetLibraryModule,\r\n ],\r\n exports: [\r\n CssFrameworkComponent\r\n ],\r\n providers: [\r\n JsonSchemaFormService,\r\n FrameworkLibraryService,\r\n WidgetLibraryService,\r\n CssframeworkService\r\n // { provide: Framework, useClass: CssFramework, multi: true },\r\n ]\r\n})\r\nexport class CssFrameworkModule { }\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Framework } from '@ng-formworks/core';\r\nimport { CssFrameworkComponent } from './css-framework.component';\r\nimport { CSS_FRAMEWORK_CFG, css_fw } from './css-framework.defs';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class CssFramework extends Framework {\r\n name = 'css';\r\n\r\n framework:any = CssFrameworkComponent;\r\n config:css_fw.frameworkcfg\r\n constructor(@Inject(CSS_FRAMEWORK_CFG ) cfg:css_fw.frameworkcfg,public cssFWService:CssframeworkService){\r\n super();\r\n \r\n this.name=cfg.name;\r\n this.text=cfg.text||this.name;\r\n this.stylesheets=cfg.stylesheets;\r\n this.scripts=cfg.scripts;\r\n this.config=cfg;\r\n this.widgets=cfg.widgets;\r\n }\r\n getActiveTheme():css_fw.themeKV{\r\n let activeRequestedThemeName=this.cssFWService.getActiveRequestedTheme();\r\n let frameWorkThemes=this.config?.widgetstyles?.__themes__;\r\n \r\n let theme=frameWorkThemes && frameWorkThemes[0]\r\n if(activeRequestedThemeName){//if not set return first theme in config;\r\n theme={name:activeRequestedThemeName,text:activeRequestedThemeName};\r\n if(frameWorkThemes){\r\n let filtered=frameWorkThemes.filter(theme=>{return theme.name==activeRequestedThemeName});\r\n theme=(filtered && filtered[0])||theme;\r\n }\r\n }\r\n return theme;\r\n }\r\n\r\n requestThemeChange(name:string){\r\n this.cssFWService.requestThemeChange(name);\r\n }\r\n\r\n registerTheme(newTheme:css_fw.themeKV,overwrite:boolean=true):boolean{\r\n let themeList=this.config?.widgetstyles?.__themes__||[];\r\n let matchedThemes=themeList.filter(theme=>{return newTheme.name==theme.name});\r\n if(matchedThemes && matchedThemes[0]){\r\n if(overwrite){\r\n matchedThemes[0].text=newTheme.text;\r\n return true;\r\n }\r\n if(!overwrite){\r\n return false;\r\n }\r\n \r\n }\r\n if(!matchedThemes || matchedThemes.length==0){\r\n let cfg:any=this.config\r\n cfg.widgetstyles= this.config.widgetstyles||{};\r\n cfg.widgetstyles.__themes__=cfg.widgetstyles.__themes__||[];\r\n cfg.widgetstyles.__themes__.push(newTheme);\r\n return true;\r\n }\r\n };\r\n\r\n unregisterTheme(name:string):boolean{\r\n let themeList=this.config?.widgetstyles?.__themes__;\r\n let foundInd=-1;\r\n if(themeList){\r\n themeList.forEach((theme,ind)=>{\r\n if(name==theme.name){\r\n foundInd=ind;\r\n }\r\n });\r\n if(foundInd>=0){\r\n themeList.splice(foundInd,1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n getConfig():css_fw.frameworkcfg{\r\n return this.config;\r\n }\r\n\r\n /*\r\n stylesheets = [\r\n //TODO-enable for dev only\r\n cdn.tailwindcss.com/3.3.3'\r\n ];\r\n\r\n\r\n scripts = [\r\n\r\n ];\r\n */\r\n\r\n}\r\n","/*\r\n * Public API Surface of ng-formworks-cssframework\r\n */\r\n\r\nexport * from './lib/css-framework.component';\r\nexport * from './lib/css-framework.defs';\r\nexport * from './lib/css-framework.module';\r\nexport * from './lib/css-framework.service';\r\nexport * from './lib/css.framework';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CssframeworkService","i1.CssframeworkService"],"mappings":"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"}
@@ -194,7 +194,7 @@ class CssFrameworkComponent {
194
194
  /{{.+?}}/.test(this.widgetOptions.title || '')) {
195
195
  this.updateTitle();
196
196
  }
197
- this.setTitle();
197
+ this.options.title = this.setTitle();
198
198
  if (this.widgetOptions.title) {
199
199
  this.dynamicTitle = "";
200
200
  }
@@ -254,6 +254,7 @@ class CssFrameworkComponent {
254
254
  this.debugOutput = map(vars, thisVar => JSON.stringify(thisVar, null, 2)).join('\n');
255
255
  }
256
256
  }
257
+ this.updateTitle();
257
258
  this.frameworkInitialized = true;
258
259
  }
259
260
  }
@@ -298,6 +299,7 @@ class CssFrameworkComponent {
298
299
  this.dynamicTitle =
299
300
  this.jsf.parseText(this.options?.title, this.jsf.getFormControlValue(this), this.jsf.getFormControlGroup(this)?.value, this.dataIndex[this.dataIndex.length - 1]);
300
301
  //this.jsf.setItemTitle(this);
302
+ //this.widgetLayoutNode.options.title=this.dynamicTitle;
301
303
  }
302
304
  removeItem() {
303
305
  this.jsf.removeItem(this);
@@ -1 +1 @@
1
- {"version":3,"file":"ng-formworks-cssframework.mjs","sources":["../../../../projects/ng-formworks-cssframework/src/lib/css-framework.service.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.component.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.component.html","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.defs.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.module.ts","../../../../projects/ng-formworks-cssframework/src/lib/css.framework.ts","../../../../projects/ng-formworks-cssframework/src/public-api.ts","../../../../projects/ng-formworks-cssframework/src/ng-formworks-cssframework.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CssframeworkService {\r\n\r\n frameworkTheme$: Observable<string>;\r\n activeRequestedTheme:string;\r\n frameworkThemeSubject: BehaviorSubject<string>;\r\n constructor() {\r\n this.frameworkThemeSubject = new BehaviorSubject<string>('default');\r\n this.frameworkTheme$ = this.frameworkThemeSubject.asObservable();\r\n }\r\n\r\n //TODO-review: this acts as a public api to change the theme\r\n //but doesn't do the actual change, instead it relies on \r\n //the CssFramewkCoromponent having subscribed to listen \r\n //and perform the actual theme change\r\n requestThemeChange(themeName:string){\r\n this.frameworkThemeSubject.next(themeName);\r\n this.activeRequestedTheme=themeName;\r\n }\r\n\r\n //TODO-review:there's no way of knowing what the individual component instance\r\n //has set its theme to, this is just the theme made through the requestThemeChange\r\n //calls and not guaranteed to correspond to the actual theme set by the \r\n //component instance themselves\r\n getActiveRequestedTheme():string{\r\n return this.activeRequestedTheme;\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FrameworkLibraryService, JsonSchemaFormService, addClasses, inArray } from '@ng-formworks/core';\r\nimport _, { cloneDeep, map } from 'lodash';\r\nimport { Subscription } from 'rxjs';\r\nimport { css_fw } from './css-framework.defs';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n@Component({\r\n selector: 'css-framework',\r\n templateUrl: './css-framework.component.html',\r\n styleUrls: ['./css-framework.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CssFrameworkComponent implements OnInit, OnChanges,OnDestroy {\r\n frameworkInitialized = false;\r\n widgetOptions: any; // Options passed to child widget\r\n widgetLayoutNode: any; // layoutNode passed to child widget\r\n options: any; // Options used in this framework\r\n formControl: any = null;\r\n debugOutput: any = '';\r\n debug: any = '';\r\n parentArray: any = null;\r\n isOrderable = false;\r\n dynamicTitle: string = null;\r\n isDynamicTitle:boolean;\r\n @Input() layoutNode: any;\r\n @Input() layoutIndex: number[];\r\n @Input() dataIndex: number[];\r\n\r\n @Input() widgetStyles: css_fw.widgetstyles;\r\n\r\n\r\n\r\n\r\n\r\n //TODO-move to ng-formworks/core utility.functions.ts\r\n applyCssClasses(type, widgetOptions, styleOptions) {\r\n //console.log(\"applyCssClasses for type:\"+type);\r\n let cssClasses = this.widgetStyles[type];\r\n if (!cssClasses || _.isEmpty(cssClasses) ) {\r\n cssClasses = this.widgetStyles.default;\r\n }\r\n Object.keys(cssClasses).forEach(catName => {\r\n let classList = cssClasses[catName];\r\n\r\n if (classList.length) {\r\n widgetOptions[catName] = addClasses(widgetOptions[catName], classList);\r\n }\r\n if (styleOptions) {\r\n widgetOptions[catName] = addClasses(widgetOptions[catName], styleOptions);\r\n }\r\n\r\n })\r\n }\r\n\r\n flattenWidgetStyles(wstyles:css_fw.widgetstyles){\r\n var flattened:any={};\r\n let ignore=['__themes__'];\r\n Object.keys(wstyles).forEach(wkey=>{\r\n let wstyle=wstyles[wkey];\r\n if(ignore.indexOf(wkey)>=0){\r\n flattened[wkey]=wstyle;\r\n return;\r\n }\r\n if(_.isArray(wstyle)){\r\n \r\n flattened[wkey]=wstyle.join(\" \");\r\n }\r\n if(_.isObject(wstyle)){//is csscategories\r\n flattened[wkey]=flattened[wkey]||{};\r\n Object.keys(wstyle).forEach(catName=>{\r\n let cssCat=wstyle[catName];\r\n \r\n if(_.isArray(cssCat)){\r\n flattened[wkey][catName]=cssCat.join(\" \");\r\n }else{\r\n flattened[wkey][catName]=cssCat;\r\n }\r\n })\r\n }\r\n if(_.isString(wstyle)){\r\n flattened[wkey]=wstyle;\r\n }\r\n })\r\n return flattened\r\n}\r\n\r\ndefaultStyling:css_fw.widgetstyles={\r\n array:{},\r\n default:{fieldHtmlClass: \"cssfw-form-control\"},\r\n __themes__:[{name:'notheme',text:'None'}],\r\n __remove_item__:\"cssfw-remove-item\",\r\n __array_item_nonref__:{\r\n \"htmlClass\": \"cssfw-array-item-nonref\"\r\n },\r\n __active__:{activeClass:\"cssfw-active\"},\r\n __array__:{htmlClass:\"cssfw-array\"},\r\n __control_label__:{labelHtmlClass:\"cssfw-control-label\"},\r\n __form_group__:{htmlClass: \"cssfw-form-group\"},\r\n __field_addon_left__:\"cssfw-addon-left\",\r\n __field_addon_right__:\"cssfw-addon-right\",\r\n __help_block__:\"cssfw-help-block\",\r\n __required_asterisk__:\"cssfw-required-astersisk\",\r\n __screen_reader__: \"cssfw-screen-reader\"\r\n\r\n}\r\n\r\n\r\n\r\n\r\ntheme:string\r\nframeworkThemeSubs:Subscription;\r\n constructor(\r\n public cdr: ChangeDetectorRef,\r\n public jsf: JsonSchemaFormService,\r\n public jsfFLService:FrameworkLibraryService,\r\n public cssFWService:CssframeworkService\r\n /*@Inject(CSS_FRAMEWORK_CFG ) fwcfg: css_fw.frameworkcfg*/\r\n\r\n ) {\r\n \r\n let activeFramework:any=this.jsfFLService.activeFramework;\r\n let fwcfg=activeFramework.config||{};\r\n this.widgetStyles = Object.assign(this.defaultStyling,fwcfg.widgetstyles);\r\n let defaultTheme=this.widgetStyles.__themes__[0];\r\n let defaultThemeName=cssFWService.activeRequestedTheme||defaultTheme.name;\r\n this.theme=this.options?.theme|| defaultThemeName;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.frameworkThemeSubs?.unsubscribe();\r\n this.frameworkThemeSubs=null;\r\n }\r\n\r\n\r\n get showRemoveButton(): boolean {\r\n if (!this.options.removable || this.options.readonly ||\r\n this.layoutNode.type === '$ref'\r\n ) {\r\n return false;\r\n }\r\n if (this.layoutNode.recursiveReference) {\r\n return true;\r\n }\r\n if (!this.layoutNode.arrayItem || !this.parentArray) {\r\n return false;\r\n }\r\n // If array length <= minItems, don't allow removing any items\r\n return this.parentArray.items.length - 1 <= this.parentArray.options.minItems ? false :\r\n // For removable list items, allow removing any item\r\n this.layoutNode.arrayItemType === 'list' ? true :\r\n // For removable tuple items, only allow removing last item in list\r\n this.layoutIndex[this.layoutIndex.length - 1] === this.parentArray.items.length - 2;\r\n }\r\n\r\n ngOnInit() {\r\n const cssFWService = this.cssFWService;\r\n //TODO review:this will be run by every component instance\r\n this.frameworkThemeSubs=cssFWService.frameworkTheme$.subscribe(newTheme=>{\r\n this.theme=newTheme;\r\n this.cdr.detectChanges();\r\n })\r\n this.initializeFramework();\r\n if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\r\n this.parentArray = this.jsf.getParentNode(this);\r\n if (this.parentArray) {\r\n this.isOrderable = this.layoutNode.arrayItemType === 'list' &&\r\n !this.options.readonly && this.parentArray.options.orderable;\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (!this.frameworkInitialized) {\r\n this.initializeFramework();\r\n }\r\n if (this.isDynamicTitle) {\r\n this.updateTitle();\r\n }\r\n }\r\n\r\n initializeFramework() {\r\n if (this.layoutNode) {\r\n this.options = cloneDeep(this.layoutNode.options);\r\n this.widgetLayoutNode = {\r\n ...this.layoutNode,\r\n options: cloneDeep(this.layoutNode.options)\r\n };\r\n this.widgetOptions = this.widgetLayoutNode.options;\r\n this.formControl = this.jsf.getFormControl(this);\r\n\r\n this.options.isInputWidget = inArray(this.layoutNode.type, [\r\n 'button', 'checkbox', 'checkboxes-inline', 'checkboxes', 'color',\r\n 'date', 'datetime-local', 'datetime', 'email', 'file', 'hidden',\r\n 'image', 'integer', 'month', 'number', 'password', 'radio',\r\n 'radiobuttons', 'radios-inline', 'radios', 'range', 'reset', 'search',\r\n 'select', 'submit', 'tel', 'text', 'textarea', 'time', 'url', 'week'\r\n ]);\r\n \r\n this.isDynamicTitle=this.options?.title&& /{{.+?}}/.test(this.options.title)\r\n this.dynamicTitle=this.options?.title;\r\n if (\r\n !['$ref', 'advancedfieldset', 'authfieldset', 'button', 'card',\r\n 'checkbox', 'expansion-panel', 'help', 'message', 'msg', 'section',\r\n 'submit', 'tabarray', 'tabs'].includes(this.layoutNode.type) &&\r\n /{{.+?}}/.test(this.widgetOptions.title || '')\r\n ) {\r\n this.updateTitle();\r\n }\r\n \r\n this.setTitle();\r\n\r\n if(this.widgetOptions.title){\r\n this.dynamicTitle=\"\";\r\n }\r\n\r\n this.options.htmlClass =\r\n addClasses(this.options.htmlClass, 'schema-form-' + this.layoutNode.type);\r\n\r\n \r\n if (this.layoutNode.type === 'array') {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__array__.htmlClass);\r\n } else if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__array_item_nonref__.htmlClass);\r\n } else {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__form_group__.htmlClass);\r\n }\r\n \r\n\r\n /*\r\n this.options.htmlClass =\r\n this.layoutNode.type === 'array' ?\r\n addClasses(this.options.htmlClass, ['border','shadow-md','p-1']) :\r\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\r\n addClasses(this.options.htmlClass, ['border','shadow-md','p-1']) :\r\n addClasses(this.options.htmlClass, 'mb-1');\r\n*/\r\n\r\n/*\r\nthis.options.htmlClass =\r\nthis.layoutNode.type === 'array' ?\r\naddClasses(this.options.htmlClass, this.widgetStyles.array.htmlClass):\r\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\r\n addClasses(this.options.htmlClass, this.widgetStyles.__array_item_nonref__.htmlClass):\r\n addClasses(this.options.htmlClass, this.widgetStyles.__form_group__.htmlClass);\r\n*/\r\n \r\n this.widgetOptions.htmlClass = '';\r\n this.options.labelHtmlClass =\r\n addClasses(this.options.labelHtmlClass, this.widgetStyles.__control_label__.labelHtmlClass);\r\n this.widgetOptions.activeClass =\r\n addClasses(this.widgetOptions.activeClass, this.widgetStyles.__active__.activeClass);\r\n this.options.fieldAddonLeft =\r\n this.options.fieldAddonLeft || this.options.prepend;\r\n this.options.fieldAddonRight =\r\n this.options.fieldAddonRight || this.options.append;\r\n\r\n // Add asterisk to titles if required\r\n if (this.options.title && this.layoutNode.type !== 'tab' &&\r\n !this.options.notitle && this.options.required &&\r\n !this.options.title.includes('*')\r\n ) {\r\n let required_asterisk_class=this.widgetStyles.__required_asterisk__||'text-danger'\r\n this.options.title += ` <strong class=\"${required_asterisk_class}\">*</strong>`;\r\n }\r\n if (this.layoutNode.type == 'optionfieldset') {\r\n this.options.messageLocation = 'top';\r\n }\r\n // Set miscelaneous styles and settings for each control type\r\n this.applyCssClasses(this.layoutNode.type, this.widgetOptions, this.options.style);\r\n if (this.formControl) {\r\n this.updateHelpBlock(this.formControl.status);\r\n this.formControl.statusChanges.subscribe(status => this.updateHelpBlock(status));\r\n\r\n if (this.options.debug) {\r\n const vars: any[] = [];\r\n this.debugOutput = map(vars, thisVar => JSON.stringify(thisVar, null, 2)).join('\\n');\r\n }\r\n }\r\n this.frameworkInitialized = true;\r\n }\r\n\r\n }\r\n\r\n updateHelpBlock(status) {\r\n this.options.helpBlock = status === 'INVALID' &&\r\n this.options.enableErrorState && this.formControl.errors &&\r\n (this.formControl.dirty || this.options.feedbackOnRender) ?\r\n this.jsf.formatErrors(this.formControl.errors, this.options.validationMessages) :\r\n this.options.description || this.options.help || null;\r\n }\r\n\r\n //TODO review-side effect assignments\r\n setTitle(): string {\r\n switch (this.layoutNode.type) {\r\n case 'button':\r\n case 'checkbox':\r\n case 'section':\r\n case 'help':\r\n case 'msg':\r\n case 'submit':\r\n case 'message':\r\n case 'tabarray':\r\n case 'tabs':\r\n case '$ref':\r\n return null;\r\n case 'advancedfieldset':\r\n this.widgetOptions.expandable = true;\r\n this.widgetOptions.title = 'Advanced options';\r\n return null;\r\n case 'authfieldset':\r\n this.widgetOptions.expandable = true;\r\n this.widgetOptions.title = 'Authentication settings';\r\n return null;\r\n case 'fieldset':\r\n this.widgetOptions.title = this.options.title;\r\n return null;\r\n default:\r\n this.widgetOptions.title = null;\r\n return this.jsf.setItemTitle(this);\r\n }\r\n }\r\n\r\n updateTitle() {\r\n this.dynamicTitle=\r\n this.jsf.parseText(\r\n this.options?.title,\r\n this.jsf.getFormControlValue(this),\r\n this.jsf.getFormControlGroup(this)?.value,\r\n this.dataIndex[this.dataIndex.length - 1]\r\n );\r\n //this.jsf.setItemTitle(this);\r\n }\r\n\r\n removeItem() {\r\n this.jsf.removeItem(this);\r\n }\r\n}\r\n","<div [attr.data-bs-theme]=\"theme\" [attr.data-theme]=\"theme\" [class]=\"options?.htmlClass || ''\" [class.has-feedback]=\"options?.feedback && options?.isInputWidget &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.has-error]=\"options?.enableErrorState && formControl?.errors &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.has-success]=\"options?.enableSuccessState && !formControl?.errors &&\r\n (formControl?.dirty || options?.feedbackOnRender)\">\r\n\r\n <button *ngIf=\"showRemoveButton\" [class]=\"widgetStyles.__remove_item__\" type=\"button\" (click)=\"removeItem()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span [class]=\"widgetStyles.__screen_reader__\">Close</span>\r\n </button>\r\n <div *ngIf=\"options?.messageLocation === 'top'\">\r\n <p *ngIf=\"options?.helpBlock\" [class]=\"widgetStyles.__help_block__\" [innerHTML]=\"options?.helpBlock\"></p>\r\n </div>\r\n\r\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\" [attr.for]=\"'control' + layoutNode?._id\" [class]=\"options?.labelHtmlClass || ''\" [class.sr-only]=\"options?.notitle\" [innerHTML]=\"dynamicTitle\"></label>\r\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\r\n <strong [class]=\"widgetStyles.__required_asterisk__\">*</strong> = required fields\r\n </p>\r\n <div [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\">\r\n <span *ngIf=\"options?.fieldAddonLeft\" [class]=\"widgetStyles.__field_addon_left__\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\r\n\r\n <select-widget-widget [layoutNode]=\"widgetLayoutNode\" [dataIndex]=\"dataIndex\" [layoutIndex]=\"layoutIndex\"></select-widget-widget>\r\n\r\n <span *ngIf=\"options?.fieldAddonRight\" [class]=\"widgetStyles.__field_addon_right__\" [innerHTML]=\"options?.fieldAddonRight\"></span>\r\n </div>\r\n\r\n <span *ngIf=\"options?.feedback && options?.isInputWidget &&\r\n !options?.fieldAddonRight && !layoutNode.arrayItem &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.glyphicon-ok]=\"options?.enableSuccessState && !formControl?.errors\" [class.glyphicon-remove]=\"options?.enableErrorState && formControl?.errors\" aria-hidden=\"true\" class=\"form-control-feedback glyphicon\"></span>\r\n <div *ngIf=\"options?.messageLocation !== 'top'\">\r\n <p *ngIf=\"options?.helpBlock\" [class]=\"widgetStyles.__help_block__\" [innerHTML]=\"options?.helpBlock\"></p>\r\n </div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"debug && debugOutput\">debug:\r\n <pre>{{debugOutput}}</pre>\r\n</div>\r\n\r\n<!--\r\n<div class=\"btn input input-bordered input-primary w-full max-w-xs\r\nbtn-neutral\r\nbtn-primary\r\nbtn-secondary\r\nbtn-accent\r\nbtn-info\r\nbtn-success\r\nbtn-warning\r\nbtn-error\r\nbtn-ghost\r\nbtn-link\r\nbtn-outline\r\nbtn-active\r\nbtn-disabled\r\nglass\r\nno-animation\r\nbtn-lg\r\nbtn-md\r\nbtn-sm\r\nbtn-xs\r\nbtn-wide\r\nbtn-block\r\nbtn-circle\r\nbtn-square\r\nhidden\r\n\">defs al</div>\r\n-->\r\n<!--<input type=\"text\" placeholder=\"Type here\" class=\"input input-bordered input-primary w-full max-w-xs\" />-->","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const CSS_FRAMEWORK_CFG = new InjectionToken<css_fw.frameworkcfg>('CSS_FRAMEWORK_CFG');\r\n\r\nexport namespace css_fw{\r\n\r\n export type themeKV=\r\n { \r\n name:string,\r\n text:string\r\n }\r\n\r\n export class csscategories{\r\n fieldHtmlClass?:string|string[]\r\n labelHtmlClass?:string|string[]\r\n htmlClass?:string|string[]\r\n itemLabelHtmlClass?:string|string[]\r\n activeClass?:string|string[]\r\n [key: `widget_${string}`]: string|string[]; //allows for properties prefixed with widget\r\n }\r\n\r\n export type widgetstyles={\r\n '$ref'?:csscategories,\r\n 'alt-date'?:csscategories,\r\n 'alt-datetime'?:csscategories,\r\n __themes__?:themeKV[],\r\n __array_item_nonref__:csscategories,\r\n __form_group__:csscategories,\r\n __control_label__:csscategories,\r\n __active__:csscategories,\r\n __required_asterisk__:string,\r\n __array__:csscategories,\r\n '__remove_item__':string,\r\n __help_block__:string,\r\n __field_addon_left__:string\r\n __field_addon_right__:string,\r\n __screen_reader__:string,\r\n array:csscategories,\r\n authfieldset?:csscategories,\r\n advancedfieldset?:csscategories,\r\n button?:csscategories,\r\n checkbox?:csscategories,\r\n checkboxes?:csscategories,\r\n checkboxbuttons?:csscategories,\r\n 'checkboxes-inline'?:csscategories,\r\n date?:csscategories,\r\n 'datetime-local'?:csscategories,\r\n fieldset?:csscategories,\r\n integer?:csscategories,\r\n number?:csscategories,\r\n optionfieldset?:csscategories,\r\n password?:csscategories,\r\n radiobuttons?:csscategories,\r\n radio?:csscategories,\r\n radios?:csscategories,\r\n \"radios-inline\"?:csscategories,\r\n 'range'?:csscategories,\r\n section?:csscategories,\r\n selectfieldset?:csscategories,\r\n select?:csscategories,\r\n submit?:csscategories,\r\n text?:csscategories,\r\n tabs?:csscategories,\r\n tabarray?:csscategories,\r\n 'one-of'?:csscategories,\r\n textarea?:csscategories,\r\n default:csscategories\r\n }\r\n export type frameworkcfg={\r\n name:string,\r\n text:string;\r\n stylesheets:string[],\r\n scripts?:string[],\r\n widgetstyles:widgetstyles,\r\n widgets?:any;\r\n }\r\n\r\n \r\n\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FrameworkLibraryService, JsonSchemaFormModule, JsonSchemaFormService, WidgetLibraryModule, WidgetLibraryService } from '@ng-formworks/core';\r\nimport { CssFrameworkComponent } from './css-framework.component';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CssFrameworkComponent\r\n ],\r\n imports: [\r\n JsonSchemaFormModule,\r\n CommonModule,\r\n WidgetLibraryModule,\r\n ],\r\n exports: [\r\n CssFrameworkComponent\r\n ],\r\n providers: [\r\n JsonSchemaFormService,\r\n FrameworkLibraryService,\r\n WidgetLibraryService,\r\n CssframeworkService\r\n // { provide: Framework, useClass: CssFramework, multi: true },\r\n ]\r\n})\r\nexport class CssFrameworkModule { }\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Framework } from '@ng-formworks/core';\r\nimport { CssFrameworkComponent } from './css-framework.component';\r\nimport { CSS_FRAMEWORK_CFG, css_fw } from './css-framework.defs';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class CssFramework extends Framework {\r\n name = 'css';\r\n\r\n framework:any = CssFrameworkComponent;\r\n config:css_fw.frameworkcfg\r\n constructor(@Inject(CSS_FRAMEWORK_CFG ) cfg:css_fw.frameworkcfg,public cssFWService:CssframeworkService){\r\n super();\r\n \r\n this.name=cfg.name;\r\n this.text=cfg.text||this.name;\r\n this.stylesheets=cfg.stylesheets;\r\n this.scripts=cfg.scripts;\r\n this.config=cfg;\r\n this.widgets=cfg.widgets;\r\n }\r\n getActiveTheme():css_fw.themeKV{\r\n let activeRequestedThemeName=this.cssFWService.getActiveRequestedTheme();\r\n let frameWorkThemes=this.config?.widgetstyles?.__themes__;\r\n \r\n let theme=frameWorkThemes && frameWorkThemes[0]\r\n if(activeRequestedThemeName){//if not set return first theme in config;\r\n theme={name:activeRequestedThemeName,text:activeRequestedThemeName};\r\n if(frameWorkThemes){\r\n let filtered=frameWorkThemes.filter(theme=>{return theme.name==activeRequestedThemeName});\r\n theme=(filtered && filtered[0])||theme;\r\n }\r\n }\r\n return theme;\r\n }\r\n\r\n requestThemeChange(name:string){\r\n this.cssFWService.requestThemeChange(name);\r\n }\r\n\r\n registerTheme(newTheme:css_fw.themeKV,overwrite:boolean=true):boolean{\r\n let themeList=this.config?.widgetstyles?.__themes__||[];\r\n let matchedThemes=themeList.filter(theme=>{return newTheme.name==theme.name});\r\n if(matchedThemes && matchedThemes[0]){\r\n if(overwrite){\r\n matchedThemes[0].text=newTheme.text;\r\n return true;\r\n }\r\n if(!overwrite){\r\n return false;\r\n }\r\n \r\n }\r\n if(!matchedThemes || matchedThemes.length==0){\r\n let cfg:any=this.config\r\n cfg.widgetstyles= this.config.widgetstyles||{};\r\n cfg.widgetstyles.__themes__=cfg.widgetstyles.__themes__||[];\r\n cfg.widgetstyles.__themes__.push(newTheme);\r\n return true;\r\n }\r\n };\r\n\r\n unregisterTheme(name:string):boolean{\r\n let themeList=this.config?.widgetstyles?.__themes__;\r\n let foundInd=-1;\r\n if(themeList){\r\n themeList.forEach((theme,ind)=>{\r\n if(name==theme.name){\r\n foundInd=ind;\r\n }\r\n });\r\n if(foundInd>=0){\r\n themeList.splice(foundInd,1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n getConfig():css_fw.frameworkcfg{\r\n return this.config;\r\n }\r\n\r\n /*\r\n stylesheets = [\r\n //TODO-enable for dev only\r\n cdn.tailwindcss.com/3.3.3'\r\n ];\r\n\r\n\r\n scripts = [\r\n\r\n ];\r\n */\r\n\r\n}\r\n","/*\r\n * Public API Surface of ng-formworks-cssframework\r\n */\r\n\r\nexport * from './lib/css-framework.component';\r\nexport * from './lib/css-framework.defs';\r\nexport * from './lib/css-framework.module';\r\nexport * from './lib/css-framework.service';\r\nexport * from './lib/css.framework';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CssframeworkService","i1.CssframeworkService"],"mappings":"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"}
1
+ {"version":3,"file":"ng-formworks-cssframework.mjs","sources":["../../../../projects/ng-formworks-cssframework/src/lib/css-framework.service.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.component.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.component.html","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.defs.ts","../../../../projects/ng-formworks-cssframework/src/lib/css-framework.module.ts","../../../../projects/ng-formworks-cssframework/src/lib/css.framework.ts","../../../../projects/ng-formworks-cssframework/src/public-api.ts","../../../../projects/ng-formworks-cssframework/src/ng-formworks-cssframework.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CssframeworkService {\r\n\r\n frameworkTheme$: Observable<string>;\r\n activeRequestedTheme:string;\r\n frameworkThemeSubject: BehaviorSubject<string>;\r\n constructor() {\r\n this.frameworkThemeSubject = new BehaviorSubject<string>('default');\r\n this.frameworkTheme$ = this.frameworkThemeSubject.asObservable();\r\n }\r\n\r\n //TODO-review: this acts as a public api to change the theme\r\n //but doesn't do the actual change, instead it relies on \r\n //the CssFramewkCoromponent having subscribed to listen \r\n //and perform the actual theme change\r\n requestThemeChange(themeName:string){\r\n this.frameworkThemeSubject.next(themeName);\r\n this.activeRequestedTheme=themeName;\r\n }\r\n\r\n //TODO-review:there's no way of knowing what the individual component instance\r\n //has set its theme to, this is just the theme made through the requestThemeChange\r\n //calls and not guaranteed to correspond to the actual theme set by the \r\n //component instance themselves\r\n getActiveRequestedTheme():string{\r\n return this.activeRequestedTheme;\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FrameworkLibraryService, JsonSchemaFormService, addClasses, inArray } from '@ng-formworks/core';\r\nimport _, { cloneDeep, map } from 'lodash';\r\nimport { Subscription } from 'rxjs';\r\nimport { css_fw } from './css-framework.defs';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n@Component({\r\n selector: 'css-framework',\r\n templateUrl: './css-framework.component.html',\r\n styleUrls: ['./css-framework.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CssFrameworkComponent implements OnInit, OnChanges,OnDestroy {\r\n frameworkInitialized = false;\r\n widgetOptions: any; // Options passed to child widget\r\n widgetLayoutNode: any; // layoutNode passed to child widget\r\n options: any; // Options used in this framework\r\n formControl: any = null;\r\n debugOutput: any = '';\r\n debug: any = '';\r\n parentArray: any = null;\r\n isOrderable = false;\r\n dynamicTitle: string = null;\r\n isDynamicTitle:boolean;\r\n @Input() layoutNode: any;\r\n @Input() layoutIndex: number[];\r\n @Input() dataIndex: number[];\r\n\r\n @Input() widgetStyles: css_fw.widgetstyles;\r\n\r\n\r\n\r\n\r\n\r\n //TODO-move to ng-formworks/core utility.functions.ts\r\n applyCssClasses(type, widgetOptions, styleOptions) {\r\n //console.log(\"applyCssClasses for type:\"+type);\r\n let cssClasses = this.widgetStyles[type];\r\n if (!cssClasses || _.isEmpty(cssClasses) ) {\r\n cssClasses = this.widgetStyles.default;\r\n }\r\n Object.keys(cssClasses).forEach(catName => {\r\n let classList = cssClasses[catName];\r\n\r\n if (classList.length) {\r\n widgetOptions[catName] = addClasses(widgetOptions[catName], classList);\r\n }\r\n if (styleOptions) {\r\n widgetOptions[catName] = addClasses(widgetOptions[catName], styleOptions);\r\n }\r\n\r\n })\r\n }\r\n\r\n flattenWidgetStyles(wstyles:css_fw.widgetstyles){\r\n var flattened:any={};\r\n let ignore=['__themes__'];\r\n Object.keys(wstyles).forEach(wkey=>{\r\n let wstyle=wstyles[wkey];\r\n if(ignore.indexOf(wkey)>=0){\r\n flattened[wkey]=wstyle;\r\n return;\r\n }\r\n if(_.isArray(wstyle)){\r\n \r\n flattened[wkey]=wstyle.join(\" \");\r\n }\r\n if(_.isObject(wstyle)){//is csscategories\r\n flattened[wkey]=flattened[wkey]||{};\r\n Object.keys(wstyle).forEach(catName=>{\r\n let cssCat=wstyle[catName];\r\n \r\n if(_.isArray(cssCat)){\r\n flattened[wkey][catName]=cssCat.join(\" \");\r\n }else{\r\n flattened[wkey][catName]=cssCat;\r\n }\r\n })\r\n }\r\n if(_.isString(wstyle)){\r\n flattened[wkey]=wstyle;\r\n }\r\n })\r\n return flattened\r\n}\r\n\r\ndefaultStyling:css_fw.widgetstyles={\r\n array:{},\r\n default:{fieldHtmlClass: \"cssfw-form-control\"},\r\n __themes__:[{name:'notheme',text:'None'}],\r\n __remove_item__:\"cssfw-remove-item\",\r\n __array_item_nonref__:{\r\n \"htmlClass\": \"cssfw-array-item-nonref\"\r\n },\r\n __active__:{activeClass:\"cssfw-active\"},\r\n __array__:{htmlClass:\"cssfw-array\"},\r\n __control_label__:{labelHtmlClass:\"cssfw-control-label\"},\r\n __form_group__:{htmlClass: \"cssfw-form-group\"},\r\n __field_addon_left__:\"cssfw-addon-left\",\r\n __field_addon_right__:\"cssfw-addon-right\",\r\n __help_block__:\"cssfw-help-block\",\r\n __required_asterisk__:\"cssfw-required-astersisk\",\r\n __screen_reader__: \"cssfw-screen-reader\"\r\n\r\n}\r\n\r\n\r\n\r\n\r\ntheme:string\r\nframeworkThemeSubs:Subscription;\r\n constructor(\r\n public cdr: ChangeDetectorRef,\r\n public jsf: JsonSchemaFormService,\r\n public jsfFLService:FrameworkLibraryService,\r\n public cssFWService:CssframeworkService\r\n /*@Inject(CSS_FRAMEWORK_CFG ) fwcfg: css_fw.frameworkcfg*/\r\n\r\n ) {\r\n \r\n let activeFramework:any=this.jsfFLService.activeFramework;\r\n let fwcfg=activeFramework.config||{};\r\n this.widgetStyles = Object.assign(this.defaultStyling,fwcfg.widgetstyles);\r\n let defaultTheme=this.widgetStyles.__themes__[0];\r\n let defaultThemeName=cssFWService.activeRequestedTheme||defaultTheme.name;\r\n this.theme=this.options?.theme|| defaultThemeName;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.frameworkThemeSubs?.unsubscribe();\r\n this.frameworkThemeSubs=null;\r\n }\r\n\r\n\r\n get showRemoveButton(): boolean {\r\n if (!this.options.removable || this.options.readonly ||\r\n this.layoutNode.type === '$ref'\r\n ) {\r\n return false;\r\n }\r\n if (this.layoutNode.recursiveReference) {\r\n return true;\r\n }\r\n if (!this.layoutNode.arrayItem || !this.parentArray) {\r\n return false;\r\n }\r\n // If array length <= minItems, don't allow removing any items\r\n return this.parentArray.items.length - 1 <= this.parentArray.options.minItems ? false :\r\n // For removable list items, allow removing any item\r\n this.layoutNode.arrayItemType === 'list' ? true :\r\n // For removable tuple items, only allow removing last item in list\r\n this.layoutIndex[this.layoutIndex.length - 1] === this.parentArray.items.length - 2;\r\n }\r\n\r\n ngOnInit() {\r\n const cssFWService = this.cssFWService;\r\n //TODO review:this will be run by every component instance\r\n this.frameworkThemeSubs=cssFWService.frameworkTheme$.subscribe(newTheme=>{\r\n this.theme=newTheme;\r\n this.cdr.detectChanges();\r\n })\r\n this.initializeFramework();\r\n if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\r\n this.parentArray = this.jsf.getParentNode(this);\r\n if (this.parentArray) {\r\n this.isOrderable = this.layoutNode.arrayItemType === 'list' &&\r\n !this.options.readonly && this.parentArray.options.orderable;\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (!this.frameworkInitialized) {\r\n this.initializeFramework();\r\n }\r\n if (this.isDynamicTitle) {\r\n this.updateTitle();\r\n }\r\n }\r\n\r\n initializeFramework() {\r\n if (this.layoutNode) {\r\n this.options = cloneDeep(this.layoutNode.options);\r\n this.widgetLayoutNode = {\r\n ...this.layoutNode,\r\n options: cloneDeep(this.layoutNode.options)\r\n };\r\n this.widgetOptions = this.widgetLayoutNode.options;\r\n this.formControl = this.jsf.getFormControl(this);\r\n\r\n this.options.isInputWidget = inArray(this.layoutNode.type, [\r\n 'button', 'checkbox', 'checkboxes-inline', 'checkboxes', 'color',\r\n 'date', 'datetime-local', 'datetime', 'email', 'file', 'hidden',\r\n 'image', 'integer', 'month', 'number', 'password', 'radio',\r\n 'radiobuttons', 'radios-inline', 'radios', 'range', 'reset', 'search',\r\n 'select', 'submit', 'tel', 'text', 'textarea', 'time', 'url', 'week'\r\n ]);\r\n \r\n this.isDynamicTitle=this.options?.title&& /{{.+?}}/.test(this.options.title)\r\n this.dynamicTitle=this.options?.title;\r\n if (\r\n !['$ref', 'advancedfieldset', 'authfieldset', 'button', 'card',\r\n 'checkbox', 'expansion-panel', 'help', 'message', 'msg', 'section',\r\n 'submit', 'tabarray', 'tabs'].includes(this.layoutNode.type) &&\r\n /{{.+?}}/.test(this.widgetOptions.title || '')\r\n ) {\r\n this.updateTitle();\r\n }\r\n \r\n this.options.title=this.setTitle();\r\n\r\n if(this.widgetOptions.title){\r\n this.dynamicTitle=\"\";\r\n }\r\n\r\n this.options.htmlClass =\r\n addClasses(this.options.htmlClass, 'schema-form-' + this.layoutNode.type);\r\n\r\n \r\n if (this.layoutNode.type === 'array') {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__array__.htmlClass);\r\n } else if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__array_item_nonref__.htmlClass);\r\n } else {\r\n this.options.htmlClass = addClasses(this.options.htmlClass, this.widgetStyles.__form_group__.htmlClass);\r\n }\r\n \r\n\r\n /*\r\n this.options.htmlClass =\r\n this.layoutNode.type === 'array' ?\r\n addClasses(this.options.htmlClass, ['border','shadow-md','p-1']) :\r\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\r\n addClasses(this.options.htmlClass, ['border','shadow-md','p-1']) :\r\n addClasses(this.options.htmlClass, 'mb-1');\r\n*/\r\n\r\n/*\r\nthis.options.htmlClass =\r\nthis.layoutNode.type === 'array' ?\r\naddClasses(this.options.htmlClass, this.widgetStyles.array.htmlClass):\r\n this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\r\n addClasses(this.options.htmlClass, this.widgetStyles.__array_item_nonref__.htmlClass):\r\n addClasses(this.options.htmlClass, this.widgetStyles.__form_group__.htmlClass);\r\n*/\r\n \r\n this.widgetOptions.htmlClass = '';\r\n this.options.labelHtmlClass =\r\n addClasses(this.options.labelHtmlClass, this.widgetStyles.__control_label__.labelHtmlClass);\r\n this.widgetOptions.activeClass =\r\n addClasses(this.widgetOptions.activeClass, this.widgetStyles.__active__.activeClass);\r\n this.options.fieldAddonLeft =\r\n this.options.fieldAddonLeft || this.options.prepend;\r\n this.options.fieldAddonRight =\r\n this.options.fieldAddonRight || this.options.append;\r\n\r\n // Add asterisk to titles if required\r\n if (this.options.title && this.layoutNode.type !== 'tab' &&\r\n !this.options.notitle && this.options.required &&\r\n !this.options.title.includes('*')\r\n ) {\r\n let required_asterisk_class=this.widgetStyles.__required_asterisk__||'text-danger'\r\n this.options.title += ` <strong class=\"${required_asterisk_class}\">*</strong>`;\r\n }\r\n if (this.layoutNode.type == 'optionfieldset') {\r\n this.options.messageLocation = 'top';\r\n }\r\n // Set miscelaneous styles and settings for each control type\r\n this.applyCssClasses(this.layoutNode.type, this.widgetOptions, this.options.style);\r\n if (this.formControl) {\r\n this.updateHelpBlock(this.formControl.status);\r\n this.formControl.statusChanges.subscribe(status => this.updateHelpBlock(status));\r\n\r\n if (this.options.debug) {\r\n const vars: any[] = [];\r\n this.debugOutput = map(vars, thisVar => JSON.stringify(thisVar, null, 2)).join('\\n');\r\n }\r\n }\r\n this.updateTitle();\r\n this.frameworkInitialized = true;\r\n }\r\n\r\n }\r\n\r\n updateHelpBlock(status) {\r\n this.options.helpBlock = status === 'INVALID' &&\r\n this.options.enableErrorState && this.formControl.errors &&\r\n (this.formControl.dirty || this.options.feedbackOnRender) ?\r\n this.jsf.formatErrors(this.formControl.errors, this.options.validationMessages) :\r\n this.options.description || this.options.help || null;\r\n }\r\n\r\n //TODO review-side effect assignments\r\n setTitle(): string {\r\n switch (this.layoutNode.type) {\r\n case 'button':\r\n case 'checkbox':\r\n case 'section':\r\n case 'help':\r\n case 'msg':\r\n case 'submit':\r\n case 'message':\r\n case 'tabarray':\r\n case 'tabs':\r\n case '$ref':\r\n return null;\r\n case 'advancedfieldset':\r\n this.widgetOptions.expandable = true;\r\n this.widgetOptions.title = 'Advanced options';\r\n return null;\r\n case 'authfieldset':\r\n this.widgetOptions.expandable = true;\r\n this.widgetOptions.title = 'Authentication settings';\r\n return null;\r\n case 'fieldset':\r\n this.widgetOptions.title = this.options.title;\r\n return null;\r\n default:\r\n this.widgetOptions.title = null;\r\n return this.jsf.setItemTitle(this);\r\n }\r\n }\r\n\r\n updateTitle() {\r\n this.dynamicTitle=\r\n this.jsf.parseText(\r\n this.options?.title,\r\n this.jsf.getFormControlValue(this),\r\n this.jsf.getFormControlGroup(this)?.value,\r\n this.dataIndex[this.dataIndex.length - 1]\r\n );\r\n //this.jsf.setItemTitle(this);\r\n //this.widgetLayoutNode.options.title=this.dynamicTitle;\r\n }\r\n\r\n removeItem() {\r\n this.jsf.removeItem(this);\r\n }\r\n}\r\n","<div [attr.data-bs-theme]=\"theme\" [attr.data-theme]=\"theme\" [class]=\"options?.htmlClass || ''\" [class.has-feedback]=\"options?.feedback && options?.isInputWidget &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.has-error]=\"options?.enableErrorState && formControl?.errors &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.has-success]=\"options?.enableSuccessState && !formControl?.errors &&\r\n (formControl?.dirty || options?.feedbackOnRender)\">\r\n\r\n <button *ngIf=\"showRemoveButton\" [class]=\"widgetStyles.__remove_item__\" type=\"button\" (click)=\"removeItem()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span [class]=\"widgetStyles.__screen_reader__\">Close</span>\r\n </button>\r\n <div *ngIf=\"options?.messageLocation === 'top'\">\r\n <p *ngIf=\"options?.helpBlock\" [class]=\"widgetStyles.__help_block__\" [innerHTML]=\"options?.helpBlock\"></p>\r\n </div>\r\n\r\n <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\" [attr.for]=\"'control' + layoutNode?._id\" [class]=\"options?.labelHtmlClass || ''\" [class.sr-only]=\"options?.notitle\" [innerHTML]=\"dynamicTitle\"></label>\r\n <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\r\n <strong [class]=\"widgetStyles.__required_asterisk__\">*</strong> = required fields\r\n </p>\r\n <div [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\">\r\n <span *ngIf=\"options?.fieldAddonLeft\" [class]=\"widgetStyles.__field_addon_left__\" [innerHTML]=\"options?.fieldAddonLeft\"></span>\r\n\r\n <select-widget-widget [layoutNode]=\"widgetLayoutNode\" [dataIndex]=\"dataIndex\" [layoutIndex]=\"layoutIndex\"></select-widget-widget>\r\n\r\n <span *ngIf=\"options?.fieldAddonRight\" [class]=\"widgetStyles.__field_addon_right__\" [innerHTML]=\"options?.fieldAddonRight\"></span>\r\n </div>\r\n\r\n <span *ngIf=\"options?.feedback && options?.isInputWidget &&\r\n !options?.fieldAddonRight && !layoutNode.arrayItem &&\r\n (formControl?.dirty || options?.feedbackOnRender)\" [class.glyphicon-ok]=\"options?.enableSuccessState && !formControl?.errors\" [class.glyphicon-remove]=\"options?.enableErrorState && formControl?.errors\" aria-hidden=\"true\" class=\"form-control-feedback glyphicon\"></span>\r\n <div *ngIf=\"options?.messageLocation !== 'top'\">\r\n <p *ngIf=\"options?.helpBlock\" [class]=\"widgetStyles.__help_block__\" [innerHTML]=\"options?.helpBlock\"></p>\r\n </div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"debug && debugOutput\">debug:\r\n <pre>{{debugOutput}}</pre>\r\n</div>\r\n\r\n<!--\r\n<div class=\"btn input input-bordered input-primary w-full max-w-xs\r\nbtn-neutral\r\nbtn-primary\r\nbtn-secondary\r\nbtn-accent\r\nbtn-info\r\nbtn-success\r\nbtn-warning\r\nbtn-error\r\nbtn-ghost\r\nbtn-link\r\nbtn-outline\r\nbtn-active\r\nbtn-disabled\r\nglass\r\nno-animation\r\nbtn-lg\r\nbtn-md\r\nbtn-sm\r\nbtn-xs\r\nbtn-wide\r\nbtn-block\r\nbtn-circle\r\nbtn-square\r\nhidden\r\n\">defs al</div>\r\n-->\r\n<!--<input type=\"text\" placeholder=\"Type here\" class=\"input input-bordered input-primary w-full max-w-xs\" />-->","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const CSS_FRAMEWORK_CFG = new InjectionToken<css_fw.frameworkcfg>('CSS_FRAMEWORK_CFG');\r\n\r\nexport namespace css_fw{\r\n\r\n export type themeKV=\r\n { \r\n name:string,\r\n text:string\r\n }\r\n\r\n export class csscategories{\r\n fieldHtmlClass?:string|string[]\r\n labelHtmlClass?:string|string[]\r\n htmlClass?:string|string[]\r\n itemLabelHtmlClass?:string|string[]\r\n activeClass?:string|string[]\r\n [key: `widget_${string}`]: string|string[]; //allows for properties prefixed with widget\r\n }\r\n\r\n export type widgetstyles={\r\n '$ref'?:csscategories,\r\n 'alt-date'?:csscategories,\r\n 'alt-datetime'?:csscategories,\r\n __themes__?:themeKV[],\r\n __array_item_nonref__:csscategories,\r\n __form_group__:csscategories,\r\n __control_label__:csscategories,\r\n __active__:csscategories,\r\n __required_asterisk__:string,\r\n __array__:csscategories,\r\n '__remove_item__':string,\r\n __help_block__:string,\r\n __field_addon_left__:string\r\n __field_addon_right__:string,\r\n __screen_reader__:string,\r\n array:csscategories,\r\n authfieldset?:csscategories,\r\n advancedfieldset?:csscategories,\r\n button?:csscategories,\r\n checkbox?:csscategories,\r\n checkboxes?:csscategories,\r\n checkboxbuttons?:csscategories,\r\n 'checkboxes-inline'?:csscategories,\r\n date?:csscategories,\r\n 'datetime-local'?:csscategories,\r\n fieldset?:csscategories,\r\n integer?:csscategories,\r\n number?:csscategories,\r\n optionfieldset?:csscategories,\r\n password?:csscategories,\r\n radiobuttons?:csscategories,\r\n radio?:csscategories,\r\n radios?:csscategories,\r\n \"radios-inline\"?:csscategories,\r\n 'range'?:csscategories,\r\n section?:csscategories,\r\n selectfieldset?:csscategories,\r\n select?:csscategories,\r\n submit?:csscategories,\r\n text?:csscategories,\r\n tabs?:csscategories,\r\n tabarray?:csscategories,\r\n 'one-of'?:csscategories,\r\n textarea?:csscategories,\r\n default:csscategories\r\n }\r\n export type frameworkcfg={\r\n name:string,\r\n text:string;\r\n stylesheets:string[],\r\n scripts?:string[],\r\n widgetstyles:widgetstyles,\r\n widgets?:any;\r\n }\r\n\r\n \r\n\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FrameworkLibraryService, JsonSchemaFormModule, JsonSchemaFormService, WidgetLibraryModule, WidgetLibraryService } from '@ng-formworks/core';\r\nimport { CssFrameworkComponent } from './css-framework.component';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CssFrameworkComponent\r\n ],\r\n imports: [\r\n JsonSchemaFormModule,\r\n CommonModule,\r\n WidgetLibraryModule,\r\n ],\r\n exports: [\r\n CssFrameworkComponent\r\n ],\r\n providers: [\r\n JsonSchemaFormService,\r\n FrameworkLibraryService,\r\n WidgetLibraryService,\r\n CssframeworkService\r\n // { provide: Framework, useClass: CssFramework, multi: true },\r\n ]\r\n})\r\nexport class CssFrameworkModule { }\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Framework } from '@ng-formworks/core';\r\nimport { CssFrameworkComponent } from './css-framework.component';\r\nimport { CSS_FRAMEWORK_CFG, css_fw } from './css-framework.defs';\r\nimport { CssframeworkService } from './css-framework.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class CssFramework extends Framework {\r\n name = 'css';\r\n\r\n framework:any = CssFrameworkComponent;\r\n config:css_fw.frameworkcfg\r\n constructor(@Inject(CSS_FRAMEWORK_CFG ) cfg:css_fw.frameworkcfg,public cssFWService:CssframeworkService){\r\n super();\r\n \r\n this.name=cfg.name;\r\n this.text=cfg.text||this.name;\r\n this.stylesheets=cfg.stylesheets;\r\n this.scripts=cfg.scripts;\r\n this.config=cfg;\r\n this.widgets=cfg.widgets;\r\n }\r\n getActiveTheme():css_fw.themeKV{\r\n let activeRequestedThemeName=this.cssFWService.getActiveRequestedTheme();\r\n let frameWorkThemes=this.config?.widgetstyles?.__themes__;\r\n \r\n let theme=frameWorkThemes && frameWorkThemes[0]\r\n if(activeRequestedThemeName){//if not set return first theme in config;\r\n theme={name:activeRequestedThemeName,text:activeRequestedThemeName};\r\n if(frameWorkThemes){\r\n let filtered=frameWorkThemes.filter(theme=>{return theme.name==activeRequestedThemeName});\r\n theme=(filtered && filtered[0])||theme;\r\n }\r\n }\r\n return theme;\r\n }\r\n\r\n requestThemeChange(name:string){\r\n this.cssFWService.requestThemeChange(name);\r\n }\r\n\r\n registerTheme(newTheme:css_fw.themeKV,overwrite:boolean=true):boolean{\r\n let themeList=this.config?.widgetstyles?.__themes__||[];\r\n let matchedThemes=themeList.filter(theme=>{return newTheme.name==theme.name});\r\n if(matchedThemes && matchedThemes[0]){\r\n if(overwrite){\r\n matchedThemes[0].text=newTheme.text;\r\n return true;\r\n }\r\n if(!overwrite){\r\n return false;\r\n }\r\n \r\n }\r\n if(!matchedThemes || matchedThemes.length==0){\r\n let cfg:any=this.config\r\n cfg.widgetstyles= this.config.widgetstyles||{};\r\n cfg.widgetstyles.__themes__=cfg.widgetstyles.__themes__||[];\r\n cfg.widgetstyles.__themes__.push(newTheme);\r\n return true;\r\n }\r\n };\r\n\r\n unregisterTheme(name:string):boolean{\r\n let themeList=this.config?.widgetstyles?.__themes__;\r\n let foundInd=-1;\r\n if(themeList){\r\n themeList.forEach((theme,ind)=>{\r\n if(name==theme.name){\r\n foundInd=ind;\r\n }\r\n });\r\n if(foundInd>=0){\r\n themeList.splice(foundInd,1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n getConfig():css_fw.frameworkcfg{\r\n return this.config;\r\n }\r\n\r\n /*\r\n stylesheets = [\r\n //TODO-enable for dev only\r\n cdn.tailwindcss.com/3.3.3'\r\n ];\r\n\r\n\r\n scripts = [\r\n\r\n ];\r\n */\r\n\r\n}\r\n","/*\r\n * Public API Surface of ng-formworks-cssframework\r\n */\r\n\r\nexport * from './lib/css-framework.component';\r\nexport * from './lib/css-framework.defs';\r\nexport * from './lib/css-framework.module';\r\nexport * from './lib/css-framework.service';\r\nexport * from './lib/css.framework';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CssframeworkService","i1.CssframeworkService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-formworks/cssframework",
3
- "version": "15.8.8",
3
+ "version": "15.8.10",
4
4
  "description": "Angular ng-formworks - JSON Schema Form builder cssframework",
5
5
  "author": "https://github.com/zahmo/ng-formworks/graphs/contributors",
6
6
  "keywords": [
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "tslib": "^2.3.0",
46
- "@ng-formworks/core": "~15.8.8"
46
+ "@ng-formworks/core": "~15.8.10"
47
47
  },
48
48
  "sideEffects": false,
49
49
  "module": "fesm2015/ng-formworks-cssframework.mjs",