@c8y/ngx-components 1017.0.96 → 1017.0.97

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.
@@ -64,7 +64,7 @@ export class MarkdownWidgetConfigComponent {
64
64
  }
65
65
  initForm() {
66
66
  this.formGroup = this.formBuilder.group({
67
- contentUrl: ['', [Validators.maxLength(100)]],
67
+ contentUrl: ['', [Validators.maxLength(2000)]],
68
68
  droppedFile: [
69
69
  null,
70
70
  [
@@ -133,4 +133,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
133
133
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i1.NgForm }, { type: i2.AlertService }, { type: i3.MarkdownWidgetService }]; }, propDecorators: { config: [{
134
134
  type: Input
135
135
  }] } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24td2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL21hcmtkb3duLXdpZGdldC9tYXJrZG93bi13aWRnZXQtY29uZmlnL21hcmtkb3duLXdpZGdldC1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9tYXJrZG93bi13aWRnZXQvbWFya2Rvd24td2lkZ2V0LWNvbmZpZy9tYXJrZG93bi13aWRnZXQtY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBRUwsV0FBVyxFQUVYLE1BQU0sRUFHTixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBTW5FLE1BQU0sT0FBTyw2QkFBNkI7SUFPeEMsWUFDVSxXQUF3QixFQUN4QixJQUFZLEVBQ1osS0FBbUIsRUFDbkIsZUFBc0M7UUFIdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBUGhELGlCQUFZLEdBQWlDLFdBQVcsQ0FBQztRQUN6RCxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBT2IsQ0FBQztJQUVKLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBNkI7UUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUMxQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMs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QUFFO2dCQUN6QixZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUI7U0FDRjtRQUNELElBQUksWUFBWSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxTQUFTLENBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUUsQ0FBQztTQUNIO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzs7MEhBdElVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGdHQ2xCMUMsKzVEQTZEQTsyRkQzQ2EsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLDRCQUE0QjtzTEFJN0IsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIEM4eVZhbGlkYXRvcnMsIGdldHRleHQsIE9uQmVmb3JlU2F2ZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUdyb3VwLFxuICBOZ0Zvcm0sXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hcmtkb3duV2lkZ2V0Q29uZmlnIH0gZnJvbSAnLi4vbWFya2Rvd24td2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IE1hcmtkb3duV2lkZ2V0U2VydmljZSB9IGZyb20gJy4uL21hcmtkb3duLXdpZGdldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LW1hcmtkb3duLXdpZGdldC1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24td2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTWFya2Rvd25XaWRnZXRDb25maWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQmVmb3JlU2F2ZSB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWFya2Rvd25XaWRnZXRDb25maWc7XG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBmaWxlRnJvbUNvbmZpZzogRmlsZTtcbiAgdXBsb2FkQ2hvaWNlOiAndXBsb2FkQmluYXJ5JyB8ICd1cGxvYWRVcmwnID0gJ3VwbG9hZFVybCc7XG4gIGxvYWRpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGZvcm06IE5nRm9ybSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duV2lkZ2V0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgb25CZWZvcmVTYXZlKGNvbmZpZz86IE1hcmtkb3duV2lkZ2V0Q29uZmlnKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmludmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXBsb2FkQ2hvaWNlID09PSAndXBsb2FkVXJsJykge1xuICAgICAgT2JqZWN0LmFzc2lnbihjb25maWcsIHtcbiAgICAgICAgY29udGVudFVybDogdGhpcy5mb3JtR3JvdXAudmFsdWUuY29udGVudFVybCxcbiAgICAgICAgbWFya2Rvd25CaW5hcnlJZDogbnVsbFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZmlsZUZyb21Gb3JtID0gdGhpcy5nZXRGaWxlRnJvbUZvcm1WYWx1ZSh0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XG4gICAgaWYgKGZpbGVGcm9tRm9ybSAmJiBmaWxlRnJvbUZvcm0gIT09IHRoaXMuZmlsZUZyb21Db25maWcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG1hcmtkb3duQmluYXJ5SWQgPSBhd2FpdCB0aGlzLm1hcmtkb3duU2VydmljZS51cGxvYWRGaWxlKGZpbGVGcm9tRm9ybSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oY29uZmlnLCB7IG1hcmtkb3duQmluYXJ5SWQsIGNvbnRlbnRVcmw6IG51bGwgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdVbmFibGUgdG8gdXBsb2FkIG1hcmtkb3duIGZpbGUuJyksIGU/LmRhdGEpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZmlsZUZyb21Gb3JtKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGNvbmZpZywgeyBjb250ZW50VXJsOiAnL3JlYWRtZS5tZCcsIG1hcmtkb3duQmluYXJ5SWQ6IG51bGwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5tYXJrZG93bkJpbmFyeUlkKSB7XG4gICAgICB0aGlzLnVwbG9hZENob2ljZSA9ICd1cGxvYWRCaW5hcnknO1xuICAgICAgdGhpcy5maWxlRnJvbUNvbmZpZyA9IGF3YWl0IHRoaXMubWFya2Rvd25TZXJ2aWNlLmdldEZpbGUodGhpcy5jb25maWcubWFya2Rvd25CaW5hcnlJZCk7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgICAgZHJvcHBlZEZpbGU6IFt7IGZpbGU6IHRoaXMuZmlsZUZyb21Db25maWcsIG5hbWU6IHRoaXMuZmlsZUZyb21Db25maWcubmFtZSB9XVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6ICd1cGxvYWRCaW5hcnknIHwgJ3VwbG9hZFVybCcpIHtcbiAgICB0aGlzLnVwbG9hZENob2ljZSA9IHZhbHVlO1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWyd1cGxvYWRDaG9pY2UnXS5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZUZyb21Gb3JtVmFsdWUoZm9ybVZhbHVlOiBhbnkpOiBGaWxlIHwgbnVsbCB7XG4gICAgY29uc3QgYmluYXJ5OiBhbnlbXSA9IGZvcm1WYWx1ZT8uZHJvcHBlZEZpbGUgfHwgW107XG4gICAgcmV0dXJuIGJpbmFyeVswXT8uZmlsZSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIGNvbnRlbnRVcmw6IFsnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldXSxcbiAgICAgICAgZHJvcHBlZEZpbGU6IFtcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMSksXG4gICAgICAgICAgICBDOHlWYWxpZGF0b3JzLmZpbGVzVmFsaWRhdG9yKHsgbWF4aW11bUZpbGVTaXplSW5LYjogMTAwMCB9KVxuICAgICAgICAgIF1cbiAgICAgICAgXSxcbiAgICAgICAgdXBsb2FkQ2hvaWNlOiBbdGhpcy5jb25maWcubWFya2Rvd25CaW5hcnlJZCA/ICd1cGxvYWRCaW5hcnknIDogJ3VwbG9hZFVybCcsIFtdXVxuICAgICAgfSxcbiAgICAgIHsgdmFsaWRhdG9yczogdGhpcy5yZXF1aXJlRWl0aGVyQmluYXJ5T3JVcmwoKSB9XG4gICAgKTtcbiAgICB0aGlzLmZvcm0uZm9ybS5hZGRDb250cm9sKCdjb25maWcnLCB0aGlzLmZvcm1Hcm91cCk7XG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVpcmVFaXRoZXJCaW5hcnlPclVybCgpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCB1cmwgPSBjb250cm9sLmdldChgY29udGVudFVybGApO1xuICAgICAgY29uc3QgdXBsb2FkQmluYXJ5ID0gY29udHJvbC5nZXQoYGRyb3BwZWRGaWxlYCk7XG5cbiAgICAgIGNvbnN0IHVybERlZmluZWQgPSB1cmwgJiYgdXJsLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdXJsLnZhbHVlICE9PSBudWxsO1xuICAgICAgY29uc3QgdXBsb2FkQmluYXJ5RGVmaW5lZCA9XG4gICAgICAgIHVwbG9hZEJpbmFyeSAmJiB1cGxvYWRCaW5hcnkudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB1cGxvYWRCaW5hcnkudmFsdWUgIT09IG51bGw7XG5cbiAgICAgIGNvbnN0IGVycm9ycyA9IHt9O1xuICAgICAgaWYgKHRoaXMudXBsb2FkQ2hvaWNlID09PSAndXBsb2FkQmluYXJ5JyAmJiAhdXBsb2FkQmluYXJ5RGVmaW5lZCkge1xuICAgICAgICAvLyBzZXRzIGVycm9yXG4gICAgICAgIGNvbnN0IGVycm9yID0geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgICAgICB1cGxvYWRCaW5hcnkuc2V0RXJyb3JzKE9iamVjdC5hc3NpZ24oe30sIHVwbG9hZEJpbmFyeS5lcnJvcnMgfHwge30sIGVycm9yKSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZXJyb3JzLCBlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByZW1vdmUgcHJldmlvdXMgZXJyb3JcbiAgICAgICAgdGhpcy5yZW1vdmVFcnJvcnModXBsb2FkQmluYXJ5LCBbJ3JlcXVpcmVkJ10pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy51cGxvYWRDaG9pY2UgPT09ICd1cGxvYWRVcmwnICYmICghdXJsRGVmaW5lZCB8fCB1cmwudmFsdWUgPT09ICcnKSkge1xuICAgICAgICAvLyBzZXRzIGVycm9yXG4gICAgICAgIGNvbnN0IGVycm9yID0geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgICAgICB1cmwuc2V0RXJyb3JzKE9iamVjdC5hc3NpZ24oe30sIHVybC5lcnJvcnMgfHwge30sIGVycm9yKSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZXJyb3JzLCBlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByZW1vdmUgcHJldmlvdXMgZXJyb3JcbiAgICAgICAgdGhpcy5yZW1vdmVFcnJvcnModXJsLCBbJ3JlcXVpcmVkJ10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGggPyBlcnJvcnMgOiBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGVycm9yczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbnRyb2wgfHwgIWNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCByZW1vdmVkRXJyb3IgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGVycm9yIG9mIGVycm9ycykge1xuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzW2Vycm9yXSkge1xuICAgICAgICByZW1vdmVkRXJyb3IgPSB0cnVlO1xuICAgICAgICBkZWxldGUgY29udHJvbC5lcnJvcnNbZXJyb3JdO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVtb3ZlZEVycm9yKSB7XG4gICAgICBjb250cm9sLnNldEVycm9ycyhcbiAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmxlbmd0aCA/IE9iamVjdC5hc3NpZ24oe30sIGNvbnRyb2wuZXJyb3JzKSA6IG51bGxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZW1vdmVkRXJyb3I7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgdGl0bGU9XCJ7eyAnVXBsb2FkIGEgYmluYXJ5JyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNyYWRpb1xuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1cGxvYWRDaG9pY2VcIlxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICB2YWx1ZT1cInVwbG9hZEJpbmFyeVwiXG4gICAgICAgIG5hbWU9XCJ1cGxvYWRDaG9pY2VcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgIC8+XG4gICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8c3Bhbj57eyAnVXBsb2FkIGEgYmluYXJ5JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICAgIDxsYWJlbCB0aXRsZT1cInt7ICdQcm92aWRlIGEgZmlsZSBwYXRoJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZSBtLWwtOFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNyYWRpb1xuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1cGxvYWRDaG9pY2VcIlxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICB2YWx1ZT1cInVwbG9hZFVybFwiXG4gICAgICAgIG5hbWU9XCJ1cGxvYWRDaG9pY2VcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgIC8+XG4gICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3sgJ1Byb3ZpZGUgYSBmaWxlIHBhdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidXBsb2FkQ2hvaWNlXCI+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3VwbG9hZEJpbmFyeSdcIj5cbiAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICA8Yzh5LWRyb3AtYXJlYVxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRyb3BwZWRGaWxlXCJcbiAgICAgICAgICBjbGFzcz1cImRyb3AtYXJlYS1zbVwiXG4gICAgICAgICAgW3RpdGxlXT1cIidEcm9wIGZpbGUgb3IgY2xpY2sgdG8gYnJvd3NlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW21heEFsbG93ZWRGaWxlc109XCIxXCJcbiAgICAgICAgICBbYWNjZXB0XT1cIidtZCdcIlxuICAgICAgICA+PC9jOHktZHJvcC1hcmVhPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIndXBsb2FkVXJsJ1wiPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWItNCBwLWItOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZ2xvYmVcIj48L2k+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbnRlbnRVcmxcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSBodHRwOi8vZXhhbXBsZS5jb20vYmluYXJ5LnppcFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuIl19
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24td2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL21hcmtkb3duLXdpZGdldC9tYXJrZG93bi13aWRnZXQtY29uZmlnL21hcmtkb3duLXdpZGdldC1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9tYXJrZG93bi13aWRnZXQvbWFya2Rvd24td2lkZ2V0LWNvbmZpZy9tYXJrZG93bi13aWRnZXQtY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBRUwsV0FBVyxFQUVYLE1BQU0sRUFHTixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBTW5FLE1BQU0sT0FBTyw2QkFBNkI7SUFPeEMsWUFDVSxXQUF3QixFQUN4QixJQUFZLEVBQ1osS0FBbUIsRUFDbkIsZUFBc0M7UUFIdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBUGhELGlCQUFZLEdBQWlDLFdBQVcsQ0FBQztRQUN6RCxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBT2IsQ0FBQztJQUVKLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBNkI7UUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUMxQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMs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QUFFO2dCQUN6QixZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUI7U0FDRjtRQUNELElBQUksWUFBWSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxTQUFTLENBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUUsQ0FBQztTQUNIO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzs7MEhBdElVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGdHQ2xCMUMsKzVEQTZEQTsyRkQzQ2EsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLDRCQUE0QjtzTEFJN0IsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIEM4eVZhbGlkYXRvcnMsIGdldHRleHQsIE9uQmVmb3JlU2F2ZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUdyb3VwLFxuICBOZ0Zvcm0sXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hcmtkb3duV2lkZ2V0Q29uZmlnIH0gZnJvbSAnLi4vbWFya2Rvd24td2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IE1hcmtkb3duV2lkZ2V0U2VydmljZSB9IGZyb20gJy4uL21hcmtkb3duLXdpZGdldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LW1hcmtkb3duLXdpZGdldC1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24td2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTWFya2Rvd25XaWRnZXRDb25maWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQmVmb3JlU2F2ZSB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWFya2Rvd25XaWRnZXRDb25maWc7XG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBmaWxlRnJvbUNvbmZpZzogRmlsZTtcbiAgdXBsb2FkQ2hvaWNlOiAndXBsb2FkQmluYXJ5JyB8ICd1cGxvYWRVcmwnID0gJ3VwbG9hZFVybCc7XG4gIGxvYWRpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGZvcm06IE5nRm9ybSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duV2lkZ2V0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgb25CZWZvcmVTYXZlKGNvbmZpZz86IE1hcmtkb3duV2lkZ2V0Q29uZmlnKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmludmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXBsb2FkQ2hvaWNlID09PSAndXBsb2FkVXJsJykge1xuICAgICAgT2JqZWN0LmFzc2lnbihjb25maWcsIHtcbiAgICAgICAgY29udGVudFVybDogdGhpcy5mb3JtR3JvdXAudmFsdWUuY29udGVudFVybCxcbiAgICAgICAgbWFya2Rvd25CaW5hcnlJZDogbnVsbFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZmlsZUZyb21Gb3JtID0gdGhpcy5nZXRGaWxlRnJvbUZvcm1WYWx1ZSh0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XG4gICAgaWYgKGZpbGVGcm9tRm9ybSAmJiBmaWxlRnJvbUZvcm0gIT09IHRoaXMuZmlsZUZyb21Db25maWcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG1hcmtkb3duQmluYXJ5SWQgPSBhd2FpdCB0aGlzLm1hcmtkb3duU2VydmljZS51cGxvYWRGaWxlKGZpbGVGcm9tRm9ybSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oY29uZmlnLCB7IG1hcmtkb3duQmluYXJ5SWQsIGNvbnRlbnRVcmw6IG51bGwgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdVbmFibGUgdG8gdXBsb2FkIG1hcmtkb3duIGZpbGUuJyksIGU/LmRhdGEpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZmlsZUZyb21Gb3JtKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGNvbmZpZywgeyBjb250ZW50VXJsOiAnL3JlYWRtZS5tZCcsIG1hcmtkb3duQmluYXJ5SWQ6IG51bGwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5tYXJrZG93bkJpbmFyeUlkKSB7XG4gICAgICB0aGlzLnVwbG9hZENob2ljZSA9ICd1cGxvYWRCaW5hcnknO1xuICAgICAgdGhpcy5maWxlRnJvbUNvbmZpZyA9IGF3YWl0IHRoaXMubWFya2Rvd25TZXJ2aWNlLmdldEZpbGUodGhpcy5jb25maWcubWFya2Rvd25CaW5hcnlJZCk7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgICAgZHJvcHBlZEZpbGU6IFt7IGZpbGU6IHRoaXMuZmlsZUZyb21Db25maWcsIG5hbWU6IHRoaXMuZmlsZUZyb21Db25maWcubmFtZSB9XVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6ICd1cGxvYWRCaW5hcnknIHwgJ3VwbG9hZFVybCcpIHtcbiAgICB0aGlzLnVwbG9hZENob2ljZSA9IHZhbHVlO1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWyd1cGxvYWRDaG9pY2UnXS5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZUZyb21Gb3JtVmFsdWUoZm9ybVZhbHVlOiBhbnkpOiBGaWxlIHwgbnVsbCB7XG4gICAgY29uc3QgYmluYXJ5OiBhbnlbXSA9IGZvcm1WYWx1ZT8uZHJvcHBlZEZpbGUgfHwgW107XG4gICAgcmV0dXJuIGJpbmFyeVswXT8uZmlsZSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIGNvbnRlbnRVcmw6IFsnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMDApXV0sXG4gICAgICAgIGRyb3BwZWRGaWxlOiBbXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEpLFxuICAgICAgICAgICAgQzh5VmFsaWRhdG9ycy5maWxlc1ZhbGlkYXRvcih7IG1heGltdW1GaWxlU2l6ZUluS2I6IDEwMDAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIF0sXG4gICAgICAgIHVwbG9hZENob2ljZTogW3RoaXMuY29uZmlnLm1hcmtkb3duQmluYXJ5SWQgPyAndXBsb2FkQmluYXJ5JyA6ICd1cGxvYWRVcmwnLCBbXV1cbiAgICAgIH0sXG4gICAgICB7IHZhbGlkYXRvcnM6IHRoaXMucmVxdWlyZUVpdGhlckJpbmFyeU9yVXJsKCkgfVxuICAgICk7XG4gICAgdGhpcy5mb3JtLmZvcm0uYWRkQ29udHJvbCgnY29uZmlnJywgdGhpcy5mb3JtR3JvdXApO1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodGhpcy5jb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXF1aXJlRWl0aGVyQmluYXJ5T3JVcmwoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdXJsID0gY29udHJvbC5nZXQoYGNvbnRlbnRVcmxgKTtcbiAgICAgIGNvbnN0IHVwbG9hZEJpbmFyeSA9IGNvbnRyb2wuZ2V0KGBkcm9wcGVkRmlsZWApO1xuXG4gICAgICBjb25zdCB1cmxEZWZpbmVkID0gdXJsICYmIHVybC52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHVybC52YWx1ZSAhPT0gbnVsbDtcbiAgICAgIGNvbnN0IHVwbG9hZEJpbmFyeURlZmluZWQgPVxuICAgICAgICB1cGxvYWRCaW5hcnkgJiYgdXBsb2FkQmluYXJ5LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdXBsb2FkQmluYXJ5LnZhbHVlICE9PSBudWxsO1xuXG4gICAgICBjb25zdCBlcnJvcnMgPSB7fTtcbiAgICAgIGlmICh0aGlzLnVwbG9hZENob2ljZSA9PT0gJ3VwbG9hZEJpbmFyeScgJiYgIXVwbG9hZEJpbmFyeURlZmluZWQpIHtcbiAgICAgICAgLy8gc2V0cyBlcnJvclxuICAgICAgICBjb25zdCBlcnJvciA9IHsgcmVxdWlyZWQ6IHRydWUgfTtcbiAgICAgICAgdXBsb2FkQmluYXJ5LnNldEVycm9ycyhPYmplY3QuYXNzaWduKHt9LCB1cGxvYWRCaW5hcnkuZXJyb3JzIHx8IHt9LCBlcnJvcikpO1xuICAgICAgICBPYmplY3QuYXNzaWduKGVycm9ycywgZXJyb3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcmVtb3ZlIHByZXZpb3VzIGVycm9yXG4gICAgICAgIHRoaXMucmVtb3ZlRXJyb3JzKHVwbG9hZEJpbmFyeSwgWydyZXF1aXJlZCddKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudXBsb2FkQ2hvaWNlID09PSAndXBsb2FkVXJsJyAmJiAoIXVybERlZmluZWQgfHwgdXJsLnZhbHVlID09PSAnJykpIHtcbiAgICAgICAgLy8gc2V0cyBlcnJvclxuICAgICAgICBjb25zdCBlcnJvciA9IHsgcmVxdWlyZWQ6IHRydWUgfTtcbiAgICAgICAgdXJsLnNldEVycm9ycyhPYmplY3QuYXNzaWduKHt9LCB1cmwuZXJyb3JzIHx8IHt9LCBlcnJvcikpO1xuICAgICAgICBPYmplY3QuYXNzaWduKGVycm9ycywgZXJyb3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcmVtb3ZlIHByZXZpb3VzIGVycm9yXG4gICAgICAgIHRoaXMucmVtb3ZlRXJyb3JzKHVybCwgWydyZXF1aXJlZCddKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID8gZXJyb3JzIDogbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFcnJvcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBlcnJvcnM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFjb250cm9sIHx8ICFjb250cm9sLmVycm9ycykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgcmVtb3ZlZEVycm9yID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvcnMpIHtcbiAgICAgIGlmIChjb250cm9sLmVycm9yc1tlcnJvcl0pIHtcbiAgICAgICAgcmVtb3ZlZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgZGVsZXRlIGNvbnRyb2wuZXJyb3JzW2Vycm9yXTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlbW92ZWRFcnJvcikge1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoXG4gICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5sZW5ndGggPyBPYmplY3QuYXNzaWduKHt9LCBjb250cm9sLmVycm9ycykgOiBudWxsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmVtb3ZlZEVycm9yO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIHRpdGxlPVwie3sgJ1VwbG9hZCBhIGJpbmFyeScgfCB0cmFuc2xhdGUgfX1cIiBjbGFzcz1cImM4eS1yYWRpbyByYWRpby1pbmxpbmVcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjcmFkaW9cbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXBsb2FkQ2hvaWNlXCJcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgdmFsdWU9XCJ1cGxvYWRCaW5hcnlcIlxuICAgICAgICBuYW1lPVwidXBsb2FkQ2hvaWNlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAvPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgJ1VwbG9hZCBhIGJpbmFyeScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8bGFiZWwgdGl0bGU9XCJ7eyAnUHJvdmlkZSBhIGZpbGUgcGF0aCcgfCB0cmFuc2xhdGUgfX1cIiBjbGFzcz1cImM4eS1yYWRpbyByYWRpby1pbmxpbmUgbS1sLThcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjcmFkaW9cbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXBsb2FkQ2hvaWNlXCJcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgdmFsdWU9XCJ1cGxvYWRVcmxcIlxuICAgICAgICBuYW1lPVwidXBsb2FkQ2hvaWNlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAvPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7ICdQcm92aWRlIGEgZmlsZSBwYXRoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInVwbG9hZENob2ljZVwiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIid1cGxvYWRCaW5hcnknXCI+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgPGM4eS1kcm9wLWFyZWFcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkcm9wcGVkRmlsZVwiXG4gICAgICAgICAgY2xhc3M9XCJkcm9wLWFyZWEtc21cIlxuICAgICAgICAgIFt0aXRsZV09XCInRHJvcCBmaWxlIG9yIGNsaWNrIHRvIGJyb3dzZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFttYXhBbGxvd2VkRmlsZXNdPVwiMVwiXG4gICAgICAgICAgW2FjY2VwdF09XCInbWQnXCJcbiAgICAgICAgPjwvYzh5LWRyb3AtYXJlYT5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3VwbG9hZFVybCdcIj5cbiAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTQgcC1iLThcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImdsb2JlXCI+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb250ZW50VXJsXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gaHR0cDovL2V4YW1wbGUuY29tL2JpbmFyeS56aXBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cbiJdfQ==
@@ -178,7 +178,7 @@ class MarkdownWidgetConfigComponent {
178
178
  }
179
179
  initForm() {
180
180
  this.formGroup = this.formBuilder.group({
181
- contentUrl: ['', [Validators.maxLength(100)]],
181
+ contentUrl: ['', [Validators.maxLength(2000)]],
182
182
  droppedFile: [
183
183
  null,
184
184
  [
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-markdown-widget.mjs","sources":["../../widgets/markdown-widget/markdown-widget.service.ts","../../widgets/markdown-widget/markdown-widget-view/markdown-widget-view.component.ts","../../widgets/markdown-widget/markdown-widget-view/markdown-widget-view.component.html","../../widgets/markdown-widget/markdown-widget-config/markdown-widget-config.component.ts","../../widgets/markdown-widget/markdown-widget-config/markdown-widget-config.component.html","../../widgets/markdown-widget/markdown-widget.module.ts","../../widgets/markdown-widget/c8y-ngx-components-widgets-markdown-widget.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObjectBinary, InventoryBinaryService, InventoryService } from '@c8y/client';\nimport { FilesService, gettext, AlertService } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({ providedIn: 'root' })\nexport class MarkdownWidgetService {\n constructor(\n private fileService: FilesService,\n private inventory: InventoryService,\n private binary: InventoryBinaryService,\n private alert: AlertService,\n private translate: TranslateService\n ) {}\n\n async getFile(markdownBinaryId: string | null): Promise<File> {\n if (!markdownBinaryId) {\n return null;\n }\n\n try {\n const { data: markdownBinaryMo } = await this.inventory.detail(markdownBinaryId);\n const file = await this.fileService.getFile(markdownBinaryMo as IManagedObjectBinary);\n return file;\n } catch (e) {\n const text = this.translate.instant(\n gettext('Unable to retrieve binary with ID: {{ markdownBinaryId }}'),\n { markdownBinaryId }\n );\n this.alert.danger(text, e?.data);\n }\n\n return null;\n }\n\n async uploadFile(file: File): Promise<string> {\n const { data: mo } = await this.binary.create(file);\n return mo.id;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IFetchOptions, FetchClient, IFetchResponse } from '@c8y/client';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { MarkdownWidgetConfig } from '../markdown-widget.model';\nimport { MarkdownWidgetService } from '../markdown-widget.service';\n\n@Component({\n selector: 'c8y-markdown-widget-view',\n templateUrl: './markdown-widget-view.component.html'\n})\nexport class MarkdownWidgetViewComponent implements OnInit {\n @Input() config: MarkdownWidgetConfig;\n loading: boolean;\n markdown: string;\n contextPath: string;\n private readonly headers: any = { 'Content-Type': 'text/markdown', responseType: 'blob' };\n\n constructor(\n private appState: AppStateService,\n private client: FetchClient,\n private markdownWidgetService: MarkdownWidgetService\n ) {}\n\n async ngOnInit() {\n this.contextPath = this.appState.getCurrentContextPath();\n if (this.config.markdownBinaryId) {\n const readmeContent = await (\n await this.markdownWidgetService.getFile(this.config.markdownBinaryId)\n ).text();\n this.markdown = readmeContent;\n } else if (this.config.contentUrl?.toLowerCase() === '/readme.md') {\n this.markdown = await this.getReadmeFileContent();\n } else {\n this.setContentFromUrl(this.config.contentUrl);\n }\n }\n\n setContentFromUrl(url: string) {\n const req = new XMLHttpRequest();\n\n req.onreadystatechange = () => this.render(req);\n req.addEventListener('load', () => this.render(req));\n req.open('GET', url);\n req.responseType = 'text';\n req.setRequestHeader('Accept', 'text/html');\n req.send();\n }\n\n private async render(req: XMLHttpRequest) {\n if (req.readyState === 4 && req.status === 200) {\n this.markdown = req.response;\n }\n }\n\n private async getReadmeFileContent(): Promise<string> {\n const readmeFile = await this.getReadmeFile();\n\n if (readmeFile.status === 200) {\n return await readmeFile.text();\n }\n return '';\n }\n\n private async getReadmeFile(): Promise<IFetchResponse> {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.headers\n };\n const result: IFetchResponse = await this.client.fetch(\n `/apps/${this.contextPath}${this.config.contentUrl}`,\n options\n );\n return result;\n }\n}\n","<div id=\"helpContent\" class=\"p-16 p-t-0 markdown-content\" [innerHTML]=\"markdown | markdownToHtml | async\"></div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AlertService, C8yValidators, gettext, OnBeforeSave } from '@c8y/ngx-components';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n NgForm,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { MarkdownWidgetConfig } from '../markdown-widget.model';\nimport { MarkdownWidgetService } from '../markdown-widget.service';\n\n@Component({\n selector: 'c8y-markdown-widget-config',\n templateUrl: './markdown-widget-config.component.html'\n})\nexport class MarkdownWidgetConfigComponent implements OnInit, OnBeforeSave {\n @Input() config: MarkdownWidgetConfig;\n formGroup: FormGroup;\n fileFromConfig: File;\n uploadChoice: 'uploadBinary' | 'uploadUrl' = 'uploadUrl';\n loading = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private form: NgForm,\n private alert: AlertService,\n private markdownService: MarkdownWidgetService\n ) {}\n\n async onBeforeSave(config?: MarkdownWidgetConfig): Promise<boolean> {\n if (this.formGroup.invalid) {\n return false;\n }\n if (this.uploadChoice === 'uploadUrl') {\n Object.assign(config, {\n contentUrl: this.formGroup.value.contentUrl,\n markdownBinaryId: null\n });\n return true;\n }\n const fileFromForm = this.getFileFromFormValue(this.formGroup.value);\n if (fileFromForm && fileFromForm !== this.fileFromConfig) {\n try {\n const markdownBinaryId = await this.markdownService.uploadFile(fileFromForm);\n Object.assign(config, { markdownBinaryId, contentUrl: null });\n return true;\n } catch (e) {\n this.alert.danger(gettext('Unable to upload markdown file.'), e?.data);\n return false;\n }\n }\n if (!fileFromForm) {\n Object.assign(config, { contentUrl: '/readme.md', markdownBinaryId: null });\n }\n return true;\n }\n\n async ngOnInit() {\n this.initForm();\n if (this.config.markdownBinaryId) {\n this.uploadChoice = 'uploadBinary';\n this.fileFromConfig = await this.markdownService.getFile(this.config.markdownBinaryId);\n this.formGroup.patchValue({\n droppedFile: [{ file: this.fileFromConfig, name: this.fileFromConfig.name }]\n });\n }\n }\n\n onChange(value: 'uploadBinary' | 'uploadUrl') {\n this.uploadChoice = value;\n this.formGroup.controls['uploadChoice'].patchValue(value);\n }\n\n private getFileFromFormValue(formValue: any): File | null {\n const binary: any[] = formValue?.droppedFile || [];\n return binary[0]?.file || null;\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group(\n {\n contentUrl: ['', [Validators.maxLength(100)]],\n droppedFile: [\n null,\n [\n Validators.minLength(1),\n Validators.maxLength(1),\n C8yValidators.filesValidator({ maximumFileSizeInKb: 1000 })\n ]\n ],\n uploadChoice: [this.config.markdownBinaryId ? 'uploadBinary' : 'uploadUrl', []]\n },\n { validators: this.requireEitherBinaryOrUrl() }\n );\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private requireEitherBinaryOrUrl(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const url = control.get(`contentUrl`);\n const uploadBinary = control.get(`droppedFile`);\n\n const urlDefined = url && url.value !== undefined && url.value !== null;\n const uploadBinaryDefined =\n uploadBinary && uploadBinary.value !== undefined && uploadBinary.value !== null;\n\n const errors = {};\n if (this.uploadChoice === 'uploadBinary' && !uploadBinaryDefined) {\n // sets error\n const error = { required: true };\n uploadBinary.setErrors(Object.assign({}, uploadBinary.errors || {}, error));\n Object.assign(errors, error);\n } else {\n // remove previous error\n this.removeErrors(uploadBinary, ['required']);\n }\n\n if (this.uploadChoice === 'uploadUrl' && (!urlDefined || url.value === '')) {\n // sets error\n const error = { required: true };\n url.setErrors(Object.assign({}, url.errors || {}, error));\n Object.assign(errors, error);\n } else {\n // remove previous error\n this.removeErrors(url, ['required']);\n }\n\n return Object.keys(errors).length ? errors : null;\n };\n }\n\n private removeErrors(control: AbstractControl, errors: string[]): boolean {\n if (!control || !control.errors) {\n return false;\n }\n let removedError = false;\n for (const error of errors) {\n if (control.errors[error]) {\n removedError = true;\n delete control.errors[error];\n }\n }\n if (removedError) {\n control.setErrors(\n Object.keys(control.errors).length ? Object.assign({}, control.errors) : null\n );\n }\n return removedError;\n }\n}\n","<form [formGroup]=\"formGroup\" class=\"row\">\n <div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n formControlName=\"uploadChoice\"\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n (change)=\"onChange($event.target.value)\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n formControlName=\"uploadChoice\"\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n (change)=\"onChange($event.target.value)\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n </label>\n </div>\n\n <ng-container [ngSwitch]=\"uploadChoice\">\n <div *ngSwitchCase=\"'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n formControlName=\"droppedFile\"\n class=\"drop-area-sm\"\n [title]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"1\"\n [accept]=\"'md'\"\n ></c8y-drop-area>\n </c8y-form-group>\n </div>\n <div *ngSwitchCase=\"'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n formControlName=\"contentUrl\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n />\n </div>\n </div>\n </c8y-form-group>\n </div>\n </ng-container>\n</form>\n","import { NgModule } from '@angular/core';\nimport { ContextWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { CoreModule, gettext, hookComponent } from '@c8y/ngx-components';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MarkdownWidgetViewComponent } from './markdown-widget-view/markdown-widget-view.component';\nimport { MarkdownWidgetConfigComponent } from './markdown-widget-config/markdown-widget-config.component';\n\n@NgModule({\n imports: [CoreModule, ReactiveFormsModule],\n declarations: [MarkdownWidgetViewComponent, MarkdownWidgetConfigComponent],\n providers: [\n hookComponent({\n id: 'markdown',\n label: gettext('Markdown widget'),\n description: gettext(\n 'Display content provided as markdown. You can either upload a file, or provide a file path.'\n ),\n component: MarkdownWidgetViewComponent,\n configComponent: MarkdownWidgetConfigComponent,\n previewImage: 'c8y-widget-preview-img/markdown-widget.png',\n data: {\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 4\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n } as ContextWidgetConfig\n })\n ]\n})\nexport class MarkdownWidgetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.MarkdownWidgetService","i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-markdown-widget.mjs","sources":["../../widgets/markdown-widget/markdown-widget.service.ts","../../widgets/markdown-widget/markdown-widget-view/markdown-widget-view.component.ts","../../widgets/markdown-widget/markdown-widget-view/markdown-widget-view.component.html","../../widgets/markdown-widget/markdown-widget-config/markdown-widget-config.component.ts","../../widgets/markdown-widget/markdown-widget-config/markdown-widget-config.component.html","../../widgets/markdown-widget/markdown-widget.module.ts","../../widgets/markdown-widget/c8y-ngx-components-widgets-markdown-widget.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObjectBinary, InventoryBinaryService, InventoryService } from '@c8y/client';\nimport { FilesService, gettext, AlertService } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({ providedIn: 'root' })\nexport class MarkdownWidgetService {\n constructor(\n private fileService: FilesService,\n private inventory: InventoryService,\n private binary: InventoryBinaryService,\n private alert: AlertService,\n private translate: TranslateService\n ) {}\n\n async getFile(markdownBinaryId: string | null): Promise<File> {\n if (!markdownBinaryId) {\n return null;\n }\n\n try {\n const { data: markdownBinaryMo } = await this.inventory.detail(markdownBinaryId);\n const file = await this.fileService.getFile(markdownBinaryMo as IManagedObjectBinary);\n return file;\n } catch (e) {\n const text = this.translate.instant(\n gettext('Unable to retrieve binary with ID: {{ markdownBinaryId }}'),\n { markdownBinaryId }\n );\n this.alert.danger(text, e?.data);\n }\n\n return null;\n }\n\n async uploadFile(file: File): Promise<string> {\n const { data: mo } = await this.binary.create(file);\n return mo.id;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IFetchOptions, FetchClient, IFetchResponse } from '@c8y/client';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { MarkdownWidgetConfig } from '../markdown-widget.model';\nimport { MarkdownWidgetService } from '../markdown-widget.service';\n\n@Component({\n selector: 'c8y-markdown-widget-view',\n templateUrl: './markdown-widget-view.component.html'\n})\nexport class MarkdownWidgetViewComponent implements OnInit {\n @Input() config: MarkdownWidgetConfig;\n loading: boolean;\n markdown: string;\n contextPath: string;\n private readonly headers: any = { 'Content-Type': 'text/markdown', responseType: 'blob' };\n\n constructor(\n private appState: AppStateService,\n private client: FetchClient,\n private markdownWidgetService: MarkdownWidgetService\n ) {}\n\n async ngOnInit() {\n this.contextPath = this.appState.getCurrentContextPath();\n if (this.config.markdownBinaryId) {\n const readmeContent = await (\n await this.markdownWidgetService.getFile(this.config.markdownBinaryId)\n ).text();\n this.markdown = readmeContent;\n } else if (this.config.contentUrl?.toLowerCase() === '/readme.md') {\n this.markdown = await this.getReadmeFileContent();\n } else {\n this.setContentFromUrl(this.config.contentUrl);\n }\n }\n\n setContentFromUrl(url: string) {\n const req = new XMLHttpRequest();\n\n req.onreadystatechange = () => this.render(req);\n req.addEventListener('load', () => this.render(req));\n req.open('GET', url);\n req.responseType = 'text';\n req.setRequestHeader('Accept', 'text/html');\n req.send();\n }\n\n private async render(req: XMLHttpRequest) {\n if (req.readyState === 4 && req.status === 200) {\n this.markdown = req.response;\n }\n }\n\n private async getReadmeFileContent(): Promise<string> {\n const readmeFile = await this.getReadmeFile();\n\n if (readmeFile.status === 200) {\n return await readmeFile.text();\n }\n return '';\n }\n\n private async getReadmeFile(): Promise<IFetchResponse> {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.headers\n };\n const result: IFetchResponse = await this.client.fetch(\n `/apps/${this.contextPath}${this.config.contentUrl}`,\n options\n );\n return result;\n }\n}\n","<div id=\"helpContent\" class=\"p-16 p-t-0 markdown-content\" [innerHTML]=\"markdown | markdownToHtml | async\"></div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AlertService, C8yValidators, gettext, OnBeforeSave } from '@c8y/ngx-components';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n NgForm,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { MarkdownWidgetConfig } from '../markdown-widget.model';\nimport { MarkdownWidgetService } from '../markdown-widget.service';\n\n@Component({\n selector: 'c8y-markdown-widget-config',\n templateUrl: './markdown-widget-config.component.html'\n})\nexport class MarkdownWidgetConfigComponent implements OnInit, OnBeforeSave {\n @Input() config: MarkdownWidgetConfig;\n formGroup: FormGroup;\n fileFromConfig: File;\n uploadChoice: 'uploadBinary' | 'uploadUrl' = 'uploadUrl';\n loading = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private form: NgForm,\n private alert: AlertService,\n private markdownService: MarkdownWidgetService\n ) {}\n\n async onBeforeSave(config?: MarkdownWidgetConfig): Promise<boolean> {\n if (this.formGroup.invalid) {\n return false;\n }\n if (this.uploadChoice === 'uploadUrl') {\n Object.assign(config, {\n contentUrl: this.formGroup.value.contentUrl,\n markdownBinaryId: null\n });\n return true;\n }\n const fileFromForm = this.getFileFromFormValue(this.formGroup.value);\n if (fileFromForm && fileFromForm !== this.fileFromConfig) {\n try {\n const markdownBinaryId = await this.markdownService.uploadFile(fileFromForm);\n Object.assign(config, { markdownBinaryId, contentUrl: null });\n return true;\n } catch (e) {\n this.alert.danger(gettext('Unable to upload markdown file.'), e?.data);\n return false;\n }\n }\n if (!fileFromForm) {\n Object.assign(config, { contentUrl: '/readme.md', markdownBinaryId: null });\n }\n return true;\n }\n\n async ngOnInit() {\n this.initForm();\n if (this.config.markdownBinaryId) {\n this.uploadChoice = 'uploadBinary';\n this.fileFromConfig = await this.markdownService.getFile(this.config.markdownBinaryId);\n this.formGroup.patchValue({\n droppedFile: [{ file: this.fileFromConfig, name: this.fileFromConfig.name }]\n });\n }\n }\n\n onChange(value: 'uploadBinary' | 'uploadUrl') {\n this.uploadChoice = value;\n this.formGroup.controls['uploadChoice'].patchValue(value);\n }\n\n private getFileFromFormValue(formValue: any): File | null {\n const binary: any[] = formValue?.droppedFile || [];\n return binary[0]?.file || null;\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group(\n {\n contentUrl: ['', [Validators.maxLength(2000)]],\n droppedFile: [\n null,\n [\n Validators.minLength(1),\n Validators.maxLength(1),\n C8yValidators.filesValidator({ maximumFileSizeInKb: 1000 })\n ]\n ],\n uploadChoice: [this.config.markdownBinaryId ? 'uploadBinary' : 'uploadUrl', []]\n },\n { validators: this.requireEitherBinaryOrUrl() }\n );\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private requireEitherBinaryOrUrl(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const url = control.get(`contentUrl`);\n const uploadBinary = control.get(`droppedFile`);\n\n const urlDefined = url && url.value !== undefined && url.value !== null;\n const uploadBinaryDefined =\n uploadBinary && uploadBinary.value !== undefined && uploadBinary.value !== null;\n\n const errors = {};\n if (this.uploadChoice === 'uploadBinary' && !uploadBinaryDefined) {\n // sets error\n const error = { required: true };\n uploadBinary.setErrors(Object.assign({}, uploadBinary.errors || {}, error));\n Object.assign(errors, error);\n } else {\n // remove previous error\n this.removeErrors(uploadBinary, ['required']);\n }\n\n if (this.uploadChoice === 'uploadUrl' && (!urlDefined || url.value === '')) {\n // sets error\n const error = { required: true };\n url.setErrors(Object.assign({}, url.errors || {}, error));\n Object.assign(errors, error);\n } else {\n // remove previous error\n this.removeErrors(url, ['required']);\n }\n\n return Object.keys(errors).length ? errors : null;\n };\n }\n\n private removeErrors(control: AbstractControl, errors: string[]): boolean {\n if (!control || !control.errors) {\n return false;\n }\n let removedError = false;\n for (const error of errors) {\n if (control.errors[error]) {\n removedError = true;\n delete control.errors[error];\n }\n }\n if (removedError) {\n control.setErrors(\n Object.keys(control.errors).length ? Object.assign({}, control.errors) : null\n );\n }\n return removedError;\n }\n}\n","<form [formGroup]=\"formGroup\" class=\"row\">\n <div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n formControlName=\"uploadChoice\"\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n (change)=\"onChange($event.target.value)\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n formControlName=\"uploadChoice\"\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n (change)=\"onChange($event.target.value)\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n </label>\n </div>\n\n <ng-container [ngSwitch]=\"uploadChoice\">\n <div *ngSwitchCase=\"'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n formControlName=\"droppedFile\"\n class=\"drop-area-sm\"\n [title]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"1\"\n [accept]=\"'md'\"\n ></c8y-drop-area>\n </c8y-form-group>\n </div>\n <div *ngSwitchCase=\"'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n formControlName=\"contentUrl\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n />\n </div>\n </div>\n </c8y-form-group>\n </div>\n </ng-container>\n</form>\n","import { NgModule } from '@angular/core';\nimport { ContextWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { CoreModule, gettext, hookComponent } from '@c8y/ngx-components';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MarkdownWidgetViewComponent } from './markdown-widget-view/markdown-widget-view.component';\nimport { MarkdownWidgetConfigComponent } from './markdown-widget-config/markdown-widget-config.component';\n\n@NgModule({\n imports: [CoreModule, ReactiveFormsModule],\n declarations: [MarkdownWidgetViewComponent, MarkdownWidgetConfigComponent],\n providers: [\n hookComponent({\n id: 'markdown',\n label: gettext('Markdown widget'),\n description: gettext(\n 'Display content provided as markdown. You can either upload a file, or provide a file path.'\n ),\n component: MarkdownWidgetViewComponent,\n configComponent: MarkdownWidgetConfigComponent,\n previewImage: 'c8y-widget-preview-img/markdown-widget.png',\n data: {\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 4\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n } as ContextWidgetConfig\n })\n ]\n})\nexport class MarkdownWidgetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.MarkdownWidgetService","i1","i2"],"mappings":"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"}
@@ -159,7 +159,7 @@ class MarkdownWidgetConfigComponent {
159
159
  }
160
160
  initForm() {
161
161
  this.formGroup = this.formBuilder.group({
162
- contentUrl: ['', [Validators.maxLength(100)]],
162
+ contentUrl: ['', [Validators.maxLength(2000)]],
163
163
  droppedFile: [
164
164
  null,
165
165
  [
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-markdown-widget.mjs","sources":["../../widgets/markdown-widget/markdown-widget.service.ts","../../widgets/markdown-widget/markdown-widget-view/markdown-widget-view.component.ts","../../widgets/markdown-widget/markdown-widget-view/markdown-widget-view.component.html","../../widgets/markdown-widget/markdown-widget-config/markdown-widget-config.component.ts","../../widgets/markdown-widget/markdown-widget-config/markdown-widget-config.component.html","../../widgets/markdown-widget/markdown-widget.module.ts","../../widgets/markdown-widget/c8y-ngx-components-widgets-markdown-widget.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObjectBinary, InventoryBinaryService, InventoryService } from '@c8y/client';\nimport { FilesService, gettext, AlertService } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({ providedIn: 'root' })\nexport class MarkdownWidgetService {\n constructor(\n private fileService: FilesService,\n private inventory: InventoryService,\n private binary: InventoryBinaryService,\n private alert: AlertService,\n private translate: TranslateService\n ) {}\n\n async getFile(markdownBinaryId: string | null): Promise<File> {\n if (!markdownBinaryId) {\n return null;\n }\n\n try {\n const { data: markdownBinaryMo } = await this.inventory.detail(markdownBinaryId);\n const file = await this.fileService.getFile(markdownBinaryMo as IManagedObjectBinary);\n return file;\n } catch (e) {\n const text = this.translate.instant(\n gettext('Unable to retrieve binary with ID: {{ markdownBinaryId }}'),\n { markdownBinaryId }\n );\n this.alert.danger(text, e?.data);\n }\n\n return null;\n }\n\n async uploadFile(file: File): Promise<string> {\n const { data: mo } = await this.binary.create(file);\n return mo.id;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IFetchOptions, FetchClient, IFetchResponse } from '@c8y/client';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { MarkdownWidgetConfig } from '../markdown-widget.model';\nimport { MarkdownWidgetService } from '../markdown-widget.service';\n\n@Component({\n selector: 'c8y-markdown-widget-view',\n templateUrl: './markdown-widget-view.component.html'\n})\nexport class MarkdownWidgetViewComponent implements OnInit {\n @Input() config: MarkdownWidgetConfig;\n loading: boolean;\n markdown: string;\n contextPath: string;\n private readonly headers: any = { 'Content-Type': 'text/markdown', responseType: 'blob' };\n\n constructor(\n private appState: AppStateService,\n private client: FetchClient,\n private markdownWidgetService: MarkdownWidgetService\n ) {}\n\n async ngOnInit() {\n this.contextPath = this.appState.getCurrentContextPath();\n if (this.config.markdownBinaryId) {\n const readmeContent = await (\n await this.markdownWidgetService.getFile(this.config.markdownBinaryId)\n ).text();\n this.markdown = readmeContent;\n } else if (this.config.contentUrl?.toLowerCase() === '/readme.md') {\n this.markdown = await this.getReadmeFileContent();\n } else {\n this.setContentFromUrl(this.config.contentUrl);\n }\n }\n\n setContentFromUrl(url: string) {\n const req = new XMLHttpRequest();\n\n req.onreadystatechange = () => this.render(req);\n req.addEventListener('load', () => this.render(req));\n req.open('GET', url);\n req.responseType = 'text';\n req.setRequestHeader('Accept', 'text/html');\n req.send();\n }\n\n private async render(req: XMLHttpRequest) {\n if (req.readyState === 4 && req.status === 200) {\n this.markdown = req.response;\n }\n }\n\n private async getReadmeFileContent(): Promise<string> {\n const readmeFile = await this.getReadmeFile();\n\n if (readmeFile.status === 200) {\n return await readmeFile.text();\n }\n return '';\n }\n\n private async getReadmeFile(): Promise<IFetchResponse> {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.headers\n };\n const result: IFetchResponse = await this.client.fetch(\n `/apps/${this.contextPath}${this.config.contentUrl}`,\n options\n );\n return result;\n }\n}\n","<div id=\"helpContent\" class=\"p-16 p-t-0 markdown-content\" [innerHTML]=\"markdown | markdownToHtml | async\"></div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AlertService, C8yValidators, gettext, OnBeforeSave } from '@c8y/ngx-components';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n NgForm,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { MarkdownWidgetConfig } from '../markdown-widget.model';\nimport { MarkdownWidgetService } from '../markdown-widget.service';\n\n@Component({\n selector: 'c8y-markdown-widget-config',\n templateUrl: './markdown-widget-config.component.html'\n})\nexport class MarkdownWidgetConfigComponent implements OnInit, OnBeforeSave {\n @Input() config: MarkdownWidgetConfig;\n formGroup: FormGroup;\n fileFromConfig: File;\n uploadChoice: 'uploadBinary' | 'uploadUrl' = 'uploadUrl';\n loading = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private form: NgForm,\n private alert: AlertService,\n private markdownService: MarkdownWidgetService\n ) {}\n\n async onBeforeSave(config?: MarkdownWidgetConfig): Promise<boolean> {\n if (this.formGroup.invalid) {\n return false;\n }\n if (this.uploadChoice === 'uploadUrl') {\n Object.assign(config, {\n contentUrl: this.formGroup.value.contentUrl,\n markdownBinaryId: null\n });\n return true;\n }\n const fileFromForm = this.getFileFromFormValue(this.formGroup.value);\n if (fileFromForm && fileFromForm !== this.fileFromConfig) {\n try {\n const markdownBinaryId = await this.markdownService.uploadFile(fileFromForm);\n Object.assign(config, { markdownBinaryId, contentUrl: null });\n return true;\n } catch (e) {\n this.alert.danger(gettext('Unable to upload markdown file.'), e?.data);\n return false;\n }\n }\n if (!fileFromForm) {\n Object.assign(config, { contentUrl: '/readme.md', markdownBinaryId: null });\n }\n return true;\n }\n\n async ngOnInit() {\n this.initForm();\n if (this.config.markdownBinaryId) {\n this.uploadChoice = 'uploadBinary';\n this.fileFromConfig = await this.markdownService.getFile(this.config.markdownBinaryId);\n this.formGroup.patchValue({\n droppedFile: [{ file: this.fileFromConfig, name: this.fileFromConfig.name }]\n });\n }\n }\n\n onChange(value: 'uploadBinary' | 'uploadUrl') {\n this.uploadChoice = value;\n this.formGroup.controls['uploadChoice'].patchValue(value);\n }\n\n private getFileFromFormValue(formValue: any): File | null {\n const binary: any[] = formValue?.droppedFile || [];\n return binary[0]?.file || null;\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group(\n {\n contentUrl: ['', [Validators.maxLength(100)]],\n droppedFile: [\n null,\n [\n Validators.minLength(1),\n Validators.maxLength(1),\n C8yValidators.filesValidator({ maximumFileSizeInKb: 1000 })\n ]\n ],\n uploadChoice: [this.config.markdownBinaryId ? 'uploadBinary' : 'uploadUrl', []]\n },\n { validators: this.requireEitherBinaryOrUrl() }\n );\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private requireEitherBinaryOrUrl(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const url = control.get(`contentUrl`);\n const uploadBinary = control.get(`droppedFile`);\n\n const urlDefined = url && url.value !== undefined && url.value !== null;\n const uploadBinaryDefined =\n uploadBinary && uploadBinary.value !== undefined && uploadBinary.value !== null;\n\n const errors = {};\n if (this.uploadChoice === 'uploadBinary' && !uploadBinaryDefined) {\n // sets error\n const error = { required: true };\n uploadBinary.setErrors(Object.assign({}, uploadBinary.errors || {}, error));\n Object.assign(errors, error);\n } else {\n // remove previous error\n this.removeErrors(uploadBinary, ['required']);\n }\n\n if (this.uploadChoice === 'uploadUrl' && (!urlDefined || url.value === '')) {\n // sets error\n const error = { required: true };\n url.setErrors(Object.assign({}, url.errors || {}, error));\n Object.assign(errors, error);\n } else {\n // remove previous error\n this.removeErrors(url, ['required']);\n }\n\n return Object.keys(errors).length ? errors : null;\n };\n }\n\n private removeErrors(control: AbstractControl, errors: string[]): boolean {\n if (!control || !control.errors) {\n return false;\n }\n let removedError = false;\n for (const error of errors) {\n if (control.errors[error]) {\n removedError = true;\n delete control.errors[error];\n }\n }\n if (removedError) {\n control.setErrors(\n Object.keys(control.errors).length ? Object.assign({}, control.errors) : null\n );\n }\n return removedError;\n }\n}\n","<form [formGroup]=\"formGroup\" class=\"row\">\n <div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n formControlName=\"uploadChoice\"\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n (change)=\"onChange($event.target.value)\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n formControlName=\"uploadChoice\"\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n (change)=\"onChange($event.target.value)\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n </label>\n </div>\n\n <ng-container [ngSwitch]=\"uploadChoice\">\n <div *ngSwitchCase=\"'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n formControlName=\"droppedFile\"\n class=\"drop-area-sm\"\n [title]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"1\"\n [accept]=\"'md'\"\n ></c8y-drop-area>\n </c8y-form-group>\n </div>\n <div *ngSwitchCase=\"'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n formControlName=\"contentUrl\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n />\n </div>\n </div>\n </c8y-form-group>\n </div>\n </ng-container>\n</form>\n","import { NgModule } from '@angular/core';\nimport { ContextWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { CoreModule, gettext, hookComponent } from '@c8y/ngx-components';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MarkdownWidgetViewComponent } from './markdown-widget-view/markdown-widget-view.component';\nimport { MarkdownWidgetConfigComponent } from './markdown-widget-config/markdown-widget-config.component';\n\n@NgModule({\n imports: [CoreModule, ReactiveFormsModule],\n declarations: [MarkdownWidgetViewComponent, MarkdownWidgetConfigComponent],\n providers: [\n hookComponent({\n id: 'markdown',\n label: gettext('Markdown widget'),\n description: gettext(\n 'Display content provided as markdown. You can either upload a file, or provide a file path.'\n ),\n component: MarkdownWidgetViewComponent,\n configComponent: MarkdownWidgetConfigComponent,\n previewImage: 'c8y-widget-preview-img/markdown-widget.png',\n data: {\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 4\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n } as ContextWidgetConfig\n })\n ]\n})\nexport class MarkdownWidgetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.MarkdownWidgetService","i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-markdown-widget.mjs","sources":["../../widgets/markdown-widget/markdown-widget.service.ts","../../widgets/markdown-widget/markdown-widget-view/markdown-widget-view.component.ts","../../widgets/markdown-widget/markdown-widget-view/markdown-widget-view.component.html","../../widgets/markdown-widget/markdown-widget-config/markdown-widget-config.component.ts","../../widgets/markdown-widget/markdown-widget-config/markdown-widget-config.component.html","../../widgets/markdown-widget/markdown-widget.module.ts","../../widgets/markdown-widget/c8y-ngx-components-widgets-markdown-widget.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObjectBinary, InventoryBinaryService, InventoryService } from '@c8y/client';\nimport { FilesService, gettext, AlertService } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({ providedIn: 'root' })\nexport class MarkdownWidgetService {\n constructor(\n private fileService: FilesService,\n private inventory: InventoryService,\n private binary: InventoryBinaryService,\n private alert: AlertService,\n private translate: TranslateService\n ) {}\n\n async getFile(markdownBinaryId: string | null): Promise<File> {\n if (!markdownBinaryId) {\n return null;\n }\n\n try {\n const { data: markdownBinaryMo } = await this.inventory.detail(markdownBinaryId);\n const file = await this.fileService.getFile(markdownBinaryMo as IManagedObjectBinary);\n return file;\n } catch (e) {\n const text = this.translate.instant(\n gettext('Unable to retrieve binary with ID: {{ markdownBinaryId }}'),\n { markdownBinaryId }\n );\n this.alert.danger(text, e?.data);\n }\n\n return null;\n }\n\n async uploadFile(file: File): Promise<string> {\n const { data: mo } = await this.binary.create(file);\n return mo.id;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IFetchOptions, FetchClient, IFetchResponse } from '@c8y/client';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { MarkdownWidgetConfig } from '../markdown-widget.model';\nimport { MarkdownWidgetService } from '../markdown-widget.service';\n\n@Component({\n selector: 'c8y-markdown-widget-view',\n templateUrl: './markdown-widget-view.component.html'\n})\nexport class MarkdownWidgetViewComponent implements OnInit {\n @Input() config: MarkdownWidgetConfig;\n loading: boolean;\n markdown: string;\n contextPath: string;\n private readonly headers: any = { 'Content-Type': 'text/markdown', responseType: 'blob' };\n\n constructor(\n private appState: AppStateService,\n private client: FetchClient,\n private markdownWidgetService: MarkdownWidgetService\n ) {}\n\n async ngOnInit() {\n this.contextPath = this.appState.getCurrentContextPath();\n if (this.config.markdownBinaryId) {\n const readmeContent = await (\n await this.markdownWidgetService.getFile(this.config.markdownBinaryId)\n ).text();\n this.markdown = readmeContent;\n } else if (this.config.contentUrl?.toLowerCase() === '/readme.md') {\n this.markdown = await this.getReadmeFileContent();\n } else {\n this.setContentFromUrl(this.config.contentUrl);\n }\n }\n\n setContentFromUrl(url: string) {\n const req = new XMLHttpRequest();\n\n req.onreadystatechange = () => this.render(req);\n req.addEventListener('load', () => this.render(req));\n req.open('GET', url);\n req.responseType = 'text';\n req.setRequestHeader('Accept', 'text/html');\n req.send();\n }\n\n private async render(req: XMLHttpRequest) {\n if (req.readyState === 4 && req.status === 200) {\n this.markdown = req.response;\n }\n }\n\n private async getReadmeFileContent(): Promise<string> {\n const readmeFile = await this.getReadmeFile();\n\n if (readmeFile.status === 200) {\n return await readmeFile.text();\n }\n return '';\n }\n\n private async getReadmeFile(): Promise<IFetchResponse> {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.headers\n };\n const result: IFetchResponse = await this.client.fetch(\n `/apps/${this.contextPath}${this.config.contentUrl}`,\n options\n );\n return result;\n }\n}\n","<div id=\"helpContent\" class=\"p-16 p-t-0 markdown-content\" [innerHTML]=\"markdown | markdownToHtml | async\"></div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AlertService, C8yValidators, gettext, OnBeforeSave } from '@c8y/ngx-components';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n NgForm,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { MarkdownWidgetConfig } from '../markdown-widget.model';\nimport { MarkdownWidgetService } from '../markdown-widget.service';\n\n@Component({\n selector: 'c8y-markdown-widget-config',\n templateUrl: './markdown-widget-config.component.html'\n})\nexport class MarkdownWidgetConfigComponent implements OnInit, OnBeforeSave {\n @Input() config: MarkdownWidgetConfig;\n formGroup: FormGroup;\n fileFromConfig: File;\n uploadChoice: 'uploadBinary' | 'uploadUrl' = 'uploadUrl';\n loading = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private form: NgForm,\n private alert: AlertService,\n private markdownService: MarkdownWidgetService\n ) {}\n\n async onBeforeSave(config?: MarkdownWidgetConfig): Promise<boolean> {\n if (this.formGroup.invalid) {\n return false;\n }\n if (this.uploadChoice === 'uploadUrl') {\n Object.assign(config, {\n contentUrl: this.formGroup.value.contentUrl,\n markdownBinaryId: null\n });\n return true;\n }\n const fileFromForm = this.getFileFromFormValue(this.formGroup.value);\n if (fileFromForm && fileFromForm !== this.fileFromConfig) {\n try {\n const markdownBinaryId = await this.markdownService.uploadFile(fileFromForm);\n Object.assign(config, { markdownBinaryId, contentUrl: null });\n return true;\n } catch (e) {\n this.alert.danger(gettext('Unable to upload markdown file.'), e?.data);\n return false;\n }\n }\n if (!fileFromForm) {\n Object.assign(config, { contentUrl: '/readme.md', markdownBinaryId: null });\n }\n return true;\n }\n\n async ngOnInit() {\n this.initForm();\n if (this.config.markdownBinaryId) {\n this.uploadChoice = 'uploadBinary';\n this.fileFromConfig = await this.markdownService.getFile(this.config.markdownBinaryId);\n this.formGroup.patchValue({\n droppedFile: [{ file: this.fileFromConfig, name: this.fileFromConfig.name }]\n });\n }\n }\n\n onChange(value: 'uploadBinary' | 'uploadUrl') {\n this.uploadChoice = value;\n this.formGroup.controls['uploadChoice'].patchValue(value);\n }\n\n private getFileFromFormValue(formValue: any): File | null {\n const binary: any[] = formValue?.droppedFile || [];\n return binary[0]?.file || null;\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group(\n {\n contentUrl: ['', [Validators.maxLength(2000)]],\n droppedFile: [\n null,\n [\n Validators.minLength(1),\n Validators.maxLength(1),\n C8yValidators.filesValidator({ maximumFileSizeInKb: 1000 })\n ]\n ],\n uploadChoice: [this.config.markdownBinaryId ? 'uploadBinary' : 'uploadUrl', []]\n },\n { validators: this.requireEitherBinaryOrUrl() }\n );\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private requireEitherBinaryOrUrl(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const url = control.get(`contentUrl`);\n const uploadBinary = control.get(`droppedFile`);\n\n const urlDefined = url && url.value !== undefined && url.value !== null;\n const uploadBinaryDefined =\n uploadBinary && uploadBinary.value !== undefined && uploadBinary.value !== null;\n\n const errors = {};\n if (this.uploadChoice === 'uploadBinary' && !uploadBinaryDefined) {\n // sets error\n const error = { required: true };\n uploadBinary.setErrors(Object.assign({}, uploadBinary.errors || {}, error));\n Object.assign(errors, error);\n } else {\n // remove previous error\n this.removeErrors(uploadBinary, ['required']);\n }\n\n if (this.uploadChoice === 'uploadUrl' && (!urlDefined || url.value === '')) {\n // sets error\n const error = { required: true };\n url.setErrors(Object.assign({}, url.errors || {}, error));\n Object.assign(errors, error);\n } else {\n // remove previous error\n this.removeErrors(url, ['required']);\n }\n\n return Object.keys(errors).length ? errors : null;\n };\n }\n\n private removeErrors(control: AbstractControl, errors: string[]): boolean {\n if (!control || !control.errors) {\n return false;\n }\n let removedError = false;\n for (const error of errors) {\n if (control.errors[error]) {\n removedError = true;\n delete control.errors[error];\n }\n }\n if (removedError) {\n control.setErrors(\n Object.keys(control.errors).length ? Object.assign({}, control.errors) : null\n );\n }\n return removedError;\n }\n}\n","<form [formGroup]=\"formGroup\" class=\"row\">\n <div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n formControlName=\"uploadChoice\"\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n (change)=\"onChange($event.target.value)\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n formControlName=\"uploadChoice\"\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n (change)=\"onChange($event.target.value)\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n </label>\n </div>\n\n <ng-container [ngSwitch]=\"uploadChoice\">\n <div *ngSwitchCase=\"'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n formControlName=\"droppedFile\"\n class=\"drop-area-sm\"\n [title]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"1\"\n [accept]=\"'md'\"\n ></c8y-drop-area>\n </c8y-form-group>\n </div>\n <div *ngSwitchCase=\"'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n formControlName=\"contentUrl\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n />\n </div>\n </div>\n </c8y-form-group>\n </div>\n </ng-container>\n</form>\n","import { NgModule } from '@angular/core';\nimport { ContextWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { CoreModule, gettext, hookComponent } from '@c8y/ngx-components';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MarkdownWidgetViewComponent } from './markdown-widget-view/markdown-widget-view.component';\nimport { MarkdownWidgetConfigComponent } from './markdown-widget-config/markdown-widget-config.component';\n\n@NgModule({\n imports: [CoreModule, ReactiveFormsModule],\n declarations: [MarkdownWidgetViewComponent, MarkdownWidgetConfigComponent],\n providers: [\n hookComponent({\n id: 'markdown',\n label: gettext('Markdown widget'),\n description: gettext(\n 'Display content provided as markdown. You can either upload a file, or provide a file path.'\n ),\n component: MarkdownWidgetViewComponent,\n configComponent: MarkdownWidgetConfigComponent,\n previewImage: 'c8y-widget-preview-img/markdown-widget.png',\n data: {\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 4\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n } as ContextWidgetConfig\n })\n ]\n})\nexport class MarkdownWidgetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.MarkdownWidgetService","i1","i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ngx-components",
3
- "version": "1017.0.96",
3
+ "version": "1017.0.97",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "Angular modules for Cumulocity IoT applications",
@@ -22,7 +22,7 @@
22
22
  "rxjs": "~6.6.3"
23
23
  },
24
24
  "dependencies": {
25
- "@c8y/client": "1017.0.96",
25
+ "@c8y/client": "1017.0.97",
26
26
  "@ngx-translate/core": "14.0.0",
27
27
  "@ngx-translate/http-loader": "7.0.0",
28
28
  "@ngx-formly/core": "5.10.13",