@363045841yyt/klinechart 0.7.0 → 0.7.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 (30) hide show
  1. package/dist/index.cjs +5 -5
  2. package/dist/index.js +12693 -5720
  3. package/dist/klinechart.css +1 -1
  4. package/dist/src/core/chart.d.ts +201 -4
  5. package/dist/src/core/draw/pixelAlign.d.ts +7 -7
  6. package/dist/src/core/indicators/indicatorDefinitionRegistry.d.ts +30 -0
  7. package/dist/src/core/indicators/indicatorMetadata.d.ts +81 -0
  8. package/dist/src/core/indicators/indicatorRegistry.d.ts +57 -0
  9. package/dist/src/core/indicators/rsiState.d.ts +4 -0
  10. package/dist/src/core/indicators/scheduler.d.ts +27 -2
  11. package/dist/src/core/renderers/Indicator/cci.d.ts +2 -1
  12. package/dist/src/core/renderers/Indicator/ene.d.ts +0 -8
  13. package/dist/src/core/renderers/Indicator/fastk.d.ts +2 -1
  14. package/dist/src/core/renderers/Indicator/kst.d.ts +2 -1
  15. package/dist/src/core/renderers/Indicator/macd.d.ts +2 -1
  16. package/dist/src/core/renderers/Indicator/mom.d.ts +2 -1
  17. package/dist/src/core/renderers/Indicator/rsi.d.ts +3 -2
  18. package/dist/src/core/renderers/Indicator/scale/indicator_scale.d.ts +4 -1
  19. package/dist/src/core/renderers/Indicator/stoch.d.ts +2 -1
  20. package/dist/src/core/renderers/Indicator/wmsr.d.ts +2 -1
  21. package/dist/src/core/renderers/candle.d.ts +2 -1
  22. package/dist/src/core/theme/colors.d.ts +207 -228
  23. package/dist/src/plugin/PluginHost.d.ts +3 -0
  24. package/dist/src/plugin/types.d.ts +6 -0
  25. package/dist/src/utils/kLineDraw/MA.d.ts +5 -10
  26. package/dist/src/utils/kLineDraw/axis.d.ts +7 -7
  27. package/dist/src/utils/kLineDraw/grid.d.ts +2 -2
  28. package/dist/src/utils/kLineDraw/kLine.d.ts +1 -1
  29. package/dist/src/utils/kline/format.d.ts +4 -7
  30. package/package.json +111 -103
@@ -2,6 +2,7 @@ import { PluginHost } from '../../plugin';
2
2
  import { KLineData } from '../../types/price';
3
3
  import { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig, ATRSchedulerConfig, WMASchedulerConfig, DEMASchedulerConfig, TEMASchedulerConfig, HMASchedulerConfig, KAMASchedulerConfig, SARSchedulerConfig, SuperTrendSchedulerConfig, KeltnerSchedulerConfig, DonchianSchedulerConfig, IchimokuSchedulerConfig, ROCSchedulerConfig, TRIXSchedulerConfig, HVSchedulerConfig, ParkinsonSchedulerConfig, ChaikinVolSchedulerConfig, VMASchedulerConfig, OBVSchedulerConfig, PVTSchedulerConfig, VWAPSchedulerConfig, CMFSchedulerConfig, MFISchedulerConfig, PivotSchedulerConfig, FibSchedulerConfig, StructureSchedulerConfig, ZonesSchedulerConfig, VolumeProfileSchedulerConfig } from './workerProtocol';
4
4
  import { MAFlags } from './calculators';
5
+ import { IndicatorMetadata } from './indicatorMetadata';
5
6
  /**
6
7
  * 可见范围
7
8
  */
@@ -9,7 +10,7 @@ interface VisibleRange {
9
10
  start: number;
10
11
  end: number;
11
12
  }
