@qtsurfer/sveltecharts 0.3.5 → 0.4.3
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 +2 -2
- package/dist/SVECharts.svelte +147 -81
- package/dist/SVECharts.svelte.d.ts +20 -37
- package/dist/SVECharts.svelte.d.ts.map +1 -1
- package/dist/TimeSeriesChartBuilder.d.ts +131 -0
- package/dist/TimeSeriesChartBuilder.d.ts.map +1 -0
- package/dist/TimeSeriesChartBuilder.js +699 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/mockDataSet.d.ts +5 -0
- package/dist/mockDataSet.d.ts.map +1 -0
- package/dist/mockDataSet.js +32 -0
- package/package.json +54 -46
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Svelte ECharts component
|
|
2
2
|
|
|
3
|
-

|
|
4
|
+
[](https://npmjs.com/package/@qtsurfer/sveltecharts)
|
|
5
5
|
|
|
6
6
|
[Svelte](https://svelte.dev) (v4) [Apache ECharts](https://echarts.apache.org/) basic wrapper component.
|
package/dist/SVECharts.svelte
CHANGED
|
@@ -1,91 +1,157 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { init, use } from 'echarts/core';
|
|
3
|
+
import { LineChart, BarChart } from 'echarts/charts';
|
|
4
|
+
import {
|
|
5
|
+
DataZoomComponent,
|
|
6
|
+
LegendComponent,
|
|
7
|
+
TitleComponent,
|
|
8
|
+
TooltipComponent,
|
|
9
|
+
GridComponent,
|
|
10
|
+
DatasetComponent,
|
|
11
|
+
MarkLineComponent,
|
|
12
|
+
MarkPointComponent,
|
|
13
|
+
MarkAreaComponent
|
|
14
|
+
} from 'echarts/components';
|
|
15
|
+
import { LabelLayout } from 'echarts/features';
|
|
16
|
+
import { CanvasRenderer } from 'echarts/renderers';
|
|
17
|
+
import type { ECharts, EChartsOption } from './types';
|
|
18
|
+
|
|
19
|
+
// Register the required components
|
|
20
|
+
use([
|
|
21
|
+
LineChart,
|
|
22
|
+
BarChart,
|
|
23
|
+
DataZoomComponent,
|
|
24
|
+
LegendComponent,
|
|
25
|
+
TitleComponent,
|
|
26
|
+
TooltipComponent,
|
|
27
|
+
GridComponent,
|
|
28
|
+
DatasetComponent,
|
|
29
|
+
LabelLayout,
|
|
30
|
+
CanvasRenderer,
|
|
31
|
+
MarkLineComponent,
|
|
32
|
+
MarkPointComponent,
|
|
33
|
+
MarkAreaComponent
|
|
34
|
+
]);
|
|
35
|
+
|
|
36
|
+
export type EChartsTheme = string | object;
|
|
37
|
+
export type EChartsRenderer = 'canvas' | 'svg';
|
|
38
|
+
|
|
39
|
+
export type EChartsConfig = {
|
|
40
|
+
theme?: EChartsTheme;
|
|
41
|
+
renderer?: EChartsRenderer;
|
|
42
|
+
option: EChartsOption;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export type DataRange = { start: number; end: number };
|
|
46
|
+
export type DataZoomEventSingle = { batch?: never } & DataRange;
|
|
47
|
+
export type DataZoomEventBatch = { batch: DataRange[]; start?: never; end?: never };
|
|
48
|
+
|
|
49
|
+
export type DataZoomEvent = DataZoomEventBatch | DataZoomEventSingle;
|
|
50
|
+
|
|
51
|
+
const DEFAULT_CONFIG: EChartsConfig = {
|
|
52
|
+
theme: undefined,
|
|
53
|
+
renderer: 'canvas',
|
|
54
|
+
option: {}
|
|
55
|
+
};
|
|
28
56
|
</script>
|
|
29
57
|
|
|
30
|
-
<script
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
58
|
+
<script lang="ts">
|
|
59
|
+
let {
|
|
60
|
+
onLoad,
|
|
61
|
+
config,
|
|
62
|
+
onDataZoom,
|
|
63
|
+
loading = $bindable(false),
|
|
64
|
+
onClear = $bindable(),
|
|
65
|
+
isDark = false
|
|
66
|
+
}: {
|
|
67
|
+
onLoad: (instance: ECharts) => Promise<void>;
|
|
68
|
+
config?: Partial<EChartsConfig>;
|
|
69
|
+
onDataZoom?: (event: DataZoomEventSingle) => void;
|
|
70
|
+
loading?: boolean;
|
|
71
|
+
onClear?: () => void;
|
|
72
|
+
isDark?: boolean;
|
|
73
|
+
} = $props();
|
|
74
|
+
|
|
75
|
+
let instance: ECharts;
|
|
76
|
+
|
|
77
|
+
const { theme, renderer, option } = {
|
|
78
|
+
...DEFAULT_CONFIG,
|
|
79
|
+
...config
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const handleDataZoom = (zoomEvent: unknown) => {
|
|
83
|
+
if (!onDataZoom) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const event = zoomEvent as DataZoomEvent;
|
|
88
|
+
let start: number, end: number;
|
|
89
|
+
|
|
90
|
+
if (event.batch) {
|
|
91
|
+
const [info] = event.batch;
|
|
92
|
+
start = info.start;
|
|
93
|
+
end = info.end;
|
|
94
|
+
} else {
|
|
95
|
+
start = event.start;
|
|
96
|
+
end = event.end;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
onDataZoom({ start, end });
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
function chartAction(element: HTMLElement) {
|
|
103
|
+
instance = init(element, undefined, { renderer });
|
|
104
|
+
|
|
105
|
+
const handleResize = () => {
|
|
106
|
+
instance.resize();
|
|
107
|
+
};
|
|
108
|
+
window.addEventListener('resize', handleResize);
|
|
109
|
+
instance.on('datazoom', handleDataZoom);
|
|
110
|
+
|
|
111
|
+
if (Object.keys(option).length) {
|
|
112
|
+
instance.setOption(option);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
onClear = () => instance.clear();
|
|
116
|
+
|
|
117
|
+
onLoad(instance);
|
|
118
|
+
|
|
119
|
+
return {
|
|
120
|
+
destroy() {
|
|
121
|
+
instance.off('datazoom', handleDataZoom);
|
|
122
|
+
window.removeEventListener('resize', handleResize);
|
|
123
|
+
instance.dispose();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @todo
|
|
127
|
+
* Limiting option assignment. Review implementation
|
|
128
|
+
*/
|
|
129
|
+
// update(config: EChartsConfig) {
|
|
130
|
+
// instance.setOption({
|
|
131
|
+
// ...echartsConfig.option,
|
|
132
|
+
// ...config.option
|
|
133
|
+
// });
|
|
134
|
+
// }
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
$effect(() => {
|
|
139
|
+
if (instance) {
|
|
140
|
+
instance.setTheme({ backgroundColor: isDark ? '#100c2a' : '#fff' });
|
|
141
|
+
}
|
|
142
|
+
});
|
|
82
143
|
</script>
|
|
83
144
|
|
|
84
|
-
<div
|
|
145
|
+
<div style="position: relative; width: 100%; height: 100%;">
|
|
146
|
+
<div id="chart" class="echarts" use:chartAction></div>
|
|
147
|
+
</div>
|
|
85
148
|
|
|
86
149
|
<style>
|
|
87
150
|
.echarts {
|
|
88
151
|
width: 100%;
|
|
89
|
-
height:
|
|
152
|
+
height: 100%;
|
|
153
|
+
min-height: 300px;
|
|
154
|
+
position: relative;
|
|
155
|
+
z-index: 1;
|
|
90
156
|
}
|
|
91
157
|
</style>
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { EChartsOption } from './types';
|
|
1
|
+
import type { ECharts, EChartsOption } from './types';
|
|
3
2
|
export type EChartsTheme = string | object;
|
|
4
3
|
export type EChartsRenderer = 'canvas' | 'svg';
|
|
5
4
|
export type EChartsConfig = {
|
|
@@ -11,40 +10,24 @@ export type DataRange = {
|
|
|
11
10
|
start: number;
|
|
12
11
|
end: number;
|
|
13
12
|
};
|
|
14
|
-
export type
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
destroy(): void;
|
|
22
|
-
update(config: EChartsConfig): void;
|
|
23
|
-
};
|
|
24
|
-
clear?: () => void;
|
|
25
|
-
showLoading?: (text?: string) => void;
|
|
26
|
-
hideLoading?: () => void;
|
|
27
|
-
};
|
|
28
|
-
events: {
|
|
29
|
-
datazoom: CustomEvent<any>;
|
|
30
|
-
} & {
|
|
31
|
-
[evt: string]: CustomEvent<any>;
|
|
32
|
-
};
|
|
33
|
-
slots: {};
|
|
34
|
-
exports?: {} | undefined;
|
|
35
|
-
bindings?: string | undefined;
|
|
13
|
+
export type DataZoomEventSingle = {
|
|
14
|
+
batch?: never;
|
|
15
|
+
} & DataRange;
|
|
16
|
+
export type DataZoomEventBatch = {
|
|
17
|
+
batch: DataRange[];
|
|
18
|
+
start?: never;
|
|
19
|
+
end?: never;
|
|
36
20
|
};
|
|
37
|
-
export type
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
export {};
|
|
21
|
+
export type DataZoomEvent = DataZoomEventBatch | DataZoomEventSingle;
|
|
22
|
+
type $$ComponentProps = {
|
|
23
|
+
onLoad: (instance: ECharts) => Promise<void>;
|
|
24
|
+
config?: Partial<EChartsConfig>;
|
|
25
|
+
onDataZoom?: (event: DataZoomEventSingle) => void;
|
|
26
|
+
loading?: boolean;
|
|
27
|
+
onClear?: () => void;
|
|
28
|
+
isDark?: boolean;
|
|
29
|
+
};
|
|
30
|
+
declare const SVECharts: import("svelte").Component<$$ComponentProps, {}, "loading" | "onClear">;
|
|
31
|
+
type SVECharts = ReturnType<typeof SVECharts>;
|
|
32
|
+
export default SVECharts;
|
|
50
33
|
//# sourceMappingURL=SVECharts.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SVECharts.svelte.d.ts","sourceRoot":"","sources":["../src/lib/SVECharts.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SVECharts.svelte.d.ts","sourceRoot":"","sources":["../src/lib/SVECharts.svelte.ts"],"names":[],"mappings":"AAkBC,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAmBtD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AACvD,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAQrE,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AA2FH,QAAA,MAAM,SAAS,yEAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { type LineSeriesOption, type DataZoomComponentOption } from 'echarts';
|
|
2
|
+
import { type ECharts } from './';
|
|
3
|
+
import type { GridOption } from 'echarts/types/dist/shared';
|
|
4
|
+
import type { ZRColor } from 'echarts/types/src/util/types.js';
|
|
5
|
+
type IconType = 'circle' | 'rect' | 'roundRect' | 'triangle' | 'diamond' | 'pin' | 'arrowUp' | 'arrowDown' | 'none';
|
|
6
|
+
type LabelPosition = 'top' | 'left' | 'right' | 'bottom' | 'inside' | 'insideLeft' | 'insideRight' | 'insideTop' | 'insideBottom' | 'insideTopLeft' | 'insideBottomLeft' | 'insideTopRight' | 'insideBottomRight';
|
|
7
|
+
type MarkerPointOption = {
|
|
8
|
+
icon: IconType;
|
|
9
|
+
color: ZRColor;
|
|
10
|
+
position: LabelPosition;
|
|
11
|
+
symbolSize: number;
|
|
12
|
+
};
|
|
13
|
+
type DatasetFormatSimpleObject = Record<string, number[]>;
|
|
14
|
+
type DatasetFormatObject = Record<string, any>[];
|
|
15
|
+
type DatasetFormatArray = number[][];
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* ConfigBuilder:
|
|
19
|
+
* externalManagerLegend: Hides EChart legends to allow external management
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
type ConfigBuilder = {
|
|
23
|
+
externalManagerLegend?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export type MarkerEvent = {
|
|
26
|
+
name?: string;
|
|
27
|
+
xAxis: number[];
|
|
28
|
+
icon?: IconType;
|
|
29
|
+
color?: ZRColor;
|
|
30
|
+
position?: 'aboveBar' | 'belowBar';
|
|
31
|
+
};
|
|
32
|
+
export type MarkArea = {
|
|
33
|
+
name?: string;
|
|
34
|
+
xAxis: [number, number];
|
|
35
|
+
color?: ZRColor;
|
|
36
|
+
};
|
|
37
|
+
export declare class TimeSeriesChartBuilder {
|
|
38
|
+
ECharts: ECharts;
|
|
39
|
+
private builderConfig;
|
|
40
|
+
private option;
|
|
41
|
+
private yDimensions;
|
|
42
|
+
private yDimensionNames?;
|
|
43
|
+
private _tsColumn;
|
|
44
|
+
constructor(instance: ECharts, builderConfig?: ConfigBuilder);
|
|
45
|
+
/**
|
|
46
|
+
* Accepts data as rows: [timestamp, v1, v2, ...]
|
|
47
|
+
* Automatically generates line series for each value column (>=1).
|
|
48
|
+
*/
|
|
49
|
+
setDataset(data: DatasetFormatArray | DatasetFormatObject | DatasetFormatSimpleObject, yDimensionsNames?: string[]): this;
|
|
50
|
+
toggleLegend(column: string): this;
|
|
51
|
+
goToZoom(start: number, end: number): this;
|
|
52
|
+
/**
|
|
53
|
+
* data: [1658870400, 823, 95.8, ...]
|
|
54
|
+
* dimensionsNames: ['_ts', 'price', 'otherColumn', ...]
|
|
55
|
+
*/
|
|
56
|
+
private setDatasetByArray;
|
|
57
|
+
/**
|
|
58
|
+
* Data is an array of objects.
|
|
59
|
+
* [
|
|
60
|
+
* {_ts: 1658870400, price: 823, otherColumn: 95.8},
|
|
61
|
+
* {...}
|
|
62
|
+
* ]
|
|
63
|
+
*/
|
|
64
|
+
private setDataByObject;
|
|
65
|
+
private setDataByObjectSimple;
|
|
66
|
+
addDimension(data: DatasetFormatSimpleObject, dimName: string): this;
|
|
67
|
+
private getColumnsSelected;
|
|
68
|
+
addSeries(dim: string, dimName: string, isSelected: boolean): void;
|
|
69
|
+
/**
|
|
70
|
+
* Tooltip bound to axis with a crosshair pointer.
|
|
71
|
+
*/
|
|
72
|
+
setAxisTooltip(): this;
|
|
73
|
+
/**
|
|
74
|
+
* Legend with a custom icon (e.g., 'circle', 'rect').
|
|
75
|
+
*/
|
|
76
|
+
setLegendIcon(icon: IconType): this;
|
|
77
|
+
/**
|
|
78
|
+
* Adds both inside and slider dataZoom.
|
|
79
|
+
*/
|
|
80
|
+
setDataZoom(zoomOptions: DataZoomComponentOption): this;
|
|
81
|
+
setGrid(gridOption: GridOption): this;
|
|
82
|
+
/**
|
|
83
|
+
* Sets chart title and optional subtitle, centered.
|
|
84
|
+
*/
|
|
85
|
+
setTitle(text: string, subtext?: string): this;
|
|
86
|
+
/**
|
|
87
|
+
* Applies a partial style to all existing series (e.g., { smooth: true, symbol: 'none' }).
|
|
88
|
+
*/
|
|
89
|
+
setSeriesStyle(style: Partial<LineSeriesOption>): this;
|
|
90
|
+
/**
|
|
91
|
+
* Adds a marker event to the chart.
|
|
92
|
+
*/
|
|
93
|
+
addMarkerEvents(data: MarkerEvent[], widthLine?: number): this;
|
|
94
|
+
/**
|
|
95
|
+
* Adds a marker area event to the chart.
|
|
96
|
+
*/
|
|
97
|
+
addMarkArea(data: MarkArea[]): this;
|
|
98
|
+
private getIcon;
|
|
99
|
+
addMarkerPoint(id: number, data: {
|
|
100
|
+
dimName: string;
|
|
101
|
+
timestamp: number;
|
|
102
|
+
name?: string;
|
|
103
|
+
}, options?: Partial<MarkerPointOption>): this;
|
|
104
|
+
private isNumberArray;
|
|
105
|
+
/**
|
|
106
|
+
* Creates the series data
|
|
107
|
+
*/
|
|
108
|
+
private createSeriesData;
|
|
109
|
+
/**
|
|
110
|
+
* Search for the dimension key and timestamp
|
|
111
|
+
*/
|
|
112
|
+
private searchValueByDimensionKeyAndTimestamp;
|
|
113
|
+
/**
|
|
114
|
+
* Return the percentage fields in the dataset
|
|
115
|
+
*/
|
|
116
|
+
private detectPercentageFields;
|
|
117
|
+
build(): this;
|
|
118
|
+
getDimensionKeys(): {
|
|
119
|
+
y: string[];
|
|
120
|
+
x: string;
|
|
121
|
+
};
|
|
122
|
+
getLegendStatus(): Record<string, boolean>;
|
|
123
|
+
getTotalRows(): number;
|
|
124
|
+
private isSimpleObject;
|
|
125
|
+
private isRecordArray;
|
|
126
|
+
private isNumberMatrix;
|
|
127
|
+
getRangeValues(): any[];
|
|
128
|
+
toggleMarkers(id: number, dimName: string, shape: string): this | undefined;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=TimeSeriesChartBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeSeriesChartBuilder.d.ts","sourceRoot":"","sources":["../src/lib/TimeSeriesChartBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAE5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAG/D,KAAK,QAAQ,GACV,QAAQ,GACR,MAAM,GACN,WAAW,GACX,UAAU,GACV,SAAS,GACT,KAAK,GACL,SAAS,GACT,WAAW,GACX,MAAM,CAAC;AAEV,KAAK,aAAa,GACf,KAAK,GACL,MAAM,GACN,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,WAAW,GACX,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,CAAC;AAEvB,KAAK,iBAAiB,GAAG;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1D,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AACjD,KAAK,kBAAkB,GAAG,MAAM,EAAE,EAAE,CAAC;AAErC;;;;;GAKG;AACH,KAAK,aAAa,GAAG;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AACF,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,qBAAa,sBAAsB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,aAAa,CAEnB;IACF,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,SAAS,CAAiB;gBAEtB,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,aAAa;IAkF5D;;;OAGG;IACH,UAAU,CACT,IAAI,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,yBAAyB,EAC1E,gBAAgB,CAAC,EAAE,MAAM,EAAE,GACzB,IAAI;IAuBP,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYlC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1C;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAyDzB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,qBAAqB;IAqC7B,YAAY,CAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM;IAgB7D,OAAO,CAAC,kBAAkB;IAQ1B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IAuD3D;;OAEG;IACH,cAAc,IAAI,IAAI;IAOtB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAQnC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,uBAAuB,GAAG,IAAI;IAKvD,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAQrC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAS9C;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAUtD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,SAAS,GAAE,MAAU,GAAG,IAAI;IA+CjE;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI;IAyCnC,OAAO,CAAC,OAAO;IAyBf,cAAc,CACb,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,EACD,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,IAAI;IA4EP,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,qCAAqC;IAuC7C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B,KAAK;IAoBL,gBAAgB;;;;IAOhB,eAAe;IAIf,YAAY;IAYZ,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;IAMtB,cAAc;IA+Cd,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CA0BxD"}
|