@luxalgo/vela 0.6.4 → 0.6.6

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.
Files changed (41) hide show
  1. package/README.md +16 -16
  2. package/dist/{DataProvider-DrN7ZIou.d.cts → DataProvider-DDUYw2qP.d.cts} +1 -1
  3. package/dist/{DataProvider-BmHkcwvJ.d.ts → DataProvider-JJq7M2it.d.ts} +1 -1
  4. package/dist/{history-CvOtsjT5.d.ts → bottombar-COnL2Sk4.d.ts} +110 -127
  5. package/dist/{history-BmyjaVir.d.cts → bottombar-DeDXbF_K.d.cts} +110 -127
  6. package/dist/{chunk-6FA4TDUF.js → chunk-JQFO2WMU.js} +2666 -2333
  7. package/dist/{chunk-BEJ57HP4.js → chunk-OEUGUXL7.js} +14 -1
  8. package/dist/{chunk-3QX6QOCX.js → chunk-TMXK2SJR.js} +5852 -3340
  9. package/dist/{contributions-2bEmCF9S.d.cts → contributions-BqCIsbaP.d.ts} +108 -4
  10. package/dist/{contributions-DatoAzMx.d.ts → contributions-DNMqrAuw.d.cts} +108 -4
  11. package/dist/index.cjs +2681 -2332
  12. package/dist/index.d.cts +65 -14
  13. package/dist/index.d.ts +65 -14
  14. package/dist/index.js +2 -2
  15. package/dist/{options-YdiaaVjt.d.cts → options-BaVTMXaO.d.cts} +48 -2
  16. package/dist/{options-YdiaaVjt.d.ts → options-BaVTMXaO.d.ts} +48 -2
  17. package/dist/{plugin-CkiStRaI.d.cts → plugin-CN8U2__Q.d.cts} +11 -5
  18. package/dist/{plugin-BeCMF1VQ.d.ts → plugin-WnvNNJOp.d.ts} +11 -5
  19. package/dist/plugin.cjs +16 -0
  20. package/dist/plugin.d.cts +4 -4
  21. package/dist/plugin.d.ts +4 -4
  22. package/dist/plugin.js +1 -1
  23. package/dist/providers/binance.d.cts +2 -2
  24. package/dist/providers/binance.d.ts +2 -2
  25. package/dist/providers/coinbase.d.cts +2 -2
  26. package/dist/providers/coinbase.d.ts +2 -2
  27. package/dist/providers/hyperliquid.d.cts +2 -2
  28. package/dist/providers/hyperliquid.d.ts +2 -2
  29. package/dist/ui.d.cts +1 -1
  30. package/dist/ui.d.ts +1 -1
  31. package/dist/vela.global.js +2661 -2312
  32. package/dist/vela.global.min.js +48 -48
  33. package/dist/widget.cjs +35658 -34074
  34. package/dist/widget.d.cts +39 -271
  35. package/dist/widget.d.ts +39 -271
  36. package/dist/widget.js +60 -1313
  37. package/dist/workspace.cjs +1584 -960
  38. package/dist/workspace.d.cts +111 -15
  39. package/dist/workspace.d.ts +111 -15
  40. package/dist/workspace.js +6 -2281
  41. package/package.json +1 -1
