@363045841yyt/klinechart-core 0.7.5 → 0.7.7

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.
Files changed (235) hide show
  1. package/README.md +8 -8
  2. package/README.zh-CN.md +8 -8
  3. package/dist/config/chartSettings.d.ts +27 -2
  4. package/dist/config/chartSettings.d.ts.map +1 -1
  5. package/dist/config/chartSettings.js +6 -0
  6. package/dist/config/chartSettings.js.map +1 -1
  7. package/dist/controllers/createChartController.d.ts.map +1 -1
  8. package/dist/controllers/createChartController.js +145 -21
  9. package/dist/controllers/createChartController.js.map +1 -1
  10. package/dist/controllers/index.d.ts +9 -1
  11. package/dist/controllers/index.d.ts.map +1 -1
  12. package/dist/controllers/index.js +9 -0
  13. package/dist/controllers/index.js.map +1 -1
  14. package/dist/controllers/types.d.ts +65 -8
  15. package/dist/controllers/types.d.ts.map +1 -1
  16. package/dist/engine/chart.d.ts +2 -12
  17. package/dist/engine/chart.d.ts.map +1 -1
  18. package/dist/engine/chart.js +32 -31
  19. package/dist/engine/chart.js.map +1 -1
  20. package/dist/engine/controller/interaction.d.ts +1 -1
  21. package/dist/engine/controller/interaction.d.ts.map +1 -1
  22. package/dist/engine/controller/interaction.js +10 -2
  23. package/dist/engine/controller/interaction.js.map +1 -1
  24. package/dist/engine/draw/pixelAlign.d.ts.map +1 -1
  25. package/dist/engine/draw/pixelAlign.js.map +1 -1
  26. package/dist/engine/drawing/interaction.d.ts +3 -3
  27. package/dist/engine/drawing/interaction.d.ts.map +1 -1
  28. package/dist/engine/drawing/interaction.js +38 -46
  29. package/dist/engine/drawing/interaction.js.map +1 -1
  30. package/dist/engine/drawing/plugin.js +1 -1
  31. package/dist/engine/drawing/plugin.js.map +1 -1
  32. package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -1
  33. package/dist/engine/renderers/Indicator/atr.js +7 -4
  34. package/dist/engine/renderers/Indicator/atr.js.map +1 -1
  35. package/dist/engine/renderers/Indicator/boll.js +12 -12
  36. package/dist/engine/renderers/Indicator/boll.js.map +1 -1
  37. package/dist/engine/renderers/Indicator/cci.d.ts +1 -2
  38. package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -1
  39. package/dist/engine/renderers/Indicator/cci.js +9 -9
  40. package/dist/engine/renderers/Indicator/cci.js.map +1 -1
  41. package/dist/engine/renderers/Indicator/ene.js +12 -12
  42. package/dist/engine/renderers/Indicator/ene.js.map +1 -1
  43. package/dist/engine/renderers/Indicator/expma.js +6 -6
  44. package/dist/engine/renderers/Indicator/expma.js.map +1 -1
  45. package/dist/engine/renderers/Indicator/fastk.d.ts +1 -2
  46. package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -1
  47. package/dist/engine/renderers/Indicator/fastk.js +7 -7
  48. package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
  49. package/dist/engine/renderers/Indicator/kst.d.ts +1 -2
  50. package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -1
  51. package/dist/engine/renderers/Indicator/kst.js +10 -10
  52. package/dist/engine/renderers/Indicator/kst.js.map +1 -1
  53. package/dist/engine/renderers/Indicator/ma.js +5 -5
  54. package/dist/engine/renderers/Indicator/ma.js.map +1 -1
  55. package/dist/engine/renderers/Indicator/macd.d.ts +1 -2
  56. package/dist/engine/renderers/Indicator/macd.d.ts.map +1 -1
  57. package/dist/engine/renderers/Indicator/macd.js +24 -24
  58. package/dist/engine/renderers/Indicator/macd.js.map +1 -1
  59. package/dist/engine/renderers/Indicator/macdLegend.js +6 -6
  60. package/dist/engine/renderers/Indicator/macdLegend.js.map +1 -1
  61. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +16 -16
  62. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
  63. package/dist/engine/renderers/Indicator/mom.d.ts +1 -2
  64. package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -1
  65. package/dist/engine/renderers/Indicator/mom.js +8 -8
  66. package/dist/engine/renderers/Indicator/mom.js.map +1 -1
  67. package/dist/engine/renderers/Indicator/rsi.d.ts +2 -3
  68. package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -1
  69. package/dist/engine/renderers/Indicator/rsi.js +15 -15
  70. package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
  71. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts +1 -2
  72. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts.map +1 -1
  73. package/dist/engine/renderers/Indicator/scale/indicator_scale.js +5 -5
  74. package/dist/engine/renderers/Indicator/scale/indicator_scale.js.map +1 -1
  75. package/dist/engine/renderers/Indicator/stoch.d.ts +1 -2
  76. package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -1
  77. package/dist/engine/renderers/Indicator/stoch.js +10 -10
  78. package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
  79. package/dist/engine/renderers/Indicator/structure.js +5 -5
  80. package/dist/engine/renderers/Indicator/structure.js.map +1 -1
  81. package/dist/engine/renderers/Indicator/wmsr.d.ts +1 -2
  82. package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -1
  83. package/dist/engine/renderers/Indicator/wmsr.js +10 -10
  84. package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
  85. package/dist/engine/renderers/Indicator/zones.js +6 -6
  86. package/dist/engine/renderers/Indicator/zones.js.map +1 -1
  87. package/dist/engine/renderers/candle.d.ts +1 -1
  88. package/dist/engine/renderers/candle.d.ts.map +1 -1
  89. package/dist/engine/renderers/candle.js +21 -21
  90. package/dist/engine/renderers/candle.js.map +1 -1
  91. package/dist/engine/renderers/crosshair.js +3 -3
  92. package/dist/engine/renderers/crosshair.js.map +1 -1
  93. package/dist/engine/renderers/extremaMarkers.d.ts.map +1 -1
  94. package/dist/engine/renderers/extremaMarkers.js +12 -12
  95. package/dist/engine/renderers/extremaMarkers.js.map +1 -1
  96. package/dist/engine/renderers/gridLines.js +3 -3
  97. package/dist/engine/renderers/gridLines.js.map +1 -1
  98. package/dist/engine/renderers/lastPrice.js +7 -7
  99. package/dist/engine/renderers/lastPrice.js.map +1 -1
  100. package/dist/engine/renderers/paneTitle.d.ts +5 -24
  101. package/dist/engine/renderers/paneTitle.d.ts.map +1 -1
  102. package/dist/engine/renderers/paneTitle.js +16 -11
  103. package/dist/engine/renderers/paneTitle.js.map +1 -1
  104. package/dist/engine/renderers/subVolume.d.ts.map +1 -1
  105. package/dist/engine/renderers/subVolume.js +23 -20
  106. package/dist/engine/renderers/subVolume.js.map +1 -1
  107. package/dist/engine/renderers/timeAxis.js +9 -9
  108. package/dist/engine/renderers/timeAxis.js.map +1 -1
  109. package/dist/engine/renderers/webgl/candleSurface.d.ts +4 -4
  110. package/dist/engine/renderers/webgl/candleSurface.d.ts.map +1 -1
  111. package/dist/engine/renderers/webgl/candleSurface.js +72 -60
  112. package/dist/engine/renderers/webgl/candleSurface.js.map +1 -1
  113. package/dist/engine/renderers/yAxis.d.ts.map +1 -1
  114. package/dist/engine/renderers/yAxis.js +5 -5
  115. package/dist/engine/renderers/yAxis.js.map +1 -1
  116. package/dist/engine/subPaneManager.d.ts +2 -0
  117. package/dist/engine/subPaneManager.d.ts.map +1 -1
  118. package/dist/engine/subPaneManager.js +25 -1
  119. package/dist/engine/subPaneManager.js.map +1 -1
  120. package/dist/index.d.ts +1 -0
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +1 -0
  123. package/dist/index.js.map +1 -1
  124. package/dist/plugin/types.d.ts +5 -1
  125. package/dist/plugin/types.d.ts.map +1 -1
  126. package/dist/plugin/types.js.map +1 -1
  127. package/dist/semantic/controller.d.ts +1 -2
  128. package/dist/semantic/controller.d.ts.map +1 -1
  129. package/dist/semantic/index.d.ts +1 -1
  130. package/dist/semantic/index.d.ts.map +1 -1
  131. package/dist/tokens/colorPresetSettings.d.ts +15 -0
  132. package/dist/tokens/colorPresetSettings.d.ts.map +1 -0
  133. package/dist/tokens/colorPresetSettings.js +65 -0
  134. package/dist/tokens/colorPresetSettings.js.map +1 -0
  135. package/dist/tokens/index.d.ts +17 -0
  136. package/dist/tokens/index.d.ts.map +1 -0
  137. package/dist/tokens/index.js +16 -0
  138. package/dist/tokens/index.js.map +1 -0
  139. package/dist/tokens/mergeTheme.d.ts +17 -0
  140. package/dist/tokens/mergeTheme.d.ts.map +1 -0
  141. package/dist/tokens/mergeTheme.js +43 -0
  142. package/dist/tokens/mergeTheme.js.map +1 -0
  143. package/dist/tokens/theme-china.d.ts +45 -0
  144. package/dist/tokens/theme-china.d.ts.map +1 -0
  145. package/dist/tokens/theme-china.js +116 -0
  146. package/dist/tokens/theme-china.js.map +1 -0
  147. package/dist/tokens/theme-dark.d.ts +21 -0
  148. package/dist/tokens/theme-dark.d.ts.map +1 -0
  149. package/dist/tokens/theme-dark.js +228 -0
  150. package/dist/tokens/theme-dark.js.map +1 -0
  151. package/dist/tokens/theme-light.d.ts +23 -0
  152. package/dist/tokens/theme-light.d.ts.map +1 -0
  153. package/dist/tokens/theme-light.js +234 -0
  154. package/dist/tokens/theme-light.js.map +1 -0
  155. package/dist/tokens/themeToCssVars.d.ts +74 -0
  156. package/dist/tokens/themeToCssVars.d.ts.map +1 -0
  157. package/dist/tokens/themeToCssVars.js +108 -0
  158. package/dist/tokens/themeToCssVars.js.map +1 -0
  159. package/dist/tokens/types.d.ts +335 -0
  160. package/dist/tokens/types.d.ts.map +1 -0
  161. package/dist/tokens/types.js +20 -0
  162. package/dist/tokens/types.js.map +1 -0
  163. package/dist/utils/kLineDraw/axis.d.ts +8 -7
  164. package/dist/utils/kLineDraw/axis.d.ts.map +1 -1
  165. package/dist/utils/kLineDraw/axis.js +24 -24
  166. package/dist/utils/kLineDraw/axis.js.map +1 -1
  167. package/dist/version.d.ts +1 -1
  168. package/dist/version.js +1 -1
  169. package/package.json +6 -6
  170. package/src/config/chartSettings.ts +11 -2
  171. package/src/controllers/createChartController.ts +158 -29
  172. package/src/controllers/index.ts +33 -0
  173. package/src/controllers/types.ts +79 -8
  174. package/src/engine/chart.ts +32 -37
  175. package/src/engine/controller/interaction.ts +9 -2
  176. package/src/engine/draw/pixelAlign.ts +0 -2
  177. package/src/engine/drawing/interaction.ts +38 -47
  178. package/src/engine/drawing/plugin.ts +1 -1
  179. package/src/engine/renderers/Indicator/atr.ts +7 -3
  180. package/src/engine/renderers/Indicator/boll.ts +12 -12
  181. package/src/engine/renderers/Indicator/cci.ts +11 -10
  182. package/src/engine/renderers/Indicator/ene.ts +12 -12
  183. package/src/engine/renderers/Indicator/expma.ts +6 -6
  184. package/src/engine/renderers/Indicator/fastk.ts +9 -8
  185. package/src/engine/renderers/Indicator/kst.ts +12 -11
  186. package/src/engine/renderers/Indicator/ma.ts +5 -5
  187. package/src/engine/renderers/Indicator/macd.ts +27 -25
  188. package/src/engine/renderers/Indicator/macdLegend.ts +6 -6
  189. package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +16 -16
  190. package/src/engine/renderers/Indicator/mom.ts +11 -10
  191. package/src/engine/renderers/Indicator/rsi.ts +18 -15
  192. package/src/engine/renderers/Indicator/scale/indicator_scale.ts +6 -6
  193. package/src/engine/renderers/Indicator/stoch.ts +12 -11
  194. package/src/engine/renderers/Indicator/structure.ts +5 -5
  195. package/src/engine/renderers/Indicator/wmsr.ts +13 -12
  196. package/src/engine/renderers/Indicator/zones.ts +7 -7
  197. package/src/engine/renderers/candle.ts +21 -21
  198. package/src/engine/renderers/crosshair.ts +3 -3
  199. package/src/engine/renderers/extremaMarkers.ts +13 -12
  200. package/src/engine/renderers/gridLines.ts +3 -3
  201. package/src/engine/renderers/lastPrice.ts +7 -7
  202. package/src/engine/renderers/paneTitle.ts +22 -31
  203. package/src/engine/renderers/subVolume.ts +23 -20
  204. package/src/engine/renderers/timeAxis.ts +9 -9
  205. package/src/engine/renderers/webgl/candleSurface.ts +80 -60
  206. package/src/engine/renderers/yAxis.ts +6 -5
  207. package/src/engine/subPaneManager.ts +28 -1
  208. package/src/index.ts +1 -0
  209. package/src/plugin/types.ts +5 -1
  210. package/src/semantic/controller.ts +1 -1
  211. package/src/semantic/index.ts +1 -1
  212. package/src/tokens/__tests__/__snapshots__/baseline.test.ts.snap +393 -0
  213. package/src/tokens/__tests__/baseline.test.ts +183 -0
  214. package/src/tokens/__tests__/themeToCssVars.test.ts +175 -0
  215. package/src/tokens/__tests__/tokens.test.ts +215 -0
  216. package/src/tokens/colorPresetSettings.ts +128 -0
  217. package/src/tokens/index.ts +65 -0
  218. package/src/tokens/mergeTheme.ts +48 -0
  219. package/src/tokens/theme-china.ts +132 -0
  220. package/src/tokens/theme-dark.ts +244 -0
  221. package/src/tokens/theme-light.ts +250 -0
  222. package/src/tokens/themeToCssVars.ts +138 -0
  223. package/src/tokens/types.ts +394 -0
  224. package/src/utils/kLineDraw/axis.ts +31 -30
  225. package/src/version.ts +1 -1
  226. package/dist/engine/chart-store.d.ts +0 -75
  227. package/dist/engine/chart-store.d.ts.map +0 -1
  228. package/dist/engine/chart-store.js +0 -88
  229. package/dist/engine/chart-store.js.map +0 -1
  230. package/dist/engine/theme/colors.d.ts +0 -223
  231. package/dist/engine/theme/colors.d.ts.map +0 -1
  232. package/dist/engine/theme/colors.js +0 -375
  233. package/dist/engine/theme/colors.js.map +0 -1
  234. package/src/engine/chart-store.ts +0 -121
  235. package/src/engine/theme/colors.ts +0 -642
