@tradecanvas/core 0.8.2 → 0.9.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.map +1 -1
- package/dist/charts/VolumeProfileRenderer.d.ts +36 -0
- package/dist/charts/VolumeProfileRenderer.d.ts.map +1 -0
- package/dist/charts/index.d.ts +1 -0
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/engine/RenderEngine.d.ts +2 -0
- package/dist/engine/RenderEngine.d.ts.map +1 -1
- package/dist/features/MeasureOverlay.d.ts +27 -0
- package/dist/features/MeasureOverlay.d.ts.map +1 -0
- package/dist/features/ReplayManager.d.ts +5 -0
- package/dist/features/ReplayManager.d.ts.map +1 -1
- package/dist/features/index.d.ts +1 -0
- package/dist/features/index.d.ts.map +1 -1
- package/dist/index.cjs +8 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +821 -389
- package/dist/index.js.map +1 -1
- package/dist/interaction/AxisDragHandler.d.ts +32 -0
- package/dist/interaction/AxisDragHandler.d.ts.map +1 -0
- package/dist/interaction/CrosshairHandler.d.ts +9 -0
- package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
- package/dist/interaction/InteractionManager.d.ts +32 -1
- package/dist/interaction/InteractionManager.d.ts.map +1 -1
- package/dist/interaction/PinnedTooltip.d.ts +39 -0
- package/dist/interaction/PinnedTooltip.d.ts.map +1 -0
- package/dist/interaction/index.d.ts +2 -0
- package/dist/interaction/index.d.ts.map +1 -1
- package/dist/ui/SessionBreaks.d.ts +7 -2
- package/dist/ui/SessionBreaks.d.ts.map +1 -1
- package/dist/viewport/Viewport.d.ts +6 -0
- package/dist/viewport/Viewport.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -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;AAGjE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IAEzB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;
|
|
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;AAGjE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IAEzB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAsDnF"}
|
|
@@ -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;AAW7E,qBAAa,QAAQ;IACnB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;
|
|
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;AAW7E,qBAAa,QAAQ;IACnB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;CAkE7H"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { DataSeries, ViewportState, Theme } from '@tradecanvas/commons';
|
|
2
|
+
/**
|
|
3
|
+
* Volume Profile — horizontal histogram of traded volume bucketed by price.
|
|
4
|
+
*
|
|
5
|
+
* Distributes each bar's volume across the price range it covered (low → high)
|
|
6
|
+
* using a simple uniform distribution. The result is a side histogram pinned
|
|
7
|
+
* to the right edge of the chart that shows where the market spent the most
|
|
8
|
+
* volume — the "value area" and "point of control" come from this shape.
|
|
9
|
+
*
|
|
10
|
+
* Tradeoffs (intentional):
|
|
11
|
+
* - Uniform low→high allocation, not VWAP-weighted. Cheaper to compute and
|
|
12
|
+
* close enough for visual reading at chart-zoom scales.
|
|
13
|
+
* - Buckets are computed against the *visible price range*, so the profile
|
|
14
|
+
* rebins on pan/zoom — what you see is always relative to the current
|
|
15
|
+
* viewport.
|
|
16
|
+
* - No look-ahead: only bars currently inside `visibleRange` contribute.
|
|
17
|
+
*/
|
|
18
|
+
export declare class VolumeProfileRenderer {
|
|
19
|
+
private visible;
|
|
20
|
+
/** Number of horizontal buckets the visible price range is split into. */
|
|
21
|
+
private buckets;
|
|
22
|
+
/** Profile width as a fraction of chart width. 0.18 ≈ 18%. */
|
|
23
|
+
private widthRatio;
|
|
24
|
+
/** Opacity of the histogram bars. */
|
|
25
|
+
private opacity;
|
|
26
|
+
/** Highlight the highest-volume bucket (point of control). */
|
|
27
|
+
private highlightPoC;
|
|
28
|
+
setVisible(v: boolean): void;
|
|
29
|
+
isVisible(): boolean;
|
|
30
|
+
setBuckets(n: number): void;
|
|
31
|
+
setWidthRatio(r: number): void;
|
|
32
|
+
setOpacity(o: number): void;
|
|
33
|
+
setHighlightPoC(enabled: boolean): void;
|
|
34
|
+
render(ctx: CanvasRenderingContext2D, data: DataSeries, viewport: ViewportState, theme: Theme): void;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=VolumeProfileRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VolumeProfileRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/VolumeProfileRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7E;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,0EAA0E;IAC1E,OAAO,CAAC,OAAO,CAAM;IACrB,8DAA8D;IAC9D,OAAO,CAAC,UAAU,CAAQ;IAC1B,qCAAqC;IACrC,OAAO,CAAC,OAAO,CAAQ;IACvB,8DAA8D;IAC9D,OAAO,CAAC,YAAY,CAAQ;IAE5B,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAC5B,SAAS,IAAI,OAAO;IACpB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAC3B,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAC9B,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAC3B,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAEvC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAgGrG"}
|
package/dist/charts/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export { HLCAreaRenderer } from './HLCAreaRenderer.js';
|
|
|
14
14
|
export { StepLineRenderer } from './StepLineRenderer.js';
|
|
15
15
|
export { LineWithMarkersRenderer } from './LineWithMarkersRenderer.js';
|
|
16
16
|
export { VolumeRenderer } from './VolumeRenderer.js';
|
|
17
|
+
export { VolumeProfileRenderer } from './VolumeProfileRenderer.js';
|
|
17
18
|
export { CompareRenderer } from './CompareRenderer.js';
|
|
18
19
|
export type { CompareSymbol } from './CompareRenderer.js';
|
|
19
20
|
export * from './transforms/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/charts/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/charts/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,cAAc,uBAAuB,CAAC"}
|
|
@@ -37,12 +37,14 @@ export interface RenderContext {
|
|
|
37
37
|
currentPriceLine: CurrentPriceLine | null;
|
|
38
38
|
chartLegend: ChartLegend | null;
|
|
39
39
|
volumeRenderer: VolumeRenderer | null;
|
|
40
|
+
volumeProfile: import('../charts/VolumeProfileRenderer.js').VolumeProfileRenderer | null;
|
|
40
41
|
watermark: Watermark | null;
|
|
41
42
|
barCountdown: BarCountdown | null;
|
|
42
43
|
sessionBreaks: SessionBreaks | null;
|
|
43
44
|
compareRenderer: CompareRenderer | null;
|
|
44
45
|
alertManager: AlertManager | null;
|
|
45
46
|
signalMarkerManager: SignalMarkerManager | null;
|
|
47
|
+
measureOverlay: import('../features/MeasureOverlay.js').MeasureOverlay | null;
|
|
46
48
|
tradeZoneManager: TradeZoneManager | null;
|
|
47
49
|
panels: PanelRenderInfo[];
|
|
48
50
|
priceLimits?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderEngine.d.ts","sourceRoot":"","sources":["../../src/engine/RenderEngine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RenderEngine.d.ts","sourceRoot":"","sources":["../../src/engine/RenderEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Point, ViewportState, Theme, DataSeries } from '@tradecanvas/commons';
|
|
2
|
+
/**
|
|
3
|
+
* Transient "measure" overlay (TradingView shift-drag ruler).
|
|
4
|
+
*
|
|
5
|
+
* The tool is owned by the chart but lives outside the persistent drawing
|
|
6
|
+
* system on purpose: it is reset on every mouseup so it never clutters saved
|
|
7
|
+
* state, and it doesn't participate in undo/redo.
|
|
8
|
+
*
|
|
9
|
+
* Coordinates are stored in data space (bar index + price) so the overlay
|
|
10
|
+
* tracks the data correctly during pan/zoom while the user is still holding
|
|
11
|
+
* shift.
|
|
12
|
+
*/
|
|
13
|
+
export declare class MeasureOverlay {
|
|
14
|
+
private active;
|
|
15
|
+
private startBar;
|
|
16
|
+
private startPrice;
|
|
17
|
+
private endBar;
|
|
18
|
+
private endPrice;
|
|
19
|
+
private startTime;
|
|
20
|
+
private endTime;
|
|
21
|
+
isActive(): boolean;
|
|
22
|
+
begin(pos: Point, viewport: ViewportState, data: DataSeries): void;
|
|
23
|
+
update(pos: Point, viewport: ViewportState, data: DataSeries): void;
|
|
24
|
+
end(): void;
|
|
25
|
+
render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=MeasureOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeasureOverlay.d.ts","sourceRoot":"","sources":["../../src/features/MeasureOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGpF;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAuB;IAEtC,QAAQ,IAAI,OAAO;IAInB,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAYlE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAQnE,GAAG,IAAI,IAAI;IAIX,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA6DnF"}
|
|
@@ -30,6 +30,11 @@ export declare class ReplayManager extends Emitter<ReplayEvents> {
|
|
|
30
30
|
pause(): void;
|
|
31
31
|
resume(): void;
|
|
32
32
|
stop(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Jump to a specific bar. Emits `bar` synchronously so chart consumers can
|
|
35
|
+
* re-render the slice — without this, seeking while paused leaves the chart
|
|
36
|
+
* stuck on whichever bar last fired through the timer.
|
|
37
|
+
*/
|
|
33
38
|
seekTo(index: number): void;
|
|
34
39
|
setSpeed(speed: number): void;
|
|
35
40
|
getState(): 'playing' | 'paused' | 'stopped';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReplayManager.d.ts","sourceRoot":"","sources":["../../src/features/ReplayManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,GAAG,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,OAAO,CAAC,YAAY,CAAC;IACtD,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,MAAM,CAA6C;IAE3D,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM5B,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAqB1C,KAAK,IAAI,IAAI;IASb,MAAM,IAAI,IAAI;IAMd,IAAI,IAAI,IAAI;IAUZ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ReplayManager.d.ts","sourceRoot":"","sources":["../../src/features/ReplayManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,GAAG,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,OAAO,CAAC,YAAY,CAAC;IACtD,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,MAAM,CAA6C;IAE3D,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM5B,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAqB1C,KAAK,IAAI,IAAI;IASb,MAAM,IAAI,IAAI;IAMd,IAAI,IAAI,IAAI;IAUZ;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ7B,QAAQ,IAAI,SAAS,GAAG,QAAQ,GAAG,SAAS;IAI5C,WAAW,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQlE,OAAO,IAAI,IAAI;CAKhB"}
|
package/dist/features/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export type { UndoableAction } from './UndoRedoManager.js';
|
|
|
9
9
|
export { DataExporter } from './DataExporter.js';
|
|
10
10
|
export { SignalMarkerManager } from './SignalMarkerManager.js';
|
|
11
11
|
export { TradeZoneManager } from './TradeZoneManager.js';
|
|
12
|
+
export { MeasureOverlay } from './MeasureOverlay.js';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/features/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/features/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|