@luxalgo/vela 0.7.6 → 0.7.8

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.
@@ -1,8 +1,8 @@
1
1
  import { O as OHLCV, V as VisibleRangePreset, a as VisibleRange, b as VelaOptions, I as InputValue, c as VelaTheme, N as NativeBackend, d as MarketSession } from './options-D1AJKsn_.cjs';
2
- import { S as SyncSetting, V as VelaStorage, C as CellState, W as WidgetHistory, R as ResolvedIndicator, a as StatuslinePart, b as RangePreset, T as TrackSizes, c as VelaShellOptions, d as SyncOptions, e as SyncKind, f as WorkspaceState } from './statusline-model-gWHrsOy3.cjs';
3
- export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-gWHrsOy3.cjs';
2
+ import { S as SyncSetting, V as VelaStorage, C as CellState, W as WidgetHistory, R as ResolvedIndicator, a as StatuslinePart, b as RangePreset, T as TrackSizes, c as VelaShellOptions, d as SyncOptions, e as SyncKind, f as WorkspaceState } from './statusline-model-BoWJ3cWQ.cjs';
3
+ export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-BoWJ3cWQ.cjs';
4
4
  import { K as KeymapManager } from './keymap-CGOz5F5f.cjs';
5
- import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-D6p1RB38.cjs';
5
+ import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-DF_Ea07m.cjs';
6
6
  import { M as MarketDataFeed } from './DataProvider-CGa4KHRa.cjs';
7
7
 
8
8
  /** The cells that follow `originId` under `setting` — PURE (never includes the origin). */