@@ -2,7 +2,8 @@ import type { KLineData } from '../../types/price'
2
2
  import { priceToY, yToPrice } from '../priceToY'
3
3
  import { alignToPhysicalPixelCenter, roundToPhysicalPixel } from '../../engine/draw/pixelAlign'
4
4
  import { formatYMDShanghai, formatMonthOrYear, findMonthBoundaries } from '../../utils/dateFormat'
5
- import { getColors } from '../../engine/theme/colors'
5
+ import { resolveThemeColors } from '../../tokens'
6
+ import type { ColorPresetSettings } from '../../tokens'
6
7
  import { getFont, setCanvasFont } from '../../engine/theme/fonts'
7
8
 
8
9
  const textWidthCache = new Map<string, number>()
@@ -46,8 +47,8 @@ export interface PriceAxisOptions {
46
47
  }
47
48
 
48
49
  /** 右侧价格轴(固定,不随 translate/scroll 变化) */
49
- export function drawPriceAxis(ctx: CanvasRenderingContext2D, opts: PriceAxisOptions, theme: 'light' | 'dark' = 'light') {
50
- const colors = getColors(theme)
50
+ export function drawPriceAxis(ctx: CanvasRenderingContext2D, opts: PriceAxisOptions, theme: 'light' | 'dark' = 'light', isAsiaMarket?: boolean, colorPresetSettings?: ColorPresetSettings) {
51
+ const colors = resolveThemeColors(theme, isAsiaMarket, colorPresetSettings)
51
52
  const {
52
53
  x,
53
54
  y,
@@ -57,9 +58,9 @@ export function drawPriceAxis(ctx: CanvasRenderingContext2D, opts: PriceAxisOpti
57
58
  yPaddingPx = 0,
58
59
  dpr,
59
60
  ticks = 10,
60
- bgColor = colors.TAG_BG.TRANSPARENT,
61
- textColor = colors.TEXT.SECONDARY,
62
- lineColor = colors.BORDER.DARK,
61
+ bgColor = colors.tagBg.transparent,
62
+ textColor = colors.text.secondary,
63
+ lineColor = colors.border.dark,
63
64
  fontSize = 16,
64
65
  drawLeftBorder = true,
65
66
  drawTickLines = true,
@@ -196,8 +197,8 @@ export interface CrosshairTimeLabelOptions {
196
197
  paddingY?: number
197
198
  }
198
199
 
199
- export function drawCrosshairTimeLabel(ctx: CanvasRenderingContext2D, opts: CrosshairTimeLabelOptions, theme: 'light' | 'dark' = 'light') {
200
- const colors = getColors(theme)
200
+ export function drawCrosshairTimeLabel(ctx: CanvasRenderingContext2D, opts: CrosshairTimeLabelOptions, theme: 'light' | 'dark' = 'light', isAsiaMarket?: boolean, colorPresetSettings?: ColorPresetSettings) {
201
+ const colors = resolveThemeColors(theme, isAsiaMarket, colorPresetSettings)
201
202
  const {
202
203
  x,
203
204
  y,
@@ -227,7 +228,7 @@ export function drawCrosshairTimeLabel(ctx: CanvasRenderingContext2D, opts: Cros
227
228
  const rectX = centerX - rectW / 2
228
229
  const rectY = y
229
230
 
230
- ctx.fillStyle = colors.LABEL.BG
231
+ ctx.fillStyle = colors.label.bg
231
232
  ctx.fillRect(
232
233
  roundToPhysicalPixel(rectX, dpr),
233
234
  roundToPhysicalPixel(rectY, dpr),
@@ -235,14 +236,14 @@ export function drawCrosshairTimeLabel(ctx: CanvasRenderingContext2D, opts: Cros
235
236
  roundToPhysicalPixel(rectH, dpr),
236
237
  )
237
238
 
238
- ctx.fillStyle = colors.LABEL.TEXT
239
+ ctx.fillStyle = colors.label.text
239
240
  ctx.fillText(text, roundToPhysicalPixel(centerX, dpr), alignToPhysicalPixelCenter(centerY, dpr))
240
241
 
241
242
  ctx.restore()
242
243
  }
243
244
 
244
- export function drawCrosshairPriceLabel(ctx: CanvasRenderingContext2D, opts: CrosshairPriceLabelOptions, theme: 'light' | 'dark' = 'light') {
245
- const colors = getColors(theme)
245
+ export function drawCrosshairPriceLabel(ctx: CanvasRenderingContext2D, opts: CrosshairPriceLabelOptions, theme: 'light' | 'dark' = 'light', isAsiaMarket?: boolean, colorPresetSettings?: ColorPresetSettings) {
246
+ const colors = resolveThemeColors(theme, isAsiaMarket, colorPresetSettings)
246
247
  const {
247
248
  x,
248
249
  y,
@@ -252,9 +253,9 @@ export function drawCrosshairPriceLabel(ctx: CanvasRenderingContext2D, opts: Cro
252
253
  priceRange,
253
254
  yPaddingPx = 0,
254
255
  dpr,
255
- bgColor = colors.LABEL.BG,
256
+ bgColor = colors.label.bg,
256
257
  borderColor,
257
- textColor = colors.LABEL.TEXT,
258
+ textColor = colors.label.text,
258
259
  fontSize = 16,
259
260
  priceOffset = 0,
260
261
  price,
@@ -303,8 +304,8 @@ export function drawCrosshairPriceLabel(ctx: CanvasRenderingContext2D, opts: Cro
303
304
  }
304
305
 
305
306
  /** 绘制"最新价水平虚线"(画在 plotCanvas 的 world 坐标系:需在 translate(-scrollLeft,0) 之后调用) */
306
- export function drawLastPriceDashedLine(ctx: CanvasRenderingContext2D, opts: LastPriceLineOptions, theme: 'light' | 'dark' = 'light') {
307
- const colors = getColors(theme)
307
+ export function drawLastPriceDashedLine(ctx: CanvasRenderingContext2D, opts: LastPriceLineOptions, theme: 'light' | 'dark' = 'light', isAsiaMarket?: boolean, colorPresetSettings?: ColorPresetSettings) {
308
+ const colors = resolveThemeColors(theme, isAsiaMarket, colorPresetSettings)
308
309
  const {
309
310
  plotWidth,
310
311
  plotHeight,
@@ -317,7 +318,7 @@ export function drawLastPriceDashedLine(ctx: CanvasRenderingContext2D, opts: Las
317
318
  lastPrice,
318
319
  yPaddingPx = 0,
319
320
  dpr,
320
- color = colors.CROSSHAIR.LINE,
321
+ color = colors.crosshairLine,
321
322
  } = opts
322
323
 
323
324
  const { maxPrice, minPrice } = priceRange
@@ -344,8 +345,8 @@ export function drawLastPriceDashedLine(ctx: CanvasRenderingContext2D, opts: Las
344
345
  }
345
346
 
346
347
  /** 底部时间轴(X方向随 scrollLeft 变化) */
347
- export function drawTimeAxis(ctx: CanvasRenderingContext2D, opts: TimeAxisOptions, theme: 'light' | 'dark' = 'light') {
348
- const colors = getColors(theme)
348
+ export function drawTimeAxis(ctx: CanvasRenderingContext2D, opts: TimeAxisOptions, theme: 'light' | 'dark' = 'light', isAsiaMarket?: boolean, colorPresetSettings?: ColorPresetSettings) {
349
+ const colors = resolveThemeColors(theme, isAsiaMarket, colorPresetSettings)
349
350
  const {
350
351
  x,
351
352
  y,
@@ -358,9 +359,9 @@ export function drawTimeAxis(ctx: CanvasRenderingContext2D, opts: TimeAxisOption
358
359
  startIndex,
359
360
  endIndex,
360
361
  dpr,
361
- bgColor = colors.TAG_BG.TRANSPARENT,
362
- textColor = colors.TEXT.SECONDARY,
363
- lineColor = colors.BORDER.DARK,
362
+ bgColor = colors.tagBg.transparent,
363
+ textColor = colors.text.secondary,
364
+ lineColor = colors.border.dark,
364
365
  fontSize = 12,
365
366
  paddingX = 8,
366
367
  drawTopBorder = true,
@@ -448,8 +449,8 @@ export interface AxisPriceLabelOptions {
448
449
  fontSize?: number
449
450
  }
450
451
 
451
- export function drawAxisPriceLabel(ctx: CanvasRenderingContext2D, opts: AxisPriceLabelOptions, theme: 'light' | 'dark' = 'light') {
452
- const colors = getColors(theme)
452
+ export function drawAxisPriceLabel(ctx: CanvasRenderingContext2D, opts: AxisPriceLabelOptions, theme: 'light' | 'dark' = 'light', isAsiaMarket?: boolean, colorPresetSettings?: ColorPresetSettings) {
453
+ const colors = resolveThemeColors(theme, isAsiaMarket, colorPresetSettings)
453
454
  const {
454
455
  x,
455
456
  y,
@@ -458,9 +459,9 @@ export function drawAxisPriceLabel(ctx: CanvasRenderingContext2D, opts: AxisPric
458
459
  priceY,
459
460
  price,
460
461
  dpr,
461
- bgColor = colors.LABEL.BG,
462
+ bgColor = colors.label.bg,
462
463
  borderColor,
463
- textColor = colors.LABEL.TEXT,
464
+ textColor = colors.label.text,
464
465
  fontSize = 12,
465
466
  } = opts
466
467
 
@@ -516,8 +517,8 @@ export interface AxisTimeLabelOptions {
516
517
  paddingX?: number
517
518
  }
518
519
 
519
- export function drawAxisTimeLabel(ctx: CanvasRenderingContext2D, opts: AxisTimeLabelOptions, theme: 'light' | 'dark' = 'light') {
520
- const colors = getColors(theme)
520
+ export function drawAxisTimeLabel(ctx: CanvasRenderingContext2D, opts: AxisTimeLabelOptions, theme: 'light' | 'dark' = 'light', isAsiaMarket?: boolean, colorPresetSettings?: ColorPresetSettings) {
521
+ const colors = resolveThemeColors(theme, isAsiaMarket, colorPresetSettings)
521
522
  const {
522
523
  x,
523
524
  y,
@@ -547,7 +548,7 @@ export function drawAxisTimeLabel(ctx: CanvasRenderingContext2D, opts: AxisTimeL
547
548
  const rectX = centerX - rectW / 2
548
549
  const rectY = y
549
550
 
550
- ctx.fillStyle = opts.bgColor ?? colors.LABEL.BG
551
+ ctx.fillStyle = opts.bgColor ?? colors.label.bg
551
552
  ctx.fillRect(
552
553
  roundToPhysicalPixel(rectX, dpr),
553
554
  roundToPhysicalPixel(rectY, dpr),
@@ -555,7 +556,7 @@ export function drawAxisTimeLabel(ctx: CanvasRenderingContext2D, opts: AxisTimeL
555
556
  roundToPhysicalPixel(rectH, dpr),
556
557
  )
557
558
 
558
- ctx.fillStyle = opts.textColor ?? colors.LABEL.TEXT
559
+ ctx.fillStyle = opts.textColor ?? colors.label.text
559
560
  ctx.fillText(text, roundToPhysicalPixel(centerX, dpr), alignToPhysicalPixelCenter(centerY, dpr))
560
561
 
561
562
  ctx.restore()
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = "0.7.5"
1
+ export const VERSION = "0.7.7"
@@ -1,75 +0,0 @@
1
- import { type UnwrapNestedRefs } from 'vue';
2
- import type { DrawingObject } from '../plugin';
3
- /** 右侧空白绘制槽位数(逻辑 bar 数) */
4
- export declare const TRAILING_DRAWING_SLOTS = 24;
5
- export interface ChartStoreOptions {
6
- initialZoomLevel: number;
7
- minKWidth: number;
8
- maxKWidth: number;
9
- zoomLevels: number;
10
- rightAxisWidth: number;
11
- priceLabelWidth: number;
12
- }
13
- export declare function computeContentWidth(params: {
14
- dataLength: number;
15
- kWidth: number;
16
- kGap: number;
17
- viewWidth: number;
18
- viewportDpr: number;
19
- }): number;
20
- export declare function createChartStore(opts: ChartStoreOptions): {
21
- state: UnwrapNestedRefs<{
22
- zoomLevel: number;
23
- kWidth: number;
24
- kGap: number;
25
- viewportDpr: number;
26
- dataLength: number;
27
- dataVersion: number;
28
- paneRatios: Record<string, number>;
29
- drawings: {
30
- id: string;
31
- kind: import("./drawing").DrawingKind;
32
- paneId: string;
33
- visible: boolean;
34
- locked?: boolean | undefined;
35
- zIndex?: number | undefined;
36
- anchors: {
37
- id: string;
38
- index: number;
39
- time?: number | string | undefined;
40
- price: number;
41
- }[];
42
- params: Record<string, unknown>;
43
- style: {
44
- stroke?: string | undefined;
45
- strokeWidth?: number | undefined;
46
- strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
47
- fill?: string | undefined;
48
- fillOpacity?: number | undefined;
49
- pointRadius?: number | undefined;
50
- textColor?: string | undefined;
51
- fontSize?: number | undefined;
52
- };
53
- }[];
54
- selectedDrawingId: string | null;
55
- drawingVersion: number;
56
- viewWidth: number;
57
- }>;
58
- computed: {
59
- axisHostWidth: import("vue").ComputedRef<number>;
60
- totalWidth: import("vue").ComputedRef<number>;
61
- };
62
- actions: {
63
- bumpDataVersion: () => void;
64
- bumpDrawingVersion: () => void;
65
- setDataLength: (length: number) => void;
66
- setViewportDpr: (dpr: number) => void;
67
- setViewWidth: (width: number) => void;
68
- setZoomState: (level: number, newKWidth: number, newKGap: number) => void;
69
- setPaneRatios: (ratios: Record<string, number>) => void;
70
- setDrawings: (newDrawings: DrawingObject[]) => void;
71
- setSelectedDrawingId: (id: string | null) => void;
72
- };
73
- };
74
- export type ChartStore = ReturnType<typeof createChartStore>;
75
- //# sourceMappingURL=chart-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-store.d.ts","sourceRoot":"","sources":["../../src/engine/chart-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAA;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE9C,0BAA0B;AAC1B,eAAO,MAAM,sBAAsB,KAAK,CAAA;AAExC,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,MAAM,CAMT;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB;WAuEpC,gBAAgB;;;;;;;oBA/Dd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;2BAEb,MAAM,GAAG,IAAI;;;MA6DM;;;;;;;;gCAnCjB,MAAM;8BAIR,MAAM;8BAIN,MAAM;8BAIN,MAAM,aAAa,MAAM,WAAW,MAAM;gCAMxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mCAInB,aAAa,EAAE;mCAQf,MAAM,GAAG,IAAI;;EAsBhD;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA"}
@@ -1,88 +0,0 @@
1
- import { reactive, computed } from 'vue';
2
- import { getPhysicalKLineConfig } from './utils/klineConfig';
3
- /** 右侧空白绘制槽位数(逻辑 bar 数) */
4
- export const TRAILING_DRAWING_SLOTS = 24;
5
- export function computeContentWidth(params) {
6
- const { dataLength, kWidth, kGap, viewWidth, viewportDpr } = params;
7
- if (dataLength === 0)
8
- return 0;
9
- const { startXPx, unitPx } = getPhysicalKLineConfig(kWidth, kGap, viewportDpr);
10
- const dataPlotWidth = (startXPx + (dataLength + TRAILING_DRAWING_SLOTS) * unitPx) / viewportDpr;
11
- return Math.max(dataPlotWidth, viewWidth);
12
- }
13
- export function createChartStore(opts) {
14
- const state = reactive({
15
- zoomLevel: opts.initialZoomLevel,
16
- kWidth: 0,
17
- kGap: 1,
18
- viewportDpr: 1,
19
- dataLength: 0,
20
- dataVersion: 0,
21
- paneRatios: {},
22
- drawings: [],
23
- selectedDrawingId: null,
24
- drawingVersion: 0,
25
- viewWidth: 0,
26
- });
27
- // 右侧轴宽度
28
- const axisHostWidth = computed(() => opts.rightAxisWidth + opts.priceLabelWidth);
29
- const totalWidth = computed(() => computeContentWidth({
30
- dataLength: state.dataLength,
31
- kWidth: state.kWidth,
32
- kGap: state.kGap,
33
- viewWidth: state.viewWidth,
34
- viewportDpr: state.viewportDpr,
35
- }));
36
- function bumpDataVersion() {
37
- state.dataVersion++;
38
- }
39
- function bumpDrawingVersion() {
40
- state.drawingVersion++;
41
- }
42
- function setDataLength(length) {
43
- state.dataLength = length;
44
- }
45
- function setViewportDpr(dpr) {
46
- state.viewportDpr = dpr;
47
- }
48
- function setViewWidth(width) {
49
- state.viewWidth = width;
50
- }
51
- function setZoomState(level, newKWidth, newKGap) {
52
- state.zoomLevel = level;
53
- state.kWidth = newKWidth;
54
- state.kGap = newKGap;
55
- }
56
- function setPaneRatios(ratios) {
57
- state.paneRatios = ratios;
58
- }
59
- function setDrawings(newDrawings) {
60
- state.drawings = newDrawings;
61
- if (state.selectedDrawingId && !newDrawings.some((d) => d.id === state.selectedDrawingId)) {
62
- state.selectedDrawingId = null;
63
- }
64
- state.drawingVersion++;
65
- }
66
- function setSelectedDrawingId(id) {
67
- state.selectedDrawingId = id;
68
- }
69
- return {
70
- state: state,
71
- computed: {
72
- axisHostWidth,
73
- totalWidth,
74
- },
75
- actions: {
76
- bumpDataVersion,
77
- bumpDrawingVersion,
78
- setDataLength,
79
- setViewportDpr,
80
- setViewWidth,
81
- setZoomState,
82
- setPaneRatios,
83
- setDrawings,
84
- setSelectedDrawingId,
85
- },
86
- };
87
- }
88
- //# sourceMappingURL=chart-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-store.js","sourceRoot":"","sources":["../../src/engine/chart-store.ts"],"names":[],"mappings":"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"}
@@ -1,223 +0,0 @@
1
- /**
2
- * 主题感知颜色配置
3
- * 所有颜色通过 getColors(theme) 获取,支持 light/dark 双主题
4
- */
5
- /** 主题类型 */
6
- export type ChartTheme = 'light' | 'dark';
7
- /** 文本颜色 */
8
- export interface TextColors {
9
- PRIMARY: string;
10
- SECONDARY: string;
11
- TERTIARY: string;
12
- WEAK: string;
13
- WHITE: string;
14
- }
15
- /** 涨跌价格颜色 */
16
- export interface PriceColors {
17
- UP: string;
18
- UP_LIGHT: string;
19
- UP_TICK: string;
20
- DOWN: string;
21
- DOWN_LIGHT: string;
22
- DOWN_TICK: string;
23
- NEUTRAL: string;
24
- LAST_PRICE: string;
25
- }
26
- /** 标签背景颜色 */
27
- export interface TagBgColors {
28
- WHITE: string;
29
- LIGHT_GRAY: string;
30
- PURE_WHITE: string;
31
- TRANSPARENT: string;
32
- ACTIVE: string;
33
- ACTIVE_HOVER: string;
34
- HOVER: string;
35
- }
36
- /** 边框颜色 */
37
- export interface BorderColors {
38
- DARK: string;
39
- MEDIUM: string;
40
- LIGHT: string;
41
- SEPARATOR: string;
42
- BUTTON: string;
43
- }
44
- /** 网格线颜色 */
45
- export interface GridColors {
46
- HORIZONTAL: string;
47
- VERTICAL: string;
48
- }
49
- /** 十字线颜色 */
50
- export interface CrosshairColors {
51
- LINE: string;
52
- LABEL_BG: string;
53
- LABEL_TEXT: string;
54
- }
55
- /** 均线颜色 */
56
- export interface MAColors {
57
- MA5: string;
58
- MA10: string;
59
- MA20: string;
60
- MA30: string;
61
- MA60: string;
62
- }
63
- /** 布林带颜色 */
64
- export interface BOLLColors {
65
- UPPER: string;
66
- MIDDLE: string;
67
- LOWER: string;
68
- BAND_FILL: string;
69
- }
70
- /** MACD 颜色 */
71
- export interface MACDColors {
72
- DIF: string;
73
- DEA: string;
74
- BAR_UP: string;
75
- BAR_UP_LIGHT: string;
76
- BAR_DOWN: string;
77
- BAR_DOWN_LIGHT: string;
78
- }
79
- /** 成交量颜色 */
80
- export interface VolumeColors {
81
- UP: string;
82
- DOWN: string;
83
- NEUTRAL: string;
84
- }
85
- /** RSI 颜色 */
86
- export interface RSIColors {
87
- RSI1: string;
88
- RSI2: string;
89
- RSI3: string;
90
- }
91
- /** CCI 颜色 */
92
- export interface CCIColors {
93
- CCI: string;
94
- OVERBOUGHT: string;
95
- OVERSOLD: string;
96
- }
97
- /** KDJ/STOCH 颜色 */
98
- export interface KDJColors {
99
- K: string;
100
- D: string;
101
- J: string;
102
- }
103
- /** MOM 颜色 */
104
- export interface MOMColors {
105
- MOM: string;
106
- ZERO: string;
107
- }
108
- /** WMSR 颜色 */
109
- export interface WMSRColors {
110
- WMSR: string;
111
- OVERBOUGHT: string;
112
- OVERSOLD: string;
113
- }
114
- /** KST 颜色 */
115
- export interface KSTColors {
116
- KST: string;
117
- SIGNAL: string;
118
- }
119
- /** EXPMA 颜色 */
120
- export interface EXPMAColors {
121
- FAST: string;
122
- SLOW: string;
123
- }
124
- /** ENE 颜色 */
125
- export interface ENEColors {
126
- UPPER: string;
127
- MIDDLE: string;
128
- LOWER: string;
129
- BAND_FILL: string;
130
- }
131
- /** 标签专用颜色(收敛硬编码) */
132
- export interface LabelColors {
133
- BG: string;
134
- TEXT: string;
135
- }
136
- /** 最新价标签颜色 */
137
- export interface LastPriceLabelColors {
138
- BG: string;
139
- }
140
- /** 成交量价格标记颜色 */
141
- export interface VolumePriceColors {
142
- RISE_WITH: string;
143
- RISE_WITHOUT: string;
144
- FALL_WITH: string;
145
- FALL_WITHOUT: string;
146
- }
147
- /** Structure 指标颜色 */
148
- export interface StructureColors {
149
- HH: string;
150
- HL: string;
151
- LH: string;
152
- LL: string;
153
- CHOCH: string;
154
- BOS: string;
155
- }
156
- /** Zones 指标颜色 */
157
- export interface ZonesColors {
158
- FVG_BULL_FILL: string;
159
- FVG_BEAR_FILL: string;
160
- FVG_BULL_BORDER: string;
161
- FVG_BEAR_BORDER: string;
162
- OB_BULL_FILL: string;
163
- OB_BEAR_FILL: string;
164
- }
165
- /** 主题色值集合 */
166
- export interface ThemeColors {
167
- TEXT: TextColors;
168
- PRICE: PriceColors;
169
- TAG_BG: TagBgColors;
170
- BORDER: BorderColors;
171
- GRID: GridColors;
172
- CROSSHAIR: CrosshairColors;
173
- MA: MAColors;
174
- BOLL: BOLLColors;
175
- MACD: MACDColors;
176
- VOLUME: VolumeColors;
177
- RSI: RSIColors;
178
- CCI: CCIColors;
179
- KDJ: KDJColors;
180
- MOM: MOMColors;
181
- WMSR: WMSRColors;
182
- KST: KSTColors;
183
- EXPMA: EXPMAColors;
184
- ENE: ENEColors;
185
- /** 收敛的硬编码色值 */
186
- LABEL: LabelColors;
187
- LAST_PRICE_LABEL: LastPriceLabelColors;
188
- VOLUME_PRICE: VolumePriceColors;
189
- STRUCTURE: StructureColors;
190
- ZONES: ZonesColors;
191
- WMSR_GRID: string;
192
- }
193
- /**
194
- * 根据主题获取颜色配置
195
- * @param theme - 主题类型 'light' | 'dark'
196
- * @returns 主题色值集合
197
- */
198
- export declare function getColors(theme: ChartTheme): ThemeColors;
199
- /**
200
- * 日志颜色(与主题无关,保留常量导出)
201
- */
202
- export declare const LOG_COLORS: {
203
- readonly INFO: "background:#164586;color:#fff;";
204
- readonly SUCCESS: "background:#389e0d;color:#fff;";
205
- readonly WARN: "background:#d46b08;color:#fff;";
206
- readonly ERROR: "background:#cf1322;color:#fff;";
207
- readonly CONSOLE: "#666";
208
- };
209
- /**
210
- * 工具函数:根据涨跌返回颜色
211
- * @param type - 涨跌类型
212
- * @param theme - 主题类型
213
- * @returns 对应颜色
214
- */
215
- export declare function getPriceColor(type: 'up' | 'down' | 'neutral', theme?: ChartTheme): string;
216
- /**
217
- * 工具函数:根据涨跌百分比返回颜色
218
- * @param changePercent - 涨跌百分比
219
- * @param theme - 主题类型
220
- * @returns 对应颜色
221
- */
222
- export declare function getTickColor(changePercent: number, theme?: ChartTheme): string;
223
- //# sourceMappingURL=colors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../src/engine/theme/colors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,WAAW;AACX,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;AAEzC,WAAW;AACX,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,aAAa;AACb,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,aAAa;AACb,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,WAAW;AACX,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,YAAY;AACZ,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,YAAY;AACZ,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,WAAW;AACX,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACf;AAED,YAAY;AACZ,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,cAAc;AACd,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACzB;AAED,YAAY;AACZ,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,aAAa;AACb,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACf;AAED,aAAa;AACb,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,mBAAmB;AACnB,MAAM,WAAW,SAAS;IACtB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,aAAa;AACb,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACf;AAED,cAAc;AACd,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,aAAa;AACb,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,eAAe;AACf,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACf;AAED,aAAa;AACb,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,oBAAoB;AACpB,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACf;AAED,cAAc;AACd,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAA;CACb;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACvB;AAED,qBAAqB;AACrB,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACd;AAED,iBAAiB;AACjB,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACvB;AAED,aAAa;AACb,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,eAAe,CAAA;IAC1B,EAAE,EAAE,QAAQ,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,GAAG,EAAE,SAAS,CAAA;IACd,GAAG,EAAE,SAAS,CAAA;IACd,GAAG,EAAE,SAAS,CAAA;IACd,GAAG,EAAE,SAAS,CAAA;IACd,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,SAAS,CAAA;IACd,KAAK,EAAE,WAAW,CAAA;IAClB,GAAG,EAAE,SAAS,CAAA;IACd,eAAe;IACf,KAAK,EAAE,WAAW,CAAA;IAClB,gBAAgB,EAAE,oBAAoB,CAAA;IACtC,YAAY,EAAE,iBAAiB,CAAA;IAC/B,SAAS,EAAE,eAAe,CAAA;IAC1B,KAAK,EAAE,WAAW,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACpB;AA0XD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAExD;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;CAMb,CAAA;AAEV;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,EAAE,KAAK,GAAE,UAAoB,GAAG,MAAM,CAUlG;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,GAAE,UAAoB,GAAG,MAAM,CAGvF"}