@363045841yyt/klinechart 0.5.6 → 0.6.1

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 (43) hide show
  1. package/README.md +7 -4
  2. package/dist/index.cjs +4 -4
  3. package/dist/index.js +3488 -3146
  4. package/dist/klinechart.css +1 -1
  5. package/dist/src/components/KLineChart.vue.d.ts +1 -1
  6. package/dist/src/config/chartSettings.d.ts +1 -0
  7. package/dist/src/core/chart.d.ts +25 -8
  8. package/dist/src/core/controller/interaction.d.ts +4 -0
  9. package/dist/src/core/indicators/bollState.d.ts +34 -0
  10. package/dist/src/core/indicators/calculators.d.ts +129 -0
  11. package/dist/src/core/indicators/cciState.d.ts +15 -0
  12. package/dist/src/core/indicators/eneState.d.ts +30 -0
  13. package/dist/src/core/indicators/expmaState.d.ts +30 -0
  14. package/dist/src/core/indicators/fastkState.d.ts +15 -0
  15. package/dist/src/core/indicators/kstState.d.ts +21 -0
  16. package/dist/src/core/indicators/maState.d.ts +26 -0
  17. package/dist/src/core/indicators/momState.d.ts +15 -0
  18. package/dist/src/core/indicators/rsiState.d.ts +39 -0
  19. package/dist/src/core/indicators/scheduler.d.ts +251 -0
  20. package/dist/src/core/indicators/stochState.d.ts +18 -0
  21. package/dist/src/core/indicators/wmsrState.d.ts +15 -0
  22. package/dist/src/core/layout/pane.d.ts +11 -0
  23. package/dist/src/core/paneRenderer.d.ts +2 -1
  24. package/dist/src/core/renderers/Indicator/boll.d.ts +9 -26
  25. package/dist/src/core/renderers/Indicator/cci.d.ts +2 -19
  26. package/dist/src/core/renderers/Indicator/ene.d.ts +9 -18
  27. package/dist/src/core/renderers/Indicator/expma.d.ts +9 -17
  28. package/dist/src/core/renderers/Indicator/fastk.d.ts +2 -19
  29. package/dist/src/core/renderers/Indicator/index.d.ts +10 -10
  30. package/dist/src/core/renderers/Indicator/kst.d.ts +2 -34
  31. package/dist/src/core/renderers/Indicator/ma.d.ts +10 -10
  32. package/dist/src/core/renderers/Indicator/mainIndicatorLegend.d.ts +3 -3
  33. package/dist/src/core/renderers/Indicator/mom.d.ts +2 -19
  34. package/dist/src/core/renderers/Indicator/rsi.d.ts +3 -27
  35. package/dist/src/core/renderers/Indicator/stoch.d.ts +2 -28
  36. package/dist/src/core/renderers/Indicator/wmsr.d.ts +2 -19
  37. package/dist/src/core/theme/fonts.d.ts +1 -0
  38. package/dist/src/debug/canvasProfiler.d.ts +21 -0
  39. package/dist/src/plugin/rendererPluginManager.d.ts +3 -2
  40. package/dist/src/plugin/types.d.ts +9 -0
  41. package/dist/src/utils/kLineDraw/axis.d.ts +0 -16
  42. package/package.json +2 -1
  43. package/dist/src/utils/kline/ma.d.ts +0 -2
@@ -1,41 +1,17 @@
1
- import { RendererPluginWithHost, BaseIndicatorState } from '../../../plugin';
2
- import { KLineData } from '../../../types/price';
3
- export interface RSIConfig {
4
- /** 第一条 RSI 周期(默认 6) */
5
- period1?: number;
6
- /** 第二条 RSI 周期(默认 12) */
7
- period2?: number;
8
- /** 第三条 RSI 周期(默认 24) */
9
- period3?: number;
10
- /** 是否显示 RSI1 */
11
- showRSI1?: boolean;
12
- /** 是否显示 RSI2 */
13
- showRSI2?: boolean;
14
- /** 是否显示 RSI3 */
15
- showRSI3?: boolean;
16
- }
17
- export interface RSIRenderState extends BaseIndicatorState {
18
- valueMin: number;
19
- valueMax: number;
20
- }
1
+ import { RendererPluginWithHost, PluginHost } from '../../../plugin';
21
2
  export interface RSIRendererOptions {
22
3
  /** 目标 pane ID(默认 'sub') */
23
4
  paneId?: string;
24
- /** 初始配置 */
25
- config?: RSIConfig;
26
5
  }
