uni-component-tw 2.1.4 → 2.1.6

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.
@@ -1,60 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
3
- import { DxPieChartModule } from 'devextreme-angular/ui/pie-chart';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "devextreme-angular/ui/pie-chart";
6
- export class UNIPieChartComponent {
7
- /* ----------------------- Constructor & lifecycle --------------------------- */
8
- constructor() {
9
- /* Input & output */
10
- this.chartDataSource = input.required();
11
- this.chartPercentage = input(undefined);
12
- this.chartType = input('pie');
13
- this.chartDiameter = input(1);
14
- this.chartInnerRadius = input(0.7);
15
- this.tooltipIsEnabled = input(true);
16
- this.legendPosition = input('none');
17
- this.legendWithValue = input(false);
18
- this.legendGap = input('12px');
19
- this.uom = input('');
20
- /* Variables */
21
- this.paletteColor = computed(() => this.chartDataSource().map((data) => data.color));
22
- this.gridColumn = computed(() => {
23
- switch (this.legendPosition()) {
24
- case 'right':
25
- return '1fr min-content';
26
- case 'left':
27
- return 'min-content 1fr';
28
- default:
29
- return '1fr';
30
- }
31
- });
32
- this.gridRow = computed(() => {
33
- switch (this.legendPosition()) {
34
- case 'top':
35
- return 'min-content 1fr';
36
- case 'bottom':
37
- return '1fr min-content';
38
- default:
39
- return '1fr';
40
- }
41
- });
42
- this.customizeTooltip = this.customizeTooltip.bind(this);
43
- }
44
- /* -----------------------Methods--------------------------- */
45
- /* Funzione usata per personalizzare i tooltips del grafico */
46
- customizeTooltip(pointInfo) {
47
- const { argumentText, valueText } = pointInfo;
48
- return {
49
- text: `${argumentText}<br/>${valueText} ${this.uom()}`,
50
- color: 'rgba(149, 157, 165, 0.5)',
51
- };
52
- }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIPieChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNIPieChartComponent, isStandalone: true, selector: "uni-pie-chart", inputs: { chartDataSource: { classPropertyName: "chartDataSource", publicName: "chartDataSource", isSignal: true, isRequired: true, transformFunction: null }, chartPercentage: { classPropertyName: "chartPercentage", publicName: "chartPercentage", isSignal: true, isRequired: false, transformFunction: null }, chartType: { classPropertyName: "chartType", publicName: "chartType", isSignal: true, isRequired: false, transformFunction: null }, chartDiameter: { classPropertyName: "chartDiameter", publicName: "chartDiameter", isSignal: true, isRequired: false, transformFunction: null }, chartInnerRadius: { classPropertyName: "chartInnerRadius", publicName: "chartInnerRadius", isSignal: true, isRequired: false, transformFunction: null }, tooltipIsEnabled: { classPropertyName: "tooltipIsEnabled", publicName: "tooltipIsEnabled", isSignal: true, isRequired: false, transformFunction: null }, legendPosition: { classPropertyName: "legendPosition", publicName: "legendPosition", isSignal: true, isRequired: false, transformFunction: null }, legendWithValue: { classPropertyName: "legendWithValue", publicName: "legendWithValue", isSignal: true, isRequired: false, transformFunction: null }, legendGap: { classPropertyName: "legendGap", publicName: "legendGap", isSignal: true, isRequired: false, transformFunction: null }, uom: { classPropertyName: "uom", publicName: "uom", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"container-pie-chart\"\n [style.display]=\"legendPosition() === 'none' ? 'block' : 'grid'\"\n [style.gridTemplateRows]=\"gridRow()\"\n [style.gridTemplateColumns]=\"gridColumn()\">\n <div\n [style.order]=\"legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0\"\n style=\"position: relative; height: 100%; width: 100%; overflow: hidden\">\n <dx-pie-chart\n style=\"height: 100%; width: 100%; overflow: hidden\"\n [type]=\"chartType()\"\n [dataSource]=\"chartDataSource()\"\n resolveLabelOverlapping=\"shift\"\n [palette]=\"paletteColor()\"\n [diameter]=\"chartDiameter()\"\n [innerRadius]=\"chartInnerRadius()\"\n [redrawOnResize]=\"true\"\n [series]=\"{\n argumentField: 'name',\n format: 'fixedPoint',\n valueField: 'value',\n hoverStyle: 'none',\n label: { visible: false },\n }\"\n [legend]=\"{ visible: false }\"\n [tooltip]=\"{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }\">\n </dx-pie-chart>\n\n @if (chartPercentage() !== undefined) {\n <div class=\"pie-percentage-value\">{{ chartPercentage() }}%</div>\n }\n </div>\n\n @if (legendPosition() !== 'none') {\n <ul\n class=\"container-legend\"\n [style.flexDirection]=\"\n legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'\n \"\n [style.gap]=\"legendGap()\">\n @for (item of chartDataSource(); track $index) {\n <li>\n <span class=\"square\" [style.backgroundColor]=\"item.color\"></span>\n {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}\n </li>\n }\n </ul>\n }\n</div>\n\n", styles: [".container-pie-chart{height:100%;width:100%;gap:16px}.container-pie-chart .pie-percentage-value{position:absolute;inset:0;height:100%;width:100%;display:flex;justify-content:center;align-items:center;font-size:150%}.container-legend{display:flex;align-items:flex-start;justify-content:center;flex-wrap:wrap}.container-legend li{display:grid;grid-template-rows:1fr;grid-template-columns:min-content 1fr;align-items:center;gap:6px;text-wrap:nowrap}.square{display:block;height:12px;width:12px;border-radius:2.5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxPieChartModule }, { kind: "component", type: i1.DxPieChartComponent, selector: "dx-pie-chart", inputs: ["adaptiveLayout", "animation", "annotations", "centerTemplate", "commonAnnotationSettings", "commonSeriesSettings", "customizeAnnotation", "customizeLabel", "customizePoint", "dataSource", "diameter", "disabled", "elementAttr", "export", "innerRadius", "legend", "loadingIndicator", "margin", "minDiameter", "palette", "paletteExtensionMode", "pathModified", "pointSelectionMode", "redrawOnResize", "resolveLabelOverlapping", "rtlEnabled", "segmentsDirection", "series", "seriesTemplate", "size", "sizeGroup", "startAngle", "theme", "title", "tooltip", "type"], outputs: ["onDisposing", "onDone", "onDrawn", "onExported", "onExporting", "onFileSaving", "onIncidentOccurred", "onInitialized", "onLegendClick", "onOptionChanged", "onPointClick", "onPointHoverChanged", "onPointSelectionChanged", "onTooltipHidden", "onTooltipShown", "adaptiveLayoutChange", "animationChange", "annotationsChange", "centerTemplateChange", "commonAnnotationSettingsChange", "commonSeriesSettingsChange", "customizeAnnotationChange", "customizeLabelChange", "customizePointChange", "dataSourceChange", "diameterChange", "disabledChange", "elementAttrChange", "exportChange", "innerRadiusChange", "legendChange", "loadingIndicatorChange", "marginChange", "minDiameterChange", "paletteChange", "paletteExtensionModeChange", "pathModifiedChange", "pointSelectionModeChange", "redrawOnResizeChange", "resolveLabelOverlappingChange", "rtlEnabledChange", "segmentsDirectionChange", "seriesChange", "seriesTemplateChange", "sizeChange", "sizeGroupChange", "startAngleChange", "themeChange", "titleChange", "tooltipChange", "typeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
- }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIPieChartComponent, decorators: [{
57
- type: Component,
58
- args: [{ selector: 'uni-pie-chart', standalone: true, imports: [CommonModule, DxPieChartModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"container-pie-chart\"\n [style.display]=\"legendPosition() === 'none' ? 'block' : 'grid'\"\n [style.gridTemplateRows]=\"gridRow()\"\n [style.gridTemplateColumns]=\"gridColumn()\">\n <div\n [style.order]=\"legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0\"\n style=\"position: relative; height: 100%; width: 100%; overflow: hidden\">\n <dx-pie-chart\n style=\"height: 100%; width: 100%; overflow: hidden\"\n [type]=\"chartType()\"\n [dataSource]=\"chartDataSource()\"\n resolveLabelOverlapping=\"shift\"\n [palette]=\"paletteColor()\"\n [diameter]=\"chartDiameter()\"\n [innerRadius]=\"chartInnerRadius()\"\n [redrawOnResize]=\"true\"\n [series]=\"{\n argumentField: 'name',\n format: 'fixedPoint',\n valueField: 'value',\n hoverStyle: 'none',\n label: { visible: false },\n }\"\n [legend]=\"{ visible: false }\"\n [tooltip]=\"{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }\">\n </dx-pie-chart>\n\n @if (chartPercentage() !== undefined) {\n <div class=\"pie-percentage-value\">{{ chartPercentage() }}%</div>\n }\n </div>\n\n @if (legendPosition() !== 'none') {\n <ul\n class=\"container-legend\"\n [style.flexDirection]=\"\n legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'\n \"\n [style.gap]=\"legendGap()\">\n @for (item of chartDataSource(); track $index) {\n <li>\n <span class=\"square\" [style.backgroundColor]=\"item.color\"></span>\n {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}\n </li>\n }\n </ul>\n }\n</div>\n\n", styles: [".container-pie-chart{height:100%;width:100%;gap:16px}.container-pie-chart .pie-percentage-value{position:absolute;inset:0;height:100%;width:100%;display:flex;justify-content:center;align-items:center;font-size:150%}.container-legend{display:flex;align-items:flex-start;justify-content:center;flex-wrap:wrap}.container-legend li{display:grid;grid-template-rows:1fr;grid-template-columns:min-content 1fr;align-items:center;gap:6px;text-wrap:nowrap}.square{display:block;height:12px;width:12px;border-radius:2.5px}\n"] }]
59
- }], ctorParameters: () => [] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLXBpZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmktY29tcG9uZW50LXR3L3NyYy9saWIvdW5pLXBpZS1jaGFydC91bmktcGllLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktcGllLWNoYXJ0L3VuaS1waWUtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBaUJuRSxNQUFNLE9BQU8sb0JBQW9CO0lBb0MvQixpRkFBaUY7SUFDakY7UUFwQ0Esb0JBQW9CO1FBQ3BCLG9CQUFlLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBcUIsQ0FBQztRQUN0RCxvQkFBZSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDdkQsY0FBUyxHQUFHLEtBQUssQ0FBZSxLQUFLLENBQUMsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNqQyxxQkFBZ0IsR0FBRyxLQUFLLENBQVMsR0FBRyxDQUFDLENBQUM7UUFDdEMscUJBQWdCLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsS0FBSyxDQUErQyxNQUFNLENBQUMsQ0FBQztRQUM3RSxvQkFBZSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4QyxjQUFTLEdBQUcsS0FBSyxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLFFBQUcsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFeEIsZUFBZTtRQUNmLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pCLFFBQVEsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLEtBQUssT0FBTztvQkFDVixPQUFPLGlCQUFpQixDQUFDO2dCQUMzQixLQUFLLE1BQU07b0JBQ1QsT0FBTyxpQkFBaUIsQ0FBQztnQkFDM0I7b0JBQ0UsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsUUFBUSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztnQkFDOUIsS0FBSyxLQUFLO29CQUNSLE9BQU8saUJBQWlCLENBQUM7Z0JBQzNCLEtBQUssUUFBUTtvQkFDWCxPQUFPLGlCQUFpQixDQUFDO2dCQUMzQjtvQkFDRSxPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFJRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELDhEQUE4RDtJQUN2RCxnQkFBZ0IsQ0FBQyxTQUFzRDtRQUM1RSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUM5QyxPQUFPO1lBQ0wsSUFBSSxFQUFFLEdBQUcsWUFBWSxRQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEQsS0FBSyxFQUFFLDBCQUEwQjtTQUNsQyxDQUFDO0lBQ0osQ0FBQzs4R0FqRFUsb0JBQW9CO2tHQUFwQixvQkFBb0IscStDQ25CakMsK3NEQWtEQSwwakJEcENZLFlBQVksOEJBQUUsZ0JBQWdCOzsyRkFLN0Isb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsbUJBR3hCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhQaWVDaGFydE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9waWUtY2hhcnQnO1xyXG5pbXBvcnQgeyBQaWVDaGFydFR5cGUgfSBmcm9tICdkZXZleHRyZW1lL3Zpei9waWVfY2hhcnRfdHlwZXMnO1xyXG5cclxuZXhwb3J0IHR5cGUgQ2hhcnREYXRhU291cmNlID0ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIGNvbG9yOiBzdHJpbmc7XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VuaS1waWUtY2hhcnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHhQaWVDaGFydE1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VuaS1waWUtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VuaS1waWUtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVOSVBpZUNoYXJ0Q29tcG9uZW50IHtcclxuICAvKiBJbnB1dCAmIG91dHB1dCAqL1xyXG4gIGNoYXJ0RGF0YVNvdXJjZSA9IGlucHV0LnJlcXVpcmVkPENoYXJ0RGF0YVNvdXJjZVtdPigpO1xyXG4gIGNoYXJ0UGVyY2VudGFnZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBjaGFydFR5cGUgPSBpbnB1dDxQaWVDaGFydFR5cGU+KCdwaWUnKTtcclxuICBjaGFydERpYW1ldGVyID0gaW5wdXQ8bnVtYmVyPigxKTtcclxuICBjaGFydElubmVyUmFkaXVzID0gaW5wdXQ8bnVtYmVyPigwLjcpO1xyXG4gIHRvb2x0aXBJc0VuYWJsZWQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBsZWdlbmRQb3NpdGlvbiA9IGlucHV0PCdyaWdodCcgfCAnbGVmdCcgfCAndG9wJyB8ICdib3R0b20nIHwgJ25vbmUnPignbm9uZScpO1xyXG4gIGxlZ2VuZFdpdGhWYWx1ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBsZWdlbmRHYXAgPSBpbnB1dDxzdHJpbmc+KCcxMnB4Jyk7XHJcbiAgdW9tID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblxyXG4gIC8qIFZhcmlhYmxlcyAqL1xyXG4gIHBhbGV0dGVDb2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2hhcnREYXRhU291cmNlKCkubWFwKChkYXRhKSA9PiBkYXRhLmNvbG9yKSk7XHJcbiAgZ3JpZENvbHVtbiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHN3aXRjaCAodGhpcy5sZWdlbmRQb3NpdGlvbigpKSB7XHJcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgICByZXR1cm4gJzFmciBtaW4tY29udGVudCc7XHJcbiAgICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICAgIHJldHVybiAnbWluLWNvbnRlbnQgMWZyJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJzFmcic7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgZ3JpZFJvdyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHN3aXRjaCAodGhpcy5sZWdlbmRQb3NpdGlvbigpKSB7XHJcbiAgICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgICAgcmV0dXJuICdtaW4tY29udGVudCAxZnInO1xyXG4gICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgIHJldHVybiAnMWZyIG1pbi1jb250ZW50JztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJzFmcic7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yICYgbGlmZWN5Y2xlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5jdXN0b21pemVUb29sdGlwID0gdGhpcy5jdXN0b21pemVUb29sdGlwLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLU1ldGhvZHMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICAvKiBGdW56aW9uZSB1c2F0YSBwZXIgcGVyc29uYWxpenphcmUgaSB0b29sdGlwcyBkZWwgZ3JhZmljbyAqL1xyXG4gIHB1YmxpYyBjdXN0b21pemVUb29sdGlwKHBvaW50SW5mbzogeyBhcmd1bWVudFRleHQ6IHN0cmluZzsgdmFsdWVUZXh0OiBzdHJpbmcgfSkge1xyXG4gICAgY29uc3QgeyBhcmd1bWVudFRleHQsIHZhbHVlVGV4dCB9ID0gcG9pbnRJbmZvO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGV4dDogYCR7YXJndW1lbnRUZXh0fTxici8+JHt2YWx1ZVRleHR9ICR7dGhpcy51b20oKX1gLFxyXG4gICAgICBjb2xvcjogJ3JnYmEoMTQ5LCAxNTcsIDE2NSwgMC41KScsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XG4gIGNsYXNzPVwiY29udGFpbmVyLXBpZS1jaGFydFwiXG4gIFtzdHlsZS5kaXNwbGF5XT1cImxlZ2VuZFBvc2l0aW9uKCkgPT09ICdub25lJyA/ICdibG9jaycgOiAnZ3JpZCdcIlxuICBbc3R5bGUuZ3JpZFRlbXBsYXRlUm93c109XCJncmlkUm93KClcIlxuICBbc3R5bGUuZ3JpZFRlbXBsYXRlQ29sdW1uc109XCJncmlkQ29sdW1uKClcIj5cbiAgPGRpdlxuICAgIFtzdHlsZS5vcmRlcl09XCJsZWdlbmRQb3NpdGlvbigpID09PSAndG9wJyB8fCBsZWdlbmRQb3NpdGlvbigpID09PSAnbGVmdCcgPyAxIDogMFwiXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IG92ZXJmbG93OiBoaWRkZW5cIj5cbiAgICA8ZHgtcGllLWNoYXJ0XG4gICAgICBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IG92ZXJmbG93OiBoaWRkZW5cIlxuICAgICAgW3R5cGVdPVwiY2hhcnRUeXBlKClcIlxuICAgICAgW2RhdGFTb3VyY2VdPVwiY2hhcnREYXRhU291cmNlKClcIlxuICAgICAgcmVzb2x2ZUxhYmVsT3ZlcmxhcHBpbmc9XCJzaGlmdFwiXG4gICAgICBbcGFsZXR0ZV09XCJwYWxldHRlQ29sb3IoKVwiXG4gICAgICBbZGlhbWV0ZXJdPVwiY2hhcnREaWFtZXRlcigpXCJcbiAgICAgIFtpbm5lclJhZGl1c109XCJjaGFydElubmVyUmFkaXVzKClcIlxuICAgICAgW3JlZHJhd09uUmVzaXplXT1cInRydWVcIlxuICAgICAgW3Nlcmllc109XCJ7XG4gICAgICAgIGFyZ3VtZW50RmllbGQ6ICduYW1lJyxcbiAgICAgICAgZm9ybWF0OiAnZml4ZWRQb2ludCcsXG4gICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXG4gICAgICAgIGhvdmVyU3R5bGU6ICdub25lJyxcbiAgICAgICAgbGFiZWw6IHsgdmlzaWJsZTogZmFsc2UgfSxcbiAgICAgIH1cIlxuICAgICAgW2xlZ2VuZF09XCJ7IHZpc2libGU6IGZhbHNlIH1cIlxuICAgICAgW3Rvb2x0aXBdPVwieyBlbmFibGVkOiB0b29sdGlwSXNFbmFibGVkKCksIGN1c3RvbWl6ZVRvb2x0aXA6IGN1c3RvbWl6ZVRvb2x0aXAgfVwiPlxuICAgIDwvZHgtcGllLWNoYXJ0PlxuXG4gICAgQGlmIChjaGFydFBlcmNlbnRhZ2UoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicGllLXBlcmNlbnRhZ2UtdmFsdWVcIj57eyBjaGFydFBlcmNlbnRhZ2UoKSB9fSU8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAobGVnZW5kUG9zaXRpb24oKSAhPT0gJ25vbmUnKSB7XG4gICAgPHVsXG4gICAgICBjbGFzcz1cImNvbnRhaW5lci1sZWdlbmRcIlxuICAgICAgW3N0eWxlLmZsZXhEaXJlY3Rpb25dPVwiXG4gICAgICAgIGxlZ2VuZFBvc2l0aW9uKCkgPT09ICd0b3AnIHx8IGxlZ2VuZFBvc2l0aW9uKCkgPT09ICdib3R0b20nID8gJ3JvdycgOiAnY29sdW1uJ1xuICAgICAgXCJcbiAgICAgIFtzdHlsZS5nYXBdPVwibGVnZW5kR2FwKClcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgY2hhcnREYXRhU291cmNlKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8bGk+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcXVhcmVcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIml0ZW0uY29sb3JcIj48L3NwYW4+XG4gICAgICAgICAge3sgbGVnZW5kV2l0aFZhbHVlKCkgPyBpdGVtLm5hbWUgKyAnICcgKyBpdGVtLnZhbHVlICsgJyAnICsgdW9tKCkgOiBpdGVtLm5hbWUgfX1cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICB9XG48L2Rpdj5cblxuIl19
@@ -1,79 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { CommonModule, NgOptimizedImage } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, inject, input, output, signal } from '@angular/core';
4
- import { Router, RouterLink, RouterLinkActive } from '@angular/router';
5
- import { DxButtonModule } from 'devextreme-angular/ui/button';
6
- import { DxSelectBoxModule } from 'devextreme-angular/ui/select-box';
7
- import { DxSwitchModule } from 'devextreme-angular/ui/switch';
8
- import { FaIconComponent } from '@fortawesome/angular-fontawesome';
9
- import { faArrowRightFromBracket, faArrowRightToBracket, faLanguage, faMoon, faSun, faUser, } from '@fortawesome/free-solid-svg-icons';
10
- import { UNIAuthService } from 'uni-service/auth';
11
- import { UNITranslatePipe, UNITranslateService } from 'uni-service/translate';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/common";
14
- import * as i2 from "devextreme-angular/ui/button";
15
- import * as i3 from "devextreme-angular/ui/select-box";
16
- import * as i4 from "devextreme-angular/ui/switch";
17
- export class UNISideMenuComponent {
18
- constructor() {
19
- /* Service */
20
- this.router = inject(Router);
21
- this.authService = inject(UNIAuthService);
22
- this.translateService = inject(UNITranslateService);
23
- /* Input */
24
- this.pathBrandLogo = input.required();
25
- this.menuItems = input([]);
26
- this.menuInteractions = input([]);
27
- this.user = input.required();
28
- /* Output */
29
- this.evtToggleMenu = output();
30
- /* Variables */
31
- this.darkMode = signal(localStorage.getItem('uni-theme') === 'dark');
32
- /* Icons */
33
- this.ICON = {
34
- USER: faUser,
35
- LOGIN: faArrowRightToBracket,
36
- LOGOUT: faArrowRightFromBracket,
37
- LIGHT_MODE: faSun,
38
- DARK_MODE: faMoon,
39
- LANGUAGE: faLanguage,
40
- };
41
- }
42
- /* ---------------------- Methods ---------------------- */
43
- updateTheme(e) {
44
- localStorage.setItem('uni-theme', e.value ? 'dark' : 'light');
45
- window.location.reload();
46
- }
47
- updateLanguage(e) {
48
- this.translateService.setLanguage(e.value);
49
- window.location.reload();
50
- }
51
- goToLogin() {
52
- this.evtToggleMenu.emit(false);
53
- this.router.navigate(['login']);
54
- }
55
- logout() {
56
- this.authService.logout$().subscribe(() => {
57
- const firstItem = this.menuItems().find((item) => item.visible && !item.disabled);
58
- this.evtToggleMenu.emit(false);
59
- this.router.navigate([firstItem?.path ?? 'login']);
60
- });
61
- }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNISideMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNISideMenuComponent, isStandalone: true, selector: "uni-side-menu", inputs: { pathBrandLogo: { classPropertyName: "pathBrandLogo", publicName: "pathBrandLogo", isSignal: true, isRequired: true, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null }, menuInteractions: { classPropertyName: "menuInteractions", publicName: "menuInteractions", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, ngImport: i0, template: "<aside\n class=\"flex h-screen w-[250px] flex-col gap-4 overflow-hidden rounded bg-zinc-800/60 p-4 shadow backdrop-blur-xl\">\n <!-- user -->\n <div class=\"flex w-full items-center gap-4\">\n <div class=\"flex flex-1 gap-2\">\n @if (user(); as user) {\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\n }\n </div>\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\n </div>\n\n <div class=\"flex-1 overflow-y-auto overflow-x-hidden\">\n <!-- menu -->\n @if (menuItems().length) {\n <nav class=\"mt-2\">\n <ul class=\"flex flex-col gap-2\">\n @for (item of menuItems(); track item.id) {\n @if (item.visible !== false) {\n <li class=\"relative\">\n <a\n class=\"flex gap-2 rounded p-2 !text-white\"\n [ngClass]=\"{\n 'hover:bg-zinc-600/60': !item.disabled,\n 'cursor-auto !opacity-25': item.disabled,\n }\"\n [routerLink]=\"item.disabled ? null : item.path\"\n routerLinkActive=\"bg-zinc-600/60\"\n (click)=\"evtToggleMenu.emit(false)\">\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.badge) {\n <div class=\"absolute -right-1 -top-1 h-3 w-3 rounded-full bg-red-500\"></div>\n }\n </a>\n </li>\n }\n }\n </ul>\n </nav>\n }\n\n @if (menuInteractions().length) {\n <hr class=\"my-4 h-px border-0 bg-gray-600\" />\n <ul class=\"flex flex-col gap-2\">\n @for (item of menuInteractions(); track item.id) {\n @if (item.data.type === 'button') {\n <li class=\"item-setting-button\">\n <button\n type=\"button\"\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\n [class]=\"item.class\"\n (click)=\"item.data.onClick()\">\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </button>\n </li>\n } @else if (item.data.type === 'select') {\n <li class=\"flex h-12 items-center gap-4 rounded bg-zinc-600/60 p-3 shadow\">\n <span class=\"truncate\">{{ item.label }}</span>\n <dx-select-box\n class=\"flex-1 basis-24\"\n valueExpr=\"id\"\n displayExpr=\"name\"\n [items]=\"item.data.combos\"\n [value]=\"item.data.value\"\n stylingMode=\"underlined\"\n placeholder=\"\"\n (onValueChanged)=\"item.data.onValueChanged($event)\"></dx-select-box>\n </li>\n }\n }\n </ul>\n }\n\n <!-- setting -->\n <hr class=\"my-4 h-px border-0 bg-gray-600\" />\n <ul class=\"flex flex-col gap-2\">\n <li class=\"flex h-12 items-center gap-2 rounded bg-zinc-600/60 p-4 text-white shadow\">\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\n </li>\n <li class=\"flex h-12 items-center gap-2 rounded bg-zinc-600/60 p-4 text-white shadow\">\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\n <dx-select-box\n class=\"basis-16\"\n [items]=\"translateService.translateInfo().languagesSupported\"\n [value]=\"translateService.translateInfo().language\"\n stylingMode=\"underlined\"\n (onValueChanged)=\"updateLanguage($event)\"></dx-select-box>\n </li>\n <!-- User | null | undefined -->\n @if (user() !== undefined) {\n <li>\n <button\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\n (click)=\"user() ? logout() : goToLogin()\">\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\n <span class=\"flex-1 truncate\">{{\n (user() ? 'lblLogout' : 'lblLogin') | translate\n }}</span>\n </button>\n </li>\n }\n </ul>\n </div>\n\n <!-- logo -->\n <div class=\"mt-auto flex content-end border-b border-white\">\n <img\n class=\"mb-1 ml-auto h-8\"\n [ngSrc]=\"pathBrandLogo()\"\n alt=\"Brand logo\"\n [height]=\"32\"\n [width]=\"88\" />\n </div>\n</aside>\n\n", styles: [":host{position:fixed;top:0;right:0;z-index:999}\n", "*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1{margin-bottom:.25rem}.mb-4{margin-bottom:1rem}.ml-auto{margin-left:auto}.mt-2{margin-top:.5rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-12{height:3rem}.h-3{height:.75rem}.h-8{height:2rem}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.w-3{width:.75rem}.w-\\[250px\\]{width:250px}.w-full{width:100%}.flex-1{flex:1 1 0%}.basis-16{flex-basis:4rem}.basis-24{flex-basis:6rem}.basis-6{flex-basis:1.5rem}.cursor-auto{cursor:auto}.flex-col{flex-direction:column}.content-end{align-content:flex-end}.items-center{align-items:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-zinc-600\\/60{background-color:#52525b99}.bg-zinc-800\\/60{background-color:#27272a99}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.uppercase{text-transform:uppercase}.\\!text-white{--tw-text-opacity: 1 !important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255/var(--tw-text-opacity))}.\\!opacity-25{opacity:.25!important}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--tw-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--tw-shadow)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:bg-zinc-600\\/60:hover{background-color:#52525b99}.hover\\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55/var(--tw-text-opacity))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "ngmodule", type: DxSelectBoxModule }, { kind: "component", type: i3.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "ngmodule", type: DxSwitchModule }, { kind: "component", type: i4.DxSwitchComponent, selector: "dx-switch", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "isDirty", "isValid", "name", "readOnly", "rtlEnabled", "switchedOffText", "switchedOnText", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isDirtyChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "switchedOffTextChange", "switchedOnTextChange", "tabIndexChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: UNITranslatePipe, name: "translate" }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
64
- }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNISideMenuComponent, decorators: [{
66
- type: Component,
67
- args: [{ selector: 'uni-side-menu', standalone: true, imports: [
68
- CommonModule,
69
- RouterLink,
70
- RouterLinkActive,
71
- DxButtonModule,
72
- DxSelectBoxModule,
73
- DxSwitchModule,
74
- UNITranslatePipe,
75
- FaIconComponent,
76
- NgOptimizedImage,
77
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<aside\n class=\"flex h-screen w-[250px] flex-col gap-4 overflow-hidden rounded bg-zinc-800/60 p-4 shadow backdrop-blur-xl\">\n <!-- user -->\n <div class=\"flex w-full items-center gap-4\">\n <div class=\"flex flex-1 gap-2\">\n @if (user(); as user) {\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\n }\n </div>\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\n </div>\n\n <div class=\"flex-1 overflow-y-auto overflow-x-hidden\">\n <!-- menu -->\n @if (menuItems().length) {\n <nav class=\"mt-2\">\n <ul class=\"flex flex-col gap-2\">\n @for (item of menuItems(); track item.id) {\n @if (item.visible !== false) {\n <li class=\"relative\">\n <a\n class=\"flex gap-2 rounded p-2 !text-white\"\n [ngClass]=\"{\n 'hover:bg-zinc-600/60': !item.disabled,\n 'cursor-auto !opacity-25': item.disabled,\n }\"\n [routerLink]=\"item.disabled ? null : item.path\"\n routerLinkActive=\"bg-zinc-600/60\"\n (click)=\"evtToggleMenu.emit(false)\">\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.badge) {\n <div class=\"absolute -right-1 -top-1 h-3 w-3 rounded-full bg-red-500\"></div>\n }\n </a>\n </li>\n }\n }\n </ul>\n </nav>\n }\n\n @if (menuInteractions().length) {\n <hr class=\"my-4 h-px border-0 bg-gray-600\" />\n <ul class=\"flex flex-col gap-2\">\n @for (item of menuInteractions(); track item.id) {\n @if (item.data.type === 'button') {\n <li class=\"item-setting-button\">\n <button\n type=\"button\"\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\n [class]=\"item.class\"\n (click)=\"item.data.onClick()\">\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </button>\n </li>\n } @else if (item.data.type === 'select') {\n <li class=\"flex h-12 items-center gap-4 rounded bg-zinc-600/60 p-3 shadow\">\n <span class=\"truncate\">{{ item.label }}</span>\n <dx-select-box\n class=\"flex-1 basis-24\"\n valueExpr=\"id\"\n displayExpr=\"name\"\n [items]=\"item.data.combos\"\n [value]=\"item.data.value\"\n stylingMode=\"underlined\"\n placeholder=\"\"\n (onValueChanged)=\"item.data.onValueChanged($event)\"></dx-select-box>\n </li>\n }\n }\n </ul>\n }\n\n <!-- setting -->\n <hr class=\"my-4 h-px border-0 bg-gray-600\" />\n <ul class=\"flex flex-col gap-2\">\n <li class=\"flex h-12 items-center gap-2 rounded bg-zinc-600/60 p-4 text-white shadow\">\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\n </li>\n <li class=\"flex h-12 items-center gap-2 rounded bg-zinc-600/60 p-4 text-white shadow\">\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\n <dx-select-box\n class=\"basis-16\"\n [items]=\"translateService.translateInfo().languagesSupported\"\n [value]=\"translateService.translateInfo().language\"\n stylingMode=\"underlined\"\n (onValueChanged)=\"updateLanguage($event)\"></dx-select-box>\n </li>\n <!-- User | null | undefined -->\n @if (user() !== undefined) {\n <li>\n <button\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\n (click)=\"user() ? logout() : goToLogin()\">\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\n <span class=\"flex-1 truncate\">{{\n (user() ? 'lblLogout' : 'lblLogin') | translate\n }}</span>\n </button>\n </li>\n }\n </ul>\n </div>\n\n <!-- logo -->\n <div class=\"mt-auto flex content-end border-b border-white\">\n <img\n class=\"mb-1 ml-auto h-8\"\n [ngSrc]=\"pathBrandLogo()\"\n alt=\"Brand logo\"\n [height]=\"32\"\n [width]=\"88\" />\n </div>\n</aside>\n\n", styles: [":host{position:fixed;top:0;right:0;z-index:999}\n", "*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1{margin-bottom:.25rem}.mb-4{margin-bottom:1rem}.ml-auto{margin-left:auto}.mt-2{margin-top:.5rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-12{height:3rem}.h-3{height:.75rem}.h-8{height:2rem}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.w-3{width:.75rem}.w-\\[250px\\]{width:250px}.w-full{width:100%}.flex-1{flex:1 1 0%}.basis-16{flex-basis:4rem}.basis-24{flex-basis:6rem}.basis-6{flex-basis:1.5rem}.cursor-auto{cursor:auto}.flex-col{flex-direction:column}.content-end{align-content:flex-end}.items-center{align-items:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-zinc-600\\/60{background-color:#52525b99}.bg-zinc-800\\/60{background-color:#27272a99}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.uppercase{text-transform:uppercase}.\\!text-white{--tw-text-opacity: 1 !important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255/var(--tw-text-opacity))}.\\!opacity-25{opacity:.25!important}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--tw-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--tw-shadow)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:bg-zinc-600\\/60:hover{background-color:#52525b99}.hover\\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55/var(--tw-text-opacity))}\n"] }]
78
- }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLXNpZGUtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmktY29tcG9uZW50LXR3L3NyYy9saWIvdW5pLXNpZGUtbWVudS91bmktc2lkZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktc2lkZS1tZW51L3VuaS1zaWRlLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBb0Q5RSxNQUFNLE9BQU8sb0JBQW9CO0lBbEJqQztRQW1CRSxhQUFhO1FBQ0osV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV4RCxXQUFXO1FBQ1gsa0JBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDekMsY0FBUyxHQUFHLEtBQUssQ0FBYSxFQUFFLENBQUMsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxLQUFLLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUEyQixDQUFDO1FBRWpELFlBQVk7UUFDWixrQkFBYSxHQUFHLE1BQU0sRUFBUyxDQUFDO1FBRWhDLGVBQWU7UUFDZixhQUFRLEdBQUcsTUFBTSxDQUFVLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUM7UUFFekUsV0FBVztRQUNGLFNBQUksR0FBRztZQUNkLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLHFCQUFxQjtZQUM1QixNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFFBQVEsRUFBRSxVQUFVO1NBQ3JCLENBQUM7S0F5Qkg7SUF2QkMsMkRBQTJEO0lBQ2pELFdBQVcsQ0FBQyxDQUEwQjtRQUM5QyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVTLGNBQWMsQ0FBQyxDQUE2QjtRQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUyxTQUFTO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRVMsTUFBTTtRQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FsRFUsb0JBQW9CO2tHQUFwQixvQkFBb0Isa3FCQ3hFakMsdThKQXlIQSxxd1FEL0RJLFlBQVksNkhBQ1osVUFBVSxvT0FDVixnQkFBZ0IsNk1BQ2hCLGNBQWMscTBCQUNkLGlCQUFpQixnckZBQ2pCLGNBQWMsNGtDQUNkLGdCQUFnQixrREFDaEIsZUFBZSw0TUFDZixnQkFBZ0I7OzJGQU1QLG9CQUFvQjtrQkFsQmhDLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZ0JBQWdCO3FCQUNqQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ09wdGltaXplZEltYWdlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRHhCdXR0b25Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgRHhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvc2VsZWN0LWJveCc7XHJcbmltcG9ydCB7IER4U3dpdGNoTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3N3aXRjaCc7XHJcbmltcG9ydCB7IFZhbHVlQ2hhbmdlZEV2ZW50IGFzIFNlbGVjdEJveFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9zZWxlY3RfYm94X3R5cGVzJztcclxuaW1wb3J0IHsgVmFsdWVDaGFuZ2VkRXZlbnQgYXMgU3dpdGNoVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdkZXZleHRyZW1lL3VpL3N3aXRjaF90eXBlcyc7XHJcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcclxuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIGZhQXJyb3dSaWdodEZyb21CcmFja2V0LFxyXG4gIGZhQXJyb3dSaWdodFRvQnJhY2tldCxcclxuICBmYUxhbmd1YWdlLFxyXG4gIGZhTW9vbixcclxuICBmYVN1bixcclxuICBmYVVzZXIsXHJcbn0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcclxuaW1wb3J0IHsgVU5JQXV0aFNlcnZpY2UsIFVzZXIgfSBmcm9tICd1bmktc2VydmljZS9hdXRoJztcclxuaW1wb3J0IHsgVU5JVHJhbnNsYXRlUGlwZSwgVU5JVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ3VuaS1zZXJ2aWNlL3RyYW5zbGF0ZSc7XHJcblxyXG5leHBvcnQgdHlwZSBDb21ibyA9IHtcclxuICBpZDogbnVtYmVyO1xyXG4gIGNvZGU6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBNZW51SXRlbSA9IHtcclxuICBpZDogbnVtYmVyO1xyXG4gIGljb246IEljb25EZWZpbml0aW9uO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIGJhZGdlPzogYm9vbGVhbjtcclxuICB2aXNpYmxlPzogYm9vbGVhbjtcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBNZW51SW50ZXJhY3Rpb24gPSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBkYXRhOlxyXG4gICAgfCB7IHR5cGU6ICdidXR0b24nOyBpY29uOiBJY29uRGVmaW5pdGlvbjsgb25DbGljazogKC4uLmFyZ3M6IGFueSkgPT4gdm9pZCB9XHJcbiAgICB8IHtcclxuICAgICAgICB0eXBlOiAnc2VsZWN0JztcclxuICAgICAgICBjb21ib3M6IENvbWJvW107XHJcbiAgICAgICAgdmFsdWU6IG51bWJlciB8IG51bGw7XHJcbiAgICAgICAgb25WYWx1ZUNoYW5nZWQ6IChpdGVtU2VsZWN0ZWQ6IFNlbGVjdEJveFZhbHVlQ2hhbmdlZEV2ZW50KSA9PiB2b2lkO1xyXG4gICAgICB9O1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICB2aXNpYmxlOiBib29sZWFuO1xyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1bmktc2lkZS1tZW51JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlckxpbmssXHJcbiAgICBSb3V0ZXJMaW5rQWN0aXZlLFxyXG4gICAgRHhCdXR0b25Nb2R1bGUsXHJcbiAgICBEeFNlbGVjdEJveE1vZHVsZSxcclxuICAgIER4U3dpdGNoTW9kdWxlLFxyXG4gICAgVU5JVHJhbnNsYXRlUGlwZSxcclxuICAgIEZhSWNvbkNvbXBvbmVudCxcclxuICAgIE5nT3B0aW1pemVkSW1hZ2UsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdW5pLXNpZGUtbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdW5pLXNpZGUtbWVudS5jb21wb25lbnQuc2NzcycsICcuLi8uLi90YWlsd2luZC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVTklTaWRlTWVudUNvbXBvbmVudCB7XHJcbiAgLyogU2VydmljZSAqL1xyXG4gIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIHJlYWRvbmx5IGF1dGhTZXJ2aWNlID0gaW5qZWN0KFVOSUF1dGhTZXJ2aWNlKTtcclxuICByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFVOSVRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cclxuICAvKiBJbnB1dCAqL1xyXG4gIHBhdGhCcmFuZExvZ28gPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgbWVudUl0ZW1zID0gaW5wdXQ8TWVudUl0ZW1bXT4oW10pO1xyXG4gIG1lbnVJbnRlcmFjdGlvbnMgPSBpbnB1dDxNZW51SW50ZXJhY3Rpb25bXT4oW10pO1xyXG4gIHVzZXIgPSBpbnB1dC5yZXF1aXJlZDxVc2VyIHwgbnVsbCB8IHVuZGVmaW5lZD4oKTtcclxuXHJcbiAgLyogT3V0cHV0ICovXHJcbiAgZXZ0VG9nZ2xlTWVudSA9IG91dHB1dDxmYWxzZT4oKTtcclxuXHJcbiAgLyogVmFyaWFibGVzICovXHJcbiAgZGFya01vZGUgPSBzaWduYWw8Ym9vbGVhbj4obG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VuaS10aGVtZScpID09PSAnZGFyaycpO1xyXG5cclxuICAvKiBJY29ucyAqL1xyXG4gIHJlYWRvbmx5IElDT04gPSB7XHJcbiAgICBVU0VSOiBmYVVzZXIsXHJcbiAgICBMT0dJTjogZmFBcnJvd1JpZ2h0VG9CcmFja2V0LFxyXG4gICAgTE9HT1VUOiBmYUFycm93UmlnaHRGcm9tQnJhY2tldCxcclxuICAgIExJR0hUX01PREU6IGZhU3VuLFxyXG4gICAgREFSS19NT0RFOiBmYU1vb24sXHJcbiAgICBMQU5HVUFHRTogZmFMYW5ndWFnZSxcclxuICB9O1xyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIHByb3RlY3RlZCB1cGRhdGVUaGVtZShlOiBTd2l0Y2hWYWx1ZUNoYW5nZWRFdmVudCk6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VuaS10aGVtZScsIGUudmFsdWUgPyAnZGFyaycgOiAnbGlnaHQnKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVMYW5ndWFnZShlOiBTZWxlY3RCb3hWYWx1ZUNoYW5nZWRFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldExhbmd1YWdlKGUudmFsdWUpO1xyXG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdvVG9Mb2dpbigpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZ0VG9nZ2xlTWVudS5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbG9naW4nXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgY29uc3QgZmlyc3RJdGVtID0gdGhpcy5tZW51SXRlbXMoKS5maW5kKChpdGVtKSA9PiBpdGVtLnZpc2libGUgJiYgIWl0ZW0uZGlzYWJsZWQpO1xyXG4gICAgICB0aGlzLmV2dFRvZ2dsZU1lbnUuZW1pdChmYWxzZSk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtmaXJzdEl0ZW0/LnBhdGggPz8gJ2xvZ2luJ10pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhc2lkZVxuICBjbGFzcz1cImZsZXggaC1zY3JlZW4gdy1bMjUwcHhdIGZsZXgtY29sIGdhcC00IG92ZXJmbG93LWhpZGRlbiByb3VuZGVkIGJnLXppbmMtODAwLzYwIHAtNCBzaGFkb3cgYmFja2Ryb3AtYmx1ci14bFwiPlxuICA8IS0tIHVzZXIgIC0tPlxuICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0xIGdhcC0yXCI+XG4gICAgICBAaWYgKHVzZXIoKTsgYXMgdXNlcikge1xuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJJQ09OLlVTRVJcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC0xIHRydW5jYXRlXCI+e3sgdXNlci51c2VybmFtZSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZHgtYnV0dG9uIFtpY29uXT1cIidjbG9zZSdcIiAob25DbGljayk9XCJldnRUb2dnbGVNZW51LmVtaXQoZmFsc2UpXCI+PC9keC1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuXCI+XG4gICAgPCEtLSBtZW51ICAtLT5cbiAgICBAaWYgKG1lbnVJdGVtcygpLmxlbmd0aCkge1xuICAgICAgPG5hdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudUl0ZW1zKCk7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICAgIEBpZiAoaXRlbS52aXNpYmxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZ2FwLTIgcm91bmRlZCBwLTIgIXRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnaG92ZXI6YmctemluYy02MDAvNjAnOiAhaXRlbS5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cnNvci1hdXRvICFvcGFjaXR5LTI1JzogaXRlbS5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS5kaXNhYmxlZCA/IG51bGwgOiBpdGVtLnBhdGhcIlxuICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImJnLXppbmMtNjAwLzYwXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJldnRUb2dnbGVNZW51LmVtaXQoZmFsc2UpXCI+XG4gICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImJhc2lzLTZcIiBbaWNvbl09XCJpdGVtLmljb25cIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtMSB0cnVuY2F0ZVwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIC1yaWdodC0xIC10b3AtMSBoLTMgdy0zIHJvdW5kZWQtZnVsbCBiZy1yZWQtNTAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmF2PlxuICAgIH1cblxuICAgIEBpZiAobWVudUludGVyYWN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgPGhyIGNsYXNzPVwibXktNCBoLXB4IGJvcmRlci0wIGJnLWdyYXktNjAwXCIgLz5cbiAgICAgIDx1bCBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBtZW51SW50ZXJhY3Rpb25zKCk7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICBAaWYgKGl0ZW0uZGF0YS50eXBlID09PSAnYnV0dG9uJykge1xuICAgICAgICAgICAgPGxpIGNsYXNzPVwiaXRlbS1zZXR0aW5nLWJ1dHRvblwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkeC10aGVtZS1tYXRlcmlhbC10eXBvZ3JhcGh5IGZsZXggaC0xMiB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQgcC00XCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0uZGF0YS5vbkNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImJhc2lzLTZcIiBbaWNvbl09XCJpdGVtLmRhdGEuaWNvblwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtMSB0cnVuY2F0ZVwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9IEBlbHNlIGlmIChpdGVtLmRhdGEudHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImZsZXggaC0xMiBpdGVtcy1jZW50ZXIgZ2FwLTQgcm91bmRlZCBiZy16aW5jLTYwMC82MCBwLTMgc2hhZG93XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC0xIGJhc2lzLTI0XCJcbiAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJpZFwiXG4gICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbS5kYXRhLmNvbWJvc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0uZGF0YS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgc3R5bGluZ01vZGU9XCJ1bmRlcmxpbmVkXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIml0ZW0uZGF0YS5vblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgfVxuXG4gICAgPCEtLSBzZXR0aW5nICAtLT5cbiAgICA8aHIgY2xhc3M9XCJteS00IGgtcHggYm9yZGVyLTAgYmctZ3JheS02MDBcIiAvPlxuICAgIDx1bCBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgIDxsaSBjbGFzcz1cImZsZXggaC0xMiBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZCBiZy16aW5jLTYwMC82MCBwLTQgdGV4dC13aGl0ZSBzaGFkb3dcIj5cbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJiYXNpcy02XCIgW2ljb25dPVwiZGFya01vZGUoKSA/IElDT04uREFSS19NT0RFIDogSUNPTi5MSUdIVF9NT0RFXCI+PC9mYS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtMSB0cnVuY2F0ZVwiPnt7ICdsYmxEYXJrTW9kZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDxkeC1zd2l0Y2ggW3ZhbHVlXT1cImRhcmtNb2RlKClcIiAob25WYWx1ZUNoYW5nZWQpPVwidXBkYXRlVGhlbWUoJGV2ZW50KVwiPjwvZHgtc3dpdGNoPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cImZsZXggaC0xMiBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZCBiZy16aW5jLTYwMC82MCBwLTQgdGV4dC13aGl0ZSBzaGFkb3dcIj5cbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJiYXNpcy02XCIgW2ljb25dPVwiSUNPTi5MQU5HVUFHRVwiPjwvZmEtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4LTEgdHJ1bmNhdGVcIj57eyAnbGJsTGFuZ3VhZ2UnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8ZHgtc2VsZWN0LWJveFxuICAgICAgICAgIGNsYXNzPVwiYmFzaXMtMTZcIlxuICAgICAgICAgIFtpdGVtc109XCJ0cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUluZm8oKS5sYW5ndWFnZXNTdXBwb3J0ZWRcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ0cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUluZm8oKS5sYW5ndWFnZVwiXG4gICAgICAgICAgc3R5bGluZ01vZGU9XCJ1bmRlcmxpbmVkXCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwidXBkYXRlTGFuZ3VhZ2UoJGV2ZW50KVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgIDwvbGk+XG4gICAgICA8IS0tIFVzZXIgfCBudWxsIHwgdW5kZWZpbmVkIC0tPlxuICAgICAgQGlmICh1c2VyKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICA8bGk+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZCBib3JkZXIgYm9yZGVyLXdoaXRlIHAtNCB0ZXh0LXdoaXRlIHNoYWRvdyB0cmFuc2l0aW9uIGR1cmF0aW9uLTMwMCBlYXNlLWluLW91dCBob3ZlcjpiZy13aGl0ZSBob3Zlcjp0ZXh0LWdyYXktODAwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1c2VyKCkgPyBsb2dvdXQoKSA6IGdvVG9Mb2dpbigpXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ1c2VyKCkgPyBJQ09OLkxPR09VVCA6IElDT04uTE9HSU5cIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtMSB0cnVuY2F0ZVwiPnt7XG4gICAgICAgICAgICAgICh1c2VyKCkgPyAnbGJsTG9nb3V0JyA6ICdsYmxMb2dpbicpIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICA8L2Rpdj5cblxuICA8IS0tIGxvZ28gIC0tPlxuICA8ZGl2IGNsYXNzPVwibXQtYXV0byBmbGV4IGNvbnRlbnQtZW5kIGJvcmRlci1iIGJvcmRlci13aGl0ZVwiPlxuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwibWItMSBtbC1hdXRvIGgtOFwiXG4gICAgICBbbmdTcmNdPVwicGF0aEJyYW5kTG9nbygpXCJcbiAgICAgIGFsdD1cIkJyYW5kIGxvZ29cIlxuICAgICAgW2hlaWdodF09XCIzMlwiXG4gICAgICBbd2lkdGhdPVwiODhcIiAvPlxuICA8L2Rpdj5cbjwvYXNpZGU+XG5cbiJdfQ==
@@ -1,9 +0,0 @@
1
- /*
2
- * Public API Surface of uni-component-tw
3
- */
4
- export * from './lib/uni-article/uni-article.component';
5
- export * from './lib/uni-header/uni-header.component';
6
- export * from './lib/uni-login-modal/uni-login-modal.component';
7
- export * from './lib/uni-pie-chart/uni-pie-chart.component';
8
- export * from './lib/uni-side-menu/uni-side-menu.component';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdW5pLWNvbXBvbmVudC10d1xyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VuaS1hcnRpY2xlL3VuaS1hcnRpY2xlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VuaS1oZWFkZXIvdW5pLWhlYWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bmktbG9naW4tbW9kYWwvdW5pLWxvZ2luLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VuaS1waWUtY2hhcnQvdW5pLXBpZS1jaGFydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bmktc2lkZS1tZW51L3VuaS1zaWRlLW1lbnUuY29tcG9uZW50JztcclxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLWNvbXBvbmVudC10dy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL3VuaS1jb21wb25lbnQtdHcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==