@luxalgo/vela 0.6.21 → 0.7.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/{DataProvider-Cb-2lC5O.d.ts → DataProvider-Bu9E5Zh5.d.ts} +1 -1
- package/dist/{DataProvider-UtWw2CgJ.d.cts → DataProvider-Ck2qyS_9.d.cts} +1 -1
- package/dist/{chunk-BRPFYKTT.js → chunk-A347YL2P.js} +30 -7
- package/dist/{chunk-TRZQQUTR.js → chunk-A4G64KVF.js} +1442 -126
- package/dist/{chunk-T5Z5YUCF.js → chunk-CZRNTHD6.js} +24 -2
- package/dist/{chunk-XCBJU674.js → chunk-UHXG5J7C.js} +1 -1
- package/dist/{contributions-D8HdlKmp.d.cts → contributions-BjQ7hyIx.d.ts} +108 -3
- package/dist/{contributions-FqIWhN4p.d.ts → contributions-Cv2Mutvn.d.cts} +108 -3
- package/dist/index.cjs +1465 -125
- package/dist/index.d.cts +76 -20
- package/dist/index.d.ts +76 -20
- package/dist/index.js +2 -2
- package/dist/{options-BCRmYALw.d.cts → options-ex2_gtKp.d.cts} +200 -12
- package/dist/{options-BCRmYALw.d.ts → options-ex2_gtKp.d.ts} +200 -12
- package/dist/{plugin-B4mnNAeh.d.ts → plugin-CiyhU7pi.d.ts} +3 -3
- package/dist/{plugin-Ccupy_BV.d.cts → plugin-absNH7Yn.d.cts} +3 -3
- package/dist/plugin.d.cts +4 -4
- package/dist/plugin.d.ts +4 -4
- package/dist/providers/binance.d.cts +2 -2
- package/dist/providers/binance.d.ts +2 -2
- package/dist/providers/coinbase.d.cts +2 -2
- package/dist/providers/coinbase.d.ts +2 -2
- package/dist/providers/hyperliquid.d.cts +2 -2
- package/dist/providers/hyperliquid.d.ts +2 -2
- package/dist/{statusline-model-CCP1zm_Z.d.ts → statusline-model-BXoU4Kua.d.ts} +8 -4
- package/dist/{statusline-model-E7CMw5pQ.d.cts → statusline-model-cRhPBLPO.d.cts} +8 -4
- package/dist/ui.cjs +24 -2
- package/dist/ui.d.cts +9 -3
- package/dist/ui.d.ts +9 -3
- package/dist/ui.js +2 -2
- package/dist/vela.global.js +1465 -125
- package/dist/vela.global.min.js +77 -53
- package/dist/widget.cjs +1490 -129
- package/dist/widget.d.cts +6 -6
- package/dist/widget.d.ts +6 -6
- package/dist/widget.js +5 -5
- package/dist/workspace.cjs +1490 -129
- package/dist/workspace.d.cts +8 -5
- package/dist/workspace.d.ts +8 -5
- package/dist/workspace.js +4 -4
- package/package.json +1 -1
|
@@ -495,6 +495,8 @@ interface IndicatorModel {
|
|
|
495
495
|
native?: {
|
|
496
496
|
type: string;
|
|
497
497
|
};
|
|
498
|
+
/** `false` ⇒ no legend row and no pane listing for this indicator (host-owned chrome); absent ⇒ a row. */
|
|
499
|
+
legend?: boolean;
|
|
498
500
|
/**
|
|
499
501
|
* Value-axis override for the pane this indicator OWNS — declared by content that is
|
|
500
502
|
* not value-mapped (e.g. a bespoke renderer layer painting in pixel bands), where a
|
|
@@ -626,6 +628,35 @@ type ScenePatch = ValuePatch | SchemaPatch;
|
|
|
626
628
|
/** A function that detaches a previously-registered subscription. */
|
|
627
629
|
type Unsubscribe = () => void;
|
|
628
630
|
|
|
631
|
+
/**
|
|
632
|
+
* A once-per-second wall-clock pulse. Every subscriber receives the SAME `now` for a
|
|
633
|
+
* given second, so chrome that displays time (a bottom-bar clock, a countdown-to-bar-close
|
|
634
|
+
* chip) can be driven from one source and never disagrees about which second it is.
|
|
635
|
+
*/
|
|
636
|
+
interface WallClock {
|
|
637
|
+
/** Called shortly after every wall-clock second boundary with that instant (epoch ms). */
|
|
638
|
+
onTick(cb: (now: number) => void): Unsubscribe;
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* A {@link WallClock} aligned to the wall clock's second boundaries. Free-running
|
|
642
|
+
* `setInterval(1000)` timers start at an arbitrary sub-second phase and slide against
|
|
643
|
+
* each other, so two of them sample different seconds part of the time; this one
|
|
644
|
+
* re-arms a `setTimeout` to the NEXT boundary after every tick, so it fires just past
|
|
645
|
+
* `hh:mm:ss.000` regardless of when it was started or how long the callback took (a
|
|
646
|
+
* throttled background tab simply skips seconds — it never drifts). Runs only while it
|
|
647
|
+
* has subscribers: zero idle timers when nothing displays time.
|
|
648
|
+
*/
|
|
649
|
+
declare class SecondClock implements WallClock {
|
|
650
|
+
private readonly now;
|
|
651
|
+
private readonly subs;
|
|
652
|
+
private timer;
|
|
653
|
+
constructor(now?: () => number);
|
|
654
|
+
onTick(cb: (now: number) => void): Unsubscribe;
|
|
655
|
+
/** Milliseconds from `now` to just past the next second boundary. */
|
|
656
|
+
static delayToNextSecond(now: number): number;
|
|
657
|
+
private arm;
|
|
658
|
+
}
|
|
659
|
+
|
|
629
660
|
/**
|
|
630
661
|
* Async series access for data-driven drawings — the ranged, any-timeframe sibling
|
|
631
662
|
* of {@link Projector.barsInRange}. Painting stays synchronous: a read either serves
|
|
@@ -1164,6 +1195,103 @@ interface IDrawingsRendererPort {
|
|
|
1164
1195
|
onDrawingIntent(cb: (intent: DrawingIntent) => void): Unsubscribe;
|
|
1165
1196
|
}
|
|
1166
1197
|
|
|
1198
|
+
/** The built-in glyph outlines. */
|
|
1199
|
+
type MarkShape = 'circle' | 'square' | 'diamond' | 'pin';
|
|
1200
|
+
/**
|
|
1201
|
+
* How a mark looks on the lane: a colored token carrying either a short letter or a
|
|
1202
|
+
* registered icon (`registerIcon` from `vela/ui` — an id, never inline markup, so a mark
|
|
1203
|
+
* payload can come from data without ever carrying SVG). `icon` wins over `letter`
|
|
1204
|
+
* when both are given; the symbol's ink is auto-contrasted against `color`.
|
|
1205
|
+
*/
|
|
1206
|
+
interface MarkGlyph {
|
|
1207
|
+
/** Token outline (default `'circle'`). */
|
|
1208
|
+
shape?: MarkShape;
|
|
1209
|
+
/** Token fill — any CSS color. */
|
|
1210
|
+
color: string;
|
|
1211
|
+
/** One or two characters drawn inside the token (`'D'`, `'E'`, `'!'`). */
|
|
1212
|
+
letter?: string;
|
|
1213
|
+
/** Icon id from the icon registry, drawn inside the token. */
|
|
1214
|
+
icon?: string;
|
|
1215
|
+
}
|
|
1216
|
+
/** One row of a structured panel — the callout vocabulary plus a label/value field. */
|
|
1217
|
+
type MarkPanelItem = {
|
|
1218
|
+
type: 'text';
|
|
1219
|
+
text: string;
|
|
1220
|
+
} | {
|
|
1221
|
+
type: 'field';
|
|
1222
|
+
label: string;
|
|
1223
|
+
value: string;
|
|
1224
|
+
} | {
|
|
1225
|
+
type: 'button';
|
|
1226
|
+
label: string;
|
|
1227
|
+
/** Emphasized (selection-colored) button — the panel's main action. */
|
|
1228
|
+
primary?: boolean;
|
|
1229
|
+
/** Close the popup after `run` (default true). */
|
|
1230
|
+
close?: boolean;
|
|
1231
|
+
run(): void;
|
|
1232
|
+
};
|
|
1233
|
+
/**
|
|
1234
|
+
* What the popup shows for one mark: plain text (escaped), HTML (sanitized through an
|
|
1235
|
+
* allowlist — scripts, styles, frames, event handlers and `javascript:` URLs never
|
|
1236
|
+
* reach the page), or a structured panel of rows and buttons.
|
|
1237
|
+
*/
|
|
1238
|
+
type MarkContent = {
|
|
1239
|
+
text: string;
|
|
1240
|
+
} | {
|
|
1241
|
+
html: string;
|
|
1242
|
+
} | {
|
|
1243
|
+
panel: {
|
|
1244
|
+
items: MarkPanelItem[];
|
|
1245
|
+
};
|
|
1246
|
+
};
|
|
1247
|
+
/** A content value, or a thunk resolved when the popup needs it (details fetched on click). */
|
|
1248
|
+
type MarkContentSource = MarkContent | (() => MarkContent | Promise<MarkContent>);
|
|
1249
|
+
/** One timeline mark. */
|
|
1250
|
+
interface TimelineMark {
|
|
1251
|
+
/** Stable id — re-adding an id replaces the mark. */
|
|
1252
|
+
id: string;
|
|
1253
|
+
/**
|
|
1254
|
+
* The moment the mark belongs to, epoch-ms. The glyph never sits at this exact pixel:
|
|
1255
|
+
* it centers on the bar whose span contains the time (a time falling in a gap — a
|
|
1256
|
+
* weekend, a closed session — goes to the first bar that follows; one past the newest
|
|
1257
|
+
* bar projects onto the extrapolated grid in the right whitespace).
|
|
1258
|
+
*/
|
|
1259
|
+
time: Millis;
|
|
1260
|
+
/** Popup heading — shown above the content whatever its form. */
|
|
1261
|
+
title?: string;
|
|
1262
|
+
glyph: MarkGlyph;
|
|
1263
|
+
/** Hover text on the glyph. */
|
|
1264
|
+
tooltip?: string;
|
|
1265
|
+
/**
|
|
1266
|
+
* The visibility group the mark belongs to (`'dividends'`, `'splits'`). Marks of one
|
|
1267
|
+
* group that land on the same bar cluster into one glyph; groups get a checkbox each
|
|
1268
|
+
* in the chart settings (the Events tab). Define the display label with
|
|
1269
|
+
* `chart.marks.defineGroup`; an undefined group shows its capitalized id.
|
|
1270
|
+
*/
|
|
1271
|
+
group?: string;
|
|
1272
|
+
/** Popup content. Without it a click only emits `mark:click` — the host owns the UI. */
|
|
1273
|
+
content?: MarkContentSource;
|
|
1274
|
+
}
|
|
1275
|
+
/** A visibility group's presentation (see {@link TimelineMark.group}). */
|
|
1276
|
+
interface MarkGroup {
|
|
1277
|
+
id: string;
|
|
1278
|
+
/** The settings checkbox label (`'Dividends'`). */
|
|
1279
|
+
label: string;
|
|
1280
|
+
/** Default visibility before the user toggles it (default true). A persisted choice wins. */
|
|
1281
|
+
visible?: boolean;
|
|
1282
|
+
}
|
|
1283
|
+
/** The `mark:click` payload — every mark under the clicked glyph (a cluster lists them all). */
|
|
1284
|
+
interface MarkClickEvent {
|
|
1285
|
+
/** The cluster's first mark (earliest time, then insertion order). */
|
|
1286
|
+
id: string;
|
|
1287
|
+
/** Every mark in the clicked cluster, in cluster order. */
|
|
1288
|
+
ids: string[];
|
|
1289
|
+
/** The first mark's time, epoch-ms. */
|
|
1290
|
+
time: Millis;
|
|
1291
|
+
/** The cluster's group, when its marks belong to one. */
|
|
1292
|
+
group?: string;
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1167
1295
|
/** What a rendering backend supports — drives graceful degradation + warnings. */
|
|
1168
1296
|
interface RendererCapabilities {
|
|
1169
1297
|
panes: boolean;
|
|
@@ -1194,6 +1322,10 @@ interface RendererCapabilities {
|
|
|
1194
1322
|
* ticks on the price pane, plus the `tradeMarkers` display feature. Absent/false ⇒ the
|
|
1195
1323
|
* channel is carried through mounts/patches but never painted. */
|
|
1196
1324
|
trades?: boolean;
|
|
1325
|
+
/** Timeline marks (`chart.marks`): host events pinned to a bar, painted as glyphs on a lane
|
|
1326
|
+
* above the time axis with a detail popup on click. Absent/false ⇒ the model still fills
|
|
1327
|
+
* (`chart.marks.all()`) but nothing paints. */
|
|
1328
|
+
timelineMarks?: boolean;
|
|
1197
1329
|
/** Whether the renderer provides the in-chart inputs/settings UI. */
|
|
1198
1330
|
inputsUI: boolean;
|
|
1199
1331
|
}
|
|
@@ -1398,6 +1530,15 @@ interface IChartRenderer {
|
|
|
1398
1530
|
* layers omits it.
|
|
1399
1531
|
*/
|
|
1400
1532
|
setNativeData?(type: string, data: unknown): void;
|
|
1533
|
+
/**
|
|
1534
|
+
* Replace the timeline marks + their group definitions (the `chart.marks` model). The
|
|
1535
|
+
* renderer snaps each mark onto its bar, folds same-bar/same-group marks into clusters, and
|
|
1536
|
+
* paints the lane above the time axis; group visibility is its own display state (the
|
|
1537
|
+
* `marks` feature). Present iff `capabilities.timelineMarks`.
|
|
1538
|
+
*/
|
|
1539
|
+
setTimelineMarks?(marks: readonly TimelineMark[], groups: readonly MarkGroup[]): void;
|
|
1540
|
+
/** A timeline-mark glyph was clicked — every mark of its cluster is listed. Present iff `capabilities.timelineMarks`. */
|
|
1541
|
+
onMarkClick?(cb: (e: MarkClickEvent) => void): Unsubscribe;
|
|
1401
1542
|
/**
|
|
1402
1543
|
* Reflect an indicator's live status in its legend row: `'loading'` (a fetch is in flight —
|
|
1403
1544
|
* spinner), `'live'` (live-updating — a distinct pulse), or `'idle'` (nothing). Optional.
|
|
@@ -1624,6 +1765,13 @@ interface IChartRenderer {
|
|
|
1624
1765
|
* pointer-first one. Optional — a renderer without adaptive chrome omits it.
|
|
1625
1766
|
*/
|
|
1626
1767
|
setLayoutMode?(mode: 'mobile' | 'desktop'): void;
|
|
1768
|
+
/**
|
|
1769
|
+
* Drive the renderer's time-of-day displays (the countdown-to-bar-close chip) from the
|
|
1770
|
+
* HOST's second pulse instead of the renderer's own, so they read the same second as
|
|
1771
|
+
* the host's clock chrome. `null` restores the renderer's own pulse. Optional — a
|
|
1772
|
+
* renderer without time-of-day chrome omits it.
|
|
1773
|
+
*/
|
|
1774
|
+
setWallClock?(clock: WallClock | null): void;
|
|
1627
1775
|
/**
|
|
1628
1776
|
* Interactive user-drawings surface. Present iff `capabilities.userDrawings`.
|
|
1629
1777
|
* The core `DrawingController` drives it (commands down) and listens for
|
|
@@ -1735,10 +1883,12 @@ interface VelaOptions extends MarketConfig {
|
|
|
1735
1883
|
* or force `'canvas2d'` / `'webgl2'`. Native renderer only. */
|
|
1736
1884
|
nativeBackend?: NativeBackend;
|
|
1737
1885
|
/** Native-renderer animations. `true`/`false` toggles all; an object configures
|
|
1738
|
-
* each independently
|
|
1739
|
-
*
|
|
1740
|
-
*
|
|
1741
|
-
*
|
|
1886
|
+
* each motion independently — on/off, or its ease duration in ms. Default: eased
|
|
1887
|
+
* **zoom on**, inertial **pan on but snappy** (short glide), gliding **autoscale
|
|
1888
|
+
* on**, first-paint **reveal on**, live-bar glide **off**. Set `{ pan: false }` for an
|
|
1889
|
+
* instant pan with no momentum, `{ zoom: 150 }` for a slower zoom glide,
|
|
1890
|
+
* `{ liveBar: true }` (or a duration in ms) to make the forming candle slide toward
|
|
1891
|
+
* each live tick instead of snapping, `{ intro: false }` to skip the reveal. */
|
|
1742
1892
|
animations?: boolean | AnimationConfig;
|
|
1743
1893
|
/** Neon glow/bloom intensity for line series (0 = off, ~0.6 = strong). WebGL2 only
|
|
1744
1894
|
* — the canvas2d backend ignores it. Default 0. */
|
|
@@ -1773,12 +1923,29 @@ interface SettingsVisibilityPolicy {
|
|
|
1773
1923
|
/** Setting ids to hide — a tab, a group, or a row; an id hides its subtree. */
|
|
1774
1924
|
hidden?: readonly string[];
|
|
1775
1925
|
}
|
|
1776
|
-
/**
|
|
1926
|
+
/**
|
|
1927
|
+
* Per-feature native-renderer animation settings. Every eased motion takes
|
|
1928
|
+
* `boolean | number`: `false`/`0` = off (the motion is instant), `true` = the built-in
|
|
1929
|
+
* duration, a number = its ease time-constant in ms — the motion covers ~63% of the
|
|
1930
|
+
* remaining distance per time-constant and is visually settled after about three of
|
|
1931
|
+
* them (clamped to {@link ANIMATION_EASE_MAX_MS}).
|
|
1932
|
+
*/
|
|
1777
1933
|
interface AnimationConfig {
|
|
1778
|
-
/** Eased cursor-anchored wheel-zoom
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
pan
|
|
1934
|
+
/** Eased cursor-anchored wheel-zoom: the bar spacing glides toward each wheel notch's
|
|
1935
|
+
* target instead of jumping. Default `true` ({@link ZOOM_EASE_DEFAULT_MS}). */
|
|
1936
|
+
zoom?: boolean | number;
|
|
1937
|
+
/** Inertial/kinetic pan — the velocity a drag releases with decays over this
|
|
1938
|
+
* time-constant (a short, snappy glide by default; `false` stops dead). Default
|
|
1939
|
+
* `true` ({@link PAN_INERTIA_DEFAULT_MS}). */
|
|
1940
|
+
pan?: boolean | number;
|
|
1941
|
+
/** The programmatic scroll glide — the scroll-to-latest button, `chart.panBy`, the
|
|
1942
|
+
* keyboard pan keys — easing the view toward its target at constant zoom. Default:
|
|
1943
|
+
* follows `pan` on/off, at {@link SCROLL_EASE_DEFAULT_MS} when on. */
|
|
1944
|
+
scroll?: boolean | number;
|
|
1945
|
+
/** Autoscale glide: while a zoom or fling is in flight the price scale eases toward
|
|
1946
|
+
* its new window instead of snapping every frame. Default `true`
|
|
1947
|
+
* ({@link AUTOSCALE_EASE_DEFAULT_MS}). */
|
|
1948
|
+
autoscale?: boolean | number;
|
|
1782
1949
|
/** Glide of the forming bar: on a live tick the displayed high/low/close ease toward
|
|
1783
1950
|
* the new values instead of snapping (the price line and axis label follow). `true`
|
|
1784
1951
|
* uses the default duration ({@link LIVE_BAR_EASE_DEFAULT_MS}); a number is the ease
|
|
@@ -1786,6 +1953,24 @@ interface AnimationConfig {
|
|
|
1786
1953
|
* {@link LIVE_BAR_EASE_MAX_MS}); `false`/`0` snaps. A new bar always snaps. Default
|
|
1787
1954
|
* `false` — the painted candle is then never behind the real data. */
|
|
1788
1955
|
liveBar?: boolean | number;
|
|
1956
|
+
/** The first-paint reveal: candles draw themselves in, left to right, when they first
|
|
1957
|
+
* appear. `true` = the default `'settle'` style (an overshoot that eases back);
|
|
1958
|
+
* `'grow'` = a plain ease-out; `false` = no reveal; an object picks the style and/or
|
|
1959
|
+
* the `duration` of the whole sweep in ms (default {@link INTRO_DURATION_DEFAULT_MS};
|
|
1960
|
+
* clamped to {@link INTRO_DURATION_MAX_MS}). Default `true`. */
|
|
1961
|
+
intro?: boolean | IntroStyle | IntroConfig;
|
|
1962
|
+
}
|
|
1963
|
+
/** The first-paint reveal styles: `settle` overshoots and eases back, `grow` eases out. */
|
|
1964
|
+
type IntroStyle = 'settle' | 'grow';
|
|
1965
|
+
/** Object form of `animations.intro` — style and/or sweep duration (ms). */
|
|
1966
|
+
interface IntroConfig {
|
|
1967
|
+
style?: IntroStyle;
|
|
1968
|
+
duration?: number;
|
|
1969
|
+
}
|
|
1970
|
+
/** A resolved `animations.intro`: `style: false` = no reveal. */
|
|
1971
|
+
interface IntroAnimation {
|
|
1972
|
+
style: IntroStyle | false;
|
|
1973
|
+
duration: number;
|
|
1789
1974
|
}
|
|
1790
1975
|
/** Native geometry-layer backend selection. */
|
|
1791
1976
|
type NativeBackend = 'auto' | 'canvas2d' | 'webgl2';
|
|
@@ -1803,9 +1988,12 @@ interface RendererDisplayOptions {
|
|
|
1803
1988
|
currentPriceLine: boolean;
|
|
1804
1989
|
logScale: boolean;
|
|
1805
1990
|
nativeBackend: NativeBackend;
|
|
1806
|
-
animZoom:
|
|
1807
|
-
animPan:
|
|
1991
|
+
animZoom: number;
|
|
1992
|
+
animPan: number;
|
|
1993
|
+
animScroll: number;
|
|
1994
|
+
animAutoscale: number;
|
|
1808
1995
|
animLiveBar: number;
|
|
1996
|
+
animIntro: IntroAnimation;
|
|
1809
1997
|
glow: number;
|
|
1810
1998
|
upColor: string;
|
|
1811
1999
|
downColor: string;
|
|
@@ -1860,4 +2048,4 @@ interface AddIndicatorOptions {
|
|
|
1860
2048
|
title?: string;
|
|
1861
2049
|
}
|
|
1862
2050
|
|
|
1863
|
-
export { type
|
|
2051
|
+
export { type DataWindowOHLC as $, type AxisLongPressEvent as A, type ToolbarDefinition as B, type CrosshairEvent as C, Drawing as D, type AddIndicatorOptions as E, type AnimationConfig as F, type Background as G, type BoxFontFamily as H, type InputValue as I, type BoxHAlign as J, type BoxTextSize as K, type LineStyle as L, type MarketConfig as M, type NativeBackend as N, type OHLCV as O, type PriceStyle as P, type BoxVAlign as Q, type RendererCapabilities as R, type SerializedDrawing as S, type ThemeName as T, type Unsubscribe as U, type VisibleRangePreset as V, type WallClock as W, type CandleBarColor as X, type CandleSeries as Y, type CandleStyle as Z, type DataWindowGroup as _, type VisibleRange as a, type TableMerge as a$, type DataWindowRow as a0, type DirtyRange as a1, type DrawingBox as a2, type DrawingExtend as a3, type DrawingIntent as a4, type DrawingLabel as a5, type DrawingLine as a6, type DrawingLinefill as a7, type DrawingMode as a8, type DrawingPoint as a9, type MarkGlyph as aA, type MarkPanelItem as aB, type MarkShape as aC, type MarkerPoint as aD, type MarkerSeries as aE, type MarketSnapshot as aF, type MarketSwitch as aG, type PaneAxis as aH, type PaneAxisBand as aI, type PaneHint as aJ, type PaneKind as aK, type PolylinePoint as aL, type PriceLine as aM, type Projector as aN, type ProviderName as aO, type RendererConstructor as aP, type Scene as aQ, type SchemaPatch as aR, SecondClock as aS, type SeriesKind as aT, type SeriesPoint as aU, type SeriesSpec as aV, type SeriesValueDelta as aW, type SettingsField as aX, type SettingsSchema as aY, type SettingsVisibilityPolicy as aZ, type TableCell as a_, type DrawingPolyline as aa, type DrawingSeriesBar as ab, type DrawingSeriesGateway as ac, type DrawingSeriesState as ad, type DrawingStyle as ae, type DrawingTable as af, type DrawingText as ag, type DrawingXLoc as ah, type DrawingsOption as ai, type Fill as aj, type FillGradientStop as ak, type IndicatorMeta as al, type InputCondition as am, type InputSchema as an, type InputType as ao, type InputWhen as ap, type IntroAnimation as aq, type IntroConfig as ar, type IntroStyle as as, type LabelStyle as at, type LabelYLoc as au, type LineLikeKind as av, type LineLikeSeries as aw, type LineLikeStyle as ax, type MarkContent as ay, type MarkContentSource as az, type VelaOptions as b, type TablePosition as b0, type ToolbarGroupConfig as b1, type TradeExecution as b2, type ValuePatch as b3, buildToolbar as b4, defaultToolbar as b5, inputDeltas as b6, inputVisible as b7, type PaneInfo as b8, type VelaTheme as c, type MarketSession as d, type IChartRenderer as e, type RendererDisplayOptions as f, type IndicatorRenderHandle as g, type IndicatorStatus as h, type Pane as i, type PaneAction as j, type MoveTarget as k, type IndicatorModel as l, type ScenePatch as m, type SymbolPickerFn as n, type LegendActionView as o, type LegendCalloutView as p, type InputChangeEvent as q, type ClickEvent as r, type TimelineMark as s, type MarkGroup as t, type MarkClickEvent as u, type DataWindowReadout as v, type IDrawingsRendererPort as w, type Millis as x, type SnapMode as y, type DrawingTypeKey as z };
|
|
@@ -495,6 +495,8 @@ interface IndicatorModel {
|
|
|
495
495
|
native?: {
|
|
496
496
|
type: string;
|
|
497
497
|
};
|
|
498
|
+
/** `false` ⇒ no legend row and no pane listing for this indicator (host-owned chrome); absent ⇒ a row. */
|
|
499
|
+
legend?: boolean;
|
|
498
500
|
/**
|
|
499
501
|
* Value-axis override for the pane this indicator OWNS — declared by content that is
|
|
500
502
|
* not value-mapped (e.g. a bespoke renderer layer painting in pixel bands), where a
|
|
@@ -626,6 +628,35 @@ type ScenePatch = ValuePatch | SchemaPatch;
|
|
|
626
628
|
/** A function that detaches a previously-registered subscription. */
|
|
627
629
|
type Unsubscribe = () => void;
|
|
628
630
|
|
|
631
|
+
/**
|
|
632
|
+
* A once-per-second wall-clock pulse. Every subscriber receives the SAME `now` for a
|
|
633
|
+
* given second, so chrome that displays time (a bottom-bar clock, a countdown-to-bar-close
|
|
634
|
+
* chip) can be driven from one source and never disagrees about which second it is.
|
|
635
|
+
*/
|
|
636
|
+
interface WallClock {
|
|
637
|
+
/** Called shortly after every wall-clock second boundary with that instant (epoch ms). */
|
|
638
|
+
onTick(cb: (now: number) => void): Unsubscribe;
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* A {@link WallClock} aligned to the wall clock's second boundaries. Free-running
|
|
642
|
+
* `setInterval(1000)` timers start at an arbitrary sub-second phase and slide against
|
|
643
|
+
* each other, so two of them sample different seconds part of the time; this one
|
|
644
|
+
* re-arms a `setTimeout` to the NEXT boundary after every tick, so it fires just past
|
|
645
|
+
* `hh:mm:ss.000` regardless of when it was started or how long the callback took (a
|
|
646
|
+
* throttled background tab simply skips seconds — it never drifts). Runs only while it
|
|
647
|
+
* has subscribers: zero idle timers when nothing displays time.
|
|
648
|
+
*/
|
|
649
|
+
declare class SecondClock implements WallClock {
|
|
650
|
+
private readonly now;
|
|
651
|
+
private readonly subs;
|
|
652
|
+
private timer;
|
|
653
|
+
constructor(now?: () => number);
|
|
654
|
+
onTick(cb: (now: number) => void): Unsubscribe;
|
|
655
|
+
/** Milliseconds from `now` to just past the next second boundary. */
|
|
656
|
+
static delayToNextSecond(now: number): number;
|
|
657
|
+
private arm;
|
|
658
|
+
}
|
|
659
|
+
|
|
629
660
|
/**
|
|
630
661
|
* Async series access for data-driven drawings — the ranged, any-timeframe sibling
|
|
631
662
|
* of {@link Projector.barsInRange}. Painting stays synchronous: a read either serves
|
|
@@ -1164,6 +1195,103 @@ interface IDrawingsRendererPort {
|
|
|
1164
1195
|
onDrawingIntent(cb: (intent: DrawingIntent) => void): Unsubscribe;
|
|
1165
1196
|
}
|
|
1166
1197
|
|
|
1198
|
+
/** The built-in glyph outlines. */
|
|
1199
|
+
type MarkShape = 'circle' | 'square' | 'diamond' | 'pin';
|
|
1200
|
+
/**
|
|
1201
|
+
* How a mark looks on the lane: a colored token carrying either a short letter or a
|
|
1202
|
+
* registered icon (`registerIcon` from `vela/ui` — an id, never inline markup, so a mark
|
|
1203
|
+
* payload can come from data without ever carrying SVG). `icon` wins over `letter`
|
|
1204
|
+
* when both are given; the symbol's ink is auto-contrasted against `color`.
|
|
1205
|
+
*/
|
|
1206
|
+
interface MarkGlyph {
|
|
1207
|
+
/** Token outline (default `'circle'`). */
|
|
1208
|
+
shape?: MarkShape;
|
|
1209
|
+
/** Token fill — any CSS color. */
|
|
1210
|
+
color: string;
|
|
1211
|
+
/** One or two characters drawn inside the token (`'D'`, `'E'`, `'!'`). */
|
|
1212
|
+
letter?: string;
|
|
1213
|
+
/** Icon id from the icon registry, drawn inside the token. */
|
|
1214
|
+
icon?: string;
|
|
1215
|
+
}
|
|
1216
|
+
/** One row of a structured panel — the callout vocabulary plus a label/value field. */
|
|
1217
|
+
type MarkPanelItem = {
|
|
1218
|
+
type: 'text';
|
|
1219
|
+
text: string;
|
|
1220
|
+
} | {
|
|
1221
|
+
type: 'field';
|
|
1222
|
+
label: string;
|
|
1223
|
+
value: string;
|
|
1224
|
+
} | {
|
|
1225
|
+
type: 'button';
|
|
1226
|
+
label: string;
|
|
1227
|
+
/** Emphasized (selection-colored) button — the panel's main action. */
|
|
1228
|
+
primary?: boolean;
|
|
1229
|
+
/** Close the popup after `run` (default true). */
|
|
1230
|
+
close?: boolean;
|
|
1231
|
+
run(): void;
|
|
1232
|
+
};
|
|
1233
|
+
/**
|
|
1234
|
+
* What the popup shows for one mark: plain text (escaped), HTML (sanitized through an
|
|
1235
|
+
* allowlist — scripts, styles, frames, event handlers and `javascript:` URLs never
|
|
1236
|
+
* reach the page), or a structured panel of rows and buttons.
|
|
1237
|
+
*/
|
|
1238
|
+
type MarkContent = {
|
|
1239
|
+
text: string;
|
|
1240
|
+
} | {
|
|
1241
|
+
html: string;
|
|
1242
|
+
} | {
|
|
1243
|
+
panel: {
|
|
1244
|
+
items: MarkPanelItem[];
|
|
1245
|
+
};
|
|
1246
|
+
};
|
|
1247
|
+
/** A content value, or a thunk resolved when the popup needs it (details fetched on click). */
|
|
1248
|
+
type MarkContentSource = MarkContent | (() => MarkContent | Promise<MarkContent>);
|
|
1249
|
+
/** One timeline mark. */
|
|
1250
|
+
interface TimelineMark {
|
|
1251
|
+
/** Stable id — re-adding an id replaces the mark. */
|
|
1252
|
+
id: string;
|
|
1253
|
+
/**
|
|
1254
|
+
* The moment the mark belongs to, epoch-ms. The glyph never sits at this exact pixel:
|
|
1255
|
+
* it centers on the bar whose span contains the time (a time falling in a gap — a
|
|
1256
|
+
* weekend, a closed session — goes to the first bar that follows; one past the newest
|
|
1257
|
+
* bar projects onto the extrapolated grid in the right whitespace).
|
|
1258
|
+
*/
|
|
1259
|
+
time: Millis;
|
|
1260
|
+
/** Popup heading — shown above the content whatever its form. */
|
|
1261
|
+
title?: string;
|
|
1262
|
+
glyph: MarkGlyph;
|
|
1263
|
+
/** Hover text on the glyph. */
|
|
1264
|
+
tooltip?: string;
|
|
1265
|
+
/**
|
|
1266
|
+
* The visibility group the mark belongs to (`'dividends'`, `'splits'`). Marks of one
|
|
1267
|
+
* group that land on the same bar cluster into one glyph; groups get a checkbox each
|
|
1268
|
+
* in the chart settings (the Events tab). Define the display label with
|
|
1269
|
+
* `chart.marks.defineGroup`; an undefined group shows its capitalized id.
|
|
1270
|
+
*/
|
|
1271
|
+
group?: string;
|
|
1272
|
+
/** Popup content. Without it a click only emits `mark:click` — the host owns the UI. */
|
|
1273
|
+
content?: MarkContentSource;
|
|
1274
|
+
}
|
|
1275
|
+
/** A visibility group's presentation (see {@link TimelineMark.group}). */
|
|
1276
|
+
interface MarkGroup {
|
|
1277
|
+
id: string;
|
|
1278
|
+
/** The settings checkbox label (`'Dividends'`). */
|
|
1279
|
+
label: string;
|
|
1280
|
+
/** Default visibility before the user toggles it (default true). A persisted choice wins. */
|
|
1281
|
+
visible?: boolean;
|
|
1282
|
+
}
|
|
1283
|
+
/** The `mark:click` payload — every mark under the clicked glyph (a cluster lists them all). */
|
|
1284
|
+
interface MarkClickEvent {
|
|
1285
|
+
/** The cluster's first mark (earliest time, then insertion order). */
|
|
1286
|
+
id: string;
|
|
1287
|
+
/** Every mark in the clicked cluster, in cluster order. */
|
|
1288
|
+
ids: string[];
|
|
1289
|
+
/** The first mark's time, epoch-ms. */
|
|
1290
|
+
time: Millis;
|
|
1291
|
+
/** The cluster's group, when its marks belong to one. */
|
|
1292
|
+
group?: string;
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1167
1295
|
/** What a rendering backend supports — drives graceful degradation + warnings. */
|
|
1168
1296
|
interface RendererCapabilities {
|
|
1169
1297
|
panes: boolean;
|
|
@@ -1194,6 +1322,10 @@ interface RendererCapabilities {
|
|
|
1194
1322
|
* ticks on the price pane, plus the `tradeMarkers` display feature. Absent/false ⇒ the
|
|
1195
1323
|
* channel is carried through mounts/patches but never painted. */
|
|
1196
1324
|
trades?: boolean;
|
|
1325
|
+
/** Timeline marks (`chart.marks`): host events pinned to a bar, painted as glyphs on a lane
|
|
1326
|
+
* above the time axis with a detail popup on click. Absent/false ⇒ the model still fills
|
|
1327
|
+
* (`chart.marks.all()`) but nothing paints. */
|
|
1328
|
+
timelineMarks?: boolean;
|
|
1197
1329
|
/** Whether the renderer provides the in-chart inputs/settings UI. */
|
|
1198
1330
|
inputsUI: boolean;
|
|
1199
1331
|
}
|
|
@@ -1398,6 +1530,15 @@ interface IChartRenderer {
|
|
|
1398
1530
|
* layers omits it.
|
|
1399
1531
|
*/
|
|
1400
1532
|
setNativeData?(type: string, data: unknown): void;
|
|
1533
|
+
/**
|
|
1534
|
+
* Replace the timeline marks + their group definitions (the `chart.marks` model). The
|
|
1535
|
+
* renderer snaps each mark onto its bar, folds same-bar/same-group marks into clusters, and
|
|
1536
|
+
* paints the lane above the time axis; group visibility is its own display state (the
|
|
1537
|
+
* `marks` feature). Present iff `capabilities.timelineMarks`.
|
|
1538
|
+
*/
|
|
1539
|
+
setTimelineMarks?(marks: readonly TimelineMark[], groups: readonly MarkGroup[]): void;
|
|
1540
|
+
/** A timeline-mark glyph was clicked — every mark of its cluster is listed. Present iff `capabilities.timelineMarks`. */
|
|
1541
|
+
onMarkClick?(cb: (e: MarkClickEvent) => void): Unsubscribe;
|
|
1401
1542
|
/**
|
|
1402
1543
|
* Reflect an indicator's live status in its legend row: `'loading'` (a fetch is in flight —
|
|
1403
1544
|
* spinner), `'live'` (live-updating — a distinct pulse), or `'idle'` (nothing). Optional.
|
|
@@ -1624,6 +1765,13 @@ interface IChartRenderer {
|
|
|
1624
1765
|
* pointer-first one. Optional — a renderer without adaptive chrome omits it.
|
|
1625
1766
|
*/
|
|
1626
1767
|
setLayoutMode?(mode: 'mobile' | 'desktop'): void;
|
|
1768
|
+
/**
|
|
1769
|
+
* Drive the renderer's time-of-day displays (the countdown-to-bar-close chip) from the
|
|
1770
|
+
* HOST's second pulse instead of the renderer's own, so they read the same second as
|
|
1771
|
+
* the host's clock chrome. `null` restores the renderer's own pulse. Optional — a
|
|
1772
|
+
* renderer without time-of-day chrome omits it.
|
|
1773
|
+
*/
|
|
1774
|
+
setWallClock?(clock: WallClock | null): void;
|
|
1627
1775
|
/**
|
|
1628
1776
|
* Interactive user-drawings surface. Present iff `capabilities.userDrawings`.
|
|
1629
1777
|
* The core `DrawingController` drives it (commands down) and listens for
|
|
@@ -1735,10 +1883,12 @@ interface VelaOptions extends MarketConfig {
|
|
|
1735
1883
|
* or force `'canvas2d'` / `'webgl2'`. Native renderer only. */
|
|
1736
1884
|
nativeBackend?: NativeBackend;
|
|
1737
1885
|
/** Native-renderer animations. `true`/`false` toggles all; an object configures
|
|
1738
|
-
* each independently
|
|
1739
|
-
*
|
|
1740
|
-
*
|
|
1741
|
-
*
|
|
1886
|
+
* each motion independently — on/off, or its ease duration in ms. Default: eased
|
|
1887
|
+
* **zoom on**, inertial **pan on but snappy** (short glide), gliding **autoscale
|
|
1888
|
+
* on**, first-paint **reveal on**, live-bar glide **off**. Set `{ pan: false }` for an
|
|
1889
|
+
* instant pan with no momentum, `{ zoom: 150 }` for a slower zoom glide,
|
|
1890
|
+
* `{ liveBar: true }` (or a duration in ms) to make the forming candle slide toward
|
|
1891
|
+
* each live tick instead of snapping, `{ intro: false }` to skip the reveal. */
|
|
1742
1892
|
animations?: boolean | AnimationConfig;
|
|
1743
1893
|
/** Neon glow/bloom intensity for line series (0 = off, ~0.6 = strong). WebGL2 only
|
|
1744
1894
|
* — the canvas2d backend ignores it. Default 0. */
|
|
@@ -1773,12 +1923,29 @@ interface SettingsVisibilityPolicy {
|
|
|
1773
1923
|
/** Setting ids to hide — a tab, a group, or a row; an id hides its subtree. */
|
|
1774
1924
|
hidden?: readonly string[];
|
|
1775
1925
|
}
|
|
1776
|
-
/**
|
|
1926
|
+
/**
|
|
1927
|
+
* Per-feature native-renderer animation settings. Every eased motion takes
|
|
1928
|
+
* `boolean | number`: `false`/`0` = off (the motion is instant), `true` = the built-in
|
|
1929
|
+
* duration, a number = its ease time-constant in ms — the motion covers ~63% of the
|
|
1930
|
+
* remaining distance per time-constant and is visually settled after about three of
|
|
1931
|
+
* them (clamped to {@link ANIMATION_EASE_MAX_MS}).
|
|
1932
|
+
*/
|
|
1777
1933
|
interface AnimationConfig {
|
|
1778
|
-
/** Eased cursor-anchored wheel-zoom
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
pan
|
|
1934
|
+
/** Eased cursor-anchored wheel-zoom: the bar spacing glides toward each wheel notch's
|
|
1935
|
+
* target instead of jumping. Default `true` ({@link ZOOM_EASE_DEFAULT_MS}). */
|
|
1936
|
+
zoom?: boolean | number;
|
|
1937
|
+
/** Inertial/kinetic pan — the velocity a drag releases with decays over this
|
|
1938
|
+
* time-constant (a short, snappy glide by default; `false` stops dead). Default
|
|
1939
|
+
* `true` ({@link PAN_INERTIA_DEFAULT_MS}). */
|
|
1940
|
+
pan?: boolean | number;
|
|
1941
|
+
/** The programmatic scroll glide — the scroll-to-latest button, `chart.panBy`, the
|
|
1942
|
+
* keyboard pan keys — easing the view toward its target at constant zoom. Default:
|
|
1943
|
+
* follows `pan` on/off, at {@link SCROLL_EASE_DEFAULT_MS} when on. */
|
|
1944
|
+
scroll?: boolean | number;
|
|
1945
|
+
/** Autoscale glide: while a zoom or fling is in flight the price scale eases toward
|
|
1946
|
+
* its new window instead of snapping every frame. Default `true`
|
|
1947
|
+
* ({@link AUTOSCALE_EASE_DEFAULT_MS}). */
|
|
1948
|
+
autoscale?: boolean | number;
|
|
1782
1949
|
/** Glide of the forming bar: on a live tick the displayed high/low/close ease toward
|
|
1783
1950
|
* the new values instead of snapping (the price line and axis label follow). `true`
|
|
1784
1951
|
* uses the default duration ({@link LIVE_BAR_EASE_DEFAULT_MS}); a number is the ease
|
|
@@ -1786,6 +1953,24 @@ interface AnimationConfig {
|
|
|
1786
1953
|
* {@link LIVE_BAR_EASE_MAX_MS}); `false`/`0` snaps. A new bar always snaps. Default
|
|
1787
1954
|
* `false` — the painted candle is then never behind the real data. */
|
|
1788
1955
|
liveBar?: boolean | number;
|
|
1956
|
+
/** The first-paint reveal: candles draw themselves in, left to right, when they first
|
|
1957
|
+
* appear. `true` = the default `'settle'` style (an overshoot that eases back);
|
|
1958
|
+
* `'grow'` = a plain ease-out; `false` = no reveal; an object picks the style and/or
|
|
1959
|
+
* the `duration` of the whole sweep in ms (default {@link INTRO_DURATION_DEFAULT_MS};
|
|
1960
|
+
* clamped to {@link INTRO_DURATION_MAX_MS}). Default `true`. */
|
|
1961
|
+
intro?: boolean | IntroStyle | IntroConfig;
|
|
1962
|
+
}
|
|
1963
|
+
/** The first-paint reveal styles: `settle` overshoots and eases back, `grow` eases out. */
|
|
1964
|
+
type IntroStyle = 'settle' | 'grow';
|
|
1965
|
+
/** Object form of `animations.intro` — style and/or sweep duration (ms). */
|
|
1966
|
+
interface IntroConfig {
|
|
1967
|
+
style?: IntroStyle;
|
|
1968
|
+
duration?: number;
|
|
1969
|
+
}
|
|
1970
|
+
/** A resolved `animations.intro`: `style: false` = no reveal. */
|
|
1971
|
+
interface IntroAnimation {
|
|
1972
|
+
style: IntroStyle | false;
|
|
1973
|
+
duration: number;
|
|
1789
1974
|
}
|
|
1790
1975
|
/** Native geometry-layer backend selection. */
|
|
1791
1976
|
type NativeBackend = 'auto' | 'canvas2d' | 'webgl2';
|
|
@@ -1803,9 +1988,12 @@ interface RendererDisplayOptions {
|
|
|
1803
1988
|
currentPriceLine: boolean;
|
|
1804
1989
|
logScale: boolean;
|
|
1805
1990
|
nativeBackend: NativeBackend;
|
|
1806
|
-
animZoom:
|
|
1807
|
-
animPan:
|
|
1991
|
+
animZoom: number;
|
|
1992
|
+
animPan: number;
|
|
1993
|
+
animScroll: number;
|
|
1994
|
+
animAutoscale: number;
|
|
1808
1995
|
animLiveBar: number;
|
|
1996
|
+
animIntro: IntroAnimation;
|
|
1809
1997
|
glow: number;
|
|
1810
1998
|
upColor: string;
|
|
1811
1999
|
downColor: string;
|
|
@@ -1860,4 +2048,4 @@ interface AddIndicatorOptions {
|
|
|
1860
2048
|
title?: string;
|
|
1861
2049
|
}
|
|
1862
2050
|
|
|
1863
|
-
export { type
|
|
2051
|
+
export { type DataWindowOHLC as $, type AxisLongPressEvent as A, type ToolbarDefinition as B, type CrosshairEvent as C, Drawing as D, type AddIndicatorOptions as E, type AnimationConfig as F, type Background as G, type BoxFontFamily as H, type InputValue as I, type BoxHAlign as J, type BoxTextSize as K, type LineStyle as L, type MarketConfig as M, type NativeBackend as N, type OHLCV as O, type PriceStyle as P, type BoxVAlign as Q, type RendererCapabilities as R, type SerializedDrawing as S, type ThemeName as T, type Unsubscribe as U, type VisibleRangePreset as V, type WallClock as W, type CandleBarColor as X, type CandleSeries as Y, type CandleStyle as Z, type DataWindowGroup as _, type VisibleRange as a, type TableMerge as a$, type DataWindowRow as a0, type DirtyRange as a1, type DrawingBox as a2, type DrawingExtend as a3, type DrawingIntent as a4, type DrawingLabel as a5, type DrawingLine as a6, type DrawingLinefill as a7, type DrawingMode as a8, type DrawingPoint as a9, type MarkGlyph as aA, type MarkPanelItem as aB, type MarkShape as aC, type MarkerPoint as aD, type MarkerSeries as aE, type MarketSnapshot as aF, type MarketSwitch as aG, type PaneAxis as aH, type PaneAxisBand as aI, type PaneHint as aJ, type PaneKind as aK, type PolylinePoint as aL, type PriceLine as aM, type Projector as aN, type ProviderName as aO, type RendererConstructor as aP, type Scene as aQ, type SchemaPatch as aR, SecondClock as aS, type SeriesKind as aT, type SeriesPoint as aU, type SeriesSpec as aV, type SeriesValueDelta as aW, type SettingsField as aX, type SettingsSchema as aY, type SettingsVisibilityPolicy as aZ, type TableCell as a_, type DrawingPolyline as aa, type DrawingSeriesBar as ab, type DrawingSeriesGateway as ac, type DrawingSeriesState as ad, type DrawingStyle as ae, type DrawingTable as af, type DrawingText as ag, type DrawingXLoc as ah, type DrawingsOption as ai, type Fill as aj, type FillGradientStop as ak, type IndicatorMeta as al, type InputCondition as am, type InputSchema as an, type InputType as ao, type InputWhen as ap, type IntroAnimation as aq, type IntroConfig as ar, type IntroStyle as as, type LabelStyle as at, type LabelYLoc as au, type LineLikeKind as av, type LineLikeSeries as aw, type LineLikeStyle as ax, type MarkContent as ay, type MarkContentSource as az, type VelaOptions as b, type TablePosition as b0, type ToolbarGroupConfig as b1, type TradeExecution as b2, type ValuePatch as b3, buildToolbar as b4, defaultToolbar as b5, inputDeltas as b6, inputVisible as b7, type PaneInfo as b8, type VelaTheme as c, type MarketSession as d, type IChartRenderer as e, type RendererDisplayOptions as f, type IndicatorRenderHandle as g, type IndicatorStatus as h, type Pane as i, type PaneAction as j, type MoveTarget as k, type IndicatorModel as l, type ScenePatch as m, type SymbolPickerFn as n, type LegendActionView as o, type LegendCalloutView as p, type InputChangeEvent as q, type ClickEvent as r, type TimelineMark as s, type MarkGroup as t, type MarkClickEvent as u, type DataWindowReadout as v, type IDrawingsRendererPort as w, type Millis as x, type SnapMode as y, type DrawingTypeKey as z };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as DataControl } from './contributions-
|
|
1
|
+
import { z as DrawingTypeKey, ae as DrawingStyle, S as SerializedDrawing, D as Drawing, aT as SeriesKind, O as OHLCV, c as VelaTheme } from './options-ex2_gtKp.js';
|
|
2
|
+
import { c as DataControl } from './contributions-BjQ7hyIx.js';
|
|
3
3
|
import './side-panel-HF0IAzwf.js';
|
|
4
4
|
import './icons-BZYbJXSV.js';
|
|
5
5
|
import './keymap-CGOz5F5f.js';
|
|
6
|
-
import './DataProvider-
|
|
6
|
+
import './DataProvider-Bu9E5Zh5.js';
|
|
7
7
|
|
|
8
8
|
/** What a drawing type contributes to the toolbar + factory (renderer-neutral). */
|
|
9
9
|
interface DrawingTypeMeta {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as DataControl } from './contributions-
|
|
1
|
+
import { z as DrawingTypeKey, ae as DrawingStyle, S as SerializedDrawing, D as Drawing, aT as SeriesKind, O as OHLCV, c as VelaTheme } from './options-ex2_gtKp.cjs';
|
|
2
|
+
import { c as DataControl } from './contributions-Cv2Mutvn.cjs';
|
|
3
3
|
import './side-panel-HF0IAzwf.cjs';
|
|
4
4
|
import './icons-BZYbJXSV.cjs';
|
|
5
5
|
import './keymap-CGOz5F5f.cjs';
|
|
6
|
-
import './DataProvider-
|
|
6
|
+
import './DataProvider-Ck2qyS_9.cjs';
|
|
7
7
|
|
|
8
8
|
/** What a drawing type contributes to the toolbar + factory (renderer-neutral). */
|
|
9
9
|
interface DrawingTypeMeta {
|