@tradecanvas/core 1.1.0 → 1.3.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/LICENSE +21 -21
- package/README.md +4 -6
- package/dist/axis/GridRenderer.d.ts.map +1 -1
- package/dist/axis/PriceAxis.d.ts +6 -0
- package/dist/axis/PriceAxis.d.ts.map +1 -1
- package/dist/axis/TimeAxis.d.ts.map +1 -1
- package/dist/drawings/DrawingManager.d.ts +39 -0
- package/dist/drawings/DrawingManager.d.ts.map +1 -1
- package/dist/drawings/tools/AnchoredVWAP.d.ts +7 -0
- package/dist/drawings/tools/AnchoredVWAP.d.ts.map +1 -1
- package/dist/drawings/tools/Circle.d.ts +14 -0
- package/dist/drawings/tools/Circle.d.ts.map +1 -0
- package/dist/drawings/tools/CrossLine.d.ts +13 -0
- package/dist/drawings/tools/CrossLine.d.ts.map +1 -0
- package/dist/drawings/tools/CyclicLines.d.ts +15 -0
- package/dist/drawings/tools/CyclicLines.d.ts.map +1 -0
- package/dist/drawings/tools/DateAndPriceRange.d.ts +17 -0
- package/dist/drawings/tools/DateAndPriceRange.d.ts.map +1 -0
- package/dist/drawings/tools/FibChannel.d.ts +19 -0
- package/dist/drawings/tools/FibChannel.d.ts.map +1 -0
- package/dist/drawings/tools/FibSpeedResistanceFan.d.ts +26 -0
- package/dist/drawings/tools/FibSpeedResistanceFan.d.ts.map +1 -0
- package/dist/drawings/tools/HorizontalRay.d.ts +18 -0
- package/dist/drawings/tools/HorizontalRay.d.ts.map +1 -0
- package/dist/drawings/tools/InfoLine.d.ts +15 -0
- package/dist/drawings/tools/InfoLine.d.ts.map +1 -0
- package/dist/drawings/tools/Pitchfork.d.ts +17 -6
- package/dist/drawings/tools/Pitchfork.d.ts.map +1 -1
- package/dist/drawings/tools/PriceLabel.d.ts +15 -0
- package/dist/drawings/tools/PriceLabel.d.ts.map +1 -0
- package/dist/drawings/tools/RiskReward.d.ts +20 -0
- package/dist/drawings/tools/RiskReward.d.ts.map +1 -0
- package/dist/drawings/tools/TrendAngle.d.ts +18 -0
- package/dist/drawings/tools/TrendAngle.d.ts.map +1 -0
- package/dist/drawings/tools/index.d.ts +13 -0
- package/dist/drawings/tools/index.d.ts.map +1 -1
- package/dist/drawings/tools/labels.d.ts +27 -0
- package/dist/drawings/tools/labels.d.ts.map +1 -0
- package/dist/drawings/tools/patterns.d.ts +64 -0
- package/dist/drawings/tools/patterns.d.ts.map +1 -0
- package/dist/engine/LayerManager.d.ts +8 -1
- package/dist/engine/LayerManager.d.ts.map +1 -1
- package/dist/engine/RenderEngine.d.ts +20 -4
- package/dist/engine/RenderEngine.d.ts.map +1 -1
- package/dist/engine/RenderLoop.d.ts.map +1 -1
- package/dist/features/AlertManager.d.ts.map +1 -1
- package/dist/features/MeasureOverlay.d.ts +1 -1
- package/dist/features/MeasureOverlay.d.ts.map +1 -1
- package/dist/features/SelectionBoxOverlay.d.ts +29 -0
- package/dist/features/SelectionBoxOverlay.d.ts.map +1 -0
- package/dist/features/UndoRedoManager.d.ts +3 -1
- package/dist/features/UndoRedoManager.d.ts.map +1 -1
- package/dist/features/index.d.ts +2 -0
- package/dist/features/index.d.ts.map +1 -1
- package/dist/finance/GaugeRenderer.d.ts +39 -1
- package/dist/finance/GaugeRenderer.d.ts.map +1 -1
- package/dist/index.cjs +11 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3155 -1576
- package/dist/index.js.map +1 -1
- package/dist/indicators/IndicatorBase.d.ts +10 -1
- package/dist/indicators/IndicatorBase.d.ts.map +1 -1
- package/dist/indicators/IndicatorEngine.d.ts +19 -1
- package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
- package/dist/indicators/IndicatorValueMap.d.ts +38 -0
- package/dist/indicators/IndicatorValueMap.d.ts.map +1 -0
- package/dist/indicators/index.d.ts +5 -0
- package/dist/indicators/index.d.ts.map +1 -1
- package/dist/indicators/overlay/Alligator.d.ts.map +1 -1
- package/dist/indicators/overlay/AnchoredVWAP.d.ts.map +1 -1
- package/dist/indicators/overlay/BollingerBands.d.ts +1 -0
- package/dist/indicators/overlay/BollingerBands.d.ts.map +1 -1
- package/dist/indicators/overlay/ChandelierExit.d.ts.map +1 -1
- package/dist/indicators/overlay/DonchianChannel.d.ts.map +1 -1
- package/dist/indicators/overlay/EMA.d.ts +1 -0
- package/dist/indicators/overlay/EMA.d.ts.map +1 -1
- package/dist/indicators/overlay/Envelope.d.ts +18 -0
- package/dist/indicators/overlay/Envelope.d.ts.map +1 -0
- package/dist/indicators/overlay/HullMA.d.ts.map +1 -1
- package/dist/indicators/overlay/Ichimoku.d.ts.map +1 -1
- package/dist/indicators/overlay/KeltnerChannel.d.ts.map +1 -1
- package/dist/indicators/overlay/LinearRegressionChannel.d.ts.map +1 -1
- package/dist/indicators/overlay/MTFMovingAverage.d.ts.map +1 -1
- package/dist/indicators/overlay/ParabolicSAR.d.ts.map +1 -1
- package/dist/indicators/overlay/PivotPoints.d.ts.map +1 -1
- package/dist/indicators/overlay/SMA.d.ts +1 -0
- package/dist/indicators/overlay/SMA.d.ts.map +1 -1
- package/dist/indicators/overlay/SessionVWAP.d.ts.map +1 -1
- package/dist/indicators/overlay/Supertrend.d.ts.map +1 -1
- package/dist/indicators/overlay/TEMA.d.ts +21 -0
- package/dist/indicators/overlay/TEMA.d.ts.map +1 -0
- package/dist/indicators/overlay/VWAP.d.ts.map +1 -1
- package/dist/indicators/overlay/VWMA.d.ts +17 -0
- package/dist/indicators/overlay/VWMA.d.ts.map +1 -0
- package/dist/indicators/overlay/WMA.d.ts +23 -0
- package/dist/indicators/overlay/WMA.d.ts.map +1 -0
- package/dist/indicators/overlay/ZigZag.d.ts.map +1 -1
- package/dist/indicators/panel/ADX.d.ts.map +1 -1
- package/dist/indicators/panel/ATR.d.ts +1 -0
- package/dist/indicators/panel/ATR.d.ts.map +1 -1
- package/dist/indicators/panel/AcceleratorOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/AccumulationDistribution.d.ts.map +1 -1
- package/dist/indicators/panel/Aroon.d.ts.map +1 -1
- package/dist/indicators/panel/AwesomeOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/BalanceOfPower.d.ts.map +1 -1
- package/dist/indicators/panel/CCI.d.ts.map +1 -1
- package/dist/indicators/panel/CMF.d.ts.map +1 -1
- package/dist/indicators/panel/ChaikinOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/ChaikinVolatility.d.ts.map +1 -1
- package/dist/indicators/panel/ChandeMomentum.d.ts.map +1 -1
- package/dist/indicators/panel/ChoppinessIndex.d.ts.map +1 -1
- package/dist/indicators/panel/ConnorsRSI.d.ts.map +1 -1
- package/dist/indicators/panel/Coppock.d.ts.map +1 -1
- package/dist/indicators/panel/DetrendedPriceOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/DisparityIndex.d.ts.map +1 -1
- package/dist/indicators/panel/EaseOfMovement.d.ts.map +1 -1
- package/dist/indicators/panel/ElderRay.d.ts.map +1 -1
- package/dist/indicators/panel/FisherTransform.d.ts.map +1 -1
- package/dist/indicators/panel/ForceIndex.d.ts.map +1 -1
- package/dist/indicators/panel/KST.d.ts.map +1 -1
- package/dist/indicators/panel/Klinger.d.ts.map +1 -1
- package/dist/indicators/panel/MACD.d.ts +3 -0
- package/dist/indicators/panel/MACD.d.ts.map +1 -1
- package/dist/indicators/panel/MFI.d.ts.map +1 -1
- package/dist/indicators/panel/MassIndex.d.ts.map +1 -1
- package/dist/indicators/panel/OBV.d.ts +1 -0
- package/dist/indicators/panel/OBV.d.ts.map +1 -1
- package/dist/indicators/panel/PercentagePriceOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/PrettyGoodOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/PriceVolumeTrend.d.ts.map +1 -1
- package/dist/indicators/panel/Qstick.d.ts.map +1 -1
- package/dist/indicators/panel/ROC.d.ts.map +1 -1
- package/dist/indicators/panel/RSI.d.ts +3 -0
- package/dist/indicators/panel/RSI.d.ts.map +1 -1
- package/dist/indicators/panel/RelativeMomentumIndex.d.ts.map +1 -1
- package/dist/indicators/panel/RelativeVigor.d.ts.map +1 -1
- package/dist/indicators/panel/SchaffTrendCycle.d.ts.map +1 -1
- package/dist/indicators/panel/StdDev.d.ts.map +1 -1
- package/dist/indicators/panel/Stochastic.d.ts +1 -0
- package/dist/indicators/panel/Stochastic.d.ts.map +1 -1
- package/dist/indicators/panel/StochasticRSI.d.ts.map +1 -1
- package/dist/indicators/panel/TRIX.d.ts.map +1 -1
- package/dist/indicators/panel/TSI.d.ts.map +1 -1
- package/dist/indicators/panel/UltimateOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/VROC.d.ts.map +1 -1
- package/dist/indicators/panel/VolumeDelta.d.ts.map +1 -1
- package/dist/indicators/panel/VolumeProfile.d.ts.map +1 -1
- package/dist/indicators/panel/Vortex.d.ts.map +1 -1
- package/dist/indicators/panel/WilliamsAD.d.ts.map +1 -1
- package/dist/indicators/panel/WilliamsR.d.ts.map +1 -1
- package/dist/indicators/registry.d.ts.map +1 -1
- package/dist/indicators/tick.bench.d.ts +2 -0
- package/dist/indicators/tick.bench.d.ts.map +1 -0
- package/dist/indicators/worker/messages.d.ts +6 -0
- package/dist/indicators/worker/messages.d.ts.map +1 -1
- package/dist/interaction/AxisDragHandler.d.ts +1 -1
- package/dist/interaction/CrosshairHandler.d.ts +3 -2
- package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
- package/dist/interaction/CrosshairTooltip.d.ts +49 -15
- package/dist/interaction/CrosshairTooltip.d.ts.map +1 -1
- package/dist/interaction/InteractionManager.d.ts +20 -1
- package/dist/interaction/InteractionManager.d.ts.map +1 -1
- package/dist/interaction/PanHandler.d.ts +11 -3
- package/dist/interaction/PanHandler.d.ts.map +1 -1
- package/dist/interaction/index.d.ts +2 -1
- package/dist/interaction/index.d.ts.map +1 -1
- package/dist/realtime/CurrentPriceLine.d.ts +5 -1
- package/dist/realtime/CurrentPriceLine.d.ts.map +1 -1
- package/dist/realtime/StreamManager.d.ts +2 -0
- package/dist/realtime/StreamManager.d.ts.map +1 -1
- package/dist/realtime/adapters/BinanceAdapter.d.ts.map +1 -1
- package/dist/realtime/adapters/WebSocketAdapter.d.ts.map +1 -1
- package/dist/trading/OrderRenderer.d.ts +1 -1
- package/dist/trading/PositionRenderer.d.ts +1 -1
- package/dist/trading/TradingManager.d.ts +4 -2
- package/dist/trading/TradingManager.d.ts.map +1 -1
- package/dist/trading/TradingRenderer.d.ts +1 -1
- package/dist/ui/ChartLegend.d.ts +9 -1
- package/dist/ui/ChartLegend.d.ts.map +1 -1
- package/dist/ui/SessionBreaks.d.ts +4 -0
- package/dist/ui/SessionBreaks.d.ts.map +1 -1
- package/dist/viewport/ScaleMapping.d.ts +20 -4
- package/dist/viewport/ScaleMapping.d.ts.map +1 -1
- package/dist/viewport/Viewport.d.ts +47 -2
- package/dist/viewport/Viewport.d.ts.map +1 -1
- package/dist/viewport/index.d.ts +1 -1
- package/dist/viewport/index.d.ts.map +1 -1
- package/package.json +3 -2
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 TradeCanvas Contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 TradeCanvas Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -16,17 +16,15 @@ npm install @tradecanvas/chart
|
|
|
16
16
|
|
|
17
17
|
### Rendering Engine
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Two stacked canvases — a hover repaints only the thin top one:
|
|
20
20
|
|
|
21
21
|
```
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
Main Layer (candles, indicators, volume) z=1
|
|
25
|
-
Background (grid, watermark) z=0
|
|
22
|
+
Top canvas (crosshair + axis pills, legend, countdown, measure) z=1
|
|
23
|
+
Scene canvas (grid, candles, indicators, drawings, orders, axes) z=0
|
|
26
24
|
```
|
|
27
25
|
|
|
28
26
|
- `RenderEngine` -- orchestrates the render pipeline
|
|
29
|
-
- `LayerManager` --
|
|
27
|
+
- `LayerManager` -- the scene and top canvases
|
|
30
28
|
- `RenderLoop` -- requestAnimationFrame loop with dirty tracking
|
|
31
29
|
- `DPRManager` -- device pixel ratio handling for crisp rendering
|
|
32
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridRenderer.d.ts","sourceRoot":"","sources":["../../src/axis/GridRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGjE,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAQ;IAEvB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAC5B,SAAS,IAAI,OAAO;IAEpB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"GridRenderer.d.ts","sourceRoot":"","sources":["../../src/axis/GridRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGjE,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAQ;IAEvB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAC5B,SAAS,IAAI,OAAO;IAEpB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAuCnF"}
|
package/dist/axis/PriceAxis.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { ViewportState, Theme } from '@tradecanvas/commons';
|
|
2
2
|
export declare class PriceAxis {
|
|
3
3
|
private locale;
|
|
4
|
+
private reservedPrice;
|
|
5
|
+
/**
|
|
6
|
+
* Price whose tag sits on the axis (the last-price tag). Tick labels it
|
|
7
|
+
* would cover are skipped instead of showing half-hidden behind it.
|
|
8
|
+
*/
|
|
9
|
+
setReservedPriceProvider(provider: (() => number | null) | null): void;
|
|
4
10
|
setLocale(locale: string): void;
|
|
5
11
|
render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
|
|
6
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PriceAxis.d.ts","sourceRoot":"","sources":["../../src/axis/PriceAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"PriceAxis.d.ts","sourceRoot":"","sources":["../../src/axis/PriceAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAOjE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,aAAa,CAAsC;IAE3D;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAItE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA0DnF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeAxis.d.ts","sourceRoot":"","sources":["../../src/axis/TimeAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"TimeAxis.d.ts","sourceRoot":"","sources":["../../src/axis/TimeAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAM7E,qBAAa,QAAQ;IACnB,6EAA6E;IAC7E,OAAO,CAAC,eAAe,CAAuB;IAE9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI/C,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;CAsE7H"}
|
|
@@ -13,6 +13,10 @@ export declare class DrawingManager {
|
|
|
13
13
|
private committedAnchors;
|
|
14
14
|
private previewAnchor;
|
|
15
15
|
private selectedDrawingId;
|
|
16
|
+
/** Drawings selected together with `selectedDrawingId` (Ctrl/⌘-drag or Ctrl/⌘-click). */
|
|
17
|
+
private groupIds;
|
|
18
|
+
/** Start state of the other group members while the group is dragged. */
|
|
19
|
+
private groupDrag;
|
|
16
20
|
private dragAnchorIndex;
|
|
17
21
|
private dragStartPoint;
|
|
18
22
|
private dragStartAnchors;
|
|
@@ -42,7 +46,34 @@ export declare class DrawingManager {
|
|
|
42
46
|
undo(): boolean;
|
|
43
47
|
redo(): boolean;
|
|
44
48
|
private applyUndoAction;
|
|
49
|
+
private undoOne;
|
|
45
50
|
private applyRedoAction;
|
|
51
|
+
private redoOne;
|
|
52
|
+
/**
|
|
53
|
+
* Run `fn`, recording every undo action it pushes as one undo step, so a
|
|
54
|
+
* group move/delete/restyle comes back with a single Ctrl+Z.
|
|
55
|
+
*/
|
|
56
|
+
private batchUndo;
|
|
57
|
+
private isSelectedId;
|
|
58
|
+
private clearSelection;
|
|
59
|
+
private addToSelection;
|
|
60
|
+
/** Ids of every selected drawing, the primary one first. */
|
|
61
|
+
getSelectedDrawingIds(): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Select every visible drawing with an anchor inside the pixel rectangle
|
|
64
|
+
* (the Ctrl/⌘-drag selection). Replaces the current selection.
|
|
65
|
+
* Returns how many were selected.
|
|
66
|
+
*/
|
|
67
|
+
selectInRect(rect: {
|
|
68
|
+
x0: number;
|
|
69
|
+
y0: number;
|
|
70
|
+
x1: number;
|
|
71
|
+
y1: number;
|
|
72
|
+
}, viewport: ViewportState): number;
|
|
73
|
+
/** Ctrl/⌘-click: add the drawing under `pos` to the selection, or take it out. */
|
|
74
|
+
toggleSelectionAt(pos: Point, viewport: ViewportState): boolean;
|
|
75
|
+
/** Begin moving `primary` — and every other selected drawing with it. */
|
|
76
|
+
private beginMove;
|
|
46
77
|
lockAllDrawings(): void;
|
|
47
78
|
unlockAllDrawings(): void;
|
|
48
79
|
hideAllDrawings(): void;
|
|
@@ -98,6 +129,14 @@ export declare class DrawingManager {
|
|
|
98
129
|
private computeBarOffsetTime;
|
|
99
130
|
private handleCreationClick;
|
|
100
131
|
private finalizeCreation;
|
|
132
|
+
/** True while a drawing is being moved or reshaped by its handle. */
|
|
133
|
+
isDragging(): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Cursor for hovering `pos`: 'move' over a handle of the selected drawing,
|
|
136
|
+
* 'pointer' over any drawing that can be grabbed, otherwise null. Null too
|
|
137
|
+
* while a drawing tool is active (the chart keeps its crosshair).
|
|
138
|
+
*/
|
|
139
|
+
hoverCursorAt(pos: Point, viewport: ViewportState): 'move' | 'pointer' | null;
|
|
101
140
|
private handleSelectionClick;
|
|
102
141
|
private handleMove;
|
|
103
142
|
private handleResize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingManager.d.ts","sourceRoot":"","sources":["../../src/drawings/DrawingManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,KAAK,EACL,aAAa,EACb,OAAO,
|
|
1
|
+
{"version":3,"file":"DrawingManager.d.ts","sourceRoot":"","sources":["../../src/drawings/DrawingManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,14 @@ export declare class AnchoredVWAPTool extends DrawingBase {
|
|
|
18
18
|
setShowBands(show: boolean): void;
|
|
19
19
|
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
20
20
|
private drawLine;
|
|
21
|
+
/**
|
|
22
|
+
* Last result, reused while the series, anchor and forming bar are
|
|
23
|
+
* unchanged — hover hit-testing runs on every mouse move and would
|
|
24
|
+
* otherwise rebuild five O(n) arrays each time.
|
|
25
|
+
*/
|
|
26
|
+
private vwapCache;
|
|
21
27
|
private computeVWAP;
|
|
28
|
+
private computeVWAPUncached;
|
|
22
29
|
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
23
30
|
}
|
|
24
31
|
//# sourceMappingURL=AnchoredVWAP.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnchoredVWAP.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/AnchoredVWAP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,UAAU;;;;MAAgF;IAE1F,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,SAAS,CAAQ;IAEzB,aAAa,CAAC,MAAM,EAAE,MAAM,UAAU,GAAG,IAAI;IAI7C,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIjC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAuD5G,OAAO,CAAC,QAAQ;IAyBhB,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"AnchoredVWAP.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/AnchoredVWAP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,UAAU;;;;MAAgF;IAE1F,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,SAAS,CAAQ;IAEzB,aAAa,CAAC,MAAM,EAAE,MAAM,UAAU,GAAG,IAAI;IAI7C,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIjC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAuD5G,OAAO,CAAC,QAAQ;IAyBhB;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAOD;IAEhB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,mBAAmB;IA2C3B,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAqBhG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** Circle from a center point and a point on its edge. */
|
|
4
|
+
export declare class CircleTool extends DrawingBase {
|
|
5
|
+
descriptor: {
|
|
6
|
+
type: "circle";
|
|
7
|
+
name: string;
|
|
8
|
+
requiredAnchors: number;
|
|
9
|
+
};
|
|
10
|
+
private geometry;
|
|
11
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
12
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Circle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/Circle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,0DAA0D;AAC1D,qBAAa,UAAW,SAAQ,WAAW;IACzC,UAAU;;;;MAAmE;IAE7E,OAAO,CAAC,QAAQ;IAMhB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAiB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAOhG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** A horizontal and a vertical line crossing at one point — marks a price and a time at once. */
|
|
4
|
+
export declare class CrossLineTool extends DrawingBase {
|
|
5
|
+
descriptor: {
|
|
6
|
+
type: "crossLine";
|
|
7
|
+
name: string;
|
|
8
|
+
requiredAnchors: number;
|
|
9
|
+
};
|
|
10
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
11
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=CrossLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CrossLine.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/CrossLine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,iGAAiG;AACjG,qBAAa,aAAc,SAAQ,WAAW;IAC5C,UAAU;;;;MAA0E;IAEpF,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAiB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAKhG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** x positions of the cycle lines from A forward, spaced by A→B, within the chart. */
|
|
4
|
+
export declare function cycleLineXs(a: Point, b: Point, viewport: ViewportState): number[];
|
|
5
|
+
/** Cyclic Lines: vertical lines repeating at the A→B interval, for spotting time cycles. */
|
|
6
|
+
export declare class CyclicLinesTool extends DrawingBase {
|
|
7
|
+
descriptor: {
|
|
8
|
+
type: "cyclicLines";
|
|
9
|
+
name: string;
|
|
10
|
+
requiredAnchors: number;
|
|
11
|
+
};
|
|
12
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
13
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=CyclicLines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CyclicLines.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/CyclicLines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,CAQjF;AAED,4FAA4F;AAC5F,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,UAAU;;;;MAA8E;IAExF,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAmB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAMhG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** Summed volume of the bars between the two anchors, or null without data. */
|
|
4
|
+
export declare function volumeBetween(state: DrawingState, viewport: ViewportState): number | null;
|
|
5
|
+
/** The stats the box shows: price change, bars and time spanned, volume traded. */
|
|
6
|
+
export declare function dateAndPriceRangeLines(state: DrawingState, viewport: ViewportState): string[];
|
|
7
|
+
/** Date and Price Range: a box measuring both axes at once, with volume traded inside it. */
|
|
8
|
+
export declare class DateAndPriceRangeTool extends DrawingBase {
|
|
9
|
+
descriptor: {
|
|
10
|
+
type: "dateAndPriceRange";
|
|
11
|
+
name: string;
|
|
12
|
+
requiredAnchors: number;
|
|
13
|
+
};
|
|
14
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
15
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=DateAndPriceRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateAndPriceRange.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/DateAndPriceRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAUzF;AASD,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,CAU7F;AAED,6FAA6F;AAC7F,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,UAAU;;;;MAA4F;IAEtG,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAgC5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAOhG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
export declare const FIB_CHANNEL_LEVELS: number[];
|
|
4
|
+
/** Segment of channel level `level` (AB shifted toward C). */
|
|
5
|
+
export declare function fibChannelSegment(a: Point, b: Point, c: Point, level: number): [Point, Point];
|
|
6
|
+
/**
|
|
7
|
+
* Fibonacci Channel: AB is the base trend line, C sets the channel width;
|
|
8
|
+
* parallel lines sit at Fibonacci fractions of that width.
|
|
9
|
+
*/
|
|
10
|
+
export declare class FibChannelTool extends DrawingBase {
|
|
11
|
+
descriptor: {
|
|
12
|
+
type: "fibChannel";
|
|
13
|
+
name: string;
|
|
14
|
+
requiredAnchors: number;
|
|
15
|
+
};
|
|
16
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
17
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=FibChannel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FibChannel.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/FibChannel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,eAAO,MAAM,kBAAkB,UAAiD,CAAC;AAejF,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAM7F;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,UAAU;;;;MAAkF;IAE5F,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAqC5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAWhG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
export declare const SPEED_FAN_LEVELS: number[];
|
|
4
|
+
/**
|
|
5
|
+
* Points the fan's rays pass through: price levels along B's vertical,
|
|
6
|
+
* time levels along B's horizontal, and B itself (the 1/1 line).
|
|
7
|
+
*/
|
|
8
|
+
export declare function speedFanTargets(a: Point, b: Point): {
|
|
9
|
+
level: number;
|
|
10
|
+
kind: 'price' | 'time' | 'diagonal';
|
|
11
|
+
point: Point;
|
|
12
|
+
}[];
|
|
13
|
+
/**
|
|
14
|
+
* Fibonacci Speed Resistance Fan: rays from A through Fibonacci fractions of
|
|
15
|
+
* the A→B move, measured both in price and in time.
|
|
16
|
+
*/
|
|
17
|
+
export declare class FibSpeedResistanceFanTool extends DrawingBase {
|
|
18
|
+
descriptor: {
|
|
19
|
+
type: "fibSpeedResistanceFan";
|
|
20
|
+
name: string;
|
|
21
|
+
requiredAnchors: number;
|
|
22
|
+
};
|
|
23
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
24
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=FibSpeedResistanceFan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FibSpeedResistanceFan.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/FibSpeedResistanceFan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,UAAkC,CAAC;AAYhE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,EAAE,CAS1H;AAED;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,WAAW;IACxD,UAAU;;;;MAAoG;IAE9G,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAmC5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAUhG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* A horizontal line that only extends forward in time from its anchor —
|
|
5
|
+
* unlike `horizontalLine`, which spans the full chart width. Useful for
|
|
6
|
+
* marking a level ("support starts here") without implying it held in the
|
|
7
|
+
* past too.
|
|
8
|
+
*/
|
|
9
|
+
export declare class HorizontalRayTool extends DrawingBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
type: "horizontalRay";
|
|
12
|
+
name: string;
|
|
13
|
+
requiredAnchors: number;
|
|
14
|
+
};
|
|
15
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
16
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=HorizontalRay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HorizontalRay.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/HorizontalRay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,UAAU;;;;MAAkF;IAE5F,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAoB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAShG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** The text the info line shows: price change, bars (and time) spanned, angle. */
|
|
4
|
+
export declare function infoLineLines(state: DrawingState, viewport: ViewportState, angleDeg: number): string[];
|
|
5
|
+
/** Trend line with a stats box: price change and %, bars and time spanned, angle. */
|
|
6
|
+
export declare class InfoLineTool extends DrawingBase {
|
|
7
|
+
descriptor: {
|
|
8
|
+
type: "infoLine";
|
|
9
|
+
name: string;
|
|
10
|
+
requiredAnchors: number;
|
|
11
|
+
};
|
|
12
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
13
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=InfoLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InfoLine.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/InfoLine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAQtG;AAED,qFAAqF;AACrF,qBAAa,YAAa,SAAQ,WAAW;IAC3C,UAAU;;;;MAAwE;IAElF,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAoB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAMhG"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
1
|
+
import { DrawingDescriptor, DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
2
|
import { DrawingBase } from '../DrawingBase.js';
|
|
3
3
|
export declare class PitchforkTool extends DrawingBase {
|
|
4
|
-
descriptor:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
descriptor: DrawingDescriptor;
|
|
5
|
+
/**
|
|
6
|
+
* Where the median line starts, given pivot A and the first reaction B.
|
|
7
|
+
* Andrews' starts at A; the Schiff variants shift it toward B.
|
|
8
|
+
*/
|
|
9
|
+
protected origin(p0: Point, _p1: Point): Point;
|
|
9
10
|
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
10
11
|
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
11
12
|
}
|
|
13
|
+
/** Schiff Pitchfork: the median starts halfway in price from A to B, at A's time. */
|
|
14
|
+
export declare class SchiffPitchforkTool extends PitchforkTool {
|
|
15
|
+
descriptor: DrawingDescriptor;
|
|
16
|
+
protected origin(p0: Point, p1: Point): Point;
|
|
17
|
+
}
|
|
18
|
+
/** Modified Schiff Pitchfork: the median starts at the midpoint of A and B, in both time and price. */
|
|
19
|
+
export declare class ModifiedSchiffPitchforkTool extends PitchforkTool {
|
|
20
|
+
descriptor: DrawingDescriptor;
|
|
21
|
+
protected origin(p0: Point, p1: Point): Point;
|
|
22
|
+
}
|
|
12
23
|
//# sourceMappingURL=Pitchfork.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pitchfork.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/Pitchfork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Pitchfork.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/Pitchfork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,UAAU,EAAE,iBAAiB,CAAyE;IAEtG;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK;IAI9C,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAgE5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAchG;AAED,qFAAqF;AACrF,qBAAa,mBAAoB,SAAQ,aAAa;IAC3C,UAAU,EAAE,iBAAiB,CAA6E;cAEhG,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK;CAGvD;AAED,uGAAuG;AACvG,qBAAa,2BAA4B,SAAQ,aAAa;IACnD,UAAU,EAAE,iBAAiB,CAA8F;cAEjH,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK;CAGvD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** Price Label: a callout pinned to a point showing its price (or custom text). */
|
|
4
|
+
export declare class PriceLabelTool extends DrawingBase {
|
|
5
|
+
descriptor: {
|
|
6
|
+
type: "priceLabel";
|
|
7
|
+
name: string;
|
|
8
|
+
requiredAnchors: number;
|
|
9
|
+
};
|
|
10
|
+
private text;
|
|
11
|
+
private box;
|
|
12
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
13
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=PriceLabel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PriceLabel.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/PriceLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,mFAAmF;AACnF,qBAAa,cAAe,SAAQ,WAAW;IAC7C,UAAU;;;;MAA4E;IAEtF,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,GAAG;IAOX,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IA8B5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAQhG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* "Long/Short Position" tool: drag from an entry price to a
|
|
5
|
+
* stop price, and it draws the risk zone between them plus a reward zone of
|
|
6
|
+
* equal width on the far side — sized by a fixed reward:risk ratio — with
|
|
7
|
+
* labels for the $ and % at each level. Direction (long vs short) is
|
|
8
|
+
* inferred from whether the stop anchor sits below or above the entry.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RiskRewardTool extends DrawingBase {
|
|
11
|
+
descriptor: {
|
|
12
|
+
type: "riskReward";
|
|
13
|
+
name: string;
|
|
14
|
+
requiredAnchors: number;
|
|
15
|
+
};
|
|
16
|
+
private geometry;
|
|
17
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
18
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=RiskReward.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RiskReward.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/RiskReward.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,UAAU;;;;MAAoF;IAE9F,OAAO,CAAC,QAAQ;IAShB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAiD5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAahG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** On-screen angle of A→B in degrees, counter-clockwise from horizontal (up = positive). */
|
|
4
|
+
export declare function screenAngleDeg(a: Point, b: Point): number;
|
|
5
|
+
/**
|
|
6
|
+
* Trend line that shows its on-screen angle: a horizontal reference at the
|
|
7
|
+
* start point, an arc sweeping to the line, and the angle in degrees.
|
|
8
|
+
*/
|
|
9
|
+
export declare class TrendAngleTool extends DrawingBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
type: "trendAngle";
|
|
12
|
+
name: string;
|
|
13
|
+
requiredAnchors: number;
|
|
14
|
+
};
|
|
15
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
16
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=TrendAngle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrendAngle.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/TrendAngle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,UAAU;;;;MAA4E;IAEtF,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IA0C5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAMhG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DrawingManager } from '../DrawingManager.js';
|
|
2
2
|
export { TrendLineTool } from './TrendLine.js';
|
|
3
3
|
export { HorizontalLineTool } from './HorizontalLine.js';
|
|
4
|
+
export { HorizontalRayTool } from './HorizontalRay.js';
|
|
4
5
|
export { VerticalLineTool } from './VerticalLine.js';
|
|
5
6
|
export { RayTool } from './Ray.js';
|
|
6
7
|
export { ExtendedLineTool } from './ExtendedLine.js';
|
|
@@ -23,5 +24,17 @@ export { GannBoxTool } from './GannBox.js';
|
|
|
23
24
|
export { AnchoredVWAPTool } from './AnchoredVWAP.js';
|
|
24
25
|
export { VolumeProfileRangeTool } from './VolumeProfileRange.js';
|
|
25
26
|
export { FibTimeZonesTool } from './FibTimeZones.js';
|
|
27
|
+
export { RiskRewardTool } from './RiskReward.js';
|
|
28
|
+
export { CrossLineTool } from './CrossLine.js';
|
|
29
|
+
export { TrendAngleTool } from './TrendAngle.js';
|
|
30
|
+
export { InfoLineTool } from './InfoLine.js';
|
|
31
|
+
export { FibChannelTool } from './FibChannel.js';
|
|
32
|
+
export { FibSpeedResistanceFanTool } from './FibSpeedResistanceFan.js';
|
|
33
|
+
export { SchiffPitchforkTool, ModifiedSchiffPitchforkTool } from './Pitchfork.js';
|
|
34
|
+
export { XABCDPatternTool, ABCDPatternTool, HeadAndShouldersTool } from './patterns.js';
|
|
35
|
+
export { CircleTool } from './Circle.js';
|
|
36
|
+
export { DateAndPriceRangeTool } from './DateAndPriceRange.js';
|
|
37
|
+
export { CyclicLinesTool } from './CyclicLines.js';
|
|
38
|
+
export { PriceLabelTool } from './PriceLabel.js';
|
|
26
39
|
export declare function registerBuiltInDrawingTools(manager: DrawingManager): void;
|
|
27
40
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAsC3D,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAyCzE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DrawingState, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
/** Price text at the precision of `ref` (defaults to the price itself). */
|
|
3
|
+
export declare function formatDrawingPrice(price: number, ref?: number): string;
|
|
4
|
+
/** Signed price change with its percentage of `from`, e.g. "+12.50 (+1.25%)". */
|
|
5
|
+
export declare function formatPriceChange(from: number, to: number): string;
|
|
6
|
+
/** Compact duration, e.g. "3d 4h", "45m", "2w 1d". */
|
|
7
|
+
export declare function formatDuration(ms: number): string;
|
|
8
|
+
/** Whether anchors carry real timestamps (vs. legacy bar indices). */
|
|
9
|
+
export declare function hasTimestamps(viewport: ViewportState): boolean;
|
|
10
|
+
/** Whole bars between two anchors on the current timeframe. */
|
|
11
|
+
export declare function barsBetween(state: DrawingState, a: number, b: number, viewport: ViewportState): number;
|
|
12
|
+
/** Time span between two anchors as text, or null when anchors are bar indices. */
|
|
13
|
+
export declare function spanBetween(state: DrawingState, a: number, b: number, viewport: ViewportState): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Multi-line label on a dark rounded box. `(x, y)` is the box's anchor point:
|
|
16
|
+
* `align` picks which horizontal edge/center sits on x, and the box grows
|
|
17
|
+
* upward from y when `above`, downward otherwise. Returns the box rect.
|
|
18
|
+
*/
|
|
19
|
+
export declare function drawLabelBox(ctx: CanvasRenderingContext2D, lines: string[], x: number, y: number, align?: 'left' | 'center' | 'right', above?: boolean): {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
};
|
|
25
|
+
/** Ratio of two price legs, e.g. |BC| / |AB|, as text ("0.618"). */
|
|
26
|
+
export declare function legRatio(state: DrawingState, num: [number, number], den: [number, number]): string;
|
|
27
|
+
//# sourceMappingURL=labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/labels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA2BxE,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAQ,GAAG,MAAM,CAErE;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAgBjD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAE9D;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAItG;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAG7G;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,MAAM,EAAE,EACf,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,GAAE,MAAM,GAAG,QAAQ,GAAG,OAAkB,EAC7C,KAAK,UAAO,GACX;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBzD;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAIlG"}
|