openalgo-charts 2.4.7 → 2.5.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/README.md +97 -56
- package/dist/index.d.ts +50 -4
- package/dist/openalgo-charts.mjs +1 -1
- package/dist/openalgo-charts.mjs.map +1 -1
- package/dist/openalgo-charts.standalone.js +1 -1
- package/dist/openalgo-charts.standalone.js.map +1 -1
- package/dist/openalgo-charts.widget.mjs +1 -1
- package/dist/openalgo-charts.widget.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,23 +2,64 @@
|
|
|
2
2
|
|
|
3
3
|
# OpenAlgo Charts
|
|
4
4
|
|
|
5
|
-
**A
|
|
5
|
+
**A JavaScript and TypeScript library for financial charts.**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Show market prices, add indicators and drawings, set alerts, and replay historical
|
|
8
|
+
data in your web app. Use your own data and interface, or add the optional widget
|
|
9
|
+
for a toolbar, menus and dialogs. Built for OpenAlgo and custom trading apps,
|
|
10
|
+
with no runtime dependencies.
|
|
8
11
|
|
|
9
12
|
[](https://www.npmjs.com/package/openalgo-charts)
|
|
10
13
|
[](./LICENSE)
|
|
11
|
-
[](https://www.npmjs.com/package/openalgo-charts)
|
|
15
|
+
[](#develop)
|
|
13
16
|
[](#principles)
|
|
14
17
|
|
|
15
18
|
[**Documentation**](https://marketcalls.github.io/openalgo-charts/) · [**Live examples**](https://marketcalls.github.io/openalgo-charts/examples) · [**Getting started**](./docs/getting-started.md) · [**Migrating to 2.0**](./docs/migrating-to-2.md) · [**Architecture**](./ARCHITECTURE.md)
|
|
16
19
|
|
|
17
|
-
<img src="docs/architecture-diagram.svg" alt="OpenAlgo Charts architecture: seven layers from the public API down to feeds and data, with 105 built-in plus custom indicators, 85 drawing tools, and a nine-tier bundle legend" width="920" />
|
|
18
|
-
|
|
19
20
|
</div>
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install openalgo-charts
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Current version: **2.5.0**. Price alerts stay visible across timeframes, drag to valid ticks, and chart tables can fit their text.
|
|
29
|
+
See the [changelog](./CHANGELOG.md) for release notes.
|
|
30
|
+
|
|
31
|
+
## Quick start
|
|
32
|
+
|
|
33
|
+
Give the chart a container with a height:
|
|
34
|
+
|
|
35
|
+
```html
|
|
36
|
+
<div id="chart" style="width:100%;height:420px"></div>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Then create a chart and supply its data:
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
import { createChart, generateBars } from 'openalgo-charts';
|
|
43
|
+
|
|
44
|
+
const container = document.getElementById('chart');
|
|
45
|
+
if (!container) throw new Error('Chart container not found');
|
|
46
|
+
|
|
47
|
+
const chart = createChart(container);
|
|
48
|
+
chart.addSeries('candlestick').setData(generateBars(1700000000, 200, 3600));
|
|
49
|
+
chart.fitContent();
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`generateBars` supplies sample prices. Replace them with data from your feed.
|
|
53
|
+
Bar timestamps use UTC seconds. See [getting started](./docs/getting-started.md)
|
|
54
|
+
for setup, [data feeds](https://marketcalls.github.io/openalgo-charts/docs/data-feeds/)
|
|
55
|
+
for live data, or [the widget example](#the-whole-terminal-in-one-call) for chart controls.
|
|
56
|
+
|
|
57
|
+
## Architecture
|
|
58
|
+
|
|
59
|
+
<a href="docs/architecture-diagram.svg"><img src="docs/architecture-diagram.svg" alt="OpenAlgo Charts 2.5.0 architecture: host responsibilities, the base data-to-rendering pipeline with alerts and shared replay, and eight optional tiers including workspace storage, trading tools and the widget" width="920" /></a>
|
|
60
|
+
|
|
61
|
+
How data reaches the chart, what your app owns, and which features you can import.
|
|
62
|
+
[Open the full-size diagram](docs/architecture-diagram.svg).
|
|
22
63
|
|
|
23
64
|
## Walkthrough video
|
|
24
65
|
|
|
@@ -51,30 +92,6 @@ Every chart in the [live gallery](https://marketcalls.github.io/openalgo-charts/
|
|
|
51
92
|
<img src="docs/demo4.png" alt="More live OpenAlgo Charts examples" width="49%" />
|
|
52
93
|
</p>
|
|
53
94
|
|
|
54
|
-
## Install
|
|
55
|
-
|
|
56
|
-
Current version: **2.4.7**.
|
|
57
|
-
|
|
58
|
-
Drag a price or study-threshold alert line to preview a new level, then release
|
|
59
|
-
to save it once. Escape cancels the draft; range bounds stay ordered. Stored
|
|
60
|
-
thresholds and live evaluation remain unchanged during preview. See the
|
|
61
|
-
[2.4.7 changelog](./CHANGELOG.md#247) and the [live example](https://marketcalls.github.io/openalgo-charts/examples/#alert-threshold-dragging).
|
|
62
|
-
|
|
63
|
-
To try dragging locally, run the [yfinance reference host](./examples/yfinance/README.md),
|
|
64
|
-
create a price alert from the chart context menu, and drag its dashed line or
|
|
65
|
-
**Alert** badge. Study and range alerts use the same controls.
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
npm install openalgo-charts
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
```ts
|
|
72
|
-
import { createChart, generateBars } from 'openalgo-charts';
|
|
73
|
-
|
|
74
|
-
const chart = createChart(document.getElementById('chart'));
|
|
75
|
-
chart.addSeries('candlestick').setData(generateBars(1700000000, 200, 3600));
|
|
76
|
-
```
|
|
77
|
-
|
|
78
95
|
## Branding and optional watermark
|
|
79
96
|
|
|
80
97
|
Version 2.1.9 adds default corner branding and an optional background
|
|
@@ -85,22 +102,22 @@ See the [branding guide](https://marketcalls.github.io/openalgo-charts/docs/bran
|
|
|
85
102
|
|
|
86
103
|
## No build step
|
|
87
104
|
|
|
88
|
-
|
|
89
|
-
in front of npm rather than being places you upload to. A chart is one HTML file:
|
|
105
|
+
You can also load the library from a CDN in a plain HTML page:
|
|
90
106
|
|
|
91
107
|
```html
|
|
92
108
|
<div id="chart" style="width:100vw;height:100vh"></div>
|
|
93
109
|
<script type="module">
|
|
94
|
-
import { createChart } from 'https://unpkg.com/openalgo-charts@2.
|
|
110
|
+
import { createChart, generateBars } from 'https://unpkg.com/openalgo-charts@2.5.0/dist/openalgo-charts.mjs';
|
|
95
111
|
const chart = createChart(document.getElementById('chart'), { timezone: 'Asia/Kolkata' });
|
|
96
|
-
chart.addSeries('candlestick').setData(
|
|
112
|
+
chart.addSeries('candlestick').setData(generateBars(1700000000, 200, 3600));
|
|
113
|
+
chart.fitContent();
|
|
97
114
|
</script>
|
|
98
115
|
```
|
|
99
116
|
|
|
100
|
-
Each tier
|
|
101
|
-
all 105 built-
|
|
102
|
-
|
|
103
|
-
|
|
117
|
+
Each optional tier has its own file. For example,
|
|
118
|
+
`openalgo-charts.indicators.mjs` registers all 105 built-in indicators. Pin the
|
|
119
|
+
version in production. The base chart needs no stylesheet; the widget adds its
|
|
120
|
+
own styles. See
|
|
104
121
|
[Use from a CDN](https://marketcalls.github.io/openalgo-charts/docs/cdn).
|
|
105
122
|
|
|
106
123
|
## The whole terminal in one call
|
|
@@ -123,27 +140,34 @@ widget.chart; // the Chart underneath, every base API available
|
|
|
123
140
|
widget.draw; // the DrawingController the rail drives
|
|
124
141
|
```
|
|
125
142
|
|
|
126
|
-
|
|
143
|
+
The optional widget adds symbol search, interval and chart-type controls, a drawing
|
|
144
|
+
toolbar, settings, indicators, a status line, mobile controls and layout persistence.
|
|
145
|
+
Its dialogs use the chart's settings schemas and follow the active theme.
|
|
146
|
+
|
|
147
|
+
The widget uses the same public API as a custom interface. Your app supplies the
|
|
148
|
+
data feed and handles order requests; the widget does not choose a broker or send
|
|
149
|
+
orders on its own. See the [widget guide](./docs/widget.md).
|
|
127
150
|
|
|
128
151
|
Widget controls and accessible labels accept a typed translation callback with English fallback. See [widget localization](./docs/widget-localization.md). The separate `openalgo-charts/workspace` tier provides validated named layouts, indicator templates and asynchronous storage, with an IndexedDB adapter and revision conflict detection. See [workspaces](./docs/workspaces.md).
|
|
129
152
|
|
|
130
153
|
## Tiers
|
|
131
154
|
|
|
132
|
-
Import only
|
|
155
|
+
Import only the features you need. A tier is a separate bundle of features.
|
|
156
|
+
Unused optional tiers stay out of the base chart download.
|
|
133
157
|
|
|
134
158
|
| Import | Contents | Brotli |
|
|
135
159
|
|---|---|---|
|
|
136
|
-
| `openalgo-charts` | Engine, 13 chart types, panes
|
|
137
|
-
| `openalgo-charts/indicators` | 105 built-in indicators,
|
|
160
|
+
| `openalgo-charts` | Engine, 13 chart types, panes and scales, custom indicator registry, primitives, alerts, replay, comparisons, chart linking, state, feeds, bar cache, trading overlays, CSV and SVG export | 93.45 kB |
|
|
161
|
+
| `openalgo-charts/indicators` | 105 built-in indicators, calculation helpers and helpers for studies that use external data | 29.84 kB |
|
|
138
162
|
| `openalgo-charts/draw` | 85 drawing tools + a headless drawing controller, clipboard, settings schema, level palette, freehand geometry and SVG icons | 35.43 kB |
|
|
139
163
|
| `openalgo-charts/transform` | Heikin Ashi, Renko, Range bars, Line Break, Point & Figure, Kagi, and symbol arithmetic (`AAPL/MSFT`) | 4.50 kB |
|
|
140
164
|
| `openalgo-charts/profile` | Volume Profile, Market Profile (TPO) with compact pixel letters, Footprint, order flow | 14.96 kB |
|
|
141
|
-
| `openalgo-charts/trade` | Order
|
|
142
|
-
| `openalgo-charts/webgl` |
|
|
143
|
-
| `openalgo-charts/widget` |
|
|
165
|
+
| `openalgo-charts/trade` | Order, position and bracket tools, plus a depth-of-market ladder | 8.01 kB |
|
|
166
|
+
| `openalgo-charts/webgl` | GPU drawing for supported series, with Canvas 2D fallback | 6.39 kB |
|
|
167
|
+
| `openalgo-charts/widget` | `createWidget`: toolbar, drawing controls, dialogs, mobile controls, status line, shortcuts and optional layout persistence | 49.06 kB |
|
|
144
168
|
| `openalgo-charts/workspace` | Validated workspace and indicator-template documents, named catalogs with revision checks, asynchronous storage and an IndexedDB adapter; no DOM | 5.52 kB |
|
|
145
169
|
|
|
146
|
-
Everything together is **
|
|
170
|
+
Everything together is **247.17 kB Brotli**; a widget terminal with built-in indicators (base + draw + indicators + widget) is 207.78 kB. Figures are measured from the 2.5.0 release build. The trade tier is 8.01 kB on its own; base + trade costs 101.46 kB. Sizes use decimal kB.
|
|
147
171
|
|
|
148
172
|
## What's built
|
|
149
173
|
|
|
@@ -168,11 +192,28 @@ Every built-in is measured against its standard definition bar by bar, at severa
|
|
|
168
192
|
|
|
169
193
|
The chart owns the whole lifecycle: series, pane placement, reference levels, fixed ranges (RSI 0..100), recompute on data change, teardown. Every plot gets colour, opacity, thickness, and line style for free, generated from the descriptor. Write your own with `registerIndicator`, or use the **Tier-2 contract** for indicators whose data arrives independently of the chart's bars (CVD or an external feed).
|
|
170
194
|
|
|
171
|
-
The
|
|
195
|
+
The bar data contract includes optional per-bar `oi` for open interest.
|
|
172
196
|
It is a level, not a flow: folds retain the latest reading instead of summing it.
|
|
173
197
|
Zero and absence remain distinct, and live quotes without a reading leave a gap.
|
|
174
198
|
See [Open interest data](docs/open-interest.md).
|
|
175
199
|
|
|
200
|
+
### Alerts
|
|
201
|
+
|
|
202
|
+
Set conditions on price, study values, drawing levels or bars. The chart evaluates
|
|
203
|
+
them and your app handles notification delivery. Alerts default to confirmed bar
|
|
204
|
+
closes and keep their state when restored.
|
|
205
|
+
|
|
206
|
+
Drag a price or study alert line to preview a new level, then release to save it.
|
|
207
|
+
Escape cancels the draft, and range bounds stay ordered. Stored thresholds and
|
|
208
|
+
live evaluation keep their original values during the drag. See the
|
|
209
|
+
[alert guide](https://marketcalls.github.io/openalgo-charts/docs/alerts/),
|
|
210
|
+
[2.4.7 changelog](./CHANGELOG.md#247) and
|
|
211
|
+
[live example](https://marketcalls.github.io/openalgo-charts/examples/#alert-threshold-dragging).
|
|
212
|
+
|
|
213
|
+
To try it locally, run the [yfinance reference host](./examples/yfinance/README.md),
|
|
214
|
+
create a price alert from the chart context menu, and drag its dashed line or
|
|
215
|
+
**Alert** badge. Study and range alerts use the same controls.
|
|
216
|
+
|
|
176
217
|
### Drawing tools
|
|
177
218
|
|
|
178
219
|
```ts
|
|
@@ -448,17 +489,17 @@ Enforced in CI by [`size-limit`](./.size-limit.json). Nothing is excluded, becau
|
|
|
448
489
|
|
|
449
490
|
| Bundle | Limit | Actual |
|
|
450
491
|
|---|---|---|
|
|
451
|
-
| Base engine | 93.
|
|
452
|
-
| Base + trade | 101.
|
|
492
|
+
| Base engine | 93.75 kB | 93.45 kB |
|
|
493
|
+
| Base + trade | 101.75 kB | 101.46 kB |
|
|
453
494
|
| Indicators tier | 30 kB | 29.84 kB |
|
|
454
495
|
| Draw tier | 36 kB | 35.43 kB |
|
|
455
496
|
| Transform tier | 6 kB | 4.50 kB |
|
|
456
497
|
| Profile tier | 15 kB | 14.96 kB |
|
|
457
498
|
| WebGL2 tier | 7 kB | 6.39 kB |
|
|
458
|
-
| Widget tier | 49.25 kB | 49.
|
|
459
|
-
| Widget terminal (base + draw + indicators + widget) |
|
|
499
|
+
| Widget tier | 49.25 kB | 49.06 kB |
|
|
500
|
+
| Widget terminal (base + draw + indicators + widget) | 208.25 kB | 207.78 kB |
|
|
460
501
|
| Workspace tier | 6 kB | 5.52 kB |
|
|
461
|
-
| **Everything** | 247.
|
|
502
|
+
| **Everything** | 247.75 kB | 247.17 kB |
|
|
462
503
|
|
|
463
504
|
## Documentation
|
|
464
505
|
|
|
@@ -503,8 +544,8 @@ See [Contributing](./CONTRIBUTING.md) for setup, targeted checks, documentation
|
|
|
503
544
|
```bash
|
|
504
545
|
npm install # install dev toolchain
|
|
505
546
|
npm run typecheck # strict TypeScript check
|
|
506
|
-
npm test # engine unit tests (Vitest):
|
|
507
|
-
npm run test:demo # reference-host tests:
|
|
547
|
+
npm test # engine unit tests (Vitest): 5913 across 249 files
|
|
548
|
+
npm run test:demo # reference-host tests: 415 across 32 files
|
|
508
549
|
npm run test:endurance # node endurance-harness tests: 7 cases
|
|
509
550
|
npm run build # Rollup -> dist/ (minified ESM per tier + types)
|
|
510
551
|
npm run size # size-limit (Brotli) against the budget
|
|
@@ -522,7 +563,7 @@ npm run verify # lint + types + unit + endurance harness + build + demo + dt
|
|
|
522
563
|
|
|
523
564
|
## Status & limitations
|
|
524
565
|
|
|
525
|
-
Version **2.
|
|
566
|
+
Version **2.5.0**. All engine build phases are implemented. Upgrading a 1.9.x host: [Migrating to 2.0](./docs/migrating-to-2.md).
|
|
526
567
|
|
|
527
568
|
Known gaps, stated plainly:
|
|
528
569
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TradingCapabilitySource as TradingCapabilitySource$1 } from 'openalgo-charts';
|
|
2
2
|
|
|
3
3
|
/** Library version string. Matches package.json (including locally prepared releases). */
|
|
4
|
-
declare const VERSION = "2.
|
|
4
|
+
declare const VERSION = "2.5.0";
|
|
5
5
|
/** Returns the current library version. */
|
|
6
6
|
declare function version(): string;
|
|
7
7
|
|
|
@@ -1908,8 +1908,16 @@ interface ChartTableOptions {
|
|
|
1908
1908
|
position: TablePosition;
|
|
1909
1909
|
/** Gap from the pane edge, media px. */
|
|
1910
1910
|
margin: number;
|
|
1911
|
-
/**
|
|
1912
|
-
|
|
1911
|
+
/**
|
|
1912
|
+
* Column width in media px. A per-column array sizes each one separately.
|
|
1913
|
+
*
|
|
1914
|
+
* `'auto'` measures instead: every column takes the width of its own widest
|
|
1915
|
+
* cell at the size that cell will be drawn at. A grid whose cells are
|
|
1916
|
+
* sentences rather than numbers cannot be sized by a caller who has not
|
|
1917
|
+
* measured the text, and a fixed width there is a column of readings running
|
|
1918
|
+
* into the column beside it.
|
|
1919
|
+
*/
|
|
1920
|
+
cellWidth: number | readonly number[] | 'auto';
|
|
1913
1921
|
cellHeight: number;
|
|
1914
1922
|
/**
|
|
1915
1923
|
* Type size in media px, or `'auto'` to fit each cell: as large as its row
|
|
@@ -2226,6 +2234,8 @@ interface ChartDataUpdate {
|
|
|
2226
2234
|
/** Minimum headless chart surface needed to evaluate alerts. */
|
|
2227
2235
|
interface AlertChartHost {
|
|
2228
2236
|
primaryBars(): readonly Bar[];
|
|
2237
|
+
/** Owning price scale for primary-price drag snapping, including a left axis. */
|
|
2238
|
+
primarySeries?(): Pick<SeriesApi, 'priceScale'> | null;
|
|
2229
2239
|
getDataContext(): Readonly<ChartDataContext> | undefined;
|
|
2230
2240
|
on(event: string, callback: (payload: unknown) => void): () => void;
|
|
2231
2241
|
emit(event: string, payload: unknown): void;
|
|
@@ -2235,6 +2245,13 @@ interface AlertChartHost {
|
|
|
2235
2245
|
removePrimitive?(primitive: IPrimitive): void;
|
|
2236
2246
|
alertState?(): AlertsDocument | undefined;
|
|
2237
2247
|
setAlertState?(document: AlertsDocument | undefined): void;
|
|
2248
|
+
/**
|
|
2249
|
+
* A price rounded to the tick the pane's scale is written in.
|
|
2250
|
+
*
|
|
2251
|
+
* Optional, and unrounded is the fallback: a host that declares no tick has
|
|
2252
|
+
* nothing to round to, and inventing one would move a price somebody chose.
|
|
2253
|
+
*/
|
|
2254
|
+
snapPrice?(paneIndex: number, price: number): number;
|
|
2238
2255
|
}
|
|
2239
2256
|
type AlertCondition = 'crossing' | 'crossingUp' | 'crossingDown' | 'greaterThan' | 'lessThan' | 'enteringRange' | 'leavingRange' | 'matches';
|
|
2240
2257
|
type AlertPolicy = 'onBarClose' | 'onTouch';
|
|
@@ -2304,7 +2321,11 @@ interface BarCondition {
|
|
|
2304
2321
|
/** Runs at the alert's chosen policy, never for loaded history. */
|
|
2305
2322
|
when(context: BarConditionContext): boolean;
|
|
2306
2323
|
}
|
|
2307
|
-
/**
|
|
2324
|
+
/**
|
|
2325
|
+
* Evaluation belongs to the instrument and interval present when the alert was armed.
|
|
2326
|
+
* Fixed price levels remain visible on other intervals of the same instrument,
|
|
2327
|
+
* labelled with their original timeframe and paused until it is displayed again.
|
|
2328
|
+
*/
|
|
2308
2329
|
interface AlertScope {
|
|
2309
2330
|
symbol?: string;
|
|
2310
2331
|
exchange?: string;
|
|
@@ -5284,6 +5305,20 @@ declare class Chart {
|
|
|
5284
5305
|
*/
|
|
5285
5306
|
drawingState(): unknown;
|
|
5286
5307
|
setDrawingState(value: unknown): void;
|
|
5308
|
+
/**
|
|
5309
|
+
* A price rounded to the tick the pane's own axis is written with.
|
|
5310
|
+
*
|
|
5311
|
+
* A dragged alert's price comes from a pointer, and a pixel maps to a price
|
|
5312
|
+
* with a dozen decimals behind it: dropped where the axis reads 1255.90 it
|
|
5313
|
+
* was stored as 1255.8706204379562, a price the instrument cannot trade at
|
|
5314
|
+
* and a number nothing in the interface could show. The scale already knows
|
|
5315
|
+
* the tick, because it is the one the axis is written with, so this is the
|
|
5316
|
+
* chart's answer rather than something every host works out again.
|
|
5317
|
+
*
|
|
5318
|
+
* A scale with no declared tick rounds nothing: there is no tick to round to
|
|
5319
|
+
* and inventing one would move a price somebody chose.
|
|
5320
|
+
*/
|
|
5321
|
+
snapPrice(paneIndex: number, price: number): number;
|
|
5287
5322
|
/** Detached JSON state, also available when no alert controller is attached. */
|
|
5288
5323
|
alertState(): AlertsDocument | undefined;
|
|
5289
5324
|
/** Runtime snapshot. JSON safety of opaque payloads is checked when state is read. */
|
|
@@ -5491,6 +5526,7 @@ declare class Chart {
|
|
|
5491
5526
|
*/
|
|
5492
5527
|
private readonly _onPointerUpNative;
|
|
5493
5528
|
private readonly _onPointerCancel;
|
|
5529
|
+
private readonly _onLostPointerCapture;
|
|
5494
5530
|
private _brandingHit;
|
|
5495
5531
|
private readonly _onPointerLeave;
|
|
5496
5532
|
private readonly _onWheel;
|
|
@@ -9572,6 +9608,8 @@ declare function roundToTick(value: number, step: number): number;
|
|
|
9572
9608
|
declare class AlertController {
|
|
9573
9609
|
private readonly _chart;
|
|
9574
9610
|
private readonly _records;
|
|
9611
|
+
/** The alert whose line the pointer is over, for a key that acts on it. */
|
|
9612
|
+
private _hovered;
|
|
9575
9613
|
private readonly _off;
|
|
9576
9614
|
private readonly _now;
|
|
9577
9615
|
private readonly _drawings;
|
|
@@ -9586,6 +9624,14 @@ declare class AlertController {
|
|
|
9586
9624
|
private _drag;
|
|
9587
9625
|
constructor(_chart: AlertChartHost, options?: AlertControllerOptions);
|
|
9588
9626
|
private _dragAvailability;
|
|
9627
|
+
/**
|
|
9628
|
+
* The alert the pointer is over, or none.
|
|
9629
|
+
*
|
|
9630
|
+
* Offered so a host can bind a key to it. The controller does not bind keys
|
|
9631
|
+
* itself: it owns no input and a chart embedded without the widget shell has
|
|
9632
|
+
* its own idea of what a keystroke means.
|
|
9633
|
+
*/
|
|
9634
|
+
hovered(): string | undefined;
|
|
9589
9635
|
private _dragPrice;
|
|
9590
9636
|
private _startDrag;
|
|
9591
9637
|
private _cancelDrag;
|