UNPKG

@senx/warpview

Version:
204 lines 66 kB
/* * Copyright 2021 SenX S.A.S. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import { Component, ElementRef, EventEmitter, Input, NgZone, Output, Renderer2, ViewChild } from '@angular/core'; import { WarpViewComponent } from '../warp-view-component'; import { Size, SizeService } from '../../services/resize.service'; import { Logger } from '../../utils/logger'; import { ChartLib } from '../../utils/chart-lib'; import { GTSLib } from '../../utils/gts.lib'; import * as i0 from "@angular/core"; import * as i1 from "../../services/resize.service"; import * as i2 from "../warp-view-spinner/warp-view-spinner.component"; import * as i3 from "../warp-view-spectrum/warp-view-spectrum.component"; import * as i4 from "../warp-view-chart/warp-view-chart.component"; import * as i5 from "../warp-view-plot/warp-view-plot.component"; import * as i6 from "../warp-view-bar/warp-view-bar.component"; import * as i7 from "../warp-view-bubble/warp-view-bubble.component"; import * as i8 from "../warp-view-datagrid/warp-view-datagrid.component"; import * as i9 from "../warp-view-display/warp-view-display.component"; import * as i10 from "../warp-view-drill-down/warp-view-drill-down.component"; import * as i11 from "../warp-view-gts-tree/warp-view-gts-tree.component"; import * as i12 from "../warp-view-image/warp-view-image.component"; import * as i13 from "../warp-view-map/warp-view-map.component"; import * as i14 from "../warp-view-pie/warp-view-pie.component"; import * as i15 from "../warp-view-gauge/warp-view-gauge.component"; import * as i16 from "../warp-view-annotation/warp-view-annotation.component"; import * as i17 from "../warp-view-event-drop/warp-view-event-drop.component"; import * as i18 from "../warp-view-polar/warp-view-polar.component"; import * as i19 from "../warp-view-radar/warp-view-radar.component"; import * as i20 from "../warp-view-box/warp-view-box.component"; import * as i21 from "../warp-view-3d-line/warp-view-3d-line.component"; import * as i22 from "../warp-view-globe/warp-view-globe.component"; import * as i23 from "@angular/common"; import * as i24 from "angular-resize-event"; export class WarpViewResultTileComponent extends WarpViewComponent { constructor(el, renderer, sizeService, ngZone) { super(el, renderer, sizeService, ngZone); this.el = el; this.renderer = renderer; this.sizeService = sizeService; this.ngZone = ngZone; this.standalone = true; this.pointHover = new EventEmitter(); this.warpViewChartResize = new EventEmitter(); this.chartDraw = new EventEmitter(); this.boundsDidChange = new EventEmitter(); this.warpViewNewOptions = new EventEmitter(); this.loading = true; this.graphs = { spectrum: ['histogram2dcontour', 'histogram2d'], chart: ['line', 'spline', 'step', 'step-after', 'step-before', 'area', 'scatter'], pie: ['pie', 'donut'], polar: ['polar'], radar: ['radar'], bar: ['bar'], bubble: ['bubble'], annotation: ['annotation'], 'gts-tree': ['gts-tree'], datagrid: ['datagrid'], display: ['display'], drilldown: ['drilldown'], image: ['image'], map: ['map'], gauge: ['gauge', 'bullet'], plot: ['plot'], box: ['box', 'box-date'], line3d: ['line3d'], globe: ['globe'], drops: ['drops'] }; this.isRefresh = false; this.LOG = new Logger(WarpViewResultTileComponent, this._debug); } set type(type) { this._type = type; } get type() { if (this.dataModel && this.dataModel.globalParams) { return this.dataModel.globalParams.type || this._options.type || this._type || 'plot'; } else { return this._type || 'plot'; } } ngAfterViewInit() { const chartDiv = this.getContentBounds(this.el.nativeElement.parentElement); if (!!this.title && !!this.chartTitle) { const titleDiv = this.getContentBounds(this.title.nativeElement); this.innerHeight = chartDiv.h - titleDiv.h - 20; } else { this.innerHeight = chartDiv.h - 20; } } update(options, refresh) { setTimeout(() => this.loading = !refresh); this.LOG.debug(['parseGTS', 'data'], this._data); this.dataModel = this._data; if (!!this.dataModel) { this._options = ChartLib.mergeDeep(this._options, options); this._options = ChartLib.mergeDeep(ChartLib.mergeDeep(this.defOptions, this._options), this._data ? this._data.globalParams || {} : {}); this.LOG.debug(['parseGTS', 'data'], this._data); if (this._options) { this._unit = this._options.unit || this._unit; this._type = this._options.type || this._type || 'plot'; } this.LOG.debug(['parseGTS', '_type'], this._type); setTimeout(() => this.loading = false); } } convert(data) { setTimeout(() => this.loading = !this.isRefresh); this.LOG.debug(['convert', 'data'], this._data, data); this.dataModel = data; if (data.globalParams) { this._unit = data.globalParams.unit || this._unit; this._type = data.globalParams.type || this._type || 'plot'; } this.LOG.debug(['convert', '_type'], this._type); const chartDiv = this.getContentBounds(this.el.nativeElement.parentElement); if (!!this.title) { const titleDiv = this.getContentBounds(this.title.nativeElement); console.log({ chartDiv, titleDiv }); this.innerHeight = chartDiv.h - titleDiv.h; } else { this.innerHeight = chartDiv.h; } return []; } onResized(event) { this.width = event.newRect.width; this.height = event.newRect.height; this.LOG.debug(['onResized'], event.newRect.width, event.newRect.height); this.sizeService.change(new Size(this.width, this.height)); } chartDrawn() { this.LOG.debug(['chartDrawn']); setTimeout(() => this.loading = false); this.chartDraw.emit(); } setResult(data, isRefresh) { this.isRefresh = isRefresh; if (!!data) { this._data = GTSLib.getData(data); this._options.isRefresh = isRefresh; this.update(this._options, isRefresh); this.LOG.debug(['setResult'], this._data); } } onWarpViewNewOptions(opts) { this.warpViewNewOptions.emit(opts); } resize(layout) { // } } WarpViewResultTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: WarpViewResultTileComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SizeService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); WarpViewResultTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: WarpViewResultTileComponent, selector: "warpview-result-tile", inputs: { chartTitle: "chartTitle", type: "type", standalone: "standalone" }, outputs: { pointHover: "pointHover", warpViewChartResize: "warpViewChartResize", chartDraw: "chartDraw", boundsDidChange: "boundsDidChange", warpViewNewOptions: "warpViewNewOptions" }, viewQueries: [{ propertyName: "title", first: true, predicate: ["title"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2021 SenX S.A.S.\n ~\n ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ http://www.apache.org/licenses/LICENSE-2.0\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n ~\n -->\n\n<div class=\"wrapper\" [ngClass]=\"{'full': responsive}\" (resized)=\"onResized($event)\">\n <warpview-spinner [ngStyle]=\"{maxHeight: innerHeight + 'px', height: innerHeight + 'px'}\" *ngIf=\"loading\" message=\"Parsing data\"></warpview-spinner>\n <h1 #title>{{chartTitle}}</h1>\n <div style=\"width: 100%\" [hidden]=\"loading\" [ngStyle]=\"{maxHeight: innerHeight + 'px', height: innerHeight + 'px'}\">\n <warpview-spectrum [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n [data]=\"dataModel\" (chartDraw)=\"chartDrawn()\"\n *ngIf=\"graphs['spectrum'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-spectrum>\n\n <warpview-chart [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['chart'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-chart>\n\n <warpview-plot [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n (warpViewNewOptions)=\"onWarpViewNewOptions($event)\"\n *ngIf=\"graphs['plot'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-plot>\n\n <warpview-bar [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['bar'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-bar>\n\n <warpview-bubble [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['bubble'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-bubble>\n\n <warpview-datagrid [debug]=\"debug\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['datagrid'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-datagrid>\n\n <warpview-display [debug]=\"debug\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [unit]=\"unit\"\n *ngIf=\"graphs['display'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-display>\n\n <warpview-drill-down [debug]=\"debug\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [unit]=\"unit\"\n *ngIf=\"graphs['drilldown'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-drill-down>\n\n <warpview-gts-tree *ngIf=\"graphs['gts-tree'].indexOf(type) > -1 && !!dataModel\"\n (chartDraw)=\"chartDrawn()\"\n [responsive]=\"true\" [debug]=\"debug\" [data]=\"dataModel\"\n [options]=\"_options\"></warpview-gts-tree>\n\n <warpview-image *ngIf=\"graphs['image'].indexOf(type) > -1 && !!dataModel\"\n (chartDraw)=\"chartDrawn()\"\n [responsive]=\"true\" [debug]=\"debug\" [data]=\"dataModel\" [options]=\"_options\"></warpview-image>\n\n <warpview-map *ngIf=\"graphs['map'].indexOf(type) > -1 && !!dataModel\" [responsive]=\"true\" [debug]=\"debug\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [options]=\"_options\"></warpview-map>\n\n <warpview-pie [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['pie'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-pie>\n\n <warpview-gauge [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['gauge'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-gauge>\n\n <warpview-annotation [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n [standalone]=\"true\" [type]=\"type\"\n *ngIf=\"graphs['annotation'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-annotation>\n\n <warpview-event-drop [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [type]=\"type\"\n *ngIf=\"graphs['drops'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-event-drop>\n\n <warpview-polar [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['polar'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-polar>\n\n <warpview-radar [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['radar'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-radar>\n\n <warpview-box [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [type]=\"type\"\n *ngIf=\"graphs['box'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-box>\n\n <warpview-3d-line [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [type]=\"type\"\n *ngIf=\"graphs['line3d'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-3d-line>\n <warpview-globe [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [type]=\"type\"\n *ngIf=\"graphs['globe'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-globe>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2021 SenX S.A.S.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */:root{--warp-view-chart-width: 100%;--warp-view-chart-height: 100%;--warp-view-datagrid-cell-padding: 5px;--warp-view-map-margin: 0;--warp-view-switch-height: 30px;--warp-view-switch-width: 100px;--warp-view-switch-radius: 18px;--warp-view-plot-chart-height: 100%;--warp-view-slider-pointer-size: 65px;--warp-view-resize-handle-height: 10px;--warp-view-tile-width: 100%;--warp-view-tile-height: 100%;--warp-view-font-color: #000000;--warp-view-bar-color: #dc3545;--warp-view-datagrid-odd-bg-color: #ffffff;--warp-view-datagrid-odd-color: #404040;--warp-view-datagrid-even-bg-color: #c0c0c0;--warp-view-datagrid-even-color: #000000;--warp-view-pagination-border-color: #c0c0c0;--warp-view-pagination-bg-color: #ffffff;--warp-view-pagination-active-bg-color: #4CAF50;--warp-view-pagination-active-color: #ffffff;--warp-view-pagination-active-border-color: #4CAF50;--warp-view-pagination-hover-bg-color: #c0c0c0;--warp-view-pagination-hover-color: #000000;--warp-view-pagination-hover-border-color: #c0c0c0;--warp-view-pagination-disabled-color: #c0c0c0;--warp-view-switch-inset-color: #c0c0c0;--warp-view-switch-inset-checked-color: #00cd00;--warp-view-switch-handle-color: radial-gradient(#ffffff 15%, #c0c0c0 100%);--warp-view-switch-handle-checked-color: radial-gradient(#ffffff 15%, #00cd00 100%);--warp-view-resize-handle-color: #c0c0c0;--warp-view-chart-legend-bg: #ffffff;--warp-view-chart-legend-color: #404040;--gts-classname-font-color: #004eff;--gts-labelname-font-color: #19A979;--gts-attrname-font-color: #ED4A7B;--gts-separator-font-color: #a0a0a0;--gts-labelvalue-font-color: #000000;--gts-attrvalue-font-color: #000000;--gts-stack-font-color: #000000;--gts-tree-expanded-icon: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA7klEQVQ4T82TMW7CQBBF/0g+QOpINEkVCmpaLoBm5COk5QYoaeAY3MDSei2LGu4QKakiBA1tCpTK8kS2sLVe2xSh8XSrnf9m/s4s4c6gO/UYGEBEXlT1bK396bFGIjIJguA7iqJLkVNbYOZXItoQ0QHAzBhz9CCFeAVgCeAjy7Jpmqa/NUBEEgDzktqGuOKKO47j+KsGhGH4lOf5HsDIg5ycyqVYVd+steuGheLAzM9EtPMgW1VdVGWJ6N0YU1gpozVGH+K+gy/uBHR1crXUqNzbQXXhduJ69sd7cxOZ+UFVH5Mk+exb+YGt8n9+5h8up1sReYC0WAAAAABJRU5ErkJggg==);--gts-tree-collapsed-icon: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA0UlEQVQ4T6WTUW7CQAxEPQdozxYb9Qb94Aj9gQSoVCp6lMr21doDZFCQiFCU3YDY//d2PeOFPHnwJC+zAlVdA/jp+/6YmZ+1S0qCPxF5HUAAO3fvSpKS4ENEvm6gfUS0c5JiBma2Ibm/QiQPmbmdSqohquoA7GqSxRaapmkBjBkAeHP336t0UWBmHcnb+VcR4XcJpjDJLjPHkS4tleqZubmNiDHU6gumDQDYuvvh7hpV9V9EXgaA5Ka2jbMjmNk7yZOIfEfE8eFVfuSDLda4JDsD3FNdEckTC0YAAAAASUVORK5CYII=);--warp-view-popup-bg-color: #ffffff;--warp-view-popup-border-color: rgba(0, 0, 0, .2);--warp-view-popup-header-bg-color: #c0c0c0;--warp-view-popup-title-color: #404040;--warp-view-popup-close-color: #404040;--warp-view-popup-body-bg-color: #ffffff;--warp-view-popup-body-color: #000000;--warp-view-annotationtooltip-value-font-color: #004eff;--warp-view-annotationtooltip-font-color: #404040;--warp-view-spinner-color: #ff9900;--warp-view-tooltip-bg: #ffffff;--warp-view-tooltip-color: #000000;--warp-slider-connect-color: #ff9900;--warp-slider-handle-bg-color: #ffffff;--warp-slider-handle-color: #004eff;--warp-slider-handle-shadow: inset 0 0 1px #ffffff, inset 0 1px 7px #c0c0c0, 0 3px 6px -3px #a0a0a0}.noData{width:100%;text-align:center;color:var(--warp-view-chart-legend-color);position:relative}.js-plotly-plot .plotly .cursor-ew-resize{cursor:default!important}:host,warp-view-result-tile,warpview-result-tile{width:var(--warp-view-tile-width, 100%);max-height:var(--warp-view-tile-height, 100%);overflow:auto;min-width:var(--warp-view-tile-width, 100%);min-height:var(--warp-view-tile-height, 100%)}:host .error,warp-view-result-tile .error,warpview-result-tile .error{width:100%;text-align:center;color:#dc3545;font-weight:700}:host .wrapper,warp-view-result-tile .wrapper,warpview-result-tile .wrapper{opacity:1;min-height:50px;width:var(--warp-view-tile-width, 100%);height:var(--warp-view-tile-height, 100%);display:flex;flex-direction:column}:host .wrapper.full,warp-view-result-tile .wrapper.full,warpview-result-tile .wrapper.full{width:100%;height:100%}:host .wrapper .tilewrapper,warp-view-result-tile .wrapper .tilewrapper,warpview-result-tile .wrapper .tilewrapper{width:100%;height:100%}:host .wrapper .tilewrapper .tile,warp-view-result-tile .wrapper .tilewrapper .tile,warpview-result-tile .wrapper .tilewrapper .tile{width:100%;height:calc(var(--warp-view-tile-height, 100%) - 40px);overflow-y:auto;overflow-x:hidden}:host .wrapper .tilewrapper .notitle,warp-view-result-tile .wrapper .tilewrapper .notitle,warpview-result-tile .wrapper .tilewrapper .notitle{height:100%;overflow:hidden}:host .wrapper .tilewrapper h1,warp-view-result-tile .wrapper .tilewrapper h1,warpview-result-tile .wrapper .tilewrapper h1{font-size:20px;padding:5px;margin:0;color:var(--warp-view-font-color)}:host .wrapper .tilewrapper h1 small,warp-view-result-tile .wrapper .tilewrapper h1 small,warpview-result-tile .wrapper .tilewrapper h1 small{font-size:10px;margin-left:10px}\n"], components: [{ type: i2.WarpViewSpinnerComponent, selector: "warpview-spinner", inputs: ["message"] }, { type: i3.WarpViewSpectrumComponent, selector: "warpview-spectrum", inputs: ["type"] }, { type: i4.WarpViewChartComponent, selector: "warpview-chart", inputs: ["hiddenData", "type", "standalone"], outputs: ["boundsDidChange", "pointHover", "warpViewChartResize"] }, { type: i5.WarpViewPlotComponent, selector: "warpview-plot", inputs: ["type", "gtsFilter", "isAlone", "initialChartHeight", "initialMapHeight"], outputs: ["warpViewChartResize", "warpViewNewOptions"] }, { type: i6.WarpViewBarComponent, selector: "warpview-bar" }, { type: i7.WarpViewBubbleComponent, selector: "warpview-bubble" }, { type: i8.WarpViewDatagridComponent, selector: "warpview-datagrid", inputs: ["elemsCount"] }, { type: i9.WarpViewDisplayComponent, selector: "warpview-display" }, { type: i10.WarpViewDrillDownComponent, selector: "warpview-drill-down" }, { type: i11.WarpViewGtsTreeComponent, selector: "warpview-gts-tree", inputs: ["kbdLastKeyPressed", "inPlot", "gtsFilter", "hiddenData"], outputs: ["warpViewSelectedGTS"] }, { type: i12.WarpViewImageComponent, selector: "warpview-image", inputs: ["imageTitle"] }, { type: i13.WarpViewMapComponent, selector: "warpview-map", inputs: ["heatData", "responsive", "width", "height", "debug", "options", "data", "hiddenData"], outputs: ["change", "chartDraw"] }, { type: i14.WarpViewPieComponent, selector: "warpview-pie", inputs: ["type"], outputs: ["chartDraw"] }, { type: i15.WarpViewGaugeComponent, selector: "warpview-gauge", inputs: ["type"] }, { type: i16.WarpViewAnnotationComponent, selector: "warpview-annotation", inputs: ["type", "hiddenData", "standalone", "height"], outputs: ["pointHover", "chartDraw", "boundsDidChange"] }, { type: i17.WarpViewEventDropComponent, selector: "warpview-event-drop", inputs: ["type", "hiddenData"], outputs: ["pointHover", "warpViewChartResize", "chartDraw", "boundsDidChange"] }, { type: i18.WarpViewPolarComponent, selector: "warpview-polar" }, { type: i19.WarpViewRadarComponent, selector: "warpview-radar" }, { type: i20.WarpViewBoxComponent, selector: "warpview-box", inputs: ["type"] }, { type: i21.WarpView3dLineComponent, selector: "warpview-3d-line", inputs: ["type"] }, { type: i22.WarpViewGlobeComponent, selector: "warpview-globe", inputs: ["type"] }], directives: [{ type: i23.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i24.ResizedDirective, selector: "[resized]", outputs: ["resized"] }, { type: i23.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i23.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: WarpViewResultTileComponent, decorators: [{ type: Component, args: [{ selector: 'warpview-result-tile', template: "<!--\n ~ Copyright 2021 SenX S.A.S.\n ~\n ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ http://www.apache.org/licenses/LICENSE-2.0\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n ~\n -->\n\n<div class=\"wrapper\" [ngClass]=\"{'full': responsive}\" (resized)=\"onResized($event)\">\n <warpview-spinner [ngStyle]=\"{maxHeight: innerHeight + 'px', height: innerHeight + 'px'}\" *ngIf=\"loading\" message=\"Parsing data\"></warpview-spinner>\n <h1 #title>{{chartTitle}}</h1>\n <div style=\"width: 100%\" [hidden]=\"loading\" [ngStyle]=\"{maxHeight: innerHeight + 'px', height: innerHeight + 'px'}\">\n <warpview-spectrum [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n [data]=\"dataModel\" (chartDraw)=\"chartDrawn()\"\n *ngIf=\"graphs['spectrum'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-spectrum>\n\n <warpview-chart [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['chart'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-chart>\n\n <warpview-plot [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n (warpViewNewOptions)=\"onWarpViewNewOptions($event)\"\n *ngIf=\"graphs['plot'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-plot>\n\n <warpview-bar [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['bar'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-bar>\n\n <warpview-bubble [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['bubble'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-bubble>\n\n <warpview-datagrid [debug]=\"debug\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['datagrid'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-datagrid>\n\n <warpview-display [debug]=\"debug\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [unit]=\"unit\"\n *ngIf=\"graphs['display'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-display>\n\n <warpview-drill-down [debug]=\"debug\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [unit]=\"unit\"\n *ngIf=\"graphs['drilldown'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-drill-down>\n\n <warpview-gts-tree *ngIf=\"graphs['gts-tree'].indexOf(type) > -1 && !!dataModel\"\n (chartDraw)=\"chartDrawn()\"\n [responsive]=\"true\" [debug]=\"debug\" [data]=\"dataModel\"\n [options]=\"_options\"></warpview-gts-tree>\n\n <warpview-image *ngIf=\"graphs['image'].indexOf(type) > -1 && !!dataModel\"\n (chartDraw)=\"chartDrawn()\"\n [responsive]=\"true\" [debug]=\"debug\" [data]=\"dataModel\" [options]=\"_options\"></warpview-image>\n\n <warpview-map *ngIf=\"graphs['map'].indexOf(type) > -1 && !!dataModel\" [responsive]=\"true\" [debug]=\"debug\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [options]=\"_options\"></warpview-map>\n\n <warpview-pie [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['pie'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-pie>\n\n <warpview-gauge [debug]=\"debug\" [type]=\"type\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['gauge'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-gauge>\n\n <warpview-annotation [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n [standalone]=\"true\" [type]=\"type\"\n *ngIf=\"graphs['annotation'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-annotation>\n\n <warpview-event-drop [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [type]=\"type\"\n *ngIf=\"graphs['drops'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-event-drop>\n\n <warpview-polar [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['polar'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-polar>\n\n <warpview-radar [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\"\n *ngIf=\"graphs['radar'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-radar>\n\n <warpview-box [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [type]=\"type\"\n *ngIf=\"graphs['box'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-box>\n\n <warpview-3d-line [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [type]=\"type\"\n *ngIf=\"graphs['line3d'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-3d-line>\n <warpview-globe [debug]=\"debug\" [unit]=\"unit\" [options]=\"_options\"\n (chartDraw)=\"chartDrawn()\"\n [data]=\"dataModel\" [type]=\"type\"\n *ngIf=\"graphs['globe'].indexOf(type) > -1 && !!dataModel\"\n [responsive]=\"true\"></warpview-globe>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2021 SenX S.A.S.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */:root{--warp-view-chart-width: 100%;--warp-view-chart-height: 100%;--warp-view-datagrid-cell-padding: 5px;--warp-view-map-margin: 0;--warp-view-switch-height: 30px;--warp-view-switch-width: 100px;--warp-view-switch-radius: 18px;--warp-view-plot-chart-height: 100%;--warp-view-slider-pointer-size: 65px;--warp-view-resize-handle-height: 10px;--warp-view-tile-width: 100%;--warp-view-tile-height: 100%;--warp-view-font-color: #000000;--warp-view-bar-color: #dc3545;--warp-view-datagrid-odd-bg-color: #ffffff;--warp-view-datagrid-odd-color: #404040;--warp-view-datagrid-even-bg-color: #c0c0c0;--warp-view-datagrid-even-color: #000000;--warp-view-pagination-border-color: #c0c0c0;--warp-view-pagination-bg-color: #ffffff;--warp-view-pagination-active-bg-color: #4CAF50;--warp-view-pagination-active-color: #ffffff;--warp-view-pagination-active-border-color: #4CAF50;--warp-view-pagination-hover-bg-color: #c0c0c0;--warp-view-pagination-hover-color: #000000;--warp-view-pagination-hover-border-color: #c0c0c0;--warp-view-pagination-disabled-color: #c0c0c0;--warp-view-switch-inset-color: #c0c0c0;--warp-view-switch-inset-checked-color: #00cd00;--warp-view-switch-handle-color: radial-gradient(#ffffff 15%, #c0c0c0 100%);--warp-view-switch-handle-checked-color: radial-gradient(#ffffff 15%, #00cd00 100%);--warp-view-resize-handle-color: #c0c0c0;--warp-view-chart-legend-bg: #ffffff;--warp-view-chart-legend-color: #404040;--gts-classname-font-color: #004eff;--gts-labelname-font-color: #19A979;--gts-attrname-font-color: #ED4A7B;--gts-separator-font-color: #a0a0a0;--gts-labelvalue-font-color: #000000;--gts-attrvalue-font-color: #000000;--gts-stack-font-color: #000000;--gts-tree-expanded-icon: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA7klEQVQ4T82TMW7CQBBF/0g+QOpINEkVCmpaLoBm5COk5QYoaeAY3MDSei2LGu4QKakiBA1tCpTK8kS2sLVe2xSh8XSrnf9m/s4s4c6gO/UYGEBEXlT1bK396bFGIjIJguA7iqJLkVNbYOZXItoQ0QHAzBhz9CCFeAVgCeAjy7Jpmqa/NUBEEgDzktqGuOKKO47j+KsGhGH4lOf5HsDIg5ycyqVYVd+steuGheLAzM9EtPMgW1VdVGWJ6N0YU1gpozVGH+K+gy/uBHR1crXUqNzbQXXhduJ69sd7cxOZ+UFVH5Mk+exb+YGt8n9+5h8up1sReYC0WAAAAABJRU5ErkJggg==);--gts-tree-collapsed-icon: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA0UlEQVQ4T6WTUW7CQAxEPQdozxYb9Qb94Aj9gQSoVCp6lMr21doDZFCQiFCU3YDY//d2PeOFPHnwJC+zAlVdA/jp+/6YmZ+1S0qCPxF5HUAAO3fvSpKS4ENEvm6gfUS0c5JiBma2Ibm/QiQPmbmdSqohquoA7GqSxRaapmkBjBkAeHP336t0UWBmHcnb+VcR4XcJpjDJLjPHkS4tleqZubmNiDHU6gumDQDYuvvh7hpV9V9EXgaA5Ka2jbMjmNk7yZOIfEfE8eFVfuSDLda4JDsD3FNdEckTC0YAAAAASUVORK5CYII=);--warp-view-popup-bg-color: #ffffff;--warp-view-popup-border-color: rgba(0, 0, 0, .2);--warp-view-popup-header-bg-color: #c0c0c0;--warp-view-popup-title-color: #404040;--warp-view-popup-close-color: #404040;--warp-view-popup-body-bg-color: #ffffff;--warp-view-popup-body-color: #000000;--warp-view-annotationtooltip-value-font-color: #004eff;--warp-view-annotationtooltip-font-color: #404040;--warp-view-spinner-color: #ff9900;--warp-view-tooltip-bg: #ffffff;--warp-view-tooltip-color: #000000;--warp-slider-connect-color: #ff9900;--warp-slider-handle-bg-color: #ffffff;--warp-slider-handle-color: #004eff;--warp-slider-handle-shadow: inset 0 0 1px #ffffff, inset 0 1px 7px #c0c0c0, 0 3px 6px -3px #a0a0a0}.noData{width:100%;text-align:center;color:var(--warp-view-chart-legend-color);position:relative}.js-plotly-plot .plotly .cursor-ew-resize{cursor:default!important}:host,warp-view-result-tile,warpview-result-tile{width:var(--warp-view-tile-width, 100%);max-height:var(--warp-view-tile-height, 100%);overflow:auto;min-width:var(--warp-view-tile-width, 100%);min-height:var(--warp-view-tile-height, 100%)}:host .error,warp-view-result-tile .error,warpview-result-tile .error{width:100%;text-align:center;color:#dc3545;font-weight:700}:host .wrapper,warp-view-result-tile .wrapper,warpview-result-tile .wrapper{opacity:1;min-height:50px;width:var(--warp-view-tile-width, 100%);height:var(--warp-view-tile-height, 100%);display:flex;flex-direction:column}:host .wrapper.full,warp-view-result-tile .wrapper.full,warpview-result-tile .wrapper.full{width:100%;height:100%}:host .wrapper .tilewrapper,warp-view-result-tile .wrapper .tilewrapper,warpview-result-tile .wrapper .tilewrapper{width:100%;height:100%}:host .wrapper .tilewrapper .tile,warp-view-result-tile .wrapper .tilewrapper .tile,warpview-result-tile .wrapper .tilewrapper .tile{width:100%;height:calc(var(--warp-view-tile-height, 100%) - 40px);overflow-y:auto;overflow-x:hidden}:host .wrapper .tilewrapper .notitle,warp-view-result-tile .wrapper .tilewrapper .notitle,warpview-result-tile .wrapper .tilewrapper .notitle{height:100%;overflow:hidden}:host .wrapper .tilewrapper h1,warp-view-result-tile .wrapper .tilewrapper h1,warpview-result-tile .wrapper .tilewrapper h1{font-size:20px;padding:5px;margin:0;color:var(--warp-view-font-color)}:host .wrapper .tilewrapper h1 small,warp-view-result-tile .wrapper .tilewrapper h1 small,warpview-result-tile .wrapper .tilewrapper h1 small{font-size:10px;margin-left:10px}\n"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SizeService }, { type: i0.NgZone }]; }, propDecorators: { title: [{ type: ViewChild, args: ['title', { static: true }] }], chartTitle: [{ type: Input, args: ['chartTitle'] }], type: [{ type: Input, args: ['type'] }], standalone: [{ type: Input, args: ['standalone'] }], pointHover: [{ type: Output, args: ['pointHover'] }], warpViewChartResize: [{ type: Output, args: ['warpViewChartResize'] }], chartDraw: [{ type: Output, args: ['chartDraw'] }], boundsDidChange: [{ type: Output, args: ['boundsDidChange'] }], warpViewNewOptions: [{ type: Output, args: ['warpViewNewOptions'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FycC12aWV3LXJlc3VsdC10aWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcnB2aWV3LW5nL3NyYy9saWIvZWxlbWVudHMvd2FycC12aWV3LXJlc3VsdC10aWxlL3dhcnAtdmlldy1yZXN1bHQtdGlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXJwdmlldy1uZy9zcmMvbGliL2VsZW1lbnRzL3dhcnAtdmlldy1yZXN1bHQtdGlsZS93YXJwLXZpZXctcmVzdWx0LXRpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRzFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzNDLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxpQkFBaUI7SUFxRGhFLFlBQ1MsRUFBYyxFQUNkLFFBQW1CLEVBQ25CLFdBQXdCLEVBQ3hCLE1BQWM7UUFFckIsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBTGxDLE9BQUUsR0FBRixFQUFF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Q29weXJpZ2h0IDIwMjEgIFNlblggUy5BLlMuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dhcnBWaWV3Q29tcG9uZW50fSBmcm9tICcuLi93YXJwLXZpZXctY29tcG9uZW50JztcbmltcG9ydCB7U2l6ZSwgU2l6ZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc2l6ZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInO1xuaW1wb3J0IHtQYXJhbX0gZnJvbSAnLi4vLi4vbW9kZWwvcGFyYW0nO1xuaW1wb3J0IHtEYXRhTW9kZWx9IGZyb20gJy4uLy4uL21vZGVsL2RhdGFNb2RlbCc7XG5pbXBvcnQge0NoYXJ0TGlifSBmcm9tICcuLi8uLi91dGlscy9jaGFydC1saWInO1xuaW1wb3J0IHtSZXNpemVkRXZlbnR9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcbmltcG9ydCB7R1RTTGlifSBmcm9tICcuLi8uLi91dGlscy9ndHMubGliJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2FycHZpZXctcmVzdWx0LXRpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2FycC12aWV3LXJlc3VsdC10aWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2FycC12aWV3LXJlc3VsdC10aWxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV2FycFZpZXdSZXN1bHRUaWxlQ29tcG9uZW50IGV4dGVuZHMgV2FycFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgndGl0bGUnLCB7c3RhdGljOiB0cnVlfSkgdGl0bGU6IEVsZW1lbnRSZWY7XG4gIEBJbnB1dCgnY2hhcnRUaXRsZScpIGNoYXJ0VGl0bGU7XG5cbiAgQElucHV0KCd0eXBlJykgc2V0IHR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRhdGFNb2RlbCAmJiB0aGlzLmRhdGFNb2RlbC5nbG9iYWxQYXJhbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFNb2RlbC5nbG9iYWxQYXJhbXMudHlwZSB8fCB0aGlzLl9vcHRpb25zLnR5cGUgfHwgdGhpcy5fdHlwZSB8fCAncGxvdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl90eXBlIHx8ICdwbG90JztcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ3N0YW5kYWxvbmUnKSBzdGFuZGFsb25lID0gdHJ1ZTtcblxuICBAT3V0cHV0K