cats-charts 0.0.37 → 0.0.39

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.
package/README.md CHANGED
@@ -28,6 +28,7 @@ Install the package along with required dependencies:
28
28
 
29
29
  ```bash
30
30
  npm install cats-charts
31
+
31
32
  ```
32
33
 
33
34
  # 🚀 Usage
@@ -304,8 +305,139 @@ https://echarts.apache.org/en/option.html#series-sankey
304
305
  - Doughnut Chart
305
306
  - Stacked Area Chart
306
307
  - Sankey Chart
308
+ - Heatmap Chart
307
309
  - Custom Charts
308
310
 
311
+ * Bar Chart
312
+ * Line Chart
313
+ * Area Chart
314
+ * Pie Chart
315
+ * Doughnut Chart
316
+ * Stacked Area Chart
317
+ * Sankey Chart
318
+ * Custom Charts
319
+
320
+ ---
321
+
322
+ # Heatmap Chart
323
+
324
+ The heatmap component renders category-based intensity data using Apache ECharts.
325
+ Use `[xIndex, yIndex, value]` tuples, where `xIndex` points to `xAxisData` and `yIndex` points to `yAxisData`.
326
+
327
+ ## Import
328
+
329
+ ```ts
330
+ import { Heatmap } from 'cats-charts';
331
+
332
+ @Component({
333
+ selector: 'app-root',
334
+ standalone: true,
335
+ imports: [Heatmap],
336
+ templateUrl: './app.html',
337
+ })
338
+ export class App {}
339
+ ```
340
+
341
+ ## HTML
342
+
343
+ ```html
344
+ <div style="width: 100%; height: 340px">
345
+ <lib-heatmap
346
+ [config]="heatmapConfig"
347
+ [theme]="selectedTheme"
348
+ [events]="['click', 'contextmenu']"
349
+ (chartEvent)="handleChartEvent($event)"
350
+ ></lib-heatmap>
351
+ </div>
352
+ ```
353
+
354
+ ## TypeScript
355
+
356
+ ```ts
357
+ heatmapConfig = {
358
+ xAxisData: ['00:00', '01:00', '02:00', '03:00', '04:00', '05:00'],
359
+ yAxisData: ['eth0', 'eth1', 'wlan0', 'vlan10', 'vlan20'],
360
+
361
+ data: [
362
+ [0, 0, 20],
363
+ [1, 0, 60],
364
+ [2, 0, 0],
365
+ [3, 0, 40],
366
+ [4, 0, 80],
367
+ [5, 0, 100],
368
+
369
+ [0, 1, 40],
370
+ [1, 1, 0],
371
+ [2, 1, 20],
372
+ [3, 1, 60],
373
+ [4, 1, 100],
374
+ [5, 1, 80],
375
+ ] as [number, number, number][],
376
+
377
+ min: 0,
378
+ max: 100,
379
+ showTooltip: true,
380
+
381
+ grid: {
382
+ left: 58,
383
+ right: 18,
384
+ top: 20,
385
+ bottom: 46,
386
+ containLabel: false,
387
+ },
388
+
389
+ xAxis: {
390
+ axisLabel: { color: '#6b7280' },
391
+ axisLine: { lineStyle: { color: '#9ca3af' } },
392
+ axisTick: { show: true },
393
+ },
394
+
395
+ yAxis: {
396
+ inverse: true,
397
+ axisLabel: { color: '#6b7280' },
398
+ axisLine: { show: false },
399
+ axisTick: { show: true },
400
+ },
401
+
402
+ visualMap: {
403
+ type: 'piecewise',
404
+ pieces: [
405
+ { min: 0, max: 20, label: '20%', color: '#fde6bd' },
406
+ { min: 21, max: 40, label: '40%', color: '#ffd85a' },
407
+ { min: 41, max: 60, label: '60%', color: '#ffb247' },
408
+ { min: 61, max: 80, label: '80%', color: '#ff0b1f' },
409
+ { min: 81, max: 100, label: '100%', color: '#a51d29' },
410
+ ],
411
+ },
412
+
413
+ series: {
414
+ itemStyle: {
415
+ borderWidth: 0,
416
+ },
417
+ },
418
+ };
419
+ ```
420
+
421
+ ## Heatmap Config Options
422
+
423
+ | Option | Type | Description |
424
+ | ---------------- | -------------------------- | ----------------------------------------------------------------------- |
425
+ | xAxisData | string[] | Labels for the x-axis |
426
+ | yAxisData | string[] | Labels for the y-axis |
427
+ | data | [number, number, number][] | Heatmap cells as `[xIndex, yIndex, value]` |
428
+ | min | number | Minimum value for color mapping |
429
+ | max | number | Maximum value for color mapping |
430
+ | colors | string[] | Continuous color range when `visualMap.pieces` is not used |
431
+ | visualMap | any | ECharts visual map config. `pieces` also drives the custom legend pills |
432
+ | grid | object | ECharts grid config |
433
+ | xAxis | any | Extra ECharts x-axis config |
434
+ | yAxis | any | Extra ECharts y-axis config |
435
+ | showTooltip | boolean | Enables or disables tooltip |
436
+ | tooltipFormatter | function | Custom tooltip formatter |
437
+ | showLabel | boolean | Shows value labels inside cells |
438
+ | labelFormatter | string \| function | Cell label formatter |
439
+ | series | any \| any[] | Extra ECharts heatmap series config |
440
+
309
441
  ---
310
442
 
311
443
  # 🎨 Themes
@@ -2,8 +2,8 @@ import * as i0 from '@angular/core';
2
2
  import { EventEmitter, Output, Input, Component, Injectable, HostListener, ChangeDetectionStrategy } from '@angular/core';
3
3
  import * as echarts from 'echarts/core';