12
- export type { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig, ATRSchedulerConfig, WMASchedulerConfig, DEMASchedulerConfig, TEMASchedulerConfig, HMASchedulerConfig, KAMASchedulerConfig, SARSchedulerConfig, SuperTrendSchedulerConfig, KeltnerSchedulerConfig, DonchianSchedulerConfig, IchimokuSchedulerConfig, ROCSchedulerConfig, TRIXSchedulerConfig, HVSchedulerConfig, ParkinsonSchedulerConfig, ChaikinVolSchedulerConfig, VMASchedulerConfig, OBVSchedulerConfig, PVTSchedulerConfig, VWAPSchedulerConfig, CMFSchedulerConfig, MFISchedulerConfig, PivotSchedulerConfig, FibSchedulerConfig, StructureSchedulerConfig, ZonesSchedulerConfig, VolumeProfileSchedulerConfig, };
13
+ export type { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig, ATRSchedulerConfig, WMASchedulerConfig, DEMASchedulerConfig, TEMASchedulerConfig, HMASchedulerConfig, KAMASchedulerConfig, SARSchedulerConfig, SuperTrendSchedulerConfig, KeltnerSchedulerConfig, DonchianSchedulerConfig, IchimokuSchedulerConfig, ROCSchedulerConfig, TRIXSchedulerConfig, HVSchedulerConfig, ParkinsonSchedulerConfig, ChaikinVolSchedulerConfig, VMASchedulerConfig, OBVSchedulerConfig, PVTSchedulerConfig, VWAPSchedulerConfig, CMFSchedulerConfig, MFISchedulerConfig, PivotSchedulerConfig, FibSchedulerConfig, StructureSchedulerConfig, ZonesSchedulerConfig, VolumeProfileSchedulerConfig, } from './workerProtocol';
13
14
  /**
14
15
  * IndicatorScheduler - 主线程 facade
15
16
  */
