UNPKG

@nova-ui/dashboards

Version:

Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and

95 lines 13.7 kB
// © 2022 SolarWinds Worldwide, LLC. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. import { DOCUMENT } from "@angular/common"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Inject, Input, SecurityContext, ViewChild, } from "@angular/core"; import { DomSanitizer } from "@angular/platform-browser"; import { EmbeddedContentMode } from "../types"; import * as i0 from "@angular/core"; import * as i1 from "@angular/platform-browser"; /* @dynamic */ export class EmbeddedContentComponent { static { this.lateLoadKey = "EmbeddedContentComponent"; } constructor(changeDetector, document, domSanitizer) { this.changeDetector = changeDetector; this.document = document; this.domSanitizer = domSanitizer; this.sanitized = true; this.elementClass = ""; } ngOnInit() { this.validateAndApplyEmbeddedContent(); } ngOnChanges(changes) { if (changes.customEmbeddedContent && !changes.customEmbeddedContent.firstChange) { this.validateAndApplyEmbeddedContent(); } } validateAndApplyEmbeddedContent() { const context = this.sanitized && this.sanitizeContext(this.mode === EmbeddedContentMode.URL ? SecurityContext.URL : SecurityContext.HTML); this.anchor.nativeElement.innerHTML = ""; if (this.mode === EmbeddedContentMode.URL) { const iframe = this.document.createElement("iframe"); iframe.src = (this.sanitized ? context : this.customEmbeddedContent); iframe.width = "100%"; iframe.height = "100%"; this.anchor.nativeElement.appendChild(iframe); } else { this.anchor.nativeElement.innerHTML = this.sanitized ? context : this.customEmbeddedContent; } } sanitizeContext(securityContextValue) { return this.domSanitizer.sanitize(securityContextValue, this.customEmbeddedContent?.trim()); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmbeddedContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); } /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EmbeddedContentComponent, selector: "nui-embedded-content", inputs: { mode: "mode", customEmbeddedContent: "customEmbeddedContent", sanitized: "sanitized", elementClass: "elementClass" }, host: { properties: { "class": "this.elementClass" } }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `<div style="width: 100%; height: 100%" #anchor></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmbeddedContentComponent, decorators: [{ type: Component, args: [{ selector: "nui-embedded-content", template: `<div style="width: 100%; height: 100%" #anchor></div>`, changeDetection: ChangeDetectionStrategy.OnPush, }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: Document, decorators: [{ type: Inject, args: [DOCUMENT] }] }, { type: i1.DomSanitizer }], propDecorators: { mode: [{ type: Input }], customEmbeddedContent: [{ type: Input }], sanitized: [{ type: Input }], elementClass: [{ type: Input }, { type: HostBinding, args: ["class"] }], anchor: [{ type: ViewChild, args: ["anchor", { static: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWQtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZW1iZWRkZWQtY29udGVudC9lbWJlZGRlZC1jb250ZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsNERBQTREO0FBQzVELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsaUZBQWlGO0FBQ2pGLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFFakIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsZUFBZSxFQUVmLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFFL0MsY0FBYztBQU1kLE1BQU0sT0FBTyx3QkFBd0I7YUFHbkIsZ0JBQVcsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7SUFVdkQsWUFDVyxjQUFpQyxFQUNkLFFBQWtCLEVBQ3BDLFlBQTBCO1FBRjNCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFUdEIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUVKLGlCQUFZLEdBQUcsRUFBRSxDQUFDO0lBUXJELENBQUM7SUFFRyxRQUFRO1FBQ1gsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxJQUNJLE9BQU8sQ0FBQyxxQkFBcUI7WUFDN0IsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUM1QztZQUNFLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVPLCtCQUErQjtRQUNuQyxNQUFNLE9BQU8sR0FDVCxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxlQUFlLENBQ2hCLElBQUksQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsR0FBRztnQkFDakMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHO2dCQUNyQixDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDN0IsQ0FBQztRQUVOLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQzlDLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztZQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUV2QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakQ7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUztnQkFDaEQsQ0FBQyxDQUFDLE9BQU87Z0JBQ1QsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQ25CLG9CQUFxQztRQUVyQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUM3QixvQkFBb0IsRUFDcEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUNyQyxDQUFDO0lBQ04sQ0FBQztrSUFsRVEsd0JBQXdCLG1EQWVyQixRQUFRO3NIQWZYLHdCQUF3Qix5WEFIdkIsdURBQXVEOzs0RkFHeEQsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSx1REFBdUQ7b0JBQ2pFLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDs7MEJBZ0JRLE1BQU07MkJBQUMsUUFBUTtvRUFWSixJQUFJO3NCQUFuQixLQUFLO2dCQUNVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUVnQyxZQUFZO3NCQUFqRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLE9BQU87Z0JBRVUsTUFBTTtzQkFBNUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBTZWN1cml0eUNvbnRleHQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5pbXBvcnQgeyBJSGFzQ2hhbmdlRGV0ZWN0b3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IEVtYmVkZGVkQ29udGVudE1vZGUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuLyogQGR5bmFtaWMgKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm51aS1lbWJlZGRlZC1jb250ZW50XCIsXG4gICAgdGVtcGxhdGU6IGA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJVwiICNhbmNob3I+PC9kaXY+YCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRW1iZWRkZWRDb250ZW50Q29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBJSGFzQ2hhbmdlRGV0ZWN0b3IsIE9uSW5pdCwgT25DaGFuZ2VzXG57XG4gICAgcHVibGljIHN0YXRpYyBsYXRlTG9hZEtleSA9IFwiRW1iZWRkZWRDb250ZW50Q29tcG9uZW50XCI7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgbW9kZTogRW1iZWRkZWRDb250ZW50TW9kZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tRW1iZWRkZWRDb250ZW50OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHNhbml0aXplZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBwdWJsaWMgZWxlbWVudENsYXNzID0gXCJcIjtcblxuICAgIEBWaWV3Q2hpbGQoXCJhbmNob3JcIiwgeyBzdGF0aWM6IHRydWUgfSkgYW5jaG9yOiBFbGVtZW50UmVmO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQW5kQXBwbHlFbWJlZGRlZENvbnRlbnQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjaGFuZ2VzLmN1c3RvbUVtYmVkZGVkQ29udGVudCAmJlxuICAgICAgICAgICAgIWNoYW5nZXMuY3VzdG9tRW1iZWRkZWRDb250ZW50LmZpcnN0Q2hhbmdlXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFuZEFwcGx5RW1iZWRkZWRDb250ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQW5kQXBwbHlFbWJlZGRlZENvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPVxuICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWQgJiZcbiAgICAgICAgICAgIHRoaXMuc2FuaXRpemVDb250ZXh0KFxuICAgICAgICAgICAgICAgIHRoaXMubW9kZSA9PT0gRW1iZWRkZWRDb250ZW50TW9kZS5VUkxcbiAgICAgICAgICAgICAgICAgICAgPyBTZWN1cml0eUNvbnRleHQuVVJMXG4gICAgICAgICAgICAgICAgICAgIDogU2VjdXJpdHlDb250ZXh0LkhUTUxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hbmNob3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBcIlwiO1xuXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IEVtYmVkZGVkQ29udGVudE1vZGUuVVJMKSB7XG4gICAgICAgICAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7XG4gICAgICAgICAgICBpZnJhbWUuc3JjID0gKFxuICAgICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkID8gY29udGV4dCA6IHRoaXMuY3VzdG9tRW1iZWRkZWRDb250ZW50XG4gICAgICAgICAgICApIGFzIHN0cmluZztcbiAgICAgICAgICAgIGlmcmFtZS53aWR0aCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgaWZyYW1lLmhlaWdodCA9IFwiMTAwJVwiO1xuXG4gICAgICAgICAgICB0aGlzLmFuY2hvci5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuc2FuaXRpemVkXG4gICAgICAgICAgICAgICAgPyBjb250ZXh0XG4gICAgICAgICAgICAgICAgOiB0aGlzLmN1c3RvbUVtYmVkZGVkQ29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2FuaXRpemVDb250ZXh0KFxuICAgICAgICBzZWN1cml0eUNvbnRleHRWYWx1ZTogU2VjdXJpdHlDb250ZXh0XG4gICAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5zYW5pdGl6ZShcbiAgICAgICAgICAgIHNlY3VyaXR5Q29udGV4dFZhbHVlLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21FbWJlZGRlZENvbnRlbnQ/LnRyaW0oKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==