@baron1996/klinecharts-runtime 0.9.12 → 0.9.14
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 +37 -2
- package/dist/drawing/capabilities.d.ts +13 -1
- package/dist/drawing/capabilities.d.ts.map +1 -1
- package/dist/drawing/progressive-workspace-runtime.d.ts +10 -2
- package/dist/drawing/progressive-workspace-runtime.d.ts.map +1 -1
- package/dist/drawing/progressive-workspace-runtime.js +32 -5
- package/dist/drawing/session-controller.d.ts.map +1 -1
- package/dist/drawing/session-controller.js +9 -1
- package/dist/drawing/workspace-events.d.ts +10 -1
- package/dist/drawing/workspace-events.d.ts.map +1 -1
- package/dist/drawing/workspace-runtime.d.ts +12 -4
- package/dist/drawing/workspace-runtime.d.ts.map +1 -1
- package/dist/drawing/workspace-runtime.js +125 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/indicator-presentation.d.ts +34 -0
- package/dist/indicator-presentation.d.ts.map +1 -0
- package/dist/indicator-presentation.js +53 -0
- package/dist/toolbar/chart-workspace-toolbar-styles.d.ts +2 -0
- package/dist/toolbar/chart-workspace-toolbar-styles.d.ts.map +1 -0
- package/dist/toolbar/chart-workspace-toolbar-styles.js +213 -0
- package/dist/toolbar/chart-workspace-toolbar.d.ts +46 -0
- package/dist/toolbar/chart-workspace-toolbar.d.ts.map +1 -0
- package/dist/toolbar/chart-workspace-toolbar.js +684 -0
- package/dist/toolbar/toolbar-icons.d.ts +89 -0
- package/dist/toolbar/toolbar-icons.d.ts.map +1 -1
- package/dist/toolbar/toolbar-icons.js +26 -0
- package/package.json +3 -3
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const MAIN_PANE_INDICATOR_PRESETS = [
|
|
2
|
+
{ name: 'MA', label: 'MA', calcParams: [5, 10, 30, 60] },
|
|
3
|
+
{ name: 'EMA', label: 'EMA', calcParams: [6, 12, 20] },
|
|
4
|
+
{ name: 'SMA', label: 'SMA', calcParams: [12, 2] },
|
|
5
|
+
{ name: 'BOLL', label: 'BOLL', calcParams: [20, 2] },
|
|
6
|
+
{ name: 'SAR', label: 'SAR', calcParams: [2, 2, 20] },
|
|
7
|
+
{ name: 'BBI', label: 'BBI', calcParams: [3, 6, 12, 24] },
|
|
8
|
+
];
|
|
9
|
+
const DEFAULT_INDICATOR_LINE_COLORS = [
|
|
10
|
+
'rgba(41, 98, 255, 1)',
|
|
11
|
+
'rgba(245, 158, 11, 1)',
|
|
12
|
+
'rgba(16, 185, 129, 1)',
|
|
13
|
+
'rgba(239, 68, 68, 1)',
|
|
14
|
+
'rgba(139, 92, 246, 1)',
|
|
15
|
+
];
|
|
16
|
+
export function defaultIndicatorStyles(name, calcParams) {
|
|
17
|
+
const lines = calcParams.map((_param, index) => ({
|
|
18
|
+
color: DEFAULT_INDICATOR_LINE_COLORS[index % DEFAULT_INDICATOR_LINE_COLORS.length],
|
|
19
|
+
size: 1,
|
|
20
|
+
style: 'solid',
|
|
21
|
+
}));
|
|
22
|
+
if (name === 'VOL') {
|
|
23
|
+
return {
|
|
24
|
+
lines,
|
|
25
|
+
bars: [
|
|
26
|
+
{
|
|
27
|
+
upColor: 'rgba(239, 83, 80, 1)',
|
|
28
|
+
downColor: 'rgba(38, 166, 154, 1)',
|
|
29
|
+
noChangeColor: 'rgba(88, 88, 88, 1)',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
circles: [],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return { lines, bars: [], circles: [] };
|
|
36
|
+
}
|
|
37
|
+
export function createSceneIndicator(options, target, id) {
|
|
38
|
+
return {
|
|
39
|
+
id,
|
|
40
|
+
name: options.name,
|
|
41
|
+
paneId: target.paneId,
|
|
42
|
+
yAxisId: target.yAxisId,
|
|
43
|
+
calcParams: [...options.calcParams],
|
|
44
|
+
precision: options.precision ?? 2,
|
|
45
|
+
visible: options.visible ?? true,
|
|
46
|
+
zLevel: options.zLevel ?? 0,
|
|
47
|
+
styles: options.styles ??
|
|
48
|
+
defaultIndicatorStyles(options.name, options.calcParams),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function isMainPaneIndicatorName(name) {
|
|
52
|
+
return MAIN_PANE_INDICATOR_PRESETS.some((preset) => preset.name === name);
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-workspace-toolbar-styles.d.ts","sourceRoot":"","sources":["../../src/toolbar/chart-workspace-toolbar-styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,QAoN1C,CAAC"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
export const CHART_WORKSPACE_TOOLBAR_STYLES = String.raw `
|
|
2
|
+
.baron-chart-workspace-toolbar,
|
|
3
|
+
.baron-chart-workspace-toolbar *,
|
|
4
|
+
.baron-chart-workspace-popover,
|
|
5
|
+
.baron-chart-workspace-popover *,
|
|
6
|
+
.baron-chart-workspace-tooltip,
|
|
7
|
+
.baron-chart-workspace-tooltip * { box-sizing: border-box; }
|
|
8
|
+
|
|
9
|
+
.baron-chart-workspace-toolbar {
|
|
10
|
+
display: flex;
|
|
11
|
+
color: rgba(42, 46, 57, 1);
|
|
12
|
+
background: rgba(255, 255, 255, 1);
|
|
13
|
+
font-family: "Baron Sans", "Noto Sans SC", system-ui, sans-serif;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.baron-chart-workspace-toolbar--top {
|
|
17
|
+
align-items: center;
|
|
18
|
+
width: 100%;
|
|
19
|
+
min-width: 0;
|
|
20
|
+
height: 44px;
|
|
21
|
+
padding: 0 8px;
|
|
22
|
+
border-bottom: 1px solid rgba(229, 231, 235, 1);
|
|
23
|
+
overflow-x: auto;
|
|
24
|
+
overflow-y: hidden;
|
|
25
|
+
scrollbar-width: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.baron-chart-workspace-toolbar--top::-webkit-scrollbar,
|
|
29
|
+
.baron-chart-workspace-toolbar--left::-webkit-scrollbar { display: none; }
|
|
30
|
+
|
|
31
|
+
.baron-chart-workspace-toolbar--left {
|
|
32
|
+
flex-direction: column;
|
|
33
|
+
align-items: center;
|
|
34
|
+
width: 44px;
|
|
35
|
+
height: 100%;
|
|
36
|
+
min-height: 0;
|
|
37
|
+
padding: 6px 5px;
|
|
38
|
+
border-right: 1px solid rgba(229, 231, 235, 1);
|
|
39
|
+
overflow-x: hidden;
|
|
40
|
+
overflow-y: auto;
|
|
41
|
+
scrollbar-width: none;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.baron-chart-workspace-toolbar__section {
|
|
45
|
+
display: flex;
|
|
46
|
+
flex: 0 0 auto;
|
|
47
|
+
align-items: center;
|
|
48
|
+
gap: 2px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.baron-chart-workspace-toolbar--left .baron-chart-workspace-toolbar__section {
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
width: 100%;
|
|
54
|
+
padding: 4px 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.baron-chart-workspace-toolbar--left .baron-chart-workspace-toolbar__section +
|
|
58
|
+
.baron-chart-workspace-toolbar__section {
|
|
59
|
+
border-top: 1px solid rgba(237, 238, 242, 1);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.baron-chart-workspace-toolbar__section--end { margin-left: auto; }
|
|
63
|
+
|
|
64
|
+
.baron-chart-workspace-toolbar__button {
|
|
65
|
+
display: inline-flex;
|
|
66
|
+
flex: 0 0 auto;
|
|
67
|
+
align-items: center;
|
|
68
|
+
justify-content: center;
|
|
69
|
+
min-width: 32px;
|
|
70
|
+
height: 32px;
|
|
71
|
+
padding: 0 9px;
|
|
72
|
+
color: rgba(70, 75, 88, 1);
|
|
73
|
+
background: transparent;
|
|
74
|
+
border: 0;
|
|
75
|
+
border-radius: 6px;
|
|
76
|
+
font: inherit;
|
|
77
|
+
font-size: 12px;
|
|
78
|
+
font-weight: 500;
|
|
79
|
+
cursor: pointer;
|
|
80
|
+
transition: color 120ms ease, background-color 120ms ease;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.baron-chart-workspace-toolbar--left .baron-chart-workspace-toolbar__button {
|
|
84
|
+
width: 32px;
|
|
85
|
+
padding: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.baron-chart-workspace-toolbar__button:hover:not(:disabled),
|
|
89
|
+
.baron-chart-workspace-toolbar__button[aria-expanded="true"] {
|
|
90
|
+
color: rgba(41, 98, 255, 1);
|
|
91
|
+
background: rgba(41, 98, 255, .08);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.baron-chart-workspace-toolbar__button[aria-pressed="true"] {
|
|
95
|
+
color: rgba(41, 98, 255, 1);
|
|
96
|
+
background: rgba(41, 98, 255, .12);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.baron-chart-workspace-toolbar__button:focus-visible,
|
|
100
|
+
.baron-chart-workspace-toolbar__select:focus-visible {
|
|
101
|
+
outline: 2px solid rgba(41, 98, 255, .9);
|
|
102
|
+
outline-offset: 1px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.baron-chart-workspace-toolbar__button:disabled,
|
|
106
|
+
.baron-chart-workspace-toolbar__select:disabled {
|
|
107
|
+
cursor: not-allowed;
|
|
108
|
+
opacity: .42;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.baron-chart-workspace-toolbar__button[aria-busy="true"]::after {
|
|
112
|
+
width: 9px;
|
|
113
|
+
height: 9px;
|
|
114
|
+
margin-left: 6px;
|
|
115
|
+
content: "";
|
|
116
|
+
border: 1.5px solid currentcolor;
|
|
117
|
+
border-right-color: transparent;
|
|
118
|
+
border-radius: 50%;
|
|
119
|
+
animation: baron-workspace-spin 700ms linear infinite;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.baron-chart-workspace-toolbar__button svg { width: 18px; height: 18px; }
|
|
123
|
+
.baron-chart-workspace-toolbar__period { min-width: 38px; }
|
|
124
|
+
.baron-chart-workspace-toolbar__divider { width: 1px; height: 20px; margin: 0 5px; background: rgba(229, 231, 235, 1); }
|
|
125
|
+
|
|
126
|
+
.baron-chart-workspace-toolbar__timezone {
|
|
127
|
+
display: flex;
|
|
128
|
+
align-items: center;
|
|
129
|
+
gap: 3px;
|
|
130
|
+
height: 32px;
|
|
131
|
+
padding-left: 7px;
|
|
132
|
+
color: rgba(70, 75, 88, 1);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.baron-chart-workspace-toolbar__timezone svg { width: 16px; height: 16px; }
|
|
136
|
+
.baron-chart-workspace-toolbar__select {
|
|
137
|
+
max-width: 164px;
|
|
138
|
+
height: 30px;
|
|
139
|
+
padding: 0 24px 0 4px;
|
|
140
|
+
color: inherit;
|
|
141
|
+
background: transparent;
|
|
142
|
+
border: 0;
|
|
143
|
+
font: inherit;
|
|
144
|
+
font-size: 11px;
|
|
145
|
+
cursor: pointer;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.baron-chart-workspace-popover {
|
|
149
|
+
position: fixed;
|
|
150
|
+
z-index: 10000;
|
|
151
|
+
min-width: 220px;
|
|
152
|
+
padding: 10px;
|
|
153
|
+
color: rgba(42, 46, 57, 1);
|
|
154
|
+
background: rgba(255, 255, 255, .99);
|
|
155
|
+
border: 1px solid rgba(218, 220, 226, 1);
|
|
156
|
+
border-radius: 9px;
|
|
157
|
+
box-shadow: 0 12px 32px rgba(20, 23, 31, .16);
|
|
158
|
+
opacity: 0;
|
|
159
|
+
transform: translateY(-4px);
|
|
160
|
+
transition: opacity 120ms ease, transform 120ms ease;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.baron-chart-workspace-popover[hidden] { display: none; }
|
|
164
|
+
.baron-chart-workspace-popover--open { opacity: 1; transform: translateY(0); }
|
|
165
|
+
.baron-chart-workspace-popover__title { margin: 2px 4px 8px; color: rgba(102, 108, 122, 1); font-size: 11px; font-weight: 600; }
|
|
166
|
+
.baron-chart-workspace-popover__grid { display: grid; grid-template-columns: repeat(3, minmax(58px, 1fr)); gap: 5px; }
|
|
167
|
+
.baron-chart-workspace-popover__grid .baron-chart-workspace-toolbar__button { width: 100%; border: 1px solid rgba(231, 233, 238, 1); }
|
|
168
|
+
.baron-chart-workspace-popover__group + .baron-chart-workspace-popover__group { padding-top: 10px; margin-top: 10px; border-top: 1px solid rgba(233, 235, 239, 1); }
|
|
169
|
+
.baron-chart-workspace-popover__row { display: grid; grid-template-columns: 76px minmax(120px, 1fr); align-items: center; gap: 10px; min-height: 34px; }
|
|
170
|
+
.baron-chart-workspace-popover__label { color: rgba(102, 108, 122, 1); font-size: 11px; }
|
|
171
|
+
.baron-chart-workspace-popover__row .baron-chart-workspace-toolbar__select { width: 100%; max-width: none; background: rgba(247, 248, 250, 1); border: 1px solid rgba(226, 228, 233, 1); border-radius: 6px; }
|
|
172
|
+
.baron-chart-workspace-popover__text-form { display: flex; gap: 6px; }
|
|
173
|
+
.baron-chart-workspace-popover__text-form input {
|
|
174
|
+
width: 180px;
|
|
175
|
+
height: 32px;
|
|
176
|
+
padding: 0 9px;
|
|
177
|
+
color: rgba(42, 46, 57, 1);
|
|
178
|
+
background: rgba(247, 248, 250, 1);
|
|
179
|
+
border: 1px solid rgba(226, 228, 233, 1);
|
|
180
|
+
border-radius: 6px;
|
|
181
|
+
font: inherit;
|
|
182
|
+
font-size: 12px;
|
|
183
|
+
}
|
|
184
|
+
.baron-chart-workspace-popover__text-form input:focus { border-color: rgba(41, 98, 255, 1); outline: 2px solid rgba(41, 98, 255, .12); }
|
|
185
|
+
.baron-chart-workspace-popover__text-form .baron-chart-workspace-toolbar__button { color: rgba(255, 255, 255, 1); background: rgba(41, 98, 255, 1); }
|
|
186
|
+
.baron-chart-workspace-toolbar__error { max-width: 260px; padding: 5px 4px 0; color: rgba(194, 57, 52, 1); font-size: 11px; line-height: 1.35; }
|
|
187
|
+
.baron-chart-workspace-toolbar__error[hidden] { display: none; }
|
|
188
|
+
|
|
189
|
+
.baron-chart-workspace-tooltip {
|
|
190
|
+
position: fixed;
|
|
191
|
+
z-index: 10001;
|
|
192
|
+
padding: 6px 8px;
|
|
193
|
+
color: rgba(248, 249, 252, 1);
|
|
194
|
+
background: rgba(31, 34, 42, .96);
|
|
195
|
+
border-radius: 5px;
|
|
196
|
+
font: 500 11px/1.25 "Baron Sans", "Noto Sans SC", system-ui, sans-serif;
|
|
197
|
+
pointer-events: none;
|
|
198
|
+
}
|
|
199
|
+
.baron-chart-workspace-tooltip[hidden] { display: none; }
|
|
200
|
+
|
|
201
|
+
@keyframes baron-workspace-spin { to { transform: rotate(360deg); } }
|
|
202
|
+
|
|
203
|
+
@media (max-width: 640px) {
|
|
204
|
+
.baron-chart-workspace-toolbar--top { height: 42px; padding: 0 4px; }
|
|
205
|
+
.baron-chart-workspace-toolbar__timezone { padding-left: 3px; }
|
|
206
|
+
.baron-chart-workspace-toolbar__select { max-width: 112px; }
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
@media (prefers-reduced-motion: reduce) {
|
|
210
|
+
.baron-chart-workspace-toolbar__button,
|
|
211
|
+
.baron-chart-workspace-popover { transition: none; }
|
|
212
|
+
}
|
|
213
|
+
`;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { DisplayTimezoneRuntimeCapability, DrawingRuntimeCapability, MainIndicatorRuntimeCapability, RuntimeAuxiliaryCapability } from '../drawing/capabilities.js';
|
|
2
|
+
import type { HostActionDescriptor } from '../drawing/runtime-capability-descriptor.js';
|
|
3
|
+
type ChartWorkspaceRuntime = DrawingRuntimeCapability & RuntimeAuxiliaryCapability & MainIndicatorRuntimeCapability & DisplayTimezoneRuntimeCapability;
|
|
4
|
+
export interface WorkspaceToolbarTimezoneChoice {
|
|
5
|
+
/** 宿主持久化使用的稳定语义值,例如 instrument、local、utc。 */
|
|
6
|
+
readonly value: string;
|
|
7
|
+
readonly label: string;
|
|
8
|
+
/** 实际交给图表引擎的 IANA 时区。 */
|
|
9
|
+
readonly timezone: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ChartWorkspaceToolbarOptions {
|
|
12
|
+
/** 顶部直接展示的周期动作;点击后仍通过 host-action-requested 交给宿主取数。 */
|
|
13
|
+
readonly periodActions?: readonly HostActionDescriptor[];
|
|
14
|
+
/** 收纳进设置面板的宿主动作用于前复权等业务配置。 */
|
|
15
|
+
readonly settingsHostActions?: readonly HostActionDescriptor[];
|
|
16
|
+
readonly displayTimezoneChoices?: readonly WorkspaceToolbarTimezoneChoice[];
|
|
17
|
+
readonly activeDisplayTimezoneValue?: string;
|
|
18
|
+
readonly onDisplayTimezoneChange?: (choice: WorkspaceToolbarTimezoneChoice) => void;
|
|
19
|
+
readonly fullscreenTarget?: HTMLElement;
|
|
20
|
+
readonly fullscreenControl?: 'hidden' | 'enabled';
|
|
21
|
+
}
|
|
22
|
+
export interface ChartWorkspaceToolbarContainers {
|
|
23
|
+
readonly top: HTMLElement;
|
|
24
|
+
readonly left: HTMLElement;
|
|
25
|
+
}
|
|
26
|
+
export interface ChartWorkspaceToolbar {
|
|
27
|
+
readonly topElement: HTMLElement;
|
|
28
|
+
readonly leftElement: HTMLElement;
|
|
29
|
+
setDataActionsDisabled(disabled: boolean): void;
|
|
30
|
+
setDrawingActionsDisabled(disabled: boolean): void;
|
|
31
|
+
setHostActionState(actionId: string, state: {
|
|
32
|
+
readonly pressed?: boolean;
|
|
33
|
+
readonly disabled?: boolean;
|
|
34
|
+
readonly pending?: boolean;
|
|
35
|
+
readonly errorMessage?: string | null;
|
|
36
|
+
}): void;
|
|
37
|
+
setDisplayTimezoneChoice(value: string): void;
|
|
38
|
+
destroy(): void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 创建 Pro 风格的复合工具栏。Baron 只发出周期/复权宿主意图,
|
|
42
|
+
* 指标、展示时区、价格轴和主序列在浏览器 Runtime 内即时生效。
|
|
43
|
+
*/
|
|
44
|
+
export declare function createChartWorkspaceToolbar(containers: ChartWorkspaceToolbarContainers, runtime: ChartWorkspaceRuntime, options?: ChartWorkspaceToolbarOptions): ChartWorkspaceToolbar;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=chart-workspace-toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-workspace-toolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/chart-workspace-toolbar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,gCAAgC,EAChC,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAYxF,KAAK,qBAAqB,GAAG,wBAAwB,GACpD,0BAA0B,GAC1B,8BAA8B,GAC9B,gCAAgC,CAAC;AAElC,MAAM,WAAW,8BAA8B;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC5C,uDAAuD;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzD,8BAA8B;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/D,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAC5E,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAClC,MAAM,EAAE,8BAA8B,KAClC,IAAI,CAAC;IACV,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,kBAAkB,CACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;QACN,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC,GACC,IAAI,CAAC;IACR,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,OAAO,IAAI,IAAI,CAAC;CAChB;AAsPD;;;GAGG;AACH,wBAAgB,2BAA2B,CAC1C,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,qBAAqB,EAC9B,OAAO,GAAE,4BAAiC,GACxC,qBAAqB,CAuiBvB"}
|