4
4
  import { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';
5
- import { LineChart, BarChart as BarChart$1, PieChart as PieChart$1, CustomChart, SankeyChart as SankeyChart$1 } from 'echarts/charts';
6
- import { GridComponent, TooltipComponent, LegendComponent, TitleComponent, DatasetComponent, DataZoomComponent, GraphicComponent } from 'echarts/components';
5
+ import { LineChart, BarChart as BarChart$1, PieChart as PieChart$1, CustomChart, SankeyChart as SankeyChart$1, HeatmapChart } from 'echarts/charts';
6
+ import { GridComponent, TooltipComponent, LegendComponent, TitleComponent, DatasetComponent, DataZoomComponent, GraphicComponent, VisualMapComponent } from 'echarts/components';
7
7
  import { CanvasRenderer } from 'echarts/renderers';
8
8
 
9
9
  class RightClickCard {
@@ -388,6 +388,47 @@ class Charts {
388
388
 
389
389
  </div>
390
390
  `;
391
+ }
392
+ heatmapTooltipFormatter(params, config) {
393
+ const value = params.value ?? [];
394
+ const xAxisLabel = config.xAxisData?.[value[0]] ?? value[0] ?? '-';
395
+ const yAxisLabel = config.yAxisData?.[value[1]] ?? value[1] ?? '-';
396
+ const heatValue = value[2] ?? '-';
397
+ const color = params.color ?? '#38bdf8';
398
+ return `
399
+ <div style="
400
+ background:#ffffff;
401
+ padding:12px 14px;
402
+ border-radius:8px;
403
+ border:1px solid #f0f0f0;
404
+ box-shadow:0px 10.55px 23.39px -3.52px #0a0d1214;
405
+ min-width:160px;
406
+ font-family: Inter, sans-serif;
407
+ ">
408
+ <div style="
409
+ display:flex;
410
+ align-items:center;
411
+ gap:8px;
412
+ color:#111;
413
+ font-size:14px;
414
+ font-weight:600;
415
+ margin-bottom:8px;
416
+ ">
417
+ <span style="
418
+ width:12px;
419
+ height:12px;
420
+ background:${color};
421
+ border-radius:3px;
422
+ display:inline-block;
423
+ "></span>
424
+ <span>${config.seriesName ?? config.title ?? 'Heatmap'}</span>
425
+ </div>
426
+
427
+ <div style="font-size:13px;color:#434A51;margin-top:4px;">
428
+ ${xAxisLabel} / ${yAxisLabel}: <b style="color:#111;font-weight:600;">${heatValue}</b>
429
+ </div>
430
+ </div>
431
+ `;
391
432
  }
392
433
  timelineChartTooltipFormatter(params) {
393
434
  const d = params.data;
@@ -1666,6 +1707,16 @@ class CustomChartComponent {
1666
1707
  height: height,
1667
1708
  },
1668
1709
  style: api.style(),
1710
+ emphasis: {
1711
+ style: {
1712
+ stroke: '#434A51',
1713
+ lineWidth: 1,
1714
+ shadowBlur: 12,
1715
+ shadowColor: '#0A0D124D',
1716
+ shadowOffsetX: 4,
1717
+ shadowOffsetY: 4,
1718
+ },
1719
+ },
1669
1720
  };
1670
1721
  };
1671
1722
  buildLegend() {
@@ -2083,9 +2134,193 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2083
2134
  type: Output
2084
2135
  }] } });
2085
2136
 
2137
+ echarts.use([
2138
+ HeatmapChart,
2139
+ GridComponent,
2140
+ TooltipComponent,
2141
+ TitleComponent,
2142
+ VisualMapComponent,
2143
+ CanvasRenderer,
2144
+ ]);
2145
+ class Heatmap {
2146
+ chartService;
2147
+ config;
2148
+ theme;
2149
+ events = [];
2150
+ chartEvent = new EventEmitter();
2151
+ chartOption = {};
2152
+ legendItems = [];
2153
+ chartInstance;
2154
+ constructor(chartService) {
2155
+ this.chartService = chartService;
2156
+ }
2157
+ ngOnChanges(changes) {
2158
+ if (!this.config)
2159
+ return;
2160
+ if (changes['theme'] && this.chartInstance) {
2161
+ this.chartInstance.dispose();
2162
+ this.chartInstance = undefined;
2163
+ }
2164
+ this.chartOption = this.buildOption(this.config);
2165
+ this.legendItems = this.buildLegendItems(this.config);
2166
+ if (this.chartInstance) {
2167
+ this.chartInstance.setOption(this.chartOption, true);
2168
+ this.bindEvents();
2169
+ }
2170
+ }
2171
+ buildOption(config) {
2172
+ const data = config.data ?? [];
2173
+ const values = data.map((item) => item[2]).filter((value) => Number.isFinite(value));
2174
+ const min = config.min ?? (values.length ? Math.min(...values) : 0);
2175
+ const max = config.max ?? (values.length ? Math.max(...values) : 100);
2176
+ const baseSeries = {
2177
+ name: config.seriesName ?? config.title ?? 'Heatmap',
2178
+ type: 'heatmap',
2179
+ data,
2180
+ label: {
2181
+ show: config.showLabel ?? false,
2182
+ color: config.labelColor ?? '#111827',
2183
+ formatter: config.labelFormatter,
2184
+ },
2185
+ emphasis: {
2186
+ itemStyle: {
2187
+ shadowBlur: 10,
2188
+ shadowColor: 'rgba(0, 0, 0, 0.25)',
2189
+ },
2190
+ },
2191
+ };
2192
+ return {
2193
+ backgroundColor: config.backgroundColor || 'transparent',
2194
+ title: {
2195
+ show: config.showTitle ?? !!config.title,
2196
+ text: config.title,
2197
+ left: config.titlePosition || 'center',
2198
+ },
2199
+ tooltip: {
2200
+ show: config.showTooltip ?? true,
2201
+ trigger: 'item',
2202
+ backgroundColor: 'transparent',
2203
+ borderWidth: 0,
2204
+ padding: 0,
2205
+ confine: true,
2206
+ ...config.tooltip,
2207
+ formatter: config.tooltipFormatter ||
2208
+ ((params) => this.chartService.heatmapTooltipFormatter(params, config)),
2209
+ },
2210
+ grid: {
2211
+ left: config.grid?.left ?? '3%',
2212
+ right: config.grid?.right ?? '4%',
2213
+ top: config.grid?.top ?? '10%',
2214
+ bottom: config.grid?.bottom ?? '8%',
2215
+ height: config.grid?.height,
2216
+ containLabel: config.grid?.containLabel ?? true,
2217
+ },
2218
+ xAxis: {
2219
+ type: 'category',
2220
+ data: config.xAxisData ?? [],
2221
+ splitArea: { show: true },
2222
+ ...config.xAxis,
2223
+ },
2224
+ yAxis: {
2225
+ type: 'category',
2226
+ data: config.yAxisData ?? [],
2227
+ splitArea: { show: true },
2228
+ ...config.yAxis,
2229
+ },
2230
+ visualMap: {
2231
+ show: config.visualMap?.show ?? false,
2232
+ min,
2233
+ max,
2234
+ calculable: true,
2235
+ orient: 'horizontal',
2236
+ left: 'center',
2237
+ bottom: 0,
2238
+ inRange: {
2239
+ color: config.colors ?? ['#e0f2fe', '#38bdf8', '#0369a1'],
2240
+ },
2241
+ ...config.visualMap,
2242
+ },
2243
+ series: this.buildSeries(config.series, baseSeries),
2244
+ };
2245
+ }
2246
+ buildLegendItems(config) {
2247
+ const pieces = config.visualMap?.pieces;
2248
+ if (Array.isArray(pieces) && pieces.length) {
2249
+ return pieces.map((piece) => ({
2250
+ label: piece.label ?? `${piece.max ?? piece.value ?? piece.min}%`,
2251
+ color: piece.color ?? piece.itemStyle?.color ?? '#e5e7eb',
2252
+ }));
2253
+ }
2254
+ const colors = config.colors ?? ['#e0f2fe', '#38bdf8', '#0369a1'];
2255
+ const step = colors.length ? 100 / colors.length : 100;
2256
+ return colors.map((color, index) => ({
2257
+ label: `${Math.round(step * (index + 1))}%`,
2258
+ color,
2259
+ }));
2260
+ }
2261
+ buildSeries(seriesConfig, baseSeries) {
2262
+ if (Array.isArray(seriesConfig)) {
2263
+ return seriesConfig.map((series) => ({
2264
+ ...baseSeries,
2265
+ ...series,
2266
+ }));
2267
+ }
2268
+ if (seriesConfig) {
2269
+ return [
2270
+ {
2271
+ ...baseSeries,
2272
+ ...seriesConfig,
2273
+ },
2274
+ ];
2275
+ }
2276
+ return [baseSeries];
2277
+ }
2278
+ onChartInit(ec) {
2279
+ this.chartInstance = ec;
2280
+ this.bindEvents();
2281
+ }
2282
+ bindEvents() {
2283
+ if (!this.chartInstance)
2284
+ return;
2285
+ const chartInstance = this.chartInstance;
2286
+ chartInstance.off();
2287
+ this.events.forEach((eventName) => {
2288
+ chartInstance.on(eventName, (params) => {
2289
+ if (eventName === 'contextmenu' && params.event?.event) {
2290
+ params.event.event.preventDefault();
2291
+ }
2292
+ this.chartEvent.emit({
2293
+ type: eventName,
2294
+ data: params,
2295
+ });
2296
+ });
2297
+ });
2298
+ }
2299
+ ngOnDestroy() {
2300
+ if (this.chartInstance) {
2301
+ this.chartInstance.off();
2302
+ this.chartInstance.dispose();
2303
+ }
2304
+ }
2305
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Heatmap, deps: [{ token: Charts }], target: i0.ɵɵFactoryTarget.Component });
2306
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: Heatmap, isStandalone: true, selector: "lib-heatmap", inputs: { config: "config", theme: "theme", events: "events" }, outputs: { chartEvent: "chartEvent" }, providers: [provideEchartsCore({ echarts })], usesOnChanges: true, ngImport: i0, template: "<div class=\"heatmap-wrapper\">\n <div class=\"heatmap-legend\">\n @for (item of legendItems; track item.label) {\n <div class=\"heatmap-legend-item\">\n <span class=\"heatmap-legend-swatch\" [style.background]=\"item.color\"></span>\n <span>{{ item.label }}</span>\n </div>\n }\n </div>\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n</div>\n", styles: [".heatmap-wrapper{width:100%;height:100%;display:flex;flex-direction:column}.heatmap-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:4px 12px 12px}.heatmap-legend-item{min-width:92px;height:34px;display:inline-flex;align-items:center;gap:10px;padding:0 12px;border:1px solid #f3dfbd;border-radius:4px;background:#fffdf8;color:#2f2f2f;font-size:16px;line-height:1}.heatmap-legend-item:nth-child(4),.heatmap-legend-item:nth-child(5){border-color:#f1d6d8;background:#fff5f5}.heatmap-legend-swatch{width:14px;height:14px;flex:0 0 14px;border-radius:3px}.chart-container{width:100%;flex:1;min-height:0}\n"], dependencies: [{ kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2307
+ }
2308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Heatmap, decorators: [{
2309
+ type: Component,
2310
+ args: [{ selector: 'lib-heatmap', standalone: true, imports: [NgxEchartsDirective], providers: [provideEchartsCore({ echarts })], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"heatmap-wrapper\">\n <div class=\"heatmap-legend\">\n @for (item of legendItems; track item.label) {\n <div class=\"heatmap-legend-item\">\n <span class=\"heatmap-legend-swatch\" [style.background]=\"item.color\"></span>\n <span>{{ item.label }}</span>\n </div>\n }\n </div>\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n</div>\n", styles: [".heatmap-wrapper{width:100%;height:100%;display:flex;flex-direction:column}.heatmap-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:4px 12px 12px}.heatmap-legend-item{min-width:92px;height:34px;display:inline-flex;align-items:center;gap:10px;padding:0 12px;border:1px solid #f3dfbd;border-radius:4px;background:#fffdf8;color:#2f2f2f;font-size:16px;line-height:1}.heatmap-legend-item:nth-child(4),.heatmap-legend-item:nth-child(5){border-color:#f1d6d8;background:#fff5f5}.heatmap-legend-swatch{width:14px;height:14px;flex:0 0 14px;border-radius:3px}.chart-container{width:100%;flex:1;min-height:0}\n"] }]
2311
+ }], ctorParameters: () => [{ type: Charts }], propDecorators: { config: [{
2312
+ type: Input
2313
+ }], theme: [{
2314
+ type: Input
2315
+ }], events: [{
2316
+ type: Input
2317
+ }], chartEvent: [{
2318
+ type: Output
2319
+ }] } });
2320
+
2086
2321
  /**
2087
2322
  * Generated bundle index. Do not edit.
2088
2323
  */
2089
2324
 
2090
- export { BarChart, Charts, CustomChartComponent, DoughnutChart, LinesChart, PieChart, RightClickCard, SankeyChart, StackedAreaChart };
2325
+ export { BarChart, Charts, CustomChartComponent, DoughnutChart, Heatmap, LinesChart, PieChart, RightClickCard, SankeyChart, StackedAreaChart };
2091
2326
  //# sourceMappingURL=cats-charts.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cats-charts.mjs","sources":["../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.ts","../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.html","../../../projects/charts-lib/src/lib/service/charts.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.html","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.ts","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.html","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.ts","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.html","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.ts","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.html","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.ts","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.html","../../../projects/charts-lib/src/lib/components/custom-chart/custom-chart.ts","../../../projects/charts-lib/src/lib/components/custom-chart/custom-chart.html","../../../projects/charts-lib/src/lib/components/sankey-chart/sankey-chart.ts","../../../projects/charts-lib/src/lib/components/sankey-chart/sankey-chart.html","../../../projects/charts-lib/src/cats-charts.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-right-click-card',\n imports: [],\n templateUrl: './right-click-card.html',\n styleUrl: './right-click-card.scss',\n})\nexport class RightClickCard {\n @Input() cardPosition: any;\n @Input() cardOptions: any;\n @Output() contextMenuClick = new EventEmitter<any>();\n \n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n // this.closeMenu();\n }\n}\n","<div\n class=\"context-card\"\n [style.left.px]=\"cardPosition.x\"\n [style.top.px]=\"cardPosition.y\"\n (click)=\"$event.stopPropagation()\"\n>\n @for (item of cardOptions; track item.value) {\n <div class=\"context-item\" (click)=\"onMenuClick(item)\">\n @if (item.icon) {\n <img [src]=\"item.icon\" alt=\"icon\" />\n }\n\n <span>{{ item.label }}</span>\n </div>\n }\n</div>\n","import { Injectable } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { DoughnutChartConfig, PieChartConfig, SankeyLink, SankeyNode } from '../modal/charts-modal';\n@Injectable({\n providedIn: 'root',\n})\nexport class Charts {\n legendSelected: Record<string, boolean> = {};\n defaultColors: string[] = ['#22c55e', '#3b82f6', '#ef4444', '#6b7280'];\n\n buildGraphicLegend(total: number | null, config: any, chartInstance: any, chartType?: string) {\n const pillHeight = 28;\n const spacing = 14;\n const indicatorWidth = 12;\n const padding = 8;\n const font = '14px sans-serif';\n\n const containerWidth = chartInstance?.getWidth?.() ?? 800;\n const maxWidth = containerWidth * (config.legendContainerWidth ?? 0.7);\n\n const selectedMap = chartInstance?.getOption()?.legend?.[0]?.selected || {};\n let colorIndex = 0;\n const pills = (chartType === 'line' || chartType === 'bar' ? config.series : config.data).map(\n (item: any) => {\n const hasCustomColors = Array.isArray(config.colors) && config.colors.length > 0;\n const color =\n total === 0\n ? '#E6E7E8'\n : (item?.itemStyle?.color ??\n (hasCustomColors\n ? config.colors[colorIndex % config.colors.length]\n : this.defaultColors[colorIndex % this.defaultColors.length]));\n if (\n !item?.itemStyle?.color ||\n (item?.itemStyle?.color && Object.keys(selectedMap).length && !selectedMap[item.name])\n ) {\n colorIndex += 1;\n }\n const nameRect = echarts.format.getTextRect(item.name, font);\n const valueRect =\n chartType === 'line' || chartType === 'bar'\n ? { width: 0 }\n : echarts.format.getTextRect(\n String(config.valueFormatter ? config.valueFormatter(item.value) : item.value),\n font,\n );\n\n const pillWidth =\n padding +\n indicatorWidth +\n 6 +\n nameRect.width +\n (chartType === 'line' || chartType === 'bar' ? 0 : 8 + valueRect.width) +\n padding;\n\n return { item, color, pillWidth };\n },\n );\n\n // 🔹 Build rows dynamically\n const rows: any[] = [];\n let currentRow: any[] = [];\n let rowWidth = 0;\n\n pills.forEach((pill: any) => {\n if (rowWidth + pill.pillWidth > maxWidth && currentRow.length) {\n rows.push({ pills: currentRow, width: rowWidth });\n currentRow = [];\n rowWidth = 0;\n }\n\n currentRow.push(pill);\n rowWidth += pill.pillWidth + spacing;\n });\n\n if (currentRow.length) rows.push({ pills: currentRow, width: rowWidth });\n\n // 🔹 Build graphic children\n let yOffset = 0;\n const children: any[] = [];\n\n rows.forEach((row) => {\n let xOffset =\n config.legendAlign === 'center' && config.legendDirection !== 'vertical'\n ? (maxWidth - row.width) / 2\n : maxWidth;\n\n row.pills.forEach((pill: any) => {\n const isSelected = selectedMap[pill.item.name] !== false;\n const isDisabled = pill.item.value === 0;\n children.push({\n type: 'group',\n left: xOffset,\n top: yOffset,\n width: pill.pillWidth,\n height: pillHeight,\n cursor: isDisabled ? 'default' : 'pointer',\n\n onclick: () => {\n if (isDisabled) return;\n chartInstance.dispatchAction({\n type: 'legendToggleSelect',\n name: pill.item.name,\n });\n\n chartInstance.setOption({\n graphic: this.buildGraphicLegend(total, config, chartInstance, chartType),\n });\n },\n\n children: [\n {\n type: 'rect',\n shape: {\n width: pill.pillWidth,\n height: pillHeight,\n r: 4,\n },\n style: {\n fill:\n isSelected && !isDisabled\n ? this.hexToRgba(pill.color, total === 0 ? 0.3 : 0.03)\n : '#F2F2F7',\n stroke: isSelected && !isDisabled ? this.hexToRgba(pill.color, 0.3) : '#D1D1D6',\n lineWidth: 1,\n },\n },\n\n {\n type: 'rect',\n shape: { width: 12, height: config.legendIndicatorHeight ?? 12, r: 2 },\n left: padding,\n top: (pillHeight - (config.legendIndicatorHeight ?? 12)) / 2,\n style: {\n fill: isSelected && !isDisabled ? pill.color : '#C7C7CC',\n },\n },\n\n {\n type: 'text',\n left: padding + indicatorWidth + 6,\n top: (pillHeight - indicatorWidth) / 2,\n style: {\n text: `${pill.item.name}${chartType === 'line' || chartType === 'bar' ? '' : ':'}`,\n fontSize: 14,\n fontWeight: 400,\n fill: isSelected && !isDisabled && total !== 0 ? '#1C1C1E' : '#81858A',\n textVerticalAlign: 'middle',\n },\n },\n\n ...(chartType === 'line' || chartType === 'bar'\n ? []\n : [\n {\n type: 'text',\n right: padding,\n top: (pillHeight - indicatorWidth) / 2,\n style: {\n text:\n total === 0\n ? '-'\n : config.valueFormatter\n ? config.valueFormatter(pill.item.value)\n : pill.item.value,\n fontSize: 14,\n fontWeight: 500,\n fill: isSelected && !isDisabled ? '#1C1C1E' : '#81858A',\n textAlign: 'right',\n textVerticalAlign: 'middle',\n },\n },\n ]),\n ],\n });\n\n xOffset += pill.pillWidth + spacing;\n });\n\n yOffset += pillHeight + spacing;\n });\n\n // 🔹 Position logic\n const positionConfig: any = {};\n switch (config.legendPosition) {\n case 'top':\n positionConfig.top = 20;\n break;\n case 'bottom':\n positionConfig.bottom = 20;\n break;\n case 'left':\n positionConfig.left = 20;\n break;\n case 'right':\n positionConfig.right = 20;\n break;\n }\n\n // ALIGNMENT (Cross-Axis)\n if (config.legendPosition === 'top' || config.legendPosition === 'bottom') {\n // Horizontal area → align horizontally\n if (config.legendAlign === 'center') {\n positionConfig.left = 'center';\n } else if (config.legendAlign === 'right') {\n positionConfig.right = 20;\n } else {\n positionConfig.left = 20;\n }\n } else {\n // Vertical area → align vertically\n if (config.legendAlign === 'center') {\n positionConfig.top = 'middle';\n } else if (config.legendAlign === 'right') {\n positionConfig.bottom = 20;\n } else {\n positionConfig.top = 20;\n }\n }\n return [\n {\n id: 'customLegend',\n type: 'group',\n ...positionConfig,\n width: maxWidth,\n height: yOffset,\n children,\n },\n ];\n }\n buildCenterGraphic(config: any, total: number) {\n if (!config?.centerLabel?.show) return [];\n\n const centerConfig = config.centerLabel;\n const titleFont = centerConfig.fontSizeTitle ?? 14;\n const valueFont = centerConfig.fontSizeValue ?? 22;\n\n // Use external top if provided, default to 'center'\n // config.bottom\n const groupTop = centerConfig.top ?? 'center';\n const groupLeft = centerConfig.left ?? 'center';\n\n // Offsets relative to groupTop\n const titleOffset = -valueFont / 2;\n const valueOffset = titleFont / 2;\n\n return [\n {\n id: 'centerLabel',\n type: 'group',\n left: groupLeft,\n top: groupTop,\n silent: true,\n children: [\n ...(centerConfig.title\n ? [\n {\n type: 'text',\n style: {\n text: centerConfig.title ?? '',\n fontSize: titleFont,\n fill: centerConfig.titleColor ?? '#666',\n textAlign: 'center',\n textBaseline: 'middle',\n },\n top: titleOffset, // relative to groupTop\n },\n ]\n : []),\n {\n type: 'text',\n style: {\n text:\n centerConfig.type === 'custom' && centerConfig.formatter\n ? centerConfig.formatter(total, config.data)\n : (centerConfig.value ?? ''),\n fontSize: valueFont,\n fontWeight: 'bold',\n fill: centerConfig.valueColor ?? '#000',\n textAlign: 'center',\n textBaseline: 'middle',\n },\n top: valueOffset + (centerConfig?.valueTopSpace || 0), // relative to groupTop\n },\n ],\n },\n ];\n }\n hexToRgba(hex: string, alpha: number) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n pieTooltipFormatter(params: any, config: PieChartConfig | DoughnutChartConfig) {\n const color = params.color;\n const name = params.name;\n const value = params.value;\n const percent = params.percent;\n\n return `<div style=\"\n position: relative;\n background-color: #fff;\n padding: 8px 16px;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.08);\n display: flex;\n align-items: center;\n gap: 10px;\n \">\n <div style=\"\n position: absolute;\n left: -10px;\n top: 10px;\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid #ffffff;\n \"></div>\n\n <span style=\"\n width: 14px;\n height: 14px;\n background: ${color};\n border-radius: 3px;\n display: inline-block;\n \"></span>\n\n <span style=\"\n font-size: 12px;\n color: #434A51;\n \">\n ${name}: <b style=\"color:#111; font-weight:600;\">${config.valueFormatter ? config.valueFormatter(value) : value}</b> ${config.showTooltipPercent ? '(' + percent + '%)' : ''}\n </span>\n </div>\n `;\n }\n barLineTooltipFormatter(params: any, chartType?: 'bar' | 'line') {\n if (!params || !params.length) return '';\n\n const date = params[0].axisValueLabel || params[0].name;\n\n let total = 0;\n let rows = '';\n\n params.forEach((item: any) => {\n const color = item.color;\n const name = item.seriesName;\n const value = item.value ?? 0;\n\n total += Number(value);\n\n rows += `\n <div style=\"\n display:flex;\n align-items:center;\n gap:8px;\n font-size:13px;\n color:#434A51;\n \">\n <span style=\"\n width:14px;\n height: ${chartType === 'line' ? '3px' : '14px'};\n background:${color};\n border-radius:3px;\n display:inline-block;\n \"></span>\n\n <span>${name}: <b style=\"color:#111;font-weight:600;\">${value}</b></span>\n </div>\n `;\n });\n\n return `\n <div style=\"\n border-radius: 8px;\n background-color: #ffffff;\n border: 1px solid #f0f0f0;\n box-shadow: 0px 10.55px 23.39px -3.52px #0a0d1214;\n min-width:190px;\n \">\n <div style=\"\n font-size:15px;\n font-weight:600;\n color:#111;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid #F0F0F0 ;\n \">\n ${date}\n </div>\n <div style=\"padding: 1rem; display: flex; flex-direction: column; gap: 6px\">\n ${rows}\n <div>\n <div style=\"\n font-size:13px;\n color:#434A51;\n padding-top: 0.5rem;\n \">\n Total: <b style=\"color:#111;font-weight:600;\">${total}</b>\n </div>\n\n </div>\n `;\n }\n\n timelineChartTooltipFormatter(params: any) {\n const d = params.data;\n\n return `<div style=\"\n position: relative;\n background:#fff;\n border-radius:8px;\n font-size:12px;\n color:#444;\n box-shadow:0 2px 8px rgba(0,0,0,0.15);\n min-width:220px;\n \">\n <div style=\"\n position: absolute;\n left: -10px;\n bottom: 10px;\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid #ffffff;\n \"></div>\n <div style=\"padding: 8px 16px; border-bottom:1px solid #E6E7E8;\">\n <div style=\"font-weight:400;color:#040D17;font-size: 14px;\">\n ${d.start || '00:00'} - ${d.end || '00:00'}\n </div>\n\n <div style=\"color:#81858A;margin-top:2px;\">\n ${d.date || 'NA'}\n </div>\n </div>\n <div style=\"padding: 8px 16px;\">\n <div>\n Work Mode: <b>${d.workMode || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n Productivity:\n <span style=\"color:#f59e0b;font-weight:600;\">\n ${d.productivity || 'NA'}\n </span>\n\n <span style=\"margin-left:12px;\">Activity:</span>\n <span style=\"color:#22c55e;font-weight:600;\">\n ${d.activity || 'NA'}\n </span>\n </div>\n\n <div style=\"margin-top:6px;\">\n System Presence: <b>${d.systemPresence || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n POW Source: <b>${d.powSource || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n Location: <b>${d.location || '-'}</b>\n </div>\n\n <div style=\"\n display:flex;\n gap:10px;\n align-items:center;\n margin-top:6px;\n \">\n Apps Used:\n <span style=\"color:#2563eb;font-weight:600;\">\n ${d.appsUsed || 0}\n </span>\n\n <span style=\"color:#ccc;\">|</span>\n\n Screenshots:\n <span style=\"color:#2563eb;font-weight:600;\">\n ${d.screenShots || 0}\n </span>\n </div>\n </div>\n </div>`;\n }\n getSankeyLevels(nodes: SankeyNode[] = [], links: SankeyLink[] = []) {\n const graph = new Map();\n const indegree = new Map();\n\n nodes.forEach((n) => {\n graph.set(n.name, []);\n indegree.set(n.name, 0);\n });\n\n links.forEach((link) => {\n graph.get(link.source).push(link.target);\n indegree.set(link.target, indegree.get(link.target) + 1);\n });\n\n const queue: any[] = [];\n const levelMap = new Map();\n\n indegree.forEach((deg, node) => {\n if (deg === 0) {\n queue.push(node);\n levelMap.set(node, 0);\n }\n });\n\n while (queue.length) {\n const current = queue.shift();\n const currentLevel = levelMap.get(current);\n\n graph.get(current).forEach((neighbor: any) => {\n const newLevel = currentLevel + 1;\n\n if (!levelMap.has(neighbor) || levelMap.get(neighbor) < newLevel) {\n levelMap.set(neighbor, newLevel);\n queue.push(neighbor);\n }\n });\n }\n\n return Math.max(...levelMap.values());\n }\n\n sankeyTooltipFormatter(params: any) {\n if (params.dataType === 'edge') {\n const { source, target, sourceDesc, targetDesc } = params.data;\n return `\n <div style=\"\n background: #fff;\n padding: 12px 14px;\n border-radius: 10px;\n box-shadow: 0 4px 14px rgba(0,0,0,0.15);\n min-width: 220px;\n font-family: sans-serif;\n \">\n <div style=\"margin-bottom:10px;\">\n <div style=\"font-size:12px; color:#777;\">Source: \n <span style=\"font-weight:600; color:#000\">${source}</span>\n </div>\n ${\n sourceDesc\n ? `<div style=\"font-size:11px; color:#aaa;\">\n ${sourceDesc}\n </div>`\n : ''\n }\n </div>\n \n <div>\n <div style=\"font-size:12px; color:#777;\">Destination: \n <span style=\"font-weight:600; color:#000\">${target}</span>\n </div>\n ${\n targetDesc\n ? `<div style=\"font-size:11px; color:#aaa;\">\n ${targetDesc}\n </div>`\n : ''\n }\n </div>\n </div>\n `;\n }\n return `\n <div style=\"\n background: #fff;\n padding: 10px;\n border-radius: 8px;\n box-shadow: 0 4px 10px rgba(0,0,0,0.15);\n \">\n ${params.name}: <b>${params.value}</b>\n </div>\n `;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n HostListener,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport { LineChart } from 'echarts/charts';\nimport {\n GridComponent,\n TooltipComponent,\n LegendComponent,\n TitleComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { LineChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\nimport { RightClickCard } from '../right-click-card';\n\necharts.use([\n LineChart,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n CanvasRenderer,\n TitleComponent,\n]);\n\n@Component({\n selector: 'lib-line-chart',\n standalone: true,\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './line-chart.html',\n styleUrls: ['./line-chart.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinesChart {\n @Input() config!: LineChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n chartOption: EChartsCoreOption = {};\n private chartInstance!: ECharts;\n cardPosition = { x: 0, y: 0 };\n openCard = false;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* ------------------ CHANGE HANDLING ------------------ */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n private buildOption() {\n this.chartOption = {\n backgroundColor: this.config.backgroundColor || 'transparent',\n color: this.config.colors || this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition || 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip,\n trigger: 'axis',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.barLineTooltipFormatter(params, 'line'),\n },\n legend: {\n show: false,\n },\n graphic: this.chartInstance\n ? [\n ...(this.config.hideLegend\n ? []\n : this.chartService?.buildGraphicLegend(\n null,\n this.config,\n this.chartInstance,\n 'line',\n )),\n ]\n : undefined,\n\n grid: this.config.isTrendChart\n ? { left: 0, right: 0, top: 0, bottom: 0 }\n : {\n left: this.config.gridLeft ?? 0,\n right: this.config.gridRight ?? 0,\n bottom: this.config.gridBottom ?? 0,\n top: this.config.gridTop ?? 0,\n containLabel: true,\n },\n\n xAxis: {\n show: !this.config.isTrendChart,\n type: 'category',\n // boundaryGap: false,\n data: this.config.xAxisData,\n axisLine: {\n show: this.config.showXAxisLine ?? true,\n },\n ...this.config.xAxis,\n },\n\n yAxis: {\n show: !this.config.isTrendChart,\n type: 'value',\n boundaryGap: this.config.isTrendChart ? [0.2] : undefined,\n\n axisLine: {\n show: this.config.showYAxisLine ?? true,\n },\n ...this.config.yAxis,\n },\n\n series: (this.config?.series || []).map((s) => {\n const lineColor = s.areaColor || '#3b82f6';\n return {\n type: 'line',\n smooth: s.smooth ?? true,\n areaStyle: s.area\n ? {\n color: {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: [\n {\n offset: 0,\n color: lineColor,\n },\n {\n offset: 1,\n color: this.chartService.hexToRgba(lineColor, 0),\n },\n ],\n },\n opacity: 0.4,\n }\n : undefined,\n ...s,\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'top',\n ...(s['label'] ? s['label'] : {}),\n },\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 0,\n ...(s['itemStyle'] ? s['itemStyle'] : {}),\n },\n };\n }),\n };\n }\n\n /* ------------------ INIT ------------------ */\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n // private bindEvents() {\n // if (!this.chartInstance) return;\n\n // this.chartInstance.off();\n\n // this.events.forEach((eventName) => {\n // this.chartInstance.on(eventName, (params: any) => {\n // if (eventName === 'contextmenu' && params.event?.event) {\n // params.event.event.preventDefault();\n\n // const container = this.chartInstance.getDom();\n // const rect = container.getBoundingClientRect();\n\n // this.cardPosition = {\n // x: params.event.event.clientX - rect.left,\n // y: params.event.event.clientY - rect.top,\n // };\n\n // this.openCard = true;\n // this.cdr.markForCheck();\n // }\n\n // this.chartEvent.emit({\n // type: eventName,\n // data: params,\n // });\n // });\n // });\n // }\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n /* ---- existing chart events ---- */\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n /* ---- RIGHT CLICK ANYWHERE IN GRID ---- */\n\n const zr = this.chartInstance.getZr();\n\n zr.off('contextmenu');\n\n zr.on('contextmenu', (event: any) => {\n event.event.preventDefault();\n\n const point = [event.offsetX, event.offsetY];\n\n // check if click is inside grid\n if (!this.chartInstance.containPixel({ gridIndex: 0 }, point)) return;\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.event.clientX - rect.left,\n y: event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: event,\n });\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n></div>\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\n\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { BarChart as EBarChart } from 'echarts/charts';\n\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n DatasetComponent,\n DataZoomComponent,\n} from 'echarts/components';\n\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { BarChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n EBarChart,\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n DatasetComponent,\n CanvasRenderer,\n DataZoomComponent,\n]);\n\n@Component({\n selector: 'lib-bar-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChart {\n @Input() config!: BarChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n chartOption!: EChartsCoreOption;\n\n private chartInstance!: ECharts;\n\n cardPosition = { x: 0, y: 0 };\n openCard = false;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* ------------------ CONFIG CHANGE ------------------ */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n moveLeft() {\n this.moveZoom(-10);\n }\n\n moveRight() {\n this.moveZoom(10);\n }\n\n moveZoom(step: number) {\n const option: any = this.chartInstance.getOption();\n const zoom = option.dataZoom?.[0];\n if (!zoom) return;\n let start = zoom.start ?? 0;\n let end = zoom.end ?? 100;\n\n const windowSize = end - start;\n if ((step < 0 && start <= 0) || (step > 0 && end >= 100)) {\n return;\n }\n\n let newStart = start + step;\n let newEnd = end + step;\n\n if (newStart < 0) {\n newStart = 0;\n newEnd = windowSize;\n }\n\n if (newEnd > 100) {\n newEnd = 100;\n newStart = 100 - windowSize;\n }\n\n this.chartInstance.dispatchAction({\n type: 'dataZoom',\n start: newStart,\n end: newEnd,\n });\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n\n private buildOption() {\n // Common chart option\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor || 'transparent',\n color: this.config.colors || this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition || 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip,\n trigger: 'axis',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.barLineTooltipFormatter(params),\n },\n legend: {\n show: false,\n },\n grid: {\n left: this.config.gridLeft ?? 0,\n right: this.config.gridRight ?? 0,\n bottom: this.config.gridBottom ?? 0,\n top: this.config.gridTop ?? 0,\n containLabel: true,\n },\n graphic: this.chartInstance\n ? [\n ...(this.config.hideLegend\n ? []\n : this.chartService?.buildGraphicLegend(\n null,\n this.config,\n this.chartInstance,\n 'bar',\n )),\n ]\n : undefined,\n\n xAxis: {\n type: 'category',\n data: this.config.xAxisData,\n axisLine: { show: this.config.showXAxisLine ?? true },\n ...this.config.xAxis,\n },\n\n yAxis: {\n type: 'value',\n axisLine: { show: this.config.showYAxisLine ?? true },\n ...this.config.yAxis,\n },\n\n series: (this.config.series || []).map((s) => {\n return {\n type: 'bar',\n stack: this.config.stacked ? 'total' : undefined,\n emphasis: {\n scale: false,\n },\n ...(this.config.barWidth && { barWidth: this.config.barWidth }),\n ...s,\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'top',\n ...(s['label'] ? s['label'] : {}),\n },\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 0,\n ...(s['itemStyle'] ? s['itemStyle'] : {}),\n },\n };\n }),\n\n ...(this.config?.showZoomSlider && {\n dataZoom: [\n {\n type: 'slider',\n show: true,\n xAxisIndex: 0,\n bottom: 0,\n height: 8,\n ...(this.config.zoomStart && { start: this.config.zoomStart }),\n ...(this.config.zoomEnd && { end: this.config.zoomEnd }),\n // UI styling\n backgroundColor: '#F0F0F0',\n fillerColor: '#81858A',\n borderColor: 'transparent',\n borderRadius: 100,\n handleSize: 0,\n brushSelect: false,\n handleStyle: {\n color: '#F0F0F0',\n },\n textStyle: {\n color: 'transparent',\n },\n dataBackground: {\n lineStyle: {\n color: 'transparent',\n },\n areaStyle: {\n color: 'transparent',\n },\n },\n selectedDataBackground: {\n lineStyle: {\n color: 'transparent',\n },\n areaStyle: {\n color: 'transparent',\n },\n },\n\n moveHandleSize: 0,\n },\n {\n type: 'inside',\n xAxisIndex: 0,\n },\n ],\n }),\n };\n }\n\n /* ------------------ INIT ------------------ */\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n\n // private bindEvents() {\n // if (!this.chartInstance) return;\n\n // this.chartInstance.off();\n\n // this.events.forEach((eventName) => {\n // this.chartInstance.on(eventName, (params: any) => {\n // if (eventName === 'contextmenu' && params.event?.event) {\n // params.event.event.preventDefault();\n\n // const container = this.chartInstance.getDom();\n // const rect = container.getBoundingClientRect();\n\n // this.cardPosition = {\n // x: params.event.event.clientX - rect.left,\n // y: params.event.event.clientY - rect.top,\n // };\n\n // this.openCard = true;\n // this.cdr.markForCheck();\n // }\n\n // this.chartEvent.emit({\n // type: eventName,\n // data: params,\n // });\n // });\n // });\n // }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n /* ---- existing chart events ---- */\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n /* ---- RIGHT CLICK ANYWHERE IN GRID ---- */\n\n const zr = this.chartInstance.getZr();\n\n zr.off('contextmenu');\n\n zr.on('contextmenu', (event: any) => {\n event.event.preventDefault();\n\n const point = [event.offsetX, event.offsetY];\n\n // check if click is inside grid\n if (!this.chartInstance.containPixel({ gridIndex: 0 }, point)) return;\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.event.clientX - rect.left,\n y: event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: event,\n });\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n /* ------------------ CONTEXT MENU ------------------ */\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n@if (config.showZoomSlider) {\n <div class=\"zoom-controls\" [style]=\"config.zoomControlButtonStyle\">\n <button (click)=\"moveLeft()\"><img src=\"images/leftArrow.svg\" alt=\">\" /></button>\n <button (click)=\"moveRight()\"><img src=\"images/rightArrow.svg\" alt=\"<\" /></button>\n </div>\n}\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { PieChart as EPieChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { PieChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([EPieChart, TitleComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-pie-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './pie-chart.html',\n styleUrl: './pie-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PieChart {\n /* -------------------- Inputs -------------------- */\n\n @Input() config!: PieChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() cardOptions: any[] = [];\n\n /* -------------------- Outputs -------------------- */\n\n @Output() chartEvent = new EventEmitter<{ type: string; data: any }>();\n @Output() cardOptionClick = new EventEmitter<any>();\n\n /* -------------------- Local State -------------------- */\n\n chartOption!: EChartsCoreOption;\n private chartInstance!: ECharts;\n\n openCard = false;\n cardPosition = { x: 0, y: 0 };\n\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* -------------------- Lifecycle -------------------- */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n // If theme changes → dispose instance\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance?.dispose();\n }\n }\n\n /* -------------------- Chart Init -------------------- */\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* -------------------- Build Option -------------------- */\n\n private buildOption(): void {\n const total = this.config.data?.reduce((sum, item) => sum + item.value, 0);\n\n this.chartOption = {\n backgroundColor: this.config.backgroundColor ?? 'transparent',\n\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition ?? 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params, this.config)\n : this.chartService.pieTooltipFormatter(params, this.config),\n },\n\n legend: { show: false },\n\n graphic:\n this.chartInstance && !this.config.hideLegend\n ? this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)\n : undefined,\n\n series: [\n {\n type: 'pie',\n top: this.config.top ?? 0,\n bottom: this.config.bottom ?? 0,\n radius: this.config.radius ?? '60%',\n center: this.config.center ?? ['50%', '50%'],\n data: this.config?.data || [],\n color: this.config.colors,\n\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'outside',\n formatter: (params: any) => {\n const percent = ((params.value / total) * 100).toFixed(1);\n\n let text = params.name;\n if (this.config.showLabelValue) text += `\\n${params.value}`;\n if (this.config.showLabelPercentage) text += `\\n${percent}%`;\n\n return text;\n },\n },\n\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 0,\n borderColor: this.config.borderColor ?? '#fff',\n borderWidth: this.config.borderWidth ?? 0,\n },\n\n emphasis:\n (this.config.enableHoverEffect ?? true)\n ? {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n },\n }\n : undefined,\n },\n ],\n };\n }\n\n /* -------------------- Events -------------------- */\n\n private bindEvents(): void {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu') {\n params.event?.event?.preventDefault();\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: params.event.event.clientX - rect.left,\n y: params.event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n }\n\n this.chartEvent.emit({ type: eventName, data: params });\n });\n });\n }\n\n onMenuClick(item: any) {\n this.cardOptionClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"cardOptions\"\n [cardPosition]=\"cardPosition\"\n (contextMenuClick)=\"onMenuClick($event)\"\n >\n </lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { PieChart as EPieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n GraphicComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { DoughnutChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n EPieChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n GraphicComponent,\n CanvasRenderer,\n]);\n\n@Component({\n selector: 'lib-doughnut-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './doughnut-chart.html',\n styleUrl: './doughnut-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DoughnutChart {\n @Input() config!: DoughnutChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n cardPosition = { x: 0, y: 0 };\n openCard: boolean = false;\n chartOption!: EChartsCoreOption;\n private chartInstance!: ECharts;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n /* ------------------ CONFIG CHANGE ------------------ */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n // If theme changes → dispose instance\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n // Rebuild option when config changes\n this.buildOption();\n }\n // card open on right click\n /**\n * @description Determines whether menu click on\n * @author Shiva Kant\n * @param item\n */\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n this.closeCard();\n }\n\n /**\n * @description Hosts listener\n * @author Shiva Kant\n */\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n /* ------------------ OPTION BUILDER ------------------ */\n /**\n * @description Builds option\n * @author Shiva Kant\n * @param config\n * @returns option\n */\n buildOption() {\n const total = this.config?.data?.reduce((sum, item) => sum + item.value, 0);\n const seriesData = (this.config?.data || [])?.map((d) => ({\n ...d,\n ...(!d.value && {\n itemStyle: {\n color: total === 0 ? '#d3d3d3' : undefined,\n borderWidth: total == 0 ? (this.config.borderWidth ?? 2) : 0,\n },\n }), // grey\n }));\n\n const innerRadius = this.config.innerRadius ?? '70%';\n const outerRadius = this.config.outerRadius ?? '90%';\n\n this.chartOption = {\n backgroundColor: this.config.backgroundColor || 'transparent',\n color: this.config.colors ?? this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition || 'center',\n },\n tooltip: {\n show: this.config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params, this.config)\n : this.chartService.pieTooltipFormatter(params, this.config),\n },\n\n legend: { show: false },\n graphic: this.chartInstance\n ? [\n ...(this.config.hideLegend\n ? []\n : this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)),\n ...this.chartService.buildCenterGraphic(this.config, total),\n ]\n : undefined,\n series: [\n {\n type: 'pie',\n top: this.config.top ?? 0,\n bottom: this.config.bottom ?? 0,\n radius: [innerRadius, outerRadius],\n center: this.config.center ?? ['50%', '50%'],\n data: seriesData,\n\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'outside',\n },\n\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 8,\n borderColor: this.config.borderColor || '#fff',\n borderWidth: this.config.borderWidth ?? 2,\n },\n emphasis: {\n scale: this.config.emphasisScale,\n },\n // ...this.config.series\n },\n ],\n };\n }\n\n /* ------------------ INIT ------------------ */\n /**\n * @description Determines whether chart init on\n * @author Shiva Kant\n * @param ec\n * @param [container]\n */\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n @HostListener('window:resize')\n onResize() {\n this.chartInstance?.resize();\n }\n /* ------------------ EVENTS ------------------ */\n /**\n * @description Binds events\n * @author Shiva Kant\n * @returns\n */\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n // Prevent browser context menu\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: params.event?.event.clientX - rect.left,\n y: params.event?.event.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n /* ------------------ DESTROY ------------------ */\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance?.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import { Component, Input } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsCoreOption } from 'echarts/core';\nimport { SimpleChanges } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\necharts.use([LineChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-stacked-area-chart',\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './stacked-area-chart.html',\n styleUrl: './stacked-area-chart.scss',\n})\nexport class StackedAreaChart {\n @Input() data: any;\n @Input() title: string = 'Protocol Traffic Overview';\n\n chartOption!: EChartsCoreOption;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.buildChart();\n }\n }\n\n buildChart() {\n this.chartOption = {\n tooltip: {\n trigger: 'axis',\n },\n legend: {\n data: this.data.series.map((s: any) => s.name),\n top: 10,\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '3%',\n containLabel: true,\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n data: this.data.time,\n },\n yAxis: {\n type: 'value',\n },\n series: this.data.series.map((s: any) => ({\n name: s.name,\n type: s.type??'line',\n smooth: true,\n data: s.values,\n areaStyle: {\n opacity: 0.15,\n },\n })),\n };\n }\n}\n","<div\n echarts\n class=\"chart-container\"\n [options]=\"chartOption\"\n ></div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport { CustomChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\n\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { CustomChartConfig, TimelineTrack, ShiftItem } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\nimport { RightClickCard } from '../right-click-card';\n\necharts.use([CustomChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-custom-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n templateUrl: './custom-chart.html',\n styleUrl: './custom-chart.scss',\n providers: [provideEchartsCore({ echarts })],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomChartComponent implements OnChanges, OnDestroy {\n @Input() config!: CustomChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n cardPosition = { x: 0, y: 0 };\n openCard: boolean = false;\n\n chartOption!: EChartsCoreOption;\n filteredConetxtMenuOptions: any[] = [];\n\n private chartInstance!: ECharts;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n this.closeCard();\n }\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n /* ---- existing chart events ---- */\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n /* ---- RIGHT CLICK ANYWHERE IN GRID ---- */\n\n const zr = this.chartInstance.getZr();\n\n zr.off('contextmenu');\n\n zr.on('contextmenu', (event: any) => {\n event.event.preventDefault();\n\n this.filteredConetxtMenuOptions = this.contextMenuOptions.filter(\n (opt) => (opt.showOnTarget && event.target?.type === 'rect') || !opt.showOnTarget,\n );\n\n const point = [event.offsetX, event.offsetY];\n\n // check if click is inside grid\n if (!this.chartInstance.containPixel({ gridIndex: 0 }, point)) return;\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.event.clientX - rect.left,\n y: event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: event,\n });\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n // private convertTimeToNumber(time: string): number {\n // const [h, m] = time.split(':').map(Number);\n // return h + m / 60;\n // }\n\n private convertTimeToNumber(time: string): number {\n if (!time) return 0;\n const trimmed = time.trim().toLowerCase();\n const ampmMatch = trimmed.match(/^(\\d{1,2}):(\\d{2})\\s?(am|pm)$/);\n if (ampmMatch) {\n let hours = Number(ampmMatch[1]);\n const minutes = Number(ampmMatch[2]);\n const period = ampmMatch[3];\n\n if (period === 'pm' && hours !== 12) {\n hours += 12;\n }\n if (period === 'am' && hours === 12) {\n hours = 0;\n }\n return hours + minutes / 60;\n }\n\n const match24 = trimmed.match(/^(\\d{1,2}):(\\d{2})$/);\n\n if (match24) {\n const hours = Number(match24[1]);\n const minutes = Number(match24[2]);\n\n return hours + minutes / 60;\n }\n\n return 0;\n }\n\n private is12HourFormat(time?: string): boolean {\n if (!time) return false;\n return /am|pm/i.test(time);\n }\n\n private formatHourLabel(val: number, is12Hour: boolean): string {\n const hour = Math.floor(val);\n if (!is12Hour) {\n return `${hour.toString().padStart(2, '0')}:00`;\n }\n let h = hour;\n const suffix = h >= 12 ? 'PM' : 'AM';\n if (h === 0) h = 12;\n else if (h > 12) h -= 12;\n return `${h}:00 ${suffix}`;\n }\n\n private renderBlock =\n (catIndex: number, isShift = false) =>\n (params: any, api: any) => {\n const categoryIndex = this.config.chartMode === 'weekly' ? catIndex : api.value(0);\n\n const start = api.coord([api.value(1), categoryIndex]);\n const end = api.coord([api.value(2), categoryIndex]);\n const baseHeight = api.size([0, 1])[1];\n\n const height =\n baseHeight * (isShift ? (this.config.shiftHeight ?? 1) : (this.config.barHeight ?? 0.6));\n\n return {\n type: 'rect',\n shape: {\n x: start[0],\n y: start[1] - height / 2,\n width: end[0] - start[0],\n height: height,\n },\n style: api.style(),\n };\n };\n\n private buildLegend() {\n const groups = Object.keys(this.config.legends);\n\n const legends: any[] = [];\n let topOffset = 0;\n\n groups.forEach((group) => {\n const items = this.config.legends[group];\n\n if (!items || !items.length) return;\n const names = [\n ...(this.config.hideLegendCategory\n ? []\n : [{ name: group, icon: 'none', itemStyle: { opacity: 0 } }]),\n ...items.map((i: any) => ({\n name: i.name,\n itemStyle: { color: i.color },\n })),\n ];\n\n legends.push({\n top: topOffset,\n left: 0,\n orient: 'horizontal',\n icon: 'roundRect',\n itemGap: 16,\n itemWidth: 12,\n itemHeight: 12,\n data: names,\n\n formatter: (name: string) => {\n if (name === group) {\n return `{title|${name}:}`;\n }\n return name;\n },\n\n textStyle: {\n fontSize: 14,\n rich: {\n title: {\n fontWeight: 'bold',\n padding: [0, 6, 0, -12],\n },\n },\n },\n });\n\n topOffset += 30;\n });\n return legends;\n }\n\n private buildOption() {\n if (!this.config?.categories || !this.config?.data) return;\n\n const series: any[] = [];\n\n const categories = this.config.categories;\n\n /* ---------------- SHIFT DATA ---------------- */\n\n if (\n this.config.chartMode === 'daily' &&\n this.config.data?.length &&\n this.config.data[0]?.shifts?.items?.length\n ) {\n this.config.categories.forEach((cat, index) => {\n const shiftData: any[] = [];\n (this.config.data[0]?.shifts?.items || []).forEach((s: ShiftItem) => {\n shiftData.push({\n value: [index, this.convertTimeToNumber(s.start), this.convertTimeToNumber(s.end)],\n itemStyle: {\n color: this.config.shiftColor ?? '#F0F0F0',\n },\n });\n });\n if (shiftData.length) {\n series.push({\n name: this.config.data[0]?.shifts?.name || 'Shift',\n type: 'custom',\n renderItem: this.renderBlock(index, true),\n silent: true,\n z: 0,\n encode: { x: [1, 2], y: 0 },\n data: shiftData,\n });\n }\n });\n }\n\n /* -------- ACTIVITY LINE -------- */\n\n if (\n this.config.chartMode === 'daily' &&\n this.config.data?.length &&\n this.config.data[0]?.activity?.length\n ) {\n this.config.data[0].activity.forEach((act, index) => {\n const activityData: any[] = [];\n const categoryIndex = this.config.categories.indexOf(act.category);\n\n const activityTrack = this.config.legends[act.category]?.find(\n (leg) => leg.name === act.name,\n );\n let trackColor = '#C8DFF9';\n if (activityTrack) {\n trackColor = activityTrack?.color || '#C8DFF9';\n }\n if (categoryIndex === -1) return;\n\n act.items.forEach((p: any, i: number) => {\n const y =\n categoryIndex +\n p.value * (this.config.barHeight ?? 0.6) +\n (1 - (this.config.barHeight ?? 0.6)) / 2;\n\n activityData.push([this.convertTimeToNumber(p.time), y]);\n });\n if (activityData.length) {\n series.push({\n name: act.name,\n type: 'line',\n symbol: 'none',\n yAxisIndex: 1,\n z: 3,\n lineStyle: {\n width: 1,\n color: trackColor,\n },\n\n data: activityData,\n });\n }\n });\n }\n\n /* ---------------- TRACK SERIES ---------------- */\n this.config.data.forEach((data, index) => {\n if (this.config.chartMode === 'weekly' && data.shifts && data.shifts.items.length) {\n const shiftData: any[] = [];\n\n (data.shifts.items || []).forEach((s: ShiftItem) => {\n shiftData.push({\n value: [index, this.convertTimeToNumber(s.start), this.convertTimeToNumber(s.end)],\n itemStyle: {\n color: this.config.shiftColor ?? '#F0F0F0',\n },\n });\n });\n if (shiftData.length) {\n series.push({\n name: 'Shift',\n type: 'custom',\n renderItem: this.renderBlock(index, true),\n silent: true,\n z: 0,\n encode: { x: [1, 2], y: 0 },\n data: shiftData,\n });\n }\n }\n\n const activityData: any[] = [];\n if (this.config.chartMode === 'weekly' && data.activity && data.activity[0]?.items?.length) {\n const act = data.activity[0];\n const activityTrack = this.config.legends[act.category]?.find(\n (leg) => leg.name === act.name,\n );\n let trackColor = '#C8DFF9';\n if (activityTrack) {\n trackColor = activityTrack?.color || '#C8DFF9';\n }\n\n act.items.forEach((p: any, i: number) => {\n const y =\n index +\n p.value * (this.config.barHeight ?? 0.6) +\n (1 - (this.config.barHeight ?? 0.6)) / 2;\n\n activityData.push([this.convertTimeToNumber(p.time), y]);\n });\n if (activityData.length) {\n series.push({\n name: act.name,\n type: 'line',\n symbol: 'none',\n yAxisIndex: 1,\n z: 3,\n lineStyle: {\n width: 1,\n color: trackColor,\n },\n\n data: activityData,\n });\n }\n }\n\n data.tracks.forEach((track: TimelineTrack) => {\n if (!this.config.hideLegendCategory) {\n series.push({ name: track.category, type: 'custom', renderItem: () => {}, data: [] });\n }\n track.items.forEach((item) => {\n series.push({\n name: item.type,\n type: 'custom',\n renderItem: this.renderBlock(index, false),\n encode: { x: [1, 2], y: 0 },\n z: 2,\n data: [\n {\n ...item,\n value: [\n categories.indexOf(track.category),\n this.convertTimeToNumber(item.start),\n this.convertTimeToNumber(item.end),\n ],\n itemStyle: {\n color: this.config.legends[track.category]?.find((leg) => leg.name === item.type)\n ?.color,\n },\n type: item.type,\n },\n ],\n });\n });\n });\n });\n\n /* ---------------- CHART OPTION ---------------- */\n const is12Hour =\n this.is12HourFormat(this.config.startHour) || this.is12HourFormat(this.config.endHour);\n this.chartOption = {\n tooltip: {\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n extraCssText: 'box-shadow:none;',\n formatter: (params: any) => this.chartService.timelineChartTooltipFormatter(params),\n },\n legend: this.buildLegend(),\n\n grid: {\n left: 0,\n right: 0,\n bottom: 0,\n top: Object.keys(this.config.legends).length * 30,\n },\n\n xAxis: {\n type: 'value',\n min: this.config.startHour\n ? Math.floor(this.convertTimeToNumber(this.config.startHour))\n : 0,\n max: this.config.endHour ? Math.ceil(this.convertTimeToNumber(this.config.endHour)) : 24,\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n lineStyle: {\n width: 0.5,\n color: '#C0C2C5',\n },\n },\n minorSplitLine: {\n show: true,\n lineStyle: {\n width: 0.2,\n color: '#DADBDC',\n },\n },\n minorTick: { splitNumber: 4 },\n interval: 1,\n // axisLabel: {\n // formatter: (val: number) => `${val}:00`,\n // },\n axisLabel: {\n formatter: (val: number) => this.formatHourLabel(val, is12Hour),\n },\n },\n\n yAxis: [\n {\n type: 'category',\n data: this.config.yAxisData,\n axisLine: {\n show: false,\n },\n },\n {\n type: 'value',\n min: 0,\n max: this.config.yAxisData.length,\n show: false,\n },\n ],\n\n series,\n };\n }\n\n ngOnDestroy(): void {\n this.chartInstance?.dispose();\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n@if (openCard && filteredConetxtMenuOptions.length > 0) {\n <lib-right-click-card\n [cardOptions]=\"filteredConetxtMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { EChartsCoreOption } from 'echarts';\nimport { SankeyChartConfig } from '../../modal/charts-modal';\nimport { TooltipComponent, TitleComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { SankeyChart as SankeyChartEchart } from 'echarts/charts';\nimport { Charts } from '../../service/charts';\necharts.use([SankeyChartEchart, TooltipComponent, TitleComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-sankey-chart',\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './sankey-chart.html',\n styleUrl: './sankey-chart.scss',\n})\nexport class SankeyChart implements OnChanges, OnDestroy {\n @Input() config!: SankeyChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n constructor(private chartService: Charts) {}\n\n chartOption: EChartsCoreOption = {};\n private chartInstance!: echarts.ECharts;\n\n /* ------------------ CHANGE HANDLING ------------------ */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n\n private buildOption() {\n this.chartOption = {\n backgroundColor: this.config.backgroundColor || 'transparent',\n color: this.config.colors ?? this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip,\n trigger: 'item',\n triggerOn: 'mousemove',\n backgroundColor: 'transparent', // important for custom card\n borderWidth: 0,\n extraCssText: 'box-shadow:none;', // remove default shadow\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.sankeyTooltipFormatter(params),\n },\n series: [\n {\n left: 16,\n right: 16,\n top: 16,\n bottom: 16,\n ...this.config.seriesOption,\n type: 'sankey',\n data: (this.config?.nodes || []).map((n) => ({\n ...n,\n name: n.name,\n itemStyle: {\n color: n.color,\n },\n })),\n\n links: this.config?.links || [],\n levels: [\n {\n depth: this.chartService.getSankeyLevels(this.config?.nodes, this.config?.links),\n label: { position: 'left' },\n },\n ],\n lineStyle: {\n color: 'gradient',\n curveness: this.config.lineCurveness ?? 0.5,\n opacity: 0.3,\n },\n\n label: {\n color: '#333',\n },\n },\n ],\n };\n }\n\n /* ------------------ INIT ------------------ */\n\n onChartInit(ec: echarts.ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Charts","EBarChart","EPieChart","SankeyChartEchart"],"mappings":";;;;;;;;MAQa,cAAc,CAAA;AAChB,IAAA,YAAY;AACZ,IAAA,WAAW;AACV,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAEpD,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGlC;wGATW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,yMCR3B,8ZAgBA,EAAA,MAAA,EAAA,CAAA,+SAAA,CAAA,EAAA,CAAA;;4FDRa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WACvB,EAAE,EAAA,QAAA,EAAA,8ZAAA,EAAA,MAAA,EAAA,CAAA,+SAAA,CAAA,EAAA;;sBAKV;;sBACA;;sBACA;;;MELU,MAAM,CAAA;IACjB,cAAc,GAA4B,EAAE;IAC5C,aAAa,GAAa,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AAEtE,IAAA,kBAAkB,CAAC,KAAoB,EAAE,MAAW,EAAE,aAAkB,EAAE,SAAkB,EAAA;QAC1F,MAAM,UAAU,GAAG,EAAE;QACrB,MAAM,OAAO,GAAG,EAAE;QAClB,MAAM,cAAc,GAAG,EAAE;QACzB,MAAM,OAAO,GAAG,CAAC;QACjB,MAAM,IAAI,GAAG,iBAAiB;QAE9B,MAAM,cAAc,GAAG,aAAa,EAAE,QAAQ,IAAI,IAAI,GAAG;QACzD,MAAM,QAAQ,GAAG,cAAc,IAAI,MAAM,CAAC,oBAAoB,IAAI,GAAG,CAAC;AAEtE,QAAA,MAAM,WAAW,GAAG,aAAa,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE;QAC3E,IAAI,UAAU,GAAG,CAAC;AAClB,QAAA,MAAM,KAAK,GAAG,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAC3F,CAAC,IAAS,KAAI;AACZ,YAAA,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAChF,YAAA,MAAM,KAAK,GACT,KAAK,KAAK;AACR,kBAAE;AACF,mBAAG,IAAI,EAAE,SAAS,EAAE,KAAK;AACvB,qBAAC;AACC,0BAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM;AACjD,0BAAE,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,YAAA,IACE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK;iBACtB,IAAI,EAAE,SAAS,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtF;gBACA,UAAU,IAAI,CAAC;YACjB;AACA,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YAC5D,MAAM,SAAS,GACb,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK;AACpC,kBAAE,EAAE,KAAK,EAAE,CAAC;AACZ,kBAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAC9E,IAAI,CACL;YAEP,MAAM,SAAS,GACb,OAAO;gBACP,cAAc;gBACd,CAAC;AACD,gBAAA,QAAQ,CAAC,KAAK;AACd,iBAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;AACvE,gBAAA,OAAO;AAET,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;AACnC,QAAA,CAAC,CACF;;QAGD,MAAM,IAAI,GAAU,EAAE;QACtB,IAAI,UAAU,GAAU,EAAE;QAC1B,IAAI,QAAQ,GAAG,CAAC;AAEhB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAC1B,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE;AAC7D,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBACjD,UAAU,GAAG,EAAE;gBACf,QAAQ,GAAG,CAAC;YACd;AAEA,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,YAAA,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,OAAO;AACtC,QAAA,CAAC,CAAC;QAEF,IAAI,UAAU,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;;QAGxE,IAAI,OAAO,GAAG,CAAC;QACf,MAAM,QAAQ,GAAU,EAAE;AAE1B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnB,YAAA,IAAI,OAAO,GACT,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,eAAe,KAAK;kBAC1D,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,IAAI;kBACzB,QAAQ;YAEd,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAC9B,gBAAA,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK;gBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC;AACZ,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,IAAI,CAAC,SAAS;AACrB,oBAAA,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS;oBAE1C,OAAO,EAAE,MAAK;AACZ,wBAAA,IAAI,UAAU;4BAAE;wBAChB,aAAa,CAAC,cAAc,CAAC;AAC3B,4BAAA,IAAI,EAAE,oBAAoB;AAC1B,4BAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACrB,yBAAA,CAAC;wBAEF,aAAa,CAAC,SAAS,CAAC;AACtB,4BAAA,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;AAC1E,yBAAA,CAAC;oBACJ,CAAC;AAED,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,KAAK,EAAE;gCACL,KAAK,EAAE,IAAI,CAAC,SAAS;AACrB,gCAAA,MAAM,EAAE,UAAU;AAClB,gCAAA,CAAC,EAAE,CAAC;AACL,6BAAA;AACD,4BAAA,KAAK,EAAE;AACL,gCAAA,IAAI,EACF,UAAU,IAAI,CAAC;sCACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI;AACrD,sCAAE,SAAS;gCACf,MAAM,EAAE,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS;AAC/E,gCAAA,SAAS,EAAE,CAAC;AACb,6BAAA;AACF,yBAAA;AAED,wBAAA;AACE,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,qBAAqB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;AACtE,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,GAAG,EAAE,CAAC,UAAU,IAAI,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC,IAAI,CAAC;AAC5D,4BAAA,KAAK,EAAE;AACL,gCAAA,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS;AACzD,6BAAA;AACF,yBAAA;AAED,wBAAA;AACE,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,CAAC;AAClC,4BAAA,GAAG,EAAE,CAAC,UAAU,GAAG,cAAc,IAAI,CAAC;AACtC,4BAAA,KAAK,EAAE;gCACL,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA,EAAG,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,GAAG,EAAE,GAAG,GAAG,CAAA,CAAE;AAClF,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,UAAU,EAAE,GAAG;AACf,gCAAA,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AACtE,gCAAA,iBAAiB,EAAE,QAAQ;AAC5B,6BAAA;AACF,yBAAA;AAED,wBAAA,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK;AACxC,8BAAE;AACF,8BAAE;AACE,gCAAA;AACE,oCAAA,IAAI,EAAE,MAAM;AACZ,oCAAA,KAAK,EAAE,OAAO;AACd,oCAAA,GAAG,EAAE,CAAC,UAAU,GAAG,cAAc,IAAI,CAAC;AACtC,oCAAA,KAAK,EAAE;wCACL,IAAI,EACF,KAAK,KAAK;AACR,8CAAE;8CACA,MAAM,CAAC;kDACL,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AACvC,kDAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AACvB,wCAAA,QAAQ,EAAE,EAAE;AACZ,wCAAA,UAAU,EAAE,GAAG;AACf,wCAAA,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS;AACvD,wCAAA,SAAS,EAAE,OAAO;AAClB,wCAAA,iBAAiB,EAAE,QAAQ;AAC5B,qCAAA;AACF,iCAAA;6BACF,CAAC;AACP,qBAAA;AACF,iBAAA,CAAC;AAEF,gBAAA,OAAO,IAAI,IAAI,CAAC,SAAS,GAAG,OAAO;AACrC,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,IAAI,UAAU,GAAG,OAAO;AACjC,QAAA,CAAC,CAAC;;QAGF,MAAM,cAAc,GAAQ,EAAE;AAC9B,QAAA,QAAQ,MAAM,CAAC,cAAc;AAC3B,YAAA,KAAK,KAAK;AACR,gBAAA,cAAc,CAAC,GAAG,GAAG,EAAE;gBACvB;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,cAAc,CAAC,MAAM,GAAG,EAAE;gBAC1B;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,cAAc,CAAC,IAAI,GAAG,EAAE;gBACxB;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,cAAc,CAAC,KAAK,GAAG,EAAE;gBACzB;;;AAIJ,QAAA,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,IAAI,MAAM,CAAC,cAAc,KAAK,QAAQ,EAAE;;AAEzE,YAAA,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;AACnC,gBAAA,cAAc,CAAC,IAAI,GAAG,QAAQ;YAChC;AAAO,iBAAA,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE;AACzC,gBAAA,cAAc,CAAC,KAAK,GAAG,EAAE;YAC3B;iBAAO;AACL,gBAAA,cAAc,CAAC,IAAI,GAAG,EAAE;YAC1B;QACF;aAAO;;AAEL,YAAA,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;AACnC,gBAAA,cAAc,CAAC,GAAG,GAAG,QAAQ;YAC/B;AAAO,iBAAA,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE;AACzC,gBAAA,cAAc,CAAC,MAAM,GAAG,EAAE;YAC5B;iBAAO;AACL,gBAAA,cAAc,CAAC,GAAG,GAAG,EAAE;YACzB;QACF;QACA,OAAO;AACL,YAAA;AACE,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,GAAG,cAAc;AACjB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,MAAM,EAAE,OAAO;gBACf,QAAQ;AACT,aAAA;SACF;IACH;IACA,kBAAkB,CAAC,MAAW,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI;AAAE,YAAA,OAAO,EAAE;AAEzC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW;AACvC,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,IAAI,EAAE;AAClD,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,IAAI,EAAE;;;AAIlD,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,IAAI,QAAQ;AAC7C,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,IAAI,QAAQ;;AAG/C,QAAA,MAAM,WAAW,GAAG,CAAC,SAAS,GAAG,CAAC;AAClC,QAAA,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC;QAEjC,OAAO;AACL,YAAA;AACE,gBAAA,EAAE,EAAE,aAAa;AACjB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,QAAQ,EAAE;oBACR,IAAI,YAAY,CAAC;AACf,0BAAE;AACE,4BAAA;AACE,gCAAA,IAAI,EAAE,MAAM;AACZ,gCAAA,KAAK,EAAE;AACL,oCAAA,IAAI,EAAE,YAAY,CAAC,KAAK,IAAI,EAAE;AAC9B,oCAAA,QAAQ,EAAE,SAAS;AACnB,oCAAA,IAAI,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM;AACvC,oCAAA,SAAS,EAAE,QAAQ;AACnB,oCAAA,YAAY,EAAE,QAAQ;AACvB,iCAAA;gCACD,GAAG,EAAE,WAAW;AACjB,6BAAA;AACF;0BACD,EAAE,CAAC;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,KAAK,EAAE;4BACL,IAAI,EACF,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC;kCAC3C,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI;AAC3C,mCAAG,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;AAChC,4BAAA,QAAQ,EAAE,SAAS;AACnB,4BAAA,UAAU,EAAE,MAAM;AAClB,4BAAA,IAAI,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM;AACvC,4BAAA,SAAS,EAAE,QAAQ;AACnB,4BAAA,YAAY,EAAE,QAAQ;AACvB,yBAAA;wBACD,GAAG,EAAE,WAAW,IAAI,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC;AACtD,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;IACA,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AAClC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACvC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACvC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAEvC,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAA,EAAA,EAAK,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAG;IAC3C;IACA,mBAAmB,CAAC,MAAW,EAAE,MAA4C,EAAA;AAC3E,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;AACxB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAE9B,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;wBAwBa,KAAK,CAAA;;;;;;;;;AASjB,UAAA,EAAA,IAAI,CAAA,0CAAA,EAA6C,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA,KAAA,EAAQ,MAAM,CAAC,kBAAkB,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,EAAE;;;KAGjL;IACH;IACA,uBAAuB,CAAC,MAAW,EAAE,SAA0B,EAAA;AAC7D,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AAExC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAEvD,IAAI,KAAK,GAAG,CAAC;QACb,IAAI,IAAI,GAAG,EAAE;AAEb,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAC3B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;AAE7B,YAAA,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AAEtB,YAAA,IAAI,IAAI;;;;;;;;;;oBAUM,SAAS,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;uBAClC,KAAK,CAAA;;;;;AAKZ,cAAA,EAAA,IAAI,4CAA4C,KAAK,CAAA;;KAEhE;AACD,QAAA,CAAC,CAAC;QAEF,OAAO;;;;;;;;;;;;;;;UAeD,IAAI;;;QAGN,IAAI;;;;;;;wDAO4C,KAAK,CAAA;;;;GAI1D;IACD;AAEA,IAAA,6BAA6B,CAAC,MAAW,EAAA;AACvC,QAAA,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI;QAErB,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;YAqBC,CAAC,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,IAAI,OAAO;;;;YAIxC,CAAC,CAAC,IAAI,IAAI,IAAI;;;;;0BAKA,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAA;;;;;;cAM7B,CAAC,CAAC,YAAY,IAAI,IAAI;;;;;cAKtB,CAAC,CAAC,QAAQ,IAAI,IAAI;;;;;gCAKA,CAAC,CAAC,cAAc,IAAI,GAAG,CAAA;;;;2BAI5B,CAAC,CAAC,SAAS,IAAI,GAAG,CAAA;;;;yBAIpB,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAA;;;;;;;;;;;cAW5B,CAAC,CAAC,QAAQ,IAAI,CAAC;;;;;;;cAOf,CAAC,CAAC,WAAW,IAAI,CAAC;;;;aAInB;IACX;AACA,IAAA,eAAe,CAAC,KAAA,GAAsB,EAAE,EAAE,QAAsB,EAAE,EAAA;AAChE,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAE1B,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YAClB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,YAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,CAAC,CAAC;QAEF,MAAM,KAAK,GAAU,EAAE;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;QAE1B,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC7B,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;AACb,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChB,gBAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACvB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,KAAK,CAAC,MAAM,EAAE;AACnB,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE;YAC7B,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAE1C,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,QAAa,KAAI;AAC3C,gBAAA,MAAM,QAAQ,GAAG,YAAY,GAAG,CAAC;AAEjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,EAAE;AAChE,oBAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAChC,oBAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACtB;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IACvC;AAEA,IAAA,sBAAsB,CAAC,MAAW,EAAA;AAChC,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC9B,YAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI;YAC9D,OAAO;;;;;;;;;;;4DAW+C,MAAM,CAAA;;gBAGlD;AACE,kBAAE,CAAA;kBACF,UAAU;AACP,oBAAA;AACH,kBAAE,EACN;;;;;4DAK8C,MAAM,CAAA;;gBAGlD;AACE,kBAAE,CAAA;kBACF,UAAU;AACP,oBAAA;AACH,kBAAE,EACN;;;SAGL;QACL;QACA,OAAO;;;;;;;AAOC,UAAA,EAAA,MAAM,CAAC,IAAI,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAA;;OAEpC;IACL;wGA7jBW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAN,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,cAFL,MAAM,EAAA,CAAA;;4FAEP,MAAM,EAAA,UAAA,EAAA,CAAA;kBAHlB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACsBD,OAAO,CAAC,GAAG,CAAC;IACV,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;AACf,CAAA,CAAC;MAWW,UAAU,CAAA;AAiBX,IAAA,YAAA;AACA,IAAA,GAAA;AAjBD,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,kBAAkB,GAAU,EAAE;IAC9B,eAAe,GAAY,KAAK;AAE/B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;IACJ,WAAW,GAAsB,EAAE;AAC3B,IAAA,aAAa;IACrB,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,QAAQ,GAAG,KAAK;IAChB,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;;IAGQ,WAAW,GAAA;QACjB,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,aAAa;YAC7D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC5D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ;AAC5C,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;AAC7B,gBAAA,OAAO,EAAE,MAAM;gBACf,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;sBACR,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;sBACnC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC;AAChE,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA;YACD,OAAO,EAAE,IAAI,CAAC;AACZ,kBAAE;AACE,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC;AACd,0BAAE;AACF,0BAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CACnC,IAAI,EACJ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,MAAM,CACP,CAAC;AACP;AACH,kBAAE,SAAS;AAEb,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;AAChB,kBAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACxC,kBAAE;AACE,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;AAC/B,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AACjC,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC;AACnC,oBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC;AAC7B,oBAAA,YAAY,EAAE,IAAI;AACnB,iBAAA;AAEL,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;AAC/B,gBAAA,IAAI,EAAE,UAAU;;AAEhB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;AAC3B,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI;AACxC,iBAAA;AACD,gBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AACrB,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;AAC/B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;AAEzD,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI;AACxC,iBAAA;AACD,gBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AACrB,aAAA;AAED,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAI;AAC5C,gBAAA,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS;gBAC1C,OAAO;AACL,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;oBACxB,SAAS,EAAE,CAAC,CAAC;AACX,0BAAE;AACE,4BAAA,KAAK,EAAE;AACL,gCAAA,IAAI,EAAE,QAAQ;AACd,gCAAA,CAAC,EAAE,CAAC;AACJ,gCAAA,CAAC,EAAE,CAAC;AACJ,gCAAA,EAAE,EAAE,CAAC;AACL,gCAAA,EAAE,EAAE,CAAC;AACL,gCAAA,UAAU,EAAE;AACV,oCAAA;AACE,wCAAA,MAAM,EAAE,CAAC;AACT,wCAAA,KAAK,EAAE,SAAS;AACjB,qCAAA;AACD,oCAAA;AACE,wCAAA,MAAM,EAAE,CAAC;wCACT,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;AACjD,qCAAA;AACF,iCAAA;AACF,6BAAA;AACD,4BAAA,OAAO,EAAE,GAAG;AACb;AACH,0BAAE,SAAS;AACb,oBAAA,GAAG,CAAC;AACJ,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;AACpC,wBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK;AAC5C,wBAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAClC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;AAC3C,wBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAC1C,qBAAA;iBACF;AACH,YAAA,CAAC,CAAC;SACH;IACH;;AAGA,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;;;;;;;;;;;;;;;;;;;;;;;;IAgCQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;;QAGxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAChC,YAAA,IAAI,SAAS,KAAK,aAAa,EAAE;;gBAG/B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAErC,gBAAA,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;gBAErB,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAU,KAAI;AAClC,oBAAA,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE;oBAE5B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;;AAG5C,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;wBAAE;oBAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,oBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;oBAE9C,IAAI,CAAC,YAAY,GAAG;wBAClB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;wBAClC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;qBAClC;AAED,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE;IAClB;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;;IAIA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;IACF;wGAzPW,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EALV,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxC9C,2VAcA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDyBY,mBAAmB,8/BAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMlC,UAAU,EAAA,UAAA,EAAA,CAAA;kBATtB,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAA,SAAA,EACnC,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2VAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAqOA,YAAY;uBAAC,gBAAgB;;;AE3PhC,OAAO,CAAC,GAAG,CAAC;IACVC,UAAS;IACT,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,iBAAiB;AAClB,CAAA,CAAC;MAUW,QAAQ,CAAA;AAqBT,IAAA,YAAA;AACA,IAAA,GAAA;AArBD,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,kBAAkB,GAAU,EAAE;IAC9B,eAAe,GAAY,KAAK;AAE/B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAE1C,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;AAEJ,IAAA,WAAW;AAEH,IAAA,aAAa;IAErB,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,QAAQ,GAAG,KAAK;IAChB,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;;AAIH,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IACpB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnB;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,MAAM,MAAM,GAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;AAC3B,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG;AAEzB,QAAA,MAAM,UAAU,GAAG,GAAG,GAAG,KAAK;QAC9B,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE;YACxD;QACF;AAEA,QAAA,IAAI,QAAQ,GAAG,KAAK,GAAG,IAAI;AAC3B,QAAA,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI;AAEvB,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,QAAQ,GAAG,CAAC;YACZ,MAAM,GAAG,UAAU;QACrB;AAEA,QAAA,IAAI,MAAM,GAAG,GAAG,EAAE;YAChB,MAAM,GAAG,GAAG;AACZ,YAAA,QAAQ,GAAG,GAAG,GAAG,UAAU;QAC7B;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AAChC,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,GAAG,EAAE,MAAM;AACZ,SAAA,CAAC;IACJ;;IAIQ,WAAW,GAAA;;QAEjB,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,aAAa;YAC9D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC5D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ;AAC5C,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;AAC7B,gBAAA,OAAO,EAAE,MAAM;gBACf,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;sBACR,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;sBACnC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC;AACxD,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;AAC/B,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AACjC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC;AACnC,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC;AAC7B,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA;YACD,OAAO,EAAE,IAAI,CAAC;AACZ,kBAAE;AACE,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC;AACd,0BAAE;AACF,0BAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CACnC,IAAI,EACJ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,KAAK,CACN,CAAC;AACP;AACH,kBAAE,SAAS;AAEb,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE;AACrD,gBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AACrB,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE;AACrD,gBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AACrB,aAAA;AAED,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAI;gBAC3C,OAAO;AACL,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,SAAS;AAChD,oBAAA,QAAQ,EAAE;AACR,wBAAA,KAAK,EAAE,KAAK;AACb,qBAAA;AACD,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC/D,oBAAA,GAAG,CAAC;AACJ,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;AACpC,wBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK;AAC5C,wBAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAClC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;AAC3C,wBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAC1C,qBAAA;iBACF;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI;AACjC,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,UAAU,EAAE,CAAC;AACb,wBAAA,MAAM,EAAE,CAAC;AACT,wBAAA,MAAM,EAAE,CAAC;AACT,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAC9D,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;;AAExD,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,YAAY,EAAE,GAAG;AACjB,wBAAA,UAAU,EAAE,CAAC;AACb,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,WAAW,EAAE;AACX,4BAAA,KAAK,EAAE,SAAS;AACjB,yBAAA;AACD,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,aAAa;AACrB,yBAAA;AACD,wBAAA,cAAc,EAAE;AACd,4BAAA,SAAS,EAAE;AACT,gCAAA,KAAK,EAAE,aAAa;AACrB,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,KAAK,EAAE,aAAa;AACrB,6BAAA;AACF,yBAAA;AACD,wBAAA,sBAAsB,EAAE;AACtB,4BAAA,SAAS,EAAE;AACT,gCAAA,KAAK,EAAE,aAAa;AACrB,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,KAAK,EAAE,aAAa;AACrB,6BAAA;AACF,yBAAA;AAED,wBAAA,cAAc,EAAE,CAAC;AAClB,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,UAAU,EAAE,CAAC;AACd,qBAAA;AACF,iBAAA;aACF,CAAC;SACH;IACH;;AAIA,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;;;;;;;;;;;;;;;;;;;;;;;;IAkCQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;;QAGxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAChC,YAAA,IAAI,SAAS,KAAK,aAAa,EAAE;;gBAG/B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAErC,gBAAA,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;gBAErB,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAU,KAAI;AAClC,oBAAA,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE;oBAE5B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;;AAG5C,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;wBAAE;oBAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,oBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;oBAE9C,IAAI,CAAC,YAAY,GAAG;wBAClB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;wBAClC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;qBAClC;AAED,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;;AAIA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE;IAClB;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;;IAIA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;IACF;wGA/TW,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EALR,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7C9C,4oBAoBA,EAAA,MAAA,EAAA,CAAA,iWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDwBY,mBAAmB,8/BAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMlC,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAChB,CAAC,mBAAmB,EAAE,cAAc,CAAC,aACnC,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4oBAAA,EAAA,MAAA,EAAA,CAAA,iWAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA;;sBA0SA,YAAY;uBAAC,gBAAgB;;;AEhVhC,OAAO,CAAC,GAAG,CAAC,CAACE,UAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;MAS9E,QAAQ,CAAA;AAsBT,IAAA,YAAA;AACA,IAAA,GAAA;;AApBD,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,WAAW,GAAU,EAAE;;AAItB,IAAA,UAAU,GAAG,IAAI,YAAY,EAA+B;AAC5D,IAAA,eAAe,GAAG,IAAI,YAAY,EAAO;;AAInD,IAAA,WAAW;AACH,IAAA,aAAa;IAErB,QAAQ,GAAG,KAAK;IAChB,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAE7B,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;;AAIH,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;;QAGlB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;QAC/B;IACF;;AAIA,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;IAIQ,WAAW,GAAA;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,aAAa;AAE7D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ;AAC5C,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI;AACrC,gBAAA,OAAO,EAAE,MAAM;gBACf,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;AACV,sBAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM;AAClD,sBAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AACjE,aAAA;AAED,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YAEvB,OAAO,EACL,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,kBAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa;AAC7E,kBAAE,SAAS;AAEf,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzB,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;AAC/B,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK;oBACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAC5C,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;AAC7B,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AAEzB,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;AACpC,wBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS;AAChD,wBAAA,SAAS,EAAE,CAAC,MAAW,KAAI;AACzB,4BAAA,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAEzD,4BAAA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;AACtB,4BAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc;AAAE,gCAAA,IAAI,IAAI,CAAA,EAAA,EAAK,MAAM,CAAC,KAAK,EAAE;AAC3D,4BAAA,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB;AAAE,gCAAA,IAAI,IAAI,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,CAAG;AAE5D,4BAAA,OAAO,IAAI;wBACb,CAAC;AACF,qBAAA;AAED,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;AAC3C,wBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM;AAC9C,wBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC;AAC1C,qBAAA;oBAED,QAAQ,EACN,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI;AACpC,0BAAE;AACE,4BAAA,SAAS,EAAE;AACT,gCAAA,UAAU,EAAE,EAAE;AACd,gCAAA,aAAa,EAAE,CAAC;AACjB,6BAAA;AACF;AACH,0BAAE,SAAS;AAChB,iBAAA;AACF,aAAA;SACF;IACH;;IAIQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;QAExB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,gBAAA,IAAI,SAAS,KAAK,aAAa,EAAE;AAC/B,oBAAA,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE;oBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,oBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;oBAE9C,IAAI,CAAC,YAAY,GAAG;wBAClB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;wBACzC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;qBACzC;AAED,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACzB;AAEA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACzD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE;IAClB;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;wGAxKW,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EALR,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB9C,0VAgBA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQY,mBAAmB,8/BAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMlC,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAChB,CAAC,mBAAmB,EAAE,cAAc,CAAC,aACnC,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0VAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA;;sBAK9C;;sBACA;;sBACA;;sBACA;;sBAIA;;sBACA;;sBA0JA,YAAY;uBAAC,gBAAgB;;;AE1KhC,OAAO,CAAC,GAAG,CAAC;IACVE,UAAS;IACT,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,cAAc;AACf,CAAA,CAAC;MAUW,aAAa,CAAA;AAiBd,IAAA,YAAA;AACA,IAAA,GAAA;AAjBD,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,kBAAkB,GAAU,EAAE;IAC9B,eAAe,GAAY,KAAK;AAE/B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;IACJ,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,QAAQ,GAAY,KAAK;AACzB,IAAA,WAAW;AACH,IAAA,aAAa;IACrB,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;;AAEH,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;;AAEA;;;;AAIG;AACH,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA;;;AAGG;IAEH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;;AAEA;;;;;AAKG;IACH,WAAW,GAAA;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM;AACxD,YAAA,GAAG,CAAC;AACJ,YAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;AACd,gBAAA,SAAS,EAAE;oBACT,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AAC1C,oBAAA,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC;AAC7D,iBAAA;AACF,aAAA,CAAC;AACH,SAAA,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK;QAEpD,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,aAAa;YAC7D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC5D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ;AAC5C,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI;AACrC,gBAAA,OAAO,EAAE,MAAM;gBACf,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;AACV,sBAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM;AAClD,sBAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AACjE,aAAA;AAED,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACvB,OAAO,EAAE,IAAI,CAAC;AACZ,kBAAE;AACE,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC;AACd,0BAAE;AACF,0BAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBACjF,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAC5D;AACH,kBAAE,SAAS;AACb,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzB,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;AAC/B,oBAAA,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;oBAClC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAC5C,oBAAA,IAAI,EAAE,UAAU;AAEhB,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;AACpC,wBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS;AACjD,qBAAA;AAED,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;AAC3C,wBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM;AAC9C,wBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC;AAC1C,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;AACjC,qBAAA;;AAEF,iBAAA;AACF,aAAA;SACF;IACH;;AAGA;;;;;AAKG;AACH,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;IAC9B;;AAEA;;;;AAIG;IACK,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;QAExB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;;gBAE/C,IAAI,SAAS,KAAK,aAAa,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;AACtD,oBAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE;oBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,oBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;oBAE9C,IAAI,CAAC,YAAY,GAAG;wBAClB,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;wBAC1C,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;qBAC1C;AAED,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACzB;AAEA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;QAC/B;IACF;wGA5LW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EALb,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrC9C,2VAcA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDsBY,mBAAmB,8/BAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMlC,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WACrB,CAAC,mBAAmB,EAAE,cAAc,CAAC,aACnC,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2VAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAsCA,YAAY;uBAAC,gBAAgB;;sBAgG7B,YAAY;uBAAC,eAAe;;;AEhL/B,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;MAQ7E,gBAAgB,CAAA;AAClB,IAAA,IAAI;IACJ,KAAK,GAAW,2BAA2B;AAEpD,IAAA,WAAW;AAEX,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC;AAC9C,gBAAA,GAAG,EAAE,EAAE;AACR,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACrB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;AACD,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,MAAM;gBACxC,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,gBAAA,IAAI,EAAE,CAAC,CAAC,IAAI,IAAE,MAAM;AACpB,gBAAA,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,MAAM;AACd,gBAAA,SAAS,EAAE;AACT,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ;IACH;wGA7CW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAJhB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ9C,8FAIS,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOG,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKlB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB,CAAC,mBAAmB,CAAC,EAAA,SAAA,EACnB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA;;sBAK3C;;sBACA;;;AEOH,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;MAS/E,oBAAoB,CAAA;AAmBrB,IAAA,YAAA;AACA,IAAA,GAAA;AAnBD,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,kBAAkB,GAAU,EAAE;AAE7B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;IACJ,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,QAAQ,GAAY,KAAK;AAEzB,IAAA,WAAW;IACX,0BAA0B,GAAU,EAAE;AAE9B,IAAA,aAAa;IACrB,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;AAEH,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;IAEQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;;QAGxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAChC,YAAA,IAAI,SAAS,KAAK,aAAa,EAAE;;gBAG/B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAErC,gBAAA,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;gBAErB,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAU,KAAI;AAClC,oBAAA,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE;AAE5B,oBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAC9D,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,KAAK,CAAC,GAAG,CAAC,YAAY,CAClF;oBAED,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;;AAG5C,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;wBAAE;oBAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,oBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;oBAE9C,IAAI,CAAC,YAAY,GAAG;wBAClB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;wBAClC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;qBAClC;AAED,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;;;;;AAOQ,IAAA,mBAAmB,CAAC,IAAY,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC;QAChE,IAAI,SAAS,EAAE;YACb,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;YAE3B,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;gBACnC,KAAK,IAAI,EAAE;YACb;YACA,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;gBACnC,KAAK,GAAG,CAAC;YACX;AACA,YAAA,OAAO,KAAK,GAAG,OAAO,GAAG,EAAE;QAC7B;QAEA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAEpD,IAAI,OAAO,EAAE;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAElC,YAAA,OAAO,KAAK,GAAG,OAAO,GAAG,EAAE;QAC7B;AAEA,QAAA,OAAO,CAAC;IACV;AAEQ,IAAA,cAAc,CAAC,IAAa,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;AACvB,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;IAEQ,eAAe,CAAC,GAAW,EAAE,QAAiB,EAAA;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;QACjD;QACA,IAAI,CAAC,GAAG,IAAI;AACZ,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;QACpC,IAAI,CAAC,KAAK,CAAC;YAAE,CAAC,GAAG,EAAE;aACd,IAAI,CAAC,GAAG,EAAE;YAAE,CAAC,IAAI,EAAE;AACxB,QAAA,OAAO,CAAA,EAAG,CAAC,CAAA,IAAA,EAAO,MAAM,EAAE;IAC5B;AAEQ,IAAA,WAAW,GACjB,CAAC,QAAgB,EAAE,OAAO,GAAG,KAAK,KAClC,CAAC,MAAW,EAAE,GAAQ,KAAI;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAElF,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACtD,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACpD,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtC,QAAA,MAAM,MAAM,GACV,UAAU,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;QAE1F,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE;AACL,gBAAA,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBACX,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;gBACxB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA;AACD,YAAA,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;SACnB;AACH,IAAA,CAAC;IAEK,WAAW,GAAA;AACjB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAE/C,MAAM,OAAO,GAAU,EAAE;QACzB,IAAI,SAAS,GAAG,CAAC;AAEjB,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAExC,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE;AAC7B,YAAA,MAAM,KAAK,GAAG;AACZ,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC;AACd,sBAAE;sBACA,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/D,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,MAAM;oBACxB,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,oBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AAC9B,iBAAA,CAAC,CAAC;aACJ;YAED,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,KAAK;AAEX,gBAAA,SAAS,EAAE,CAAC,IAAY,KAAI;AAC1B,oBAAA,IAAI,IAAI,KAAK,KAAK,EAAE;wBAClB,OAAO,CAAA,OAAA,EAAU,IAAI,CAAA,EAAA,CAAI;oBAC3B;AACA,oBAAA,OAAO,IAAI;gBACb,CAAC;AAED,gBAAA,SAAS,EAAE;AACT,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE;AACL,4BAAA,UAAU,EAAE,MAAM;4BAClB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC;YAEF,SAAS,IAAI,EAAE;AACjB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;IAChB;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI;YAAE;QAEpD,MAAM,MAAM,GAAU,EAAE;AAExB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;;AAIzC,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAC1C;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBAC5C,MAAM,SAAS,GAAU,EAAE;gBAC3B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAY,KAAI;oBAClE,SAAS,CAAC,IAAI,CAAC;wBACb,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClF,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;AAC3C,yBAAA;AACF,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE;oBACpB,MAAM,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,OAAO;AAClD,wBAAA,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,wBAAA,IAAI,EAAE,SAAS;AAChB,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;;AAIA,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EACrC;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBAClD,MAAM,YAAY,GAAU,EAAE;AAC9B,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAElE,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAC3D,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAC/B;gBACD,IAAI,UAAU,GAAG,SAAS;gBAC1B,IAAI,aAAa,EAAE;AACjB,oBAAA,UAAU,GAAG,aAAa,EAAE,KAAK,IAAI,SAAS;gBAChD;gBACA,IAAI,aAAa,KAAK,CAAC,CAAC;oBAAE;gBAE1B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAS,KAAI;oBACtC,MAAM,CAAC,GACL,aAAa;wBACb,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;AACxC,wBAAA,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC;AAE1C,oBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,YAAY,CAAC,MAAM,EAAE;oBACvB,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,GAAG,CAAC,IAAI;AACd,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,UAAU,EAAE,CAAC;AACb,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,KAAK,EAAE,UAAU;AAClB,yBAAA;AAED,wBAAA,IAAI,EAAE,YAAY;AACnB,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;;AAGA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACvC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;gBACjF,MAAM,SAAS,GAAU,EAAE;AAE3B,gBAAA,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAY,KAAI;oBACjD,SAAS,CAAC,IAAI,CAAC;wBACb,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClF,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;AAC3C,yBAAA;AACF,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE;oBACpB,MAAM,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,wBAAA,IAAI,EAAE,SAAS;AAChB,qBAAA,CAAC;gBACJ;YACF;YAEA,MAAM,YAAY,GAAU,EAAE;YAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;gBAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5B,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAC3D,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAC/B;gBACD,IAAI,UAAU,GAAG,SAAS;gBAC1B,IAAI,aAAa,EAAE;AACjB,oBAAA,UAAU,GAAG,aAAa,EAAE,KAAK,IAAI,SAAS;gBAChD;gBAEA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAS,KAAI;oBACtC,MAAM,CAAC,GACL,KAAK;wBACL,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;AACxC,wBAAA,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC;AAE1C,oBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,YAAY,CAAC,MAAM,EAAE;oBACvB,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,GAAG,CAAC,IAAI;AACd,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,UAAU,EAAE,CAAC;AACb,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,KAAK,EAAE,UAAU;AAClB,yBAAA;AAED,wBAAA,IAAI,EAAE,YAAY;AACnB,qBAAA,CAAC;gBACJ;YACF;YAEA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAoB,KAAI;AAC3C,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;oBACnC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBACvF;gBACA,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,wBAAA,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AAC1C,wBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,IAAI,EAAE;AACJ,4BAAA;AACE,gCAAA,GAAG,IAAI;AACP,gCAAA,KAAK,EAAE;AACL,oCAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClC,oCAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,oCAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,iCAAA;AACD,gCAAA,SAAS,EAAE;oCACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC9E,0CAAE,KAAK;AACV,iCAAA;gCACD,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,QAAQ,GACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACxF,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,YAAY,EAAE,kBAAkB;AAChC,gBAAA,SAAS,EAAE,CAAC,MAAW,KAAK,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,MAAM,CAAC;AACpF,aAAA;AACD,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;AAE1B,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE;AAClD,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;AACf,sBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5D,sBAAE,CAAC;gBACL,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;AACxF,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;AACD,gBAAA,cAAc,EAAE;AACd,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;AACD,gBAAA,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;AAC7B,gBAAA,QAAQ,EAAE,CAAC;;;;AAIX,gBAAA,SAAS,EAAE;AACT,oBAAA,SAAS,EAAE,CAAC,GAAW,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC;AAChE,iBAAA;AACF,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;AAC3B,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM;AACjC,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;AACF,aAAA;YAED,MAAM;SACP;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;IAC/B;wGAveW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/B9C,4YAcA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcY,mBAAmB,8/BAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMlC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WACnB,CAAC,mBAAmB,EAAE,cAAc,CAAC,aAGnC,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAC3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4YAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAqCA,YAAY;uBAAC,gBAAgB;;;AE7DhC,OAAO,CAAC,GAAG,CAAC,CAACG,aAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;MAQrE,WAAW,CAAA;AAUF,IAAA,YAAA;AATX,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;AAEpB,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;AAEJ,IAAA,WAAA,CAAoB,YAAoB,EAAA;QAApB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAW;IAE3C,WAAW,GAAsB,EAAE;AAC3B,IAAA,aAAa;;AAIrB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;;IAIQ,WAAW,GAAA;QACjB,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,aAAa;YAC7D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC5D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;AAC7B,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,SAAS,EAAE,WAAW;gBACtB,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,kBAAkB;gBAChC,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;sBACR,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;sBACnC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACvD,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,GAAG,EAAE,EAAE;AACP,oBAAA,MAAM,EAAE,EAAE;AACV,oBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AAC3B,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AAC3C,wBAAA,GAAG,CAAC;wBACJ,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,wBAAA,SAAS,EAAE;4BACT,KAAK,EAAE,CAAC,CAAC,KAAK;AACf,yBAAA;AACF,qBAAA,CAAC,CAAC;AAEH,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;AAC/B,oBAAA,MAAM,EAAE;AACN,wBAAA;AACE,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAChF,4BAAA,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC5B,yBAAA;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG;AAC3C,wBAAA,OAAO,EAAE,GAAG;AACb,qBAAA;AAED,oBAAA,KAAK,EAAE;AACL,wBAAA,KAAK,EAAE,MAAM;AACd,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;;AAIA,IAAA,WAAW,CAAC,EAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;IAIQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;QAExB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;gBAC/C,IAAI,SAAS,KAAK,aAAa,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;AACtD,oBAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE;gBACrC;AAEA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAIA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;IACF;wGA5HW,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAJX,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB9C,kJAMO,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcK,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKlB,WAAW,EAAA,UAAA,EAAA,CAAA;kBAPvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB,CAAC,mBAAmB,CAAC,EAAA,SAAA,EACnB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,kJAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA;;sBAK3C;;sBACA;;sBACA;;sBAEA;;;AE9BH;;AAEG;;;;"}
1
+ {"version":3,"file":"cats-charts.mjs","sources":["../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.ts","../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.html","../../../projects/charts-lib/src/lib/service/charts.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.html","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.ts","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.html","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.ts","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.html","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.ts","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.html","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.ts","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.html","../../../projects/charts-lib/src/lib/components/custom-chart/custom-chart.ts","../../../projects/charts-lib/src/lib/components/custom-chart/custom-chart.html","../../../projects/charts-lib/src/lib/components/sankey-chart/sankey-chart.ts","../../../projects/charts-lib/src/lib/components/sankey-chart/sankey-chart.html","../../../projects/charts-lib/src/lib/components/heatmap/heatmap.ts","../../../projects/charts-lib/src/lib/components/heatmap/heatmap.html","../../../projects/charts-lib/src/cats-charts.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-right-click-card',\n imports: [],\n templateUrl: './right-click-card.html',\n styleUrl: './right-click-card.scss',\n})\nexport class RightClickCard {\n @Input() cardPosition: any;\n @Input() cardOptions: any;\n @Output() contextMenuClick = new EventEmitter<any>();\n \n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n // this.closeMenu();\n }\n}\n","<div\n class=\"context-card\"\n [style.left.px]=\"cardPosition.x\"\n [style.top.px]=\"cardPosition.y\"\n (click)=\"$event.stopPropagation()\"\n>\n @for (item of cardOptions; track item.value) {\n <div class=\"context-item\" (click)=\"onMenuClick(item)\">\n @if (item.icon) {\n <img [src]=\"item.icon\" alt=\"icon\" />\n }\n\n <span>{{ item.label }}</span>\n </div>\n }\n</div>\n","import { Injectable } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport {\n DoughnutChartConfig,\n HeatmapChartConfig,\n PieChartConfig,\n SankeyLink,\n SankeyNode,\n} from '../modal/charts-modal';\n@Injectable({\n providedIn: 'root',\n})\nexport class Charts {\n legendSelected: Record<string, boolean> = {};\n defaultColors: string[] = ['#22c55e', '#3b82f6', '#ef4444', '#6b7280'];\n\n buildGraphicLegend(total: number | null, config: any, chartInstance: any, chartType?: string) {\n const pillHeight = 28;\n const spacing = 14;\n const indicatorWidth = 12;\n const padding = 8;\n const font = '14px sans-serif';\n\n const containerWidth = chartInstance?.getWidth?.() ?? 800;\n const maxWidth = containerWidth * (config.legendContainerWidth ?? 0.7);\n\n const selectedMap = chartInstance?.getOption()?.legend?.[0]?.selected || {};\n let colorIndex = 0;\n const pills = (chartType === 'line' || chartType === 'bar' ? config.series : config.data).map(\n (item: any) => {\n const hasCustomColors = Array.isArray(config.colors) && config.colors.length > 0;\n const color =\n total === 0\n ? '#E6E7E8'\n : (item?.itemStyle?.color ??\n (hasCustomColors\n ? config.colors[colorIndex % config.colors.length]\n : this.defaultColors[colorIndex % this.defaultColors.length]));\n if (\n !item?.itemStyle?.color ||\n (item?.itemStyle?.color && Object.keys(selectedMap).length && !selectedMap[item.name])\n ) {\n colorIndex += 1;\n }\n const nameRect = echarts.format.getTextRect(item.name, font);\n const valueRect =\n chartType === 'line' || chartType === 'bar'\n ? { width: 0 }\n : echarts.format.getTextRect(\n String(config.valueFormatter ? config.valueFormatter(item.value) : item.value),\n font,\n );\n\n const pillWidth =\n padding +\n indicatorWidth +\n 6 +\n nameRect.width +\n (chartType === 'line' || chartType === 'bar' ? 0 : 8 + valueRect.width) +\n padding;\n\n return { item, color, pillWidth };\n },\n );\n\n // 🔹 Build rows dynamically\n const rows: any[] = [];\n let currentRow: any[] = [];\n let rowWidth = 0;\n\n pills.forEach((pill: any) => {\n if (rowWidth + pill.pillWidth > maxWidth && currentRow.length) {\n rows.push({ pills: currentRow, width: rowWidth });\n currentRow = [];\n rowWidth = 0;\n }\n\n currentRow.push(pill);\n rowWidth += pill.pillWidth + spacing;\n });\n\n if (currentRow.length) rows.push({ pills: currentRow, width: rowWidth });\n\n // 🔹 Build graphic children\n let yOffset = 0;\n const children: any[] = [];\n\n rows.forEach((row) => {\n let xOffset =\n config.legendAlign === 'center' && config.legendDirection !== 'vertical'\n ? (maxWidth - row.width) / 2\n : maxWidth;\n\n row.pills.forEach((pill: any) => {\n const isSelected = selectedMap[pill.item.name] !== false;\n const isDisabled = pill.item.value === 0;\n children.push({\n type: 'group',\n left: xOffset,\n top: yOffset,\n width: pill.pillWidth,\n height: pillHeight,\n cursor: isDisabled ? 'default' : 'pointer',\n\n onclick: () => {\n if (isDisabled) return;\n chartInstance.dispatchAction({\n type: 'legendToggleSelect',\n name: pill.item.name,\n });\n\n chartInstance.setOption({\n graphic: this.buildGraphicLegend(total, config, chartInstance, chartType),\n });\n },\n\n children: [\n {\n type: 'rect',\n shape: {\n width: pill.pillWidth,\n height: pillHeight,\n r: 4,\n },\n style: {\n fill:\n isSelected && !isDisabled\n ? this.hexToRgba(pill.color, total === 0 ? 0.3 : 0.03)\n : '#F2F2F7',\n stroke: isSelected && !isDisabled ? this.hexToRgba(pill.color, 0.3) : '#D1D1D6',\n lineWidth: 1,\n },\n },\n\n {\n type: 'rect',\n shape: { width: 12, height: config.legendIndicatorHeight ?? 12, r: 2 },\n left: padding,\n top: (pillHeight - (config.legendIndicatorHeight ?? 12)) / 2,\n style: {\n fill: isSelected && !isDisabled ? pill.color : '#C7C7CC',\n },\n },\n\n {\n type: 'text',\n left: padding + indicatorWidth + 6,\n top: (pillHeight - indicatorWidth) / 2,\n style: {\n text: `${pill.item.name}${chartType === 'line' || chartType === 'bar' ? '' : ':'}`,\n fontSize: 14,\n fontWeight: 400,\n fill: isSelected && !isDisabled && total !== 0 ? '#1C1C1E' : '#81858A',\n textVerticalAlign: 'middle',\n },\n },\n\n ...(chartType === 'line' || chartType === 'bar'\n ? []\n : [\n {\n type: 'text',\n right: padding,\n top: (pillHeight - indicatorWidth) / 2,\n style: {\n text:\n total === 0\n ? '-'\n : config.valueFormatter\n ? config.valueFormatter(pill.item.value)\n : pill.item.value,\n fontSize: 14,\n fontWeight: 500,\n fill: isSelected && !isDisabled ? '#1C1C1E' : '#81858A',\n textAlign: 'right',\n textVerticalAlign: 'middle',\n },\n },\n ]),\n ],\n });\n\n xOffset += pill.pillWidth + spacing;\n });\n\n yOffset += pillHeight + spacing;\n });\n\n // 🔹 Position logic\n const positionConfig: any = {};\n switch (config.legendPosition) {\n case 'top':\n positionConfig.top = 20;\n break;\n case 'bottom':\n positionConfig.bottom = 20;\n break;\n case 'left':\n positionConfig.left = 20;\n break;\n case 'right':\n positionConfig.right = 20;\n break;\n }\n\n // ALIGNMENT (Cross-Axis)\n if (config.legendPosition === 'top' || config.legendPosition === 'bottom') {\n // Horizontal area → align horizontally\n if (config.legendAlign === 'center') {\n positionConfig.left = 'center';\n } else if (config.legendAlign === 'right') {\n positionConfig.right = 20;\n } else {\n positionConfig.left = 20;\n }\n } else {\n // Vertical area → align vertically\n if (config.legendAlign === 'center') {\n positionConfig.top = 'middle';\n } else if (config.legendAlign === 'right') {\n positionConfig.bottom = 20;\n } else {\n positionConfig.top = 20;\n }\n }\n return [\n {\n id: 'customLegend',\n type: 'group',\n ...positionConfig,\n width: maxWidth,\n height: yOffset,\n children,\n },\n ];\n }\n buildCenterGraphic(config: any, total: number) {\n if (!config?.centerLabel?.show) return [];\n\n const centerConfig = config.centerLabel;\n const titleFont = centerConfig.fontSizeTitle ?? 14;\n const valueFont = centerConfig.fontSizeValue ?? 22;\n\n // Use external top if provided, default to 'center'\n // config.bottom\n const groupTop = centerConfig.top ?? 'center';\n const groupLeft = centerConfig.left ?? 'center';\n\n // Offsets relative to groupTop\n const titleOffset = -valueFont / 2;\n const valueOffset = titleFont / 2;\n\n return [\n {\n id: 'centerLabel',\n type: 'group',\n left: groupLeft,\n top: groupTop,\n silent: true,\n children: [\n ...(centerConfig.title\n ? [\n {\n type: 'text',\n style: {\n text: centerConfig.title ?? '',\n fontSize: titleFont,\n fill: centerConfig.titleColor ?? '#666',\n textAlign: 'center',\n textBaseline: 'middle',\n },\n top: titleOffset, // relative to groupTop\n },\n ]\n : []),\n {\n type: 'text',\n style: {\n text:\n centerConfig.type === 'custom' && centerConfig.formatter\n ? centerConfig.formatter(total, config.data)\n : (centerConfig.value ?? ''),\n fontSize: valueFont,\n fontWeight: 'bold',\n fill: centerConfig.valueColor ?? '#000',\n textAlign: 'center',\n textBaseline: 'middle',\n },\n top: valueOffset + (centerConfig?.valueTopSpace || 0), // relative to groupTop\n },\n ],\n },\n ];\n }\n hexToRgba(hex: string, alpha: number) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n pieTooltipFormatter(params: any, config: PieChartConfig | DoughnutChartConfig) {\n const color = params.color;\n const name = params.name;\n const value = params.value;\n const percent = params.percent;\n\n return `<div style=\"\n position: relative;\n background-color: #fff;\n padding: 8px 16px;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.08);\n display: flex;\n align-items: center;\n gap: 10px;\n \">\n <div style=\"\n position: absolute;\n left: -10px;\n top: 10px;\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid #ffffff;\n \"></div>\n\n <span style=\"\n width: 14px;\n height: 14px;\n background: ${color};\n border-radius: 3px;\n display: inline-block;\n \"></span>\n\n <span style=\"\n font-size: 12px;\n color: #434A51;\n \">\n ${name}: <b style=\"color:#111; font-weight:600;\">${config.valueFormatter ? config.valueFormatter(value) : value}</b> ${config.showTooltipPercent ? '(' + percent + '%)' : ''}\n </span>\n </div>\n `;\n }\n barLineTooltipFormatter(params: any, chartType?: 'bar' | 'line') {\n if (!params || !params.length) return '';\n\n const date = params[0].axisValueLabel || params[0].name;\n\n let total = 0;\n let rows = '';\n\n params.forEach((item: any) => {\n const color = item.color;\n const name = item.seriesName;\n const value = item.value ?? 0;\n\n total += Number(value);\n\n rows += `\n <div style=\"\n display:flex;\n align-items:center;\n gap:8px;\n font-size:13px;\n color:#434A51;\n \">\n <span style=\"\n width:14px;\n height: ${chartType === 'line' ? '3px' : '14px'};\n background:${color};\n border-radius:3px;\n display:inline-block;\n \"></span>\n\n <span>${name}: <b style=\"color:#111;font-weight:600;\">${value}</b></span>\n </div>\n `;\n });\n\n return `\n <div style=\"\n border-radius: 8px;\n background-color: #ffffff;\n border: 1px solid #f0f0f0;\n box-shadow: 0px 10.55px 23.39px -3.52px #0a0d1214;\n min-width:190px;\n \">\n <div style=\"\n font-size:15px;\n font-weight:600;\n color:#111;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid #F0F0F0 ;\n \">\n ${date}\n </div>\n <div style=\"padding: 1rem; display: flex; flex-direction: column; gap: 6px\">\n ${rows}\n <div>\n <div style=\"\n font-size:13px;\n color:#434A51;\n padding-top: 0.5rem;\n \">\n Total: <b style=\"color:#111;font-weight:600;\">${total}</b>\n </div>\n\n </div>\n `;\n }\n\n heatmapTooltipFormatter(params: any, config: HeatmapChartConfig) {\n const value = params.value ?? [];\n const xAxisLabel = config.xAxisData?.[value[0]] ?? value[0] ?? '-';\n const yAxisLabel = config.yAxisData?.[value[1]] ?? value[1] ?? '-';\n const heatValue = value[2] ?? '-';\n const color = params.color ?? '#38bdf8';\n\n return `\n <div style=\"\n background:#ffffff;\n padding:12px 14px;\n border-radius:8px;\n border:1px solid #f0f0f0;\n box-shadow:0px 10.55px 23.39px -3.52px #0a0d1214;\n min-width:160px;\n font-family: Inter, sans-serif;\n \">\n <div style=\"\n display:flex;\n align-items:center;\n gap:8px;\n color:#111;\n font-size:14px;\n font-weight:600;\n margin-bottom:8px;\n \">\n <span style=\"\n width:12px;\n height:12px;\n background:${color};\n border-radius:3px;\n display:inline-block;\n \"></span>\n <span>${config.seriesName ?? config.title ?? 'Heatmap'}</span>\n </div>\n\n <div style=\"font-size:13px;color:#434A51;margin-top:4px;\">\n ${xAxisLabel} / ${yAxisLabel}: <b style=\"color:#111;font-weight:600;\">${heatValue}</b>\n </div>\n </div>\n `;\n }\n\n timelineChartTooltipFormatter(params: any) {\n const d = params.data;\n\n return `<div style=\"\n position: relative;\n background:#fff;\n border-radius:8px;\n font-size:12px;\n color:#444;\n box-shadow:0 2px 8px rgba(0,0,0,0.15);\n min-width:220px;\n \">\n <div style=\"\n position: absolute;\n left: -10px;\n bottom: 10px;\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid #ffffff;\n \"></div>\n <div style=\"padding: 8px 16px; border-bottom:1px solid #E6E7E8;\">\n <div style=\"font-weight:400;color:#040D17;font-size: 14px;\">\n ${d.start || '00:00'} - ${d.end || '00:00'}\n </div>\n\n <div style=\"color:#81858A;margin-top:2px;\">\n ${d.date || 'NA'}\n </div>\n </div>\n <div style=\"padding: 8px 16px;\">\n <div>\n Work Mode: <b>${d.workMode || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n Productivity:\n <span style=\"color:#f59e0b;font-weight:600;\">\n ${d.productivity || 'NA'}\n </span>\n\n <span style=\"margin-left:12px;\">Activity:</span>\n <span style=\"color:#22c55e;font-weight:600;\">\n ${d.activity || 'NA'}\n </span>\n </div>\n\n <div style=\"margin-top:6px;\">\n System Presence: <b>${d.systemPresence || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n POW Source: <b>${d.powSource || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n Location: <b>${d.location || '-'}</b>\n </div>\n\n <div style=\"\n display:flex;\n gap:10px;\n align-items:center;\n margin-top:6px;\n \">\n Apps Used:\n <span style=\"color:#2563eb;font-weight:600;\">\n ${d.appsUsed || 0}\n </span>\n\n <span style=\"color:#ccc;\">|</span>\n\n Screenshots:\n <span style=\"color:#2563eb;font-weight:600;\">\n ${d.screenShots || 0}\n </span>\n </div>\n </div>\n </div>`;\n }\n getSankeyLevels(nodes: SankeyNode[] = [], links: SankeyLink[] = []) {\n const graph = new Map();\n const indegree = new Map();\n\n nodes.forEach((n) => {\n graph.set(n.name, []);\n indegree.set(n.name, 0);\n });\n\n links.forEach((link) => {\n graph.get(link.source).push(link.target);\n indegree.set(link.target, indegree.get(link.target) + 1);\n });\n\n const queue: any[] = [];\n const levelMap = new Map();\n\n indegree.forEach((deg, node) => {\n if (deg === 0) {\n queue.push(node);\n levelMap.set(node, 0);\n }\n });\n\n while (queue.length) {\n const current = queue.shift();\n const currentLevel = levelMap.get(current);\n\n graph.get(current).forEach((neighbor: any) => {\n const newLevel = currentLevel + 1;\n\n if (!levelMap.has(neighbor) || levelMap.get(neighbor) < newLevel) {\n levelMap.set(neighbor, newLevel);\n queue.push(neighbor);\n }\n });\n }\n\n return Math.max(...levelMap.values());\n }\n\n sankeyTooltipFormatter(params: any) {\n if (params.dataType === 'edge') {\n const { source, target, sourceDesc, targetDesc } = params.data;\n return `\n <div style=\"\n background: #fff;\n padding: 12px 14px;\n border-radius: 10px;\n box-shadow: 0 4px 14px rgba(0,0,0,0.15);\n min-width: 220px;\n font-family: sans-serif;\n \">\n <div style=\"margin-bottom:10px;\">\n <div style=\"font-size:12px; color:#777;\">Source: \n <span style=\"font-weight:600; color:#000\">${source}</span>\n </div>\n ${\n sourceDesc\n ? `<div style=\"font-size:11px; color:#aaa;\">\n ${sourceDesc}\n </div>`\n : ''\n }\n </div>\n \n <div>\n <div style=\"font-size:12px; color:#777;\">Destination: \n <span style=\"font-weight:600; color:#000\">${target}</span>\n </div>\n ${\n targetDesc\n ? `<div style=\"font-size:11px; color:#aaa;\">\n ${targetDesc}\n </div>`\n : ''\n }\n </div>\n </div>\n `;\n }\n return `\n <div style=\"\n background: #fff;\n padding: 10px;\n border-radius: 8px;\n box-shadow: 0 4px 10px rgba(0,0,0,0.15);\n \">\n ${params.name}: <b>${params.value}</b>\n </div>\n `;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n HostListener,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport { LineChart } from 'echarts/charts';\nimport {\n GridComponent,\n TooltipComponent,\n LegendComponent,\n TitleComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { LineChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\nimport { RightClickCard } from '../right-click-card';\n\necharts.use([\n LineChart,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n CanvasRenderer,\n TitleComponent,\n]);\n\n@Component({\n selector: 'lib-line-chart',\n standalone: true,\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './line-chart.html',\n styleUrls: ['./line-chart.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinesChart {\n @Input() config!: LineChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n chartOption: EChartsCoreOption = {};\n private chartInstance!: ECharts;\n cardPosition = { x: 0, y: 0 };\n openCard = false;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* ------------------ CHANGE HANDLING ------------------ */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n private buildOption() {\n this.chartOption = {\n backgroundColor: this.config.backgroundColor || 'transparent',\n color: this.config.colors || this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition || 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip,\n trigger: 'axis',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.barLineTooltipFormatter(params, 'line'),\n },\n legend: {\n show: false,\n },\n graphic: this.chartInstance\n ? [\n ...(this.config.hideLegend\n ? []\n : this.chartService?.buildGraphicLegend(\n null,\n this.config,\n this.chartInstance,\n 'line',\n )),\n ]\n : undefined,\n\n grid: this.config.isTrendChart\n ? { left: 0, right: 0, top: 0, bottom: 0 }\n : {\n left: this.config.gridLeft ?? 0,\n right: this.config.gridRight ?? 0,\n bottom: this.config.gridBottom ?? 0,\n top: this.config.gridTop ?? 0,\n containLabel: true,\n },\n\n xAxis: {\n show: !this.config.isTrendChart,\n type: 'category',\n // boundaryGap: false,\n data: this.config.xAxisData,\n axisLine: {\n show: this.config.showXAxisLine ?? true,\n },\n ...this.config.xAxis,\n },\n\n yAxis: {\n show: !this.config.isTrendChart,\n type: 'value',\n boundaryGap: this.config.isTrendChart ? [0.2] : undefined,\n\n axisLine: {\n show: this.config.showYAxisLine ?? true,\n },\n ...this.config.yAxis,\n },\n\n series: (this.config?.series || []).map((s) => {\n const lineColor = s.areaColor || '#3b82f6';\n return {\n type: 'line',\n smooth: s.smooth ?? true,\n areaStyle: s.area\n ? {\n color: {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: [\n {\n offset: 0,\n color: lineColor,\n },\n {\n offset: 1,\n color: this.chartService.hexToRgba(lineColor, 0),\n },\n ],\n },\n opacity: 0.4,\n }\n : undefined,\n ...s,\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'top',\n ...(s['label'] ? s['label'] : {}),\n },\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 0,\n ...(s['itemStyle'] ? s['itemStyle'] : {}),\n },\n };\n }),\n };\n }\n\n /* ------------------ INIT ------------------ */\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n // private bindEvents() {\n // if (!this.chartInstance) return;\n\n // this.chartInstance.off();\n\n // this.events.forEach((eventName) => {\n // this.chartInstance.on(eventName, (params: any) => {\n // if (eventName === 'contextmenu' && params.event?.event) {\n // params.event.event.preventDefault();\n\n // const container = this.chartInstance.getDom();\n // const rect = container.getBoundingClientRect();\n\n // this.cardPosition = {\n // x: params.event.event.clientX - rect.left,\n // y: params.event.event.clientY - rect.top,\n // };\n\n // this.openCard = true;\n // this.cdr.markForCheck();\n // }\n\n // this.chartEvent.emit({\n // type: eventName,\n // data: params,\n // });\n // });\n // });\n // }\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n /* ---- existing chart events ---- */\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n /* ---- RIGHT CLICK ANYWHERE IN GRID ---- */\n\n const zr = this.chartInstance.getZr();\n\n zr.off('contextmenu');\n\n zr.on('contextmenu', (event: any) => {\n event.event.preventDefault();\n\n const point = [event.offsetX, event.offsetY];\n\n // check if click is inside grid\n if (!this.chartInstance.containPixel({ gridIndex: 0 }, point)) return;\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.event.clientX - rect.left,\n y: event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: event,\n });\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n></div>\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\n\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { BarChart as EBarChart } from 'echarts/charts';\n\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n DatasetComponent,\n DataZoomComponent,\n} from 'echarts/components';\n\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { BarChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n EBarChart,\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n DatasetComponent,\n CanvasRenderer,\n DataZoomComponent,\n]);\n\n@Component({\n selector: 'lib-bar-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChart {\n @Input() config!: BarChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n chartOption!: EChartsCoreOption;\n\n private chartInstance!: ECharts;\n\n cardPosition = { x: 0, y: 0 };\n openCard = false;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* ------------------ CONFIG CHANGE ------------------ */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n moveLeft() {\n this.moveZoom(-10);\n }\n\n moveRight() {\n this.moveZoom(10);\n }\n\n moveZoom(step: number) {\n const option: any = this.chartInstance.getOption();\n const zoom = option.dataZoom?.[0];\n if (!zoom) return;\n let start = zoom.start ?? 0;\n let end = zoom.end ?? 100;\n\n const windowSize = end - start;\n if ((step < 0 && start <= 0) || (step > 0 && end >= 100)) {\n return;\n }\n\n let newStart = start + step;\n let newEnd = end + step;\n\n if (newStart < 0) {\n newStart = 0;\n newEnd = windowSize;\n }\n\n if (newEnd > 100) {\n newEnd = 100;\n newStart = 100 - windowSize;\n }\n\n this.chartInstance.dispatchAction({\n type: 'dataZoom',\n start: newStart,\n end: newEnd,\n });\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n\n private buildOption() {\n // Common chart option\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor || 'transparent',\n color: this.config.colors || this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition || 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip,\n trigger: 'axis',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.barLineTooltipFormatter(params),\n },\n legend: {\n show: false,\n },\n grid: {\n left: this.config.gridLeft ?? 0,\n right: this.config.gridRight ?? 0,\n bottom: this.config.gridBottom ?? 0,\n top: this.config.gridTop ?? 0,\n containLabel: true,\n },\n graphic: this.chartInstance\n ? [\n ...(this.config.hideLegend\n ? []\n : this.chartService?.buildGraphicLegend(\n null,\n this.config,\n this.chartInstance,\n 'bar',\n )),\n ]\n : undefined,\n\n xAxis: {\n type: 'category',\n data: this.config.xAxisData,\n axisLine: { show: this.config.showXAxisLine ?? true },\n ...this.config.xAxis,\n },\n\n yAxis: {\n type: 'value',\n axisLine: { show: this.config.showYAxisLine ?? true },\n ...this.config.yAxis,\n },\n\n series: (this.config.series || []).map((s) => {\n return {\n type: 'bar',\n stack: this.config.stacked ? 'total' : undefined,\n emphasis: {\n scale: false,\n },\n ...(this.config.barWidth && { barWidth: this.config.barWidth }),\n ...s,\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'top',\n ...(s['label'] ? s['label'] : {}),\n },\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 0,\n ...(s['itemStyle'] ? s['itemStyle'] : {}),\n },\n };\n }),\n\n ...(this.config?.showZoomSlider && {\n dataZoom: [\n {\n type: 'slider',\n show: true,\n xAxisIndex: 0,\n bottom: 0,\n height: 8,\n ...(this.config.zoomStart && { start: this.config.zoomStart }),\n ...(this.config.zoomEnd && { end: this.config.zoomEnd }),\n // UI styling\n backgroundColor: '#F0F0F0',\n fillerColor: '#81858A',\n borderColor: 'transparent',\n borderRadius: 100,\n handleSize: 0,\n brushSelect: false,\n handleStyle: {\n color: '#F0F0F0',\n },\n textStyle: {\n color: 'transparent',\n },\n dataBackground: {\n lineStyle: {\n color: 'transparent',\n },\n areaStyle: {\n color: 'transparent',\n },\n },\n selectedDataBackground: {\n lineStyle: {\n color: 'transparent',\n },\n areaStyle: {\n color: 'transparent',\n },\n },\n\n moveHandleSize: 0,\n },\n {\n type: 'inside',\n xAxisIndex: 0,\n },\n ],\n }),\n };\n }\n\n /* ------------------ INIT ------------------ */\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n\n // private bindEvents() {\n // if (!this.chartInstance) return;\n\n // this.chartInstance.off();\n\n // this.events.forEach((eventName) => {\n // this.chartInstance.on(eventName, (params: any) => {\n // if (eventName === 'contextmenu' && params.event?.event) {\n // params.event.event.preventDefault();\n\n // const container = this.chartInstance.getDom();\n // const rect = container.getBoundingClientRect();\n\n // this.cardPosition = {\n // x: params.event.event.clientX - rect.left,\n // y: params.event.event.clientY - rect.top,\n // };\n\n // this.openCard = true;\n // this.cdr.markForCheck();\n // }\n\n // this.chartEvent.emit({\n // type: eventName,\n // data: params,\n // });\n // });\n // });\n // }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n /* ---- existing chart events ---- */\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n /* ---- RIGHT CLICK ANYWHERE IN GRID ---- */\n\n const zr = this.chartInstance.getZr();\n\n zr.off('contextmenu');\n\n zr.on('contextmenu', (event: any) => {\n event.event.preventDefault();\n\n const point = [event.offsetX, event.offsetY];\n\n // check if click is inside grid\n if (!this.chartInstance.containPixel({ gridIndex: 0 }, point)) return;\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.event.clientX - rect.left,\n y: event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: event,\n });\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n /* ------------------ CONTEXT MENU ------------------ */\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n@if (config.showZoomSlider) {\n <div class=\"zoom-controls\" [style]=\"config.zoomControlButtonStyle\">\n <button (click)=\"moveLeft()\"><img src=\"images/leftArrow.svg\" alt=\">\" /></button>\n <button (click)=\"moveRight()\"><img src=\"images/rightArrow.svg\" alt=\"<\" /></button>\n </div>\n}\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { PieChart as EPieChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { PieChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([EPieChart, TitleComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-pie-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './pie-chart.html',\n styleUrl: './pie-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PieChart {\n /* -------------------- Inputs -------------------- */\n\n @Input() config!: PieChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() cardOptions: any[] = [];\n\n /* -------------------- Outputs -------------------- */\n\n @Output() chartEvent = new EventEmitter<{ type: string; data: any }>();\n @Output() cardOptionClick = new EventEmitter<any>();\n\n /* -------------------- Local State -------------------- */\n\n chartOption!: EChartsCoreOption;\n private chartInstance!: ECharts;\n\n openCard = false;\n cardPosition = { x: 0, y: 0 };\n\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* -------------------- Lifecycle -------------------- */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n // If theme changes → dispose instance\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance?.dispose();\n }\n }\n\n /* -------------------- Chart Init -------------------- */\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* -------------------- Build Option -------------------- */\n\n private buildOption(): void {\n const total = this.config.data?.reduce((sum, item) => sum + item.value, 0);\n\n this.chartOption = {\n backgroundColor: this.config.backgroundColor ?? 'transparent',\n\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition ?? 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params, this.config)\n : this.chartService.pieTooltipFormatter(params, this.config),\n },\n\n legend: { show: false },\n\n graphic:\n this.chartInstance && !this.config.hideLegend\n ? this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)\n : undefined,\n\n series: [\n {\n type: 'pie',\n top: this.config.top ?? 0,\n bottom: this.config.bottom ?? 0,\n radius: this.config.radius ?? '60%',\n center: this.config.center ?? ['50%', '50%'],\n data: this.config?.data || [],\n color: this.config.colors,\n\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'outside',\n formatter: (params: any) => {\n const percent = ((params.value / total) * 100).toFixed(1);\n\n let text = params.name;\n if (this.config.showLabelValue) text += `\\n${params.value}`;\n if (this.config.showLabelPercentage) text += `\\n${percent}%`;\n\n return text;\n },\n },\n\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 0,\n borderColor: this.config.borderColor ?? '#fff',\n borderWidth: this.config.borderWidth ?? 0,\n },\n\n emphasis:\n (this.config.enableHoverEffect ?? true)\n ? {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n },\n }\n : undefined,\n },\n ],\n };\n }\n\n /* -------------------- Events -------------------- */\n\n private bindEvents(): void {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu') {\n params.event?.event?.preventDefault();\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: params.event.event.clientX - rect.left,\n y: params.event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n }\n\n this.chartEvent.emit({ type: eventName, data: params });\n });\n });\n }\n\n onMenuClick(item: any) {\n this.cardOptionClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"cardOptions\"\n [cardPosition]=\"cardPosition\"\n (contextMenuClick)=\"onMenuClick($event)\"\n >\n </lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { PieChart as EPieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n GraphicComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { DoughnutChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n EPieChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n GraphicComponent,\n CanvasRenderer,\n]);\n\n@Component({\n selector: 'lib-doughnut-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './doughnut-chart.html',\n styleUrl: './doughnut-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DoughnutChart {\n @Input() config!: DoughnutChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n cardPosition = { x: 0, y: 0 };\n openCard: boolean = false;\n chartOption!: EChartsCoreOption;\n private chartInstance!: ECharts;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n /* ------------------ CONFIG CHANGE ------------------ */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n // If theme changes → dispose instance\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n // Rebuild option when config changes\n this.buildOption();\n }\n // card open on right click\n /**\n * @description Determines whether menu click on\n * @author Shiva Kant\n * @param item\n */\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n this.closeCard();\n }\n\n /**\n * @description Hosts listener\n * @author Shiva Kant\n */\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n /* ------------------ OPTION BUILDER ------------------ */\n /**\n * @description Builds option\n * @author Shiva Kant\n * @param config\n * @returns option\n */\n buildOption() {\n const total = this.config?.data?.reduce((sum, item) => sum + item.value, 0);\n const seriesData = (this.config?.data || [])?.map((d) => ({\n ...d,\n ...(!d.value && {\n itemStyle: {\n color: total === 0 ? '#d3d3d3' : undefined,\n borderWidth: total == 0 ? (this.config.borderWidth ?? 2) : 0,\n },\n }), // grey\n }));\n\n const innerRadius = this.config.innerRadius ?? '70%';\n const outerRadius = this.config.outerRadius ?? '90%';\n\n this.chartOption = {\n backgroundColor: this.config.backgroundColor || 'transparent',\n color: this.config.colors ?? this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition || 'center',\n },\n tooltip: {\n show: this.config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params, this.config)\n : this.chartService.pieTooltipFormatter(params, this.config),\n },\n\n legend: { show: false },\n graphic: this.chartInstance\n ? [\n ...(this.config.hideLegend\n ? []\n : this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)),\n ...this.chartService.buildCenterGraphic(this.config, total),\n ]\n : undefined,\n series: [\n {\n type: 'pie',\n top: this.config.top ?? 0,\n bottom: this.config.bottom ?? 0,\n radius: [innerRadius, outerRadius],\n center: this.config.center ?? ['50%', '50%'],\n data: seriesData,\n\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'outside',\n },\n\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 8,\n borderColor: this.config.borderColor || '#fff',\n borderWidth: this.config.borderWidth ?? 2,\n },\n emphasis: {\n scale: this.config.emphasisScale,\n },\n // ...this.config.series\n },\n ],\n };\n }\n\n /* ------------------ INIT ------------------ */\n /**\n * @description Determines whether chart init on\n * @author Shiva Kant\n * @param ec\n * @param [container]\n */\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n @HostListener('window:resize')\n onResize() {\n this.chartInstance?.resize();\n }\n /* ------------------ EVENTS ------------------ */\n /**\n * @description Binds events\n * @author Shiva Kant\n * @returns\n */\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n // Prevent browser context menu\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: params.event?.event.clientX - rect.left,\n y: params.event?.event.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n /* ------------------ DESTROY ------------------ */\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance?.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import { Component, Input } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsCoreOption } from 'echarts/core';\nimport { SimpleChanges } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\necharts.use([LineChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-stacked-area-chart',\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './stacked-area-chart.html',\n styleUrl: './stacked-area-chart.scss',\n})\nexport class StackedAreaChart {\n @Input() data: any;\n @Input() title: string = 'Protocol Traffic Overview';\n\n chartOption!: EChartsCoreOption;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.buildChart();\n }\n }\n\n buildChart() {\n this.chartOption = {\n tooltip: {\n trigger: 'axis',\n },\n legend: {\n data: this.data.series.map((s: any) => s.name),\n top: 10,\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '3%',\n containLabel: true,\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n data: this.data.time,\n },\n yAxis: {\n type: 'value',\n },\n series: this.data.series.map((s: any) => ({\n name: s.name,\n type: s.type??'line',\n smooth: true,\n data: s.values,\n areaStyle: {\n opacity: 0.15,\n },\n })),\n };\n }\n}\n","<div\n echarts\n class=\"chart-container\"\n [options]=\"chartOption\"\n ></div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport { CustomChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\n\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { CustomChartConfig, TimelineTrack, ShiftItem } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\nimport { RightClickCard } from '../right-click-card';\n\necharts.use([CustomChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-custom-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n templateUrl: './custom-chart.html',\n styleUrl: './custom-chart.scss',\n providers: [provideEchartsCore({ echarts })],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomChartComponent implements OnChanges, OnDestroy {\n @Input() config!: CustomChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n cardPosition = { x: 0, y: 0 };\n openCard: boolean = false;\n\n chartOption!: EChartsCoreOption;\n filteredConetxtMenuOptions: any[] = [];\n\n private chartInstance!: ECharts;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n this.closeCard();\n }\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n /* ---- existing chart events ---- */\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n /* ---- RIGHT CLICK ANYWHERE IN GRID ---- */\n\n const zr = this.chartInstance.getZr();\n\n zr.off('contextmenu');\n\n zr.on('contextmenu', (event: any) => {\n event.event.preventDefault();\n\n this.filteredConetxtMenuOptions = this.contextMenuOptions.filter(\n (opt) => (opt.showOnTarget && event.target?.type === 'rect') || !opt.showOnTarget,\n );\n\n const point = [event.offsetX, event.offsetY];\n\n // check if click is inside grid\n if (!this.chartInstance.containPixel({ gridIndex: 0 }, point)) return;\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.event.clientX - rect.left,\n y: event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: event,\n });\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n // private convertTimeToNumber(time: string): number {\n // const [h, m] = time.split(':').map(Number);\n // return h + m / 60;\n // }\n\n private convertTimeToNumber(time: string): number {\n if (!time) return 0;\n const trimmed = time.trim().toLowerCase();\n const ampmMatch = trimmed.match(/^(\\d{1,2}):(\\d{2})\\s?(am|pm)$/);\n if (ampmMatch) {\n let hours = Number(ampmMatch[1]);\n const minutes = Number(ampmMatch[2]);\n const period = ampmMatch[3];\n\n if (period === 'pm' && hours !== 12) {\n hours += 12;\n }\n if (period === 'am' && hours === 12) {\n hours = 0;\n }\n return hours + minutes / 60;\n }\n\n const match24 = trimmed.match(/^(\\d{1,2}):(\\d{2})$/);\n\n if (match24) {\n const hours = Number(match24[1]);\n const minutes = Number(match24[2]);\n\n return hours + minutes / 60;\n }\n\n return 0;\n }\n\n private is12HourFormat(time?: string): boolean {\n if (!time) return false;\n return /am|pm/i.test(time);\n }\n\n private formatHourLabel(val: number, is12Hour: boolean): string {\n const hour = Math.floor(val);\n if (!is12Hour) {\n return `${hour.toString().padStart(2, '0')}:00`;\n }\n let h = hour;\n const suffix = h >= 12 ? 'PM' : 'AM';\n if (h === 0) h = 12;\n else if (h > 12) h -= 12;\n return `${h}:00 ${suffix}`;\n }\n\n private renderBlock =\n (catIndex: number, isShift = false) =>\n (params: any, api: any) => {\n const categoryIndex = this.config.chartMode === 'weekly' ? catIndex : api.value(0);\n\n const start = api.coord([api.value(1), categoryIndex]);\n const end = api.coord([api.value(2), categoryIndex]);\n const baseHeight = api.size([0, 1])[1];\n\n const height =\n baseHeight * (isShift ? (this.config.shiftHeight ?? 1) : (this.config.barHeight ?? 0.6));\n\n return {\n type: 'rect',\n shape: {\n x: start[0],\n y: start[1] - height / 2,\n width: end[0] - start[0],\n height: height,\n },\n style: api.style(),\n emphasis: {\n style: {\n stroke: '#434A51',\n lineWidth: 1,\n\n shadowBlur: 12,\n shadowColor: '#0A0D124D',\n shadowOffsetX: 4,\n shadowOffsetY: 4,\n },\n },\n };\n };\n\n private buildLegend() {\n const groups = Object.keys(this.config.legends);\n\n const legends: any[] = [];\n let topOffset = 0;\n\n groups.forEach((group) => {\n const items = this.config.legends[group];\n\n if (!items || !items.length) return;\n const names = [\n ...(this.config.hideLegendCategory\n ? []\n : [{ name: group, icon: 'none', itemStyle: { opacity: 0 } }]),\n ...items.map((i: any) => ({\n name: i.name,\n itemStyle: { color: i.color },\n })),\n ];\n\n legends.push({\n top: topOffset,\n left: 0,\n orient: 'horizontal',\n icon: 'roundRect',\n itemGap: 16,\n itemWidth: 12,\n itemHeight: 12,\n data: names,\n\n formatter: (name: string) => {\n if (name === group) {\n return `{title|${name}:}`;\n }\n return name;\n },\n\n textStyle: {\n fontSize: 14,\n rich: {\n title: {\n fontWeight: 'bold',\n padding: [0, 6, 0, -12],\n },\n },\n },\n });\n\n topOffset += 30;\n });\n return legends;\n }\n\n private buildOption() {\n if (!this.config?.categories || !this.config?.data) return;\n\n const series: any[] = [];\n\n const categories = this.config.categories;\n\n /* ---------------- SHIFT DATA ---------------- */\n\n if (\n this.config.chartMode === 'daily' &&\n this.config.data?.length &&\n this.config.data[0]?.shifts?.items?.length\n ) {\n this.config.categories.forEach((cat, index) => {\n const shiftData: any[] = [];\n (this.config.data[0]?.shifts?.items || []).forEach((s: ShiftItem) => {\n shiftData.push({\n value: [index, this.convertTimeToNumber(s.start), this.convertTimeToNumber(s.end)],\n itemStyle: {\n color: this.config.shiftColor ?? '#F0F0F0',\n },\n });\n });\n if (shiftData.length) {\n series.push({\n name: this.config.data[0]?.shifts?.name || 'Shift',\n type: 'custom',\n renderItem: this.renderBlock(index, true),\n silent: true,\n z: 0,\n encode: { x: [1, 2], y: 0 },\n data: shiftData,\n });\n }\n });\n }\n\n /* -------- ACTIVITY LINE -------- */\n\n if (\n this.config.chartMode === 'daily' &&\n this.config.data?.length &&\n this.config.data[0]?.activity?.length\n ) {\n this.config.data[0].activity.forEach((act, index) => {\n const activityData: any[] = [];\n const categoryIndex = this.config.categories.indexOf(act.category);\n\n const activityTrack = this.config.legends[act.category]?.find(\n (leg) => leg.name === act.name,\n );\n let trackColor = '#C8DFF9';\n if (activityTrack) {\n trackColor = activityTrack?.color || '#C8DFF9';\n }\n if (categoryIndex === -1) return;\n\n act.items.forEach((p: any, i: number) => {\n const y =\n categoryIndex +\n p.value * (this.config.barHeight ?? 0.6) +\n (1 - (this.config.barHeight ?? 0.6)) / 2;\n\n activityData.push([this.convertTimeToNumber(p.time), y]);\n });\n if (activityData.length) {\n series.push({\n name: act.name,\n type: 'line',\n symbol: 'none',\n yAxisIndex: 1,\n z: 3,\n lineStyle: {\n width: 1,\n color: trackColor,\n },\n\n data: activityData,\n });\n }\n });\n }\n\n /* ---------------- TRACK SERIES ---------------- */\n this.config.data.forEach((data, index) => {\n if (this.config.chartMode === 'weekly' && data.shifts && data.shifts.items.length) {\n const shiftData: any[] = [];\n\n (data.shifts.items || []).forEach((s: ShiftItem) => {\n shiftData.push({\n value: [index, this.convertTimeToNumber(s.start), this.convertTimeToNumber(s.end)],\n itemStyle: {\n color: this.config.shiftColor ?? '#F0F0F0',\n },\n });\n });\n if (shiftData.length) {\n series.push({\n name: 'Shift',\n type: 'custom',\n renderItem: this.renderBlock(index, true),\n silent: true,\n z: 0,\n encode: { x: [1, 2], y: 0 },\n data: shiftData,\n });\n }\n }\n\n const activityData: any[] = [];\n if (this.config.chartMode === 'weekly' && data.activity && data.activity[0]?.items?.length) {\n const act = data.activity[0];\n const activityTrack = this.config.legends[act.category]?.find(\n (leg) => leg.name === act.name,\n );\n let trackColor = '#C8DFF9';\n if (activityTrack) {\n trackColor = activityTrack?.color || '#C8DFF9';\n }\n\n act.items.forEach((p: any, i: number) => {\n const y =\n index +\n p.value * (this.config.barHeight ?? 0.6) +\n (1 - (this.config.barHeight ?? 0.6)) / 2;\n\n activityData.push([this.convertTimeToNumber(p.time), y]);\n });\n if (activityData.length) {\n series.push({\n name: act.name,\n type: 'line',\n symbol: 'none',\n yAxisIndex: 1,\n z: 3,\n lineStyle: {\n width: 1,\n color: trackColor,\n },\n\n data: activityData,\n });\n }\n }\n\n data.tracks.forEach((track: TimelineTrack) => {\n if (!this.config.hideLegendCategory) {\n series.push({ name: track.category, type: 'custom', renderItem: () => {}, data: [] });\n }\n track.items.forEach((item) => {\n series.push({\n name: item.type,\n type: 'custom',\n renderItem: this.renderBlock(index, false),\n encode: { x: [1, 2], y: 0 },\n z: 2,\n data: [\n {\n ...item,\n value: [\n categories.indexOf(track.category),\n this.convertTimeToNumber(item.start),\n this.convertTimeToNumber(item.end),\n ],\n itemStyle: {\n color: this.config.legends[track.category]?.find((leg) => leg.name === item.type)\n ?.color,\n },\n type: item.type,\n },\n ],\n });\n });\n });\n });\n\n /* ---------------- CHART OPTION ---------------- */\n const is12Hour =\n this.is12HourFormat(this.config.startHour) || this.is12HourFormat(this.config.endHour);\n this.chartOption = {\n tooltip: {\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n extraCssText: 'box-shadow:none;',\n formatter: (params: any) => this.chartService.timelineChartTooltipFormatter(params),\n },\n legend: this.buildLegend(),\n\n grid: {\n left: 0,\n right: 0,\n bottom: 0,\n top: Object.keys(this.config.legends).length * 30,\n },\n\n xAxis: {\n type: 'value',\n min: this.config.startHour\n ? Math.floor(this.convertTimeToNumber(this.config.startHour))\n : 0,\n max: this.config.endHour ? Math.ceil(this.convertTimeToNumber(this.config.endHour)) : 24,\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n lineStyle: {\n width: 0.5,\n color: '#C0C2C5',\n },\n },\n minorSplitLine: {\n show: true,\n lineStyle: {\n width: 0.2,\n color: '#DADBDC',\n },\n },\n minorTick: { splitNumber: 4 },\n interval: 1,\n // axisLabel: {\n // formatter: (val: number) => `${val}:00`,\n // },\n axisLabel: {\n formatter: (val: number) => this.formatHourLabel(val, is12Hour),\n },\n },\n\n yAxis: [\n {\n type: 'category',\n data: this.config.yAxisData,\n axisLine: {\n show: false,\n },\n },\n {\n type: 'value',\n min: 0,\n max: this.config.yAxisData.length,\n show: false,\n },\n ],\n\n series,\n };\n }\n\n ngOnDestroy(): void {\n this.chartInstance?.dispose();\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n@if (openCard && filteredConetxtMenuOptions.length > 0) {\n <lib-right-click-card\n [cardOptions]=\"filteredConetxtMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { EChartsCoreOption } from 'echarts';\nimport { SankeyChartConfig } from '../../modal/charts-modal';\nimport { TooltipComponent, TitleComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { SankeyChart as SankeyChartEchart } from 'echarts/charts';\nimport { Charts } from '../../service/charts';\necharts.use([SankeyChartEchart, TooltipComponent, TitleComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-sankey-chart',\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './sankey-chart.html',\n styleUrl: './sankey-chart.scss',\n})\nexport class SankeyChart implements OnChanges, OnDestroy {\n @Input() config!: SankeyChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n constructor(private chartService: Charts) {}\n\n chartOption: EChartsCoreOption = {};\n private chartInstance!: echarts.ECharts;\n\n /* ------------------ CHANGE HANDLING ------------------ */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n\n private buildOption() {\n this.chartOption = {\n backgroundColor: this.config.backgroundColor || 'transparent',\n color: this.config.colors ?? this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip,\n trigger: 'item',\n triggerOn: 'mousemove',\n backgroundColor: 'transparent', // important for custom card\n borderWidth: 0,\n extraCssText: 'box-shadow:none;', // remove default shadow\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.sankeyTooltipFormatter(params),\n },\n series: [\n {\n left: 16,\n right: 16,\n top: 16,\n bottom: 16,\n ...this.config.seriesOption,\n type: 'sankey',\n data: (this.config?.nodes || []).map((n) => ({\n ...n,\n name: n.name,\n itemStyle: {\n color: n.color,\n },\n })),\n\n links: this.config?.links || [],\n levels: [\n {\n depth: this.chartService.getSankeyLevels(this.config?.nodes, this.config?.links),\n label: { position: 'left' },\n },\n ],\n lineStyle: {\n color: 'gradient',\n curveness: this.config.lineCurveness ?? 0.5,\n opacity: 0.3,\n },\n\n label: {\n color: '#333',\n },\n },\n ],\n };\n }\n\n /* ------------------ INIT ------------------ */\n\n onChartInit(ec: echarts.ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { HeatmapChart } from 'echarts/charts';\nimport {\n GridComponent,\n TooltipComponent,\n TitleComponent,\n VisualMapComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { HeatmapChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n HeatmapChart,\n GridComponent,\n TooltipComponent,\n TitleComponent,\n VisualMapComponent,\n CanvasRenderer,\n]);\n\n@Component({\n selector: 'lib-heatmap',\n standalone: true,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './heatmap.html',\n styleUrl: './heatmap.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Heatmap implements OnChanges, OnDestroy {\n @Input() config!: HeatmapChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n chartOption: EChartsCoreOption = {};\n legendItems: { label: string; color: string }[] = [];\n private chartInstance?: ECharts;\n\n constructor(private chartService: Charts) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n this.chartInstance = undefined;\n }\n\n this.chartOption = this.buildOption(this.config);\n this.legendItems = this.buildLegendItems(this.config);\n\n if (this.chartInstance) {\n this.chartInstance.setOption(this.chartOption, true);\n this.bindEvents();\n }\n }\n\n private buildOption(config: HeatmapChartConfig): EChartsCoreOption {\n const data = config.data ?? [];\n const values = data.map((item) => item[2]).filter((value) => Number.isFinite(value));\n const min = config.min ?? (values.length ? Math.min(...values) : 0);\n const max = config.max ?? (values.length ? Math.max(...values) : 100);\n\n const baseSeries = {\n name: config.seriesName ?? config.title ?? 'Heatmap',\n type: 'heatmap',\n data,\n label: {\n show: config.showLabel ?? false,\n color: config.labelColor ?? '#111827',\n formatter: config.labelFormatter,\n },\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowColor: 'rgba(0, 0, 0, 0.25)',\n },\n },\n };\n\n return {\n backgroundColor: config.backgroundColor || 'transparent',\n\n title: {\n show: config.showTitle ?? !!config.title,\n text: config.title,\n left: config.titlePosition || 'center',\n },\n\n tooltip: {\n show: config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n confine: true,\n ...config.tooltip,\n formatter:\n config.tooltipFormatter ||\n ((params: any) => this.chartService.heatmapTooltipFormatter(params, config)),\n },\n\n grid: {\n left: config.grid?.left ?? '3%',\n right: config.grid?.right ?? '4%',\n top: config.grid?.top ?? '10%',\n bottom: config.grid?.bottom ?? '8%',\n height: config.grid?.height,\n containLabel: config.grid?.containLabel ?? true,\n },\n\n xAxis: {\n type: 'category',\n data: config.xAxisData ?? [],\n splitArea: { show: true },\n ...config.xAxis,\n },\n\n yAxis: {\n type: 'category',\n data: config.yAxisData ?? [],\n splitArea: { show: true },\n ...config.yAxis,\n },\n\n visualMap: {\n show: config.visualMap?.show ?? false,\n min,\n max,\n calculable: true,\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n inRange: {\n color: config.colors ?? ['#e0f2fe', '#38bdf8', '#0369a1'],\n },\n ...config.visualMap,\n },\n\n series: this.buildSeries(config.series, baseSeries),\n };\n }\n\n private buildLegendItems(config: HeatmapChartConfig) {\n const pieces = config.visualMap?.pieces;\n\n if (Array.isArray(pieces) && pieces.length) {\n return pieces.map((piece: any) => ({\n label: piece.label ?? `${piece.max ?? piece.value ?? piece.min}%`,\n color: piece.color ?? piece.itemStyle?.color ?? '#e5e7eb',\n }));\n }\n\n const colors = config.colors ?? ['#e0f2fe', '#38bdf8', '#0369a1'];\n const step = colors.length ? 100 / colors.length : 100;\n\n return colors.map((color, index) => ({\n label: `${Math.round(step * (index + 1))}%`,\n color,\n }));\n }\n\n private buildSeries(seriesConfig: HeatmapChartConfig['series'], baseSeries: any) {\n if (Array.isArray(seriesConfig)) {\n return seriesConfig.map((series) => ({\n ...baseSeries,\n ...series,\n }));\n }\n\n if (seriesConfig) {\n return [\n {\n ...baseSeries,\n ...seriesConfig,\n },\n ];\n }\n\n return [baseSeries];\n }\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.bindEvents();\n }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n const chartInstance = this.chartInstance;\n\n chartInstance.off();\n\n this.events.forEach((eventName) => {\n chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div class=\"heatmap-wrapper\">\n <div class=\"heatmap-legend\">\n @for (item of legendItems; track item.label) {\n <div class=\"heatmap-legend-item\">\n <span class=\"heatmap-legend-swatch\" [style.background]=\"item.color\"></span>\n <span>{{ item.label }}</span>\n </div>\n }\n </div>\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Charts","EBarChart","EPieChart","SankeyChartEchart"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -159,6 +159,37 @@ interface BarChartConfig {
159
159
  legendContainerWidth?: number;
160
160
  legendIndicatorHeight?: number;
161
161
  }
162
+ interface HeatmapChartConfig {
163
+ title?: string;
164
+ titlePosition?: 'left' | 'center' | 'right' | string;
165
+ showTitle?: boolean;
166
+ backgroundColor?: string;
167
+ xAxisData?: string[];
168
+ yAxisData?: string[];
169
+ data?: [number, number, number][];
170
+ seriesName?: string;
171
+ colors?: string[];
172
+ min?: number;
173
+ max?: number;
174
+ showTooltip?: boolean;
175
+ tooltip?: any;
176
+ tooltipFormatter?: (params: any, config: HeatmapChartConfig) => string;
177
+ showLabel?: boolean;
178
+ labelFormatter?: string | ((params: any) => string);
179
+ labelColor?: string;
180
+ grid?: {
181
+ left?: string | number;
182
+ right?: string | number;
183
+ top?: string | number;
184
+ bottom?: string | number;
185
+ height?: string | number;
186
+ containLabel?: boolean;
187
+ };
188
+ xAxis?: any;
189
+ yAxis?: any;
190
+ visualMap?: any;
191
+ series?: any | any[];
192
+ }
162
193
  interface TimeLineLegends {
163
194
  [key: string]: TimelineLegendItem[];
164
195
  }
@@ -281,6 +312,7 @@ declare class Charts {
281
312
  hexToRgba(hex: string, alpha: number): string;
282
313
  pieTooltipFormatter(params: any, config: PieChartConfig | DoughnutChartConfig): string;
283
314
  barLineTooltipFormatter(params: any, chartType?: 'bar' | 'line'): string;
315
+ heatmapTooltipFormatter(params: any, config: HeatmapChartConfig): string;
284
316
  timelineChartTooltipFormatter(params: any): string;
285
317
  getSankeyLevels(nodes?: SankeyNode[], links?: SankeyLink[]): number;
286
318
  sankeyTooltipFormatter(params: any): string;
@@ -522,4 +554,31 @@ declare class SankeyChart implements OnChanges, OnDestroy {
522
554
  static ɵcmp: i0.ɵɵComponentDeclaration<SankeyChart, "lib-sankey-chart", never, { "config": { "alias": "config"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "events": { "alias": "events"; "required": false; }; }, { "chartEvent": "chartEvent"; }, never, never, true, never>;
523
555
  }
524
556
 
525
- export { BarChart, Charts, CustomChartComponent, DoughnutChart, LinesChart, PieChart, RightClickCard, SankeyChart, StackedAreaChart };
557
+ declare class Heatmap implements OnChanges, OnDestroy {
558
+ private chartService;
559
+ config: HeatmapChartConfig;
560
+ theme: any;
561
+ events: string[];
562
+ chartEvent: EventEmitter<{
563
+ type: string;
564
+ data: any;
565
+ }>;
566
+ chartOption: EChartsCoreOption;
567
+ legendItems: {
568
+ label: string;
569
+ color: string;
570
+ }[];
571
+ private chartInstance?;
572
+ constructor(chartService: Charts);
573
+ ngOnChanges(changes: SimpleChanges): void;
574
+ private buildOption;
575
+ private buildLegendItems;
576
+ private buildSeries;
577
+ onChartInit(ec: ECharts): void;
578
+ private bindEvents;
579
+ ngOnDestroy(): void;
580
+ static ɵfac: i0.ɵɵFactoryDeclaration<Heatmap, never>;
581
+ static ɵcmp: i0.ɵɵComponentDeclaration<Heatmap, "lib-heatmap", never, { "config": { "alias": "config"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "events": { "alias": "events"; "required": false; }; }, { "chartEvent": "chartEvent"; }, never, never, true, never>;
582
+ }
583
+
584
+ export { BarChart, Charts, CustomChartComponent, DoughnutChart, Heatmap, LinesChart, PieChart, RightClickCard, SankeyChart, StackedAreaChart };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cats-charts",
3
- "version": "0.0.37",
3
+ "version": "0.0.39",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=18 <22",
6
6
  "@angular/common": ">=18 <22"