@@ -32,7 +33,24 @@ export declare class IndicatorScheduler {
32
33
  private invalidateCallback;
33
34
  /** 从 Chart 获取活跃副图 paneId 列表的回调 */
34
35
  private getActiveSubPaneIds;
36
+ private registry;
35
37
  constructor();
38
+ /**
39
+ * 注册新指标(支持动态扩展)
40
+ */
41
+ registerIndicator<T>(meta: IndicatorMetadata<T>): void;
42
+ /**
43
+ * 注销指标
44
+ */
45
+ unregisterIndicator(name: string): boolean;
46
+ /**
47
+ * 获取指标元数据(供渲染器查询)
48
+ */
49
+ getIndicatorMetadata(name: string): IndicatorMetadata | undefined;
50
+ /**
51
+ * 获取所有已注册指标
52
+ */
53
+ getAllIndicators(): readonly IndicatorMetadata[];
36
54
  /**
37
55
  * 设置 PluginHost
38
56
  */
@@ -61,10 +79,17 @@ export declare class IndicatorScheduler {
61
79
  private terminateWorker;
62
80
  private handleWorkerMessage;
63
81
  private handleSeriesResult;
82
+ /**
83
+ * 检查 state 中的 visibleMin/visibleMax 是否为 Infinity,如果是则输出 warning
84
+ */
85
+ private checkVisibleExtremes;
86
+ /** 遍历注册表中的所有指标,通过 applyResult 回调写入 StateStore */
64
87
  private applyResults;
88
+ /** 仅副图:重算可见范围极值并回调 applyResult(视口变更时同步更新,不走 Worker) */
65
89
  private updateVisibleStatesOnly;
90
+ /** 遍历注册表,标记当前可见副图,仅这些指标参与计算 */
66
91
  private buildActiveSubIndicatorMask;
67
- /** 仅保留活跃副图的配置,后端只算这些 */
92
+ /** 遍历注册表,禁用非活跃副图指标的 show* 字段,后端只算活跃指标 */
68
93
  private buildActiveConfig;
69
94
  /**
70
95
  * 数据变更时调用
@@ -1,4 +1,5 @@
1
1
  import { RendererPluginWithHost, PluginHost } from '../../../plugin';
2
+ import { ChartTheme } from '../../theme/colors';
2
3
  export interface CCIRendererOptions {
3
4
  /** 目标 pane ID(默认 'sub') */
4
5
  paneId?: string;
@@ -10,7 +11,7 @@ export declare function createCCIRendererPlugin(options?: CCIRendererOptions): R
10
11
  /**
11
12
  * 获取 CCI 标题信息(供 paneTitle 使用)
12
13
  */
13
- export declare function getCCITitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string): {
14
+ export declare function getCCITitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string, theme?: ChartTheme): {
14
15
  name: string;
15
16
  params: number[];
16
17
  values: Array<{
@@ -1,10 +1,2 @@
1
1
  import { RendererPluginWithHost } from '../../../plugin';
2
- /** 创建 ENE(轨道线)渲染器插件(无状态版本)
3
- *
4
- * 设计原则:
5
- * 1. 不持有任何计算缓存或配置状态
6
- * 2. 所有数据从 StateStore 读取(通过 ENE_STATE_KEY)
7
- * 3. 配置变更通过外部 IndicatorScheduler 处理
8
- * 4. 纯绘制函数,无副作用
9
- */
10
2
  export declare function createENERendererPlugin(): RendererPluginWithHost;
@@ -1,4 +1,5 @@
1
1
  import { RendererPluginWithHost, PluginHost } from '../../../plugin';
2
+ import { ChartTheme } from '../../theme/colors';
2
3
  export interface FASTKRendererOptions {
3
4
  /** 目标 pane ID(默认 'sub') */
4
5
  paneId?: string;
@@ -10,7 +11,7 @@ export declare function createFASTKRendererPlugin(options?: FASTKRendererOptions
10
11
  /**
11
12
  * 获取 FASTK 标题信息(供 paneTitle 使用)
12
13
  */
13
- export declare function getFASTKTitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string): {
14
+ export declare function getFASTKTitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string, theme?: ChartTheme): {
14
15
  name: string;
15
16
  params: number[];
16
17
  values: Array<{
@@ -1,4 +1,5 @@
1
1
  import { RendererPluginWithHost, PluginHost } from '../../../plugin';
2
+ import { ChartTheme } from '../../theme/colors';
2
3
  export interface KSTRendererOptions {
3
4
  /** 目标 pane ID(默认 'sub') */
4
5
  paneId?: string;
@@ -10,7 +11,7 @@ export declare function createKSTRendererPlugin(options?: KSTRendererOptions): R
10
11
  /**
11
12
  * 获取 KST 标题信息(供 paneTitle 使用)
12
13
  */
13
- export declare function getKSTTitleInfo(index: number, roc1: number, roc2: number, roc3: number, roc4: number, signalPeriod: number, pluginHost: PluginHost, paneId?: string): {
14
+ export declare function getKSTTitleInfo(index: number, roc1: number, roc2: number, roc3: number, roc4: number, signalPeriod: number, pluginHost: PluginHost, paneId?: string, theme?: ChartTheme): {
14
15
  name: string;
15
16
  params: number[];
16
17
  values: Array<{
@@ -1,5 +1,6 @@
1
1
  import { RendererPluginWithHost, PluginHost } from '../../../plugin';
2
2
  import { KLineData } from '../../../types/price';
3
+ import { ChartTheme } from '../../theme/colors';
3
4
  export interface MACDConfig {
4
5
  /** 快线周期(默认 12) */
5
6
  fastPeriod?: number;
@@ -38,7 +39,7 @@ export declare function calcMACDAtIndex(data: KLineData[], index: number, fastPe
38
39
  * 获取 MACD 标题信息(供 paneTitle 使用)
39
40
  * 从 pluginHost 获取已计算好的数据,避免重复计算
40
41
  */
41
- export declare function getMACDTitleInfo(index: number, fastPeriod: number, slowPeriod: number, signalPeriod: number, pluginHost: PluginHost, paneId?: string): {
42
+ export declare function getMACDTitleInfo(index: number, fastPeriod: number, slowPeriod: number, signalPeriod: number, pluginHost: PluginHost, paneId?: string, theme?: ChartTheme): {
42
43
  name: string;
43
44
  params: number[];
44
45
  values: Array<{
@@ -1,4 +1,5 @@
1
1
  import { RendererPluginWithHost, PluginHost } from '../../../plugin';
2
+ import { ChartTheme } from '../../theme/colors';
2
3
  export interface MOMRendererOptions {
3
4
  /** 目标 pane ID(默认 'sub') */
4
5
  paneId?: string;
@@ -10,7 +11,7 @@ export declare function createMOMRendererPlugin(options?: MOMRendererOptions): R
10
11
  /**
11
12
  * 获取 MOM 标题信息(供 paneTitle 使用)
12
13
  */
13
- export declare function getMOMTitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string): {
14
+ export declare function getMOMTitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string, theme?: ChartTheme): {
14
15
  name: string;
15
16
  params: number[];
16
17
  values: Array<{
@@ -1,4 +1,5 @@
1
1
  import { RendererPluginWithHost, PluginHost } from '../../../plugin';
2
+ import { ThemeColors, ChartTheme } from '../../theme/colors';
2
3
  type LinePoint = {
3
4
  x: number;
4
5
  y: number;
@@ -19,8 +20,8 @@ export declare function drawRSILinesWithCanvas2D(ctx: CanvasRenderingContext2D,
19
20
  showRSI1: boolean;
20
21
  showRSI2: boolean;
21
22
  showRSI3: boolean;
22
- }): void;
23
- export declare function getRSITitleInfo(index: number, period1: number, period2: number, period3: number, pluginHost: PluginHost, paneId?: string): {
23
+ }, colors: ThemeColors): void;
24
+ export declare function getRSITitleInfo(index: number, period1: number, period2: number, period3: number, pluginHost: PluginHost, paneId?: string, theme?: ChartTheme): {
24
25
  name: string;
25
26
  params: number[];
26
27
  values: Array<{
@@ -1,4 +1,5 @@
1
1
  import { RendererPluginWithHost } from '../../../../plugin';
2
+ import { ThemeColors } from '../../../theme/colors';
2
3
  import { ScaleType } from '../../../utils/tickPosition';
3
4
  export interface IndicatorScaleRendererOptions {
4
5
  axisWidth: number;
@@ -31,5 +32,7 @@ export interface DrawScaleTicksOptions {
31
32
  scaleType?: ScaleType;
32
33
  formatLabel?: (value: number) => string;
33
34
  }
34
- export declare function drawScaleTicks(options: DrawScaleTicksOptions): void;
35
+ export declare function drawScaleTicks(options: DrawScaleTicksOptions & {
36
+ colors: ThemeColors;
37
+ }): void;
35
38
  export declare function createIndicatorScaleRendererPlugin(options: IndicatorScaleRendererOptions): RendererPluginWithHost;
@@ -1,4 +1,5 @@
1
1
  import { RendererPluginWithHost, PluginHost } from '../../../plugin';
2
+ import { ChartTheme } from '../../theme/colors';
2
3
  export interface STOCHRendererOptions {
3
4
  /** 目标 pane ID(默认 'sub') */
4
5
  paneId?: string;
@@ -10,7 +11,7 @@ export declare function createSTOCHRendererPlugin(options?: STOCHRendererOptions
10
11
  /**
11
12
  * 获取 STOCH 标题信息(供 paneTitle 使用)
12
13
  */
13
- export declare function getSTOCHTitleInfo(index: number, n: number, m: number, pluginHost: PluginHost, paneId?: string): {
14
+ export declare function getSTOCHTitleInfo(index: number, n: number, m: number, pluginHost: PluginHost, paneId?: string, theme?: ChartTheme): {
14
15
  name: string;
15
16
  params: number[];
16
17
  values: Array<{
@@ -1,4 +1,5 @@
1
1
  import { RendererPluginWithHost, PluginHost } from '../../../plugin';
2
+ import { ChartTheme } from '../../theme/colors';
2
3
  export interface WMSRRendererOptions {
3
4
  /** 目标 pane ID(默认 'sub') */
4
5
  paneId?: string;
@@ -10,7 +11,7 @@ export declare function createWMSRRendererPlugin(options?: WMSRRendererOptions):
10
11
  /**
11
12
  * 获取 WMSR 标题信息(供 paneTitle 使用)
12
13
  */
13
- export declare function getWMSRTitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string): {
14
+ export declare function getWMSRTitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string, theme?: ChartTheme): {
14
15
  name: string;
15
16
  params: number[];
16
17
  values: Array<{
@@ -1,4 +1,5 @@
1
1
  import { RendererPlugin } from '../../plugin';
2
+ import { VolumePriceColors } from '../theme/colors';
2
3
  import { VolumePriceRelation } from '../../types/volumePrice';
3
4
  import { MarkerManager } from '../marker/registry';
4
5
  /**
@@ -17,4 +18,4 @@ export declare function createCandleRenderer(): RendererPlugin;
17
18
  * @param gap - 三角形与K线的间距,默认为4
18
19
  * @param dpr - 设备像素比
19
20
  */
20
- export declare function drawVolumePriceMarker(ctx: CanvasRenderingContext2D, x: number, y: number, relation: VolumePriceRelation, kIndex: number, kWidth: number, gap: number | undefined, markerManager: MarkerManager, dpr: number): void;
21
+ export declare function drawVolumePriceMarker(ctx: CanvasRenderingContext2D, x: number, y: number, relation: VolumePriceRelation, kIndex: number, kWidth: number, gap: number | undefined, markerManager: MarkerManager, dpr: number, volumePriceColors: VolumePriceColors): void;