UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

68 lines 10.7 kB
import { Component, Input } from '@angular/core'; import { FetchClient } from '@c8y/client'; import { AppStateService, MarkdownToHtmlPipe } from '@c8y/ngx-components'; import { MarkdownWidgetService } from '../markdown-widget.service'; import { AsyncPipe } from '@angular/common'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/ngx-components"; import * as i2 from "@c8y/client"; import * as i3 from "../markdown-widget.service"; export class MarkdownWidgetViewComponent { constructor(appState, client, markdownWidgetService) { this.appState = appState; this.client = client; this.markdownWidgetService = markdownWidgetService; this.headers = { 'Content-Type': 'text/markdown', responseType: 'blob' }; } async ngOnInit() { this.contextPath = this.appState.getCurrentContextPath(); if (this.config.markdownBinaryId) { const readmeContent = await (await this.markdownWidgetService.getFile(this.config.markdownBinaryId)).text(); this.markdown = readmeContent; } else if (this.config.contentUrl?.toLowerCase() === '/readme.md') { this.markdown = await this.getReadmeFileContent(); } else { this.setContentFromUrl(this.config.contentUrl); } } setContentFromUrl(url) { const req = new XMLHttpRequest(); req.onreadystatechange = () => this.render(req); req.addEventListener('load', () => this.render(req)); req.open('GET', url); req.responseType = 'text'; req.setRequestHeader('Accept', 'text/html'); req.send(); } async render(req) { if (req.readyState === 4 && req.status === 200) { this.markdown = req.response; } } async getReadmeFileContent() { const readmeFile = await this.getReadmeFile(); if (readmeFile.status === 200) { return await readmeFile.text(); } return ''; } async getReadmeFile() { const options = { method: 'GET', headers: this.headers }; const result = await this.client.fetch(`/apps/${this.contextPath}${this.config.contentUrl}`, options); return result; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkdownWidgetViewComponent, deps: [{ token: i1.AppStateService }, { token: i2.FetchClient }, { token: i3.MarkdownWidgetService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MarkdownWidgetViewComponent, isStandalone: true, selector: "c8y-markdown-widget-view", inputs: { config: "config" }, ngImport: i0, template: "<div id=\"helpContent\" class=\"p-16 p-t-0 markdown-content\" [innerHTML]=\"markdown | markdownToHtml | async\"></div>\n", dependencies: [{ kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkdownWidgetViewComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-markdown-widget-view', standalone: true, imports: [MarkdownToHtmlPipe, AsyncPipe], template: "<div id=\"helpContent\" class=\"p-16 p-t-0 markdown-content\" [innerHTML]=\"markdown | markdownToHtml | async\"></div>\n" }] }], ctorParameters: () => [{ type: i1.AppStateService }, { type: i2.FetchClient }, { type: i3.MarkdownWidgetService }], propDecorators: { config: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24td2lkZ2V0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvbWFya2Rvd24vbWFya2Rvd24td2lkZ2V0LXZpZXcvbWFya2Rvd24td2lkZ2V0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvbWFya2Rvd24vbWFya2Rvd24td2lkZ2V0LXZpZXcvbWFya2Rvd24td2lkZ2V0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFpQixXQUFXLEVBQWtCLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBUTVDLE1BQU0sT0FBTywyQkFBMkI7SUFPdEMsWUFDVSxRQUF5QixFQUN6QixNQUFtQixFQUNuQixxQkFBNEM7UUFGNUMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBTHJDLFlBQU8sR0FBUSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBTXZGLENBQUM7SUFFSixLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FDMUIsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FDdkUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO1FBQ2hDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBVztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBRWpDLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBbUI7UUFDdEMsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxvQkFBb0I7UUFDaEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFOUMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzlCLE9BQU8sTUFBTSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVPLEtBQUssQ0FBQyxhQUFhO1FBQ3pCLE1BQU0sT0FBTyxHQUFrQjtZQUM3QixNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQW1CLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ3BELFNBQVMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUNwRCxPQUFPLENBQ1IsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7K0dBL0RVLDJCQUEyQjttR0FBM0IsMkJBQTJCLGtIQ2J4QywwSEFDQSx1Q0RVWSxrQkFBa0Isa0RBQUUsU0FBUzs7NEZBRTVCLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FFeEIsSUFBSSxXQUNQLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDO2tKQUcvQixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElGZXRjaE9wdGlvbnMsIEZldGNoQ2xpZW50LCBJRmV0Y2hSZXNwb25zZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgTWFya2Rvd25Ub0h0bWxQaXBlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNYXJrZG93bldpZGdldENvbmZpZyB9IGZyb20gJy4uL21hcmtkb3duLXdpZGdldC5tb2RlbCc7XG5pbXBvcnQgeyBNYXJrZG93bldpZGdldFNlcnZpY2UgfSBmcm9tICcuLi9tYXJrZG93bi13aWRnZXQuc2VydmljZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbWFya2Rvd24td2lkZ2V0LXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24td2lkZ2V0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWFya2Rvd25Ub0h0bWxQaXBlLCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIE1hcmtkb3duV2lkZ2V0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWFya2Rvd25XaWRnZXRDb25maWc7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIG1hcmtkb3duOiBzdHJpbmc7XG4gIGNvbnRleHRQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyczogYW55ID0geyAnQ29udGVudC1UeXBlJzogJ3RleHQvbWFya2Rvd24nLCByZXNwb25zZVR5cGU6ICdibG9iJyB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNsaWVudDogRmV0Y2hDbGllbnQsXG4gICAgcHJpdmF0ZSBtYXJrZG93bldpZGdldFNlcnZpY2U6IE1hcmtkb3duV2lkZ2V0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuYXBwU3RhdGUuZ2V0Q3VycmVudENvbnRleHRQYXRoKCk7XG4gICAgaWYgKHRoaXMuY29uZmlnLm1hcmtkb3duQmluYXJ5SWQpIHtcbiAgICAgIGNvbnN0IHJlYWRtZUNvbnRlbnQgPSBhd2FpdCAoXG4gICAgICAgIGF3YWl0IHRoaXMubWFya2Rvd25XaWRnZXRTZXJ2aWNlLmdldEZpbGUodGhpcy5jb25maWcubWFya2Rvd25CaW5hcnlJZClcbiAgICAgICkudGV4dCgpO1xuICAgICAgdGhpcy5tYXJrZG93biA9IHJlYWRtZUNvbnRlbnQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5jb250ZW50VXJsPy50b0xvd2VyQ2FzZSgpID09PSAnL3JlYWRtZS5tZCcpIHtcbiAgICAgIHRoaXMubWFya2Rvd24gPSBhd2FpdCB0aGlzLmdldFJlYWRtZUZpbGVDb250ZW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Q29udGVudEZyb21VcmwodGhpcy5jb25maWcuY29udGVudFVybCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29udGVudEZyb21VcmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB0aGlzLnJlbmRlcihyZXEpO1xuICAgIHJlcS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gdGhpcy5yZW5kZXIocmVxKSk7XG4gICAgcmVxLm9wZW4oJ0dFVCcsIHVybCk7XG4gICAgcmVxLnJlc3BvbnNlVHlwZSA9ICd0ZXh0JztcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ3RleHQvaHRtbCcpO1xuICAgIHJlcS5zZW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlbmRlcihyZXE6IFhNTEh0dHBSZXF1ZXN0KSB7XG4gICAgaWYgKHJlcS5yZWFkeVN0YXRlID09PSA0ICYmIHJlcS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgdGhpcy5tYXJrZG93biA9IHJlcS5yZXNwb25zZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFJlYWRtZUZpbGVDb250ZW50KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVhZG1lRmlsZSA9IGF3YWl0IHRoaXMuZ2V0UmVhZG1lRmlsZSgpO1xuXG4gICAgaWYgKHJlYWRtZUZpbGUuc3RhdHVzID09PSAyMDApIHtcbiAgICAgIHJldHVybiBhd2FpdCByZWFkbWVGaWxlLnRleHQoKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWFkbWVGaWxlKCk6IFByb21pc2U8SUZldGNoUmVzcG9uc2U+IHtcbiAgICBjb25zdCBvcHRpb25zOiBJRmV0Y2hPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgIH07XG4gICAgY29uc3QgcmVzdWx0OiBJRmV0Y2hSZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKFxuICAgICAgYC9hcHBzLyR7dGhpcy5jb250ZXh0UGF0aH0ke3RoaXMuY29uZmlnLmNvbnRlbnRVcmx9YCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJoZWxwQ29udGVudFwiIGNsYXNzPVwicC0xNiBwLXQtMCBtYXJrZG93bi1jb250ZW50XCIgW2lubmVySFRNTF09XCJtYXJrZG93biB8IG1hcmtkb3duVG9IdG1sIHwgYXN5bmNcIj48L2Rpdj5cbiJdfQ==