package/dist/widget.d.cts CHANGED
@@ -1,288 +1,54 @@
1
- import { W as WidgetContext, V as Vela, y as SidePanelButton } from './contributions-2bEmCF9S.cjs';
2
- export { ah as DEFAULT_PANEL_ORDER, z as SidePanelDescriptor, A as SidePanelHandle, U as WidgetActionDescriptor, X as WidgetActionTarget, Y as WidgetAttachment, a4 as registerSidePanel, a5 as registerWidgetAction, a6 as registerWidgetAttachment, a8 as sidePanels, ac as unregisterSidePanel, ad as unregisterWidgetAction, ae as unregisterWidgetAttachment, af as widgetActions, ag as widgetAttachments } from './contributions-2bEmCF9S.cjs';
3
- import { b as VelaOptions, d as MarketSession, r as DataWindowReadout } from './options-YdiaaVjt.cjs';
1
+ import { V as Vela, W as WidgetContext, A as SidePanelButton } from './contributions-DNMqrAuw.cjs';
2
+ export { C as CellStateContext, an as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, G as SidePanelDescriptor, H as SidePanelHandle, K as StatePersistenceHandler, Z as WidgetActionDescriptor, _ as WidgetActionTarget, $ as WidgetAttachment, a7 as registerSidePanel, a8 as registerStatePersistence, a9 as registerWidgetAction, aa as registerWidgetAttachment, ac as sidePanels, ad as statePersistenceHandlers, ah as unregisterSidePanel, ai as unregisterStatePersistence, aj as unregisterWidgetAction, ak as unregisterWidgetAttachment, al as widgetActions, am as widgetAttachments } from './contributions-DNMqrAuw.cjs';
3
+ import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, r as DataWindowReadout } from './options-BaVTMXaO.cjs';
4
+ import { b as VelaShellOptions, W as WidgetHistory, a as RangePreset, e as WorkspaceState, P as PanelsState } from './bottombar-DeDXbF_K.cjs';
5
+ export { B as Bottombar, i as BottombarOptions, C as CellState, f as ChartState, I as IndicatorLoader, j as IndicatorManifest, k as IndicatorManifestEntry, l as RANGE_PRESETS, R as ResolvedIndicator, V as VelaStorage, m as WidgetStorage, g as decodeState, h as encodeState, n as localStorageAdapter, r as resolveIndicators, s as sanitizeState } from './bottombar-DeDXbF_K.cjs';
4
6
  import { K as KeymapManager } from './keymap-CGOz5F5f.cjs';
5
- import { W as WidgetHistory, b as VelaShellOptions, e as WorkspaceState, a as RangePreset, i as PersistedState, P as PanelsState } from './history-BmyjaVir.cjs';
6
- export { B as Bottombar, j as BottombarOptions, C as CellState, f as ChartState, I as IndicatorLoader, k as IndicatorManifest, l as IndicatorManifestEntry, m as RANGE_PRESETS, R as ResolvedIndicator, V as VelaStorage, n as WidgetStorage, g as decodeState, h as encodeState, o as legacyWidgetState, p as loadPersisted, q as localStorageAdapter, r as parsePersisted, t as resolveIndicators, s as sanitizeState, u as savePersisted } from './history-BmyjaVir.cjs';
7
- import { a as SymbolDescriptor } from './DataProvider-DrN7ZIou.cjs';
7
+ import { a as SymbolDescriptor } from './DataProvider-DDUYw2qP.cjs';
8
8
  import { d as SidePanel } from './side-panel-CT9ZwIGz.cjs';
9
9
  export { D as DEFAULT_PANEL_MAX_WIDTH, a as DEFAULT_PANEL_MIN_WIDTH, b as DEFAULT_PANEL_WIDTH, S as SidePanelOptions, c as clampPanelWidth } from './side-panel-CT9ZwIGz.cjs';
10
10
 
11
11
  interface VelaWidgetOptions extends VelaOptions, VelaShellOptions {
12
- /** Mirror symbol/timeframe/style/timezone in the URL query (shareable links). A URL
13
- * param wins over persisted state at load. Default false. */
12
+ /** @deprecated No longer supported — the option is ignored (a console warning
13
+ * says so). Mirror `getState()` into your own URL scheme if you need links. */
14
14
  urlState?: boolean;
15
15
  }
