@tradecanvas/core 0.9.0 → 1.0.0
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/dist/axis/PriceAxis.d.ts.map +1 -1
- package/dist/axis/TimeAxis.d.ts +3 -0
- package/dist/axis/TimeAxis.d.ts.map +1 -1
- package/dist/charts/AreaRenderer.d.ts.map +1 -1
- package/dist/charts/DepthHeatmapBuffer.d.ts +25 -0
- package/dist/charts/DepthHeatmapBuffer.d.ts.map +1 -0
- package/dist/charts/DepthHeatmapRenderer.d.ts +24 -0
- package/dist/charts/DepthHeatmapRenderer.d.ts.map +1 -0
- package/dist/charts/LineRenderer.d.ts.map +1 -1
- package/dist/charts/MarketProfileRenderer.d.ts +53 -0
- package/dist/charts/MarketProfileRenderer.d.ts.map +1 -0
- package/dist/charts/PeriodLevelsRenderer.d.ts +17 -0
- package/dist/charts/PeriodLevelsRenderer.d.ts.map +1 -0
- package/dist/charts/PivotMarkersRenderer.d.ts +21 -0
- package/dist/charts/PivotMarkersRenderer.d.ts.map +1 -0
- package/dist/charts/downsample.d.ts +15 -0
- package/dist/charts/downsample.d.ts.map +1 -0
- package/dist/charts/index.d.ts +14 -0
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/lttb.bench.d.ts +2 -0
- package/dist/charts/lttb.bench.d.ts.map +1 -0
- package/dist/charts/marketProfile.d.ts +69 -0
- package/dist/charts/marketProfile.d.ts.map +1 -0
- package/dist/charts/periodLevels.d.ts +15 -0
- package/dist/charts/periodLevels.d.ts.map +1 -0
- package/dist/charts/pivots.d.ts +26 -0
- package/dist/charts/pivots.d.ts.map +1 -0
- package/dist/drawings/DrawingManager.d.ts +21 -0
- package/dist/drawings/DrawingManager.d.ts.map +1 -1
- package/dist/drawings/autoFib.d.ts +10 -0
- package/dist/drawings/autoFib.d.ts.map +1 -0
- package/dist/drawings/index.d.ts +1 -0
- package/dist/drawings/index.d.ts.map +1 -1
- package/dist/engine/RenderEngine.d.ts +7 -0
- package/dist/engine/RenderEngine.d.ts.map +1 -1
- package/dist/features/AlertManager.d.ts +26 -4
- package/dist/features/AlertManager.d.ts.map +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4333 -727
- package/dist/index.js.map +1 -1
- package/dist/indicators/IndicatorEngine.d.ts +4 -0
- package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
- package/dist/indicators/index.d.ts +33 -0
- package/dist/indicators/index.d.ts.map +1 -1
- package/dist/indicators/overlay/Alligator.d.ts +28 -0
- package/dist/indicators/overlay/Alligator.d.ts.map +1 -0
- package/dist/indicators/overlay/ChandelierExit.d.ts +23 -0
- package/dist/indicators/overlay/ChandelierExit.d.ts.map +1 -0
- package/dist/indicators/overlay/MTFMovingAverage.d.ts +23 -0
- package/dist/indicators/overlay/MTFMovingAverage.d.ts.map +1 -0
- package/dist/indicators/overlay/SessionVWAP.d.ts +26 -0
- package/dist/indicators/overlay/SessionVWAP.d.ts.map +1 -0
- package/dist/indicators/panel/AcceleratorOscillator.d.ts +24 -0
- package/dist/indicators/panel/AcceleratorOscillator.d.ts.map +1 -0
- package/dist/indicators/panel/BalanceOfPower.d.ts +20 -0
- package/dist/indicators/panel/BalanceOfPower.d.ts.map +1 -0
- package/dist/indicators/panel/ChaikinVolatility.d.ts +23 -0
- package/dist/indicators/panel/ChaikinVolatility.d.ts.map +1 -0
- package/dist/indicators/panel/ChandeMomentum.d.ts +22 -0
- package/dist/indicators/panel/ChandeMomentum.d.ts.map +1 -0
- package/dist/indicators/panel/ChoppinessIndex.d.ts +22 -0
- package/dist/indicators/panel/ChoppinessIndex.d.ts.map +1 -0
- package/dist/indicators/panel/ConnorsRSI.d.ts +25 -0
- package/dist/indicators/panel/ConnorsRSI.d.ts.map +1 -0
- package/dist/indicators/panel/Coppock.d.ts +24 -0
- package/dist/indicators/panel/Coppock.d.ts.map +1 -0
- package/dist/indicators/panel/DetrendedPriceOscillator.d.ts +21 -0
- package/dist/indicators/panel/DetrendedPriceOscillator.d.ts.map +1 -0
- package/dist/indicators/panel/DisparityIndex.d.ts +22 -0
- package/dist/indicators/panel/DisparityIndex.d.ts.map +1 -0
- package/dist/indicators/panel/EaseOfMovement.d.ts +25 -0
- package/dist/indicators/panel/EaseOfMovement.d.ts.map +1 -0
- package/dist/indicators/panel/ElderRay.d.ts +22 -0
- package/dist/indicators/panel/ElderRay.d.ts.map +1 -0
- package/dist/indicators/panel/FisherTransform.d.ts +21 -0
- package/dist/indicators/panel/FisherTransform.d.ts.map +1 -0
- package/dist/indicators/panel/ForceIndex.d.ts +21 -0
- package/dist/indicators/panel/ForceIndex.d.ts.map +1 -0
- package/dist/indicators/panel/KST.d.ts +29 -0
- package/dist/indicators/panel/KST.d.ts.map +1 -0
- package/dist/indicators/panel/Klinger.d.ts +26 -0
- package/dist/indicators/panel/Klinger.d.ts.map +1 -0
- package/dist/indicators/panel/MassIndex.d.ts +21 -0
- package/dist/indicators/panel/MassIndex.d.ts.map +1 -0
- package/dist/indicators/panel/PercentagePriceOscillator.d.ts +24 -0
- package/dist/indicators/panel/PercentagePriceOscillator.d.ts.map +1 -0
- package/dist/indicators/panel/PrettyGoodOscillator.d.ts +23 -0
- package/dist/indicators/panel/PrettyGoodOscillator.d.ts.map +1 -0
- package/dist/indicators/panel/PriceVolumeTrend.d.ts +20 -0
- package/dist/indicators/panel/PriceVolumeTrend.d.ts.map +1 -0
- package/dist/indicators/panel/Qstick.d.ts +23 -0
- package/dist/indicators/panel/Qstick.d.ts.map +1 -0
- package/dist/indicators/panel/RelativeMomentumIndex.d.ts +22 -0
- package/dist/indicators/panel/RelativeMomentumIndex.d.ts.map +1 -0
- package/dist/indicators/panel/RelativeVigor.d.ts +21 -0
- package/dist/indicators/panel/RelativeVigor.d.ts.map +1 -0
- package/dist/indicators/panel/SchaffTrendCycle.d.ts +23 -0
- package/dist/indicators/panel/SchaffTrendCycle.d.ts.map +1 -0
- package/dist/indicators/panel/StochasticRSI.d.ts +23 -0
- package/dist/indicators/panel/StochasticRSI.d.ts.map +1 -0
- package/dist/indicators/panel/TRIX.d.ts +22 -0
- package/dist/indicators/panel/TRIX.d.ts.map +1 -0
- package/dist/indicators/panel/UltimateOscillator.d.ts +25 -0
- package/dist/indicators/panel/UltimateOscillator.d.ts.map +1 -0
- package/dist/indicators/panel/VolumeDelta.d.ts +22 -0
- package/dist/indicators/panel/VolumeDelta.d.ts.map +1 -0
- package/dist/indicators/panel/Vortex.d.ts +21 -0
- package/dist/indicators/panel/Vortex.d.ts.map +1 -0
- package/dist/indicators/panel/WilliamsAD.d.ts +21 -0
- package/dist/indicators/panel/WilliamsAD.d.ts.map +1 -0
- package/dist/indicators/registry.d.ts.map +1 -1
- package/dist/interaction/AlertDragHandler.d.ts +21 -0
- package/dist/interaction/AlertDragHandler.d.ts.map +1 -0
- package/dist/interaction/CrosshairHandler.d.ts +3 -0
- package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
- package/dist/interaction/InteractionManager.d.ts +22 -0
- package/dist/interaction/InteractionManager.d.ts.map +1 -1
- package/dist/interaction/PaneResizeHandler.d.ts +36 -0
- package/dist/interaction/PaneResizeHandler.d.ts.map +1 -0
- package/dist/interaction/index.d.ts +2 -0
- package/dist/interaction/index.d.ts.map +1 -1
- package/dist/realtime/adapters/BybitAdapter.d.ts +29 -0
- package/dist/realtime/adapters/BybitAdapter.d.ts.map +1 -0
- package/dist/realtime/adapters/CoinbaseAdapter.d.ts +25 -0
- package/dist/realtime/adapters/CoinbaseAdapter.d.ts.map +1 -0
- package/dist/realtime/adapters/KrakenAdapter.d.ts +26 -0
- package/dist/realtime/adapters/KrakenAdapter.d.ts.map +1 -0
- package/dist/realtime/adapters/PollingAdapter.d.ts +50 -0
- package/dist/realtime/adapters/PollingAdapter.d.ts.map +1 -0
- package/dist/realtime/adapters/WebSocketAdapter.d.ts +79 -0
- package/dist/realtime/adapters/WebSocketAdapter.d.ts.map +1 -0
- package/dist/realtime/adapters/index.d.ts +10 -0
- package/dist/realtime/adapters/index.d.ts.map +1 -1
- package/dist/realtime/adapters/parseUtils.d.ts +5 -0
- package/dist/realtime/adapters/parseUtils.d.ts.map +1 -0
- package/dist/trading/BracketTool.d.ts +46 -0
- package/dist/trading/BracketTool.d.ts.map +1 -0
- package/dist/trading/OrderDraftTool.d.ts +37 -0
- package/dist/trading/OrderDraftTool.d.ts.map +1 -0
- package/dist/trading/PaperExecutionAdapter.d.ts +45 -0
- package/dist/trading/PaperExecutionAdapter.d.ts.map +1 -0
- package/dist/trading/TradingManager.d.ts +15 -1
- package/dist/trading/TradingManager.d.ts.map +1 -1
- package/dist/trading/index.d.ts +6 -0
- package/dist/trading/index.d.ts.map +1 -1
- package/dist/ui/SessionBreaks.d.ts +0 -5
- package/dist/ui/SessionBreaks.d.ts.map +1 -1
- package/dist/ui/SessionShading.d.ts +19 -0
- package/dist/ui/SessionShading.d.ts.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/sessionHours.d.ts +17 -0
- package/dist/ui/sessionHours.d.ts.map +1 -0
- package/dist/viewport/Viewport.d.ts +6 -1
- package/dist/viewport/Viewport.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Klinger Volume Oscillator (Stephen Klinger) — compares volume flowing in/out
|
|
5
|
+
* of an instrument to price movement to spot longer-term money-flow trends
|
|
6
|
+
* while staying sensitive to short-term reversals. KVO crossing its signal line
|
|
7
|
+
* (and the zero line) flags shifts. Zero-centered, auto-scaled.
|
|
8
|
+
*
|
|
9
|
+
* Volume Force = volume · |2·(dm/cm − 1)| · trend · 100, where dm = high − low,
|
|
10
|
+
* cm accumulates dm while the trend persists; KVO = EMA(VF, fast) − EMA(VF, slow).
|
|
11
|
+
*/
|
|
12
|
+
export declare class KlingerIndicator extends IndicatorBase {
|
|
13
|
+
descriptor: {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
placement: "panel";
|
|
17
|
+
defaultConfig: {
|
|
18
|
+
fast: number;
|
|
19
|
+
slow: number;
|
|
20
|
+
signal: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
24
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=Klinger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Klinger.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/Klinger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,UAAU;;;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAgDrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAgD7H"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Mass Index (Donald Dorsey) — flags reversals by watching the high-low range
|
|
5
|
+
* widen and contract. A "reversal bulge" forms when the index rises above 27
|
|
6
|
+
* then falls back below 26.5. MI = Σ(EMA(range) / EMA(EMA(range))) over 25 bars.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MassIndexIndicator extends IndicatorBase {
|
|
9
|
+
descriptor: {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
placement: "panel";
|
|
13
|
+
defaultConfig: {
|
|
14
|
+
ema: number;
|
|
15
|
+
sum: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
19
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=MassIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MassIndex.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/MassIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,UAAU;;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAgCrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CA+C7H"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Percentage Price Oscillator (PPO) — MACD expressed in percentage terms, so it
|
|
5
|
+
* is comparable across instruments and across time regardless of price level.
|
|
6
|
+
*
|
|
7
|
+
* PPO = (EMA(fast) − EMA(slow)) / EMA(slow) · 100
|
|
8
|
+
* Signal = EMA(PPO, signal); Histogram = PPO − Signal.
|
|
9
|
+
*/
|
|
10
|
+
export declare class PercentagePriceOscillatorIndicator extends IndicatorBase {
|
|
11
|
+
descriptor: {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
placement: "panel";
|
|
15
|
+
defaultConfig: {
|
|
16
|
+
fast: number;
|
|
17
|
+
slow: number;
|
|
18
|
+
signal: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
22
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=PercentagePriceOscillator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PercentagePriceOscillator.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/PercentagePriceOscillator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;GAMG;AACH,qBAAa,kCAAmC,SAAQ,aAAa;IACnE,UAAU;;;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAkCrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CA2D7H"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Pretty Good Oscillator (Mark Johnson) — the distance of the close from its
|
|
5
|
+
* SMA, measured in units of Average True Range. Because it is ATR-normalised,
|
|
6
|
+
* the ±3 reference levels mean the same thing across instruments: breakouts
|
|
7
|
+
* trade above +3 / below −3, while reversions cross back through zero.
|
|
8
|
+
*
|
|
9
|
+
* PGO = (close − SMA(close, n)) / ATR(n)
|
|
10
|
+
*/
|
|
11
|
+
export declare class PrettyGoodOscillatorIndicator extends IndicatorBase {
|
|
12
|
+
descriptor: {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
placement: "panel";
|
|
16
|
+
defaultConfig: {
|
|
17
|
+
period: number;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
21
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=PrettyGoodOscillator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrettyGoodOscillator.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/PrettyGoodOscillator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;;GAOG;AACH,qBAAa,6BAA8B,SAAQ,aAAa;IAC9D,UAAU;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAoCrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAwC7H"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Price Volume Trend (PVT) — a cumulative volume line like OBV, but each bar's
|
|
5
|
+
* volume is scaled by its percent price change, so big moves carry more weight.
|
|
6
|
+
* Rising PVT confirms an uptrend; divergence from price warns of weakening.
|
|
7
|
+
*
|
|
8
|
+
* PVT[i] = PVT[i−1] + volume[i] · (close[i] − close[i−1]) / close[i−1].
|
|
9
|
+
*/
|
|
10
|
+
export declare class PriceVolumeTrendIndicator extends IndicatorBase {
|
|
11
|
+
descriptor: {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
placement: "panel";
|
|
15
|
+
defaultConfig: {};
|
|
16
|
+
};
|
|
17
|
+
calculate(data: DataSeries, _config: IndicatorConfig): IndicatorOutput;
|
|
18
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=PriceVolumeTrend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PriceVolumeTrend.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/PriceVolumeTrend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,aAAa;IAC1D,UAAU;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,GAAG,eAAe;IAoBtE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAG7H"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Qstick (Tushar Chande) — a moving average of the (close − open) body,
|
|
5
|
+
* quantifying candlestick sentiment. Sustained positive readings mean buyers
|
|
6
|
+
* keep closing bars above their open (and vice-versa); zero crossings mark
|
|
7
|
+
* sentiment flips. Zero-centered.
|
|
8
|
+
*
|
|
9
|
+
* Qstick = SMA(close − open, n)
|
|
10
|
+
*/
|
|
11
|
+
export declare class QstickIndicator extends IndicatorBase {
|
|
12
|
+
descriptor: {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
placement: "panel";
|
|
16
|
+
defaultConfig: {
|
|
17
|
+
period: number;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
21
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Qstick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Qstick.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/Qstick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;;GAOG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,UAAU;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAqBrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAG7H"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Relative Momentum Index (Roger Altman) — a generalisation of RSI that
|
|
5
|
+
* compares the close to the close `momentum` bars ago instead of one bar ago,
|
|
6
|
+
* then Wilder-smooths the up/down moves over `period`. Larger momentum lookback
|
|
7
|
+
* yields a smoother, less twitchy 0–100 oscillator. 30 / 70 reference bands.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RelativeMomentumIndexIndicator extends IndicatorBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
placement: "panel";
|
|
14
|
+
defaultConfig: {
|
|
15
|
+
period: number;
|
|
16
|
+
momentum: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
20
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=RelativeMomentumIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelativeMomentumIndex.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/RelativeMomentumIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;GAKG;AACH,qBAAa,8BAA+B,SAAQ,aAAa;IAC/D,UAAU;;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IA0CrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAkC7H"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Relative Vigor Index (John Ehlers) — gauges trend conviction on the premise
|
|
5
|
+
* that in an uptrend price closes higher than it opens (and vice-versa),
|
|
6
|
+
* normalised by the bar range and symmetrically (1-2-2-1) smoothed. RVI
|
|
7
|
+
* crossing its signal line flags momentum shifts. Oscillates around zero.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RelativeVigorIndicator extends IndicatorBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
placement: "panel";
|
|
14
|
+
defaultConfig: {
|
|
15
|
+
period: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
19
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=RelativeVigor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelativeVigor.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/RelativeVigor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,UAAU;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAiDrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAgD7H"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Schaff Trend Cycle (Doug Schaff) — runs a MACD line through two passes of
|
|
5
|
+
* stochastic smoothing to produce a fast, cyclic 0–100 trend oscillator that
|
|
6
|
+
* turns earlier than MACD. Above 75 and turning down = overbought; below 25 and
|
|
7
|
+
* turning up = oversold. Reference lines at 25 / 75.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SchaffTrendCycleIndicator extends IndicatorBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
placement: "panel";
|
|
14
|
+
defaultConfig: {
|
|
15
|
+
fast: number;
|
|
16
|
+
slow: number;
|
|
17
|
+
cycle: number;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
21
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=SchaffTrendCycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchaffTrendCycle.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/SchaffTrendCycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,aAAa;IAC1D,UAAU;;;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAsCrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAkC7H"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Stochastic RSI (Chande & Kroll) — applies the stochastic oscillator to RSI
|
|
5
|
+
* rather than price, producing a far more sensitive 0–100 overbought/oversold
|
|
6
|
+
* reading. %K and %D lines; reference bands at 20 / 80.
|
|
7
|
+
*/
|
|
8
|
+
export declare class StochasticRSIIndicator extends IndicatorBase {
|
|
9
|
+
descriptor: {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
placement: "panel";
|
|
13
|
+
defaultConfig: {
|
|
14
|
+
rsiPeriod: number;
|
|
15
|
+
stochPeriod: number;
|
|
16
|
+
k: number;
|
|
17
|
+
d: number;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
21
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=StochasticRSI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StochasticRSI.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/StochasticRSI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,UAAU;;;;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAwCrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAuC7H"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* TRIX (Jack Hutson) — the percent rate of change of a triple-smoothed EMA of
|
|
5
|
+
* close. Triple smoothing filters out cycles shorter than the period, leaving a
|
|
6
|
+
* clean momentum line that oscillates around zero; a signal EMA of TRIX gives
|
|
7
|
+
* crossover entries.
|
|
8
|
+
*/
|
|
9
|
+
export declare class TRIXIndicator extends IndicatorBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
placement: "panel";
|
|
14
|
+
defaultConfig: {
|
|
15
|
+
period: number;
|
|
16
|
+
signal: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
20
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=TRIX.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TRIX.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/TRIX.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,UAAU;;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IA6BrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAgD7H"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Ultimate Oscillator (Larry Williams) — a 0–100 momentum oscillator that
|
|
5
|
+
* blends three timeframes of buying pressure to reduce the false divergences
|
|
6
|
+
* single-period oscillators produce. Weighted 4:2:1 toward the fastest period.
|
|
7
|
+
* Reference lines at 30 / 70.
|
|
8
|
+
*
|
|
9
|
+
* BP = close − min(low, prevClose); TR = max(high, prevClose) − min(low, prevClose).
|
|
10
|
+
*/
|
|
11
|
+
export declare class UltimateOscillatorIndicator extends IndicatorBase {
|
|
12
|
+
descriptor: {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
placement: "panel";
|
|
16
|
+
defaultConfig: {
|
|
17
|
+
fast: number;
|
|
18
|
+
mid: number;
|
|
19
|
+
slow: number;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
23
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=UltimateOscillator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UltimateOscillator.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/UltimateOscillator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;;GAOG;AACH,qBAAa,2BAA4B,SAAQ,aAAa;IAC5D,UAAU;;;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAoCrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAkC7H"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Directional volume ("volume delta") panel. Approximates buy/sell pressure
|
|
5
|
+
* from OHLCV: a bar that closes at or above its open contributes positive
|
|
6
|
+
* volume, otherwise negative. `mode: 0` shows the per-bar delta histogram;
|
|
7
|
+
* `mode: 1` shows the cumulative delta line. (A true tick-delta needs per-trade
|
|
8
|
+
* bid/ask data, which an OHLCV series doesn't carry.)
|
|
9
|
+
*/
|
|
10
|
+
export declare class VolumeDeltaIndicator extends IndicatorBase {
|
|
11
|
+
descriptor: {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
placement: "panel";
|
|
15
|
+
defaultConfig: {
|
|
16
|
+
mode: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
20
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=VolumeDelta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VolumeDelta.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/VolumeDelta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EAEf,sBAAsB,EACtB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,UAAU;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAqBrE,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,sBAAsB,GAC5B,IAAI;CA8BR"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Vortex Indicator (VI+ / VI−). Captures trend direction and strength from the
|
|
5
|
+
* relationship between consecutive highs/lows normalised by true range. VI+
|
|
6
|
+
* crossing above VI− signals an up-trend (and vice-versa); the wider the gap,
|
|
7
|
+
* the stronger the trend.
|
|
8
|
+
*/
|
|
9
|
+
export declare class VortexIndicator extends IndicatorBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
placement: "panel";
|
|
14
|
+
defaultConfig: {
|
|
15
|
+
period: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
19
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Vortex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vortex.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/Vortex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,UAAU;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAwCrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CA0D7H"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Williams Accumulation/Distribution (Larry Williams) — a cumulative line that
|
|
5
|
+
* adds the move from the "true range low" on up-closes and subtracts the move
|
|
6
|
+
* from the "true range high" on down-closes. Divergence between WAD and price
|
|
7
|
+
* signals accumulation or distribution ahead of a turn.
|
|
8
|
+
*/
|
|
9
|
+
export declare class WilliamsADIndicator extends IndicatorBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
placement: "panel";
|
|
14
|
+
defaultConfig: {};
|
|
15
|
+
};
|
|
16
|
+
calculate(data: DataSeries, _config: IndicatorConfig): IndicatorOutput;
|
|
17
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
18
|
+
}
|
|
19
|
+
/** Shared: a single line auto-scaled to the visible min/max (for cumulative series). */
|
|
20
|
+
export declare function drawCumulativeLine(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle, toX: (i: number, vp: ViewportState) => number): void;
|
|
21
|
+
//# sourceMappingURL=WilliamsAD.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WilliamsAD.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/WilliamsAD.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,UAAU;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,GAAG,eAAe;IAqBtE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAG7H;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,sBAAsB,EAC7B,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,KAAK,MAAM,GAC5C,IAAI,CAgCN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/indicators/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/indicators/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAsE5D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAqEvE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { AlertManager } from '../features/AlertManager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Drags a price-alert line up and down the chart. Hit-tests against the
|
|
5
|
+
* `AlertManager`'s lines on mousedown; while active, maps the pointer's y back
|
|
6
|
+
* to a price (scale-aware, so log / percentage modes work) and moves the alert.
|
|
7
|
+
*/
|
|
8
|
+
export declare class AlertDragHandler {
|
|
9
|
+
private alerts;
|
|
10
|
+
private viewportGetter;
|
|
11
|
+
private draggingId;
|
|
12
|
+
constructor(alerts: AlertManager, viewportGetter: () => ViewportState | null);
|
|
13
|
+
/** True when the pointer is hovering an alert line (for cursor feedback). */
|
|
14
|
+
isOverAlert(pos: Point): boolean;
|
|
15
|
+
/** Begin a drag if an alert line is under the pointer. Returns true if consumed. */
|
|
16
|
+
tryBegin(pos: Point): boolean;
|
|
17
|
+
move(pos: Point): void;
|
|
18
|
+
end(): void;
|
|
19
|
+
isActive(): boolean;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=AlertDragHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertDragHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/AlertDragHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;;GAIG;AACH,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAJxB,OAAO,CAAC,UAAU,CAAuB;gBAG/B,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,aAAa,GAAG,IAAI;IAGpD,6EAA6E;IAC7E,WAAW,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO;IAMhC,oFAAoF;IACpF,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO;IAS7B,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAOtB,GAAG,IAAI,IAAI;IAIX,QAAQ,IAAI,OAAO;CAGpB"}
|
|
@@ -5,6 +5,9 @@ export declare class CrosshairHandler {
|
|
|
5
5
|
private position;
|
|
6
6
|
private callback;
|
|
7
7
|
private data;
|
|
8
|
+
private tzOffsetMinutes;
|
|
9
|
+
/** null = browser-local timezone; a number = fixed UTC offset in minutes. */
|
|
10
|
+
setTimezoneOffset(minutes: number | null): void;
|
|
8
11
|
private magnetMode;
|
|
9
12
|
private mode;
|
|
10
13
|
private pricePrecision;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrosshairHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/CrosshairHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIpF,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;AAEvF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,MAAM,CAAW;IAGzB,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,oBAAoB,CAAM;IAElC,WAAW,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI;IAIxC,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI/B,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKrC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKlC,OAAO,IAAI,aAAa;IAIxB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,WAAW,IAAI,KAAK,GAAG,IAAI;IAI3B,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAI/B,cAAc,IAAI,IAAI;IAQtB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAqDlF;;;;;;;OAOG;IACH,gBAAgB,CACd,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IA6CP,0DAA0D;IAC1D,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,aAAa;CAGtB"}
|
|
1
|
+
{"version":3,"file":"CrosshairHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/CrosshairHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIpF,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;AAEvF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,eAAe,CAAuB;IAE9C,6EAA6E;IAC7E,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAG/C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,MAAM,CAAW;IAGzB,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,oBAAoB,CAAM;IAElC,WAAW,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI;IAIxC,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI/B,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKrC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKlC,OAAO,IAAI,aAAa;IAIxB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,WAAW,IAAI,KAAK,GAAG,IAAI;IAI3B,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAI/B,cAAc,IAAI,IAAI;IAQtB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAqDlF;;;;;;;OAOG;IACH,gBAAgB,CACd,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IA6CP,0DAA0D;IAC1D,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -3,28 +3,41 @@ import { PanHandler } from './PanHandler.js';
|
|
|
3
3
|
import { ZoomHandler } from './ZoomHandler.js';
|
|
4
4
|
import { CrosshairHandler } from './CrosshairHandler.js';
|
|
5
5
|
import { AxisDragHandler } from './AxisDragHandler.js';
|
|
6
|
+
import { AlertDragHandler } from './AlertDragHandler.js';
|
|
6
7
|
import { DrawingManager } from '../drawings/DrawingManager.js';
|
|
7
8
|
import { TradingManager } from '../trading/TradingManager.js';
|
|
9
|
+
import { PaneResizeHandler } from './PaneResizeHandler.js';
|
|
8
10
|
export declare class InteractionManager {
|
|
9
11
|
private element;
|
|
10
12
|
private panHandler;
|
|
11
13
|
private zoomHandler;
|
|
12
14
|
private crosshairHandler;
|
|
13
15
|
private axisDragHandler;
|
|
16
|
+
private alertDragHandler;
|
|
14
17
|
private axisViewportGetter;
|
|
15
18
|
private onAxisDoubleClick;
|
|
16
19
|
private measureHandlers;
|
|
17
20
|
private measuring;
|
|
18
21
|
private onAltClick;
|
|
19
22
|
private onEscape;
|
|
23
|
+
private onConfirm;
|
|
24
|
+
private onClick;
|
|
25
|
+
private downPos;
|
|
26
|
+
private downMoved;
|
|
27
|
+
private pressForClick;
|
|
20
28
|
private drawingManager;
|
|
21
29
|
private tradingManager;
|
|
30
|
+
private paneResizeHandler;
|
|
22
31
|
private viewportGetter;
|
|
23
32
|
private onOverlayDirty;
|
|
24
33
|
private boundHandlers;
|
|
25
34
|
private lastTouchDist;
|
|
26
35
|
private lastTouchMid;
|
|
27
36
|
private touchActive;
|
|
37
|
+
private touchStartPos;
|
|
38
|
+
private longPressTimer;
|
|
39
|
+
private readonly longPressMs;
|
|
40
|
+
private readonly longPressMaxMove;
|
|
28
41
|
private cachedRect;
|
|
29
42
|
constructor(element: HTMLElement);
|
|
30
43
|
setOverlayDirtyCallback(cb: () => void): void;
|
|
@@ -48,6 +61,10 @@ export declare class InteractionManager {
|
|
|
48
61
|
setAltClickHandler(handler: (pos: Point) => void): void;
|
|
49
62
|
/** Wire an `Escape` keydown to the host — used to unpin tooltips, etc. */
|
|
50
63
|
setEscapeHandler(handler: () => void): void;
|
|
64
|
+
/** Wire an `Enter` keydown — used to confirm bracket placement. Return true if handled. */
|
|
65
|
+
setConfirmHandler(handler: () => boolean): void;
|
|
66
|
+
/** Wire a plain left-click on the chart area (press + release without drag). */
|
|
67
|
+
setClickHandler(handler: (pos: Point) => void): void;
|
|
51
68
|
setMeasureHandlers(handlers: {
|
|
52
69
|
begin: (pos: Point) => void;
|
|
53
70
|
move: (pos: Point) => void;
|
|
@@ -55,9 +72,14 @@ export declare class InteractionManager {
|
|
|
55
72
|
}): void;
|
|
56
73
|
setAxisDragHandler(handler: AxisDragHandler, viewportGetter: () => ViewportState, onDoubleClick?: (axis: 'price' | 'time') => void): void;
|
|
57
74
|
setDrawingManager(manager: DrawingManager, viewportGetter: () => ViewportState): void;
|
|
75
|
+
/** Enable dragging price-alert lines. Hit-tested after trading/drawing. */
|
|
76
|
+
setAlertDragHandler(handler: AlertDragHandler): void;
|
|
58
77
|
setTradingManager(manager: TradingManager, viewportGetter: () => ViewportState): void;
|
|
78
|
+
/** Enable dragging pane dividers to resize indicator panels. */
|
|
79
|
+
setPaneResizeHandler(handler: PaneResizeHandler): void;
|
|
59
80
|
attach(): void;
|
|
60
81
|
detach(): void;
|
|
82
|
+
private clearLongPress;
|
|
61
83
|
/** Force the cached bounding rect to be re-read on next access. */
|
|
62
84
|
invalidateRect(): void;
|
|
63
85
|
private getRect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionManager.d.ts","sourceRoot":"","sources":["../../src/interaction/InteractionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"InteractionManager.d.ts","sourceRoot":"","sources":["../../src/interaction/InteractionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Point, ResolvedLayout, PanelPosition } from '@tradecanvas/commons';
|
|
2
|
+
interface DividerHit {
|
|
3
|
+
panelId: string;
|
|
4
|
+
orientation: 'horizontal' | 'vertical';
|
|
5
|
+
position: PanelPosition;
|
|
6
|
+
size: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Drag a pane divider to resize the adjacent indicator panel. Pure geometry and
|
|
10
|
+
* state — the Chart supplies the current resolved layout and applies the new
|
|
11
|
+
* size. Hovering a divider yields a resize cursor.
|
|
12
|
+
*/
|
|
13
|
+
export declare class PaneResizeHandler {
|
|
14
|
+
private readonly tolerance;
|
|
15
|
+
private state;
|
|
16
|
+
private layoutGetter;
|
|
17
|
+
private onResize;
|
|
18
|
+
constructor(tolerance?: number);
|
|
19
|
+
configure(layoutGetter: () => ResolvedLayout, onResize: (panelId: string, size: number) => void): void;
|
|
20
|
+
/** The divider hit at `pos`, with its panel's position + current size, or null. Pure. */
|
|
21
|
+
hitTest(pos: Point, layout: ResolvedLayout): DividerHit | null;
|
|
22
|
+
/** The resize cursor for a divider under `pos`, or null. */
|
|
23
|
+
cursorAt(pos: Point): string | null;
|
|
24
|
+
/** Begin a resize if `pos` is on a divider. Returns true if the drag started. */
|
|
25
|
+
tryBegin(pos: Point): boolean;
|
|
26
|
+
move(pos: Point): void;
|
|
27
|
+
/** The new size for the active drag at `pos`, or null. Pure (clamping is the Chart's job). */
|
|
28
|
+
computeSize(pos: Point): {
|
|
29
|
+
panelId: string;
|
|
30
|
+
size: number;
|
|
31
|
+
} | null;
|
|
32
|
+
end(): void;
|
|
33
|
+
isActive(): boolean;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=PaneResizeHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaneResizeHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/PaneResizeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAQ,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASvF,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IACvC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAKhB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJtC,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,QAAQ,CAA0D;gBAE7C,SAAS,SAAI;IAE1C,SAAS,CACP,YAAY,EAAE,MAAM,cAAc,EAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAChD,IAAI;IAKP,yFAAyF;IACzF,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAiB9D,4DAA4D;IAC5D,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI;IAQnC,iFAAiF;IACjF,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO;IAc7B,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAKtB,8FAA8F;IAC9F,WAAW,CAAC,GAAG,EAAE,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAqBjE,GAAG,IAAI,IAAI;IAIX,QAAQ,IAAI,OAAO;CAGpB"}
|
|
@@ -2,6 +2,8 @@ export { InteractionManager } from './InteractionManager.js';
|
|
|
2
2
|
export { PanHandler } from './PanHandler.js';
|
|
3
3
|
export { ZoomHandler } from './ZoomHandler.js';
|
|
4
4
|
export { AxisDragHandler } from './AxisDragHandler.js';
|
|
5
|
+
export { AlertDragHandler } from './AlertDragHandler.js';
|
|
6
|
+
export { PaneResizeHandler } from './PaneResizeHandler.js';
|
|
5
7
|
export { CrosshairHandler } from './CrosshairHandler.js';
|
|
6
8
|
export type { CrosshairMode } from './CrosshairHandler.js';
|
|
7
9
|
export { KeyboardHandler } from './KeyboardHandler.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|