@@ -88,7 +88,8 @@ interface CellDeps {
88
88
  /** Where the renderer mounts its MODAL dialogs (chart/indicator settings) — the
89
89
  * workspace root, so dialogs center over the whole grid instead of one cell. */
90
90
  dialogHost: HTMLElement;
91
- /** The workspace-global display timezone (applied to every cell's renderer). */
91
+ /** The workspace-global display-timezone CHOICE — an IANA zone, or the exchange
92
+ * rule, which each cell resolves to its own market's zone ({@link ChartCell.applyTimezone}). */
92
93
  timezone(): string;
93
94
  /** Switch the workspace-global display timezone (a cell's time-axis menu). */
94
95
  setTimezone(zone: string): void;
@@ -165,9 +166,14 @@ declare class ChartCell {
165
166
  activeRangeId: string | null;
166
167
  /** Latched verdict of {@link sessionAvailable} (async metadata, sticky per symbol). */
167
168
  private sessionAvailableFlag;
169
+ /** The symbol of the most recent metadata probe — an older one landing late is dropped. */
170
+ private metadataProbeSymbol;
168
171
  /** Latched: the symbol's extended tape wraps midnight (an overnight roll market) —
169
172
  * one extended-hours shading phase instead of the pre/post split. */
170
173
  private sessionOvernightFlag;
174
+ /** Latched: the symbol's own trading zone (`SymbolInfo.timezone`) — what the exchange
175
+ * rule resolves to on this cell. Undefined until metadata lands or when none is declared. */
176
+ private exchangeZone;
171
177
  private inner;
172
178
  /** The live app theme — seeded from deps, updated on `theme:changed` (the base the
173
179
  * plot-overlay tokens re-derive from). */
@@ -233,7 +239,23 @@ declare class ChartCell {
233
239
  get session(): MarketSession;
234
240
  /** Switch this cell's shown session in place (a reload — RTH and ETH are different bars). */
235
241
  setSession(session: MarketSession): void;
236
- private refreshSessionAvailable;
242
+ /**
243
+ * The symbol's own trading zone, once its metadata has landed — what the exchange
244
+ * rule resolves to on this cell (the workspace labels the shared bottom bar with the
245
+ * ACTIVE cell's). Undefined = unknown or undeclared (the rule then renders UTC).
246
+ */
247
+ get exchangeTimezone(): string | undefined;
248
+ /** The IANA zone this cell's axis renders in: the workspace choice, resolved. */
249
+ get displayTimezone(): string;
250
+ /**
251
+ * Push the resolved zone to the renderer — on the workspace choice changing, and on
252
+ * this cell's market zone changing under the exchange rule. Skips the write when the
253
+ * renderer already holds it (its config default is the bare `'UTC'` alias).
254
+ */
255
+ applyTimezone(): void;
256
+ /** Re-read the symbol's metadata: session posture (RTH/ETH toggle, shading) and its
257
+ * trading zone (the exchange rule). Async — the workspace re-projects when a verdict lands. */
258
+ private refreshSymbolMetadata;
237
259
  /** (Re)derive the pre/post-market shading bands for this cell's market. The bands
238
260
  * expand locally from the symbol's session vocabulary, so they paint as soon as
239
261
  * metadata is known and follow any pan depth without provider round trips. */
@@ -793,8 +815,15 @@ declare class VelaWorkspace {
793
815
  * Handlers whose restore touches chart content should be `scope: 'cell'` instead
794
816
  * (those run inside the cell's history-mute). */
795
817
  private restoreGlobalExt;
796
- /** Set the workspace-global display timezone — applied to EVERY cell. */
818
+ /**
819
+ * Set the workspace-global display timezone — applied to EVERY cell. An IANA zone,
820
+ * or `'exchange'` (the exchange rule): each cell then renders in its OWN market's
821
+ * zone (Chicago for a CME future, New York for a US equity, UTC for crypto), and the
822
+ * bottom bar follows the active cell's.
823
+ */
797
824
  setTimezone(zone: string): void;
825
+ /** Bottom bar ⇐ the stored choice + the ACTIVE cell's market zone (labels the exchange row). */
826
+ private projectTimezone;
798
827
  /**
799
828
  * Swap the workspace theme at runtime — `'dark'`, `'light'`, or a full custom theme,
800
829
  * applied to the shared chrome (topbar, panels, drawing toolbar) and EVERY cell.
@@ -1,8 +1,8 @@
1
1
  import { O as OHLCV, V as VisibleRangePreset, a as VisibleRange, b as VelaOptions, I as InputValue, c as VelaTheme, N as NativeBackend, d as MarketSession } from './options-D1AJKsn_.js';
2
- import { S as SyncSetting, V as VelaStorage, C as CellState, W as WidgetHistory, R as ResolvedIndicator, a as StatuslinePart, b as RangePreset, T as TrackSizes, c as VelaShellOptions, d as SyncOptions, e as SyncKind, f as WorkspaceState } from './statusline-model-xBiVsKoE.js';
3
- export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-xBiVsKoE.js';
2
+ import { S as SyncSetting, V as VelaStorage, C as CellState, W as WidgetHistory, R as ResolvedIndicator, a as StatuslinePart, b as RangePreset, T as TrackSizes, c as VelaShellOptions, d as SyncOptions, e as SyncKind, f as WorkspaceState } from './statusline-model-DAFyqVmR.js';
3
+ export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-DAFyqVmR.js';
4
4
  import { K as KeymapManager } from './keymap-CGOz5F5f.js';
5
- import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-C7Wsm_S9.js';
5
+ import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-nKOSeLy8.js';
6
6
  import { M as MarketDataFeed } from './DataProvider-CmWUtDVL.js';
7
7
 
8
8
  /** The cells that follow `originId` under `setting` — PURE (never includes the origin). */
@@ -88,7 +88,8 @@ interface CellDeps {
88
88
  /** Where the renderer mounts its MODAL dialogs (chart/indicator settings) — the
89
89
  * workspace root, so dialogs center over the whole grid instead of one cell. */
90
90
  dialogHost: HTMLElement;
91
- /** The workspace-global display timezone (applied to every cell's renderer). */
91
+ /** The workspace-global display-timezone CHOICE — an IANA zone, or the exchange
92
+ * rule, which each cell resolves to its own market's zone ({@link ChartCell.applyTimezone}). */
92
93
  timezone(): string;
93
94
  /** Switch the workspace-global display timezone (a cell's time-axis menu). */
94
95
  setTimezone(zone: string): void;
@@ -165,9 +166,14 @@ declare class ChartCell {
165
166
  activeRangeId: string | null;
166
167
  /** Latched verdict of {@link sessionAvailable} (async metadata, sticky per symbol). */
167
168
  private sessionAvailableFlag;
169
+ /** The symbol of the most recent metadata probe — an older one landing late is dropped. */
170
+ private metadataProbeSymbol;
168
171
  /** Latched: the symbol's extended tape wraps midnight (an overnight roll market) —
169
172
  * one extended-hours shading phase instead of the pre/post split. */
170
173
  private sessionOvernightFlag;
174
+ /** Latched: the symbol's own trading zone (`SymbolInfo.timezone`) — what the exchange
175
+ * rule resolves to on this cell. Undefined until metadata lands or when none is declared. */
176
+ private exchangeZone;
171
177
  private inner;
172
178
  /** The live app theme — seeded from deps, updated on `theme:changed` (the base the
173
179
  * plot-overlay tokens re-derive from). */
@@ -233,7 +239,23 @@ declare class ChartCell {
233
239
  get session(): MarketSession;
234
240
  /** Switch this cell's shown session in place (a reload — RTH and ETH are different bars). */
235
241
  setSession(session: MarketSession): void;
236
- private refreshSessionAvailable;
242
+ /**
243
+ * The symbol's own trading zone, once its metadata has landed — what the exchange
244
+ * rule resolves to on this cell (the workspace labels the shared bottom bar with the
245
+ * ACTIVE cell's). Undefined = unknown or undeclared (the rule then renders UTC).
246
+ */
247
+ get exchangeTimezone(): string | undefined;
248
+ /** The IANA zone this cell's axis renders in: the workspace choice, resolved. */
249
+ get displayTimezone(): string;
250
+ /**
251
+ * Push the resolved zone to the renderer — on the workspace choice changing, and on
252
+ * this cell's market zone changing under the exchange rule. Skips the write when the
253
+ * renderer already holds it (its config default is the bare `'UTC'` alias).
254
+ */
255
+ applyTimezone(): void;
256
+ /** Re-read the symbol's metadata: session posture (RTH/ETH toggle, shading) and its
257
+ * trading zone (the exchange rule). Async — the workspace re-projects when a verdict lands. */
258
+ private refreshSymbolMetadata;
237
259
  /** (Re)derive the pre/post-market shading bands for this cell's market. The bands
238
260
  * expand locally from the symbol's session vocabulary, so they paint as soon as
239
261
  * metadata is known and follow any pan depth without provider round trips. */
@@ -793,8 +815,15 @@ declare class VelaWorkspace {
793
815
  * Handlers whose restore touches chart content should be `scope: 'cell'` instead
794
816
  * (those run inside the cell's history-mute). */
795
817
  private restoreGlobalExt;
796
- /** Set the workspace-global display timezone — applied to EVERY cell. */
818
+ /**
819
+ * Set the workspace-global display timezone — applied to EVERY cell. An IANA zone,
820
+ * or `'exchange'` (the exchange rule): each cell then renders in its OWN market's
821
+ * zone (Chicago for a CME future, New York for a US equity, UTC for crypto), and the
822
+ * bottom bar follows the active cell's.
823
+ */
797
824
  setTimezone(zone: string): void;
825
+ /** Bottom bar ⇐ the stored choice + the ACTIVE cell's market zone (labels the exchange row). */
826
+ private projectTimezone;
798
827
  /**
799
828
  * Swap the workspace theme at runtime — `'dark'`, `'light'`, or a full custom theme,
800
829
  * applied to the shared chrome (topbar, panels, drawing toolbar) and EVERY cell.
package/dist/workspace.js CHANGED
@@ -1,7 +1,7 @@
1
- export { ChartCell, GRID_PICKER_MAX, VelaWorkspace, activeAfterLayout, decodeState, encodeState, ensureLayout, evenTracks, gridStyles, layoutDefinition, layoutForGrid, layoutShape, layouts, memoryStorageAdapter, rangesWithin, registerBuiltinLayouts, registerLayout, resizeTracks, sanitizeState, syncTargets, trackOffsets, unregisterLayout } from './chunk-EMB53WNQ.js';
2
- import './chunk-JSVCWYBF.js';
1
+ export { ChartCell, GRID_PICKER_MAX, VelaWorkspace, activeAfterLayout, decodeState, encodeState, ensureLayout, evenTracks, gridStyles, layoutDefinition, layoutForGrid, layoutShape, layouts, memoryStorageAdapter, rangesWithin, registerBuiltinLayouts, registerLayout, resizeTracks, sanitizeState, syncTargets, trackOffsets, unregisterLayout } from './chunk-M6GP7DAX.js';
2
+ import './chunk-N4ZZYLMP.js';
3
3
  import './chunk-BFA32GOU.js';
4
- import './chunk-ZADTVRUO.js';
5
- import './chunk-BKHSQ4YM.js';
4
+ import './chunk-PVGWNF7V.js';
5
+ import './chunk-WTWGEB7K.js';
6
6
  import './chunk-CAFCLMPF.js';
7
7
  import './chunk-W4EJWLEO.js';
package/package.json CHANGED
@@ -1,7 +1,27 @@
1
1
  {
2
2
  "name": "@luxalgo/vela",
3
- "version": "0.7.6",
3
+ "version": "0.7.8",
4
4
  "description": "Open-source charting library with a native high-performance renderer, drawing tools, pluggable chart types and pluggable scripting engines.",
5
+ "keywords": [
6
+ "charting library",
7
+ "financial charts",
8
+ "trading charts",
9
+ "candlestick chart",
10
+ "stock chart",
11
+ "crypto chart",
12
+ "webgl",
13
+ "canvas",
14
+ "technical analysis",
15
+ "indicators",
16
+ "drawing tools",
17
+ "orderflow",
18
+ "pine script",
19
+ "pinets",
20
+ "lightweight-charts alternative",
21
+ "typescript",
22
+ "luxalgo",
23
+ "vela"
24
+ ],
5
25
  "license": "Apache-2.0",
6
26
  "homepage": "https://luxalgo.com/vela",
7
27
  "repository": {