16
+ /**
17
+ * @deprecated Use {@link VelaWorkspace} with `layout: false` — the same chart, the
18
+ * same options, the same persisted state (pass `persist: 'vela-widget'` to keep
19
+ * reading this class's storage key). This wrapper delegates everything and will be
20
+ * removed in a future release.
21
+ */
16
22
  declare class VelaWidget {
17
- readonly root: HTMLElement;
18
- /** The shortcut system — widget modules and plugins register their bindings here. */
19
- readonly keymap: KeymapManager;
20
- private readonly opts;
21
- private readonly chartHost;
22
- private readonly topbar;
23
- private readonly statusline;
24
- /** Keeps the statusline's market badge on the symbol's real calendar (see {@link MarketStatusTracker}). */
25
- private readonly marketStatus;
26
- /** Keeps the pre/post-market shading on the symbol's real calendar (see {@link SessionShadingTracker}). */
27
- private readonly sessionShading;
28
- /** Whether the ACTIVE symbol declares real trading sessions (RTH/ETH meaningful) —
29
- * gates the bottombar toggle and the settings dialog's Trading session group. */
30
- private sessionsAvailable;
31
- private readonly watermark;
32
- private readonly bottombar;
33
- private readonly objectTree;
34
- private readonly dataWindow;
35
- /** The side-panel column: the two panels above, plus every contributed one. */
36
- private readonly dock;
37
- private shortcutsHelp;
38
- private readonly contextMenu;
39
- private readonly symbolPicker;
40
- /** Null when the host disabled it (`indicatorPicker: false`). */
41
- private readonly indicatorPicker;
42
- private readonly tfQuick;
43
- private inner;
44
- /** The manifest library (loaded once). */
45
- private manifest;
46
- /** Live instances — the SAME entry may be added several times. */
47
- private instances;
48
- /** Native-indicator catalog of the CURRENT chart (refreshed per rebuild/change). */
49
- private nativeCatalog;
50
- /** Present native types, mirrored SYNC from the chart (see syncPresentNatives). */
51
- private presentNatives;
52
- private readonly storageKey;
53
- private readonly storage;
54
- private openDialogs;
55
- private readonly onRootKeydown;
56
- private symbol;
57
- private timeframe;
58
- private priceStyle;
59
- private timezone;
60
- private bars;
61
- /** The shown trading session — undefined = the provider default (regular). */
62
- private session;
63
- private watermarkOn;
64
- /** Indicator titles (the in-chart legend rows) shown — reapplied across rebuilds. */
65
- private indicatorTitlesOn;
66
- /** Plot values beside the legend titles shown — reapplied across rebuilds. */
67
- private indicatorValuesOn;
68
- private pendingRange;
69
- /** Symbol already reported as unservable (the core re-reports on every index settle). */
70
- private unresolvedToasted;
71
- /** Extra fetch depth the ACTIVE range chip needs — a view concern, kept apart from the
72
- * user's own `bars` setting so a preset never overwrites their preference. */
73
- private rangeBars;
74
- private toast;
75
- private alerts;
76
- private alertsMenu;
77
- private readonly glider;
78
- /** Unified app+drawings undo timeline (Ctrl+Z / Ctrl+Y). Late-resolves the CURRENT
79
- * inner chart so steps recorded before a rebuild never act on a destroyed instance. */
80
- readonly history: WidgetHistory;
81
- private lastCrossPrice;
82
- private lastCrossTime;
83
- /** Renderer cosmetic template carried across rebuilds (and persisted when enabled). */
84
- private savedConfig;
85
- /** User-drawings document carried across rebuilds (and persisted when enabled). */
86
- private savedDrawings;
87
- /** A restored indicator ledger waiting for the manifest to resolve. */
88
- private pendingIndicators;
89
- /** Volume presence decided by a RESTORED ledger (null = follow the option). */
90
- private ledgerVolume;
91
- /** The manifest can no longer change the instance set: it resolved, or no `indicators`
92
- * option exists so nothing will ever resolve. Gates the ledger's pending fallback —
93
- * once settled, a live empty set means "the user removed everything" and persists so. */
94
- private manifestSettled;
95
- /** The volume auto-add rides the first candles (`load:end`); until then the registry
96
- * can't show it and the persisted ledger reports the INTENT instead. */
97
- private volumeMayBePending;
98
- /** True when the boot state came from the LEGACY three-key layout — the first
99
- * unified save then drops the old `:config`/`:drawings` sub-keys. */
100
- private legacyKeys;
101
- private stateTimer;
102
- private readonly stateListeners;
103
- /** Favorite drawing-tool types — mirrored from chart events, reapplied on rebuilds. */
104
- private favs;
105
- /** Favorite timeframes — the topbar's quick-switch chips, persisted with the shell. */
106
- private tfFavs;
107
- /** Mounted attachment disposers (by id), torn down at destroy. */
108
- private readonly attachmentDisposers;
109
- private readonly onUnload;
110
- private indicatorsPromise;
111
- private destroyed;
112
- private buildSeq;
113
- /** The chrome size class — writes `data-layout` on the root (all mobile CSS keys
114
- * off it) and pushes the mode into the renderer chrome on every change/rebuild. */
115
- private layoutCtl;
116
- private readonly mobileBar;
117
- private readonly drawingPill;
118
- private tfDrawer;
119
- private drawingsDrawer;
120
- private moreDrawer;
121
- private timezoneDrawer;
122
- private priceScaleDrawer;
123
- /** Plot-local y of the last price-axis long-press (targets the pane under the finger). */
124
- private priceScalePressY;
125
- /** The active range chip id (both bottom bars + the timeframe drawer mirror it). */
126
- private activeRangeId;
23
+ private readonly ws;
127
24
  constructor(container: HTMLElement | string, opts: VelaWidgetOptions);
128
- /** The mode flipped (container resized across the breakpoint, or a coarse-pointer
129
- * change). Close the open surfaces — a desktop card must not linger over the
130
- * mobile chrome (and vice versa) — and re-present the renderer's own chrome. */
131
- private onLayoutModeChange;
132
- private openTimeframeDrawer;
133
- private openDrawingsDrawer;
134
- private openMoreDrawer;
135
- private openTimezoneDrawer;
136
- private openPriceScaleDrawer;
137
- /** Mount registered attachments not yet mounted on this widget (idempotent per id). */
138
- private mountAttachments;
139
- /** The context handed to contributed actions (see `registerWidgetAction`). */
25
+ /** The shell root element (the workspace root; carries `vela-widget` as an alias). */
26
+ get root(): HTMLElement;
27
+ get keymap(): KeymapManager;
28
+ /** The chart's unified undo timeline — resolve it fresh, never cache it. */
29
+ get history(): WidgetHistory;
30
+ /** The inner headless chart. */
31
+ get chart(): Vela;
32
+ /** A fresh contribution context (the workspace's is a superset of the widget's). */
140
33
  context(): WidgetContext;
141
- /** The recent engine alerts (topbar bell). */
142
- private openAlertsMenu;
143
- /** Re-project contributed topbar actions and side panels (after late registrations). */
144
34
  refreshActions(): void;
145
- /** The inner headless chart of the CURRENT build — becomes a new instance after a
146
- * symbol/timeframe change; don't cache it across awaits. */
147
- get chart(): Vela;
148
- /** Chrome that must follow the timeframe wherever it changes from (menu, quick entry,
149
- * range chip, API). Keeping it in one place is what stopped the status line from
150
- * drifting out of sync with the topbar. */
151
- private syncTimeframeChrome;
152
- /**
153
- * The venue label to show: the LISTING prefix the resolved symbol's data declares
154
- * (`NASDAQ` for AAPL), else the provider that RESOLVED the symbol — never the one
155
- * configured or typed. They differ whenever the `provider` option is just a default,
156
- * the prefix was a listing venue, or the spelling isn't registered — the status line
157
- * must not claim a venue that served nothing.
158
- */
159
- private providerLabel;
160
- setTimeframe(tf: string): void;
161
- /**
162
- * Switch the shown trading session (RTH/ETH) in place — a full reload, like a
163
- * timeframe change (the two sessions are different bar series). No-op on a chart
164
- * already showing that session; meaningless on continuous markets (the toggle is
165
- * disabled there, but the API tolerates the call — the provider ignores the flag).
166
- */
167
- setSession(session: MarketSession): void;
168
- /** Re-derive the session chrome from the ACTIVE symbol's metadata: the RTH/ETH
169
- * toggle shows (and the settings dialog's Trading session group appears) iff the
170
- * resolved symbol declares a real session vocabulary (not `24x7`); the pre/post
171
- * shading re-derives for the new market either way. */
172
- private refreshSessionToggle;
173
- /** (Re)derive the pre/post-market shading bands for the current market. The loaded
174
- * depth (bars × timeframe) bounds the calendar fetch; the tracker clamps it. */
175
- private refreshSessionShading;
176
- /** The session-shade colors live in the renderer CONFIG (persisted with it, edited
177
- * live by the dialog swatch) — the widget only proxies them into its settings rows. */
178
- private sessionShadeColor;
179
- private setSessionShadeColor;
180
- /**
181
- * (Re)contribute the widget's settings-dialog sections: status line parts, the fetch
182
- * depth, the watermark toggle, and — only while the active symbol HAS sessions — the
183
- * Trading session group (RTH/ETH switch + the pre/post-market shading colors) inside
184
- * the Symbol tab. Re-run whenever a gate changes (the dialog reads them on open).
185
- */
186
- private pushSettingsSections;
187
- /** Star/unstar a timeframe — the topbar chips and dropdown stars follow, and the
188
- * set persists with the rest of the shell state. */
189
- private setTimeframeFavorite;
190
- /**
191
- * Switch the chart symbol in place. An `EXCHANGE:` prefix pins the venue (the
192
- * symbol picker composes one from the row the user pointed at) — a bare ticker
193
- * resolves against the registered providers in declaration order.
194
- */
195
35
  setSymbol(symbol: string): void;
196
- /**
197
- * Snapshot the COMPLETE widget state as the unified shell document — the SAME
198
- * format `VelaWorkspace.getState()` returns, with a single `c1` cell: market,
199
- * display prefs, the renderer config document, the user-drawings document, and
200
- * the indicator ledger. This is what `persist` writes; hosts build custom flows
201
- * on it (server snapshots, share links, templates) — and a saved widget state
202
- * drops into a workspace slot as-is.
203
- */
204
- getState(): WorkspaceState;
205
- /**
206
- * Restore a state document produced by {@link getState} — or by a WORKSPACE (the
207
- * first cell of a multi-cell document applies). Untrusted-safe: malformed fields
208
- * are dropped. Applied IN PLACE: the chart instance survives (market switches via
209
- * `setMarket`), config/drawings/indicators are replaced. With `urlState` enabled,
210
- * URL params still win over the document's market/prefs fields.
211
- */
212
- applyState(state: unknown): void;
213
- /** Subscribe to `state:changed` — the persistable state changed (debounced ~500ms);
214
- * re-pull {@link getState}. Returns an unsubscribe function. */
215
- on(event: 'state:changed', handler: () => void): () => void;
216
- /** Replace the indicator ledger: natives converge to the listed set (volume
217
- * included — removing it sticks, the core's auto-add respects the opt-out),
218
- * manifest instances are re-created by name — held until the manifest resolves. */
219
- private applyIndicatorLedger;
220
- /** SYNC boot fallback: a LEGACY three-key payload read at construction. */
221
- private bootLegacySync;
222
- /** ASYNC boot: resolve the unified document (or migrate a legacy payload), then
223
- * late-apply it — the widget built with option defaults in the meantime. */
224
- private bootAsync;
225
- /** Show/hide the symbol watermark behind the chart (persisted). */
36
+ setTimeframe(timeframe: string): void;
37
+ setSession(session: MarketSession): void;
38
+ setPriceStyle(style: string): void;
226
39
  setWatermarkVisible(visible: boolean): void;
227
- /** Show/hide the indicator titles — the in-chart legend rows (persisted). */
228
40
  setIndicatorTitlesVisible(visible: boolean): void;
229
- /** Show/hide the plot values beside every indicator's legend title (persisted). */
230
41
  setIndicatorValuesVisible(visible: boolean): void;
231
- /** Applied LIVE (renderer feature) — no rebuild; persists across rebuilds. */
232
- setPriceStyle(style: string): void;
233
- /** OHLC/change ink in the status line follows the ACTIVE price style's configured
234
- * colors and direction rule (candle bodies by close-vs-open, baseline by position
235
- * against the live baseline price, …) instead of the fixed theme tokens. */
236
- private syncStatuslineColors;
237
- /** The widget shell (topbar, panels) keeps the app theme; the chart host's tokens
238
- * re-derive from the LIVE plot surface (see {@link applyPlotOverlayTokens}). */
239
- private syncPlotOverlayTokens;
240
- /**
241
- * Swap the widget theme at runtime — `'dark'`, `'light'`, or a full custom theme.
242
- * Applied LIVE: the inner chart re-skins through `Vela.setTheme` and its
243
- * `theme:changed` event re-tokens the widget chrome (topbar, menus, panels) in
244
- * place; the choice also persists into rebuilds. Same switch the user reaches from
245
- * chart settings → Canvas → Theme.
246
- */
247
- setTheme(theme: NonNullable<VelaOptions['theme']>): void;
248
- /** Applied LIVE (renderer feature) — no rebuild; persists across rebuilds. */
42
+ setTheme(theme: ThemeName | VelaTheme): void;
249
43
  setTimezone(zone: string): void;
250
- /**
251
- * Range chip: switch to the preset's timeframe, fetch enough history for its window,
252
- * and frame it once ready. The in-place `setMarket` loads the depth, so it also runs
253
- * when only the DEPTH grows (same timeframe, deeper window).
254
- */
255
44
  applyRange(preset: RangePreset): void;
45
+ /** The unified state document (`layout: '1'`, one cell). */
46
+ getState(): WorkspaceState;
47
+ /** Restore a state document IN PLACE — the chart instance survives. */
48
+ applyState(state: unknown): void;
49
+ /** Subscribe to `state:changed` (the only widget event — unknown names no-op). */
50
+ on(event: 'state:changed', handler: () => void): () => void;
256
51
  destroy(): void;
257
- /** Destroy + recreate the inner chart with the current symbol/timeframe, then
258
- * re-register providers/engines, rebind chrome, and re-add manifest indicators. */
259
- private rebuild;
260
- /** Refresh the native catalog (supported/present flags) for the current chart. */
261
- private refreshNativeCatalog;
262
- /** Add a native indicator (single-instance per type — the core dedupes). */
263
- private addNative;
264
- private removeNative;
265
- /** Sync mirror of the chart's present native types — the removal handler diffs
266
- * against it to identify (and record) whichever type was just removed. */
267
- private syncPresentNatives;
268
- /** Add ONE instance of a manifest entry (repeatable — duplicates are legitimate). */
269
- private addInstance;
270
- /** Remove one live instance (picker trash). */
271
- private removeInstance;
272
- private dropInstance;
273
- private syncIndicatorCount;
274
- private addToChart;
275
- /** Bare-typing router: letters → symbol search (seeded), digits → timeframe entry. */
276
- private routeTyping;
277
- private trackDialog;
278
- private downloadScreenshot;
279
- /** The persistable state changed: debounce (~500ms), then notify `state:changed`
280
- * listeners and flush — the same cadence as the workspace. */
281
- private markStateDirty;
282
- /** Write the unified state document through the adapter (persist mode only) — also
283
- * the unload/destroy flush. The first save after a LEGACY boot rewrites the main
284
- * key in the unified format and drops the old `:config`/`:drawings` sub-keys. */
285
- private persistNow;
286
52
  }