27
6
  /**
28
7
  * 创建 RSI 渲染器插件
29
8
  */
30
9
  export declare function createRSIRendererPlugin(options?: RSIRendererOptions): RendererPluginWithHost;
31
- /**
32
- * 计算指定索引处的 RSI 值
33
- */
34
- export declare function calcRSIAtIndex(data: KLineData[], index: number, period: number): number | undefined;
35
10
  /**
36
11
  * 获取 RSI 标题信息(供 paneTitle 使用)
12
+ * 从 StateStore 读取已计算的 RSI 数据
37
13
  */
38
- export declare function getRSITitleInfo(data: KLineData[], index: number, period1?: number, period2?: number, period3?: number): {
14
+ export declare function getRSITitleInfo(index: number, period1: number, period2: number, period3: number, pluginHost: PluginHost, paneId?: string): {
39
15
  name: string;
40
16
  params: number[];
41
17
  values: Array<{
@@ -1,41 +1,16 @@
1
- import { RendererPluginWithHost, BaseIndicatorState } from '../../../plugin';
2
- import { KLineData } from '../../../types/price';
3
- export interface STOCHConfig {
4
- /** K 周期(默认 9) */
5
- n?: number;
6
- /** D 周期(默认 3) */
7
- m?: number;
8
- /** 是否显示 K 线 */
9
- showK?: boolean;
10
- /** 是否显示 D 线 */
11
- showD?: boolean;
12
- }
13
- interface STOCHPoint {
14
- k: number;
15
- d: number;
16
- }
17
- export interface STOCHRenderState extends BaseIndicatorState {
18
- valueMin: number;
19
- valueMax: number;
20
- }
1
+ import { RendererPluginWithHost, PluginHost } from '../../../plugin';
21
2
  export interface STOCHRendererOptions {
22
3
  /** 目标 pane ID(默认 'sub') */
23
4
  paneId?: string;
24
- /** 初始配置 */
25
- config?: STOCHConfig;
26
5
  }
27
6
  /**
28
7
  * 创建 STOCH 渲染器插件
29
8
  */
30
9
  export declare function createSTOCHRendererPlugin(options?: STOCHRendererOptions): RendererPluginWithHost;
31
- /**
32
- * 计算指定索引处的 STOCH 值
33
- */
34
- export declare function calcSTOCHAtIndex(data: KLineData[], index: number, n: number, m: number): STOCHPoint | undefined;
35
10
  /**
36
11
  * 获取 STOCH 标题信息(供 paneTitle 使用)
37
12
  */
38
- export declare function getSTOCHTitleInfo(data: KLineData[], index: number, n?: number, m?: number): {
13
+ export declare function getSTOCHTitleInfo(index: number, n: number, m: number, pluginHost: PluginHost, paneId?: string): {
39
14
  name: string;
40
15
  params: number[];
41
16
  values: Array<{
@@ -44,4 +19,3 @@ export declare function getSTOCHTitleInfo(data: KLineData[], index: number, n?:
44
19
  color: string;
45
20
  }>;
46
21
  } | null;
47
- export {};
@@ -1,33 +1,16 @@
1
- import { RendererPluginWithHost, BaseIndicatorState } from '../../../plugin';
2
- import { KLineData } from '../../../types/price';
3
- export interface WMSRConfig {
4
- /** 周期(默认 14) */
5
- period?: number;
6
- /** 是否显示 WMSR 线 */
7
- showWMSR?: boolean;
8
- }
9
- export interface WMSRRenderState extends BaseIndicatorState {
10
- valueMin: number;
11
- valueMax: number;
12
- }
1
+ import { RendererPluginWithHost, PluginHost } from '../../../plugin';
13
2
  export interface WMSRRendererOptions {
14
3
  /** 目标 pane ID(默认 'sub') */
15
4
  paneId?: string;
16
- /** 初始配置 */
17
- config?: WMSRConfig;
18
5
  }
19
6
  /**
20
7
  * 创建 WMSR 渲染器插件
21
8
  */
22
9
  export declare function createWMSRRendererPlugin(options?: WMSRRendererOptions): RendererPluginWithHost;
23
- /**
24
- * 计算指定索引处的 WMSR 值
25
- */
26
- export declare function calcWMSRAtIndex(data: KLineData[], index: number, period: number): number | undefined;
27
10
  /**
28
11
  * 获取 WMSR 标题信息(供 paneTitle 使用)
29
12
  */
30
- export declare function getWMSRTitleInfo(data: KLineData[], index: number, period?: number): {
13
+ export declare function getWMSRTitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string): {
31
14
  name: string;
32
15
  params: number[];
33
16
  values: Array<{
@@ -9,3 +9,4 @@ export declare const FONT_FAMILY = "\"Trebuchet MS\", Roboto, Ubuntu, sans-serif
9
9
  export declare function getFont(size: number, options?: {
10
10
  bold?: boolean;
11
11
  }): string;
12
+ export declare function setCanvasFont(ctx: CanvasRenderingContext2D, font: string): void;
@@ -0,0 +1,21 @@
1
+ type MetricEntry = {
2
+ count: number;
3
+ totalTime: number;
4
+ };
5
+ type MetricBucket = Record<string, MetricEntry>;
6
+ type CanvasProfilerMetrics = {
7
+ ctxMethods: MetricBucket;
8
+ ctxProps: MetricBucket;
9
+ canvasProps: MetricBucket;
10
+ ctxMethodSources: Record<string, MetricBucket>;
11
+ };
12
+ declare global {
13
+ interface Window {
14
+ __KMAP_CANVAS_PROFILER_INSTALLED__?: boolean;
15
+ __KMAP_CANVAS_PROFILER_METRICS__?: CanvasProfilerMetrics;
16
+ showCanvasReport?: () => void;
17
+ resetCanvasReport?: () => void;
18
+ }
19
+ }
20
+ export declare function installCanvasProfiler(): void;
21
+ export {};
@@ -1,4 +1,5 @@
1
1
  import { RendererPlugin, RenderContext, PaneInfo, RendererPluginWithHost, PluginHost } from './types';
2
+ import { UpdateLevel } from '../core/layout/pane';
2
3
  /** 渲染器错误事件(裁剪后,不含大数据) */
3
4
  export interface RendererErrorEvent {
4
5
  name: string;
@@ -55,8 +56,8 @@ export declare class RendererPluginManager {
55
56
  private getMergedRenderers;
56
57
  /** 获取指定 pane 的渲染器(已缓存,无穿透) */
57
58
  getRenderers(paneId: string): RendererPlugin[];
58
- /** 渲染指定 pane(带错误隔离) */
59
- render(paneId: string, context: RenderContext): RendererErrorEvent[];
59
+ /** 渲染指定 pane(带错误隔离,支持按 UpdateLevel 过滤) */
60
+ render(paneId: string, context: RenderContext, level?: UpdateLevel): RendererErrorEvent[];
60
61
  /** 渲染指定名称的插件(带错误隔离,用于系统渲染器) */
61
62
  renderPlugin(name: string, context: RenderContext): RendererErrorEvent[];
62
63
  /** 启用/禁用渲染器(修改独立状态,不影响原始插件对象) */
@@ -226,6 +226,8 @@ export interface RenderContext {
226
226
  yAxisCtx?: CanvasRenderingContext2D;
227
227
  xAxisCtx?: CanvasRenderingContext2D;
228
228
  borderCtx?: CanvasRenderingContext2D;
229
+ /** 覆盖层 Canvas 上下文(用于十字线、Tooltip 等动态内容) */
230
+ overlayCtx?: CanvasRenderingContext2D;
229
231
  /** 当前缩放级别(1 ~ zoomLevels) */
230
232
  zoomLevel?: number;
231
233
  /** 总缩放级别数 */
@@ -396,6 +398,13 @@ export interface RendererPlugin {
396
398
  * 用于时间轴、全局边框等需要单独控制渲染时机的场景
397
399
  */
398
400
  isSystem?: boolean;
401
+ /**
402
+ * 渲染器所属层,决定 UpdateLevel 过滤行为
403
+ * - 'main': 低频/静态内容,随主画布一起渲染
404
+ * - 'overlay': 高频/动态内容,可在 overlay-only 更新时独立重绘
405
+ * 未指定时默认为 'main'(向后兼容)
406
+ */
407
+ layer?: 'main' | 'overlay';
399
408
  /** 渲染方法 */
400
409
  draw(context: RenderContext): void;
401
410
  /** 数据更新时回调 */
@@ -113,15 +113,7 @@ export interface CrosshairTimeLabelOptions {
113
113
  paddingX?: number;
114
114
  paddingY?: number;
115
115
  }
116
- /**
117
- * 在底部时间轴上绘制"十字线日期标签"
118
- * 说明:该函数假设时间轴背景/刻度已绘制完(即 drawTimeAxis 之后调用)。
119
- */
120
116
  export declare function drawCrosshairTimeLabel(ctx: CanvasRenderingContext2D, opts: CrosshairTimeLabelOptions): void;
121
- /**
122
- * 在右侧价格轴上绘制"十字线价格标签"
123
- * 说明:该函数假设价格轴背景/刻度已绘制完(即 drawPriceAxis 之后调用)。
124
- */
125
117
  export declare function drawCrosshairPriceLabel(ctx: CanvasRenderingContext2D, opts: CrosshairPriceLabelOptions): void;
126
118
  /** 绘制"最新价水平虚线"(画在 plotCanvas 的 world 坐标系:需在 translate(-scrollLeft,0) 之后调用) */
127
119
  export declare function drawLastPriceDashedLine(ctx: CanvasRenderingContext2D, opts: LastPriceLineOptions): void;
@@ -141,10 +133,6 @@ export interface AxisPriceLabelOptions {
141
133
  textColor?: string;
142
134
  fontSize?: number;
143
135
  }
144
- /**
145
- * 在右侧价格轴上绘制价格标签
146
- * 与 drawCrosshairPriceLabel 类似,但简化了参数(价格直接传入,无需计算)
147
- */
148
136
  export declare function drawAxisPriceLabel(ctx: CanvasRenderingContext2D, opts: AxisPriceLabelOptions): void;
149
137
  export interface AxisTimeLabelOptions {
150
138
  x: number;
@@ -159,8 +147,4 @@ export interface AxisTimeLabelOptions {
159
147
  fontSize?: number;
160
148
  paddingX?: number;
161
149
  }
162
- /**
163
- * 在底部时间轴上绘制时间标签
164
- * 与 drawCrosshairTimeLabel 类似,但 labelX 是屏幕坐标(已处理 scrollLeft)
165
- */
166
150
  export declare function drawAxisTimeLabel(ctx: CanvasRenderingContext2D, opts: AxisTimeLabelOptions): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@363045841yyt/klinechart",
3
- "version": "0.5.6",
3
+ "version": "0.6.1",
4
4
  "description": "A lightweight financial K-line charting library with first-class AI Agent support, crisp ResizeObserver-driven rendering, and plugin-based architecture. Focused on quantitative trading scenarios with TradingView-level interaction experience.",
5
5
  "author": "363045841 <slslswbsy@qq.com>",
6
6
  "license": "MIT",
@@ -51,6 +51,7 @@
51
51
  "build-only": "vite build",
52
52
  "build:demo": "vite build --config vite.demo.config.ts",
53
53
  "preview": "vite preview",
54
+ "preview:demo": "vite preview --config vite.demo.config.ts",
54
55
  "type-check": "vue-tsc --build",
55
56
  "test:unit": "vitest",
56
57
  "format": "prettier --write --experimental-cli src/",
@@ -1,2 +0,0 @@
1
- import { KLineData } from '../../types/price';
2
- export declare function calcMAAtIndex(data: KLineData[], index: number, period: number): number | undefined;