287
53
 
288
54
  /** The current layout's footprint on the canvas (mirrors the workspace's LayoutShape). */
@@ -521,6 +287,7 @@ declare class SymbolPicker {
521
287
  private seed;
522
288
  private activeTab;
523
289
  private tabs;
290
+ private visible;
524
291
  constructor(opts: SymbolPickerOptions);
525
292
  /** Wire where symbols come from (re-called on every widget rebuild). */
526
293
  setSource(source: () => readonly SymbolDescriptor[]): void;
@@ -530,7 +297,11 @@ declare class SymbolPicker {
530
297
  private select;
531
298
  private moveHighlight;
532
299
  private renderHighlight;
300
+ private computeRows;
533
301
  private refresh;
302
+ /** Append the page the grown `visible` just uncovered — rows already on screen stay put. */
303
+ private grow;
304
+ private rowEl;
534
305
  }
535
306
 
536
307
  interface IndicatorRow {
@@ -585,9 +356,6 @@ declare class TimeframeQuick {
585
356
  private renderHint;
586
357
  }
587
358
 
588
- declare function readUrlState(search: string): PersistedState;
589
- declare function writeUrlState(state: PersistedState): void;
590
-
591
359
  /** What the dock needs from whatever chrome shows its toggles. */
592
360
  interface PanelChrome {
593
361
  /** Replace the panel toggle group (dock order). `onClick` receives the panel id. */
@@ -917,4 +685,4 @@ declare function fmtPrice(n: number | null | undefined, dp?: number): string;
917
685
  /** Signed change + percent ("+123.45 (+1.23%)") from open→close; `''` when unavailable. */
918
686
  declare function fmtChange(open: number | null | undefined, close: number | null | undefined): string;
919
687
 
920
- export { type BuiltInPanel, ChartContextMenu, type ContextMenuCallbacks, DataWindow, type DataWindowLine, type DataWindowSection, IndicatorPicker, type IndicatorPickerOptions, type IndicatorRow, ObjectTree, type PanelChrome, PanelDock, type PanelDockDeps, PanelsState, type ParsedTimeframe, PersistedState, RangePreset, ShortcutsHelp, SidePanel, SidePanelButton, Statusline, SymbolPicker, type SymbolPickerOptions, TIMEZONES, TimeframeQuick, type TimeframeQuickOptions, type TimezoneEntry, Topbar, type TopbarOptions, VelaShellOptions, VelaWidget, type VelaWidgetOptions, Watermark, WidgetContext, WorkspaceState, dataWindowSections, decimalsFor, filterSymbols, fmtChange, fmtPrice, normalizeTimezone, parseTimeframe, priceStyleLabel, readUrlState, timeframeLabel, timeframeMs, tzButtonLabel, tzMenuLabel, tzOffset, writeUrlState };
688
+ export { type BuiltInPanel, ChartContextMenu, type ContextMenuCallbacks, DataWindow, type DataWindowLine, type DataWindowSection, IndicatorPicker, type IndicatorPickerOptions, type IndicatorRow, ObjectTree, type PanelChrome, PanelDock, type PanelDockDeps, PanelsState, type ParsedTimeframe, RangePreset, ShortcutsHelp, SidePanel, SidePanelButton, Statusline, SymbolPicker, type SymbolPickerOptions, TIMEZONES, TimeframeQuick, type TimeframeQuickOptions, type TimezoneEntry, Topbar, type TopbarOptions, VelaShellOptions, VelaWidget, type VelaWidgetOptions, Watermark, WidgetContext, WorkspaceState, dataWindowSections, decimalsFor, filterSymbols, fmtChange, fmtPrice, normalizeTimezone, parseTimeframe, priceStyleLabel, timeframeLabel, timeframeMs, tzButtonLabel, tzMenuLabel, tzOffset };